On Thu, 2012-10-04 at 12:41 +0800, Gao feng wrote:
> set netlink_dump_control.module to avoid panic.
> 
> Signed-off-by: Gao feng <gaof...@cn.fujitsu.com>
> ---
>  net/ipv4/inet_diag.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c
> index 535584c..5ffd7bc 100644
> --- a/net/ipv4/inet_diag.c
> +++ b/net/ipv4/inet_diag.c
> @@ -981,6 +981,7 @@ static int inet_diag_rcv_msg_compat(struct sk_buff *skb, 
> struct nlmsghdr *nlh)
>               {
>                       struct netlink_dump_control c = {
>                               .dump = inet_diag_dump_compat,
> +                             .module = THIS_MODULE,
>                       };
>                       return netlink_dump_start(net->diag_nlsk, skb, nlh, &c);
>               }
> @@ -1010,6 +1011,7 @@ static int inet_diag_handler_dump(struct sk_buff *skb, 
> struct nlmsghdr *h)
>               {
>                       struct netlink_dump_control c = {
>                               .dump = inet_diag_dump,
> +                             .module = THIS_MODULE,
>                       };
>                       return netlink_dump_start(net->diag_nlsk, skb, h, &c);
>               }


I believe Pablo suggestion was to make netlink_dump_start()
automatically pass THIS_MODULE so that we dont need to change all call
sites ?

extern int __netlink_dump_start(struct sock *ssk, struct sk_buff *skb,
                                  const struct nlmsghdr *nlh,
                                  struct netlink_dump_control *control);

static inline int netlink_dump_start(struct sock *ssk, struct sk_buff *skb,
                                        const struct nlmsghdr *nlh,
                                        struct netlink_dump_control *control)
{
        control->module = THIS_MODULE;
        return __netlink_dump_start(ssk, skb, nlh, control);
}

or :

extern int __netlink_dump_start(struct sock *ssk, struct sk_buff *skb,
                                  const struct nlmsghdr *nlh,
                                  struct netlink_dump_control *control,
                                  struct module *module);

static inline int netlink_dump_start(struct sock *ssk, struct sk_buff *skb,
                                        const struct nlmsghdr *nlh,
                                        struct netlink_dump_control *control)
{
        return __netlink_dump_start(ssk, skb, nlh, control, THIS_MODULE);
}


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

Reply via email to