Contents of /trunk/kernel-magellan/patches-3.17/0105-3.17.6-all-fixes.patch
Parent Directory | Revision Log
Revision 2536 -
(show annotations)
(download)
Fri Jan 30 10:05:33 2015 UTC (9 years, 7 months ago) by niro
File size: 1623 byte(s)
Fri Jan 30 10:05:33 2015 UTC (9 years, 7 months ago) by niro
File size: 1623 byte(s)
-linux-3.17.6
1 | diff --git a/Makefile b/Makefile |
2 | index 42585f6a819a..bb43e9e6a79c 100644 |
3 | --- a/Makefile |
4 | +++ b/Makefile |
5 | @@ -1,6 +1,6 @@ |
6 | VERSION = 3 |
7 | PATCHLEVEL = 17 |
8 | -SUBLEVEL = 5 |
9 | +SUBLEVEL = 6 |
10 | EXTRAVERSION = |
11 | NAME = Shuffling Zombie Juror |
12 | |
13 | diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c |
14 | index ec94ba94079f..de88c4ab5146 100644 |
15 | --- a/net/netfilter/nf_conntrack_core.c |
16 | +++ b/net/netfilter/nf_conntrack_core.c |
17 | @@ -611,16 +611,12 @@ __nf_conntrack_confirm(struct sk_buff *skb) |
18 | */ |
19 | NF_CT_ASSERT(!nf_ct_is_confirmed(ct)); |
20 | pr_debug("Confirming conntrack %p\n", ct); |
21 | - |
22 | - /* We have to check the DYING flag after unlink to prevent |
23 | - * a race against nf_ct_get_next_corpse() possibly called from |
24 | - * user context, else we insert an already 'dead' hash, blocking |
25 | - * further use of that particular connection -JM. |
26 | - */ |
27 | - nf_ct_del_from_dying_or_unconfirmed_list(ct); |
28 | + /* We have to check the DYING flag inside the lock to prevent |
29 | + a race against nf_ct_get_next_corpse() possibly called from |
30 | + user context, else we insert an already 'dead' hash, blocking |
31 | + further use of that particular connection -JM */ |
32 | |
33 | if (unlikely(nf_ct_is_dying(ct))) { |
34 | - nf_ct_add_to_dying_list(ct); |
35 | nf_conntrack_double_unlock(hash, reply_hash); |
36 | local_bh_enable(); |
37 | return NF_ACCEPT; |
38 | @@ -640,6 +636,8 @@ __nf_conntrack_confirm(struct sk_buff *skb) |
39 | zone == nf_ct_zone(nf_ct_tuplehash_to_ctrack(h))) |
40 | goto out; |
41 | |
42 | + nf_ct_del_from_dying_or_unconfirmed_list(ct); |
43 | + |
44 | /* Timer relative to confirmation time, not original |
45 | setting time, otherwise we'd get timer wrap in |
46 | weird delay cases. */ |