linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] /net/bluetooth: Use sockfd_put
@ 2008-01-06 15:51 Julia Lawall
  2008-01-08  6:38 ` David Miller
  0 siblings, 1 reply; 2+ messages in thread
From: Julia Lawall @ 2008-01-06 15:51 UTC (permalink / raw)
  To: marcel, maxk, linux-kernel, kernel-janitors

From: Julia Lawall <julia@diku.dk>

The function sockfd_lookup uses fget on the value that is stored in the
file field of the returned structure, so fput should ultimately be applied
to this value.  This can be done directly, but it seems better to use the
specific macro sockfd_put, which does the same thing.


The problem was fixed using the following semantic patch.
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@@
expression s;
@@

   s = sockfd_lookup(...)
   ...
+  sockfd_put(s);
?- fput(s->file);
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
---

diff -u -p a/net/bluetooth/bnep/sock.c b/net/bluetooth/bnep/sock.c
--- a/net/bluetooth/bnep/sock.c 2007-11-08 08:00:52.000000000 +0100
+++ b/net/bluetooth/bnep/sock.c 2008-01-06 11:35:17.000000000 +0100
@@ -94,7 +94,7 @@ static int bnep_sock_ioctl(struct socket
 			return err;
 
 		if (nsock->sk->sk_state != BT_CONNECTED) {
-			fput(nsock->file);
+			sockfd_put(nsock);
 			return -EBADFD;
 		}
 
@@ -103,7 +103,7 @@ static int bnep_sock_ioctl(struct socket
 			if (copy_to_user(argp, &ca, sizeof(ca)))
 				err = -EFAULT;
 		} else
-			fput(nsock->file);
+			sockfd_put(nsock);
 
 		return err;
 
diff -u -p a/net/bluetooth/cmtp/sock.c b/net/bluetooth/cmtp/sock.c
--- a/net/bluetooth/cmtp/sock.c 2007-11-08 08:00:52.000000000 +0100
+++ b/net/bluetooth/cmtp/sock.c 2008-01-06 11:35:17.000000000 +0100
@@ -88,7 +88,7 @@ static int cmtp_sock_ioctl(struct socket
 			return err;
 
 		if (nsock->sk->sk_state != BT_CONNECTED) {
-			fput(nsock->file);
+			sockfd_put(nsock);
 			return -EBADFD;
 		}
 
@@ -97,7 +97,7 @@ static int cmtp_sock_ioctl(struct socket
 			if (copy_to_user(argp, &ca, sizeof(ca)))
 				err = -EFAULT;
 		} else
-			fput(nsock->file);
+			sockfd_put(nsock);
 
 		return err;
 
diff -u -p a/net/bluetooth/hidp/sock.c b/net/bluetooth/hidp/sock.c
--- a/net/bluetooth/hidp/sock.c 2007-11-08 08:00:52.000000000 +0100
+++ b/net/bluetooth/hidp/sock.c 2008-01-06 11:35:18.000000000 +0100
@@ -86,13 +86,13 @@ static int hidp_sock_ioctl(struct socket
 
 		isock = sockfd_lookup(ca.intr_sock, &err);
 		if (!isock) {
-			fput(csock->file);
+			sockfd_put(csock);
 			return err;
 		}
 
 		if (csock->sk->sk_state != BT_CONNECTED || isock->sk->sk_state != BT_CONNECTED) {
-			fput(csock->file);
-			fput(isock->file);
+			sockfd_put(csock);
+			sockfd_put(isock);
 			return -EBADFD;
 		}
 
@@ -101,8 +101,8 @@ static int hidp_sock_ioctl(struct socket
 			if (copy_to_user(argp, &ca, sizeof(ca)))
 				err = -EFAULT;
 		} else {
-			fput(csock->file);
-			fput(isock->file);
+			sockfd_put(csock);
+			sockfd_put(isock);
 		}
 
 		return err;

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

* Re: [PATCH] /net/bluetooth: Use sockfd_put
  2008-01-06 15:51 [PATCH] /net/bluetooth: Use sockfd_put Julia Lawall
@ 2008-01-08  6:38 ` David Miller
  0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2008-01-08  6:38 UTC (permalink / raw)
  To: julia; +Cc: marcel, maxk, linux-kernel, kernel-janitors

From: Julia Lawall <julia@diku.dk>
Date: Sun, 6 Jan 2008 16:51:45 +0100 (CET)

> The function sockfd_lookup uses fget on the value that is stored in the
> file field of the returned structure, so fput should ultimately be applied
> to this value.  This can be done directly, but it seems better to use the
> specific macro sockfd_put, which does the same thing.

Applied to net-2.6.25, thanks.

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

end of thread, other threads:[~2008-01-08  6:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-01-06 15:51 [PATCH] /net/bluetooth: Use sockfd_put Julia Lawall
2008-01-08  6:38 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).