netlink: add reference of module in netlink_dump_start
authorGao feng <gaofeng@cn.fujitsu.com>
Thu, 4 Oct 2012 20:15:48 +0000 (20:15 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 28 Oct 2012 17:56:16 +0000 (10:56 -0700)
commit51f2e2ce2b04971dc852643bc5cc4b3657af4bc5
tree5295a4a8c506360692827098385a702dba6b4ba1
parent2c609a2f31e7961301c3b7ecbc8b47b29c1ea790
netlink: add reference of module in netlink_dump_start

[ Upstream commit 6dc878a8ca39e93f70c42f3dd7260bde10c1e0f1 ]

I get a panic when I use ss -a and rmmod inet_diag at the
same time.

It's because netlink_dump uses inet_diag_dump which belongs to module
inet_diag.

I search the codes and find many modules have the same problem.  We
need to add a reference to the module which the cb->dump belongs to.

Thanks for all help from Stephen,Jan,Eric,Steffen and Pablo.

Change From v3:
change netlink_dump_start to inline,suggestion from Pablo and
Eric.

Change From v2:
delete netlink_dump_done,and call module_put in netlink_dump
and netlink_sock_destruct.

Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/netlink.h
net/netlink/af_netlink.c