Subject: CVE-2024-35857: icmp: prevent possible NULL dereferences from icmp_build_probe()

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

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

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

icmp: prevent possible NULL dereferences from icmp_build_probe()

First problem is a double call to __in_dev_get_rcu(), because
the second one could return NULL.

if (__in_dev_get_rcu(dev) && __in_dev_get_rcu(dev)->ifa_list)

Second problem is a read from dev->ip6_ptr with no NULL check:

if (!list_empty(&rcu_dereference(dev->ip6_ptr)->addr_list))

Use the correct RCU API to fix these.

v2: add missing include <net/addrconf.h>

The Linux kernel CVE team has assigned CVE-2024-35857 to this issue.

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

	Issue introduced in 5.13 with commit d329ea5bd884 and fixed in 5.15.158 with commit 23b7ee4a8d55
	Issue introduced in 5.13 with commit d329ea5bd884 and fixed in 6.1.90 with commit 599c9ad5e1d4
	Issue introduced in 5.13 with commit d329ea5bd884 and fixed in 6.6.30 with commit d68dc711d84f
	Issue introduced in 5.13 with commit d329ea5bd884 and fixed in 6.8.9 with commit 3e2979bf080c
	Issue introduced in 5.13 with commit d329ea5bd884 and fixed in 6.9 with commit c58e88d49097

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-2024-35857
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/ipv4/icmp.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/23b7ee4a8d559bf38eac7ce5bb2f6ebf76f9c401
	https://git.kernel.org/stable/c/599c9ad5e1d43f5c12d869f5fd406ba5d8c55270
	https://git.kernel.org/stable/c/d68dc711d84fdcf698e5d45308c3ddeede586350
	https://git.kernel.org/stable/c/3e2979bf080c40da4f7c93aff8575ab8bc62b767
	https://git.kernel.org/stable/c/c58e88d49097bd12dfcfef4f075b43f5d5830941