The problem: There is a class of deadlocks that we currently
have in the kernel that lockdep does not recognize.
In particular with the network stack we can have:
rtnl_lock(); use_table();
unregister_netdevice(); rtnl_lock();
unregister_sysctl_table(); ....
wait_for_completion(); rtnl_lock();
.... unuse_table()
rtnl_unlock(); complete();
Where we never make it to the lines labled ....
My patch following patches treats the sysctl use count as a read/writer
lock for purposes of lockdep.
The code works but I'm not certain I have plugged into lockdep quite
correctly.
Eric