Subject: CVE-2021-47291: ipv6: fix another slab-out-of-bounds in fib6_nh_flush_exceptions

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

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

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

ipv6: fix another slab-out-of-bounds in fib6_nh_flush_exceptions

While running the self-tests on a KASAN enabled kernel, I observed a
slab-out-of-bounds splat very similar to the one reported in
commit 821bbf79fe46 ("ipv6: Fix KASAN: slab-out-of-bounds Read in
 fib6_nh_flush_exceptions").

We additionally need to take care of fib6_metrics initialization
failure when the caller provides an nh.

The fix is similar, explicitly free the route instead of calling
fib6_info_release on a half-initialized object.

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

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

	Issue introduced in 5.3 with commit f88d8ea67fbd and fixed in 5.4.136 with commit 830251361425
	Issue introduced in 5.3 with commit f88d8ea67fbd and fixed in 5.10.54 with commit ce8fafb68051
	Issue introduced in 5.3 with commit f88d8ea67fbd and fixed in 5.13.6 with commit 115784bcccf1
	Issue introduced in 5.3 with commit f88d8ea67fbd and fixed in 5.14 with commit 8fb4792f091e

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-47291
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/ipv6/route.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/830251361425c5be044db4d826aaf304ea3d14c6
	https://git.kernel.org/stable/c/ce8fafb68051fba52546f8bbe8621f7641683680
	https://git.kernel.org/stable/c/115784bcccf135c3a3548098153413d76f16aae0
	https://git.kernel.org/stable/c/8fb4792f091e608a0a1d353dfdf07ef55a719db5