1. 29 Jul, 2017 6 commits
    • Paolo Abeni's avatar
      udp6: fix socket leak on early demux · c9f2c1ae
      Paolo Abeni authored
      When an early demuxed packet reaches __udp6_lib_lookup_skb(), the
      sk reference is retrieved and used, but the relevant reference
      count is leaked and the socket destructor is never called.
      Beyond leaking the sk memory, if there are pending UDP packets
      in the receive queue, even the related accounted memory is leaked.
      
      In the long run, this will cause persistent forward allocation errors
      and no UDP skbs (both ipv4 and ipv6) will be able to reach the
      user-space.
      
      Fix this by explicitly accessing the early demux reference before
      the lookup, and properly decreasing the socket reference count
      after usage.
      
      Also drop the skb_steal_sock() in __udp6_lib_lookup_skb(), and
      the now obsoleted comment about "socket cache".
      
      The newly added code is derived from the current ipv4 code for the
      similar path.
      
      v1 -> v2:
        fixed the __udp6_lib_rcv() return code for resubmission,
        as suggested by Eric
      Reported-by: default avatarSam Edwards <CFSworks@gmail.com>
      Reported-by: default avatarMarc Haber <mh+netdev@zugschlus.de>
      Fixes: 5425077d ("net: ipv6: Add early demux handler for UDP unicast")
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c9f2c1ae
    • Sunil Goutham's avatar
      net: thunderx: Fix BGX transmit stall due to underflow · 500268e9
      Sunil Goutham authored
      For SGMII/RGMII/QSGMII interfaces when physical link goes down
      while traffic is high is resulting in underflow condition being set
      on that specific BGX's LMAC. Which assets a backpresure and VNIC stops
      transmitting packets.
      
      This is due to BGX being disabled in link status change callback while
      packet is in transit. This patch fixes this issue by not disabling BGX
      but instead just disables packet Rx and Tx.
      Signed-off-by: default avatarSunil Goutham <sgoutham@cavium.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      500268e9
    • Jason Wang's avatar
      Revert "vhost: cache used event for better performance" · 8d65843c
      Jason Wang authored
      This reverts commit 809ecb9b. Since it
      was reported to break vhost_net. We want to cache used event and use
      it to check for notification. The assumption was that guest won't move
      the event idx back, but this could happen in fact when 16 bit index
      wraps around after 64K entries.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8d65843c
    • David S. Miller's avatar
      Merge tag 'mlx5-fixes-2017-07-27-V2' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · 90fecc14
      David S. Miller authored
      Saeed Mahameed says:
      
      ====================
      Mellanox, mlx5 fixes 2017-07-27
      
      This series contains some misc fixes to the mlx5 driver.
      
      Please pull and let me know if there's any problem.
      
      V1->V2:
       - removed redundant braces
      
      for -stable:
      4.7
      net/mlx5: Fix command bad flow on command entry allocation failure
      
      4.9
      net/mlx5: Consider tx_enabled in all modes on remap
      net/mlx5e: Fix outer_header_zero() check size
      
      4.10
      net/mlx5: Fix mlx5_add_flow_rules call with correct num of dests
      
      4.11
      net/mlx5: Fix mlx5_ifc_mtpps_reg_bits structure size
      net/mlx5e: Add field select to MTPPS register
      net/mlx5e: Fix broken disable 1PPS flow
      net/mlx5e: Change 1PPS out scheme
      net/mlx5e: Add missing support for PTP_CLK_REQ_PPS request
      net/mlx5e: Fix wrong delay calculation for overflow check scheduling
      net/mlx5e: Schedule overflow check work to mlx5e workqueue
      
      4.12
      net/mlx5: Fix command completion after timeout access invalid structure
      net/mlx5e: IPoIB, Modify add/remove underlay QPN flows
      
      I hope this is not too much, but most of the patches do apply cleanly on -stable.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      90fecc14
    • WANG Cong's avatar
      team: use a larger struct for mac address · 996f6e12
      WANG Cong authored
      IPv6 tunnels use sizeof(struct in6_addr) as dev->addr_len,
      but in many places especially bonding, we use struct sockaddr
      to copy and set mac addr, this could lead to stack out-of-bounds
      access.
      
      Fix it by using a larger address storage like bonding.
      Reported-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Cc: Jiri Pirko <jiri@resnulli.us>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      996f6e12
    • WANG Cong's avatar
      net: check dev->addr_len for dev_set_mac_address() · 0254e0c6
      WANG Cong authored
      Historically, dev_ifsioc() uses struct sockaddr as mac
      address definition, this is why dev_set_mac_address()
      accepts a struct sockaddr pointer as input but now we
      have various types of mac addresse whose lengths
      are up to MAX_ADDR_LEN, longer than struct sockaddr,
      and saved in dev->addr_len.
      
      It is too late to fix dev_ifsioc() due to API
      compatibility, so just reject those larger than
      sizeof(struct sockaddr), otherwise we would read
      and use some random bytes from kernel stack.
      
      Fortunately, only a few IPv6 tunnel devices have addr_len
      larger than sizeof(struct sockaddr) and they don't support
      ndo_set_mac_addr(). But with team driver, in lb mode, they
      can still be enslaved to a team master and make its mac addr
      length as the same.
      
      Cc: Jiri Pirko <jiri@resnulli.us>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0254e0c6
  2. 28 Jul, 2017 2 commits
    • Arnd Bergmann's avatar
      phy: bcm-ns-usb3: fix MDIO_BUS dependency · 245db3c3
      Arnd Bergmann authored
      The driver attempts to 'select MDIO_DEVICE', but the code
      is actually a loadable module when PHYLIB=m:
      
      drivers/phy/broadcom/phy-bcm-ns-usb3.o: In function `bcm_ns_usb3_mdiodev_phy_write':
      phy-bcm-ns-usb3.c:(.text.bcm_ns_usb3_mdiodev_phy_write+0x28): undefined reference to `mdiobus_write'
      drivers/phy/broadcom/phy-bcm-ns-usb3.o: In function `bcm_ns_usb3_module_exit':
      phy-bcm-ns-usb3.c:(.exit.text+0x18): undefined reference to `mdio_driver_unregister'
      drivers/phy/broadcom/phy-bcm-ns-usb3.o: In function `bcm_ns_usb3_module_init':
      phy-bcm-ns-usb3.c:(.init.text+0x18): undefined reference to `mdio_driver_register'
      phy-bcm-ns-usb3.c:(.init.text+0x38): undefined reference to `mdio_driver_unregister'
      
      Using 'depends on MDIO_BUS' instead will avoid the link error.
      
      Fixes: af850e14 ("phy: bcm-ns-usb3: add MDIO driver using proper bus layer")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      245db3c3
    • Arnd Bergmann's avatar
      net: phy: rework Kconfig settings for MDIO_BUS · 4c3464a8
      Arnd Bergmann authored
      I still see build errors in randconfig builds and have had this
      patch for a while to locally work around it:
      
      drivers/built-in.o: In function `xgene_mdio_probe':
      mux-core.c:(.text+0x352154): undefined reference to `of_mdiobus_register'
      mux-core.c:(.text+0x352168): undefined reference to `mdiobus_free'
      mux-core.c:(.text+0x3521c0): undefined reference to `mdiobus_alloc_size'
      
      The idea is that CONFIG_MDIO_BUS now reflects whether the mdio_bus
      code is built-in or a module, and other drivers that use the core
      code can simply depend on that, instead of having a complex
      dependency line.
      
      Fixes: 90eff909 ("net: phy: Allow splitting MDIO bus/device support from PHYs")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4c3464a8
  3. 27 Jul, 2017 20 commits
  4. 26 Jul, 2017 6 commits
  5. 25 Jul, 2017 6 commits