+21
−2
Loading
stable inclusion from stable-v4.19.252 commit d91492638b054f4a359621ef216242be5973ed6b category: bugfix bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBP6SC CVE: CVE-2022-49661 Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=d91492638b054f4a359621ef216242be5973ed6b -------------------------------- commit 2bda24ef upstream. The gs_usb driver appears to suffer from a malady common to many USB CAN adapter drivers in that it performs usb_alloc_coherent() to allocate a number of USB request blocks (URBs) for RX, and then later relies on usb_kill_anchored_urbs() to free them, but this doesn't actually free them. As a result, this may be leaking DMA memory that's been used by the driver. This commit is an adaptation of the techniques found in the esd_usb2 driver where a similar design pattern led to a memory leak. It explicitly frees the RX URBs and their DMA memory via a call to usb_free_coherent(). Since the RX URBs were allocated in the gs_can_open(), we remove them in gs_can_close() rather than in the disconnect function as was done in esd_usb2. For more information, see the 928150fa ("can: esd_usb2: fix memory leak"). Link: https://lore.kernel.org/all/alpine.DEB.2.22.394.2206031547001.1630869@thelappy Fixes: d08e973a ("can: gs_usb: Added support for the GS_USB CAN devices") Cc: stable@vger.kernel.org Signed-off-by:Rhett Aultman <rhett.aultman@samsara.com> Signed-off-by:
Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org> Conflicts: drivers/net/can/usb/gs_usb.c [Just context conflicts in gs_can_close().] Signed-off-by:
Jinjie Ruan <ruanjinjie@huawei.com>