lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 18 Feb 2016 08:59:26 +0100 From: Marek Szyprowski <m.szyprowski@...sung.com> To: linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org Cc: Marek Szyprowski <m.szyprowski@...sung.com>, Ruslan Bilovol <ruslan.bilovol@...il.com>, Bartlomiej Zolnierkiewicz <b.zolnierkie@...sung.com>, Vegard Nossum <vegard.nossum@...cle.com>, Maxime Ripard <maxime.ripard@...e-electrons.com>, Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Peter Chen <peter.chen@...escale.com>, Felipe Balbi <balbi@...nel.org> Subject: [PATCH RESEND] usb: gadget: gadgetfs: unregister gadget only if it got successfully registered Gadgetfs driver called usb_gadget_unregister_driver unconditionally, even if it didn't register it earlier due to other failures. This patch fixes this. Reported-by: Vegard Nossum <vegard.nossum@...cle.com> Signed-off-by: Marek Szyprowski <m.szyprowski@...sung.com> Tested-by: Vegard Nossum <vegard.nossum@...cle.com> --- drivers/usb/gadget/legacy/inode.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c index 7a62a2f7bc18..cde6a2133c90 100644 --- a/drivers/usb/gadget/legacy/inode.c +++ b/drivers/usb/gadget/legacy/inode.c @@ -130,7 +130,8 @@ struct dev_data { setup_can_stall : 1, setup_out_ready : 1, setup_out_error : 1, - setup_abort : 1; + setup_abort : 1, + gadget_registered : 1; unsigned setup_wLength; /* the rest is basically write-once */ @@ -1179,7 +1180,8 @@ dev_release (struct inode *inode, struct file *fd) /* closing ep0 === shutdown all */ - usb_gadget_unregister_driver (&gadgetfs_driver); + if (dev->gadget_registered) + usb_gadget_unregister_driver (&gadgetfs_driver); /* at this point "good" hardware has disconnected the * device from USB; the host won't see it any more. @@ -1825,6 +1827,7 @@ dev_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr) * kick in after the ep0 descriptor is closed. */ value = len; + dev->gadget_registered = true; } return value; -- 1.9.2
Powered by blists - more mailing lists