Subject: CVE-2021-47194: cfg80211: call cfg80211_stop_ap when switch from P2P_GO type

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

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

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

cfg80211: call cfg80211_stop_ap when switch from P2P_GO type

If the userspace tools switch from NL80211_IFTYPE_P2P_GO to
NL80211_IFTYPE_ADHOC via send_msg(NL80211_CMD_SET_INTERFACE), it
does not call the cleanup cfg80211_stop_ap(), this leads to the
initialization of in-use data. For example, this path re-init the
sdata->assigned_chanctx_list while it is still an element of
assigned_vifs list, and makes that linked list corrupt.

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

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

	Issue introduced in 3.6 with commit ac800140c20e and fixed in 4.4.293 with commit 8f06bb8c216b
	Issue introduced in 3.6 with commit ac800140c20e and fixed in 4.9.291 with commit 0738cdb636c2
	Issue introduced in 3.6 with commit ac800140c20e and fixed in 4.14.256 with commit 4e458abbb4a5
	Issue introduced in 3.6 with commit ac800140c20e and fixed in 4.19.218 with commit b8a045e2a9b2
	Issue introduced in 3.6 with commit ac800140c20e and fixed in 5.4.162 with commit 52affc201fc2
	Issue introduced in 3.6 with commit ac800140c20e and fixed in 5.10.82 with commit 7b97b5776daa
	Issue introduced in 3.6 with commit ac800140c20e and fixed in 5.15.5 with commit 5a9b671c8d74
	Issue introduced in 3.6 with commit ac800140c20e and fixed in 5.16 with commit 563fbefed46a

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-47194
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:
	net/wireless/util.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/8f06bb8c216bcd172394f61e557727e691b4cb24
	https://git.kernel.org/stable/c/0738cdb636c21ab552eaecf905efa4a6070e3ebc
	https://git.kernel.org/stable/c/4e458abbb4a523f1413bfe15c079cf4e24c15b21
	https://git.kernel.org/stable/c/b8a045e2a9b234cfbc06cf36923886164358ddec
	https://git.kernel.org/stable/c/52affc201fc22a1ab9a59ef0ed641a9adfcb8d13
	https://git.kernel.org/stable/c/7b97b5776daa0b39dbdadfea176f9cc0646d4a66
	https://git.kernel.org/stable/c/5a9b671c8d74a3e1b999e7a0c7f366079bcc93dd
	https://git.kernel.org/stable/c/563fbefed46ae4c1f70cffb8eb54c02df480b2c2