Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4bd366ce authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'net-ipv4-remove-erroneous-advancement-of-list-pointer'



Florian Westphal says:

====================
net: ipv4: remove erroneous advancement of list pointer

Tariq reported a soft lockup on net-next that Mellanox was able to
bisect to 2638eb8b ("net: ipv4: provide __rcu annotation for ifa_list").

While reviewing above patch I found a regression when addresses have a
lifetime specified.

Second patch extends rtnetlink.sh to trigger crash
(without first patch applied).
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 78fe8a28 3cfa1488
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -745,8 +745,7 @@ static void check_lifetime(struct work_struct *work)
				ifap = &ifa->ifa_dev->ifa_list;
				tmp = rtnl_dereference(*ifap);
				while (tmp) {
					tmp = rtnl_dereference(tmp->ifa_next);
					if (rtnl_dereference(*ifap) == ifa) {
					if (tmp == ifa) {
						inet_del_ifa(ifa->ifa_dev,
							     ifap, 1);
						break;
+21 −0
Original line number Diff line number Diff line
@@ -249,6 +249,26 @@ kci_test_route_get()
	echo "PASS: route get"
}

kci_test_addrlft()
{
	for i in $(seq 10 100) ;do
		lft=$(((RANDOM%3) + 1))
		ip addr add 10.23.11.$i/32 dev "$devdummy" preferred_lft $lft valid_lft $((lft+1))
		check_err $?
	done

	sleep 5

	ip addr show dev "$devdummy" | grep "10.23.11."
	if [ $? -eq 0 ]; then
		echo "FAIL: preferred_lft addresses remaining"
		check_err 1
		return
	fi

	echo "PASS: preferred_lft addresses have expired"
}

kci_test_addrlabel()
{
	ret=0
@@ -1140,6 +1160,7 @@ kci_test_rtnl()

	kci_test_polrouting
	kci_test_route_get
	kci_test_addrlft
	kci_test_tc
	kci_test_gre
	kci_test_gretap