On Thu, 12 Sep 2019 at 18:38, David Miller <da...@davemloft.net> wrote: > > From: Taehee Yoo <ap420...@gmail.com> > Date: Thu, 12 Sep 2019 12:56:19 +0900 > > > I tested with this reproducer commands without lockdep. > > > > ip link add dummy0 type dummy > > ip link add link dummy0 name vlan1 type vlan id 1 > > ip link set vlan1 up > > > > for i in {2..200} > > do > > let A=$i-1 > > > > ip link add name vlan$i link vlan$A type vlan id $i > > done > > ip link del vlan1 <-- this command is added. > > Is there any other device type which allows arbitrary nesting depth > in this manner other than VLAN? Perhaps it is the VLAN nesting > depth that we should limit instead of all of this extra code.
Below device types have the same problem. VLAN, BONDING, TEAM, VXLAN, MACVLAN, and MACSEC. All the below test commands reproduce a panic. BONDING test commands: ip link add bond0 type bond for i in {1..200} do let A=$i-1 ip link add bond$i type bond ip link set bond$i master bond$A done ip link set bond5 master bond0 TEAM test commands: ip link add team0 type team for i in {1..200} do let A=$i-1 ip link add team$i type team ip link set team$i master team$A done MACSEC test commands: ip link add link lo macsec0 type macsec for i in {1..100} do let A=$i-1 ip link add link macsec$A macsec$i type macsec done ip link del macsec0 MACVLAN test commands: ip link add dummy0 type dummy ip link add macvlan1 link dummy0 type macvlan ip link add vlan2 link macvlan1 type vlan id 2 let i=3 for j in {1..100} do let A=$i-1 ip link add macvlan$i link vlan$A type macvlan let i=$i+1 let A=$i-1 ip link add vlan$i link macvlan$A type vlan id $i let i=$i+1 done ip link del dummy0 VXLAN test commands: ip link add vxlan1 type vxlan dev lo id 1 dstport 1 for i in {2..100} do let A=$i-1 ip link add vxlan$i type vxlan dev vxlan$A id $i dstport $i done ip link del vxlan1