lkml.org 
[lkml]   [2008]   [Jan]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] /net/bluetooth: Use sockfd_put
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;

\
 
 \ /
  Last update: 2008-01-06 16:55    [W:0.047 / U:0.948 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site