Skip to content

Commit

Permalink
[BLUETOOTH]: Use sockfd_put()
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
Julia Lawall authored and davem330 committed Jan 28, 2008
1 parent 3becd57 commit 67b2321
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 9 deletions.
4 changes: 2 additions & 2 deletions net/bluetooth/bnep/sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ static int bnep_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long
return err;

if (nsock->sk->sk_state != BT_CONNECTED) {
fput(nsock->file);
sockfd_put(nsock);
return -EBADFD;
}

Expand All @@ -103,7 +103,7 @@ static int bnep_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long
if (copy_to_user(argp, &ca, sizeof(ca)))
err = -EFAULT;
} else
fput(nsock->file);
sockfd_put(nsock);

return err;

Expand Down
4 changes: 2 additions & 2 deletions net/bluetooth/cmtp/sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ static int cmtp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long
return err;

if (nsock->sk->sk_state != BT_CONNECTED) {
fput(nsock->file);
sockfd_put(nsock);
return -EBADFD;
}

Expand All @@ -97,7 +97,7 @@ static int cmtp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long
if (copy_to_user(argp, &ca, sizeof(ca)))
err = -EFAULT;
} else
fput(nsock->file);
sockfd_put(nsock);

return err;

Expand Down
10 changes: 5 additions & 5 deletions net/bluetooth/hidp/sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,13 @@ static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long

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;
}

Expand All @@ -101,8 +101,8 @@ static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long
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;
Expand Down

0 comments on commit 67b2321

Please sign in to comment.