Skip to content
  • Pablo Neira Ayuso's avatar
    netfilter: nf_tables: store transaction list locally while requesting module · ec7470b8
    Pablo Neira Ayuso authored
    
    
    This patch fixes a WARN_ON in nft_set_destroy() due to missing
    set reference count drop from the preparation phase. This is triggered
    by the module autoload path. Do not exercise the abort path from
    nft_request_module() while preparation phase cleaning up is still
    pending.
    
     WARNING: CPU: 3 PID: 3456 at net/netfilter/nf_tables_api.c:3740 nft_set_destroy+0x45/0x50 [nf_tables]
     [...]
     CPU: 3 PID: 3456 Comm: nft Not tainted 5.4.6-arch3-1 #1
     RIP: 0010:nft_set_destroy+0x45/0x50 [nf_tables]
     Code: e8 30 eb 83 c6 48 8b 85 80 00 00 00 48 8b b8 90 00 00 00 e8 dd 6b d7 c5 48 8b 7d 30 e8 24 dd eb c5 48 89 ef 5d e9 6b c6 e5 c5 <0f> 0b c3 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 8b 7f 10 e9 52
     RSP: 0018:ffffac4f43e53700 EFLAGS: 00010202
     RAX: 0000000000000001 RBX: ffff99d63a154d80 RCX: 0000000001f88e03
     RDX: 0000000001f88c03 RSI: ffff99d6560ef0c0 RDI: ffff99d63a101200
     RBP: ffff99d617721de0 R08: 0000000000000000 R09: 0000000000000318
     R10: 00000000f0000000 R11: 0000000000000001 R12: ffffffff880fabf0
     R13: dead000000000122 R14: dead000000000100 R15: ffff99d63a154d80
     FS:  00007ff3dbd5b740(0000) GS:ffff99d6560c0000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00001cb5de6a9000 CR3: 000000016eb6a004 CR4: 00000000001606e0
     Call Trace:
      __nf_tables_abort+0x3e3/0x6d0 [nf_tables]
      nft_request_module+0x6f/0x110 [nf_tables]
      nft_expr_type_request_module+0x28/0x50 [nf_tables]
      nf_tables_expr_parse+0x198/0x1f0 [nf_tables]
      nft_expr_init+0x3b/0xf0 [nf_tables]
      nft_dynset_init+0x1e2/0x410 [nf_tables]
      nf_tables_newrule+0x30a/0x930 [nf_tables]
      nfnetlink_rcv_batch+0x2a0/0x640 [nfnetlink]
      nfnetlink_rcv+0x125/0x171 [nfnetlink]
      netlink_unicast+0x179/0x210
      netlink_sendmsg+0x208/0x3d0
      sock_sendmsg+0x5e/0x60
      ____sys_sendmsg+0x21b/0x290
    
    Update comment on the code to describe the new behaviour.
    
    Reported-by: default avatarMarco Oliverio <marco.oliverio@tanaza.com>
    Fixes: 452238e8
    
     ("netfilter: nf_tables: add and use helper for module autoload")
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    ec7470b8