Re: [PATCH] netlink: fix for too early rmmod
From: David Miller <davem@davemloft.net>
Date: 2010-02-04 02:14:31
From: Patrick McHardy <redacted> Date: Tue, 02 Feb 2010 15:55:25 +0100
Alexey Dobriyan wrote:quoted
Netlink code does module autoload if protocol userspace is asking for is not ready. However, module can dissapear right after it was autoloaded. Example: modprobe/rmmod stress-testing and xfrm_user.ko providing NETLINK_XFRM. netlink_create() in such situation _will_ create userspace socket and _will_not_ pin module. Now if module was removed and we're going to call ->netlink_rcv into nothing: BUG: unable to handle kernel paging request at ffffffffa02f842a ^^^^^^^^^^^^^^^^ modules are loaded near these addresses here ... If module was quickly removed after autoloading, return -E. Return -EPROTONOSUPPORT if module was quickly removed after autoloading. Signed-off-by: Alexey Dobriyan <redacted> --- NOTE: due to commit 513c25000005257e5474f261bf27d4a3c1dff1e3 "[NETLINK]: Don't prevent creating sockets when no kernel socket is registered" error should probably be -ENOENT, but I have no idea what this pam-audit thing is.Quoting from the thread back then (couldn't find a public reference):quoted
FC4 includes a pam-0.77-audit.patch which adds a pam module that uses libaudit to probe for audit availability. It calls audit_open and ignores connection refused but returns an pam error for all other errors.The current version of libaudit properly checks for EPROTONOSUPPORT, but I don't know when this was fixed and whether we can assume the broken code is not used anymore.
In any event, the EPROTONOSUPPORT is being returned now in a case that has been OOPS'ing. So I think it's safe to apply Alexey's fix as-is, and that is what I have just done in net-2.6 :-) Thanks!