projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[cascardo/linux.git]
/
net
/
socket.c
diff --git
a/net/socket.c
b/net/socket.c
index
dd2c247
..
456fadb
100644
(file)
--- a/
net/socket.c
+++ b/
net/socket.c
@@
-1056,27
+1056,20
@@
static int sock_fasync(int fd, struct file *filp, int on)
return 0;
}
return 0;
}
-/* This function may be called only under
socket lock or callback_lock or
rcu_lock */
+/* This function may be called only under rcu_lock */
-int sock_wake_async(struct socket
*sock
, int how, int band)
+int sock_wake_async(struct socket
_wq *wq
, int how, int band)
{
{
- struct socket_wq *wq;
-
- if (!sock)
- return -1;
- rcu_read_lock();
- wq = rcu_dereference(sock->wq);
- if (!wq || !wq->fasync_list) {
- rcu_read_unlock();
+ if (!wq || !wq->fasync_list)
return -1;
return -1;
- }
+
switch (how) {
case SOCK_WAKE_WAITD:
switch (how) {
case SOCK_WAKE_WAITD:
- if (test_bit(SOCK
_ASYNC_WAITDATA, &sock
->flags))
+ if (test_bit(SOCK
WQ_ASYNC_WAITDATA, &wq
->flags))
break;
goto call_kill;
case SOCK_WAKE_SPACE:
break;
goto call_kill;
case SOCK_WAKE_SPACE:
- if (!test_and_clear_bit(SOCK
_ASYNC_NOSPACE, &sock
->flags))
+ if (!test_and_clear_bit(SOCK
WQ_ASYNC_NOSPACE, &wq
->flags))
break;
/* fall through */
case SOCK_WAKE_IO:
break;
/* fall through */
case SOCK_WAKE_IO:
@@
-1086,7
+1079,7
@@
call_kill:
case SOCK_WAKE_URG:
kill_fasync(&wq->fasync_list, SIGURG, band);
}
case SOCK_WAKE_URG:
kill_fasync(&wq->fasync_list, SIGURG, band);
}
- rcu_read_unlock();
+
return 0;
}
EXPORT_SYMBOL(sock_wake_async);
return 0;
}
EXPORT_SYMBOL(sock_wake_async);