On Fri, 28 Jan 2005 23:13:29 +0100
Daniele Orlandi <daniele@xxxxxxxxxxx> wrote:
> First of all, please excuse me if this happens to be a bug in my code :)
> Unfortunately I'm still a newbie with netdev and his interactions with
> netlink, hotplug, etc... please help me understand what's happening and who
> is wrong.
> The scenario is this:
> - A device driver module (written by me) has two netdevices registered.
> - Another module (written by me, too) provides sockets implementation for the
> protocol spoken by the device.
> - An application has one socket bound to one netdevice
> - I rmmod the device driver module
> - The exit function in the module calls netdev_unregister
> - The event dispatcher notifies the socket layer that a device is going down
> - The socket is marked errored but the application keeps it open for a while
> - The application ends, the socket is destroyed, the remaining reference to
> netdevice is released but netdev_unregister keeps sleeping forever with this
You are probably self-deadlocking on the netlink mutex (rtnl).
Is your netdevice_notifier handler calling rtnl_lock?