mirror of
https://github.com/ukui/kernel.git
synced 2026-03-09 10:07:04 -07:00
net: sk_sleep() helper
Define a new function to return the waitqueue of a "struct sock".
static inline wait_queue_head_t *sk_sleep(struct sock *sk)
{
return sk->sk_sleep;
}
Change all read occurrences of sk_sleep by a call to this function.
Needed for a future RCU conversion. sk_sleep wont be a field directly
available.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
ab9304717f
commit
aa39514516
@@ -68,7 +68,7 @@ static int atmtcp_send_control(struct atm_vcc *vcc,int type,
|
||||
*(struct atm_vcc **) &new_msg->vcc = vcc;
|
||||
old_test = test_bit(flag,&vcc->flags);
|
||||
out_vcc->push(out_vcc,skb);
|
||||
add_wait_queue(sk_atm(vcc)->sk_sleep, &wait);
|
||||
add_wait_queue(sk_sleep(sk_atm(vcc)), &wait);
|
||||
while (test_bit(flag,&vcc->flags) == old_test) {
|
||||
mb();
|
||||
out_vcc = PRIV(vcc->dev) ? PRIV(vcc->dev)->vcc : NULL;
|
||||
@@ -80,7 +80,7 @@ static int atmtcp_send_control(struct atm_vcc *vcc,int type,
|
||||
schedule();
|
||||
}
|
||||
set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(sk_atm(vcc)->sk_sleep, &wait);
|
||||
remove_wait_queue(sk_sleep(sk_atm(vcc)), &wait);
|
||||
return error;
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ static int atmtcp_recv_control(const struct atmtcp_control *msg)
|
||||
msg->type);
|
||||
return -EINVAL;
|
||||
}
|
||||
wake_up(sk_atm(vcc)->sk_sleep);
|
||||
wake_up(sk_sleep(sk_atm(vcc)));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -246,8 +246,8 @@ static void macvtap_sock_write_space(struct sock *sk)
|
||||
!test_and_clear_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags))
|
||||
return;
|
||||
|
||||
if (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
|
||||
wake_up_interruptible_poll(sk->sk_sleep, POLLOUT | POLLWRNORM | POLLWRBAND);
|
||||
if (sk_sleep(sk) && waitqueue_active(sk_sleep(sk)))
|
||||
wake_up_interruptible_poll(sk_sleep(sk), POLLOUT | POLLWRNORM | POLLWRBAND);
|
||||
}
|
||||
|
||||
static int macvtap_open(struct inode *inode, struct file *file)
|
||||
|
||||
+2
-2
@@ -868,8 +868,8 @@ static void tun_sock_write_space(struct sock *sk)
|
||||
if (!test_and_clear_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags))
|
||||
return;
|
||||
|
||||
if (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
|
||||
wake_up_interruptible_sync_poll(sk->sk_sleep, POLLOUT |
|
||||
if (sk_sleep(sk) && waitqueue_active(sk_sleep(sk)))
|
||||
wake_up_interruptible_sync_poll(sk_sleep(sk), POLLOUT |
|
||||
POLLWRNORM | POLLWRBAND);
|
||||
|
||||
tun = tun_sk(sk)->tun;
|
||||
|
||||
@@ -599,9 +599,9 @@ static void iscsi_sw_tcp_conn_stop(struct iscsi_cls_conn *cls_conn, int flag)
|
||||
set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_rx);
|
||||
write_unlock_bh(&tcp_sw_conn->sock->sk->sk_callback_lock);
|
||||
|
||||
if (sock->sk->sk_sleep && waitqueue_active(sock->sk->sk_sleep)) {
|
||||
if (sk_sleep(sock->sk) && waitqueue_active(sk_sleep(sock->sk))) {
|
||||
sock->sk->sk_err = EIO;
|
||||
wake_up_interruptible(sock->sk->sk_sleep);
|
||||
wake_up_interruptible(sk_sleep(sock->sk));
|
||||
}
|
||||
|
||||
iscsi_conn_stop(cls_conn, flag);
|
||||
|
||||
+7
-3
@@ -1160,6 +1160,10 @@ static inline void sk_set_socket(struct sock *sk, struct socket *sock)
|
||||
sk->sk_socket = sock;
|
||||
}
|
||||
|
||||
static inline wait_queue_head_t *sk_sleep(struct sock *sk)
|
||||
{
|
||||
return sk->sk_sleep;
|
||||
}
|
||||
/* Detach socket from process context.
|
||||
* Announce socket dead, detach it from wait queue and inode.
|
||||
* Note that parent inode held reference count on this struct sock,
|
||||
@@ -1346,8 +1350,8 @@ static inline int sk_has_allocations(const struct sock *sk)
|
||||
* tp->rcv_nxt check sock_def_readable
|
||||
* ... {
|
||||
* schedule ...
|
||||
* if (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
|
||||
* wake_up_interruptible(sk->sk_sleep)
|
||||
* if (sk_sleep(sk) && waitqueue_active(sk_sleep(sk)))
|
||||
* wake_up_interruptible(sk_sleep(sk))
|
||||
* ...
|
||||
* }
|
||||
*
|
||||
@@ -1368,7 +1372,7 @@ static inline int sk_has_sleeper(struct sock *sk)
|
||||
* This memory barrier is paired in the sock_poll_wait.
|
||||
*/
|
||||
smp_mb__after_lock();
|
||||
return sk->sk_sleep && waitqueue_active(sk->sk_sleep);
|
||||
return sk_sleep(sk) && waitqueue_active(sk_sleep(sk));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -939,7 +939,7 @@ static inline int tcp_prequeue(struct sock *sk, struct sk_buff *skb)
|
||||
|
||||
tp->ucopy.memory = 0;
|
||||
} else if (skb_queue_len(&tp->ucopy.prequeue) == 1) {
|
||||
wake_up_interruptible_sync_poll(sk->sk_sleep,
|
||||
wake_up_interruptible_sync_poll(sk_sleep(sk),
|
||||
POLLIN | POLLRDNORM | POLLRDBAND);
|
||||
if (!inet_csk_ack_scheduled(sk))
|
||||
inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK,
|
||||
|
||||
+6
-6
@@ -92,7 +92,7 @@ static void vcc_def_wakeup(struct sock *sk)
|
||||
{
|
||||
read_lock(&sk->sk_callback_lock);
|
||||
if (sk_has_sleeper(sk))
|
||||
wake_up(sk->sk_sleep);
|
||||
wake_up(sk_sleep(sk));
|
||||
read_unlock(&sk->sk_callback_lock);
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ static void vcc_write_space(struct sock *sk)
|
||||
|
||||
if (vcc_writable(sk)) {
|
||||
if (sk_has_sleeper(sk))
|
||||
wake_up_interruptible(sk->sk_sleep);
|
||||
wake_up_interruptible(sk_sleep(sk));
|
||||
|
||||
sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT);
|
||||
}
|
||||
@@ -549,7 +549,7 @@ int vcc_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *m,
|
||||
}
|
||||
|
||||
eff = (size+3) & ~3; /* align to word boundary */
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
|
||||
error = 0;
|
||||
while (!(skb = alloc_tx(vcc, eff))) {
|
||||
if (m->msg_flags & MSG_DONTWAIT) {
|
||||
@@ -568,9 +568,9 @@ int vcc_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *m,
|
||||
send_sig(SIGPIPE, current, 0);
|
||||
break;
|
||||
}
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
|
||||
}
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
if (error)
|
||||
goto out;
|
||||
skb->dev = NULL; /* for paths shared with net_device interfaces */
|
||||
@@ -595,7 +595,7 @@ unsigned int vcc_poll(struct file *file, struct socket *sock, poll_table *wait)
|
||||
struct atm_vcc *vcc;
|
||||
unsigned int mask;
|
||||
|
||||
sock_poll_wait(file, sk->sk_sleep, wait);
|
||||
sock_poll_wait(file, sk_sleep(sk), wait);
|
||||
mask = 0;
|
||||
|
||||
vcc = ATM_SD(sock);
|
||||
|
||||
+1
-1
@@ -131,7 +131,7 @@ static int sigd_send(struct atm_vcc *vcc, struct sk_buff *skb)
|
||||
}
|
||||
sk->sk_ack_backlog++;
|
||||
skb_queue_tail(&sk->sk_receive_queue, skb);
|
||||
pr_debug("waking sk->sk_sleep 0x%p\n", sk->sk_sleep);
|
||||
pr_debug("waking sk_sleep(sk) 0x%p\n", sk_sleep(sk));
|
||||
sk->sk_state_change(sk);
|
||||
as_indicate_complete:
|
||||
release_sock(sk);
|
||||
|
||||
+31
-31
@@ -49,14 +49,14 @@ static void svc_disconnect(struct atm_vcc *vcc)
|
||||
|
||||
pr_debug("%p\n", vcc);
|
||||
if (test_bit(ATM_VF_REGIS, &vcc->flags)) {
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_UNINTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_UNINTERRUPTIBLE);
|
||||
sigd_enq(vcc, as_close, NULL, NULL, NULL);
|
||||
while (!test_bit(ATM_VF_RELEASED, &vcc->flags) && sigd) {
|
||||
schedule();
|
||||
prepare_to_wait(sk->sk_sleep, &wait,
|
||||
prepare_to_wait(sk_sleep(sk), &wait,
|
||||
TASK_UNINTERRUPTIBLE);
|
||||
}
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
}
|
||||
/* beware - socket is still in use by atmsigd until the last
|
||||
as_indicate has been answered */
|
||||
@@ -125,13 +125,13 @@ static int svc_bind(struct socket *sock, struct sockaddr *sockaddr,
|
||||
}
|
||||
vcc->local = *addr;
|
||||
set_bit(ATM_VF_WAITING, &vcc->flags);
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_UNINTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_UNINTERRUPTIBLE);
|
||||
sigd_enq(vcc, as_bind, NULL, NULL, &vcc->local);
|
||||
while (test_bit(ATM_VF_WAITING, &vcc->flags) && sigd) {
|
||||
schedule();
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_UNINTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_UNINTERRUPTIBLE);
|
||||
}
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
clear_bit(ATM_VF_REGIS, &vcc->flags); /* doesn't count */
|
||||
if (!sigd) {
|
||||
error = -EUNATCH;
|
||||
@@ -201,10 +201,10 @@ static int svc_connect(struct socket *sock, struct sockaddr *sockaddr,
|
||||
}
|
||||
vcc->remote = *addr;
|
||||
set_bit(ATM_VF_WAITING, &vcc->flags);
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
|
||||
sigd_enq(vcc, as_connect, NULL, NULL, &vcc->remote);
|
||||
if (flags & O_NONBLOCK) {
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
sock->state = SS_CONNECTING;
|
||||
error = -EINPROGRESS;
|
||||
goto out;
|
||||
@@ -213,7 +213,7 @@ static int svc_connect(struct socket *sock, struct sockaddr *sockaddr,
|
||||
while (test_bit(ATM_VF_WAITING, &vcc->flags) && sigd) {
|
||||
schedule();
|
||||
if (!signal_pending(current)) {
|
||||
prepare_to_wait(sk->sk_sleep, &wait,
|
||||
prepare_to_wait(sk_sleep(sk), &wait,
|
||||
TASK_INTERRUPTIBLE);
|
||||
continue;
|
||||
}
|
||||
@@ -232,14 +232,14 @@ static int svc_connect(struct socket *sock, struct sockaddr *sockaddr,
|
||||
*/
|
||||
sigd_enq(vcc, as_close, NULL, NULL, NULL);
|
||||
while (test_bit(ATM_VF_WAITING, &vcc->flags) && sigd) {
|
||||
prepare_to_wait(sk->sk_sleep, &wait,
|
||||
prepare_to_wait(sk_sleep(sk), &wait,
|
||||
TASK_INTERRUPTIBLE);
|
||||
schedule();
|
||||
}
|
||||
if (!sk->sk_err)
|
||||
while (!test_bit(ATM_VF_RELEASED, &vcc->flags) &&
|
||||
sigd) {
|
||||
prepare_to_wait(sk->sk_sleep, &wait,
|
||||
prepare_to_wait(sk_sleep(sk), &wait,
|
||||
TASK_INTERRUPTIBLE);
|
||||
schedule();
|
||||
}
|
||||
@@ -250,7 +250,7 @@ static int svc_connect(struct socket *sock, struct sockaddr *sockaddr,
|
||||
error = -EINTR;
|
||||
break;
|
||||
}
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
if (error)
|
||||
goto out;
|
||||
if (!sigd) {
|
||||
@@ -302,13 +302,13 @@ static int svc_listen(struct socket *sock, int backlog)
|
||||
goto out;
|
||||
}
|
||||
set_bit(ATM_VF_WAITING, &vcc->flags);
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_UNINTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_UNINTERRUPTIBLE);
|
||||
sigd_enq(vcc, as_listen, NULL, NULL, &vcc->local);
|
||||
while (test_bit(ATM_VF_WAITING, &vcc->flags) && sigd) {
|
||||
schedule();
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_UNINTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_UNINTERRUPTIBLE);
|
||||
}
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
if (!sigd) {
|
||||
error = -EUNATCH;
|
||||
goto out;
|
||||
@@ -343,7 +343,7 @@ static int svc_accept(struct socket *sock, struct socket *newsock, int flags)
|
||||
while (1) {
|
||||
DEFINE_WAIT(wait);
|
||||
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
|
||||
while (!(skb = skb_dequeue(&sk->sk_receive_queue)) &&
|
||||
sigd) {
|
||||
if (test_bit(ATM_VF_RELEASED, &old_vcc->flags))
|
||||
@@ -363,10 +363,10 @@ static int svc_accept(struct socket *sock, struct socket *newsock, int flags)
|
||||
error = -ERESTARTSYS;
|
||||
break;
|
||||
}
|
||||
prepare_to_wait(sk->sk_sleep, &wait,
|
||||
prepare_to_wait(sk_sleep(sk), &wait,
|
||||
TASK_INTERRUPTIBLE);
|
||||
}
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
if (error)
|
||||
goto out;
|
||||
if (!skb) {
|
||||
@@ -392,17 +392,17 @@ static int svc_accept(struct socket *sock, struct socket *newsock, int flags)
|
||||
}
|
||||
/* wait should be short, so we ignore the non-blocking flag */
|
||||
set_bit(ATM_VF_WAITING, &new_vcc->flags);
|
||||
prepare_to_wait(sk_atm(new_vcc)->sk_sleep, &wait,
|
||||
prepare_to_wait(sk_sleep(sk_atm(new_vcc)), &wait,
|
||||
TASK_UNINTERRUPTIBLE);
|
||||
sigd_enq(new_vcc, as_accept, old_vcc, NULL, NULL);
|
||||
while (test_bit(ATM_VF_WAITING, &new_vcc->flags) && sigd) {
|
||||
release_sock(sk);
|
||||
schedule();
|
||||
lock_sock(sk);
|
||||
prepare_to_wait(sk_atm(new_vcc)->sk_sleep, &wait,
|
||||
prepare_to_wait(sk_sleep(sk_atm(new_vcc)), &wait,
|
||||
TASK_UNINTERRUPTIBLE);
|
||||
}
|
||||
finish_wait(sk_atm(new_vcc)->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk_atm(new_vcc)), &wait);
|
||||
if (!sigd) {
|
||||
error = -EUNATCH;
|
||||
goto out;
|
||||
@@ -438,14 +438,14 @@ int svc_change_qos(struct atm_vcc *vcc, struct atm_qos *qos)
|
||||
DEFINE_WAIT(wait);
|
||||
|
||||
set_bit(ATM_VF_WAITING, &vcc->flags);
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_UNINTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_UNINTERRUPTIBLE);
|
||||
sigd_enq2(vcc, as_modify, NULL, NULL, &vcc->local, qos, 0);
|
||||
while (test_bit(ATM_VF_WAITING, &vcc->flags) &&
|
||||
!test_bit(ATM_VF_RELEASED, &vcc->flags) && sigd) {
|
||||
schedule();
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_UNINTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_UNINTERRUPTIBLE);
|
||||
}
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
if (!sigd)
|
||||
return -EUNATCH;
|
||||
return -sk->sk_err;
|
||||
@@ -534,20 +534,20 @@ static int svc_addparty(struct socket *sock, struct sockaddr *sockaddr,
|
||||
|
||||
lock_sock(sk);
|
||||
set_bit(ATM_VF_WAITING, &vcc->flags);
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
|
||||
sigd_enq(vcc, as_addparty, NULL, NULL,
|
||||
(struct sockaddr_atmsvc *) sockaddr);
|
||||
if (flags & O_NONBLOCK) {
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
error = -EINPROGRESS;
|
||||
goto out;
|
||||
}
|
||||
pr_debug("added wait queue\n");
|
||||
while (test_bit(ATM_VF_WAITING, &vcc->flags) && sigd) {
|
||||
schedule();
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
|
||||
}
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
error = xchg(&sk->sk_err_soft, 0);
|
||||
out:
|
||||
release_sock(sk);
|
||||
@@ -563,13 +563,13 @@ static int svc_dropparty(struct socket *sock, int ep_ref)
|
||||
|
||||
lock_sock(sk);
|
||||
set_bit(ATM_VF_WAITING, &vcc->flags);
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
|
||||
sigd_enq2(vcc, as_dropparty, NULL, NULL, NULL, NULL, ep_ref);
|
||||
while (test_bit(ATM_VF_WAITING, &vcc->flags) && sigd) {
|
||||
schedule();
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
|
||||
}
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
if (!sigd) {
|
||||
error = -EUNATCH;
|
||||
goto out;
|
||||
|
||||
+4
-4
@@ -1281,7 +1281,7 @@ static int __must_check ax25_connect(struct socket *sock,
|
||||
DEFINE_WAIT(wait);
|
||||
|
||||
for (;;) {
|
||||
prepare_to_wait(sk->sk_sleep, &wait,
|
||||
prepare_to_wait(sk_sleep(sk), &wait,
|
||||
TASK_INTERRUPTIBLE);
|
||||
if (sk->sk_state != TCP_SYN_SENT)
|
||||
break;
|
||||
@@ -1294,7 +1294,7 @@ static int __must_check ax25_connect(struct socket *sock,
|
||||
err = -ERESTARTSYS;
|
||||
break;
|
||||
}
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
|
||||
if (err)
|
||||
goto out_release;
|
||||
@@ -1346,7 +1346,7 @@ static int ax25_accept(struct socket *sock, struct socket *newsock, int flags)
|
||||
* hooked into the SABM we saved
|
||||
*/
|
||||
for (;;) {
|
||||
prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
|
||||
skb = skb_dequeue(&sk->sk_receive_queue);
|
||||
if (skb)
|
||||
break;
|
||||
@@ -1364,7 +1364,7 @@ static int ax25_accept(struct socket *sock, struct socket *newsock, int flags)
|
||||
err = -ERESTARTSYS;
|
||||
break;
|
||||
}
|
||||
finish_wait(sk->sk_sleep, &wait);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
@@ -288,7 +288,7 @@ unsigned int bt_sock_poll(struct file * file, struct socket *sock, poll_table *w
|
||||
|
||||
BT_DBG("sock %p, sk %p", sock, sk);
|
||||
|
||||
poll_wait(file, sk->sk_sleep, wait);
|
||||
poll_wait(file, sk_sleep(sk), wait);
|
||||
|
||||
if (sk->sk_state == BT_LISTEN)
|
||||
return bt_accept_poll(sk);
|
||||
@@ -378,7 +378,7 @@ int bt_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
|
||||
|
||||
BT_DBG("sk %p", sk);
|
||||
|
||||
add_wait_queue(sk->sk_sleep, &wait);
|
||||
add_wait_queue(sk_sleep(sk), &wait);
|
||||
while (sk->sk_state != state) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
@@ -401,7 +401,7 @@ int bt_sock_wait_state(struct sock *sk, int state, unsigned long timeo)
|
||||
break;
|
||||
}
|
||||
set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(sk->sk_sleep, &wait);
|
||||
remove_wait_queue(sk_sleep(sk), &wait);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(bt_sock_wait_state);
|
||||
|
||||
@@ -474,7 +474,7 @@ static int bnep_session(void *arg)
|
||||
set_user_nice(current, -15);
|
||||
|
||||
init_waitqueue_entry(&wait, current);
|
||||
add_wait_queue(sk->sk_sleep, &wait);
|
||||
add_wait_queue(sk_sleep(sk), &wait);
|
||||
while (!atomic_read(&s->killed)) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
@@ -496,7 +496,7 @@ static int bnep_session(void *arg)
|
||||
schedule();
|
||||
}
|
||||
set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(sk->sk_sleep, &wait);
|
||||
remove_wait_queue(sk_sleep(sk), &wait);
|
||||
|
||||
/* Cleanup session */
|
||||
down_write(&bnep_session_sem);
|
||||
@@ -507,7 +507,7 @@ static int bnep_session(void *arg)
|
||||
/* Wakeup user-space polling for socket errors */
|
||||
s->sock->sk->sk_err = EUNATCH;
|
||||
|
||||
wake_up_interruptible(s->sock->sk->sk_sleep);
|
||||
wake_up_interruptible(sk_sleep(s->sock->sk));
|
||||
|
||||
/* Release the socket */
|
||||
fput(s->sock->file);
|
||||
@@ -638,7 +638,7 @@ int bnep_del_connection(struct bnep_conndel_req *req)
|
||||
|
||||
/* Kill session thread */
|
||||
atomic_inc(&s->killed);
|
||||
wake_up_interruptible(s->sock->sk->sk_sleep);
|
||||
wake_up_interruptible(sk_sleep(s->sock->sk));
|
||||
} else
|
||||
err = -ENOENT;
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ static void bnep_net_set_mc_list(struct net_device *dev)
|
||||
}
|
||||
|
||||
skb_queue_tail(&sk->sk_write_queue, skb);
|
||||
wake_up_interruptible(sk->sk_sleep);
|
||||
wake_up_interruptible(sk_sleep(sk));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -193,11 +193,11 @@ static netdev_tx_t bnep_net_xmit(struct sk_buff *skb,
|
||||
/*
|
||||
* We cannot send L2CAP packets from here as we are potentially in a bh.
|
||||
* So we have to queue them and wake up session thread which is sleeping
|
||||
* on the sk->sk_sleep.
|
||||
* on the sk_sleep(sk).
|
||||
*/
|
||||
dev->trans_start = jiffies;
|
||||
skb_queue_tail(&sk->sk_write_queue, skb);
|
||||
wake_up_interruptible(sk->sk_sleep);
|
||||
wake_up_interruptible(sk_sleep(sk));
|
||||
|
||||
if (skb_queue_len(&sk->sk_write_queue) >= BNEP_TX_QUEUE_LEN) {
|
||||
BT_DBG("tx queue is full");
|
||||
|
||||
@@ -125,7 +125,7 @@ static inline void cmtp_schedule(struct cmtp_session *session)
|
||||
{
|
||||
struct sock *sk = session->sock->sk;
|
||||
|
||||
wake_up_interruptible(sk->sk_sleep);
|
||||
wake_up_interruptible(sk_sleep(sk));
|
||||
}
|
||||
|
||||
/* CMTP init defines */
|
||||
|
||||
@@ -284,7 +284,7 @@ static int cmtp_session(void *arg)
|
||||
set_user_nice(current, -15);
|
||||
|
||||
init_waitqueue_entry(&wait, current);
|
||||
add_wait_queue(sk->sk_sleep, &wait);
|
||||
add_wait_queue(sk_sleep(sk), &wait);
|
||||
while (!atomic_read(&session->terminate)) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
@@ -301,7 +301,7 @@ static int cmtp_session(void *arg)
|
||||
schedule();
|
||||
}
|
||||
set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(sk->sk_sleep, &wait);
|
||||
remove_wait_queue(sk_sleep(sk), &wait);
|
||||
|
||||
down_write(&cmtp_session_sem);
|
||||
|
||||
|
||||
@@ -561,8 +561,8 @@ static int hidp_session(void *arg)
|
||||
|
||||
init_waitqueue_entry(&ctrl_wait, current);
|
||||
init_waitqueue_entry(&intr_wait, current);
|
||||
add_wait_queue(ctrl_sk->sk_sleep, &ctrl_wait);
|
||||
add_wait_queue(intr_sk->sk_sleep, &intr_wait);
|
||||
add_wait_queue(sk_sleep(ctrl_sk), &ctrl_wait);
|
||||
add_wait_queue(sk_sleep(intr_sk), &intr_wait);
|
||||
while (!atomic_read(&session->terminate)) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
@@ -584,8 +584,8 @@ static int hidp_session(void *arg)
|
||||
schedule();
|
||||
}
|
||||
set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(intr_sk->sk_sleep, &intr_wait);
|
||||
remove_wait_queue(ctrl_sk->sk_sleep, &ctrl_wait);
|
||||
remove_wait_queue(sk_sleep(intr_sk), &intr_wait);
|
||||
remove_wait_queue(sk_sleep(ctrl_sk), &ctrl_wait);
|
||||
|
||||
down_write(&hidp_session_sem);
|
||||
|
||||
@@ -609,7 +609,7 @@ static int hidp_session(void *arg)
|
||||
|
||||
fput(session->intr_sock->file);
|
||||
|
||||
wait_event_timeout(*(ctrl_sk->sk_sleep),
|
||||
wait_event_timeout(*(sk_sleep(ctrl_sk)),
|
||||
(ctrl_sk->sk_state == BT_CLOSED), msecs_to_jiffies(500));
|
||||
|
||||
fput(session->ctrl_sock->file);
|
||||
|
||||
@@ -164,8 +164,8 @@ static inline void hidp_schedule(struct hidp_session *session)
|
||||
struct sock *ctrl_sk = session->ctrl_sock->sk;
|
||||
struct sock *intr_sk = session->intr_sock->sk;
|
||||
|
||||
wake_up_interruptible(ctrl_sk->sk_sleep);
|
||||
wake_up_interruptible(intr_sk->sk_sleep);
|
||||
wake_up_interruptible(sk_sleep(ctrl_sk));
|
||||
wake_up_interruptible(sk_sleep(intr_sk));
|
||||
}
|
||||
|
||||
/* HIDP init defines */
|
||||
|
||||
@@ -1147,7 +1147,7 @@ static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int fl
|
||||
BT_DBG("sk %p timeo %ld", sk, timeo);
|
||||
|
||||
/* Wait for an incoming connection. (wake-one). */
|
||||
add_wait_queue_exclusive(sk->sk_sleep, &wait);
|
||||
add_wait_queue_exclusive(sk_sleep(sk), &wait);
|
||||
while (!(nsk = bt_accept_dequeue(sk, newsock))) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
if (!timeo) {
|
||||
@@ -1170,7 +1170,7 @@ static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int fl
|
||||
}
|
||||
}
|
||||
set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(sk->sk_sleep, &wait);
|
||||
remove_wait_queue(sk_sleep(sk), &wait);
|
||||
|
||||
if (err)
|
||||
goto done;
|
||||
|
||||
@@ -503,7 +503,7 @@ static int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int f
|
||||
BT_DBG("sk %p timeo %ld", sk, timeo);
|
||||
|
||||
/* Wait for an incoming connection. (wake-one). */
|
||||
add_wait_queue_exclusive(sk->sk_sleep, &wait);
|
||||
add_wait_queue_exclusive(sk_sleep(sk), &wait);
|
||||
while (!(nsk = bt_accept_dequeue(sk, newsock))) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
if (!timeo) {
|
||||
@@ -526,7 +526,7 @@ static int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int f
|
||||
}
|
||||
}
|
||||
set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(sk->sk_sleep, &wait);
|
||||
remove_wait_queue(sk_sleep(sk), &wait);
|
||||
|
||||
if (err)
|
||||
goto done;
|
||||
@@ -621,7 +621,7 @@ static long rfcomm_sock_data_wait(struct sock *sk, long timeo)
|
||||
{
|
||||
DECLARE_WAITQUEUE(wait, current);
|
||||
|
||||
add_wait_queue(sk->sk_sleep, &wait);
|
||||
add_wait_queue(sk_sleep(sk), &wait);
|
||||
for (;;) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
@@ -640,7 +640,7 @@ static long rfcomm_sock_data_wait(struct sock *sk, long timeo)
|
||||
}
|
||||
|
||||
__set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(sk->sk_sleep, &wait);
|
||||
remove_wait_queue(sk_sleep(sk), &wait);
|
||||
return timeo;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -567,7 +567,7 @@ static int sco_sock_accept(struct socket *sock, struct socket *newsock, int flag
|
||||
BT_DBG("sk %p timeo %ld", sk, timeo);
|
||||
|
||||
/* Wait for an incoming connection. (wake-one). */
|
||||
add_wait_queue_exclusive(sk->sk_sleep, &wait);
|
||||
add_wait_queue_exclusive(sk_sleep(sk), &wait);
|
||||
while (!(ch = bt_accept_dequeue(sk, newsock))) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
if (!timeo) {
|
||||
@@ -590,7 +590,7 @@ static int sco_sock_accept(struct socket *sock, struct socket *newsock, int flag
|
||||
}
|
||||
}
|
||||
set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(sk->sk_sleep, &wait);
|
||||
remove_wait_queue(sk_sleep(sk), &wait);
|
||||
|
||||
if (err)
|
||||
goto done;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user