public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] taskstats: fix? sk_buff leak
  2006-10-29 13:24 [PATCH] taskstats: fix? sk_buff leak Oleg Nesterov
@ 2006-10-29 12:33 ` Thomas Graf
  2006-10-29 13:45   ` Oleg Nesterov
  0 siblings, 1 reply; 3+ messages in thread
From: Thomas Graf @ 2006-10-29 12:33 UTC (permalink / raw)
  To: Oleg Nesterov
  Cc: Andrew Morton, Shailabh Nagar, Balbir Singh, Jay Lan,
	linux-kernel

* Oleg Nesterov <oleg@tv-sign.ru> 2006-10-29 16:24
> Compile tested only, and I know nothing about net/. Needs an ack from
> maintainer.
> 
> 'return genlmsg_cancel()' in taskstats_user_cmd/taskstats_exit_send looks
> wrong to me. Unless we pass 'rep_skb' to the netlink layer we own sk_buff,
> yes? This means we should always do kfree_skb() on failure.

That's right.

> Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
> 
> --- STATS/kernel/taskstats.c~1_skb	2006-10-29 15:12:51.000000000 +0300
> +++ STATS/kernel/taskstats.c	2006-10-29 16:16:05.000000000 +0300
> @@ -411,7 +411,7 @@ static int taskstats_user_cmd(struct sk_
>  	return send_reply(rep_skb, info->snd_pid);
>  
>  nla_put_failure:
> -	return genlmsg_cancel(rep_skb, reply);
> +	genlmsg_cancel(rep_skb, reply);

rc = genlmsg_cancel(...) or return value is undefined.

>  err:
>  	nlmsg_free(rep_skb);
>  	return rc;
> @@ -507,7 +507,6 @@ send:
>  
>  nla_put_failure:
>  	genlmsg_cancel(rep_skb, reply);
> -	goto ret;
>  err_skb:
>  	nlmsg_free(rep_skb);
>  ret:
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH] taskstats: fix? sk_buff leak
@ 2006-10-29 13:24 Oleg Nesterov
  2006-10-29 12:33 ` Thomas Graf
  0 siblings, 1 reply; 3+ messages in thread
From: Oleg Nesterov @ 2006-10-29 13:24 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Thomas Graf, Shailabh Nagar, Balbir Singh, Jay Lan, linux-kernel

Compile tested only, and I know nothing about net/. Needs an ack from
maintainer.

'return genlmsg_cancel()' in taskstats_user_cmd/taskstats_exit_send looks
wrong to me. Unless we pass 'rep_skb' to the netlink layer we own sk_buff,
yes? This means we should always do kfree_skb() on failure.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>

--- STATS/kernel/taskstats.c~1_skb	2006-10-29 15:12:51.000000000 +0300
+++ STATS/kernel/taskstats.c	2006-10-29 16:16:05.000000000 +0300
@@ -411,7 +411,7 @@ static int taskstats_user_cmd(struct sk_
 	return send_reply(rep_skb, info->snd_pid);
 
 nla_put_failure:
-	return genlmsg_cancel(rep_skb, reply);
+	genlmsg_cancel(rep_skb, reply);
 err:
 	nlmsg_free(rep_skb);
 	return rc;
@@ -507,7 +507,6 @@ send:
 
 nla_put_failure:
 	genlmsg_cancel(rep_skb, reply);
-	goto ret;
 err_skb:
 	nlmsg_free(rep_skb);
 ret:


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] taskstats: fix? sk_buff leak
  2006-10-29 12:33 ` Thomas Graf
@ 2006-10-29 13:45   ` Oleg Nesterov
  0 siblings, 0 replies; 3+ messages in thread
From: Oleg Nesterov @ 2006-10-29 13:45 UTC (permalink / raw)
  To: Thomas Graf
  Cc: Andrew Morton, Shailabh Nagar, Balbir Singh, Jay Lan,
	linux-kernel

On 10/29, Thomas Graf wrote:
>
> * Oleg Nesterov <oleg@tv-sign.ru> 2006-10-29 16:24
> >  nla_put_failure:
> > -	return genlmsg_cancel(rep_skb, reply);
> > +	genlmsg_cancel(rep_skb, reply);
> 
> rc = genlmsg_cancel(...) or return value is undefined.

Thanks!

[PATCH] taskstats: fix sk_buff leak

Compile tested.

'return genlmsg_cancel()' in taskstats_user_cmd/taskstats_exit_send looks
wrong to me. Unless we pass 'rep_skb' to the netlink layer we own sk_buff.
This means we should always do kfree_skb() on failure.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>

--- STATS/kernel/taskstats.c~1_skb	2006-10-29 15:12:51.000000000 +0300
+++ STATS/kernel/taskstats.c	2006-10-29 16:39:10.000000000 +0300
@@ -411,7 +411,7 @@ static int taskstats_user_cmd(struct sk_
 	return send_reply(rep_skb, info->snd_pid);
 
 nla_put_failure:
-	return genlmsg_cancel(rep_skb, reply);
+	rc = genlmsg_cancel(rep_skb, reply);
 err:
 	nlmsg_free(rep_skb);
 	return rc;
@@ -507,7 +507,6 @@ send:
 
 nla_put_failure:
 	genlmsg_cancel(rep_skb, reply);
-	goto ret;
 err_skb:
 	nlmsg_free(rep_skb);
 ret:


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-10-29 12:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-29 13:24 [PATCH] taskstats: fix? sk_buff leak Oleg Nesterov
2006-10-29 12:33 ` Thomas Graf
2006-10-29 13:45   ` Oleg Nesterov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox