• Chris Leech's avatar
    [SCSI] fcoe: Fix module ref count bug by adding NETDEV UNREGISTER handling · 2e70e241
    Chris Leech authored
    Fixes reference counting on fcoe_instance and net_device, and adds
    NETDEV_UNREGISTER notifier handling so that you can unload network drivers.
    FCoE no longer increments the module use count for the network driver.
    
    On an NETDEV_UNREGISTER event, destroying the FCoE instance is deferred to a
    workqueue context to avoid RTNL deadlocks.
    
    Based in part by an earlier patch from John Fastabend
    
    John's patch description:
    Currently, the netdev module ref count is not decremented with module_put()
    when the module is unloaded while fcoe instances are present. To fix this
    removed reference count on netdev module completely and added functionality to
    netdev event handling for NETDEV_UNREGISTER events.
    
    This allows fcoe to remove devices cleanly when the netdev module is unloaded
    so we no longer need to hold a reference count for the netdev module.
    Signed-off-by: default avatarChris Leech <christopher.leech@intel.com>
    Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    2e70e241
fcoe.c 50.7 KB