Takashi Iwai 90df46
From dcb4b8ad6a448532d8b681b5d1a7036210b622de Mon Sep 17 00:00:00 2001
Takashi Iwai 90df46
From: Dongliang Mu <mudongliangabcd@gmail.com>
Takashi Iwai 90df46
Date: Fri, 14 May 2021 20:43:48 +0800
Takashi Iwai 90df46
Subject: [PATCH] misc/uss720: fix memory leak in uss720_probe
Takashi Iwai 90df46
Git-commit: dcb4b8ad6a448532d8b681b5d1a7036210b622de
Takashi Iwai 90df46
Patch-mainline: v5.13-rc4
Takashi Iwai 90df46
References: git-fixes
Takashi Iwai 90df46
Takashi Iwai 90df46
uss720_probe forgets to decrease the refcount of usbdev in uss720_probe.
Takashi Iwai 90df46
Fix this by decreasing the refcount of usbdev by usb_put_dev.
Takashi Iwai 90df46
Takashi Iwai 90df46
Bug: memory leak
Takashi Iwai 90df46
unreferenced object 0xffff888101113800 (size 2048):
Takashi Iwai 90df46
  comm "kworker/0:1", pid 7, jiffies 4294956777 (age 28.870s)
Takashi Iwai 90df46
  hex dump (first 32 bytes):
Takashi Iwai 90df46
    ff ff ff ff 31 00 00 00 00 00 00 00 00 00 00 00  ....1...........
Takashi Iwai 90df46
    00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00  ................
Takashi Iwai 90df46
  backtrace:
Takashi Iwai 90df46
    [<ffffffff82b8e822>] kmalloc include/linux/slab.h:554 [inline]
Takashi Iwai 90df46
    [<ffffffff82b8e822>] kzalloc include/linux/slab.h:684 [inline]
Takashi Iwai 90df46
    [<ffffffff82b8e822>] usb_alloc_dev+0x32/0x450 drivers/usb/core/usb.c:582
Takashi Iwai 90df46
    [<ffffffff82b98441>] hub_port_connect drivers/usb/core/hub.c:5129 [inline]
Takashi Iwai 90df46
    [<ffffffff82b98441>] hub_port_connect_change drivers/usb/core/hub.c:5363 [inline]
Takashi Iwai 90df46
    [<ffffffff82b98441>] port_event drivers/usb/core/hub.c:5509 [inline]
Takashi Iwai 90df46
    [<ffffffff82b98441>] hub_event+0x1171/0x20c0 drivers/usb/core/hub.c:5591
Takashi Iwai 90df46
    [<ffffffff81259229>] process_one_work+0x2c9/0x600 kernel/workqueue.c:2275
Takashi Iwai 90df46
    [<ffffffff81259b19>] worker_thread+0x59/0x5d0 kernel/workqueue.c:2421
Takashi Iwai 90df46
    [<ffffffff81261228>] kthread+0x178/0x1b0 kernel/kthread.c:292
Takashi Iwai 90df46
    [<ffffffff8100227f>] ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:294
Takashi Iwai 90df46
Takashi Iwai 90df46
Fixes: 0f36163d3abe ("[PATCH] usb: fix uss720 schedule with interrupts off")
Takashi Iwai 90df46
Cc: stable <stable@vger.kernel.org>
Takashi Iwai 90df46
Reported-by: syzbot+636c58f40a86b4a879e7@syzkaller.appspotmail.com
Takashi Iwai 90df46
Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
Takashi Iwai 90df46
Link: https://lore.kernel.org/r/20210514124348.6587-1-mudongliangabcd@gmail.com
Takashi Iwai 90df46
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Takashi Iwai 90df46
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 90df46
Takashi Iwai 90df46
---
Takashi Iwai 90df46
 drivers/usb/misc/uss720.c | 1 +
Takashi Iwai 90df46
 1 file changed, 1 insertion(+)
Takashi Iwai 90df46
Takashi Iwai 90df46
diff --git a/drivers/usb/misc/uss720.c b/drivers/usb/misc/uss720.c
Takashi Iwai 90df46
index b5d661644263..748139d26263 100644
Takashi Iwai 90df46
--- a/drivers/usb/misc/uss720.c
Takashi Iwai 90df46
+++ b/drivers/usb/misc/uss720.c
Takashi Iwai 90df46
@@ -736,6 +736,7 @@ static int uss720_probe(struct usb_interface *intf,
Takashi Iwai 90df46
 	parport_announce_port(pp);
Takashi Iwai 90df46
 
Takashi Iwai 90df46
 	usb_set_intfdata(intf, pp);
Takashi Iwai 90df46
+	usb_put_dev(usbdev);
Takashi Iwai 90df46
 	return 0;
Takashi Iwai 90df46
 
Takashi Iwai 90df46
 probe_abort:
Takashi Iwai 90df46
-- 
Takashi Iwai 90df46
2.26.2
Takashi Iwai 90df46