Subject: CVE-2022-48742: rtnetlink: make sure to refresh master_dev/m_ops in __rtnl_newlink()

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

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

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

rtnetlink: make sure to refresh master_dev/m_ops in __rtnl_newlink()

While looking at one unrelated syzbot bug, I found the replay logic
in __rtnl_newlink() to potentially trigger use-after-free.

It is better to clear master_dev and m_ops inside the loop,
in case we have to replay it.

The Linux kernel CVE team has assigned CVE-2022-48742 to this issue.

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

	Issue introduced in 3.14 with commit ba7d49b1f0f8 and fixed in 4.9.300 with commit 2cf180360d66
	Issue introduced in 3.14 with commit ba7d49b1f0f8 and fixed in 4.14.265 with commit 7d9211678c0f
	Issue introduced in 3.14 with commit ba7d49b1f0f8 and fixed in 4.19.228 with commit a01e60a1ec6b
	Issue introduced in 3.14 with commit ba7d49b1f0f8 and fixed in 5.4.177 with commit bd43771ee975
	Issue introduced in 3.14 with commit ba7d49b1f0f8 and fixed in 5.10.97 with commit 3bbe2019dd12
	Issue introduced in 3.14 with commit ba7d49b1f0f8 and fixed in 5.15.20 with commit def5e7070079
	Issue introduced in 3.14 with commit ba7d49b1f0f8 and fixed in 5.16.6 with commit 36a9a0aee881
	Issue introduced in 3.14 with commit ba7d49b1f0f8 and fixed in 5.17 with commit c6f6f2444bdb

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-2022-48742
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/core/rtnetlink.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/2cf180360d66bd657e606c1217e0e668e6faa303
	https://git.kernel.org/stable/c/7d9211678c0f0624f74cdff36117ab8316697bb8
	https://git.kernel.org/stable/c/a01e60a1ec6bef9be471fb7182a33c6d6f124e93
	https://git.kernel.org/stable/c/bd43771ee9759dd9dfae946bff190e2c5a120de5
	https://git.kernel.org/stable/c/3bbe2019dd12b8d13671ee6cda055d49637b4c39
	https://git.kernel.org/stable/c/def5e7070079b2a214b3b1a2fbec623e6fbfe34a
	https://git.kernel.org/stable/c/36a9a0aee881940476b254e0352581401b23f210
	https://git.kernel.org/stable/c/c6f6f2444bdbe0079e41914a35081530d0409963