use proper netlink_dump_control.done and .module to avoid panic. Signed-off-by: Gao feng <gaofeng@xxxxxxxxxxxxxx> Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> --- crypto/crypto_user.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c index ba2c611..a9ca2b9 100644 --- a/crypto/crypto_user.c +++ b/crypto/crypto_user.c @@ -249,7 +249,7 @@ out_err: static int crypto_dump_report_done(struct netlink_callback *cb) { - return 0; + return netlink_dump_done(cb); } static int crypto_update_alg(struct sk_buff *skb, struct nlmsghdr *nlh, @@ -430,13 +430,15 @@ static struct crypto_link { int (*doit)(struct sk_buff *, struct nlmsghdr *, struct nlattr **); int (*dump)(struct sk_buff *, struct netlink_callback *); int (*done)(struct netlink_callback *); + struct module *module; } crypto_dispatch[CRYPTO_NR_MSGTYPES] = { [CRYPTO_MSG_NEWALG - CRYPTO_MSG_BASE] = { .doit = crypto_add_alg}, [CRYPTO_MSG_DELALG - CRYPTO_MSG_BASE] = { .doit = crypto_del_alg}, [CRYPTO_MSG_UPDATEALG - CRYPTO_MSG_BASE] = { .doit = crypto_update_alg}, [CRYPTO_MSG_GETALG - CRYPTO_MSG_BASE] = { .doit = crypto_report, .dump = crypto_dump_report, - .done = crypto_dump_report_done}, + .done = crypto_dump_report_done, + .module = THIS_MODULE}, }; static int crypto_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) @@ -470,6 +472,7 @@ static int crypto_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) struct netlink_dump_control c = { .dump = link->dump, .done = link->done, + .module = link->module, .min_dump_alloc = dump_alloc, }; return netlink_dump_start(crypto_nlsk, skb, nlh, &c); -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html