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 2638eb8b50
("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: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
4bd366cece
|
@ -745,8 +745,7 @@ static void check_lifetime(struct work_struct *work)
|
||||||
ifap = &ifa->ifa_dev->ifa_list;
|
ifap = &ifa->ifa_dev->ifa_list;
|
||||||
tmp = rtnl_dereference(*ifap);
|
tmp = rtnl_dereference(*ifap);
|
||||||
while (tmp) {
|
while (tmp) {
|
||||||
tmp = rtnl_dereference(tmp->ifa_next);
|
if (tmp == ifa) {
|
||||||
if (rtnl_dereference(*ifap) == ifa) {
|
|
||||||
inet_del_ifa(ifa->ifa_dev,
|
inet_del_ifa(ifa->ifa_dev,
|
||||||
ifap, 1);
|
ifap, 1);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -249,6 +249,26 @@ kci_test_route_get()
|
||||||
echo "PASS: 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()
|
kci_test_addrlabel()
|
||||||
{
|
{
|
||||||
ret=0
|
ret=0
|
||||||
|
@ -1140,6 +1160,7 @@ kci_test_rtnl()
|
||||||
|
|
||||||
kci_test_polrouting
|
kci_test_polrouting
|
||||||
kci_test_route_get
|
kci_test_route_get
|
||||||
|
kci_test_addrlft
|
||||||
kci_test_tc
|
kci_test_tc
|
||||||
kci_test_gre
|
kci_test_gre
|
||||||
kci_test_gretap
|
kci_test_gretap
|
||||||
|
|
Loading…
Reference in New Issue