]>
Commit | Line | Data |
---|---|---|
2cb7cef9 BS |
1 | From: Peter Zijlstra <a.p.zijlstra@chello.nl> |
2 | Subject: netvm: filter emergency skbs. | |
3 | Patch-mainline: No | |
4 | References: FATE#303834 | |
5 | ||
6 | Toss all emergency packets not for a SOCK_MEMALLOC socket. This ensures our | |
7 | precious memory reserve doesn't get stuck waiting for user-space. | |
8 | ||
9 | The correctness of this approach relies on the fact that networks must be | |
10 | assumed lossy. | |
11 | ||
12 | Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> | |
13 | Acked-by: Neil Brown <neilb@suse.de> | |
14 | Acked-by: Suresh Jayaraman <sjayaraman@suse.de> | |
15 | ||
16 | --- | |
17 | net/core/filter.c | 3 +++ | |
18 | 1 file changed, 3 insertions(+) | |
19 | ||
20 | Index: linux-2.6/net/core/filter.c | |
21 | =================================================================== | |
22 | --- linux-2.6.orig/net/core/filter.c | |
23 | +++ linux-2.6/net/core/filter.c | |
24 | @@ -81,6 +81,9 @@ int sk_filter(struct sock *sk, struct sk | |
25 | int err; | |
26 | struct sk_filter *filter; | |
27 | ||
28 | + if (skb_emergency(skb) && !sk_has_memalloc(sk)) | |
29 | + return -ENOMEM; | |
30 | + | |
31 | err = security_sock_rcv_skb(sk, skb); | |
32 | if (err) | |
33 | return err; |