infiniband: pass rdma_cm module to netlink_dump_start
Gao feng [Thu, 4 Oct 2012 20:15:49 +0000 (20:15 +0000)]
[ Upstream commit 809d5fc9bf6589276a12bd4fd611e4c7ff9940c3 ]

set netlink_dump_control.module to avoid panic.

Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
Cc: Roland Dreier <roland@kernel.org>
Cc: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drivers/infiniband/core/cma.c
drivers/infiniband/core/netlink.c
include/rdma/rdma_netlink.h

index e3e470f..67432e2 100644 (file)
@@ -3451,7 +3451,8 @@ out:
 }
 
 static const struct ibnl_client_cbs cma_cb_table[] = {
-       [RDMA_NL_RDMA_CM_ID_STATS] = { .dump = cma_get_id_stats },
+       [RDMA_NL_RDMA_CM_ID_STATS] = { .dump = cma_get_id_stats,
+                                      .module = THIS_MODULE },
 };
 
 static int __init cma_init(void)
index 396e293..8c3b08a 100644 (file)
@@ -151,6 +151,7 @@ static int ibnl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
                        {
                                struct netlink_dump_control c = {
                                        .dump = client->cb_table[op].dump,
+                                       .module = client->cb_table[op].module,
                                };
                                return netlink_dump_start(nls, skb, nlh, &c);
                        }
index 3c5363a..bd3d8b2 100644 (file)
@@ -39,6 +39,7 @@ struct rdma_cm_id_stats {
 
 struct ibnl_client_cbs {
        int (*dump)(struct sk_buff *skb, struct netlink_callback *nlcb);
+       struct module *module;
 };
 
 int ibnl_init(void);