]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: fix infinite loop when deleting non-default vrf 430/head
authorRenato Westphal <renato@opensourcerouting.org>
Sat, 29 Apr 2017 17:15:11 +0000 (14:15 -0300)
committerRenato Westphal <renato@opensourcerouting.org>
Sat, 29 Apr 2017 17:25:04 +0000 (14:25 -0300)
How to reproduce the bug:
% ip link add vrf-red type vrf table 10
% ip link set dev vrf-red up
% ip rule add oif vrf-red table 10
% ip rule add iif vrf-red table 10
% ip link add name lo1 type dummy
% ip link set dev lo1 up
% ip link set dev lo1 master vrf-red
% ip link del dev vrf-red
(zebra gets stuck in an infinite loop inside work_queue_run())

Regression introduced by commit 5a8dfcd8.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
zebra/zebra_vrf.c

index bc18ee5863650caee2eaa4f0a74522b3d55804d7..6b36891056944cf2e8c1fb60aedd94129cd68021 100644 (file)
@@ -265,6 +265,7 @@ zebra_vrf_delete (struct vrf *vrf)
            {
              route_unlock_node (rnode);
              list_delete_node (zebrad.mq->subq[i], lnode);
+             zebrad.mq->size--;
            }
        }
     }