Skip to content
  1. Aug 24, 2022
    • Pablo Neira Ayuso's avatar
      netfilter: nf_tables: do not leave chain stats enabled on error · 43eb8949
      Pablo Neira Ayuso authored
      Error might occur later in the nf_tables_addchain() codepath, enable
      static key only after transaction has been created.
      
      Fixes: 9f08ea84
      
       ("netfilter: nf_tables: keep chain counters away from hot path")
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      43eb8949
    • Pablo Neira Ayuso's avatar
      netfilter: nft_payload: do not truncate csum_offset and csum_type · 7044ab28
      Pablo Neira Ayuso authored
      Instead report ERANGE if csum_offset is too long, and EOPNOTSUPP if type
      is not support.
      
      Fixes: 7ec3f7b4
      
       ("netfilter: nft_payload: add packet mangling support")
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      7044ab28
    • Pablo Neira Ayuso's avatar
      netfilter: nft_payload: report ERANGE for too long offset and length · 94254f99
      Pablo Neira Ayuso authored
      Instead of offset and length are truncation to u8, report ERANGE.
      
      Fixes: 96518518
      
       ("netfilter: add nftables")
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      94254f99
    • Pablo Neira Ayuso's avatar
      netfilter: nf_tables: make table handle allocation per-netns friendly · ab482c6b
      Pablo Neira Ayuso authored
      mutex is per-netns, move table_netns to the pernet area.
      
      *read-write* to 0xffffffff883a01e8 of 8 bytes by task 6542 on cpu 0:
       nf_tables_newtable+0x6dc/0xc00 net/netfilter/nf_tables_api.c:1221
       nfnetlink_rcv_batch net/netfilter/nfnetlink.c:513 [inline]
       nfnetlink_rcv_skb_batch net/netfilter/nfnetlink.c:634 [inline]
       nfnetlink_rcv+0xa6a/0x13a0 net/netfilter/nfnetlink.c:652
       netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
       netlink_unicast+0x652/0x730 net/netlink/af_netlink.c:1345
       netlink_sendmsg+0x643/0x740 net/netlink/af_netlink.c:1921
      
      Fixes: f102d66b
      
       ("netfilter: nf_tables: use dedicated mutex to guard transactions")
      Reported-by: default avatarAbhishek Shah <abhishek.shah@columbia.edu>
      Reviewed-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      ab482c6b
    • Pablo Neira Ayuso's avatar
      netfilter: nf_tables: disallow updates of implicit chain · 5dc52d83
      Pablo Neira Ayuso authored
      Updates on existing implicit chain make no sense, disallow this.
      
      Fixes: d0e2c7de
      
       ("netfilter: nf_tables: add NFT_CHAIN_BINDING")
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      5dc52d83
    • Florian Westphal's avatar
      netfilter: nft_tproxy: restrict to prerouting hook · 18bbc321
      Florian Westphal authored
      TPROXY is only allowed from prerouting, but nft_tproxy doesn't check this.
      This fixes a crash (null dereference) when using tproxy from e.g. output.
      
      Fixes: 4ed8eb65
      
       ("netfilter: nf_tables: Add native tproxy support")
      Reported-by: default avatarShell Chen <xierch@gmail.com>
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      18bbc321
    • Florian Westphal's avatar
      netfilter: conntrack: work around exceeded receive window · cf97769c
      Florian Westphal authored
      
      
      When a TCP sends more bytes than allowed by the receive window, all future
      packets can be marked as invalid.
      This can clog up the conntrack table because of 5-day default timeout.
      
      Sequence of packets:
       01 initiator > responder: [S], seq 171, win 5840, options [mss 1330,sackOK,TS val 63 ecr 0,nop,wscale 1]
       02 responder > initiator: [S.], seq 33211, ack 172, win 65535, options [mss 1460,sackOK,TS val 010 ecr 63,nop,wscale 8]
       03 initiator > responder: [.], ack 33212, win 2920, options [nop,nop,TS val 068 ecr 010], length 0
       04 initiator > responder: [P.], seq 172:240, ack 33212, win 2920, options [nop,nop,TS val 279 ecr 010], length 68
      
      Window is 5840 starting from 33212 -> 39052.
      
       05 responder > initiator: [.], ack 240, win 256, options [nop,nop,TS val 872 ecr 279], length 0
       06 responder > initiator: [.], seq 33212:34530, ack 240, win 256, options [nop,nop,TS val 892 ecr 279], length 1318
      
      This is fine, conntrack will flag the connection as having outstanding
      data (UNACKED), which lowers the conntrack timeout to 300s.
      
       07 responder > initiator: [.], seq 34530:35848, ack 240, win 256, options [nop,nop,TS val 892 ecr 279], length 1318
       08 responder > initiator: [.], seq 35848:37166, ack 240, win 256, options [nop,nop,TS val 892 ecr 279], length 1318
       09 responder > initiator: [.], seq 37166:38484, ack 240, win 256, options [nop,nop,TS val 892 ecr 279], length 1318
       10 responder > initiator: [.], seq 38484:39802, ack 240, win 256, options [nop,nop,TS val 892 ecr 279], length 1318
      
      Packet 10 is already sending more than permitted, but conntrack doesn't
      validate this (only seq is tested vs. maxend, not 'seq+len').
      
      38484 is acceptable, but only up to 39052, so this packet should
      not have been sent (or only 568 bytes, not 1318).
      
      At this point, connection is still in '300s' mode.
      
      Next packet however will get flagged:
       11 responder > initiator: [P.], seq 39802:40128, ack 240, win 256, options [nop,nop,TS val 892 ecr 279], length 326
      
      nf_ct_proto_6: SEQ is over the upper bound (over the window of the receiver) .. LEN=378 .. SEQ=39802 ACK=240 ACK PSH ..
      
      Now, a couple of replies/acks comes in:
      
       12 initiator > responder: [.], ack 34530, win 4368,
      [.. irrelevant acks removed ]
       16 initiator > responder: [.], ack 39802, win 8712, options [nop,nop,TS val 296201291 ecr 2982371892], length 0
      
      This ack is significant -- this acks the last packet send by the
      responder that conntrack considered valid.
      
      This means that ack == td_end.  This will withdraw the
      'unacked data' flag, the connection moves back to the 5-day timeout
      of established conntracks.
      
       17 initiator > responder: ack 40128, win 10030, ...
      
      This packet is also flagged as invalid.
      
      Because conntrack only updates state based on packets that are
      considered valid, packet 11 'did not exist' and that gets us:
      
      nf_ct_proto_6: ACK is over upper bound 39803 (ACKed data not seen yet) .. SEQ=240 ACK=40128 WINDOW=10030 RES=0x00 ACK URG
      
      Because this received and processed by the endpoints, the conntrack entry
      remains in a bad state, no packets will ever be considered valid again:
      
       30 responder > initiator: [F.], seq 40432, ack 2045, win 391, ..
       31 initiator > responder: [.], ack 40433, win 11348, ..
       32 initiator > responder: [F.], seq 2045, ack 40433, win 11348 ..
      
      ... all trigger 'ACK is over bound' test and we end up with
      non-early-evictable 5-day default timeout.
      
      NB: This patch triggers a bunch of checkpatch warnings because of silly
      indent.  I will resend the cleanup series linked below to reduce the
      indent level once this change has propagated to net-next.
      
      I could route the cleanup via nf but that causes extra backport work for
      stable maintainers.
      
      Link: https://lore.kernel.org/netfilter-devel/20220720175228.17880-1-fw@strlen.de/T/#mb1d7147d36294573cc4f81d00f9f8dadfdd06cd8
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      cf97769c
    • Florian Westphal's avatar
      netfilter: ebtables: reject blobs that don't provide all entry points · 7997eff8
      Florian Westphal authored
      Harshit Mogalapalli says:
       In ebt_do_table() function dereferencing 'private->hook_entry[hook]'
       can lead to NULL pointer dereference. [..] Kernel panic:
      
      general protection fault, probably for non-canonical address 0xdffffc0000000005: 0000 [#1] PREEMPT SMP KASAN
      KASAN: null-ptr-deref in range [0x0000000000000028-0x000000000000002f]
      [..]
      RIP: 0010:ebt_do_table+0x1dc/0x1ce0
      Code: 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 5c 16 00 00 48 b8 00 00 00 00 00 fc ff df 49 8b 6c df 08 48 8d 7d 2c 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 88
      [..]
      Call Trace:
       nf_hook_slow+0xb1/0x170
       __br_forward+0x289/0x730
       maybe_deliver+0x24b/0x380
       br_flood+0xc6/0x390
       br_dev_xmit+0xa2e/0x12c0
      
      For some reason ebtables rejects blobs that provide entry points that are
      not supported by the table, but what it should instead reject is the
      opposite: blobs that DO NOT provide an entry point supported by the table.
      
      t->valid_hooks is the bitmask of hooks (input, forward ...) that will see
      packets.  Providing an entry point that is not support is harmless
      (never called/used), but the inverse isn't: it results in a crash
      because the ebtables traverser doesn't expect a NULL blob for a location
      its receiving packets for.
      
      Instead of fixing all the individual checks, do what iptables is doing and
      reject all blobs that differ from the expected hooks.
      
      Fixes: 1da177e4
      
       ("Linux-2.6.12-rc2")
      Reported-by: default avatarHarshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
      Reported-by: default avatarsyzkaller <syzkaller@googlegroups.com>
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      7997eff8
  2. Aug 23, 2022
    • Vladimir Oltean's avatar
      net: dsa: don't dereference NULL extack in dsa_slave_changeupper() · 855a28f9
      Vladimir Oltean authored
      When a driver returns -EOPNOTSUPP in dsa_port_bridge_join() but failed
      to provide a reason for it, DSA attempts to set the extack to say that
      software fallback will kick in.
      
      The problem is, when we use brctl and the legacy bridge ioctls, the
      extack will be NULL, and DSA dereferences it in the process of setting
      it.
      
      Sergei Antonov proves this using the following stack trace:
      
      Unable to handle kernel NULL pointer dereference at virtual address 00000000
      PC is at dsa_slave_changeupper+0x5c/0x158
      
       dsa_slave_changeupper from raw_notifier_call_chain+0x38/0x6c
       raw_notifier_call_chain from __netdev_upper_dev_link+0x198/0x3b4
       __netdev_upper_dev_link from netdev_master_upper_dev_link+0x50/0x78
       netdev_master_upper_dev_link from br_add_if+0x430/0x7f4
       br_add_if from br_ioctl_stub+0x170/0x530
       br_ioctl_stub from br_ioctl_call+0x54/0x7c
       br_ioctl_call from dev_ifsioc+0x4e0/0x6bc
       dev_ifsioc from dev_ioctl+0x2f8/0x758
       dev_ioctl from sock_ioctl+0x5f0/0x674
       sock_ioctl from sys_ioctl+0x518/0xe40
       sys_ioctl from ret_fast_syscall+0x0/0x1c
      
      Fix the problem by only overriding the extack if non-NULL.
      
      Fixes: 1c6e8088
      
       ("net: dsa: allow port_bridge_join() to override extack message")
      Link: https://lore.kernel.org/netdev/CABikg9wx7vB5eRDAYtvAm7fprJ09Ta27a4ZazC=NX5K4wn6pWA@mail.gmail.com/
      Reported-by: default avatarSergei Antonov <saproj@gmail.com>
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Tested-by: default avatarSergei Antonov <saproj@gmail.com>
      Link: https://lore.kernel.org/r/20220819173925.3581871-1-vladimir.oltean@nxp.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      855a28f9
    • Maciej Żenczykowski's avatar
      net: ipvtap - add __init/__exit annotations to module init/exit funcs · 4b2e3a17
      Maciej Żenczykowski authored
      Looks to have been left out in an oversight.
      
      Cc: Mahesh Bandewar <maheshb@google.com>
      Cc: Sainath Grandhi <sainath.grandhi@intel.com>
      Fixes: 235a9d89
      
       ('ipvtap: IP-VLAN based tap driver')
      Signed-off-by: default avatarMaciej Żenczykowski <maze@google.com>
      Link: https://lore.kernel.org/r/20220821130808.12143-1-zenczykowski@gmail.com
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      4b2e3a17
    • Jakub Kicinski's avatar
      Merge branch 'bonding-802-3ad-fix-no-transmission-of-lacpdus' · 5003e52c
      Jakub Kicinski authored
      
      
      Jonathan Toppins says:
      
      ====================
      bonding: 802.3ad: fix no transmission of LACPDUs
      
      Configuring a bond in a specific order can leave the bond in a state
      where it never transmits LACPDUs.
      
      The first patch adds some kselftest infrastructure and the reproducer
      that demonstrates the problem. The second patch fixes the issue. The
      new third patch makes ad_ticks_per_sec a static const and removes the
      passing of this variable via the stack.
      ====================
      
      Link: https://lore.kernel.org/r/cover.1660919940.git.jtoppins@redhat.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      5003e52c
    • Jonathan Toppins's avatar
      bonding: 3ad: make ad_ticks_per_sec a const · f2e44dff
      Jonathan Toppins authored
      
      
      The value is only ever set once in bond_3ad_initialize and only ever
      read otherwise. There seems to be no reason to set the variable via
      bond_3ad_initialize when setting the global variable will do. Change
      ad_ticks_per_sec to a const to enforce its read-only usage.
      
      Signed-off-by: default avatarJonathan Toppins <jtoppins@redhat.com>
      Acked-by: default avatarJay Vosburgh <jay.vosburgh@canonical.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f2e44dff
    • Jonathan Toppins's avatar
      bonding: 802.3ad: fix no transmission of LACPDUs · d745b506
      Jonathan Toppins authored
      This is caused by the global variable ad_ticks_per_sec being zero as
      demonstrated by the reproducer script discussed below. This causes
      all timer values in __ad_timer_to_ticks to be zero, resulting
      in the periodic timer to never fire.
      
      To reproduce:
      Run the script in
      `tools/testing/selftests/drivers/net/bonding/bond-break-lacpdu-tx.sh` which
      puts bonding into a state where it never transmits LACPDUs.
      
      line 44: ip link add fbond type bond mode 4 miimon 200 \
                  xmit_hash_policy 1 ad_actor_sys_prio 65535 lacp_rate fast
      setting bond param: ad_actor_sys_prio
      given:
          params.ad_actor_system = 0
      call stack:
          bond_option_ad_actor_sys_prio()
          -> bond_3ad_update_ad_actor_settings()
             -> set ad.system.sys_priority = bond->params.ad_actor_sys_prio
             -> ad.system.sys_mac_addr = bond->dev->dev_addr; because
                  params.ad_actor_system == 0
      results:
           ad.system.sys_mac_addr = bond->dev->dev_addr
      
      line 48: ip link set fbond address 52:54:00:3B:7C:A6
      setting bond MAC addr
      call stack:
          bond->dev->dev_addr = new_mac
      
      line 52: ip link set fbond type bond ad_actor_sys_prio 65535
      setting bond param: ad_actor_sys_prio
      given:
          params.ad_actor_system = 0
      call stack:
          bond_option_ad_actor_sys_prio()
          -> bond_3ad_update_ad_actor_settings()
             -> set ad.system.sys_priority = bond->params.ad_actor_sys_prio
             -> ad.system.sys_mac_addr = bond->dev->dev_addr; because
                  params.ad_actor_system == 0
      results:
           ad.system.sys_mac_addr = bond->dev->dev_addr
      
      line 60: ip link set veth1-bond down master fbond
      given:
          params.ad_actor_system = 0
          params.mode = BOND_MODE_8023AD
          ad.system.sys_mac_addr == bond->dev->dev_addr
      call stack:
          bond_enslave
          -> bond_3ad_initialize(); because first slave
             -> if ad.system.sys_mac_addr != bond->dev->dev_addr
                return
      results:
           Nothing is run in bond_3ad_initialize() because dev_addr equals
           sys_mac_addr leaving the global ad_ticks_per_sec zero as it is
           never initialized anywhere else.
      
      The if check around the contents of bond_3ad_initialize() is no longer
      needed due to commit 5ee14e6d ("bonding: 3ad: apply ad_actor settings
      changes immediately") which sets ad.system.sys_mac_addr if any one of
      the bonding parameters whos set function calls
      bond_3ad_update_ad_actor_settings(). This is because if
      ad.system.sys_mac_addr is zero it will be set to the current bond mac
      address, this causes the if check to never be true.
      
      Fixes: 5ee14e6d
      
       ("bonding: 3ad: apply ad_actor settings changes immediately")
      Signed-off-by: default avatarJonathan Toppins <jtoppins@redhat.com>
      Acked-by: default avatarJay Vosburgh <jay.vosburgh@canonical.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      d745b506
    • Jonathan Toppins's avatar
      selftests: include bonding tests into the kselftest infra · c078290a
      Jonathan Toppins authored
      
      
      This creates a test collection in drivers/net/bonding for bonding
      specific kernel selftests.
      
      The first test is a reproducer that provisions a bond and given the
      specific order in how the ip-link(8) commands are issued the bond never
      transmits an LACPDU frame on any of its slaves.
      
      Signed-off-by: default avatarJonathan Toppins <jtoppins@redhat.com>
      Acked-by: default avatarJay Vosburgh <jay.vosburgh@canonical.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c078290a
    • Sergei Antonov's avatar
      net: moxa: get rid of asymmetry in DMA mapping/unmapping · 0ee7828d
      Sergei Antonov authored
      Since priv->rx_mapping[i] is maped in moxart_mac_open(), we
      should unmap it from moxart_mac_stop(). Fixes 2 warnings.
      
      1. During error unwinding in moxart_mac_probe(): "goto init_fail;",
      then moxart_mac_free_memory() calls dma_unmap_single() with
      priv->rx_mapping[i] pointers zeroed.
      
      WARNING: CPU: 0 PID: 1 at kernel/dma/debug.c:963 check_unmap+0x704/0x980
      DMA-API: moxart-ethernet 92000000.mac: device driver tries to free DMA memory it has not allocated [device address=0x0000000000000000] [size=1600 bytes]
      CPU: 0 PID: 1 Comm: swapper Not tainted 5.19.0+ #60
      Hardware name: Generic DT based system
       unwind_backtrace from show_stack+0x10/0x14
       show_stack from dump_stack_lvl+0x34/0x44
       dump_stack_lvl from __warn+0xbc/0x1f0
       __warn from warn_slowpath_fmt+0x94/0xc8
       warn_slowpath_fmt from check_unmap+0x704/0x980
       check_unmap from debug_dma_unmap_page+0x8c/0x9c
       debug_dma_unmap_page from moxart_mac_free_memory+0x3c/0xa8
       moxart_mac_free_memory from moxart_mac_probe+0x190/0x218
       moxart_mac_probe from platform_probe+0x48/0x88
       platform_probe from really_probe+0xc0/0x2e4
      
      2. After commands:
       ip link set dev eth0 down
       ip link set dev eth0 up
      
      WARNING: CPU: 0 PID: 55 at kernel/dma/debug.c:570 add_dma_entry+0x204/0x2ec
      DMA-API: moxart-ethernet 92000000.mac: cacheline tracking EEXIST, overlapping mappings aren't supported
      CPU: 0 PID: 55 Comm: ip Not tainted 5.19.0+ #57
      Hardware name: Generic DT based system
       unwind_backtrace from show_stack+0x10/0x14
       show_stack from dump_stack_lvl+0x34/0x44
       dump_stack_lvl from __warn+0xbc/0x1f0
       __warn from warn_slowpath_fmt+0x94/0xc8
       warn_slowpath_fmt from add_dma_entry+0x204/0x2ec
       add_dma_entry from dma_map_page_attrs+0x110/0x328
       dma_map_page_attrs from moxart_mac_open+0x134/0x320
       moxart_mac_open from __dev_open+0x11c/0x1ec
       __dev_open from __dev_change_flags+0x194/0x22c
       __dev_change_flags from dev_change_flags+0x14/0x44
       dev_change_flags from devinet_ioctl+0x6d4/0x93c
       devinet_ioctl from inet_ioctl+0x1ac/0x25c
      
      v1 -> v2:
      Extraneous change removed.
      
      Fixes: 6c821bd9
      
       ("net: Add MOXA ART SoCs ethernet driver")
      Signed-off-by: default avatarSergei Antonov <saproj@gmail.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Link: https://lore.kernel.org/r/20220819110519.1230877-1-saproj@gmail.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      0ee7828d
    • Xiaolei Wang's avatar
      net: phy: Don't WARN for PHY_READY state in mdio_bus_phy_resume() · 6dbe852c
      Xiaolei Wang authored
      For some MAC drivers, they set the mac_managed_pm to true in its
      ->ndo_open() callback. So before the mac_managed_pm is set to true,
      we still want to leverage the mdio_bus_phy_suspend()/resume() for
      the phy device suspend and resume. In this case, the phy device is
      in PHY_READY, and we shouldn't warn about this. It also seems that
      the check of mac_managed_pm in WARN_ON is redundant since we already
      check this in the entry of mdio_bus_phy_resume(), so drop it.
      
      Fixes: 744d23c7
      
       ("net: phy: Warn about incorrect mdio_bus_phy_resume() state")
      Signed-off-by: default avatarXiaolei Wang <xiaolei.wang@windriver.com>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Link: https://lore.kernel.org/r/20220819082451.1992102-1-xiaolei.wang@windriver.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      6dbe852c
    • Alex Elder's avatar
      net: ipa: don't assume SMEM is page-aligned · b8d43803
      Alex Elder authored
      In ipa_smem_init(), a Qualcomm SMEM region is allocated (if needed)
      and then its virtual address is fetched using qcom_smem_get().  The
      physical address associated with that region is also fetched.
      
      The physical address is adjusted so that it is page-aligned, and an
      attempt is made to update the size of the region to compensate for
      any non-zero adjustment.
      
      But that adjustment isn't done properly.  The physical address is
      aligned twice, and as a result the size is never actually adjusted.
      
      Fix this by *not* aligning the "addr" local variable, and instead
      making the "phys" local variable be the adjusted "addr" value.
      
      Fixes: a0036bb4
      
       ("net: ipa: define SMEM memory region for IPA")
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Link: https://lore.kernel.org/r/20220818134206.567618-1-elder@linaro.org
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      b8d43803
    • Vladimir Oltean's avatar
      net: dsa: microchip: keep compatibility with device tree blobs with no phy-mode · 5fbb08eb
      Vladimir Oltean authored
      DSA has multiple ways of specifying a MAC connection to an internal PHY.
      One requires a DT description like this:
      
      	port@0 {
      		reg = <0>;
      		phy-handle = <&internal_phy>;
      		phy-mode = "internal";
      	};
      
      (which is IMO the recommended approach, as it is the clearest
      description)
      
      but it is also possible to leave the specification as just:
      
      	port@0 {
      		reg = <0>;
      	}
      
      and if the driver implements ds->ops->phy_read and ds->ops->phy_write,
      the DSA framework "knows" it should create a ds->slave_mii_bus, and it
      should connect to a non-OF-based internal PHY on this MDIO bus, at an
      MDIO address equal to the port address.
      
      There is also an intermediary way of describing things:
      
      	port@0 {
      		reg = <0>;
      		phy-handle = <&internal_phy>;
      	};
      
      In case 2, DSA calls phylink_connect_phy() and in case 3, it calls
      phylink_of_phy_connect(). In both cases, phylink_create() has been
      called with a phy_interface_t of PHY_INTERFACE_MODE_NA, and in both
      cases, PHY_INTERFACE_MODE_NA is translated into phy->interface.
      
      It is important to note that phy_device_create() initializes
      dev->interface = PHY_INTERFACE_MODE_GMII, and so, when we use
      phylink_create(PHY_INTERFACE_MODE_NA), no one will override this, and we
      will end up with a PHY_INTERFACE_MODE_GMII interface inherited from the
      PHY.
      
      All this means that in order to maintain compatibility with device tree
      blobs where the phy-mode property is missing, we need to allow the
      "gmii" phy-mode and treat it as "internal".
      
      Fixes: 2c709e0b
      
       ("net: dsa: microchip: ksz8795: add phylink support")
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=216320
      Reported-by: default avatarCraig McQueen <craig@mcqueen.id.au>
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarAlvin Šipraga <alsi@bang-olufsen.dk>
      Tested-by: default avatarRasmus Villemoes <rasmus.villemoes@prevas.dk>
      Link: https://lore.kernel.org/r/20220818143250.2797111-1-vladimir.oltean@nxp.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      5fbb08eb
  3. Aug 22, 2022
    • Duoming Zhou's avatar
      nfc: pn533: Fix use-after-free bugs caused by pn532_cmd_timeout · f1e941db
      Duoming Zhou authored
      When the pn532 uart device is detaching, the pn532_uart_remove()
      is called. But there are no functions in pn532_uart_remove() that
      could delete the cmd_timeout timer, which will cause use-after-free
      bugs. The process is shown below:
      
          (thread 1)                  |        (thread 2)
                                      |  pn532_uart_send_frame
      pn532_uart_remove               |    mod_timer(&pn532->cmd_timeout,...)
        ...                           |    (wait a time)
        kfree(pn532) //FREE           |    pn532_cmd_timeout
                                      |      pn532_uart_send_frame
                                      |        pn532->... //USE
      
      This patch adds del_timer_sync() in pn532_uart_remove() in order to
      prevent the use-after-free bugs. What's more, the pn53x_unregister_nfc()
      is well synchronized, it sets nfc_dev->shutting_down to true and there
      are no syscalls could restart the cmd_timeout timer.
      
      Fixes: c656aa4c
      
       ("nfc: pn533: add UART phy driver")
      Signed-off-by: default avatarDuoming Zhou <duoming@zju.edu.cn>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f1e941db
    • David S. Miller's avatar
      Merge branch 'r8152-fixes' · 6e10001c
      David S. Miller authored
      
      
      Hayes Wang says:
      
      ====================
      r8152: fix flow control settings
      
      These patches fix the settings of RX FIFO about flow control.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6e10001c
    • Hayes Wang's avatar
      r8152: fix the RX FIFO settings when suspending · b75d6120
      Hayes Wang authored
      
      
      The RX FIFO would be changed when suspending, so the related settings
      have to be modified, too. Otherwise, the flow control would work
      abnormally.
      
      BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=216333
      Reported-by: default avatarMark Blakeney <mark.blakeney@bullet-systems.net>
      Fixes: cdf0b86b
      
       ("r8152: fix a WOL issue")
      Signed-off-by: default avatarHayes Wang <hayeswang@realtek.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b75d6120
    • Hayes Wang's avatar
      r8152: fix the units of some registers for RTL8156A · 6dc4df12
      Hayes Wang authored
      The units of PLA_RX_FIFO_FULL and PLA_RX_FIFO_EMPTY are 16 bytes.
      
      Fixes: 195aae32
      
       ("r8152: support new chips")
      Signed-off-by: default avatarHayes Wang <hayeswang@realtek.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6dc4df12
    • Bernard Pidoux's avatar
      rose: check NULL rose_loopback_neigh->loopback · 3c53cd65
      Bernard Pidoux authored
      Commit 3b3fd068 added NULL check for
      `rose_loopback_neigh->dev` in rose_loopback_timer() but omitted to
      check rose_loopback_neigh->loopback.
      
      It thus prevents *all* rose connect.
      
      The reason is that a special rose_neigh loopback has a NULL device.
      
      /proc/net/rose_neigh illustrates it via rose_neigh_show() function :
      [...]
      seq_printf(seq, "%05d %-9s %-4s   %3d %3d  %3s     %3s %3lu %3lu",
      	   rose_neigh->number,
      	   (rose_neigh->loopback) ? "RSLOOP-0" : ax2asc(buf, &rose_neigh->callsign),
      	   rose_neigh->dev ? rose_neigh->dev->name : "???",
      	   rose_neigh->count,
      
      /proc/net/rose_neigh displays special rose_loopback_neigh->loopback as
      callsign RSLOOP-0:
      
      addr  callsign  dev  count use mode restart  t0  tf digipeaters
      00001 RSLOOP-0  ???      1   2  DCE     yes   0   0
      
      By checking rose_loopback_neigh->loopback, rose_rx_call_request() is called
      even in case rose_loopback_neigh->dev is NULL. This repairs rose connections.
      
      Verification with rose client application FPAC:
      
      FPAC-Node v 4.1.3 (built Aug  5 2022) for LINUX (help = h)
      F6BVP-4 (Commands = ?) : u
      Users - AX.25 Level 2 sessions :
      Port   Callsign     Callsign  AX.25 state  ROSE state  NetRom status
      axudp  F6BVP-5   -> F6BVP-9   Connected    Connected   ---------
      
      Fixes: 3b3fd068
      
       ("rose: Fix Null pointer dereference in rose_send_frame()")
      Signed-off-by: default avatarBernard Pidoux <f6bvp@free.fr>
      Suggested-by: default avatarFrancois Romieu <romieu@fr.zoreil.com>
      Cc: Thomas DL9SAU Osterried <thomas@osterried.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3c53cd65
  4. Aug 20, 2022
    • Sabrina Dubroca's avatar
      Revert "net: macsec: update SCI upon MAC address change." · e82c649e
      Sabrina Dubroca authored
      This reverts commit 6fc498bc.
      
      Commit 6fc498bc states:
      
          SCI should be updated, because it contains MAC in its first 6
          octets.
      
      That's not entirely correct. The SCI can be based on the MAC address,
      but doesn't have to be. We can also use any 64-bit number as the
      SCI. When the SCI based on the MAC address, it uses a 16-bit "port
      number" provided by userspace, which commit 6fc498bc overwrites
      with 1.
      
      In addition, changing the SCI after macsec has been setup can just
      confuse the receiver. If we configure the RXSC on the peer based on
      the original SCI, we should keep the same SCI on TX.
      
      When the macsec device is being managed by a userspace key negotiation
      daemon such as wpa_supplicant, commit 6fc498bc would also
      overwrite the SCI defined by userspace.
      
      Fixes: 6fc498bc
      
       ("net: macsec: update SCI upon MAC address change.")
      Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
      Link: https://lore.kernel.org/r/9b1a9d28327e7eb54550a92eebda45d25e54dd0d.1660667033.git.sd@queasysnail.net
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      e82c649e
    • Sean Anderson's avatar
      net: dpaa: Fix <1G ethernet on LS1046ARDB · 9dbdfd4a
      Sean Anderson authored
      As discussed in commit 73a21fa8 ("dpaa_eth: support all modes with
      rate adapting PHYs"), we must add a workaround for Aquantia phys with
      in-tree support in order to keep 1G support working. Update this
      workaround for the AQR113C phy found on revision C LS1046ARDB boards.
      
      Fixes: 12cf1b89
      
       ("net: phy: Add support for AQR113C EPHY")
      Signed-off-by: default avatarSean Anderson <sean.anderson@seco.com>
      Acked-by: default avatarCamelia Groza <camelia.groza@nxp.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Link: https://lore.kernel.org/r/20220818164029.2063293-1-sean.anderson@seco.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      9dbdfd4a
  5. Aug 19, 2022
    • Linus Torvalds's avatar
      Merge tag 'net-6.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 4c2d0b03
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Including fixes from netfilter.
      
        Current release - regressions:
      
         - tcp: fix cleanup and leaks in tcp_read_skb() (the new way BPF
           socket maps get data out of the TCP stack)
      
         - tls: rx: react to strparser initialization errors
      
         - netfilter: nf_tables: fix scheduling-while-atomic splat
      
         - net: fix suspicious RCU usage in bpf_sk_reuseport_detach()
      
        Current release - new code bugs:
      
         - mlxsw: ptp: fix a couple of races, static checker warnings and
           error handling
      
        Previous releases - regressions:
      
         - netfilter:
            - nf_tables: fix possible module reference underflow in error path
            - make conntrack helpers deal with BIG TCP (skbs > 64kB)
            - nfnetlink: re-enable conntrack expectation events
      
         - net: fix potential refcount leak in ndisc_router_discovery()
      
        Previous releases - always broken:
      
         - sched: cls_route: disallow handle of 0
      
         - neigh: fix possible local DoS due to net iface start/stop loop
      
         - rtnetlink: fix module refcount leak in rtnetlink_rcv_msg
      
         - sched: fix adding qlen to qcpu->backlog in gnet_stats_add_queue_cpu
      
         - virtio_net: fix endian-ness for RSS
      
         - dsa: mv88e6060: prevent crash on an unused port
      
         - fec: fix timer capture timing in `fec_ptp_enable_pps()`
      
         - ocelot: stats: fix races, integer wrapping and reading incorrect
           registers (the change of register definitions here accounts for
           bulk of the changed LoC in this PR)"
      
      * tag 'net-6.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (77 commits)
        net: moxa: MAC address reading, generating, validity checking
        tcp: handle pure FIN case correctly
        tcp: refactor tcp_read_skb() a bit
        tcp: fix tcp_cleanup_rbuf() for tcp_read_skb()
        tcp: fix sock skb accounting in tcp_read_skb()
        igb: Add lock to avoid data race
        dt-bindings: Fix incorrect "the the" corrections
        net: genl: fix error path memory leak in policy dumping
        stmmac: intel: Add a missing clk_disable_unprepare() call in intel_eth_pci_remove()
        net: ethernet: mtk_eth_soc: fix possible NULL pointer dereference in mtk_xdp_run
        net/mlx5e: Allocate flow steering storage during uplink initialization
        net: mscc: ocelot: report ndo_get_stats64 from the wraparound-resistant ocelot->stats
        net: mscc: ocelot: keep ocelot_stat_layout by reg address, not offset
        net: mscc: ocelot: make struct ocelot_stat_layout array indexable
        net: mscc: ocelot: fix race between ndo_get_stats64 and ocelot_check_stats_work
        net: mscc: ocelot: turn stats_lock into a spinlock
        net: mscc: ocelot: fix address of SYS_COUNT_TX_AGING counter
        net: mscc: ocelot: fix incorrect ndo_get_stats64 packet counters
        net: dsa: felix: fix ethtool 256-511 and 512-1023 TX packet counters
        net: dsa: don't warn in dsa_port_set_state_now() when driver doesn't support it
        ...
      4c2d0b03
    • Linus Torvalds's avatar
      Merge tag 'linux-kselftest-next-6.0-rc2' of... · 90b6b686
      Linus Torvalds authored
      Merge tag 'linux-kselftest-next-6.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull Kselftest fix from Shuah Khan:
      
       - fix landlock test build regression
      
      * tag 'linux-kselftest-next-6.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        selftests/landlock: fix broken include of linux/landlock.h
      90b6b686
    • Linus Torvalds's avatar
      Merge tag 'trace-rtla-v6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 0de277d4
      Linus Torvalds authored
      Pull rtla tool fixes from Steven Rostedt:
       "Fixes for the Real-Time Linux Analysis tooling:
      
         - Fix tracer name in comments and prints
      
         - Fix setting up symlinks
      
         - Allow extra flags to be set in build
      
         - Consolidate and show all necessary libraries not found in build
           error"
      
      * tag 'trace-rtla-v6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        rtla: Consolidate and show all necessary libraries that failed for building
        tools/rtla: Build with EXTRA_{C,LD}FLAGS
        tools/rtla: Fix command symlinks
        rtla: Fix tracer name
      0de277d4
    • Sergei Antonov's avatar
      net: moxa: MAC address reading, generating, validity checking · f4693b81
      Sergei Antonov authored
      
      
      This device does not remember its MAC address, so add a possibility
      to get it from the platform. If it fails, generate a random address.
      This will provide a MAC address early during boot without user space
      being involved.
      
      Also remove extra calls to is_valid_ether_addr().
      
      Made after suggestions by Andrew Lunn:
      1) Use eth_hw_addr_random() to assign a random MAC address during probe.
      2) Remove is_valid_ether_addr() from moxart_mac_open()
      3) Add a call to platform_get_ethdev_address() during probe
      4) Remove is_valid_ether_addr() from moxart_set_mac_address(). The core does this
      
      v1 -> v2:
      Handle EPROBE_DEFER returned from platform_get_ethdev_address().
      Move MAC reading code to the beginning of the probe function.
      
      Signed-off-by: default avatarSergei Antonov <saproj@gmail.com>
      Suggested-by: default avatarAndrew Lunn <andrew@lunn.ch>
      CC: Yang Yingliang <yangyingliang@huawei.com>
      CC: Pavel Skripkin <paskripkin@gmail.com>
      CC: Guobin Huang <huangguobin4@huawei.com>
      CC: Yang Wei <yang.wei9@zte.com.cn>
      CC: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Link: https://lore.kernel.org/r/20220818092317.529557-1-saproj@gmail.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f4693b81
    • Jakub Kicinski's avatar
      Merge branch 'tcp-some-bug-fixes-for-tcp_read_skb' · 267ef48e
      Jakub Kicinski authored
      
      
      Cong Wang says:
      
      ====================
      tcp: some bug fixes for tcp_read_skb()
      
      This patchset contains 3 bug fixes and 1 minor refactor patch for
      tcp_read_skb(). V1 only had the first patch, as Eric prefers to fix all
      of them together, I have to group them together.
      ====================
      
      Link: https://lore.kernel.org/r/20220817195445.151609-1-xiyou.wangcong@gmail.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      267ef48e
    • Cong Wang's avatar
      tcp: handle pure FIN case correctly · 2e23acd9
      Cong Wang authored
      When skb->len==0, the recv_actor() returns 0 too, but we also use 0
      for error conditions. This patch amends this by propagating the errors
      to tcp_read_skb() so that we can distinguish skb->len==0 case from
      error cases.
      
      Fixes: 04919bed
      
       ("tcp: Introduce tcp_read_skb()")
      Reported-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: John Fastabend <john.fastabend@gmail.com>
      Cc: Jakub Sitnicki <jakub@cloudflare.com>
      Signed-off-by: default avatarCong Wang <cong.wang@bytedance.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      2e23acd9
    • Cong Wang's avatar
      tcp: refactor tcp_read_skb() a bit · a8688821
      Cong Wang authored
      
      
      As tcp_read_skb() only reads one skb at a time, the while loop is
      unnecessary, we can turn it into an if. This also simplifies the
      code logic.
      
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: John Fastabend <john.fastabend@gmail.com>
      Cc: Jakub Sitnicki <jakub@cloudflare.com>
      Signed-off-by: default avatarCong Wang <cong.wang@bytedance.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a8688821
    • Cong Wang's avatar
      tcp: fix tcp_cleanup_rbuf() for tcp_read_skb() · c457985a
      Cong Wang authored
      tcp_cleanup_rbuf() retrieves the skb from sk_receive_queue, it
      assumes the skb is not yet dequeued. This is no longer true for
      tcp_read_skb() case where we dequeue the skb first.
      
      Fix this by introducing a helper __tcp_cleanup_rbuf() which does
      not require any skb and calling it in tcp_read_skb().
      
      Fixes: 04919bed
      
       ("tcp: Introduce tcp_read_skb()")
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: John Fastabend <john.fastabend@gmail.com>
      Cc: Jakub Sitnicki <jakub@cloudflare.com>
      Signed-off-by: default avatarCong Wang <cong.wang@bytedance.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c457985a
    • Cong Wang's avatar
      tcp: fix sock skb accounting in tcp_read_skb() · e9c6e797
      Cong Wang authored
      Before commit 965b57b4 ("net: Introduce a new proto_ops
      ->read_skb()"), skb was not dequeued from receive queue hence
      when we close TCP socket skb can be just flushed synchronously.
      
      After this commit, we have to uncharge skb immediately after being
      dequeued, otherwise it is still charged in the original sock. And we
      still need to retain skb->sk, as eBPF programs may extract sock
      information from skb->sk. Therefore, we have to call
      skb_set_owner_sk_safe() here.
      
      Fixes: 965b57b4
      
       ("net: Introduce a new proto_ops ->read_skb()")
      Reported-and-tested-by: default avatar <syzbot+a0e6f8738b58f7654417@syzkaller.appspotmail.com>
      Tested-by: default avatarStanislav Fomichev <sdf@google.com>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: John Fastabend <john.fastabend@gmail.com>
      Cc: Jakub Sitnicki <jakub@cloudflare.com>
      Signed-off-by: default avatarCong Wang <cong.wang@bytedance.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      e9c6e797
    • Lin Ma's avatar
      igb: Add lock to avoid data race · 6faee3d4
      Lin Ma authored
      The commit c23d92b8 ("igb: Teardown SR-IOV before
      unregister_netdev()") places the unregister_netdev() call after the
      igb_disable_sriov() call to avoid functionality issue.
      
      However, it introduces several race conditions when detaching a device.
      For example, when .remove() is called, the below interleaving leads to
      use-after-free.
      
       (FREE from device detaching)      |   (USE from netdev core)
      igb_remove                         |  igb_ndo_get_vf_config
       igb_disable_sriov                 |  vf >= adapter->vfs_allocated_count?
        kfree(adapter->vf_data)          |
        adapter->vfs_allocated_count = 0 |
                                         |    memcpy(... adapter->vf_data[vf]
      
      Moreover, the igb_disable_sriov() also suffers from data race with the
      requests from VF driver.
      
       (FREE from device detaching)      |   (USE from requests)
      igb_remove                         |  igb_msix_other
       igb_disable_sriov                 |   igb_msg_task
        kfree(adapter->vf_data)          |    vf < adapter->vfs_allocated_count
        adapter->vfs_allocated_count = 0 |
      
      To this end, this commit first eliminates the data races from netdev
      core by using rtnl_lock (similar to commit 71947923 ("dpaa2-eth: add
      MAC/PHY support through phylink")). And then adds a spinlock to
      eliminate races from driver requests. (similar to commit 1e53834c
      ("ixgbe: Add locking to prevent panic when setting sriov_numvfs to zero")
      
      Fixes: c23d92b8
      
       ("igb: Teardown SR-IOV before unregister_netdev()")
      Signed-off-by: default avatarLin Ma <linma@zju.edu.cn>
      Tested-by: default avatarKonrad Jankowski <konrad0.jankowski@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      Link: https://lore.kernel.org/r/20220817184921.735244-1-anthony.l.nguyen@intel.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      6faee3d4
    • Jakub Kicinski's avatar
      Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue · 138d1862
      Jakub Kicinski authored
      
      
      Tony Nguyen says:
      
      ====================
      Intel Wired LAN Driver Updates 2022-08-17 (ice)
      
      This series contains updates to ice driver only.
      
      Grzegorz prevents modifications to VLAN 0 when setting VLAN promiscuous
      as it will already be set. He also ignores -EEXIST error when attempting
      to set promiscuous and ensures promiscuous mode is properly cleared from
      the hardware when being removed.
      
      Benjamin ignores additional -EEXIST errors when setting promiscuous mode
      since the existing mode is the desired mode.
      
      Sylwester fixes VFs to allow sending of tagged traffic when no VLAN filters
      exist.
      
      * '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
        ice: Fix VF not able to send tagged traffic with no VLAN filters
        ice: Ignore error message when setting same promiscuous mode
        ice: Fix clearing of promisc mode with bridge over bond
        ice: Ignore EEXIST when setting promisc mode
        ice: Fix double VLAN error when entering promisc mode
      ====================
      
      Link: https://lore.kernel.org/r/20220817171329.65285-1-anthony.l.nguyen@intel.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      138d1862
    • Geert Uytterhoeven's avatar
      dt-bindings: Fix incorrect "the the" corrections · 8aa48ade
      Geert Uytterhoeven authored
      Lots of double occurrences of "the" were replaced by single occurrences,
      but some of them should become "to the" instead.
      
      Fixes: 12e5bde1
      
       ("dt-bindings: Fix typo in comment")
      Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
      Link: https://lore.kernel.org/r/c5743c0a1a24b3a8893797b52fed88b99e56b04b.1660755148.git.geert+renesas@glider.be
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      8aa48ade
    • Jakub Kicinski's avatar
      net: genl: fix error path memory leak in policy dumping · 24980136
      Jakub Kicinski authored
      
      
      If construction of the array of policies fails when recording
      non-first policy we need to unwind.
      
      netlink_policy_dump_add_policy() itself also needs fixing as
      it currently gives up on error without recording the allocated
      pointer in the pstate pointer.
      
      Reported-by: default avatar <syzbot+dc54d9ba8153b216cae0@syzkaller.appspotmail.com>
      Fixes: 50a896cf
      
       ("genetlink: properly support per-op policy dumping")
      Link: https://lore.kernel.org/r/20220816161939.577583-1-kuba@kernel.org
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      24980136
    • Christophe JAILLET's avatar
      stmmac: intel: Add a missing clk_disable_unprepare() call in intel_eth_pci_remove() · 5c23d6b7
      Christophe JAILLET authored
      Commit 09f012e6 ("stmmac: intel: Fix clock handling on error and remove
      paths") removed this clk_disable_unprepare()
      
      This was partly revert by commit ac322f86 ("net: stmmac: Fix clock
      handling on remove path") which removed this clk_disable_unprepare()
      because:
      "
         While unloading the dwmac-intel driver, clk_disable_unprepare() is
         being called twice in stmmac_dvr_remove() and
         intel_eth_pci_remove(). This causes kernel panic on the second call.
      "
      
      However later on, commit 5ec55823 ("net: stmmac: add clocks management
      for gmac driver") has updated stmmac_dvr_remove() which do not call
      clk_disable_unprepare() anymore.
      
      So this call should now be called from intel_eth_pci_remove().
      
      Fixes: 5ec55823
      
       ("net: stmmac: add clocks management for gmac driver")
      Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Link: https://lore.kernel.org/r/d7c8c1dadf40df3a7c9e643f76ffadd0ccc1ad1b.1660659689.git.christophe.jaillet@wanadoo.fr
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      5c23d6b7
    • Jens Wiklander's avatar
      tee: add overflow check in register_shm_helper() · 573ae4f1
      Jens Wiklander authored
      With special lengths supplied by user space, register_shm_helper() has
      an integer overflow when calculating the number of pages covered by a
      supplied user space memory region.
      
      This causes internal_get_user_pages_fast() a helper function of
      pin_user_pages_fast() to do a NULL pointer dereference:
      
        Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010
        Modules linked in:
        CPU: 1 PID: 173 Comm: optee_example_a Not tainted 5.19.0 #11
        Hardware name: QEMU QEMU Virtual Machine, BIOS 0.0.0 02/06/2015
        pc : internal_get_user_pages_fast+0x474/0xa80
        Call trace:
         internal_get_user_pages_fast+0x474/0xa80
         pin_user_pages_fast+0x24/0x4c
         register_shm_helper+0x194/0x330
         tee_shm_register_user_buf+0x78/0x120
         tee_ioctl+0xd0/0x11a0
         __arm64_sys_ioctl+0xa8/0xec
         invoke_syscall+0x48/0x114
      
      Fix this by adding an an explicit call to access_ok() in
      tee_shm_register_user_buf() to catch an invalid user space address
      early.
      
      Fixes: 033ddf12
      
       ("tee: add register user memory")
      Cc: stable@vger.kernel.org
      Reported-by: default avatarNimish Mishra <neelam.nimish@gmail.com>
      Reported-by: default avatarAnirban Chakraborty <ch.anirban00727@gmail.com>
      Reported-by: default avatarDebdeep Mukhopadhyay <debdeep.mukhopadhyay@gmail.com>
      Suggested-by: default avatarJerome Forissier <jerome.forissier@linaro.org>
      Signed-off-by: default avatarJens Wiklander <jens.wiklander@linaro.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      573ae4f1