1. 02 9月, 2017 1 次提交
  2. 31 8月, 2017 11 次提交
  3. 23 8月, 2017 1 次提交
  4. 19 8月, 2017 1 次提交
  5. 09 8月, 2017 1 次提交
  6. 05 8月, 2017 2 次提交
    • I
      mlxsw: spectrum_switchdev: Release multicast groups during fini · 852cfeed
      Ido Schimmel 提交于
      Each multicast group (MID) stores a bitmap of ports to which a packet
      should be forwarded to in case an MDB entry associated with the MID is
      hit.
      
      Since the initial introduction of IGMP snooping in commit 3a49b4fd
      ("mlxsw: Adding layer 2 multicast support") the driver didn't correctly
      free these multicast groups upon ungraceful situations such as the
      removal of the upper bridge device or module removal.
      
      The correct way to fix this is to associate each MID with the bridge
      ports member in it and then drop the reference in case the bridge port
      is destroyed, but this will result in a lot more code and will be fixed
      in net-next.
      
      For now, upon module removal, traverse the MID list and release each
      one.
      
      Fixes: 3a49b4fd ("mlxsw: Adding layer 2 multicast support")
      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>
      852cfeed
    • I
      mlxsw: spectrum_switchdev: Don't warn about valid situations · 17b334a8
      Ido Schimmel 提交于
      Some operations in the bridge driver such as MDB deletion are preformed
      in an atomic context and thus deferred to a process context by the
      switchdev infrastructure.
      
      Therefore, by the time the operation is performed by the underlying
      device driver it's possible the bridge port context is already gone.
      This is especially true for removal flows, but theoretically can also be
      invoked during addition.
      
      Remove the warnings in such situations and return normally.
      
      Fixes: c57529e1 ("mlxsw: spectrum: Replace vPorts with Port-VLAN")
      Fixes: 3922285d ("net: bridge: Add support for offloading port attributes")
      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>
      17b334a8
  7. 03 8月, 2017 4 次提交
  8. 27 7月, 2017 13 次提交
  9. 25 7月, 2017 1 次提交
    • I
      mlxsw: spectrum_router: Don't offload routes next in list · 1819ae3d
      Ido Schimmel 提交于
      Each FIB node holds a linked list of routes sharing the same prefix and
      length. In the case of IPv4 it's ordered according to table ID, metric
      and TOS and only the first route in the list is actually programmed to
      the device.
      
      In case a gatewayed route is added somewhere in the list, then after its
      nexthop group will be refreshed and become valid (due to the resolution
      of its gateway), it'll mistakenly overwrite the existing entry.
      
      Example:
      192.168.200.0/24 dev enp3s0np3 scope link metric 1000 offload
      192.168.200.0/24 via 192.168.100.1 dev enp3s0np3 metric 1000 offload
      
      Both routes are marked as offloaded despite the fact only the first one
      should actually be present in the device's table.
      
      When refreshing the nexthop group, don't write the route to the device's
      table unless it's the first in its node.
      
      Fixes: 9aecce1c ("mlxsw: spectrum_router: Correctly handle identical routes")
      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>
      1819ae3d
  10. 18 7月, 2017 1 次提交
  11. 16 7月, 2017 1 次提交
  12. 12 7月, 2017 3 次提交
    • I
      mlxsw: spectrum_switchdev: Check status of memory allocation · 6f497930
      Ido Schimmel 提交于
      We can't rely on kzalloc() always succeeding, so check its return value.
      
      Suppresses the following smatch error:
      
      mlxsw_sp_switchdev_event() error: potential null dereference
      'switchdev_work->fdb_info.addr'.  (kzalloc returns
       null)
      
      Fixes: af061378 ("mlxsw: spectrum_switchdev: Add support for learning FDB through notification")
      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>
      6f497930
    • I
      mlxsw: spectrum_switchdev: Remove unused variable · a9265b80
      Ido Schimmel 提交于
      Commit 10e23eb2 ("mlxsw: spectrum: Remove support for bypass bridge
      port attributes/vlan set") removed statements that used 'bridge_vlan',
      but didn't remove the variable itself resulting in the following warning
      with W=1:
      
      warning: variable ‘bridge_vlan’ set but not used
      [-Wunused-but-set-variable]
      
      Remove the variable and suppress the warning.
      
      Fixes: 10e23eb2 ("mlxsw: spectrum: Remove support for bypass bridge port attributes/vlan set")
      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>
      a9265b80
    • I
      mlxsw: spectrum_router: Fix use-after-free in route replace · 7387dbbc
      Ido Schimmel 提交于
      While working on IPv6 route replace I realized we can have a
      use-after-free in IPv4 in case the replaced route is offloaded and the
      only one using its FIB info.
      
      The problem is that fib_table_insert() drops the reference on the FIB
      info of the replaced routes which is eventually freed via call_rcu().
      Since the driver doesn't hold a reference on this FIB info it can cause
      a use-after-free when it tries to clear the RTNH_F_OFFLOAD flag stored
      in fi->fib_flags.
      
      After running the following commands in a loop for enough time with a
      KASAN enabled kernel I finally got the below trace.
      
      $ ip route add 192.168.50.0/24 via 192.168.200.1 dev enp3s0np3
      $ ip route replace 192.168.50.0/24 dev enp3s0np5
      $ ip route del 192.168.50.0/24 dev enp3s0np5
      
      BUG: KASAN: use-after-free in mlxsw_sp_fib_entry_offload_unset+0xa7/0x120 [mlxsw_spectrum]
      Read of size 4 at addr ffff8803717d9820 by task kworker/u4:2/55
      [...]
      ? mlxsw_sp_fib_entry_offload_unset+0xa7/0x120 [mlxsw_spectrum]
      ? mlxsw_sp_fib_entry_offload_unset+0xa7/0x120 [mlxsw_spectrum]
      ? mlxsw_sp_router_neighs_update_work+0x1cd0/0x1ce0 [mlxsw_spectrum]
      ? mlxsw_sp_fib_entry_offload_unset+0xa7/0x120 [mlxsw_spectrum]
      __asan_load4+0x61/0x80
      mlxsw_sp_fib_entry_offload_unset+0xa7/0x120 [mlxsw_spectrum]
      mlxsw_sp_fib_entry_offload_refresh+0xb6/0x370 [mlxsw_spectrum]
      mlxsw_sp_router_fib_event_work+0xd1c/0x2780 [mlxsw_spectrum]
      [...]
      Freed by task 5131:
       save_stack_trace+0x16/0x20
       save_stack+0x46/0xd0
       kasan_slab_free+0x70/0xc0
       kfree+0x144/0x570
       free_fib_info_rcu+0x2e7/0x410
       rcu_process_callbacks+0x4f8/0xe30
       __do_softirq+0x1d3/0x9e2
      
      Fix this by taking a reference on the FIB info when creating the nexthop
      group it represents and drop it when the group is destroyed.
      
      Fixes: 599cf8f9 ("mlxsw: spectrum_router: Add support for route replace")
      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>
      7387dbbc