Re: [PATCH] inet_diag: make config INET_DIAG bool
From: Gao feng <hidden>
Date: 2012-09-24 10:17:57
于 2012年09月24日 17:42, Eric Dumazet 写道:
In fact I didnt fully understand the problem you try to address. If you want to prevent module being unloaded, you need to add proper module_get()/module_put() So I would add a "struct module *module;" in struct sock_diag_handler and use it appropriately.
Yes, I try to add reference of the module,but I can't find a proper location to call module_get and module_put. module_get should be called when userspace program use netlink to send dump request to the kernel,and module_put should be called when the dump is completed. I am right? BUT the userspace program may only call netlink_sendmsg without call netlink_recvmsg.so the reference of the module will be incorrect.
But then, I might have totally misunderstood the problem. Care to explain how you trigger the bug ?
It's very easy to trigger this bug, you can exec "while :; do ss -a ; done" in one terminal and exec "while :; do rmmod tcp_diag && rmmod inet_diag; done" in another terminal.