Please do not edit this list for now. Email changes to me if you like. Nick Piggin <email@example.com>
For the non-compiling stuff, I've probably missed a few that just aren't compilable on my platforms, so any updates would be welcome. Also, are some of our non-compiling or unconverted drivers obsolete?
_anything_ can grab a temporary reference to kobject. IOW, if kobject is embedded into something that could be freed - it _MUST_ have a destructor and that destructor _MUST_ be the destructor for containing object.
We can tolerate it for a while in 2.5 (e.g. during work on susbsystem we can decide to switch to that way of handling objects and have subsystem vulnerable for a while), but all such windows must be closed before 2.6 and during 2.6 we can't open them at all.
It is OK to sleep with the socket held held, normally. But in this case the sleep happens while waiting for socket memory/space to become available, if another context needs to take the socket lock to free up the space we could hang.
When we first try to connect to a destination, we may need to ask the IPSEC key management daemon to resolve the IPSEC routes for us. For the purposes of what the kernel needs to do, you can think of it like ARP. We can't send the packet out properly until we resolve the path.
These semantics are total crap. The solution, which Alexey is working on, is to allow incomplete routes to exist. These "incomplete" routes merely put the packet onto a "resolution queue", and once the key manager does it's thing we finish the output of the packet. This is precisely how ARP works.