Re: [PATCH v2] USB: serial: Fix possible memleak in keyspan_port_probe()

From: Johan Hovold
Date: Mon Oct 18 2021 - 03:57:38 EST


On Fri, Oct 15, 2021 at 04:55:43PM +0800, Wang Hai wrote:
> I got memory leak as follows when doing fault injection test:
>
> unreferenced object 0xffff888258228440 (size 64):
> comm "kworker/7:2", pid 2005, jiffies 4294989509 (age 824.540s)
> hex dump (first 32 bytes):
> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
> backtrace:
> [<ffffffff8167939c>] slab_post_alloc_hook+0x9c/0x490
> [<ffffffff8167f627>] kmem_cache_alloc_trace+0x1f7/0x470
> [<ffffffffa02ac0e4>] keyspan_port_probe+0xa4/0x5d0 [keyspan]
> [<ffffffffa0294c07>] usb_serial_device_probe+0x97/0x1d0 [usbserial]
> [<ffffffff82b50ca7>] really_probe+0x167/0x460
> [<ffffffff82b51099>] __driver_probe_device+0xf9/0x180
> [<ffffffff82b51173>] driver_probe_device+0x53/0x130
> [<ffffffff82b516f5>] __device_attach_driver+0x105/0x130
> [<ffffffff82b4cfe9>] bus_for_each_drv+0x129/0x190
> [<ffffffff82b50a69>] __device_attach+0x1c9/0x270
> [<ffffffff82b518d0>] device_initial_probe+0x20/0x30
> [<ffffffff82b4f062>] bus_probe_device+0x142/0x160
> [<ffffffff82b4a4e9>] device_add+0x829/0x1300
> [<ffffffffa0295fda>] usb_serial_probe.cold+0xc9b/0x14ac [usbserial]
> [<ffffffffa02266aa>] usb_probe_interface+0x1aa/0x3c0 [usbcore]
> [<ffffffff82b50ca7>] really_probe+0x167/0x460
>
> If it fails to allocate memory for an out_buffer[i] or in_buffer[i],
> the previously allocated memory for out_buffer or in_buffer needs to
> be freed on the error handling path, otherwise a memory leak will result.
>
> Fixes: bad41a5bf177 ("USB: keyspan: fix port DMA-buffer allocations")
> Reported-by: Hulk Robot <hulkci@xxxxxxxxxx>
> Signed-off-by: Wang Hai <wanghai38@xxxxxxxxxx>
> ---
> v1->v2: rename error labels

Thanks for the update. Now applied with a slightly amended commit
message:

USB: serial: keyspan: fix memleak on probe errors

...

If keyspan_port_probe() fails...

Johan