1. 12 Oct, 2015 12 commits
    • Alexei Starovoitov's avatar
      bpf: add unprivileged bpf tests · bf508877
      Alexei Starovoitov authored
      Add new tests samples/bpf/test_verifier:
      
      unpriv: return pointer
        checks that pointer cannot be returned from the eBPF program
      
      unpriv: add const to pointer
      unpriv: add pointer to pointer
      unpriv: neg pointer
        checks that pointer arithmetic is disallowed
      
      unpriv: cmp pointer with const
      unpriv: cmp pointer with pointer
        checks that comparison of pointers is disallowed
        Only one case allowed 'void *value = bpf_map_lookup_elem(..); if (value == 0) ...'
      
      unpriv: check that printk is disallowed
        since bpf_trace_printk is not available to unprivileged
      
      unpriv: pass pointer to helper function
        checks that pointers cannot be passed to functions that expect integers
        If function expects a pointer the verifier allows only that type of pointer.
        Like 1st argument of bpf_map_lookup_elem() must be pointer to map.
        (applies to non-root as well)
      
      unpriv: indirectly pass pointer on stack to helper function
        checks that pointer stored into stack cannot be used as part of key
        passed into bpf_map_lookup_elem()
      
      unpriv: mangle pointer on stack 1
      unpriv: mangle pointer on stack 2
        checks that writing into stack slot that already contains a pointer
        is disallowed
      
      unpriv: read pointer from stack in small chunks
        checks that < 8 byte read from stack slot that contains a pointer is
        disallowed
      
      unpriv: write pointer into ctx
        checks that storing pointers into skb->fields is disallowed
      
      unpriv: write pointer into map elem value
        checks that storing pointers into element values is disallowed
        For example:
        int bpf_prog(struct __sk_buff *skb)
        {
          u32 key = 0;
          u64 *value = bpf_map_lookup_elem(&map, &key);
          if (value)
             *value = (u64) skb;
        }
        will be rejected.
      
      unpriv: partial copy of pointer
        checks that doing 32-bit register mov from register containing
        a pointer is disallowed
      
      unpriv: pass pointer to tail_call
        checks that passing pointer as an index into bpf_tail_call
        is disallowed
      
      unpriv: cmp map pointer with zero
        checks that comparing map pointer with constant is disallowed
      
      unpriv: write into frame pointer
        checks that frame pointer is read-only (applies to root too)
      
      unpriv: cmp of frame pointer
        checks that R10 cannot be using in comparison
      
      unpriv: cmp of stack pointer
        checks that Rx = R10 - imm is ok, but comparing Rx is not
      
      unpriv: obfuscate stack pointer
        checks that Rx = R10 - imm is ok, but Rx -= imm is not
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bf508877
    • Alexei Starovoitov's avatar
      bpf: charge user for creation of BPF maps and programs · aaac3ba9
      Alexei Starovoitov authored
      since eBPF programs and maps use kernel memory consider it 'locked' memory
      from user accounting point of view and charge it against RLIMIT_MEMLOCK limit.
      This limit is typically set to 64Kbytes by distros, so almost all
      bpf+tracing programs would need to increase it, since they use maps,
      but kernel charges maximum map size upfront.
      For example the hash map of 1024 elements will be charged as 64Kbyte.
      It's inconvenient for current users and changes current behavior for root,
      but probably worth doing to be consistent root vs non-root.
      
      Similar accounting logic is done by mmap of perf_event.
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      aaac3ba9
    • Alexei Starovoitov's avatar
      bpf: enable non-root eBPF programs · 1be7f75d
      Alexei Starovoitov authored
      In order to let unprivileged users load and execute eBPF programs
      teach verifier to prevent pointer leaks.
      Verifier will prevent
      - any arithmetic on pointers
        (except R10+Imm which is used to compute stack addresses)
      - comparison of pointers
        (except if (map_value_ptr == 0) ... )
      - passing pointers to helper functions
      - indirectly passing pointers in stack to helper functions
      - returning pointer from bpf program
      - storing pointers into ctx or maps
      
      Spill/fill of pointers into stack is allowed, but mangling
      of pointers stored in the stack or reading them byte by byte is not.
      
      Within bpf programs the pointers do exist, since programs need to
      be able to access maps, pass skb pointer to LD_ABS insns, etc
      but programs cannot pass such pointer values to the outside
      or obfuscate them.
      
      Only allow BPF_PROG_TYPE_SOCKET_FILTER unprivileged programs,
      so that socket filters (tcpdump), af_packet (quic acceleration)
      and future kcm can use it.
      tracing and tc cls/act program types still require root permissions,
      since tracing actually needs to be able to see all kernel pointers
      and tc is for root only.
      
      For example, the following unprivileged socket filter program is allowed:
      int bpf_prog1(struct __sk_buff *skb)
      {
        u32 index = load_byte(skb, ETH_HLEN + offsetof(struct iphdr, protocol));
        u64 *value = bpf_map_lookup_elem(&my_map, &index);
      
        if (value)
      	*value += skb->len;
        return 0;
      }
      
      but the following program is not:
      int bpf_prog1(struct __sk_buff *skb)
      {
        u32 index = load_byte(skb, ETH_HLEN + offsetof(struct iphdr, protocol));
        u64 *value = bpf_map_lookup_elem(&my_map, &index);
      
        if (value)
      	*value += (u64) skb;
        return 0;
      }
      since it would leak the kernel address into the map.
      
      Unprivileged socket filter bpf programs have access to the
      following helper functions:
      - map lookup/update/delete (but they cannot store kernel pointers into them)
      - get_random (it's already exposed to unprivileged user space)
      - get_smp_processor_id
      - tail_call into another socket filter program
      - ktime_get_ns
      
      The feature is controlled by sysctl kernel.unprivileged_bpf_disabled.
      This toggle defaults to off (0), but can be set true (1).  Once true,
      bpf programs and maps cannot be accessed from unprivileged process,
      and the toggle cannot be set back to false.
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1be7f75d
    • Arnd Bergmann's avatar
      net: HNS: fix MDIO dependencies · 0fa28877
      Arnd Bergmann authored
      The newly introduced HNS_MDIO Kconfig symbol selects 'MDIO', but
      that is the wrong symbol as the code used by this driver is
      provided by PHYLIB rather than the MDIO driver. Also, there is
      no need to make this driver user selectable, because it is already
      selected by all drivers that need it.
      
      This changes the Kconfig file to select the correct library, and
      to make the option silent.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Fixes: 5b904d39 ("net: add Hisilicon Network Subsystem MDIO support")
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0fa28877
    • Daniel Pieczko's avatar
      sfc: fully reset if MC_REBOOT event received without warm_boot_count increment · c577e59e
      Daniel Pieczko authored
      On EF10, MC_CMD_VPORT_RECONFIGURE can cause a CODE_MC_REBOOT event
      to be sent to a function without incrementing the (adapter-wide)
      warm_boot_count.  In this case, the reboot is not detected by the
      loop on efx_mcdi_poll_reboot(), so prepare for recovery from an MC
      reboot anyway.  When this codepath is run, the MC has always just
      rebooted, so this recovery is valid.
      
      The loop on efx_mcdi_poll_reboot() is still required for other MC
      reboot cases, so that actions in response to an MC reboot are
      performed, such as clearing locally calculated statistics.
      Siena NICs are unaffected by this change as the above scenario
      does not apply.
      Signed-off-by: default avatarShradha Shah <sshah@solarflare.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c577e59e
    • David S. Miller's avatar
      Merge branch 'switchdev_ageing_time' · d5404915
      David S. Miller authored
      Scott Feldman says:
      
      ====================
      switchdev: push bridge ageing_time attribute down
      
      Push bridge-level attributes down to switchdev drivers.  This patchset
      adds the infrastructure and then pushes, as an example, ageing_time attribute
      down from bridge to switchdev (rocker) driver.  Add some range-checking
      for ageing_time.
      
      RTNETLINK answers: Numerical result out of range
      
      Up until now, switchdev attrs where port-level attrs, so the netdev used in
      switchdev_attr_set() would be a switch port or bond of switch ports.  With
      bridge-level attrs, the netdev passed to switchdev_attr_set() is the bridge
      netdev.  The same recusive algo is used to visit the leaves of the stacked
      drivers to set the attr, it's just in this case we start one layer higher in
      the stack.  One note is not all ports in the bridge may support setting a
      bridge-level attribute, so rather than failing the entire set, we'll skip over
      those ports returning -EOPNOTSUPP.
      
      v2->v3: Per Jiri review: push only ageing_time attr down at this time, and
      don't pass raw bridge IFLA_BR_* values; rather use new switchdev attr ID for
      ageing_time.
      
      v1->v2: rebase w/ net-next
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d5404915
    • Scott Feldman's avatar
      rocker: handle setting bridge ageing_time · d0cf57f9
      Scott Feldman authored
      The FDB cleanup timer will get rescheduled to re-evaluate FDB entries
      based on new ageing_time.
      Signed-off-by: default avatarScott Feldman <sfeldma@gmail.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d0cf57f9
    • Scott Feldman's avatar
      bridge: push bridge setting ageing_time down to switchdev · c62987bb
      Scott Feldman authored
      Use SWITCHDEV_F_SKIP_EOPNOTSUPP to skip over ports in bridge that don't
      support setting ageing_time (or setting bridge attrs in general).
      
      If push fails, don't update ageing_time in bridge and return err to user.
      
      If push succeeds, update ageing_time in bridge and run gc_timer now to
      recalabrate when to run gc_timer next, based on new ageing_time.
      Signed-off-by: default avatarScott Feldman <sfeldma@gmail.com>
      Signed-off-by: default avatarJiri Pirko <jiri@resnulli.us>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c62987bb
    • Scott Feldman's avatar
      switchdev: skip over ports returning -EOPNOTSUPP when recursing ports · 464314ea
      Scott Feldman authored
      This allows us to recurse over all the ports, skipping over unsupporting
      ports.  Without the change, the recursion would stop at first unsupported
      port.
      Signed-off-by: default avatarScott Feldman <sfeldma@gmail.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      464314ea
    • Scott Feldman's avatar
      switchdev: add bridge ageing_time attribute · f55ac58a
      Scott Feldman authored
      Setting the stage to push bridge-level attributes down to port driver so
      hardware can be programmed accordingly.  Bridge-level attribute example is
      ageing_time.  This is a per-bridge attribute, not a per-bridge-port attr.
      Signed-off-by: default avatarScott Feldman <sfeldma@gmail.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f55ac58a
    • Richard Sailer's avatar
      tcp: change type of alive from int to bool · 7533ce30
      Richard Sailer authored
      The alive parameter of tcp_orphan_retries, indicates
      whether the connection is assumed alive or not.
      In the function and all places calling it is used as a boolean value.
      
      Therefore this changes the type of alive to bool in the function
      definition and all calling locations.
      
      Since tcp_orphan_tries is a tcp_timer.c local function no change in
      any other file or header is necessary.
      Signed-off-by: default avatarRichard Sailer <richard@weltraumpflege.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7533ce30
    • Roopa Prabhu's avatar
      bridge: allow adding of fdb entries pointing to the bridge device · 3741873b
      Roopa Prabhu authored
      This patch enables adding of fdb entries pointing to the bridge device.
      This can be used to propagate mac address of vlan interfaces
      configured on top of the vlan filtering bridge.
      
      Before:
      $bridge fdb add 44:38:39:00:27:9f dev bridge
      RTNETLINK answers: Invalid argument
      
      After:
      $bridge fdb add 44:38:39:00:27:9f dev bridge
      Signed-off-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
      Reviewed-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3741873b
  2. 11 Oct, 2015 11 commits
  3. 09 Oct, 2015 17 commits
    • David S. Miller's avatar
      Merge branch 'net-non-modular' · d49ae37c
      David S. Miller authored
      Paul Gortmaker says:
      
      ====================
      make non-modular code explicitly non-modular
      
      [v2: drop m68k patches that Geert converted to modules; add one ARM
       driver patch ; update net-next baseline to today; switch to ARM
       for build testing.]
      
      In a previous merge window, we made changes to allow better
      delineation between modular and non-modular code in commit
      0fd972a7 ("module: relocate module_init
      from init.h to module.h").  This allows us to now ensure module code
      looks modular and non-modular code does not accidentally look modular
      just to avoid suffering build breakage.
      
      Here we target code that is, by nature of their Makefile and/or
      Kconfig settings, only available to be built-in, but implicitly
      presenting itself as being possibly modular by way of using modular
      headers, macros, and functions.
      
      The goal here is to remove that illusion of modularity from these
      files, but in a way that leaves the actual runtime unchanged.
      In doing so, we remove code that has never been tested and adds
      no value to the tree.  And we continue the process of expecting a
      level of consistency between the Kconfig/Makefile of code and the
      code in use itself.
      
      Fortuntately the net subsystem has relatively few instances, given
      the overall amount of code and drivers it contains.  For comparison
      there are over 300 instances tree wide, resulting in a possible net
      removal of on the order of 5000 lines of unused code.
      
      Build tested on net-next from today, on ARM, since that is the arch
      where the one ethernet driver changed here is available.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d49ae37c
    • Paul Gortmaker's avatar
      drivers/net/ethernet: make ti/cpsw-phy-sel.c explicitly non-modular · b3c8ec35
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/net/ethernet/ti/Kconfig:config TI_CPSW_PHY_SEL
      drivers/net/ethernet/ti/Kconfig:        bool "TI CPSW Switch Phy sel Support"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the couple traces of modularity so that when reading the
      driver there is no doubt it is builtin-only.
      
      Since module_platform_driver() uses the same init level priority as
      builtin_platform_driver() the init ordering remains unchanged with
      this commit.
      
      Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      was (or is now) contained at the top of the file in the comments.
      
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Varka Bhadram <varkabhadram@gmail.com>
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b3c8ec35
    • Paul Gortmaker's avatar
      net/sched: make sch_blackhole.c explicitly non-modular · 075640e3
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      net/sched/Kconfig:menuconfig NET_SCHED
      net/sched/Kconfig:      bool "QoS and/or fair queueing"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.  We can
      change to one of the other priority initcalls (subsys?) at any later
      date, if desired.
      
      We also delete the MODULE_LICENSE tag since all that information
      is already contained at the top of the file in the comments.
      
      Cc: Jamal Hadi Salim <jhs@mojatatu.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      075640e3
    • Paul Gortmaker's avatar
      net/dcb: make dcbnl.c explicitly non-modular · 36b9ad80
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      net/dcb/Kconfig:config DCB
      net/dcb/Kconfig:        bool "Data Center Bridging support"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.  We can
      change to one of the other priority initcalls (subsys?) at any later
      date, if desired.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      is (or is now) already contained at the top of the file in the comments.
      
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Or Gerlitz <ogerlitz@mellanox.com>
      Cc: Anish Bhatt <anish@chelsio.com>
      Cc: John Fastabend <john.r.fastabend@intel.com>
      Cc: Shani Michaeli <shanim@mellanox.com>
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      36b9ad80
    • Paul Gortmaker's avatar
      net/core: make sock_diag.c explicitly non-modular · b6191aee
      Paul Gortmaker authored
      The Makefile currently controlling compilation of this code lists
      it under "obj-y" ...meaning that it currently is not being built as
      a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.  We can
      change to one of the other priority initcalls (subsys?) at any later
      date, if desired.
      
      We can't remove module.h since the file uses other module related
      stuff even though it is not modular itself.
      
      We move the information from the MODULE_LICENSE tag to the top of the
      file, since that information is not captured anywhere else.  The
      MODULE_ALIAS_NET_PF_PROTO becomes a no-op in the non modular case, so
      it is removed.
      
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: Alexei Starovoitov <ast@plumgrid.com>
      Cc: Craig Gallek <kraig@google.com>
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b6191aee
    • David S. Miller's avatar
      Merge branch 'net-bool' · 4d886d65
      David S. Miller authored
      Yaowei Bai says:
      
      ====================
      net: small improvement
      
      This patchset makes several functions in net return bool to improve
      readability and/or simplicity because these functions only use one
      or zero as their return value.
      
      No functional changes.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4d886d65
    • Yaowei Bai's avatar
      net/core: lockdep_rtnl_is_held can be boolean · 0cbf3343
      Yaowei Bai authored
      This patch makes lockdep_rtnl_is_held return bool due to this
      particular function only using either one or zero as its return
      value.
      
      In another patch lockdep_is_held is also made return bool.
      
      No functional change.
      Signed-off-by: default avatarYaowei Bai <bywxiaobai@163.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0cbf3343
    • Yaowei Bai's avatar
      net/inetdevice: bad_mask can be boolean · f06cc7b2
      Yaowei Bai authored
      This patch makes bad_mask return bool due to this particular function
      only using either one or zero as its return value.
      
      No functional change.
      Signed-off-by: default avatarYaowei Bai <bywxiaobai@163.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f06cc7b2
    • Yaowei Bai's avatar
      net/inetdevice: inet_ifa_match can be boolean · c3225164
      Yaowei Bai authored
      This patch makes inet_ifa_match return bool due to this
      particular function only using either one or zero as its return
      value.
      
      No functional change.
      Signed-off-by: default avatarYaowei Bai <bywxiaobai@163.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c3225164
    • Yaowei Bai's avatar
      net/dccp: dccp_bad_service_code can be boolean · 45ae74f5
      Yaowei Bai authored
      This patch makes dccp_bad_service_code return bool due to these
      particular functions only using either one or zero as their return
      value.
      
      dccp_list_has_service is also been made return bool in this patchset.
      
      No functional change.
      Signed-off-by: default avatarYaowei Bai <bywxiaobai@163.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      45ae74f5
    • Yaowei Bai's avatar
      net/dccp: dccp_list_has_service can be boolean · 0c6119d9
      Yaowei Bai authored
      This patch makes dccp_list_has_service return bool due to this
      particular function only using either one or zero as its return
      value.
      
      No functional change.
      Signed-off-by: default avatarYaowei Bai <bywxiaobai@163.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0c6119d9
    • Yaowei Bai's avatar
      net/can: can_dropped_invalid_skb can be boolean · d6fbaea5
      Yaowei Bai authored
      This patch makes can_dropped_invalid_skb return bool due to this
      particular function only using either one or zero as its return
      value.
      
      No functional change.
      Signed-off-by: default avatarYaowei Bai <bywxiaobai@163.com>
      Acked-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d6fbaea5
    • Yaowei Bai's avatar
      net/nfnetlink: lockdep_nfnl_is_held can be boolean · 875e0829
      Yaowei Bai authored
      This patch makes lockdep_nfnl_is_held return bool to improve
      readability due to this particular function only using either
      one or zero as its return value.
      
      No functional change.
      Signed-off-by: default avatarYaowei Bai <bywxiaobai@163.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      875e0829
    • Yaowei Bai's avatar
      net/ieee80211: ieee80211_is_* can be boolean · 35498edc
      Yaowei Bai authored
      This patch makes ieee80211_is_* return bool to improve
      readability due to these particular functions only using either
      one or zero as their return value.
      
      No functional change.
      Signed-off-by: default avatarYaowei Bai <bywxiaobai@163.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      35498edc
    • Yaowei Bai's avatar
      net/netlink: lockdep_genl_is_held can be boolean · 61d03535
      Yaowei Bai authored
      This patch makes lockdep_genl_is_held return bool to improve
      readability due to this particular function only using either
      one or zero as its return value.
      
      No functional change.
      Signed-off-by: default avatarYaowei Bai <bywxiaobai@163.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      61d03535
    • David S. Miller's avatar
      Merge branch 'mlx-next' · 8cec75bd
      David S. Miller authored
      Or Gerlitz says:
      
      ==============================
      Mellanox driver update for net-next
      
      Some small fixes and small enhancements from the team.
      
      Series applies over net-next commit acb4a6bf "tcp: ensure prior synack rtx behavior
      with small backlogs".
      ==============================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8cec75bd
    • Saeed Mahameed's avatar
      net/mlx4_core: Fix resource tracker error flow in add_res_range · 95e19633
      Saeed Mahameed authored
      The 'for' loop when undoing rb-tree insertions and list-adds in the
      error flow in add_res_range had errors, fix them.
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
      Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      95e19633