1. 07 May, 2021 14 commits
  2. 06 May, 2021 6 commits
  3. 05 May, 2021 9 commits
    • Pablo Neira Ayuso's avatar
      netfilter: nftables: Fix a memleak from userdata error path in new objects · 85dfd816
      Pablo Neira Ayuso authored
      Release object name if userdata allocation fails.
      
      Fixes: b131c964 ("netfilter: nf_tables: add userdata support for nft_object")
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      85dfd816
    • Pablo Neira Ayuso's avatar
      netfilter: remove BUG_ON() after skb_header_pointer() · 198ad973
      Pablo Neira Ayuso authored
      Several conntrack helpers and the TCP tracker assume that
      skb_header_pointer() never fails based on upfront header validation.
      Even if this should not ever happen, BUG_ON() is a too drastic measure,
      remove them.
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      198ad973
    • Pablo Neira Ayuso's avatar
      netfilter: nfnetlink_osf: Fix a missing skb_header_pointer() NULL check · 5e024c32
      Pablo Neira Ayuso authored
      Do not assume that the tcph->doff field is correct when parsing for TCP
      options, skb_header_pointer() might fail to fetch these bits.
      
      Fixes: 11eeef41 ("netfilter: passive OS fingerprint xtables match")
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      5e024c32
    • Cong Wang's avatar
      smc: disallow TCP_ULP in smc_setsockopt() · 86214366
      Cong Wang authored
      syzbot is able to setup kTLS on an SMC socket which coincidentally
      uses sk_user_data too. Later, kTLS treats it as psock so triggers a
      refcnt warning. The root cause is that smc_setsockopt() simply calls
      TCP setsockopt() which includes TCP_ULP. I do not think it makes
      sense to setup kTLS on top of SMC sockets, so we should just disallow
      this setup.
      
      It is hard to find a commit to blame, but we can apply this patch
      since the beginning of TCP_ULP.
      
      Reported-and-tested-by: syzbot+b54a1ce86ba4a623b7f0@syzkaller.appspotmail.com
      Fixes: 734942cc ("tcp: ULP infrastructure")
      Cc: John Fastabend <john.fastabend@gmail.com>
      Signed-off-by: default avatarKarsten Graul <kgraul@linux.ibm.com>
      Signed-off-by: default avatarCong Wang <cong.wang@bytedance.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      86214366
    • Maciej Żenczykowski's avatar
      net: fix nla_strcmp to handle more then one trailing null character · 2c16db6c
      Maciej Żenczykowski authored
      Android userspace has been using TCA_KIND with a char[IFNAMESIZ]
      many-null-terminated buffer containing the string 'bpf'.
      
      This works on 4.19 and ceases to work on 5.10.
      
      I'm not entirely sure what fixes tag to use, but I think the issue
      was likely introduced in the below mentioned 5.4 commit.
      Reported-by: default avatarNucca Chen <nuccachen@google.com>
      Cc: Cong Wang <xiyou.wangcong@gmail.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Jakub Kicinski <jakub.kicinski@netronome.com>
      Cc: Jamal Hadi Salim <jhs@mojatatu.com>
      Cc: Jiri Pirko <jiri@mellanox.com>
      Cc: Jiri Pirko <jiri@resnulli.us>
      Fixes: 62794fc4 ("net_sched: add max len check for TCA_KIND")
      Change-Id: I66dc281f165a2858fc29a44869a270a2d698a82b
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2c16db6c
    • Íñigo Huguet's avatar
      net:CXGB4: fix leak if sk_buff is not used · 52bfcdd8
      Íñigo Huguet authored
      An sk_buff is allocated to send a flow control message, but it's not
      sent in all cases: in case the state is not appropiate to send it or if
      it can't be enqueued.
      
      In the first of these 2 cases, the sk_buff was discarded but not freed,
      producing a memory leak.
      Signed-off-by: default avatarÍñigo Huguet <ihuguet@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      52bfcdd8
    • Sean Gloumeau's avatar
      Fix spelling error from "eleminate" to "eliminate" · f941d686
      Sean Gloumeau authored
      Spelling error "eleminate" amended to "eliminate".
      Signed-off-by: default avatarSean Gloumeau <sajgloumeau@gmail.com>
      Reviewed-by: default avatarKieran Bingham <kieran.bingham+renesas@ideasonboard.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f941d686
    • Fernando Fernandez Mancera's avatar
      ethtool: fix missing NLM_F_MULTI flag when dumping · cf754ae3
      Fernando Fernandez Mancera authored
      When dumping the ethtool information from all the interfaces, the
      netlink reply should contain the NLM_F_MULTI flag. This flag allows
      userspace tools to identify that multiple messages are expected.
      
      Link: https://bugzilla.redhat.com/1953847
      Fixes: 365f9ae4 ("ethtool: fix genlmsg_put() failure handling in ethnl_default_dumpit()")
      Signed-off-by: default avatarFernando Fernandez Mancera <ffmancera@riseup.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cf754ae3
    • Eric Dumazet's avatar
      netfilter: nfnetlink: add a missing rcu_read_unlock() · 7072a355
      Eric Dumazet authored
      Reported by syzbot :
      BUG: sleeping function called from invalid context at include/linux/sched/mm.h:201
      in_atomic(): 0, irqs_disabled(): 0, non_block: 0, pid: 26899, name: syz-executor.5
      1 lock held by syz-executor.5/26899:
       #0: ffffffff8bf797a0 (rcu_read_lock){....}-{1:2}, at: nfnetlink_get_subsys net/netfilter/nfnetlink.c:148 [inline]
       #0: ffffffff8bf797a0 (rcu_read_lock){....}-{1:2}, at: nfnetlink_rcv_msg+0x1da/0x1300 net/netfilter/nfnetlink.c:226
      Preemption disabled at:
      [<ffffffff8917799e>] preempt_schedule_irq+0x3e/0x90 kernel/sched/core.c:5533
      CPU: 1 PID: 26899 Comm: syz-executor.5 Not tainted 5.12.0-next-20210504-syzkaller #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Call Trace:
       __dump_stack lib/dump_stack.c:79 [inline]
       dump_stack+0x141/0x1d7 lib/dump_stack.c:120
       ___might_sleep.cold+0x1f1/0x237 kernel/sched/core.c:8338
       might_alloc include/linux/sched/mm.h:201 [inline]
       slab_pre_alloc_hook mm/slab.h:500 [inline]
       slab_alloc_node mm/slub.c:2845 [inline]
       kmem_cache_alloc_node+0x33d/0x3e0 mm/slub.c:2960
       __alloc_skb+0x20b/0x340 net/core/skbuff.c:413
       alloc_skb include/linux/skbuff.h:1107 [inline]
       nlmsg_new include/net/netlink.h:953 [inline]
       netlink_ack+0x1ed/0xaa0 net/netlink/af_netlink.c:2437
       netlink_rcv_skb+0x33d/0x420 net/netlink/af_netlink.c:2508
       nfnetlink_rcv+0x1ac/0x420 net/netfilter/nfnetlink.c:650
       netlink_unicast_kernel net/netlink/af_netlink.c:1312 [inline]
       netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1338
       netlink_sendmsg+0x856/0xd90 net/netlink/af_netlink.c:1927
       sock_sendmsg_nosec net/socket.c:654 [inline]
       sock_sendmsg+0xcf/0x120 net/socket.c:674
       ____sys_sendmsg+0x6e8/0x810 net/socket.c:2350
       ___sys_sendmsg+0xf3/0x170 net/socket.c:2404
       __sys_sendmsg+0xe5/0x1b0 net/socket.c:2433
       do_syscall_64+0x3a/0xb0 arch/x86/entry/common.c:47
       entry_SYSCALL_64_after_hwframe+0x44/0xae
      RIP: 0033:0x4665f9
      Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48
      RSP: 002b:00007fa8a03ee188 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
      RAX: ffffffffffffffda RBX: 000000000056bf60 RCX: 00000000004665f9
      RDX: 0000000000000000 RSI: 0000000020000480 RDI: 0000000000000004
      RBP: 00000000004bfce1 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 000000000056bf60
      R13: 00007fffe864480f R14: 00007fa8a03ee300 R15: 0000000000022000
      
      ================================================
      WARNING: lock held when returning to user space!
      5.12.0-next-20210504-syzkaller #0 Tainted: G        W
      ------------------------------------------------
      syz-executor.5/26899 is leaving the kernel with locks still held!
      1 lock held by syz-executor.5/26899:
       #0: ffffffff8bf797a0 (rcu_read_lock){....}-{1:2}, at: nfnetlink_get_subsys net/netfilter/nfnetlink.c:148 [inline]
       #0: ffffffff8bf797a0 (rcu_read_lock){....}-{1:2}, at: nfnetlink_rcv_msg+0x1da/0x1300 net/netfilter/nfnetlink.c:226
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 26899 at kernel/rcu/tree_plugin.h:359 rcu_note_context_switch+0xfd/0x16e0 kernel/rcu/tree_plugin.h:359
      Modules linked in:
      CPU: 0 PID: 26899 Comm: syz-executor.5 Tainted: G        W         5.12.0-next-20210504-syzkaller #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      RIP: 0010:rcu_note_context_switch+0xfd/0x16e0 kernel/rcu/tree_plugin.h:359
      Code: 48 89 fa 48 c1 ea 03 0f b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 2e 0d 00 00 8b bd cc 03 00 00 85 ff 7e 02 <0f> 0b 65 48 8b 2c 25 00 f0 01 00 48 8d bd cc 03 00 00 48 b8 00 00
      RSP: 0000:ffffc90002fffdb0 EFLAGS: 00010002
      RAX: 0000000000000007 RBX: ffff8880b9c36080 RCX: ffffffff8dc99bac
      RDX: 0000000000000000 RSI: 0000000000000008 RDI: 0000000000000001
      RBP: ffff88808b9d1c80 R08: 0000000000000000 R09: ffffffff8dc96917
      R10: fffffbfff1b92d22 R11: 0000000000000000 R12: 0000000000000000
      R13: ffff88808b9d1c80 R14: ffff88808b9d1c80 R15: ffffc90002ff8000
      FS:  00007fa8a03ee700(0000) GS:ffff8880b9c00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f09896ed000 CR3: 0000000032070000 CR4: 00000000001526f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       __schedule+0x214/0x23e0 kernel/sched/core.c:5044
       schedule+0xcf/0x270 kernel/sched/core.c:5226
       exit_to_user_mode_loop kernel/entry/common.c:162 [inline]
       exit_to_user_mode_prepare+0x13e/0x280 kernel/entry/common.c:208
       irqentry_exit_to_user_mode+0x5/0x40 kernel/entry/common.c:314
       asm_sysvec_reschedule_ipi+0x12/0x20 arch/x86/include/asm/idtentry.h:637
      RIP: 0033:0x4665f9
      
      Fixes: 50f2db9e ("netfilter: nfnetlink: consolidate callback types")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      7072a355
  4. 04 May, 2021 4 commits
    • Ramesh Babu B's avatar
      net: stmmac: Clear receive all(RA) bit when promiscuous mode is off · 4c7a9428
      Ramesh Babu B authored
      In promiscuous mode Receive All bit is set in GMAC packet filter register,
      but outside promiscuous mode Receive All bit is not cleared,
      which resulted in all network packets are received when toggle (ON/OFF)
      the promiscuous mode.
      
      Fixes: e0f9956a ("net: stmmac: Add option for VLAN filter fail queue enable")
      Signed-off-by: default avatarRamesh Babu B <ramesh.babu.b@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4c7a9428
    • Or Cohen's avatar
      net/nfc: fix use-after-free llcp_sock_bind/connect · c61760e6
      Or Cohen authored
      Commits 8a4cd82d ("nfc: fix refcount leak in llcp_sock_connect()")
      and c33b1cc6 ("nfc: fix refcount leak in llcp_sock_bind()")
      fixed a refcount leak bug in bind/connect but introduced a
      use-after-free if the same local is assigned to 2 different sockets.
      
      This can be triggered by the following simple program:
          int sock1 = socket( AF_NFC, SOCK_STREAM, NFC_SOCKPROTO_LLCP );
          int sock2 = socket( AF_NFC, SOCK_STREAM, NFC_SOCKPROTO_LLCP );
          memset( &addr, 0, sizeof(struct sockaddr_nfc_llcp) );
          addr.sa_family = AF_NFC;
          addr.nfc_protocol = NFC_PROTO_NFC_DEP;
          bind( sock1, (struct sockaddr*) &addr, sizeof(struct sockaddr_nfc_llcp) )
          bind( sock2, (struct sockaddr*) &addr, sizeof(struct sockaddr_nfc_llcp) )
          close(sock1);
          close(sock2);
      
      Fix this by assigning NULL to llcp_sock->local after calling
      nfc_llcp_local_put.
      
      This addresses CVE-2021-23134.
      Reported-by: default avatarOr Cohen <orcohen@paloaltonetworks.com>
      Reported-by: default avatarNadav Markus <nmarkus@paloaltonetworks.com>
      Fixes: c33b1cc6 ("nfc: fix refcount leak in llcp_sock_bind()")
      Signed-off-by: default avatarOr Cohen <orcohen@paloaltonetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c61760e6
    • Jonathon Reinhart's avatar
      net: Only allow init netns to set default tcp cong to a restricted algo · 8d432592
      Jonathon Reinhart authored
      tcp_set_default_congestion_control() is netns-safe in that it writes
      to &net->ipv4.tcp_congestion_control, but it also sets
      ca->flags |= TCP_CONG_NON_RESTRICTED which is not namespaced.
      This has the unintended side-effect of changing the global
      net.ipv4.tcp_allowed_congestion_control sysctl, despite the fact that it
      is read-only: 97684f09 ("net: Make tcp_allowed_congestion_control
      readonly in non-init netns")
      
      Resolve this netns "leak" by only allowing the init netns to set the
      default algorithm to one that is restricted. This restriction could be
      removed if tcp_allowed_congestion_control were namespace-ified in the
      future.
      
      This bug was uncovered with
      https://github.com/JonathonReinhart/linux-netns-sysctl-verify
      
      Fixes: 6670e152 ("tcp: Namespace-ify sysctl_tcp_default_congestion_control")
      Signed-off-by: default avatarJonathon Reinhart <jonathon.reinhart@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8d432592
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf · 1682d8df
      David S. Miller authored
      Daniel Borkmann says:
      
      ====================
      pull-request: bpf 2021-05-04
      
      The following pull-request contains BPF updates for your *net* tree.
      
      We've added 5 non-merge commits during the last 4 day(s) which contain
      a total of 6 files changed, 52 insertions(+), 30 deletions(-).
      
      The main changes are:
      
      1) Fix libbpf overflow when processing BPF ring buffer in case of extreme
         application behavior, from Brendan Jackman.
      
      2) Fix potential data leakage of uninitialized BPF stack under speculative
         execution, from Daniel Borkmann.
      
      3) Fix off-by-one when validating xsk pool chunks, from Xuan Zhuo.
      
      4) Fix snprintf BPF selftest with a pid filter to avoid racing its output
         test buffer, from Florent Revest.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1682d8df
  5. 03 May, 2021 7 commits