1. 17 4月, 2020 3 次提交
  2. 16 4月, 2020 2 次提交
    • J
      net: tulip: make early_486_chipsets static · ae5a44bb
      Jason Yan 提交于
      Fix the following sparse warning:
      
      drivers/net/ethernet/dec/tulip/tulip_core.c:1280:28: warning: symbol
      'early_486_chipsets' was not declared. Should it be static?
      Reported-by: NHulk Robot <hulkci@huawei.com>
      Signed-off-by: NJason Yan <yanaijie@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ae5a44bb
    • V
      net: mscc: ocelot: fix untagged packet drops when enslaving to vlan aware bridge · 87b0f983
      Vladimir Oltean 提交于
      To rehash a previous explanation given in commit 1c44ce56 ("net:
      mscc: ocelot: fix vlan_filtering when enslaving to bridge before link is
      up"), the switch driver operates the in a mode where a single VLAN can
      be transmitted as untagged on a particular egress port. That is the
      "native VLAN on trunk port" use case.
      
      The configuration for this native VLAN is driven in 2 ways:
       - Set the egress port rewriter to strip the VLAN tag for the native
         VID (as it is egress-untagged, after all).
       - Configure the ingress port to drop untagged and priority-tagged
         traffic, if there is no native VLAN. The intention of this setting is
         that a trunk port with no native VLAN should not accept untagged
         traffic.
      
      Since both of the above configurations for the native VLAN should only
      be done if VLAN awareness is requested, they are actually done from the
      ocelot_port_vlan_filtering function, after the basic procedure of
      toggling the VLAN awareness flag of the port.
      
      But there's a problem with that simplistic approach: we are trying to
      juggle with 2 independent variables from a single function:
       - Native VLAN of the port - its value is held in port->vid.
       - VLAN awareness state of the port - currently there are some issues
         here, more on that later*.
      The actual problem can be seen when enslaving the switch ports to a VLAN
      filtering bridge:
       0. The driver configures a pvid of zero for each port, when in
          standalone mode. While the bridge configures a default_pvid of 1 for
          each port that gets added as a slave to it.
       1. The bridge calls ocelot_port_vlan_filtering with vlan_aware=true.
          The VLAN-filtering-dependent portion of the native VLAN
          configuration is done, considering that the native VLAN is 0.
       2. The bridge calls ocelot_vlan_add with vid=1, pvid=true,
          untagged=true. The native VLAN changes to 1 (change which gets
          propagated to hardware).
       3. ??? - nobody calls ocelot_port_vlan_filtering again, to reapply the
          VLAN-filtering-dependent portion of the native VLAN configuration,
          for the new native VLAN of 1. One can notice that after toggling "ip
          link set dev br0 type bridge vlan_filtering 0 && ip link set dev br0
          type bridge vlan_filtering 1", the new native VLAN finally makes it
          through and untagged traffic finally starts flowing again. But
          obviously that shouldn't be needed.
      
      So it is clear that 2 independent variables need to both re-trigger the
      native VLAN configuration. So we introduce the second variable as
      ocelot_port->vlan_aware.
      
      *Actually both the DSA Felix driver and the Ocelot driver already had
      each its own variable:
       - Ocelot: ocelot_port_private->vlan_aware
       - Felix: dsa_port->vlan_filtering
      but the common Ocelot library needs to work with a single, common,
      variable, so there is some refactoring done to move the vlan_aware
      property from the private structure into the common ocelot_port
      structure.
      
      Fixes: 97bb69e1 ("net: mscc: ocelot: break apart ocelot_vlan_port_apply")
      Signed-off-by: NVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: NHoratiu Vultur <horatiu.vultur@microchip.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      87b0f983
  3. 15 4月, 2020 8 次提交
  4. 14 4月, 2020 2 次提交
    • A
      rtw88: avoid unused function warnings · 7dc7c416
      Arnd Bergmann 提交于
      The rtw88 driver defines emtpy functions with multiple indirections
      but gets one of these wrong:
      
      drivers/net/wireless/realtek/rtw88/pci.c:1347:12: error: 'rtw_pci_resume' defined but not used [-Werror=unused-function]
       1347 | static int rtw_pci_resume(struct device *dev)
            |            ^~~~~~~~~~~~~~
      drivers/net/wireless/realtek/rtw88/pci.c:1342:12: error: 'rtw_pci_suspend' defined but not used [-Werror=unused-function]
       1342 | static int rtw_pci_suspend(struct device *dev)
      
      Better simplify it to rely on the conditional reference in
      SIMPLE_DEV_PM_OPS(), and mark the functions as __maybe_unused to avoid
      warning about it.
      
      I'm not sure if these are needed at all given that the functions
      don't do anything, but they were only recently added.
      
      Fixes: 44bc17f7 ("rtw88: support wowlan feature for 8822c")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/20200408185413.218643-1-arnd@arndb.de
      7dc7c416
    • T
      mac80211_hwsim: Use kstrndup() in place of kasprintf() · 7ea86204
      Tuomas Tynkkynen 提交于
      syzbot reports a warning:
      
      precision 33020 too large
      WARNING: CPU: 0 PID: 9618 at lib/vsprintf.c:2471 set_precision+0x150/0x180 lib/vsprintf.c:2471
       vsnprintf+0xa7b/0x19a0 lib/vsprintf.c:2547
       kvasprintf+0xb2/0x170 lib/kasprintf.c:22
       kasprintf+0xbb/0xf0 lib/kasprintf.c:59
       hwsim_del_radio_nl+0x63a/0x7e0 drivers/net/wireless/mac80211_hwsim.c:3625
       genl_family_rcv_msg_doit net/netlink/genetlink.c:672 [inline]
       ...
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      
      Thus it seems that kasprintf() with "%.*s" format can not be used for
      duplicating a string with arbitrary length. Replace it with kstrndup().
      
      Note that later this string is limited to NL80211_WIPHY_NAME_MAXLEN == 64,
      but the code is simpler this way.
      
      Reported-by: syzbot+6693adf1698864d21734@syzkaller.appspotmail.com
      Reported-by: syzbot+a4aee3f42d7584d76761@syzkaller.appspotmail.com
      Cc: stable@kernel.org
      Signed-off-by: NTuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
      Link: https://lore.kernel.org/r/20200410123257.14559-1-tuomas.tynkkynen@iki.fi
      [johannes: add note about length limit]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      7ea86204
  5. 13 4月, 2020 5 次提交
  6. 12 4月, 2020 1 次提交
    • C
      net: phy: marvell: Fix pause frame negotiation · 3b72f84f
      Clemens Gruber 提交于
      The negotiation of flow control / pause frame modes was broken since
      commit fcf1f59a ("net: phy: marvell: rearrange to use
      genphy_read_lpa()") moved the setting of phydev->duplex below the
      phy_resolve_aneg_pause call. Due to a check of DUPLEX_FULL in that
      function, phydev->pause was no longer set.
      
      Fix it by moving the parsing of the status variable before the blocks
      dealing with the pause frames.
      
      As the Marvell 88E1510 datasheet does not specify the timing between the
      link status and the "Speed and Duplex Resolved" bit, we have to force
      the link down as long as the resolved bit is not set, to avoid reporting
      link up before we even have valid Speed/Duplex.
      
      Tested with a Marvell 88E1510 (RGMII to Copper/1000Base-T)
      
      Fixes: fcf1f59a ("net: phy: marvell: rearrange to use genphy_read_lpa()")
      Signed-off-by: NClemens Gruber <clemens.gruber@pqgruber.com>
      Signed-off-by: NJakub Kicinski <kuba@kernel.org>
      3b72f84f
  7. 10 4月, 2020 1 次提交
    • T
      net: macsec: fix using wrong structure in macsec_changelink() · 022e9d60
      Taehee Yoo 提交于
      In the macsec_changelink(), "struct macsec_tx_sa tx_sc" is used to
      store "macsec_secy.tx_sc".
      But, the struct type of tx_sc is macsec_tx_sc, not macsec_tx_sa.
      So, the macsec_tx_sc should be used instead.
      
      Test commands:
          ip link add dummy0 type dummy
          ip link add macsec0 link dummy0 type macsec
          ip link set macsec0 type macsec encrypt off
      
      Splat looks like:
      [61119.963483][ T9335] ==================================================================
      [61119.964709][ T9335] BUG: KASAN: slab-out-of-bounds in macsec_changelink.part.34+0xb6/0x200 [macsec]
      [61119.965787][ T9335] Read of size 160 at addr ffff888020d69c68 by task ip/9335
      [61119.966699][ T9335]
      [61119.966979][ T9335] CPU: 0 PID: 9335 Comm: ip Not tainted 5.6.0+ #503
      [61119.967791][ T9335] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
      [61119.968914][ T9335] Call Trace:
      [61119.969324][ T9335]  dump_stack+0x96/0xdb
      [61119.969809][ T9335]  ? macsec_changelink.part.34+0xb6/0x200 [macsec]
      [61119.970554][ T9335]  print_address_description.constprop.5+0x1be/0x360
      [61119.971294][ T9335]  ? macsec_changelink.part.34+0xb6/0x200 [macsec]
      [61119.971973][ T9335]  ? macsec_changelink.part.34+0xb6/0x200 [macsec]
      [61119.972703][ T9335]  __kasan_report+0x12a/0x170
      [61119.973323][ T9335]  ? macsec_changelink.part.34+0xb6/0x200 [macsec]
      [61119.973942][ T9335]  kasan_report+0xe/0x20
      [61119.974397][ T9335]  check_memory_region+0x149/0x1a0
      [61119.974866][ T9335]  memcpy+0x1f/0x50
      [61119.975209][ T9335]  macsec_changelink.part.34+0xb6/0x200 [macsec]
      [61119.975825][ T9335]  ? macsec_get_stats64+0x3e0/0x3e0 [macsec]
      [61119.976451][ T9335]  ? kernel_text_address+0x111/0x120
      [61119.976990][ T9335]  ? pskb_expand_head+0x25f/0xe10
      [61119.977503][ T9335]  ? stack_trace_save+0x82/0xb0
      [61119.977986][ T9335]  ? memset+0x1f/0x40
      [61119.978397][ T9335]  ? __nla_validate_parse+0x98/0x1ab0
      [61119.978936][ T9335]  ? macsec_alloc_tfm+0x90/0x90 [macsec]
      [61119.979511][ T9335]  ? __kasan_slab_free+0x111/0x150
      [61119.980021][ T9335]  ? kfree+0xce/0x2f0
      [61119.980700][ T9335]  ? netlink_trim+0x196/0x1f0
      [61119.981420][ T9335]  ? nla_memcpy+0x90/0x90
      [61119.982036][ T9335]  ? register_lock_class+0x19e0/0x19e0
      [61119.982776][ T9335]  ? memcpy+0x34/0x50
      [61119.983327][ T9335]  __rtnl_newlink+0x922/0x1270
      [ ... ]
      
      Fixes: 3cf3227a ("net: macsec: hardware offloading infrastructure")
      Signed-off-by: NTaehee Yoo <ap420073@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      022e9d60
  8. 09 4月, 2020 10 次提交
  9. 08 4月, 2020 4 次提交
  10. 07 4月, 2020 4 次提交