Patchwork [08/11] crypto: pass crypto_user module to netlink_dump_start

login
register
mail settings
Submitter Gao feng
Date Sept. 26, 2012, 4:52 a.m.
Message ID <1348635140-20225-8-git-send-email-gaofeng@cn.fujitsu.com>
Download mbox | patch
Permalink /patch/186952/
State Changes Requested
Delegated to: David Miller
Headers show

Comments

Gao feng - Sept. 26, 2012, 4:52 a.m.
use proper netlink_dump_control.done and .module to avoid panic.

Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
---
 crypto/crypto_user.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)
Steffen Klassert - Sept. 26, 2012, 5:49 a.m.
On Wed, Sep 26, 2012 at 12:52:17PM +0800, Gao feng wrote:
> use proper netlink_dump_control.done and .module to avoid panic.
> 
> Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> ---
>  crypto/crypto_user.c |    6 +++++-
>  1 files changed, 5 insertions(+), 1 deletions(-)
> 
> diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c
> index ba2c611..b5cb32b 100644
> --- a/crypto/crypto_user.c
> +++ b/crypto/crypto_user.c
> @@ -249,6 +249,7 @@ out_err:
>  
>  static int crypto_dump_report_done(struct netlink_callback *cb)
>  {
> +	netlink_dump_done(cb);
>  	return 0;

It's probaply better to return the return value of netlink_dump_done()
instead. Right now, netlink_dump_done() returns 0 in any case,
but this might change over time.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Gao feng - Sept. 26, 2012, 7:21 a.m.
于 2012年09月26日 13:49, Steffen Klassert 写道:
> On Wed, Sep 26, 2012 at 12:52:17PM +0800, Gao feng wrote:
>> use proper netlink_dump_control.done and .module to avoid panic.
>>
>> Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
>> Cc: Herbert Xu <herbert@gondor.apana.org.au>
>> ---
>>  crypto/crypto_user.c |    6 +++++-
>>  1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c
>> index ba2c611..b5cb32b 100644
>> --- a/crypto/crypto_user.c
>> +++ b/crypto/crypto_user.c
>> @@ -249,6 +249,7 @@ out_err:
>>  
>>  static int crypto_dump_report_done(struct netlink_callback *cb)
>>  {
>> +	netlink_dump_done(cb);
>>  	return 0;
> 
> It's probaply better to return the return value of netlink_dump_done()
> instead. Right now, netlink_dump_done() returns 0 in any case,
> but this might change over time.
> 

Get it, will fix, thanks!

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c
index ba2c611..b5cb32b 100644
--- a/crypto/crypto_user.c
+++ b/crypto/crypto_user.c
@@ -249,6 +249,7 @@  out_err:
 
 static int crypto_dump_report_done(struct netlink_callback *cb)
 {
+	netlink_dump_done(cb);
 	return 0;
 }
 
@@ -430,13 +431,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 +473,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);