Skip to content

Commit 9cd3e07

Browse files
edumazetdavem330
authored andcommitted
net: rename SOCK_ASYNC_NOSPACE and SOCK_ASYNC_WAITDATA
This patch is a cleanup to make following patch easier to review. Goal is to move SOCK_ASYNC_NOSPACE and SOCK_ASYNC_WAITDATA from (struct socket)->flags to a (struct socket_wq)->flags to benefit from RCU protection in sock_wake_async() To ease backports, we rename both constants. Two new helpers, sk_set_bit(int nr, struct sock *sk) and sk_clear_bit(int net, struct sock *sk) are added so that following patch can change their implementation. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 5738a09 commit 9cd3e07

22 files changed

Lines changed: 60 additions & 52 deletions

File tree

crypto/algif_aead.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ static int aead_wait_for_data(struct sock *sk, unsigned flags)
125125
if (flags & MSG_DONTWAIT)
126126
return -EAGAIN;
127127

128-
set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
128+
sk_set_bit(SOCKWQ_ASYNC_WAITDATA, sk);
129129

130130
for (;;) {
131131
if (signal_pending(current))
@@ -139,7 +139,7 @@ static int aead_wait_for_data(struct sock *sk, unsigned flags)
139139
}
140140
finish_wait(sk_sleep(sk), &wait);
141141

142-
clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
142+
sk_clear_bit(SOCKWQ_ASYNC_WAITDATA, sk);
143143

144144
return err;
145145
}

crypto/algif_skcipher.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ static int skcipher_wait_for_wmem(struct sock *sk, unsigned flags)
212212
if (flags & MSG_DONTWAIT)
213213
return -EAGAIN;
214214

215-
set_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags);
215+
sk_set_bit(SOCKWQ_ASYNC_NOSPACE, sk);
216216

217217
for (;;) {
218218
if (signal_pending(current))
@@ -258,7 +258,7 @@ static int skcipher_wait_for_data(struct sock *sk, unsigned flags)
258258
return -EAGAIN;
259259
}
260260

261-
set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
261+
sk_set_bit(SOCKWQ_ASYNC_WAITDATA, sk);
262262

263263
for (;;) {
264264
if (signal_pending(current))
@@ -272,7 +272,7 @@ static int skcipher_wait_for_data(struct sock *sk, unsigned flags)
272272
}
273273
finish_wait(sk_sleep(sk), &wait);
274274

275-
clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
275+
sk_clear_bit(SOCKWQ_ASYNC_WAITDATA, sk);
276276

277277
return err;
278278
}

drivers/net/macvtap.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ static void macvtap_sock_write_space(struct sock *sk)
498498
wait_queue_head_t *wqueue;
499499

500500
if (!sock_writeable(sk) ||
501-
!test_and_clear_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags))
501+
!test_and_clear_bit(SOCKWQ_ASYNC_NOSPACE, &sk->sk_socket->flags))
502502
return;
503503

504504
wqueue = sk_sleep(sk);
@@ -585,7 +585,7 @@ static unsigned int macvtap_poll(struct file *file, poll_table * wait)
585585
mask |= POLLIN | POLLRDNORM;
586586

587587
if (sock_writeable(&q->sk) ||
588-
(!test_and_set_bit(SOCK_ASYNC_NOSPACE, &q->sock.flags) &&
588+
(!test_and_set_bit(SOCKWQ_ASYNC_NOSPACE, &q->sock.flags) &&
589589
sock_writeable(&q->sk)))
590590
mask |= POLLOUT | POLLWRNORM;
591591

drivers/net/tun.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1040,7 +1040,7 @@ static unsigned int tun_chr_poll(struct file *file, poll_table *wait)
10401040
mask |= POLLIN | POLLRDNORM;
10411041

10421042
if (sock_writeable(sk) ||
1043-
(!test_and_set_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags) &&
1043+
(!test_and_set_bit(SOCKWQ_ASYNC_NOSPACE, &sk->sk_socket->flags) &&
10441044
sock_writeable(sk)))
10451045
mask |= POLLOUT | POLLWRNORM;
10461046

@@ -1488,7 +1488,7 @@ static void tun_sock_write_space(struct sock *sk)
14881488
if (!sock_writeable(sk))
14891489
return;
14901490

1491-
if (!test_and_clear_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags))
1491+
if (!test_and_clear_bit(SOCKWQ_ASYNC_NOSPACE, &sk->sk_socket->flags))
14921492
return;
14931493

14941494
wqueue = sk_sleep(sk);

fs/dlm/lowcomms.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ static void lowcomms_write_space(struct sock *sk)
421421

422422
if (test_and_clear_bit(CF_APP_LIMITED, &con->flags)) {
423423
con->sock->sk->sk_write_pending--;
424-
clear_bit(SOCK_ASYNC_NOSPACE, &con->sock->flags);
424+
clear_bit(SOCKWQ_ASYNC_NOSPACE, &con->sock->flags);
425425
}
426426

427427
if (!test_and_set_bit(CF_WRITE_PENDING, &con->flags))
@@ -1448,7 +1448,7 @@ static void send_to_sock(struct connection *con)
14481448
msg_flags);
14491449
if (ret == -EAGAIN || ret == 0) {
14501450
if (ret == -EAGAIN &&
1451-
test_bit(SOCK_ASYNC_NOSPACE, &con->sock->flags) &&
1451+
test_bit(SOCKWQ_ASYNC_NOSPACE, &con->sock->flags) &&
14521452
!test_and_set_bit(CF_APP_LIMITED, &con->flags)) {
14531453
/* Notify TCP that we're limited by the
14541454
* application window size.

include/linux/net.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ struct inode;
3434
struct file;
3535
struct net;
3636

37-
#define SOCK_ASYNC_NOSPACE 0
38-
#define SOCK_ASYNC_WAITDATA 1
37+
#define SOCKWQ_ASYNC_NOSPACE 0
38+
#define SOCKWQ_ASYNC_WAITDATA 1
3939
#define SOCK_NOSPACE 2
4040
#define SOCK_PASSCRED 3
4141
#define SOCK_PASSSEC 4
@@ -96,7 +96,7 @@ struct socket_wq {
9696
* struct socket - general BSD socket
9797
* @state: socket state (%SS_CONNECTED, etc)
9898
* @type: socket type (%SOCK_STREAM, etc)
99-
* @flags: socket flags (%SOCK_ASYNC_NOSPACE, etc)
99+
* @flags: socket flags (%SOCK_NOSPACE, etc)
100100
* @ops: protocol specific socket operations
101101
* @file: File back pointer for gc
102102
* @sk: internal networking protocol agnostic socket representation

include/net/sock.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2005,6 +2005,16 @@ static inline unsigned long sock_wspace(struct sock *sk)
20052005
return amt;
20062006
}
20072007

2008+
static inline void sk_set_bit(int nr, struct sock *sk)
2009+
{
2010+
set_bit(nr, &sk->sk_socket->flags);
2011+
}
2012+
2013+
static inline void sk_clear_bit(int nr, struct sock *sk)
2014+
{
2015+
clear_bit(nr, &sk->sk_socket->flags);
2016+
}
2017+
20082018
static inline void sk_wake_async(struct sock *sk, int how, int band)
20092019
{
20102020
if (sock_flag(sk, SOCK_FASYNC))

net/bluetooth/af_bluetooth.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,11 +271,11 @@ static long bt_sock_data_wait(struct sock *sk, long timeo)
271271
if (signal_pending(current) || !timeo)
272272
break;
273273

274-
set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
274+
sk_set_bit(SOCKWQ_ASYNC_WAITDATA, sk);
275275
release_sock(sk);
276276
timeo = schedule_timeout(timeo);
277277
lock_sock(sk);
278-
clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
278+
sk_clear_bit(SOCKWQ_ASYNC_WAITDATA, sk);
279279
}
280280

281281
__set_current_state(TASK_RUNNING);
@@ -441,7 +441,7 @@ unsigned int bt_sock_poll(struct file *file, struct socket *sock,
441441
if (!test_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags) && sock_writeable(sk))
442442
mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
443443
else
444-
set_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags);
444+
sk_set_bit(SOCKWQ_ASYNC_NOSPACE, sk);
445445

446446
return mask;
447447
}

net/caif/caif_socket.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,15 +323,15 @@ static long caif_stream_data_wait(struct sock *sk, long timeo)
323323
!timeo)
324324
break;
325325

326-
set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
326+
sk_set_bit(SOCKWQ_ASYNC_WAITDATA, sk);
327327
release_sock(sk);
328328
timeo = schedule_timeout(timeo);
329329
lock_sock(sk);
330330

331331
if (sock_flag(sk, SOCK_DEAD))
332332
break;
333333

334-
clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
334+
sk_clear_bit(SOCKWQ_ASYNC_WAITDATA, sk);
335335
}
336336

337337
finish_wait(sk_sleep(sk), &wait);

net/core/datagram.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -785,7 +785,7 @@ unsigned int datagram_poll(struct file *file, struct socket *sock,
785785
if (sock_writeable(sk))
786786
mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
787787
else
788-
set_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags);
788+
sk_set_bit(SOCKWQ_ASYNC_NOSPACE, sk);
789789

790790
return mask;
791791
}

0 commit comments

Comments
 (0)