Skip to content
  1. May 03, 2018
  2. May 02, 2018
    • Xin Long's avatar
      sctp: fix the issue that the cookie-ack with auth can't get processed · ce402f04
      Xin Long authored
      When auth is enabled for cookie-ack chunk, in sctp_inq_pop, sctp
      processes auth chunk first, then continues to the next chunk in
      this packet if chunk_end + chunk_hdr size < skb_tail_pointer().
      Otherwise, it will go to the next packet or discard this chunk.
      
      However, it missed the fact that cookie-ack chunk's size is equal
      to chunk_hdr size, which couldn't match that check, and thus this
      chunk would not get processed.
      
      This patch fixes it by changing the check to chunk_end + chunk_hdr
      size <= skb_tail_pointer().
      
      Fixes: 26b87c78
      
       ("net: sctp: fix remote memory pressure from excessive queueing")
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ce402f04
    • Xin Long's avatar
      sctp: use the old asoc when making the cookie-ack chunk in dupcook_d · 46e16d4b
      Xin Long authored
      
      
      When processing a duplicate cookie-echo chunk, for case 'D', sctp will
      not process the param from this chunk. It means old asoc has nothing
      to be updated, and the new temp asoc doesn't have the complete info.
      
      So there's no reason to use the new asoc when creating the cookie-ack
      chunk. Otherwise, like when auth is enabled for cookie-ack, the chunk
      can not be set with auth, and it will definitely be dropped by peer.
      
      This issue is there since very beginning, and we fix it by using the
      old asoc instead.
      
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      46e16d4b
    • Xin Long's avatar
      sctp: init active key for the new asoc in dupcook_a and dupcook_b · 4842a08f
      Xin Long authored
      When processing a duplicate cookie-echo chunk, for case 'A' and 'B',
      after sctp_process_init for the new asoc, if auth is enabled for the
      cookie-ack chunk, the active key should also be initialized.
      
      Otherwise, the cookie-ack chunk made later can not be set with auth
      shkey properly, and a crash can even be caused by this, as after
      Commit 1b1e0bc9 ("sctp: add refcnt support for sh_key"), sctp
      needs to hold the shkey when making control chunks.
      
      Fixes: 1b1e0bc9
      
       ("sctp: add refcnt support for sh_key")
      Reported-by: default avatarJianwen Ji <jiji@redhat.com>
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4842a08f
    • Neal Cardwell's avatar
      tcp_bbr: fix to zero idle_restart only upon S/ACKed data · e6e6a278
      Neal Cardwell authored
      Previously the bbr->idle_restart tracking was zeroing out the
      bbr->idle_restart bit upon ACKs that did not SACK or ACK anything,
      e.g. receiving incoming data or receiver window updates. In such
      situations BBR would forget that this was a restart-from-idle
      situation, and if the min_rtt had expired it would unnecessarily enter
      PROBE_RTT (even though we were actually restarting from idle but had
      merely forgotten that fact).
      
      The fix is simple: we need to remember we are restarting from idle
      until we receive a S/ACK for some data (a S/ACK for the first flight
      of data we send as we are restarting).
      
      This commit is a stable candidate for kernels back as far as 4.9.
      
      Fixes: 0f8782ea
      
       ("tcp_bbr: add BBR congestion control")
      Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
      Signed-off-by: default avatarSoheil Hassas Yeganeh <soheil@google.com>
      Signed-off-by: default avatarPriyaranjan Jha <priyarjha@google.com>
      Signed-off-by: default avatarYousuk Seung <ysseung@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e6e6a278
    • Grygorii Strashko's avatar
      net: ethernet: ti: cpsw: fix packet leaking in dual_mac mode · 5e5add17
      Grygorii Strashko authored
      
      
      In dual_mac mode packets arrived on one port should not be forwarded by
      switch hw to another port. Only Linux Host can forward packets between
      ports. The below test case (reported in [1]) shows that packet arrived on
      one port can be leaked to anoter (reproducible with dual port evms):
       - connect port 1 (eth0) to linux Host 0 and run tcpdump or Wireshark
       - connect port 2 (eth1) to linux Host 1 with vlan 1 configured
       - ping <IPx> from Host 1 through vlan 1 interface.
      ARP packets will be seen on Host 0.
      
      Issue happens because dual_mac mode is implemnted using two vlans: 1 (Port
      1+Port 0) and 2 (Port 2+Port 0), so there are vlan records created for for
      each vlan. By default, the ALE will find valid vlan record in its table
      when vlan 1 tagged packet arrived on Port 2 and so forwards packet to all
      ports which are vlan 1 members (like Port.
      
      To avoid such behaviorr the ALE VLAN ID Ingress Check need to be enabled
      for each external CPSW port (ALE_PORTCTLn.VID_INGRESS_CHECK) so ALE will
      drop ingress packets if Rx port is not VLAN member.
      
      Signed-off-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5e5add17
    • Michael S. Tsirkin's avatar
      Revert "vhost: make msg padding explicit" · c818aa88
      Michael S. Tsirkin authored
      
      
      This reverts commit 93c0d549c4c5a7382ad70de6b86610b7aae57406.
      
      Unfortunately the padding will break 32 bit userspace.
      Ouch. Need to add some compat code, revert for now.
      
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c818aa88
    • John Hurley's avatar
      nfp: flower: set tunnel ttl value to net default · 50a5852a
      John Hurley authored
      Firmware requires that the ttl value for an encapsulating ipv4 tunnel
      header be included as an action field. Prior to the support of Geneve
      tunnel encap (when ttl set was removed completely), ttl value was
      extracted from the tunnel key. However, tests have shown that this can
      still produce a ttl of 0.
      
      Fix the issue by setting the namespace default value for each new tunnel.
      Follow up patch for net-next will do a full route lookup.
      
      Fixes: 3ca3059d ("nfp: flower: compile Geneve encap actions")
      Fixes: b27d6a95
      
       ("nfp: compile flower vxlan tunnel set actions")
      Signed-off-by: default avatarJohn Hurley <john.hurley@netronome.com>
      Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      50a5852a
    • Dave Watson's avatar
      net/tls: Don't recursively call push_record during tls_write_space callbacks · c212d2c7
      Dave Watson authored
      
      
      It is reported that in some cases, write_space may be called in
      do_tcp_sendpages, such that we recursively invoke do_tcp_sendpages again:
      
      [  660.468802]  ? do_tcp_sendpages+0x8d/0x580
      [  660.468826]  ? tls_push_sg+0x74/0x130 [tls]
      [  660.468852]  ? tls_push_record+0x24a/0x390 [tls]
      [  660.468880]  ? tls_write_space+0x6a/0x80 [tls]
      ...
      
      tls_push_sg already does a loop over all sending sg's, so ignore
      any tls_write_space notifications until we are done sending.
      We then have to call the previous write_space to wake up
      poll() waiters after we are done with the send loop.
      
      Reported-by: default avatarAndre Tomt <andre@tomt.net>
      Signed-off-by: default avatarDave Watson <davejwatson@fb.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c212d2c7
    • Thomas Winter's avatar
      ipv6: Allow non-gateway ECMP for IPv6 · edd7ceb7
      Thomas Winter authored
      
      
      It is valid to have static routes where the nexthop
      is an interface not an address such as tunnels.
      For IPv4 it was possible to use ECMP on these routes
      but not for IPv6.
      
      Signed-off-by: default avatarThomas Winter <Thomas.Winter@alliedtelesis.co.nz>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
      Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
      Acked-by: default avatarDavid Ahern <dsahern@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      edd7ceb7
    • Wenwen Wang's avatar
      ethtool: fix a potential missing-check bug · d656fe49
      Wenwen Wang authored
      
      
      In ethtool_get_rxnfc(), the object "info" is firstly copied from
      user-space. If the FLOW_RSS flag is set in the member field flow_type of
      "info" (and cmd is ETHTOOL_GRXFH), info needs to be copied again from
      user-space because FLOW_RSS is newer and has new definition, as mentioned
      in the comment. However, given that the user data resides in user-space, a
      malicious user can race to change the data after the first copy. By doing
      so, the user can inject inconsistent data. For example, in the second
      copy, the FLOW_RSS flag could be cleared in the field flow_type of "info".
      In the following execution, "info" will be used in the function
      ops->get_rxnfc(). Such inconsistent data can potentially lead to unexpected
      information leakage since ops->get_rxnfc() will prepare various types of
      data according to flow_type, and the prepared data will be eventually
      copied to user-space. This inconsistent data may also cause undefined
      behaviors based on how ops->get_rxnfc() is implemented.
      
      This patch simply re-verifies the flow_type field of "info" after the
      second copy. If the value is not as expected, an error code will be
      returned.
      
      Signed-off-by: default avatarWenwen Wang <wang6495@umn.edu>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d656fe49
    • Colin Ian King's avatar
      net/mlx4: fix spelling mistake: "failedi" -> "failed" · 26ff7585
      Colin Ian King authored
      
      
      trivial fix to spelling mistake in mlx4_warn message.
      
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      26ff7585
    • Michael S. Tsirkin's avatar
      vhost: make msg padding explicit · de08481a
      Michael S. Tsirkin authored
      
      
      There's a 32 bit hole just after type. It's best to
      give it a name, this way compiler is forced to initialize
      it with rest of the structure.
      
      Reported-by: default avatarKevin Easton <kevin@guarana.org>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      de08481a
    • Eric Dumazet's avatar
      tcp: fix TCP_REPAIR_QUEUE bound checking · bf2acc94
      Eric Dumazet authored
      syzbot is able to produce a nasty WARN_ON() in tcp_verify_left_out()
      with following C-repro :
      
      socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
      setsockopt(3, SOL_TCP, TCP_REPAIR, [1], 4) = 0
      setsockopt(3, SOL_TCP, TCP_REPAIR_QUEUE, [-1], 4) = 0
      bind(3, {sa_family=AF_INET, sin_port=htons(20002), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
      sendto(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
      	1242, MSG_FASTOPEN, {sa_family=AF_INET, sin_port=htons(20002), sin_addr=inet_addr("127.0.0.1")}, 16) = 1242
      setsockopt(3, SOL_TCP, TCP_REPAIR_WINDOW, "\4\0\0@+\205\0\0\377\377\0\0\377\377\377\177\0\0\0\0", 20) = 0
      writev(3, [{"\270", 1}], 1)             = 1
      setsockopt(3, SOL_TCP, TCP_REPAIR_OPTIONS, "\10\0\0\0\0\0\0\0\0\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 386) = 0
      writev(3, [{"\210v\r[\226\320t\231qwQ\204\264l\254\t\1\20\245\214p\350H\223\254;\\\37\345\307p$"..., 3144}], 1) = 3144
      
      The 3rd system call looks odd :
      setsockopt(3, SOL_TCP, TCP_REPAIR_QUEUE, [-1], 4) = 0
      
      This patch makes sure bound checking is using an unsigned compare.
      
      Fixes: ee995283
      
       ("tcp: Initial repair mode")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Cc: Pavel Emelyanov <xemul@parallels.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bf2acc94
    • Eric Dumazet's avatar
      ipv6: fix uninit-value in ip6_multipath_l3_keys() · cea67a2d
      Eric Dumazet authored
      syzbot/KMSAN reported an uninit-value in ip6_multipath_l3_keys(),
      root caused to a bad assumption of ICMP header being already
      pulled in skb->head
      
      ip_multipath_l3_keys() does the correct thing, so it is an IPv6 only bug.
      
      BUG: KMSAN: uninit-value in ip6_multipath_l3_keys net/ipv6/route.c:1830 [inline]
      BUG: KMSAN: uninit-value in rt6_multipath_hash+0x5c4/0x640 net/ipv6/route.c:1858
      CPU: 0 PID: 4507 Comm: syz-executor661 Not tainted 4.16.0+ #87
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Call Trace:
       __dump_stack lib/dump_stack.c:17 [inline]
       dump_stack+0x185/0x1d0 lib/dump_stack.c:53
       kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
       __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:683
       ip6_multipath_l3_keys net/ipv6/route.c:1830 [inline]
       rt6_multipath_hash+0x5c4/0x640 net/ipv6/route.c:1858
       ip6_route_input+0x65a/0x920 net/ipv6/route.c:1884
       ip6_rcv_finish+0x413/0x6e0 net/ipv6/ip6_input.c:69
       NF_HOOK include/linux/netfilter.h:288 [inline]
       ipv6_rcv+0x1e16/0x2340 net/ipv6/ip6_input.c:208
       __netif_receive_skb_core+0x47df/0x4a90 net/core/dev.c:4562
       __netif_receive_skb net/core/dev.c:4627 [inline]
       netif_receive_skb_internal+0x49d/0x630 net/core/dev.c:4701
       netif_receive_skb+0x230/0x240 net/core/dev.c:4725
       tun_rx_batched drivers/net/tun.c:1555 [inline]
       tun_get_user+0x740f/0x7c60 drivers/net/tun.c:1962
       tun_chr_write_iter+0x1d4/0x330 drivers/net/tun.c:1990
       call_write_iter include/linux/fs.h:1782 [inline]
       new_sync_write fs/read_write.c:469 [inline]
       __vfs_write+0x7fb/0x9f0 fs/read_write.c:482
       vfs_write+0x463/0x8d0 fs/read_write.c:544
       SYSC_write+0x172/0x360 fs/read_write.c:589
       SyS_write+0x55/0x80 fs/read_write.c:581
       do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
       entry_SYSCALL_64_after_hwframe+0x3d/0xa2
      
      Fixes: 23aebdac
      
       ("ipv6: Compute multipath hash for ICMP errors from offending packet")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Cc: Jakub Sitnicki <jkbs@redhat.com>
      Acked-by: default avatarJakub Sitnicki <jkbs@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cea67a2d
  3. Apr 30, 2018
  4. Apr 28, 2018
    • David S. Miller's avatar
      Merge branch 'sfc-more-ARFS-fixes' · 1d39fd1b
      David S. Miller authored
      
      
      Edward Cree says:
      
      ====================
      sfc: more ARFS fixes
      
      A couple more bits of breakage in my recent ARFS and async filters work.
      Patch #1 in particular fixes a bug that leads to memory trampling and
       consequent crashes.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1d39fd1b
    • Edward Cree's avatar
      sfc: fix ARFS expiry check on EF10 · 987c658a
      Edward Cree authored
      Owing to a missing conditional, the result of rps_may_expire_flow() was
       being ignored and filters were being removed even if we'd decided not to
       expire them.
      
      Fixes: f8d62037
      
       ("sfc: ARFS filter IDs")
      Signed-off-by: default avatarEdward Cree <ecree@solarflare.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      987c658a
    • Edward Cree's avatar
      sfc: Use filter index rather than ID for rps_flow_id table · ded8b9c7
      Edward Cree authored
      efx->type->filter_insert() returns an ID rather than the index that
       efx->type->filter_async_insert() used to, which causes it to exceed
       efx->type->max_rx_ip_filters on some EF10 configurations, leading to out-
       of-bounds array writes.
      So, in efx_filter_rfs_work(), convert this back into an index (which is
       what the remove call in the expiry path expects, anyway).
      
      Fixes: 3af0f342
      
       ("sfc: replace asynchronous filter operations")
      Signed-off-by: default avatarEdward Cree <ecree@solarflare.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ded8b9c7
    • Lance Richardson's avatar
      net: support compat 64-bit time in {s,g}etsockopt · 988bf724
      Lance Richardson authored
      For the x32 ABI, struct timeval has two 64-bit fields. However
      the kernel currently interprets the user-space values used for
      the SO_RCVTIMEO and SO_SNDTIMEO socket options as having a pair
      of 32-bit fields.
      
      When the seconds portion of the requested timeout is less than 2**32,
      the seconds portion of the effective timeout is correct but the
      microseconds portion is zero.  When the seconds portion of the
      requested timeout is zero and the microseconds portion is non-zero,
      the kernel interprets the timeout as zero (never timeout).
      
      Fix by using 64-bit time for SO_RCVTIMEO/SO_SNDTIMEO as required
      for the ABI.
      
      The code included below demonstrates the problem.
      
      Results before patch:
          $ gcc -m64 -Wall -O2 -o socktmo socktmo.c && ./socktmo
          recv time: 2.008181 seconds
          send time: 2.015985 seconds
      
          $ gcc -m32 -Wall -O2 -o socktmo socktmo.c && ./socktmo
          recv time: 2.016763 seconds
          send time: 2.016062 seconds
      
          $ gcc -mx32 -Wall -O2 -o socktmo socktmo.c && ./socktmo
          recv time: 1.007239 seconds
          send time: 1.023890 seconds
      
      Results after patch:
          $ gcc -m64 -O2 -Wall -o socktmo socktmo.c && ./socktmo
          recv time: 2.010062 seconds
          send time: 2.015836 seconds
      
          $ gcc -m32 -O2 -Wall -o socktmo socktmo.c && ./socktmo
          recv time: 2.013974 seconds
          send time: 2.015981 seconds
      
          $ gcc -mx32 -O2 -Wall -o socktmo socktmo.c && ./socktmo
          recv time: 2.030257 seconds
          send time: 2.013383 seconds
      
       #include <stdio.h>
       #include <stdlib.h>
       #include <sys/socket.h>
       #include <sys/types.h>
       #include <sys/time.h>
      
       void checkrc(char *str, int rc)
       {
               if (rc >= 0)
                       return;
      
               perror(str);
               exit(1);
       }
      
       static char buf[1024];
       int main(int argc, char **argv)
       {
               int rc;
               int socks[2];
               struct timeval tv;
               struct timeval start, end, delta;
      
               rc = socketpair(AF_UNIX, SOCK_STREAM, 0, socks);
               checkrc("socketpair", rc);
      
               /* set timeout to 1.999999 seconds */
               tv.tv_sec = 1;
               tv.tv_usec = 999999;
               rc = setsockopt(socks[0], SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof tv);
               rc = setsockopt(socks[0], SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof tv);
               checkrc("setsockopt", rc);
      
               /* measure actual receive timeout */
               gettimeofday(&start, NULL);
               rc = recv(socks[0], buf, sizeof buf, 0);
               gettimeofday(&end, NULL);
               timersub(&end, &start, &delta);
      
               printf("recv time: %ld.%06ld seconds\n",
                      (long)delta.tv_sec, (long)delta.tv_usec);
      
               /* fill send buffer */
               do {
                       rc = send(socks[0], buf, sizeof buf, 0);
               } while (rc > 0);
      
               /* measure actual send timeout */
               gettimeofday(&start, NULL);
               rc = send(socks[0], buf, sizeof buf, 0);
               gettimeofday(&end, NULL);
               timersub(&end, &start, &delta);
      
               printf("send time: %ld.%06ld seconds\n",
                      (long)delta.tv_sec, (long)delta.tv_usec);
               exit(0);
       }
      
      Fixes: 515c7af8
      
       ("x32: Use compat shims for {g,s}etsockopt")
      Reported-by: default avatarGopal RajagopalSai <gopalsr83@gmail.com>
      Signed-off-by: default avatarLance Richardson <lance.richardson.net@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      988bf724
    • Vivien Didelot's avatar
      MAINTAINERS: add davem in NETWORKING DRIVERS · 0b21bca0
      Vivien Didelot authored
      
      
      "./scripts/get_maintainer.pl -f" does not actually show us David as the
      maintainer of drivers/net directories such as team, bonding, phy or dsa.
      Adding him in an M: entry of NETWORKING DRIVERS fixes this.
      
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0b21bca0
    • David S. Miller's avatar
      Merge tag 'mlx5-fixes-2018-04-25' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · e8e96081
      David S. Miller authored
      
      
      Saeed Mahameed says:
      
      ====================
      Mellanox, mlx5 fixes 2018-04-26
      
      This pull request includes fixes for mlx5 core and netdev driver.
      
      Please pull and let me know if there's any problems.
      
      For -stable v4.12
          net/mlx5e: TX, Use correct counter in dma_map error flow
      For -stable v4.13
          net/mlx5: Avoid cleaning flow steering table twice during error flow
      For -stable v4.14
          net/mlx5e: Allow offloading ipv4 header re-write for icmp
      For -stable v4.15
          net/mlx5e: DCBNL fix min inline header size for dscp
      For -stable v4.16
          net/mlx5: Fix mlx5_get_vector_affinity function
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e8e96081
    • David S. Miller's avatar
      Merge tag 'wireless-drivers-for-davem-2018-04-26' of... · 1da9a586
      David S. Miller authored
      Merge tag 'wireless-drivers-for-davem-2018-04-26' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers
      
      
      
      Kalle Valo says:
      
      ====================
      wireless-drivers fixes for 4.17
      
      A few fixes for 4.17 but nothing really special. The new ETSI WMM
      parameter support for iwlwifi is not technically a bugfix but
      important for regulatory compliance.
      
      iwlwifi
      
      * use new ETSI WMM parameters from regulatory database
      
      * fix a regression with the older firmware API 31 (eg. 31.560484.0)
      
      brcmfmac
      
      * fix a double free in nvmam loading fails
      
      rtlwifi
      
      * yet another fix for ant_sel module parameter
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1da9a586
    • Ido Schimmel's avatar
      mlxsw: spectrum_switchdev: Do not remove mrouter port from MDB's ports list · c7f46cca
      Ido Schimmel authored
      When IGMP snooping is enabled on a bridge, traffic forwarded by an MDB
      entry should be sent to both ports member in the MDB's ports list and
      mrouter ports.
      
      In case a port needs to be removed from an MDB's ports list, but this
      port is also configured as an mrouter port, then do not update the
      device so that it will continue to forward traffic through that port.
      
      Fix a copy-paste error that checked that IGMP snooping is enabled twice
      instead of checking the port's mrouter state.
      
      Fixes: ded711c8
      
       ("mlxsw: spectrum_switchdev: Consider mrouter status for mdb changes")
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Reported-by: default avatarColin King <colin.king@canonical.com>
      Reviewed-by: default avatarNogah Frankel <nogahf@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c7f46cca
    • Xin Long's avatar
      sctp: clear the new asoc's stream outcnt in sctp_stream_update · 6a9a27d5
      Xin Long authored
      When processing a duplicate cookie-echo chunk, sctp moves the new
      temp asoc's stream out/in into the old asoc, and later frees this
      new temp asoc.
      
      But now after this move, the new temp asoc's stream->outcnt is not
      cleared while stream->out is set to NULL, which would cause a same
      crash as the one fixed in Commit 79d08951 ("sctp: fix error
      path in sctp_stream_init") when freeing this asoc later.
      
      This fix is to clear this outcnt in sctp_stream_update.
      
      Fixes: f952be79
      
       ("sctp: introduce struct sctp_stream_out_ext")
      Reported-by: default avatarJianwen Ji <jiji@redhat.com>
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6a9a27d5
    • SZ Lin (林上智)'s avatar
      NET: usb: qmi_wwan: add support for ublox R410M PID 0x90b2 · 9306b38e
      SZ Lin (林上智) authored
      
      
      This patch adds support for PID 0x90b2 of ublox R410M.
      
      qmicli -d /dev/cdc-wdm0 --dms-get-manufacturer
      [/dev/cdc-wdm0] Device manufacturer retrieved:
              Manufacturer: 'u-blox'
      
      qmicli -d /dev/cdc-wdm0 --dms-get-model
      [/dev/cdc-wdm0] Device model retrieved:
              Model: 'SARA-R410M-02B'
      
      Signed-off-by: default avatarSZ Lin (林上智) <sz.lin@moxa.com>
      Cc: stable <stable@vger.kernel.org>
      Acked-by: default avatarBjørn Mork <bjorn@mork.no>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9306b38e
    • Xin Long's avatar
      sctp: handle two v4 addrs comparison in sctp_inet6_cmp_addr · d625329b
      Xin Long authored
      Since sctp ipv6 socket also supports v4 addrs, it's possible to
      compare two v4 addrs in pf v6 .cmp_addr, sctp_inet6_cmp_addr.
      
      However after Commit 1071ec9d ("sctp: do not check port in
      sctp_inet6_cmp_addr"), it no longer calls af1->cmp_addr, which
      in this case is sctp_v4_cmp_addr, but calls __sctp_v6_cmp_addr
      where it handles them as two v6 addrs. It would cause a out of
      bounds crash.
      
      syzbot found this crash when trying to bind two v4 addrs to a
      v6 socket.
      
      This patch fixes it by adding the process for two v4 addrs in
      sctp_inet6_cmp_addr.
      
      Fixes: 1071ec9d
      
       ("sctp: do not check port in sctp_inet6_cmp_addr")
      Reported-by: default avatar <syzbot+cd494c1dd681d4d93ebb@syzkaller.appspotmail.com>
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d625329b
    • Florian Fainelli's avatar
      net: systemport: Correclty disambiguate driver instances · 1f3ccc3c
      Florian Fainelli authored
      While adding the DSA notifier, we will be sending DSA notifications with
      info->master that is going to point to a particular net_device instance.
      
      Our logic in bcm_sysport_map_queues() correctly disambiguates net_device
      instances that are not covered by our own driver, but it will not make
      sure that info->master points to a particular driver instance that we
      are interested in. In a system where e.g: two or more SYSTEMPORT
      instances are registered, this would lead in programming two or more
      times the queue mapping, completely messing with the logic which does
      the queue/port allocation and tracking.
      
      Fix this by looking at the notifier_block pointer which is unique per
      instance and allows us to go back to our driver private structure, and
      in turn to the backing net_device instance.
      
      Fixes: d1565763
      
       ("net: systemport: Establish lower/upper queue mapping")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Reviewed-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1f3ccc3c
    • Anders Roxell's avatar
      selftests: net: add in_netns.sh TEST_GEN_PROGS_EXTENDED · 9faedd64
      Anders Roxell authored
      Script in_netns.sh is a utility function and not its own test so it
      shouldn't be part of the TEST_PROGS. The in_netns.sh get used by
      run_afpackettests.
      To install in_netns.sh without being added to the main run_kselftest.sh
      script use the TEST_GEN_PROGS_EXTENDED variable.
      
      Fixes: 5ff9c1a3
      
       ("selftests: net: add in_netns.sh to TEST_PROGS")
      Signed-off-by: default avatarAnders Roxell <anders.roxell@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9faedd64
  5. Apr 27, 2018