Skip to content
  1. Feb 03, 2021
    • Linus Torvalds's avatar
      Merge tag 'net-5.11-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · a9925628
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Networking fixes for 5.11-rc7, including fixes from bpf and mac80211
        trees.
      
        Current release - regressions:
      
         - ip_tunnel: fix mtu calculation
      
         - mlx5: fix function calculation for page trees
      
        Previous releases - regressions:
      
         - vsock: fix the race conditions in multi-transport support
      
         - neighbour: prevent a dead entry from updating gc_list
      
         - dsa: mv88e6xxx: override existent unicast portvec in port_fdb_add
      
        Previous releases - always broken:
      
         - bpf, cgroup: two copy_{from,to}_user() warn_on_once splats for BPF
           cgroup getsockopt infra when user space is trying to race against
           optlen, from Loris Reiff.
      
         - bpf: add missing fput() in BPF inode storage map update helper
      
         - udp: ipv4: manipulate network header of NATed UDP GRO fraglist
      
         - mac80211: fix station rate table updates on assoc
      
         - r8169: work around RTL8125 UDP HW bug
      
         - igc: report speed and duplex as unknown when device is runtime
           suspended
      
         - rxrpc: fix deadlock around release of dst cached on udp tunnel"
      
      * tag 'net-5.11-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (36 commits)
        net: hsr: align sup_multicast_addr in struct hsr_priv to u16 boundary
        net: ipa: fix two format specifier errors
        net: ipa: use the right accessor in ipa_endpoint_status_skip()
        net: ipa: be explicit about endianness
        net: ipa: add a missing __iomem attribute
        net: ipa: pass correct dma_handle to dma_free_coherent()
        r8169: fix WoL on shutdown if CONFIG_DEBUG_SHIRQ is set
        net/rds: restrict iovecs length for RDS_CMSG_RDMA_ARGS
        net: mvpp2: TCAM entry enable should be written after SRAM data
        net: lapb: Copy the skb before sending a packet
        net/mlx5e: Release skb in case of failure in tc update skb
        net/mlx5e: Update max_opened_tc also when channels are closed
        net/mlx5: Fix leak upon failure of rule creation
        net/mlx5: Fix function calculation for page trees
        docs: networking: swap words in icmp_errors_use_inbound_ifaddr doc
        udp: ipv4: manipulate network header of NATed UDP GRO fraglist
        net: ip_tunnel: fix mtu calculation
        vsock: fix the race conditions in multi-transport support
        net: sched: replaced invalid qdisc tree flush helper in qdisc_replace
        ibmvnic: device remove has higher precedence over reset
        ...
      a9925628
    • Andreas Oetken's avatar
      net: hsr: align sup_multicast_addr in struct hsr_priv to u16 boundary · 6c9f18f2
      Andreas Oetken authored
      
      
      sup_multicast_addr is passed to ether_addr_equal for address comparison
      which casts the address inputs to u16 leading to an unaligned access.
      Aligning the sup_multicast_addr to u16 boundary fixes the issue.
      
      Signed-off-by: default avatarAndreas Oetken <andreas.oetken@siemens.com>
      Link: https://lore.kernel.org/r/20210202090304.2740471-1-ennoerlangen@gmail.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      6c9f18f2
    • Jakub Kicinski's avatar
      Merge tag 'mlx5-fixes-2021-02-01' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · 5a4cb546
      Jakub Kicinski authored
      
      
      Saeed Mahameed says:
      
      ====================
      mlx5 fixes 2021-02-01
      
      Please note the first patch in this series
      ("Fix function calculation for page trees") is fixing a regression
      due to previous fix in net which you didn't include in your previous
      rc pr. So I hope this series will make it into your next rc pr,
      so mlx5 won't be broken in the next rc.
      
      * tag 'mlx5-fixes-2021-02-01' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux:
        net/mlx5e: Release skb in case of failure in tc update skb
        net/mlx5e: Update max_opened_tc also when channels are closed
        net/mlx5: Fix leak upon failure of rule creation
        net/mlx5: Fix function calculation for page trees
      ====================
      
      Link: https://lore.kernel.org/r/20210202070703.617251-1-saeed@kernel.org
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      5a4cb546
    • Jakub Kicinski's avatar
      Merge branch 'net-ipa-a-few-bug-fixes' · f2539e14
      Jakub Kicinski authored
      
      
      Alex Elder says:
      
      ====================
      net: ipa: a few bug fixes
      
      This series fixes four minor bugs.  The first two are things that
      sparse points out.  All four are very simple and each patch should
      explain itself pretty well.
      ====================
      
      Link: https://lore.kernel.org/r/20210201232609.3524451-1-elder@linaro.org
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f2539e14
    • Alex Elder's avatar
      net: ipa: fix two format specifier errors · 113b6ea0
      Alex Elder authored
      
      
      Fix two format specifiers that used %lu for a size_t in "ipa_mem.c".
      
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      113b6ea0
    • Alex Elder's avatar
      net: ipa: use the right accessor in ipa_endpoint_status_skip() · c13899f1
      Alex Elder authored
      
      
      When extracting the destination endpoint ID from the status in
      ipa_endpoint_status_skip(), u32_get_bits() is used.  This happens to
      work, but it's wrong: the structure field is only 8 bits wide
      instead of 32.
      
      Fix this by using u8_get_bits() to get the destination endpoint ID.
      
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c13899f1
    • Alex Elder's avatar
      net: ipa: be explicit about endianness · 088f8a23
      Alex Elder authored
      
      
      Sparse warns that the assignment of the metadata mask for a QMAP
      endpoint in ipa_endpoint_init_hdr_metadata_mask() is a bad
      assignment.  We know we want the mask value to be big endian, even
      though the value we write is in host byte order.  Use a __force
      tag to indicate we really mean it.
      
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      088f8a23
    • Alex Elder's avatar
      net: ipa: add a missing __iomem attribute · e6cdd6d8
      Alex Elder authored
      
      
      The virt local variable in gsi_channel_state() does not have an
      __iomem attribute but should.  Fix this.
      
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Reviewed-by: default avatarAmy Parker <enbyamy@gmail.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      e6cdd6d8
    • Dan Carpenter's avatar
      net: ipa: pass correct dma_handle to dma_free_coherent() · 4ace7a6e
      Dan Carpenter authored
      The "ring->addr = addr;" assignment is done a few lines later so we
      can't use "ring->addr" yet.  The correct dma_handle is "addr".
      
      Fixes: 650d1603
      
       ("soc: qcom: ipa: the generic software interface")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Reviewed-by: default avatarAlex Elder <elder@linaro.org>
      Link: https://lore.kernel.org/r/YBjpTU2oejkNIULT@mwanda
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      4ace7a6e
    • Heiner Kallweit's avatar
      r8169: fix WoL on shutdown if CONFIG_DEBUG_SHIRQ is set · cc9f07a8
      Heiner Kallweit authored
      So far phy_disconnect() is called before free_irq(). If CONFIG_DEBUG_SHIRQ
      is set and interrupt is shared, then free_irq() creates an "artificial"
      interrupt by calling the interrupt handler. The "link change" flag is set
      in the interrupt status register, causing phylib to eventually call
      phy_suspend(). Because the net_device is detached from the PHY already,
      the PHY driver can't recognize that WoL is configured and powers down the
      PHY.
      
      Fixes: f1e911d5
      
       ("r8169: add basic phylib support")
      Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
      Link: https://lore.kernel.org/r/fe732c2c-a473-9088-3974-df83cfbd6efd@gmail.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      cc9f07a8
    • Sabyrzhan Tasbolatov's avatar
      net/rds: restrict iovecs length for RDS_CMSG_RDMA_ARGS · a11148e6
      Sabyrzhan Tasbolatov authored
      
      
      syzbot found WARNING in rds_rdma_extra_size [1] when RDS_CMSG_RDMA_ARGS
      control message is passed with user-controlled
      0x40001 bytes of args->nr_local, causing order >= MAX_ORDER condition.
      
      The exact value 0x40001 can be checked with UIO_MAXIOV which is 0x400.
      So for kcalloc() 0x400 iovecs with sizeof(struct rds_iovec) = 0x10
      is the closest limit, with 0x10 leftover.
      
      Same condition is currently done in rds_cmsg_rdma_args().
      
      [1] WARNING: mm/page_alloc.c:5011
      [..]
      Call Trace:
       alloc_pages_current+0x18c/0x2a0 mm/mempolicy.c:2267
       alloc_pages include/linux/gfp.h:547 [inline]
       kmalloc_order+0x2e/0xb0 mm/slab_common.c:837
       kmalloc_order_trace+0x14/0x120 mm/slab_common.c:853
       kmalloc_array include/linux/slab.h:592 [inline]
       kcalloc include/linux/slab.h:621 [inline]
       rds_rdma_extra_size+0xb2/0x3b0 net/rds/rdma.c:568
       rds_rm_size net/rds/send.c:928 [inline]
      
      Reported-by: default avatar <syzbot+1bd2b07f93745fa38425@syzkaller.appspotmail.com>
      Signed-off-by: default avatarSabyrzhan Tasbolatov <snovitoll@gmail.com>
      Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@oracle.com>
      Link: https://lore.kernel.org/r/20210201203233.1324704-1-snovitoll@gmail.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a11148e6
    • Stefan Chulski's avatar
      net: mvpp2: TCAM entry enable should be written after SRAM data · 43f4a20a
      Stefan Chulski authored
      Last TCAM data contains TCAM enable bit.
      It should be written after SRAM data before entry enabled.
      
      Fixes: 3f518509
      
       ("ethernet: Add new driver for Marvell Armada 375 network unit")
      Signed-off-by: default avatarStefan Chulski <stefanc@marvell.com>
      Link: https://lore.kernel.org/r/1612172139-28343-1-git-send-email-stefanc@marvell.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      43f4a20a
    • Xie He's avatar
      net: lapb: Copy the skb before sending a packet · 88c7a9fd
      Xie He authored
      When sending a packet, we will prepend it with an LAPB header.
      This modifies the shared parts of a cloned skb, so we should copy the
      skb rather than just clone it, before we prepend the header.
      
      In "Documentation/networking/driver.rst" (the 2nd point), it states
      that drivers shouldn't modify the shared parts of a cloned skb when
      transmitting.
      
      The "dev_queue_xmit_nit" function in "net/core/dev.c", which is called
      when an skb is being sent, clones the skb and sents the clone to
      AF_PACKET sockets. Because the LAPB drivers first remove a 1-byte
      pseudo-header before handing over the skb to us, if we don't copy the
      skb before prepending the LAPB header, the first byte of the packets
      received on AF_PACKET sockets can be corrupted.
      
      Fixes: 1da177e4
      
       ("Linux-2.6.12-rc2")
      Signed-off-by: default avatarXie He <xie.he.0141@gmail.com>
      Acked-by: default avatarMartin Schiller <ms@dev.tdt.de>
      Link: https://lore.kernel.org/r/20210201055706.415842-1-xie.he.0141@gmail.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      88c7a9fd
    • Jakub Kicinski's avatar
      Merge tag 'mac80211-for-net-2021-02-02' of... · f418bad6
      Jakub Kicinski authored
      
      Merge tag 'mac80211-for-net-2021-02-02' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
      
      Johannes Berg says:
      
      ====================
      Two fixes:
       - station rate tables were not updated correctly
         after association, leading to bad configuration
       - rtl8723bs (staging) was initializing data incorrectly
         after the previous fix and needed to move the init
         later
      
      * tag 'mac80211-for-net-2021-02-02' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211:
        staging: rtl8723bs: Move wiphy setup to after reading the regulatory settings from the chip
        mac80211: fix station rate table updates on assoc
      ====================
      
      Link: https://lore.kernel.org/r/20210202143505.37610-1-johannes@sipsolutions.net
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f418bad6
  2. Feb 02, 2021
    • Maor Dickman's avatar
      net/mlx5e: Release skb in case of failure in tc update skb · a34ffec8
      Maor Dickman authored
      In case of failure in tc update skb the packet is dropped
      without freeing the skb.
      
      Fixed by freeing the skb in case failure in tc update skb.
      
      Fixes: d6d27782 ("net/mlx5: E-Switch, Restore chain id on miss")
      Fixes: c7569097
      
       ("net/mlx5e: Add tc chains offload support for nic flows")
      Signed-off-by: default avatarMaor Dickman <maord@nvidia.com>
      Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      a34ffec8
    • Maxim Mikityanskiy's avatar
      net/mlx5e: Update max_opened_tc also when channels are closed · 5a2ba25a
      Maxim Mikityanskiy authored
      max_opened_tc is used for stats, so that potentially non-zero stats
      won't disappear when num_tc decreases. However, mlx5e_setup_tc_mqprio
      fails to update it in the flow where channels are closed.
      
      This commit fixes it. The new value of priv->channels.params.num_tc is
      always checked on exit. In case of errors it will just be the old value,
      and in case of success it will be the updated value.
      
      Fixes: 05909bab
      
       ("net/mlx5e: Avoid reset netdev stats on configuration changes")
      Signed-off-by: default avatarMaxim Mikityanskiy <maximmi@mellanox.com>
      Reviewed-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      5a2ba25a
    • Maor Gottlieb's avatar
      net/mlx5: Fix leak upon failure of rule creation · a5bfe6b4
      Maor Gottlieb authored
      When creation of a new rule that requires allocation of an FTE fails,
      need to call to tree_put_node on the FTE in order to release its'
      resource.
      
      Fixes: cefc2355
      
       ("net/mlx5: Fix FTE cleanup")
      Signed-off-by: default avatarMaor Gottlieb <maorg@nvidia.com>
      Reviewed-by: default avatarAlaa Hleihel <alaa@nvidia.com>
      Reviewed-by: default avatarMark Bloch <mbloch@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      a5bfe6b4
    • Daniel Jurgens's avatar
      net/mlx5: Fix function calculation for page trees · ed5e83a3
      Daniel Jurgens authored
      The function calculation always results in a value of 0. This works
      generally, but when the release all pages feature is enabled it will
      result in crashes.
      
      Fixes: 0aa12847
      
       ("net/mlx5: Maintain separate page trees for ECPF and PF functions")
      Signed-off-by: default avatarDaniel Jurgens <danielj@nvidia.com>
      Reported-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      ed5e83a3
    • Jakub Kicinski's avatar
      Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue · 188fa104
      Jakub Kicinski authored
      Tony Nguyen says:
      
      ====================
      Intel Wired LAN Driver Updates 2021-02-01
      
      This series contains updates to igc and i40e drivers.
      
      Kai-Heng Feng fixes igc to report unknown speed and duplex during suspend
      as an attempted read will cause errors.
      
      Kevin Lo sets the default value to -IGC_ERR_NVM instead of success for
      writing shadow RAM as this could miss a timeout. Also propagates the return
      value for Flow Control configuration to properly pass on errors for igc.
      
      Aleksandr reverts commit 2ad1274f
      
       ("i40e: don't report link up for a VF
      who hasn't enabled queues") as this can cause link flapping.
      
      * '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
        i40e: Revert "i40e: don't report link up for a VF who hasn't enabled queues"
        igc: check return value of ret_val in igc_config_fc_after_link_up
        igc: set the default return value to -IGC_ERR_NVM in igc_write_nvm_srwr
        igc: Report speed and duplex as unknown when device is runtime suspended
      ====================
      
      Link: https://lore.kernel.org/r/20210201214618.852831-1-anthony.l.nguyen@intel.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      188fa104
    • Vincent Bernat's avatar
      docs: networking: swap words in icmp_errors_use_inbound_ifaddr doc · 31628201
      Vincent Bernat authored
      
      
      Signed-off-by: default avatarVincent Bernat <vincent@bernat.ch>
      Link: https://lore.kernel.org/r/20210130190518.854806-1-vincent@bernat.ch
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      31628201
    • Dongseok Yi's avatar
      udp: ipv4: manipulate network header of NATed UDP GRO fraglist · c3df39ac
      Dongseok Yi authored
      UDP/IP header of UDP GROed frag_skbs are not updated even after NAT
      forwarding. Only the header of head_skb from ip_finish_output_gso ->
      skb_gso_segment is updated but following frag_skbs are not updated.
      
      A call path skb_mac_gso_segment -> inet_gso_segment ->
      udp4_ufo_fragment -> __udp_gso_segment -> __udp_gso_segment_list
      does not try to update UDP/IP header of the segment list but copy
      only the MAC header.
      
      Update port, addr and check of each skb of the segment list in
      __udp_gso_segment_list. It covers both SNAT and DNAT.
      
      Fixes: 9fd1ff5d
      
       (udp: Support UDP fraglist GRO/GSO.)
      Signed-off-by: default avatarDongseok Yi <dseok.yi@samsung.com>
      Acked-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
      Link: https://lore.kernel.org/r/1611962007-80092-1-git-send-email-dseok.yi@samsung.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c3df39ac
    • Vadim Fedorenko's avatar
      net: ip_tunnel: fix mtu calculation · 28e104d0
      Vadim Fedorenko authored
      dev->hard_header_len for tunnel interface is set only when header_ops
      are set too and already contains full overhead of any tunnel encapsulation.
      That's why there is not need to use this overhead twice in mtu calc.
      
      Fixes: fdafed45
      
       ("ip_gre: set dev->hard_header_len and dev->needed_headroom properly")
      Reported-by: default avatarSlava Bacherikov <mail@slava.cc>
      Signed-off-by: default avatarVadim Fedorenko <vfedorenko@novek.ru>
      Link: https://lore.kernel.org/r/1611959267-20536-1-git-send-email-vfedorenko@novek.ru
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      28e104d0
    • Alexander Popov's avatar
      vsock: fix the race conditions in multi-transport support · c518adaf
      Alexander Popov authored
      There are multiple similar bugs implicitly introduced by the
      commit c0cfa2d8 ("vsock: add multi-transports support") and
      commit 6a2c0962 ("vsock: prevent transport modules unloading").
      
      The bug pattern:
       [1] vsock_sock.transport pointer is copied to a local variable,
       [2] lock_sock() is called,
       [3] the local variable is used.
      VSOCK multi-transport support introduced the race condition:
      vsock_sock.transport value may change between [1] and [2].
      
      Let's copy vsock_sock.transport pointer to local variables after
      the lock_sock() call.
      
      Fixes: c0cfa2d8
      
       ("vsock: add multi-transports support")
      Signed-off-by: default avatarAlexander Popov <alex.popov@linux.com>
      Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
      Reviewed-by: default avatarJorgen Hansen <jhansen@vmware.com>
      Link: https://lore.kernel.org/r/20210201084719.2257066-1-alex.popov@linux.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c518adaf
    • Alexander Ovechkin's avatar
      net: sched: replaced invalid qdisc tree flush helper in qdisc_replace · 938e0fcd
      Alexander Ovechkin authored
      Commit e5f0e8f8 ("net: sched: introduce and use qdisc tree flush/purge helpers")
      introduced qdisc tree flush/purge helpers, but erroneously used flush helper
      instead of purge helper in qdisc_replace function.
      This issue was found in our CI, that tests various qdisc setups by configuring
      qdisc and sending data through it. Call of invalid helper sporadically leads
      to corruption of vt_tree/cf_tree of hfsc_class that causes kernel oops:
      
       Oops: 0000 [#1] SMP PTI
       CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.11.0-8f6859df #1
       Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.10.2-0-g5f4c7b1-prebuilt.qemu-project.org 04/01/2014
       RIP: 0010:rb_insert_color+0x18/0x190
       Code: c3 31 c0 c3 0f 1f 40 00 66 2e 0f 1f 84 00 00 00 00 00 48 8b 07 48 85 c0 0f 84 05 01 00 00 48 8b 10 f6 c2 01 0f 85 34 01 00 00 <48> 8b 4a 08 49 89 d0 48 39 c1 74 7d 48 85 c9 74 32 f6 01 01 75 2d
       RSP: 0018:ffffc900000b8bb0 EFLAGS: 00010246
       RAX: ffff8881ef4c38b0 RBX: ffff8881d956e400 RCX: ffff8881ef4c38b0
       RDX: 0000000000000000 RSI: ffff8881d956f0a8 RDI: ffff8881d956e4b0
       RBP: 0000000000000000 R08: 000000d5c4e249da R09: 1600000000000000
       R10: ffffc900000b8be0 R11: ffffc900000b8b28 R12: 0000000000000001
       R13: 000000000000005a R14: ffff8881f0905000 R15: ffff8881f0387d00
       FS:  0000000000000000(0000) GS:ffff8881f8b00000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       CR2: 0000000000000008 CR3: 00000001f4796004 CR4: 0000000000060ee0
       Call Trace:
        <IRQ>
        init_vf.isra.19+0xec/0x250 [sch_hfsc]
        hfsc_enqueue+0x245/0x300 [sch_hfsc]
        ? fib_rules_lookup+0x12a/0x1d0
        ? __dev_queue_xmit+0x4b6/0x930
        ? hfsc_delete_class+0x250/0x250 [sch_hfsc]
        __dev_queue_xmit+0x4b6/0x930
        ? ip6_finish_output2+0x24d/0x590
        ip6_finish_output2+0x24d/0x590
        ? ip6_output+0x6c/0x130
        ip6_output+0x6c/0x130
        ? __ip6_finish_output+0x110/0x110
        mld_sendpack+0x224/0x230
        mld_ifc_timer_expire+0x186/0x2c0
        ? igmp6_group_dropped+0x200/0x200
        call_timer_fn+0x2d/0x150
        run_timer_softirq+0x20c/0x480
        ? tick_sched_do_timer+0x60/0x60
        ? tick_sched_timer+0x37/0x70
        __do_softirq+0xf7/0x2cb
        irq_exit+0xa0/0xb0
        smp_apic_timer_interrupt+0x74/0x150
        apic_timer_interrupt+0xf/0x20
        </IRQ>
      
      Fixes: e5f0e8f8
      
       ("net: sched: introduce and use qdisc tree flush/purge helpers")
      Signed-off-by: default avatarAlexander Ovechkin <ovov@yandex-team.ru>
      Reported-by: default avatarAlexander Kuznetsov <wwfq@yandex-team.ru>
      Acked-by: default avatarDmitry Monakhov <dmtrmonakhov@yandex-team.ru>
      Acked-by: default avatarDmitry Yakunin <zeil@yandex-team.ru>
      Acked-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Link: https://lore.kernel.org/r/20210201200049.299153-1-ovov@yandex-team.ru
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      938e0fcd
    • Lijun Pan's avatar
      ibmvnic: device remove has higher precedence over reset · 5e9eff5d
      Lijun Pan authored
      
      
      Returning -EBUSY in ibmvnic_remove() does not actually hold the
      removal procedure since driver core doesn't care for the return
      value (see __device_release_driver() in drivers/base/dd.c
      calling dev->bus->remove()) though vio_bus_remove
      (in arch/powerpc/platforms/pseries/vio.c) records the
      return value and passes it on. [1]
      
      During the device removal precedure, checking for resetting
      bit is dropped so that we can continue executing all the
      cleanup calls in the rest of the remove function. Otherwise,
      it can cause latent memory leaks and kernel crashes.
      
      [1] https://lore.kernel.org/linuxppc-dev/20210117101242.dpwayq6wdgfdzirl@pengutronix.de/T/#m48f5befd96bc9842ece2a3ad14f4c27747206a53
      Reported-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Fixes: 7d7195a0
      
       ("ibmvnic: Do not process device remove during device reset")
      Signed-off-by: default avatarLijun Pan <ljp@linux.ibm.com>
      Link: https://lore.kernel.org/r/20210129043402.95744-1-ljp@linux.ibm.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      5e9eff5d
    • DENG Qingfang's avatar
      net: dsa: mv88e6xxx: override existent unicast portvec in port_fdb_add · f72f2fb8
      DENG Qingfang authored
      Having multiple destination ports for a unicast address does not make
      sense.
      Make port_db_load_purge override existent unicast portvec instead of
      adding a new port bit.
      
      Fixes: 88472939
      
       ("net: dsa: mv88e6xxx: handle multiple ports in ATU")
      Signed-off-by: default avatarDENG Qingfang <dqfext@gmail.com>
      Reviewed-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Link: https://lore.kernel.org/r/20210130134334.10243-1-dqfext@gmail.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f72f2fb8
    • Aleksandr Loktionov's avatar
      i40e: Revert "i40e: don't report link up for a VF who hasn't enabled queues" · f559a356
      Aleksandr Loktionov authored
      This reverts commit 2ad1274f
      
      VF queues were not brought up when PF was brought up after being
      downed if the VF driver disabled VFs queues during PF down.
      This could happen in some older or external VF driver implementations.
      The problem was that PF driver used vf->queues_enabled as a condition
      to decide what link-state it would send out which caused the issue.
      
      Remove the check for vf->queues_enabled in the VF link notify.
      Now VF will always be notified of the current link status.
      Also remove the queues_enabled member from i40e_vf structure as it is
      not used anymore. Otherwise VNF implementation was broken and caused
      a link flap.
      
      The original commit was a workaround to avoid breaking existing VFs though
      it's really a fault of the VF code not the PF. The commit should be safe to
      revert as all of the VFs we know of have been fixed. Also, since we now
      know there is a related bug in the workaround, removing it is preferred.
      
      Fixes: 2ad1274f
      
       ("i40e: don't report link up for a VF who hasn't enabled")
      Signed-off-by: default avatarAleksandr Loktionov <aleksandr.loktionov@intel.com>
      Signed-off-by: default avatarArkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
      Tested-by: default avatarKonrad Jankowski <konrad0.jankowski@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      f559a356
    • Linus Torvalds's avatar
      Merge tag 'media/v5.11-3' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 88bb507a
      Linus Torvalds authored
      Pull media fixes from Mauro Carvalho Chehab:
       "The rockship rkisp1 driver will be promoted from staging in 5.11.
      
        While not too late, do a few uAPI changes which are needed to better
        support its functionalities"
      
      * tag 'media/v5.11-3' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        media: rockchip: rkisp1: extend uapi array sizes
        media: rockchip: rkisp1: carry ip version information
        media: rockchip: rkisp1: reduce number of histogram grid elements in uapi
        media: rkisp1: stats: mask the hist_bins values
        media: rkisp1: stats: remove a wrong cast to u8
        media: rkisp1: uapi: change hist_bins array type from __u16 to __u32
      88bb507a
    • Hans de Goede's avatar
      staging: rtl8723bs: Move wiphy setup to after reading the regulatory settings from the chip · 50af06d4
      Hans de Goede authored
      Commit 81f153fa ("staging: rtl8723bs: fix wireless regulatory API
      misuse") moved the wiphy_apply_custom_regulatory() call to earlier in the
      driver's init-sequence, so that it gets called before wiphy_register().
      
      But at this point in time the eFuses which code the regulatory-settings
      for the chip have not been read by the driver yet, causing
      _rtw_reg_apply_flags() to set the IEEE80211_CHAN_DISABLED flag on *all*
      channels.
      
      On the device where I initially tested the fix, a Jumper EZpad 7 tablet,
      this does not cause any problems because shortly after init the
      rtw_reg_notifier() gets called fixing things up. I guess this happens
      into response to receiving a (broadcast) packet with regulatory info
      from the access-point ?
      
      But on another device with a RTL8723BS wifi chip, an Acer Switch 10E
      (SW3-016), the rtw_reg_notifier() never gets called. I assume that some
      fuse has been set on this device to ignore regulatory info received from
      access-points.
      
      This means that on the Acer the driver is stuck in a state with all
      channels disabled, leading to non working Wifi.
      
      We cannot move the wiphy_apply_custom_regulatory() call back, because
      that call must be made before the wiphy_register() call.
      
      Instead move the entire rtw_wdev_alloc() call to after the Efuses have
      been read, fixing all channels being disabled in the initial channel-map.
      
      Fixes: 81f153fa
      
       ("staging: rtl8723bs: fix wireless regulatory API misuse")
      Cc: Johannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Link: https://lore.kernel.org/r/20210201152956.370186-2-hdegoede@redhat.com
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      50af06d4
    • Kevin Lo's avatar
      igc: check return value of ret_val in igc_config_fc_after_link_up · b8811456
      Kevin Lo authored
      Check return value from ret_val to make error check actually work.
      
      Fixes: 4eb80801
      
       ("igc: Add setup link functionality")
      Signed-off-by: default avatarKevin Lo <kevlo@kevlo.org>
      Acked-by: default avatarSasha Neftin <sasha.neftin@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      b8811456
    • Kevin Lo's avatar
      igc: set the default return value to -IGC_ERR_NVM in igc_write_nvm_srwr · ebc8d125
      Kevin Lo authored
      This patch sets the default return value to -IGC_ERR_NVM in
      igc_write_nvm_srwr. Without this change it wouldn't lead to a shadow RAM
      write EEWR timeout.
      
      Fixes: ab405612
      
       ("igc: Add NVM support")
      Signed-off-by: default avatarKevin Lo <kevlo@kevlo.org>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      ebc8d125
    • Kai-Heng Feng's avatar
      igc: Report speed and duplex as unknown when device is runtime suspended · 2e99dedc
      Kai-Heng Feng authored
      Similar to commit 165ae7a8 ("igb: Report speed and duplex as unknown
      when device is runtime suspended"), if we try to read speed and duplex
      sysfs while the device is runtime suspended, igc will complain and
      stops working:
      
      [  123.449883] igc 0000:03:00.0 enp3s0: PCIe link lost, device now detached
      [  123.450052] BUG: kernel NULL pointer dereference, address: 0000000000000008
      [  123.450056] #PF: supervisor read access in kernel mode
      [  123.450058] #PF: error_code(0x0000) - not-present page
      [  123.450059] PGD 0 P4D 0
      [  123.450064] Oops: 0000 [#1] SMP NOPTI
      [  123.450068] CPU: 0 PID: 2525 Comm: udevadm Tainted: G     U  W  OE     5.10.0-1002-oem #2+rkl2-Ubuntu
      [  123.450078] RIP: 0010:igc_rd32+0x1c/0x90 [igc]
      [  123.450080] Code: c0 5d c3 b8 fd ff ff ff c3 0f 1f 44 00 00 0f 1f 44 00 00 55 89 f0 48 89 e5 41 56 41 55 41 54 49 89 c4 53 48 8b 57 08 48 01 d0 <44> 8b 28 41 83 fd ff 74 0c 5b 44 89 e8 41 5c 41 5d 4
      
      [  123.450083] RSP: 0018:ffffb0d100d6fcc0 EFLAGS: 00010202
      [  123.450085] RAX: 0000000000000008 RBX: ffffb0d100d6fd30 RCX: 0000000000000000
      [  123.450087] RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffff945a12716c10
      [  123.450089] RBP: ffffb0d100d6fce0 R08: ffff945a12716550 R09: ffff945a09874000
      [  123.450090] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000008
      [  123.450092] R13: ffff945a12716000 R14: ffff945a037da280 R15: ffff945a037da290
      [  123.450094] FS:  00007f3b34c868c0(0000) GS:ffff945b89200000(0000) knlGS:0000000000000000
      [  123.450096] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  123.450098] CR2: 0000000000000008 CR3: 00000001144de006 CR4: 0000000000770ef0
      [  123.450100] PKRU: 55555554
      [  123.450101] Call Trace:
      [  123.450111]  igc_ethtool_get_link_ksettings+0xd6/0x1b0 [igc]
      [  123.450118]  __ethtool_get_link_ksettings+0x71/0xb0
      [  123.450123]  duplex_show+0x74/0xc0
      [  123.450129]  dev_attr_show+0x1d/0x40
      [  123.450134]  sysfs_kf_seq_show+0xa1/0x100
      [  123.450137]  kernfs_seq_show+0x27/0x30
      [  123.450142]  seq_read+0xb7/0x400
      [  123.450148]  ? common_file_perm+0x72/0x170
      [  123.450151]  kernfs_fop_read+0x35/0x1b0
      [  123.450155]  vfs_read+0xb5/0x1b0
      [  123.450157]  ksys_read+0x67/0xe0
      [  123.450160]  __x64_sys_read+0x1a/0x20
      [  123.450164]  do_syscall_64+0x38/0x90
      [  123.450168]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      [  123.450170] RIP: 0033:0x7f3b351fe142
      [  123.450173] Code: c0 e9 c2 fe ff ff 50 48 8d 3d 3a ca 0a 00 e8 f5 19 02 00 0f 1f 44 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 0f 05 <48> 3d 00 f0 ff ff 77 56 c3 0f 1f 44 00 00 48 83 ec 28 48 89 54 24
      [  123.450174] RSP: 002b:00007fffef2ec138 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
      [  123.450177] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f3b351fe142
      [  123.450179] RDX: 0000000000001001 RSI: 00005644c047f070 RDI: 0000000000000003
      [  123.450180] RBP: 00007fffef2ec340 R08: 00005644c047f070 R09: 00007f3b352d9320
      [  123.450182] R10: 00005644c047c010 R11: 0000000000000246 R12: 00005644c047cbf0
      [  123.450184] R13: 00005644c047e6d0 R14: 0000000000000003 R15: 00007fffef2ec140
      [  123.450189] Modules linked in: rfcomm ccm cmac algif_hash algif_skcipher af_alg bnep toshiba_acpi industrialio toshiba_haps hp_accel lis3lv02d btusb btrtl btbcm btintel bluetooth ecdh_generic ecc joydev input_leds nls_iso8859_1 snd_sof_pci snd_sof_intel_byt snd_sof_intel_ipc snd_sof_intel_hda_common snd_soc_hdac_hda snd_hda_codec_hdmi snd_sof_xtensa_dsp snd_sof_intel_hda snd_sof snd_hda_ext_core snd_soc_acpi_intel_match snd_soc_acpi snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio snd_hda_intel snd_intel_dspcfg soundwire_intel soundwire_generic_allocation soundwire_cadence snd_hda_codec snd_hda_core ath10k_pci snd_hwdep intel_rapl_msr intel_rapl_common ath10k_core soundwire_bus snd_soc_core x86_pkg_temp_thermal ath intel_powerclamp snd_compress ac97_bus snd_pcm_dmaengine mac80211 snd_pcm coretemp snd_seq_midi snd_seq_midi_event snd_rawmidi kvm_intel cfg80211 snd_seq snd_seq_device snd_timer mei_hdcp kvm libarc4 snd crct10dif_pclmul ghash_clmulni_intel aesni_intel
       mei_me dell_wmi
      [  123.450266]  dell_smbios soundcore sparse_keymap dcdbas crypto_simd cryptd mei dell_uart_backlight glue_helper ee1004 wmi_bmof intel_wmi_thunderbolt dell_wmi_descriptor mac_hid efi_pstore acpi_pad acpi_tad intel_cstate sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables autofs4 btrfs blake2b_generic raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq libcrc32c raid1 raid0 multipath linear dm_mirror dm_region_hash dm_log hid_generic usbhid hid i915 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops cec crc32_pclmul rc_core drm intel_lpss_pci i2c_i801 ahci igc intel_lpss i2c_smbus idma64 xhci_pci libahci virt_dma xhci_pci_renesas wmi video pinctrl_tigerlake
      [  123.450335] CR2: 0000000000000008
      [  123.450338] ---[ end trace 9f731e38b53c35cc ]---
      
      The more generic approach will be wrap get_link_ksettings() with begin()
      and complete() callbacks, and calls runtime resume and runtime suspend
      routine respectively. However, igc is like igb, runtime resume routine
      uses rtnl_lock() which upper ethtool layer also uses.
      
      So to prevent a deadlock on rtnl, take a different approach, use
      pm_runtime_suspended() to avoid reading register while device is runtime
      suspended.
      
      Fixes: 8c5ad0da
      
       ("igc: Add ethtool support")
      Signed-off-by: default avatarKai-Heng Feng <kai.heng.feng@canonical.com>
      Acked-by: default avatarSasha Neftin <sasha.neftin@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      2e99dedc
  3. Feb 01, 2021