Subject: CVE-2021-47239: net: usb: fix possible use-after-free in smsc75xx_bind

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

net: usb: fix possible use-after-free in smsc75xx_bind

The commit 46a8b29c6306 ("net: usb: fix memory leak in smsc75xx_bind")
fails to clean up the work scheduled in smsc75xx_reset->
smsc75xx_set_multicast, which leads to use-after-free if the work is
scheduled to start after the deallocation. In addition, this patch
also removes a dangling pointer - dev->data[0].

This patch calls cancel_work_sync to cancel the scheduled work and set
the dangling pointer to NULL.

The Linux kernel CVE team has assigned CVE-2021-47239 to this issue.

Affected and fixed versions
===========================

	Issue introduced in 4.4.271 with commit 200dbfcad801 and fixed in 4.4.274 with commit 7cc8b2e05fce
	Issue introduced in 4.9.271 with commit 22c840596af0 and fixed in 4.9.274 with commit 64160d1741a3
	Issue introduced in 4.14.235 with commit 9e6b8c1ff9d9 and fixed in 4.14.238 with commit c4e3be2e7742
	Issue introduced in 4.19.193 with commit 9e6a3eccb287 and fixed in 4.19.196 with commit 2fc8300c9cfa
	Issue introduced in 5.4.124 with commit b95fb96e6339 and fixed in 5.4.128 with commit 4252bf6c2b24
	Issue introduced in 5.10.42 with commit 635ac38b3625 and fixed in 5.10.46 with commit 570a52cf3e01
	Issue introduced in 5.12.9 with commit 70c886ac93f8 and fixed in 5.12.13 with commit 14616c372a7b

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2021-47239
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	drivers/net/usb/smsc75xx.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/7cc8b2e05fcea6edd022d26e82091d781af8fd9b
	https://git.kernel.org/stable/c/64160d1741a3de5204d1a822e058e0b4cc526504
	https://git.kernel.org/stable/c/c4e3be2e7742863e454ce31faf8fd0109c00050b
	https://git.kernel.org/stable/c/2fc8300c9cfa5167fcb5b1a2a07db6f53e82f59b
	https://git.kernel.org/stable/c/4252bf6c2b245f47011098113d405ffad6ad5d5b
	https://git.kernel.org/stable/c/570a52cf3e01d19f7fd1a251dfc52b0cd86c13cb
	https://git.kernel.org/stable/c/14616c372a7be01a2fb8c56c9d8debd232b9e43d
	https://git.kernel.org/stable/c/56b786d86694e079d8aad9b314e015cd4ac02a3d