On Fri, Jul 28, 2017 at 11:27:44PM +0300, Ido Schimmel wrote: > Michał reported a NULL pointer deref during fib_sync_down_dev() when > unregistering a netdevice. The problem is that we don't check for > 'in_dev' being NULL, which can happen in very specific cases. > > Usually routes are flushed upon NETDEV_DOWN sent in either the netdev or > the inetaddr notification chains. However, if an interface isn't > configured with any IP address, then it's possible for host routes to be > flushed following NETDEV_UNREGISTER, after NULLing dev->ip_ptr in > inetdev_destroy(). > > To reproduce: > $ ip link add type dummy > $ ip route add local 1.1.1.0/24 dev dummy0 > $ ip link del dev dummy0 > > Fix this by checking for the presence of 'in_dev' before referencing it. > > Fixes: 982acb97560c ("ipv4: fib: Notify about nexthop status changes") > Signed-off-by: Ido Schimmel <ido...@mellanox.com> > Reported-by: Michał Mirosław <mirq-li...@rere.qmqm.pl>
Tested-by: Michał Mirosław <mirq-li...@rere.qmqm.pl> Thanks!