diff options
| author | Dmitry Shmidt <dimitrysh@google.com> | 2016-10-28 10:44:19 -0700 |
|---|---|---|
| committer | Dmitry Shmidt <dimitrysh@google.com> | 2016-10-28 10:44:19 -0700 |
| commit | c302df26cb5bf9f60633785cf5b5ed162a138dfe (patch) | |
| tree | d7e1f042a5a478a616010ff42e27fbf1547eca8e /net/sunrpc/xprtsock.c | |
| parent | a979feb9e9f1827463f61ad241b198aa7dc27cd3 (diff) | |
| parent | c843445f19f4e6f05b32125d7556958f98033999 (diff) | |
Merge tag 'v4.4.28' into android-4.4.y
This is the 4.4.28 stable release
Diffstat (limited to 'net/sunrpc/xprtsock.c')
| -rw-r--r-- | net/sunrpc/xprtsock.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 1ba417207465..27b6f55fa43a 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -474,7 +474,16 @@ static int xs_nospace(struct rpc_task *task) spin_unlock_bh(&xprt->transport_lock); /* Race breaker in case memory is freed before above code is called */ - sk->sk_write_space(sk); + if (ret == -EAGAIN) { + struct socket_wq *wq; + + rcu_read_lock(); + wq = rcu_dereference(sk->sk_wq); + set_bit(SOCKWQ_ASYNC_NOSPACE, &wq->flags); + rcu_read_unlock(); + + sk->sk_write_space(sk); + } return ret; } |
