projects
/
platform
/
kernel
/
linux-rpi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
07de9a4
)
usb: gadget: clear related members when goto fail
author
Hangyu Hua
<hbh25y@gmail.com>
Fri, 31 Dec 2021 17:21:38 +0000
(
01:21
+0800)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Tue, 8 Mar 2022 18:12:31 +0000
(19:12 +0100)
commit
501e38a5531efbd77d5c73c0ba838a889bfc1d74
upstream.
dev->config and dev->hs_config and dev->dev need to be cleaned if
dev_config fails to avoid UAF.
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Hangyu Hua <hbh25y@gmail.com>
Link:
https://lore.kernel.org/r/20211231172138.7993-3-hbh25y@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/legacy/inode.c
patch
|
blob
|
history
diff --git
a/drivers/usb/gadget/legacy/inode.c
b/drivers/usb/gadget/legacy/inode.c
index a6bc13c923b79ef7d42cb335d87126e0afff5367..3279b4767424c4f0737ac77338eb58bcbac7f304 100644
(file)
--- a/
drivers/usb/gadget/legacy/inode.c
+++ b/
drivers/usb/gadget/legacy/inode.c
@@
-1878,8
+1878,8
@@
dev_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
value = usb_gadget_probe_driver(&gadgetfs_driver);
if (value != 0) {
-
kfree (dev->buf
);
-
dev->buf = NULL
;
+
spin_lock_irq(&dev->lock
);
+
goto fail
;
} else {
/* at this point "good" hardware has for the first time
* let the USB the host see us. alternatively, if users
@@
-1896,6
+1896,9
@@
dev_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
return value;
fail:
+ dev->config = NULL;
+ dev->hs_config = NULL;
+ dev->dev = NULL;
spin_unlock_irq (&dev->lock);
pr_debug ("%s: %s fail %zd, %p\n", shortname, __func__, value, dev);
kfree (dev->buf);