1. 15 11月, 2016 7 次提交
  2. 14 11月, 2016 14 次提交
    • C
      net: ethernet: ixp4xx_eth: fix spelling mistake in debug message · 7774d46b
      Colin Ian King 提交于
      Trivial fix to spelling mistake "successed" to "succeeded"
      in debug message.  Also unwrap multi-line literal string.
      Signed-off-by: NColin Ian King <colin.king@canonical.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7774d46b
    • T
      ibmvnic: Fix size of debugfs name buffer · e1fac0ad
      Thomas Falcon 提交于
      This mistake was causing debugfs directory creation
      failures when multiple ibmvnic devices were probed.
      Signed-off-by: NThomas Falcon <tlfalcon@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e1fac0ad
    • T
      ibmvnic: Unmap ibmvnic_statistics structure · b7f193da
      Thomas Falcon 提交于
      This structure was mapped but never subsequently unmapped.
      Signed-off-by: NThomas Falcon <tlfalcon@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b7f193da
    • B
      sfc: clear napi_hash state when copying channels · 46d054f8
      Bert Kenward 提交于
      efx_copy_channel() doesn't correctly clear the napi_hash related state.
      This means that when napi_hash_add is called for that channel nothing is
      done, and we are left with a copy of the napi_hash_node from the old
      channel. When we later call napi_hash_del() on this channel we have a
      stale napi_hash_node.
      
      Corruption is only seen when there are multiple entries in one of the
      napi_hash lists. This is made more likely by having a very large number
      of channels. Testing was carried out with 512 channels - 32 channels on
      each of 16 ports.
      
      This failure typically appears as protection faults within napi_by_id()
      or napi_hash_add(). efx_copy_channel() is only used when tx or rx ring
      sizes are changed (ethtool -G).
      
      Fixes: 36763266 ("sfc: Add support for busy polling")
      Signed-off-by: NBert Kenward <bkenward@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      46d054f8
    • D
      Merge branch 'mlxsw-fixes' · 9e37aaa3
      David S. Miller 提交于
      Jiri Pirko says:
      
      ====================
      mlxsw: Couple of fixes
      
      Please, queue-up both for stable. Thanks!
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9e37aaa3
    • A
      mlxsw: spectrum_router: Correctly dump neighbour activity · 42cdb338
      Arkadi Sharshevsky 提交于
      The device's neighbour table is periodically dumped in order to update
      the kernel about active neighbours. A single dump session may span
      multiple queries, until the response carries less records than requested
      or when a record (can contain up to four neighbour entries) is not full.
      Current code stops the session when the number of returned records is
      zero, which can result in infinite loop in case of high packet rate.
      
      Fix this by stopping the session according to the above logic.
      
      Fixes: c723c735 ("mlxsw: spectrum_router: Periodically update the kernel's neigh table")
      Signed-off-by: NArkadi Sharshevsky <arkadis@mellanox.com>
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      42cdb338
    • Y
      mlxsw: spectrum: Fix refcount bug on span entries · 2d644d4c
      Yotam Gigi 提交于
      When binding port to a newly created span entry, its refcount is
      initialized to zero even though it has a bound port. That leads
      to unexpected behaviour when the user tries to delete that port
      from the span entry.
      
      Fix this by initializing the reference count to 1.
      
      Also add a warning to put function.
      
      Fixes: 763b4b70 ("mlxsw: spectrum: Add support in matchall mirror TC offloading")
      Signed-off-by: NYotam Gigi <yotamg@mellanox.com>
      Reviewed-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2d644d4c
    • D
      Merge branch 'bnxt_en-fixes' · a055450a
      David S. Miller 提交于
      Michael Chan says:
      
      ====================
      bnxt_en: 2 bug fixes.
      
      Bug fixes in bnxt_setup_tc() and VF vitual link state.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a055450a
    • M
      bnxt_en: Fix VF virtual link state. · 73b9bad6
      Michael Chan 提交于
      If the physical link is down and the VF virtual link is set to "enable",
      the current code does not always work.  If the link is down but the
      cable is attached, the firmware returns LINK_SIGNAL instead of
      NO_LINK.  The current code is treating LINK_SIGNAL as link up.
      The fix is to treat link as down when the link_status != LINK.
      Signed-off-by: NMichael Chan <michael.chan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      73b9bad6
    • M
      bnxt_en: Fix ring arithmetic in bnxt_setup_tc(). · 3ffb6a39
      Michael Chan 提交于
      The logic is missing the check on whether the tx and rx rings are sharing
      completion rings or not.
      Signed-off-by: NMichael Chan <michael.chan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3ffb6a39
    • M
      Revert "include/uapi/linux/atm_zatm.h: include linux/time.h" · 7b5b74ef
      Mike Frysinger 提交于
      This reverts commit cf00713a ("include/uapi/linux/atm_zatm.h: include
      linux/time.h").
      
      This attempted to fix userspace breakage that no longer existed when
      the patch was merged.  Almost one year earlier, commit 70ba07b6
      ("atm: remove 'struct zatm_t_hist'") deleted the struct in question.
      
      After this patch was merged, we now have to deal with people being
      unable to include this header in conjunction with standard C library
      headers like stdlib.h (which linux-atm does).  Example breakage:
      x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I../.. -I./../q2931 -I./../saal \
      	-I.  -DCPPFLAGS_TEST  -I../../src/include -O2 -march=native -pipe -g \
      	-frecord-gcc-switches -freport-bug -Wimplicit-function-declaration \
      	-Wnonnull -Wstrict-aliasing -Wparentheses -Warray-bounds \
      	-Wfree-nonheap-object -Wreturn-local-addr -fno-strict-aliasing -Wall \
      	-Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -c zntune.c
      In file included from /usr/include/linux/atm_zatm.h:17:0,
                       from zntune.c:17:
      /usr/include/linux/time.h:9:8: error: redefinition of ‘struct timespec’
       struct timespec {
              ^
      In file included from /usr/include/sys/select.h:43:0,
                       from /usr/include/sys/types.h:219,
                       from /usr/include/stdlib.h:314,
                       from zntune.c:9:
      /usr/include/time.h:120:8: note: originally defined here
       struct timespec
              ^
      Signed-off-by: NMike Frysinger <vapier@gentoo.org>
      Acked-by: NMikko Rapeli <mikko.rapeli@iki.fi>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7b5b74ef
    • E
      tcp: take care of truncations done by sk_filter() · ac6e7800
      Eric Dumazet 提交于
      With syzkaller help, Marco Grassi found a bug in TCP stack,
      crashing in tcp_collapse()
      
      Root cause is that sk_filter() can truncate the incoming skb,
      but TCP stack was not really expecting this to happen.
      It probably was expecting a simple DROP or ACCEPT behavior.
      
      We first need to make sure no part of TCP header could be removed.
      Then we need to adjust TCP_SKB_CB(skb)->end_seq
      
      Many thanks to syzkaller team and Marco for giving us a reproducer.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Reported-by: NMarco Grassi <marco.gra@gmail.com>
      Reported-by: NVladis Dronov <vdronov@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ac6e7800
    • S
      ipv4: use new_gw for redirect neigh lookup · 969447f2
      Stephen Suryaputra Lin 提交于
      In v2.6, ip_rt_redirect() calls arp_bind_neighbour() which returns 0
      and then the state of the neigh for the new_gw is checked. If the state
      isn't valid then the redirected route is deleted. This behavior is
      maintained up to v3.5.7 by check_peer_redirect() because rt->rt_gateway
      is assigned to peer->redirect_learned.a4 before calling
      ipv4_neigh_lookup().
      
      After commit 5943634f ("ipv4: Maintain redirect and PMTU info in
      struct rtable again."), ipv4_neigh_lookup() is performed without the
      rt_gateway assigned to the new_gw. In the case when rt_gateway (old_gw)
      isn't zero, the function uses it as the key. The neigh is most likely
      valid since the old_gw is the one that sends the ICMP redirect message.
      Then the new_gw is assigned to fib_nh_exception. The problem is: the
      new_gw ARP may never gets resolved and the traffic is blackholed.
      
      So, use the new_gw for neigh lookup.
      
      Changes from v1:
       - use __ipv4_neigh_lookup instead (per Eric Dumazet).
      
      Fixes: 5943634f ("ipv4: Maintain redirect and PMTU info in struct rtable again.")
      Signed-off-by: NStephen Suryaputra Lin <ssurya@ieee.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      969447f2
    • G
      r8152: Fix error path in open function · ca0a7531
      Guenter Roeck 提交于
      If usb_submit_urb() called from the open function fails, the following
      crash may be observed.
      
      r8152 8-1:1.0 eth0: intr_urb submit failed: -19
      ...
      r8152 8-1:1.0 eth0: v1.08.3
      Unable to handle kernel paging request at virtual address 6b6b6b6b6b6b6b7b
      pgd = ffffffc0e7305000
      [6b6b6b6b6b6b6b7b] *pgd=0000000000000000, *pud=0000000000000000
      Internal error: Oops: 96000004 [#1] PREEMPT SMP
      ...
      PC is at notifier_chain_register+0x2c/0x58
      LR is at blocking_notifier_chain_register+0x54/0x70
      ...
      Call trace:
      [<ffffffc0002407f8>] notifier_chain_register+0x2c/0x58
      [<ffffffc000240bdc>] blocking_notifier_chain_register+0x54/0x70
      [<ffffffc00026991c>] register_pm_notifier+0x24/0x2c
      [<ffffffbffc183200>] rtl8152_open+0x3dc/0x3f8 [r8152]
      [<ffffffc000808000>] __dev_open+0xac/0x104
      [<ffffffc0008082f8>] __dev_change_flags+0xb0/0x148
      [<ffffffc0008083c4>] dev_change_flags+0x34/0x70
      [<ffffffc000818344>] do_setlink+0x2c8/0x888
      [<ffffffc0008199d4>] rtnl_newlink+0x328/0x644
      [<ffffffc000819e98>] rtnetlink_rcv_msg+0x1a8/0x1d4
      [<ffffffc0008373c8>] netlink_rcv_skb+0x68/0xd0
      [<ffffffc000817990>] rtnetlink_rcv+0x2c/0x3c
      [<ffffffc000836d1c>] netlink_unicast+0x16c/0x234
      [<ffffffc00083720c>] netlink_sendmsg+0x340/0x364
      [<ffffffc0007e85d0>] sock_sendmsg+0x48/0x60
      [<ffffffc0007e9c30>] SyS_sendto+0xe0/0x120
      [<ffffffc0007e9cb0>] SyS_send+0x40/0x4c
      [<ffffffc000203e34>] el0_svc_naked+0x24/0x28
      
      Clean up error handling to avoid registering the notifier if the open
      function is going to fail.
      Signed-off-by: NGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ca0a7531
  3. 13 11月, 2016 5 次提交
    • B
      net: bpqether.h: remove if_ether.h guard · 10b21768
      Baruch Siach 提交于
      __LINUX_IF_ETHER_H is not defined anywhere, and if_ether.h can keep itself from
      double inclusion, though it uses a single underscore prefix.
      Signed-off-by: NBaruch Siach <baruch@tkos.co.il>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      10b21768
    • E
      net: __skb_flow_dissect() must cap its return value · 34fad54c
      Eric Dumazet 提交于
      After Tom patch, thoff field could point past the end of the buffer,
      this could fool some callers.
      
      If an skb was provided, skb->len should be the upper limit.
      If not, hlen is supposed to be the upper limit.
      
      Fixes: a6e544b0 ("flow_dissector: Jump to exit code in __skb_flow_dissect")
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Reported-by: Yibin Yang <yibyang@cisco.com
      Acked-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Acked-by: NWillem de Bruijn <willemb@google.com>
      Acked-by: NAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      34fad54c
    • D
      Merge branch 'fix-bpf_redirect' · 79774d6b
      David S. Miller 提交于
      Martin KaFai Lau says:
      
      ====================
      bpf: Fix bpf_redirect to an ipip/ip6tnl dev
      
      This patch set fixes a bug in bpf_redirect(dev, flags) when dev is an
      ipip/ip6tnl.  The current problem is IP-EthHdr-IP is sent out instead of
      IP-IP.
      
      Patch 1 adds a dev->type test similar to dev_is_mac_header_xmit()
      in act_mirred.c which is only available in net-next.  We can consider to
      refactor it once this patch is pulled into net-next from net.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      79774d6b
    • M
      bpf: Add test for bpf_redirect to ipip/ip6tnl · 90e02896
      Martin KaFai Lau 提交于
      The test creates two netns, ns1 and ns2.  The host (the default netns)
      has an ipip or ip6tnl dev configured for tunneling traffic to the ns2.
      
          ping VIPS from ns1 <----> host <--tunnel--> ns2 (VIPs at loopback)
      
      The test is to have ns1 pinging VIPs configured at the loopback
      interface in ns2.
      
      The VIPs are 10.10.1.102 and 2401:face::66 (which are configured
      at lo@ns2). [Note: 0x66 => 102].
      
      At ns1, the VIPs are routed _via_ the host.
      
      At the host, bpf programs are installed at the veth to redirect packets
      from a veth to the ipip/ip6tnl.  The test is configured in a way so
      that both ingress and egress can be tested.
      
      At ns2, the ipip/ip6tnl dev is configured with the local and remote address
      specified.  The return path is routed to the dev ipip/ip6tnl.
      
      During egress test, the host also locally tests pinging the VIPs to ensure
      that bpf_redirect at egress also works for the direct egress (i.e. not
      forwarding from dev ve1 to ve2).
      Acked-by: NAlexei Starovoitov <ast@fb.com>
      Signed-off-by: NMartin KaFai Lau <kafai@fb.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      90e02896
    • M
      bpf: Fix bpf_redirect to an ipip/ip6tnl dev · 4e3264d2
      Martin KaFai Lau 提交于
      If the bpf program calls bpf_redirect(dev, 0) and dev is
      an ipip/ip6tnl, it currently includes the mac header.
      e.g. If dev is ipip, the end result is IP-EthHdr-IP instead
      of IP-IP.
      
      The fix is to pull the mac header.  At ingress, skb_postpull_rcsum()
      is not needed because the ethhdr should have been pulled once already
      and then got pushed back just before calling the bpf_prog.
      At egress, this patch calls skb_postpull_rcsum().
      
      If bpf_redirect(dev, BPF_F_INGRESS) is called,
      it also fails now because it calls dev_forward_skb() which
      eventually calls eth_type_trans(skb, dev).  The eth_type_trans()
      will set skb->type = PACKET_OTHERHOST because the mac address
      does not match the redirecting dev->dev_addr.  The PACKET_OTHERHOST
      will eventually cause the ip_rcv() errors out.  To fix this,
      ____dev_forward_skb() is added.
      
      Joint work with Daniel Borkmann.
      
      Fixes: cfc7381b ("ip_tunnel: add collect_md mode to IPIP tunnel")
      Fixes: 8d79266b ("ip6_tunnel: add collect_md mode to IPv6 tunnels")
      Acked-by: NDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: NAlexei Starovoitov <ast@fb.com>
      Signed-off-by: NMartin KaFai Lau <kafai@fb.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4e3264d2
  4. 11 11月, 2016 7 次提交
  5. 10 11月, 2016 7 次提交
    • D
      net: tcp response should set oif only if it is L3 master · 9b6c14d5
      David Ahern 提交于
      Lorenzo noted an Android unit test failed due to e0d56fdd:
      "The expectation in the test was that the RST replying to a SYN sent to a
      closed port should be generated with oif=0. In other words it should not
      prefer the interface where the SYN came in on, but instead should follow
      whatever the routing table says it should do."
      
      Revert the change to ip_send_unicast_reply and tcp_v6_send_response such
      that the oif in the flow is set to the skb_iif only if skb_iif is an L3
      master.
      
      Fixes: e0d56fdd ("net: l3mdev: remove redundant calls")
      Reported-by: NLorenzo Colitti <lorenzo@google.com>
      Signed-off-by: NDavid Ahern <dsa@cumulusnetworks.com>
      Tested-by: NLorenzo Colitti <lorenzo@google.com>
      Acked-by: NLorenzo Colitti <lorenzo@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9b6c14d5
    • A
      Net Driver: Add Cypress GX3 VID=04b4 PID=3610. · 8da3cf2a
      Allan Chou 提交于
      Add support for Cypress GX3 SuperSpeed to Gigabit Ethernet
      Bridge Controller (Vendor=04b4 ProdID=3610).
      
      Patch verified on x64 linux kernel 4.7.4, 4.8.6, 4.9-rc4 systems
      with the Kensington SD4600P USB-C Universal Dock with Power,
      which uses the Cypress GX3 SuperSpeed to Gigabit Ethernet Bridge
      Controller.
      
      A similar patch was signed-off and tested-by Allan Chou
      <allan@asix.com.tw> on 2015-12-01.
      
      Allan verified his similar patch on x86 Linux kernel 4.1.6 system
      with Cypress GX3 SuperSpeed to Gigabit Ethernet Bridge Controller.
      Tested-by: NAllan Chou <allan@asix.com.tw>
      Tested-by: NChris Roth <chris.roth@usask.ca>
      Tested-by: NArtjom Simon <artjom.simon@gmail.com>
      Signed-off-by: NAllan Chou <allan@asix.com.tw>
      Signed-off-by: NChris Roth <chris.roth@usask.ca>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8da3cf2a
    • D
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf · 9fa684ec
      David S. Miller 提交于
      Pablo Neira Ayuso says:
      
      ====================
      Netfilter fixes for net
      
      The following patchset contains a larger than usual batch of Netfilter
      fixes for your net tree. This series contains a mixture of old bugs and
      recently introduced bugs, they are:
      
      1) Fix a crash when using nft_dynset with nft_set_rbtree, which doesn't
         support the set element updates from the packet path. From Liping
         Zhang.
      
      2) Fix leak when nft_expr_clone() fails, from Liping Zhang.
      
      3) Fix a race when inserting new elements to the set hash from the
         packet path, also from Liping.
      
      4) Handle segmented TCP SIP packets properly, basically avoid that the
         INVITE in the allow header create bogus expectations by performing
         stricter SIP message parsing, from Ulrich Weber.
      
      5) nft_parse_u32_check() should return signed integer for errors, from
         John Linville.
      
      6) Fix wrong allocation instead of connlabels, allocate 16 instead of
         32 bytes, from Florian Westphal.
      
      7) Fix compilation breakage when building the ip_vs_sync code with
         CONFIG_OPTIMIZE_INLINING on x86, from Arnd Bergmann.
      
      8) Destroy the new set if the transaction object cannot be allocated,
         also from Liping Zhang.
      
      9) Use device to route duplicated packets via nft_dup only when set by
         the user, otherwise packets may not follow the right route, again
         from Liping.
      
      10) Fix wrong maximum genetlink attribute definition in IPVS, from
          WANG Cong.
      
      11) Ignore untracked conntrack objects from xt_connmark, from Florian
          Westphal.
      
      12) Allow to use conntrack helpers that are registered NFPROTO_UNSPEC
          via CT target, otherwise we cannot use the h.245 helper, from
          Florian.
      
      13) Revisit garbage collection heuristic in the new workqueue-based
          timer approach for conntrack to evict objects earlier, again from
          Florian.
      
      14) Fix crash in nf_tables when inserting an element into a verdict map,
          from Liping Zhang.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9fa684ec
    • M
      rtnl: reset calcit fptr in rtnl_unregister() · f567e950
      Mathias Krause 提交于
      To avoid having dangling function pointers left behind, reset calcit in
      rtnl_unregister(), too.
      
      This is no issue so far, as only the rtnl core registers a netlink
      handler with a calcit hook which won't be unregistered, but may become
      one if new code makes use of the calcit hook.
      
      Fixes: c7ac8679 ("rtnetlink: Compute and store minimum ifinfo...")
      Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
      Cc: Greg Rose <gregory.v.rose@intel.com>
      Signed-off-by: NMathias Krause <minipli@googlemail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f567e950
    • A
      vxlan: hide unused local variable · 4053ab1b
      Arnd Bergmann 提交于
      A bugfix introduced a harmless warning in v4.9-rc4:
      
      drivers/net/vxlan.c: In function 'vxlan_group_used':
      drivers/net/vxlan.c:947:21: error: unused variable 'sock6' [-Werror=unused-variable]
      
      This hides the variable inside of the same #ifdef that is
      around its user. The extraneous initialization is removed
      at the same time, it was accidentally introduced in the
      same commit.
      
      Fixes: c6fcc4fc ("vxlan: avoid using stale vxlan socket.")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NJiri Benc <jbenc@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4053ab1b
    • J
      ibmvnic: Start completion queue negotiation at server-provided optimum values · 6dbcd8fb
      John Allen 提交于
      Use the opt_* fields to determine the starting point for negotiating the
      number of tx/rx completion queues with the vnic server. These contain the
      number of queues that the vnic server estimates that it will be able to
      allocate. While renegotiation may still occur, using the opt_* fields will
      reduce the number of times this needs to happen and will prevent driver
      probe timeout on systems using large numbers of ibmvnic client devices per
      vnic port.
      Signed-off-by: NJohn Allen <jallen@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6dbcd8fb
    • D
      net: icmp_route_lookup should use rt dev to determine L3 domain · 9d1a6c4e
      David Ahern 提交于
      icmp_send is called in response to some event. The skb may not have
      the device set (skb->dev is NULL), but it is expected to have an rt.
      Update icmp_route_lookup to use the rt on the skb to determine L3
      domain.
      
      Fixes: 613d09b3 ("net: Use VRF device index for lookups on TX")
      Signed-off-by: NDavid Ahern <dsa@cumulusnetworks.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9d1a6c4e