Subject: Re: [PATCH] IRDA: Fix genlmsg_put() return value check.

From: Patrick McHardy <[email-masked]>
Date: Mon, 23 Jun 2008 21:43:31 +0200

Julius Volz wrote:
> Fix an incorrect return value check of genlmsg_put() in irda_nl_get_mode().
> genlmsg_put() does not use ERR_PTR() to encode return values, it just
> returns NULL on error.
> 
> Signed-off-by: Julius Volz <[email-masked]>
> ---
>  net/irda/irnetlink.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/net/irda/irnetlink.c b/net/irda/irnetlink.c
> index 9e1fb82..ea11cb4 100644
> --- a/net/irda/irnetlink.c
> +++ b/net/irda/irnetlink.c
> @@ -101,8 +101,8 @@ static int irda_nl_get_mode(struct sk_buff *skb, struct genl_info *info)
>  
>  	hdr = genlmsg_put(msg, info->snd_pid, info->snd_seq,
>  			  &irda_nl_family, 0,  IRDA_NL_CMD_GET_MODE);
> -	if (IS_ERR(hdr)) {
> -		ret = PTR_ERR(hdr);
> +	if (hdr == NULL) {
> +		ret = -ENOMEM;
>  		goto err_out;
>  	}

Good catch, but the correct return value for insufficient
space in the skb is -ENOSPC.