• F
    netfilter: nf_nat: fix race when unloading protocol modules · c2d421e1
    Florian Westphal 提交于
    following oops was reported:
    RIP: 0010:[<ffffffffa03227f2>]  [<ffffffffa03227f2>] nf_nat_cleanup_conntrack+0x42/0x70 [nf_nat]
    RSP: 0018:ffff880202c63d40  EFLAGS: 00010246
    RAX: 0000000000000000 RBX: ffff8801ac7bec28 RCX: ffff8801d0eedbe0
    RDX: dead000000200200 RSI: 0000000000000011 RDI: ffffffffa03265b8
    [..]
    Call Trace:
     [..]
     [<ffffffffa02febed>] destroy_conntrack+0xbd/0x110 [nf_conntrack]
    
    Happens when a conntrack timeout expires right after first part
    of the nat cleanup has completed (bysrc hash removal), but before
    part 2 has completed (re-initialization of nat area).
    
    [ destroy callback tries to delete bysrc again ]
    
    Patrick suggested to just remove the affected conntracks -- the
    connections won't work properly anyway without nat transformation.
    
    So, lets do that.
    Reported-by: NCAI Qian <caiqian@redhat.com>
    Cc: Patrick McHardy <kaber@trash.net>
    Signed-off-by: NFlorian Westphal <fw@strlen.de>
    Acked-by: NPatrick McHardy <kaber@trash.net>
    Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
    c2d421e1
nf_nat_core.c 22.4 KB