Subject: CVE-2021-47259: NFS: Fix use-after-free in nfs4_init_client()

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

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

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

NFS: Fix use-after-free in nfs4_init_client()

KASAN reports a use-after-free when attempting to mount two different
exports through two different NICs that belong to the same server.

Olga was able to hit this with kernels starting somewhere between 5.7
and 5.10, but I traced the patch that introduced the clear_bit() call to
4.13. So something must have changed in the refcounting of the clp
pointer to make this call to nfs_put_client() the very last one.

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

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

	Issue introduced in 4.13 with commit 8dcbec6d20eb and fixed in 4.14.237 with commit c7eab9e2d7b4
	Issue introduced in 4.13 with commit 8dcbec6d20eb and fixed in 4.19.195 with commit 42c10b0db064
	Issue introduced in 4.13 with commit 8dcbec6d20eb and fixed in 5.4.126 with commit 3e3c7ebbfac1
	Issue introduced in 4.13 with commit 8dcbec6d20eb and fixed in 5.10.44 with commit c3b6cf64dfe4
	Issue introduced in 4.13 with commit 8dcbec6d20eb and fixed in 5.12.11 with commit 72651c6579a2
	Issue introduced in 4.13 with commit 8dcbec6d20eb and fixed in 5.13 with commit 476bdb04c501

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-47259
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:
	fs/nfs/nfs4client.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/c7eab9e2d7b4e983ce280276fb920af649955897
	https://git.kernel.org/stable/c/42c10b0db064e45f5c5ae7019bbf2168ffab766c
	https://git.kernel.org/stable/c/3e3c7ebbfac152d08be75c92802a64a1f6471a15
	https://git.kernel.org/stable/c/c3b6cf64dfe4ef96e7341508d50d6998da7062c7
	https://git.kernel.org/stable/c/72651c6579a25317a90536181d311c663d0329ab
	https://git.kernel.org/stable/c/476bdb04c501fc64bf3b8464ffddefc8dbe01577