1. 03 Dec, 2016 20 commits
  2. 02 Dec, 2016 20 commits
    • Linus Torvalds's avatar
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 8dc0f265
      Linus Torvalds authored
      Pull ARM SoC fixes from Arnd Bergmann:
       "This should be the last set of bugfixes for arm-soc in v4.9. None of
        these are critical regressions, but it would be nice to still get them
        merged.
      
         - On the Juno platform, the idle latency was described wrong, leading
           to suboptimal cpuidle tuning.
      
         - Also on the same platform, PCI I/O space was set up incorrectly and
           could not work.
      
         - On the sti platform, a syntactically incorrect DT entry caused
           warnings.
      
         - The newly added 'gr8' platform has somewhat confusing file names,
           which we rename for consistency"
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        arm64: dts: juno: fix cluster sleep state entry latency on all SoC versions
        arm64: dts: juno: Correct PCI IO window
        ARM: dts: STiH407-family: fix i2c nodes
        ARM: gr8: Rename the DTSI and relevant DTS
      8dc0f265
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 8bca927f
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Lots more phydev and probe error path leaks in various drivers by
          Johan Hovold.
      
       2) Fix race in packet_set_ring(), from Philip Pettersson.
      
       3) Use after free in dccp_invalid_packet(), from Eric Dumazet.
      
       4) Signnedness overflow in SO_{SND,RCV}BUFFORCE, also from Eric
          Dumazet.
      
       5) When tunneling between ipv4 and ipv6 we can be left with the wrong
          skb->protocol value as we enter the IPSEC engine and this causes all
          kinds of problems. Set it before the output path does any
          dst_output() calls, from Eli Cooper.
      
       6) bcmgenet uses wrong device struct pointer in DMA API calls, fix from
          Florian Fainelli.
      
       7) Various netfilter nat bug fixes from FLorian Westphal.
      
       8) Fix memory leak in ipvlan_link_new(), from Gao Feng.
      
       9) Locking fixes, particularly wrt. socket lookups, in l2tp from
          Guillaume Nault.
      
      10) Avoid invoking rhash teardowns in atomic context by moving netlink
          cb->done() dump completion from a worker thread. Fix from Herbert
          Xu.
      
      11) Buffer refcount problems in tun and macvtap on errors, from Jason
          Wang.
      
      12) We don't set Kconfig symbol DEFAULT_TCP_CONG properly when the user
          selects BBR. Fix from Julian Wollrath.
      
      13) Fix deadlock in transmit path on altera TSE driver, from Lino
          Sanfilippo.
      
      14) Fix unbalanced reference counting in dsa_switch_tree, from Nikita
          Yushchenko.
      
      15) tc_tunnel_key needs to be properly exported to userspace via uapi,
          fix from Roi Dayan.
      
      16) rds_tcp_init_net() doesn't unregister notifier in error path, fix
          from Sowmini Varadhan.
      
      17) Stale packet header pointer access after pskb_expand_head() in
          genenve driver, fix from Sabrina Dubroca.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (103 commits)
        net: avoid signed overflows for SO_{SND|RCV}BUFFORCE
        geneve: avoid use-after-free of skb->data
        tipc: check minimum bearer MTU
        net: renesas: ravb: unintialized return value
        sh_eth: remove unchecked interrupts for RZ/A1
        net: bcmgenet: Utilize correct struct device for all DMA operations
        NET: usb: qmi_wwan: add support for Telit LE922A PID 0x1040
        cdc_ether: Fix handling connection notification
        ip6_offload: check segs for NULL in ipv6_gso_segment.
        RDS: TCP: unregister_netdevice_notifier() in error path of rds_tcp_init_net
        Revert: "ip6_tunnel: Update skb->protocol to ETH_P_IPV6 in ip6_tnl_xmit()"
        ipv6: Set skb->protocol properly for local output
        ipv4: Set skb->protocol properly for local output
        packet: fix race condition in packet_set_ring
        net: ethernet: altera: TSE: do not use tx queue lock in tx completion handler
        net: ethernet: altera: TSE: Remove unneeded dma sync for tx buffers
        net: ethernet: stmmac: fix of-node and fixed-link-phydev leaks
        net: ethernet: stmmac: platform: fix outdated function header
        net: ethernet: stmmac: dwmac-meson8b: fix probe error path
        net: ethernet: stmmac: dwmac-generic: fix probe error path
        ...
      8bca927f
    • Eric Dumazet's avatar
      net: avoid signed overflows for SO_{SND|RCV}BUFFORCE · b98b0bc8
      Eric Dumazet authored
      CAP_NET_ADMIN users should not be allowed to set negative
      sk_sndbuf or sk_rcvbuf values, as it can lead to various memory
      corruptions, crashes, OOM...
      
      Note that before commit 82981930 ("net: cleanups in
      sock_setsockopt()"), the bug was even more serious, since SO_SNDBUF
      and SO_RCVBUF were vulnerable.
      
      This needs to be backported to all known linux kernels.
      
      Again, many thanks to syzkaller team for discovering this gem.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b98b0bc8
    • Sabrina Dubroca's avatar
      geneve: avoid use-after-free of skb->data · 5b010147
      Sabrina Dubroca authored
      geneve{,6}_build_skb can end up doing a pskb_expand_head(), which
      makes the ip_hdr(skb) reference we stashed earlier stale. Since it's
      only needed as an argument to ip_tunnel_ecn_encap(), move this
      directly in the function call.
      
      Fixes: 08399efc ("geneve: ensure ECN info is handled properly in all tx/rx paths")
      Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
      Reviewed-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5b010147
    • Michal Kubeček's avatar
      tipc: check minimum bearer MTU · 3de81b75
      Michal Kubeček authored
      Qian Zhang (张谦) reported a potential socket buffer overflow in
      tipc_msg_build() which is also known as CVE-2016-8632: due to
      insufficient checks, a buffer overflow can occur if MTU is too short for
      even tipc headers. As anyone can set device MTU in a user/net namespace,
      this issue can be abused by a regular user.
      
      As agreed in the discussion on Ben Hutchings' original patch, we should
      check the MTU at the moment a bearer is attached rather than for each
      processed packet. We also need to repeat the check when bearer MTU is
      adjusted to new device MTU. UDP case also needs a check to avoid
      overflow when calculating bearer MTU.
      
      Fixes: b97bf3fd ("[TIPC] Initial merge")
      Signed-off-by: default avatarMichal Kubecek <mkubecek@suse.cz>
      Reported-by: default avatarQian Zhang (张谦) <zhangqian-c@360.cn>
      Acked-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3de81b75
    • David S. Miller's avatar
      Merge tag 'linux-can-fixes-for-4.9-20161201' of... · f0d21e89
      David S. Miller authored
      Merge tag 'linux-can-fixes-for-4.9-20161201' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can
      
      Marc Kleine-Budde says:
      
      ====================
      pull-request: can 2016-12-02
      
      this is a pull request for net/master.
      
      There are two patches by Stephane Grosjean, who adds support for the new
      PCAN-USB X6 USB interface to the pcan_usb driver.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f0d21e89
    • Dan Carpenter's avatar
      net: renesas: ravb: unintialized return value · 50d5aa4c
      Dan Carpenter authored
      We want to set the other "err" variable here so that we can return it
      later.  My version of GCC misses this issue but I caught it with a
      static checker.
      
      Fixes: 9f70eb33 ("net: ethernet: renesas: ravb: fix fixed-link phydev leaks")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Acked-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Reviewed-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      50d5aa4c
    • David S. Miller's avatar
      Merge tag 'wireless-drivers-next-for-davem-2016-12-01' of... · ab17cb1f
      David S. Miller authored
      Merge tag 'wireless-drivers-next-for-davem-2016-12-01' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
      
      Kalle Valo says:
      
      ====================
      wireless-drivers-next patches for 4.10
      
      Major changes:
      
      rsi
      
      * filter rx frames
      * configure tx power
      * make it possible to select antenna
      * support 802.11d
      
      brcmfmac
      
      * cleanup of scheduled scan code
      * support for bcm43341 chipset with different chip id
      * support rev6 of PCIe device interface
      
      ath10k
      
      * add spectral scan support for QCA6174 and QCA9377 families
      * show used tx bitrate with 10.4 firmware
      
      wil6210
      
      * add power save mode support
      * add abort scan functionality
      * add support settings retry limit for short frames
      
      bcma
      
      * add Dell Inspiron 3148
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ab17cb1f
    • Chris Brandt's avatar
      sh_eth: remove unchecked interrupts for RZ/A1 · 33d446db
      Chris Brandt authored
      When streaming a lot of data and the RZ/A1 can't keep up, some status bits
      will get set that are not being checked or cleared which cause the
      following messages and the Ethernet driver to stop working. This
      patch fixes that issue.
      
      irq 21: nobody cared (try booting with the "irqpoll" option)
      handlers:
      [<c036b71c>] sh_eth_interrupt
      Disabling IRQ #21
      
      Fixes: db893473 ("sh_eth: Add support for r7s72100")
      Signed-off-by: default avatarChris Brandt <chris.brandt@renesas.com>
      Acked-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      33d446db
    • Florian Fainelli's avatar
      net: bcmgenet: Utilize correct struct device for all DMA operations · 8c4799ac
      Florian Fainelli authored
      __bcmgenet_tx_reclaim() and bcmgenet_free_rx_buffers() are not using the
      same struct device during unmap that was used for the map operation,
      which makes DMA-API debugging warn about it. Fix this by always using
      &priv->pdev->dev throughout the driver, using an identical device
      reference for all map/unmap calls.
      
      Fixes: 1c1008c7 ("net: bcmgenet: add main driver file")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8c4799ac
    • David S. Miller's avatar
      Merge branch 'mvneta-64bit' · 4f4f907a
      David S. Miller authored
      Gregory CLEMENT says:
      
      ====================
      Support Armada 37xx SoC (ARMv8 64-bits) in mvneta driver
      
      The Armada 37xx is a new ARMv8 SoC from Marvell using same network
      controller as the older Armada 370/38x/XP SoCs. This series adapts the
      driver in order to be able to use it on this new SoC. The main changes
      are:
      
      - 64-bits support: the first patches allow using the driver on a 64-bit
        architecture.
      
      - MBUS support: the mbus configuration is different on Armada 37xx
        from the older SoCs.
      
      - per cpu interrupt: Armada 37xx do not support per cpu interrupt for
        the NETA IP, the non-per-CPU behavior was added back.
      
      The first patch is an optimization in the rx path in swbm mode.
      The second patch remove unnecessary allocation for HWBM.
      The first item is solved by patches 4 and 5.
      The 2 last items are solved by patch 6.
      In patch 7 the dt support is added.
      
      Beside Armada 37xx, this series have been again tested on Armada XP
      and Armada 38x (with Hardware Buffer Management and with Software
      Buffer Management).
      
      This is the 6th version of the series:
      - 1st version:
      http://lists.infradead.org/pipermail/linux-arm-kernel/2016-November/469588.html
      
      - 2nd version:
      http://lists.infradead.org/pipermail/linux-arm-kernel/2016-November/470476.html
      
      - 3rd version:
      http://lists.infradead.org/pipermail/linux-arm-kernel/2016-November/470901.html
      
      - 4th version:
      http://lists.infradead.org/pipermail/linux-arm-kernel/2016-November/471039.html
      
      - 5th version:
      http://lists.infradead.org/pipermail/linux-arm-kernel/2016-November/471478.html
      
      Changelog:
      v5 -> v6:
       - Added Tested-by from  Marcin Wojtas on the series
       - Added Reviewed-by from Jisheng Zhang on patch 3
       - Fix eth1 phy mode for Armada 3720 DB board on patch 7
      
      v4 -> v5:
       - remove unnecessary cast in patch 3
      
      v3 -> v4:
       - Adding new patch: "net: mvneta: do not allocate buffer in rxq init
         with HWBM"
      
       - Simplify the HWBM case in patch 3 as suggested by Marcin
      
      v2 -> v3:
       - Adding patch 1 "Optimize rx path for small frame"
      
       - Fix the kbuild error by moving the "phys_addr += pp->rx_offset_correction;"
        line from patch 2 to patch 3 where rx_offset_correction is introduced.
      
       - Move the memory allocation of the buf_virt_addr of the rxq to be
         called by the probe function in order to avoid a memory leak.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4f4f907a
    • Gregory CLEMENT's avatar
      ARM64: dts: marvell: Add network support for Armada 3700 · ea7ae885
      Gregory CLEMENT authored
      Add neta nodes for network support both in device tree for the SoC and
      the board.
      Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ea7ae885
    • Marcin Wojtas's avatar
      net: mvneta: Add network support for Armada 3700 SoC · 2636ac3c
      Marcin Wojtas authored
      Armada 3700 is a new ARMv8 SoC from Marvell using same network controller
      as older Armada 370/38x/XP. There are however some differences that
      needed taking into account when adding support for it:
      
      * open default MBUS window to 4GB of DRAM - Armada 3700 SoC's Mbus
        configuration for network controller has to be done on two levels:
        global and per-port. The first one is inherited from the
        bootloader. The latter can be opened in a default way, leaving
        arbitration to the bus controller.  Hence filled mbus_dram_target_info
        structure is not needed
      
      * make per-CPU operation optional - Recent patches adding RSS and XPS
        support for Armada 38x/XP enabled per-CPU operation of the controller
        by default. Contrary to older SoC's Armada 3700 SoC's network
        controller is not capable of per-CPU processing due to interrupt lines'
        connectivity.  This patch restores non-per-CPU operation, which is now
        optional and depends on neta_armada3700 flag value in mvneta_port
        structure. In order not to complicate the code, separate interrupt
        subroutine is implemented.
      
      For now, on the Armada 3700, RSS is disabled as the current
      implementation depend on the per cpu interrupts.
      
      [gregory.clement@free-electrons.com: extract from a larger patch, replace
      some ifdef and port to net-next for v4.10]
      Signed-off-by: default avatarMarcin Wojtas <mw@semihalf.com>
      Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
      Tested-by: default avatarMarcin Wojtas <mw@semihalf.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2636ac3c
    • Gregory CLEMENT's avatar
      net: mvneta: Only disable mvneta_bm for 64-bits · f34daccc
      Gregory CLEMENT authored
      Actually only the mvneta_bm support is not 64-bits compatible.
      The mvneta code itself can run on 64-bits architecture.
      Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
      Tested-by: default avatarMarcin Wojtas <mw@semihalf.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f34daccc
    • Marcin Wojtas's avatar
      net: mvneta: Convert to be 64 bits compatible · 8d5047cf
      Marcin Wojtas authored
      Prepare the mvneta driver in order to be usable on the 64 bits platform
      such as the Armada 3700.
      
      [gregory.clement@free-electrons.com]: this patch was extract from a larger
      one to ease review and maintenance.
      Signed-off-by: default avatarMarcin Wojtas <mw@semihalf.com>
      Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
      Tested-by: default avatarMarcin Wojtas <mw@semihalf.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8d5047cf
    • Gregory CLEMENT's avatar
      net: mvneta: Use cacheable memory to store the rx buffer virtual address · f88bee1c
      Gregory CLEMENT authored
      Until now the virtual address of the received buffer were stored in the
      cookie field of the rx descriptor. However, this field is 32-bits only
      which prevents to use the driver on a 64-bits architecture.
      
      With this patch the virtual address is stored in an array not shared with
      the hardware (no more need to use the DMA API). Thanks to this, it is
      possible to use cache contrary to the access of the rx descriptor member.
      
      The change is done in the swbm path only because the hwbm uses the cookie
      field, this also means that currently the hwbm is not usable in 64-bits.
      Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
      Reviewed-by: default avatarJisheng Zhang <jszhang@marvell.com>
      Tested-by: default avatarMarcin Wojtas <mw@semihalf.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f88bee1c
    • Gregory CLEMENT's avatar
      net: mvneta: Do not allocate buffer in rxq init with HWBM · e9f64999
      Gregory CLEMENT authored
      For HWBM all buffers are allocated in mvneta_bm_construct() and in runtime
      they are put into descriptors by hardware. There is no need to fill them
      at this point.
      Suggested-by: default avatarMarcin Wojtas <mw@semihalf.com>
      Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
      Tested-by: default avatarMarcin Wojtas <mw@semihalf.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e9f64999
    • Gregory CLEMENT's avatar
      net: mvneta: Optimize rx path for small frame · ac83b7dd
      Gregory CLEMENT authored
      For small frame reuse the phys_addr variable instead of accessing the
      uncacheable value in the rx descriptor.
      Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
      Tested-by: default avatarMarcin Wojtas <mw@semihalf.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ac83b7dd
    • Linus Torvalds's avatar
      Fix up a couple of field names in the CREDITS file · ed8d747f
      Linus Torvalds authored
      Ozgur Karatas reported that the very first entry in the CREDITS file had
      the wrong tag for name (M: instead of N: - it happened when moving the
      entry from the MAINTAINERS file, where 'M:' stands for "Maintainer").
      
      And when I went looking, I found a couple of other cases of wrong
      tagging too.
      Reported-by: default avatarOzgur Karatas <mueddib@yandex.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ed8d747f
    • David S. Miller's avatar
      Merge branch 'bpf-support-for-sockets' · b5b5eca9
      David S. Miller authored
      David Ahern says:
      
      ====================
      net: Add bpf support for sockets
      
      The recently added VRF support in Linux leverages the bind-to-device
      API for programs to specify an L3 domain for a socket. While
      SO_BINDTODEVICE has been around for ages, not every ipv4/ipv6 capable
      program has support for it. Even for those programs that do support it,
      the API requires processes to be started as root (CAP_NET_RAW) which
      is not desirable from a general security perspective.
      
      This patch set leverages Daniel Mack's work to attach bpf programs to
      a cgroup to provide a capability to set sk_bound_dev_if for all
      AF_INET{6} sockets opened by a process in a cgroup when the sockets
      are allocated.
      
      For example:
       1. configure vrf (e.g., using ifupdown2)
              auto eth0
              iface eth0 inet dhcp
                  vrf mgmt
      
              auto mgmt
              iface mgmt
                  vrf-table auto
      
       2. configure cgroup
              mount -t cgroup2 none /tmp/cgroupv2
              mkdir /tmp/cgroupv2/mgmt
              test_cgrp2_sock /tmp/cgroupv2/mgmt 15
      
       3. set shell into cgroup (e.g., can be done at login using pam)
              echo $$ >> /tmp/cgroupv2/mgmt/cgroup.procs
      
      At this point all commands run in the shell (e.g, apt) have sockets
      automatically bound to the VRF (see output of ss -ap 'dev == <vrf>'),
      including processes not running as root.
      
      This capability enables running any program in a VRF context and is key
      to deploying Management VRF, a fundamental configuration for networking
      gear, with any Linux OS installation.
      
      This patchset also exports the socket family, type and protocol as
      read-only allowing bpf filters to deny a process in a cgroup the ability
      to open specific types of AF_INET or AF_INET6 sockets.
      
      v7
      - comments from Alexei
      
      v6
      - add export of socket family, type and protocol
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b5b5eca9