linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] xhci: fix memleak in xhci_run()
@ 2017-07-20  5:40 shuwang
  2017-07-20 11:46 ` Mathias Nyman
  0 siblings, 1 reply; 2+ messages in thread
From: shuwang @ 2017-07-20  5:40 UTC (permalink / raw)
  To: mathias.nyman, gregkh; +Cc: linux-usb, linux-kernel, chuhu, liwang, Shu Wang

From: Shu Wang <shuwang@redhat.com>

Found this issue by kmemleak.
xhci_run() did not check return val and free command for
xhci_queue_vendor_command()

unreferenced object 0xffff88011c0be500 (size 64):
  comm "kworker/0:1", pid 58, jiffies 4294670908 (age 50.420s)
  hex dump (first 32 bytes):
  backtrace:
    [<ffffffff8176166a>] kmemleak_alloc+0x4a/0xa0
    [<ffffffff8121801a>] kmem_cache_alloc_trace+0xca/0x1d0
    [<ffffffff81576bf4>] xhci_alloc_command+0x44/0x130
    [<ffffffff8156f1cc>] xhci_run+0x4cc/0x630
    [<ffffffff8153b84b>] usb_add_hcd+0x3bb/0x950
    [<ffffffff8154eac8>] usb_hcd_pci_probe+0x188/0x500
    [<ffffffff815851ac>] xhci_pci_probe+0x2c/0x220
    [<ffffffff813d2ca5>] local_pci_probe+0x45/0xa0
    [<ffffffff810a54e4>] work_for_cpu_fn+0x14/0x20
    [<ffffffff810a8409>] process_one_work+0x149/0x360
    [<ffffffff810a8d08>] worker_thread+0x1d8/0x3c0
    [<ffffffff810ae7d9>] kthread+0x109/0x140
    [<ffffffff8176d585>] ret_from_fork+0x25/0x30
    [<ffffffffffffffff>] 0xffffffffffffffff

Signed-off-by: Shu Wang <shuwang@redhat.com>
---
 drivers/usb/host/xhci.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 56f85df..b2a8179 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -622,8 +622,10 @@ int xhci_run(struct usb_hcd *hcd)
 		if (!command)
 			return -ENOMEM;
 
-		xhci_queue_vendor_command(xhci, command, 0, 0, 0,
+		ret = xhci_queue_vendor_command(xhci, command, 0, 0, 0,
 				TRB_TYPE(TRB_NEC_GET_FW));
+		if (ret)
+			xhci_free_command(xhci, command);
 	}
 	xhci_dbg_trace(xhci, trace_xhci_dbg_init,
 			"Finished xhci_run for USB2 roothub");
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] xhci: fix memleak in xhci_run()
  2017-07-20  5:40 [PATCH] xhci: fix memleak in xhci_run() shuwang
@ 2017-07-20 11:46 ` Mathias Nyman
  0 siblings, 0 replies; 2+ messages in thread
From: Mathias Nyman @ 2017-07-20 11:46 UTC (permalink / raw)
  To: shuwang, mathias.nyman, gregkh; +Cc: linux-usb, linux-kernel, chuhu, liwang

On 20.07.2017 08:40, shuwang@redhat.com wrote:
> From: Shu Wang <shuwang@redhat.com>
>
> Found this issue by kmemleak.
> xhci_run() did not check return val and free command for
> xhci_queue_vendor_command()
>
> unreferenced object 0xffff88011c0be500 (size 64):
>    comm "kworker/0:1", pid 58, jiffies 4294670908 (age 50.420s)
>    hex dump (first 32 bytes):
>    backtrace:
>      [<ffffffff8176166a>] kmemleak_alloc+0x4a/0xa0
>      [<ffffffff8121801a>] kmem_cache_alloc_trace+0xca/0x1d0
>      [<ffffffff81576bf4>] xhci_alloc_command+0x44/0x130
>      [<ffffffff8156f1cc>] xhci_run+0x4cc/0x630
>      [<ffffffff8153b84b>] usb_add_hcd+0x3bb/0x950
>      [<ffffffff8154eac8>] usb_hcd_pci_probe+0x188/0x500
>      [<ffffffff815851ac>] xhci_pci_probe+0x2c/0x220
>      [<ffffffff813d2ca5>] local_pci_probe+0x45/0xa0
>      [<ffffffff810a54e4>] work_for_cpu_fn+0x14/0x20
>      [<ffffffff810a8409>] process_one_work+0x149/0x360
>      [<ffffffff810a8d08>] worker_thread+0x1d8/0x3c0
>      [<ffffffff810ae7d9>] kthread+0x109/0x140
>      [<ffffffff8176d585>] ret_from_fork+0x25/0x30
>      [<ffffffffffffffff>] 0xffffffffffffffff
>
> Signed-off-by: Shu Wang <shuwang@redhat.com>

Thanks, adding

-Mathias

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-07-20 11:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-20  5:40 [PATCH] xhci: fix memleak in xhci_run() shuwang
2017-07-20 11:46 ` Mathias Nyman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).