Subject: CVE-2021-46904: net: hso: fix null-ptr-deref during tty device unregistration

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

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

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

net: hso: fix null-ptr-deref during tty device unregistration

Multiple ttys try to claim the same the minor number causing a double
unregistration of the same device. The first unregistration succeeds
but the next one results in a null-ptr-deref.

The get_free_serial_index() function returns an available minor number
but doesn't assign it immediately. The assignment is done by the caller
later. But before this assignment, calls to get_free_serial_index()
would return the same minor number.

Fix this by modifying get_free_serial_index to assign the minor number
immediately after one is found to be and rename it to obtain_minor()
to better reflect what it does. Similary, rename set_serial_by_index()
to release_minor() and modify it to free up the minor number of the
given hso_serial. Every obtain_minor() should have corresponding
release_minor() call.

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

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

	Issue introduced in 2.6.27 with commit 72dc1c096c70 and fixed in 4.4.268 with commit a462067d7c8e
	Issue introduced in 2.6.27 with commit 72dc1c096c70 and fixed in 4.9.268 with commit 145c89c441d2
	Issue introduced in 2.6.27 with commit 72dc1c096c70 and fixed in 4.14.232 with commit caf5ac93b3b5
	Issue introduced in 2.6.27 with commit 72dc1c096c70 and fixed in 4.19.187 with commit 92028d7a31e5
	Issue introduced in 2.6.27 with commit 72dc1c096c70 and fixed in 5.4.112 with commit 4a2933c88399
	Issue introduced in 2.6.27 with commit 72dc1c096c70 and fixed in 5.10.30 with commit dc195928d7e4
	Issue introduced in 2.6.27 with commit 72dc1c096c70 and fixed in 5.11.14 with commit 388d05f70f1e
	Issue introduced in 2.6.27 with commit 72dc1c096c70 and fixed in 5.12 with commit 8a12f8836145

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-46904
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/hso.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/a462067d7c8e6953a733bf5ade8db947b1bb5449
	https://git.kernel.org/stable/c/145c89c441d27696961752bf51b323f347601bee
	https://git.kernel.org/stable/c/caf5ac93b3b5d5fac032fc11fbea680e115421b4
	https://git.kernel.org/stable/c/92028d7a31e55d53e41cff679156b9432cffcb36
	https://git.kernel.org/stable/c/4a2933c88399c0ebc738db39bbce3ae89786d723
	https://git.kernel.org/stable/c/dc195928d7e4ec7b5cfc6cd10dc4c8d87a7c72ac
	https://git.kernel.org/stable/c/388d05f70f1ee0cac4a2068fd295072f1a44152a
	https://git.kernel.org/stable/c/8a12f8836145ffe37e9c8733dce18c22fb668b66