diff options
author | Christoph Hellwig <hch@lst.de> | 2018-07-30 09:42:13 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-07-30 09:10:25 -0700 |
commit | a331de3bf0e66ab2437fc8c5b99bd3c0d9da3088 (patch) | |
tree | 307bcd2465bd96bc79cecf60abf50630538117a8 /net/socket.c | |
parent | f641f13b992979b97e595b761a9ba1a64fed7c4e (diff) | |
download | lwn-a331de3bf0e66ab2437fc8c5b99bd3c0d9da3088.tar.gz lwn-a331de3bf0e66ab2437fc8c5b99bd3c0d9da3088.zip |
net: remove sock_poll_busy_flag
Fold it into the only caller to make the code simpler and easier to read.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/socket.c')
-rw-r--r-- | net/socket.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/net/socket.c b/net/socket.c index 674434127b3a..5b7df6695f4f 100644 --- a/net/socket.c +++ b/net/socket.c @@ -1130,15 +1130,21 @@ EXPORT_SYMBOL(sock_create_lite); static __poll_t sock_poll(struct file *file, poll_table *wait) { struct socket *sock = file->private_data; - __poll_t events = poll_requested_events(wait); + __poll_t events = poll_requested_events(wait), flag = 0; if (!sock->ops->poll) return 0; - /* poll once if requested by the syscall */ - if (sk_can_busy_loop(sock->sk) && (events & POLL_BUSY_LOOP)) - sk_busy_loop(sock->sk, 1); - return sock->ops->poll(file, sock, wait) | sock_poll_busy_flag(sock); + if (sk_can_busy_loop(sock->sk)) { + /* poll once if requested by the syscall */ + if (events & POLL_BUSY_LOOP) + sk_busy_loop(sock->sk, 1); + + /* if this socket can poll_ll, tell the system call */ + flag = POLL_BUSY_LOOP; + } + + return sock->ops->poll(file, sock, wait) | flag; } static int sock_mmap(struct file *file, struct vm_area_struct *vma) |