diff options
author | Alex Shi <alex.shi@linaro.org> | 2016-01-14 22:26:03 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2016-01-14 22:26:03 +0800 |
commit | 8fa6d2e1fe937af9dbacb5aad8c43dbb67466fa0 (patch) | |
tree | 53b1cbcaec14e50f491e1cb1f20106c7a15c70e8 /include/net/sock.h | |
parent | 74bc3fe5f5fbb50d63fd002ce240cc7bca236db1 (diff) | |
parent | f90ae1b62bedd8b57966a7be68855f2d43170db6 (diff) |
Merge branch 'linux-linaro-lsk-v3.18' into linux-linaro-lsk-v3.18-androidlsk-v3.18-16.01-android
Diffstat (limited to 'include/net/sock.h')
-rw-r--r-- | include/net/sock.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/net/sock.h b/include/net/sock.h index 4406dbe491f0..a098ce3cd242 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -819,6 +819,14 @@ static inline __must_check int sk_add_backlog(struct sock *sk, struct sk_buff *s if (sk_rcvqueues_full(sk, limit)) return -ENOBUFS; + /* + * If the skb was allocated from pfmemalloc reserves, only + * allow SOCK_MEMALLOC sockets to use it as this socket is + * helping free memory + */ + if (skb_pfmemalloc(skb) && !sock_flag(sk, SOCK_MEMALLOC)) + return -ENOMEM; + __sk_add_backlog(sk, skb); sk->sk_backlog.len += skb->truesize; return 0; |