Skip to content
  • Rafał Miłecki's avatar
    kernel: fix refcnt leak in LED netdev trigger on interface rename · 981f5f7e
    Rafał Miłecki authored
    
    
    Renaming a netdev-trigger-tracked interface was resulting in an
    unbalanced dev_hold().
    
    Example:
    > iw phy phy0 interface add foo type __ap
    > echo netdev > trigger
    > echo foo > device_name
    > ip link set foo name bar
    > iw dev bar del
    [  237.355366] unregister_netdevice: waiting for bar to become free. Usage count = 1
    [  247.435362] unregister_netdevice: waiting for bar to become free. Usage count = 1
    [  257.545366] unregister_netdevice: waiting for bar to become free. Usage count = 1
    
    Above problem was caused by trigger checking a dev->name which obviously
    changes after renaming an interface. It meant missing all further events
    including the NETDEV_UNREGISTER which is required for calling dev_put().
    
    This change fixes that by:
    1) Comparing device struct *address* for notification-filtering purposes
    2) Dropping unneeded NETDEV_CHANGENAME code (no behavior change)
    
    Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
    (cherry picked from commit eea53820)
    981f5f7e