1. 24 11月, 2018 10 次提交
  2. 22 11月, 2018 1 次提交
  3. 21 11月, 2018 3 次提交
  4. 20 11月, 2018 8 次提交
  5. 19 11月, 2018 1 次提交
  6. 18 11月, 2018 13 次提交
    • J
      tipc: don't assume linear buffer when reading ancillary data · 1c1274a5
      Jon Maloy 提交于
      The code for reading ancillary data from a received buffer is assuming
      the buffer is linear. To make this assumption true we have to linearize
      the buffer before message data is read.
      Signed-off-by: NJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1c1274a5
    • J
      tipc: fix lockdep warning when reinitilaizing sockets · adba75be
      Jon Maloy 提交于
      We get the following warning:
      
      [   47.926140] 32-bit node address hash set to 2010a0a
      [   47.927202]
      [   47.927433] ================================
      [   47.928050] WARNING: inconsistent lock state
      [   47.928661] 4.19.0+ #37 Tainted: G            E
      [   47.929346] --------------------------------
      [   47.929954] inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
      [   47.930116] swapper/3/0 [HC0[0]:SC1[3]:HE1:SE0] takes:
      [   47.930116] 00000000af8bc31e (&(&ht->lock)->rlock){+.?.}, at: rhashtable_walk_enter+0x36/0xb0
      [   47.930116] {SOFTIRQ-ON-W} state was registered at:
      [   47.930116]   _raw_spin_lock+0x29/0x60
      [   47.930116]   rht_deferred_worker+0x556/0x810
      [   47.930116]   process_one_work+0x1f5/0x540
      [   47.930116]   worker_thread+0x64/0x3e0
      [   47.930116]   kthread+0x112/0x150
      [   47.930116]   ret_from_fork+0x3a/0x50
      [   47.930116] irq event stamp: 14044
      [   47.930116] hardirqs last  enabled at (14044): [<ffffffff9a07fbba>] __local_bh_enable_ip+0x7a/0xf0
      [   47.938117] hardirqs last disabled at (14043): [<ffffffff9a07fb81>] __local_bh_enable_ip+0x41/0xf0
      [   47.938117] softirqs last  enabled at (14028): [<ffffffff9a0803ee>] irq_enter+0x5e/0x60
      [   47.938117] softirqs last disabled at (14029): [<ffffffff9a0804a5>] irq_exit+0xb5/0xc0
      [   47.938117]
      [   47.938117] other info that might help us debug this:
      [   47.938117]  Possible unsafe locking scenario:
      [   47.938117]
      [   47.938117]        CPU0
      [   47.938117]        ----
      [   47.938117]   lock(&(&ht->lock)->rlock);
      [   47.938117]   <Interrupt>
      [   47.938117]     lock(&(&ht->lock)->rlock);
      [   47.938117]
      [   47.938117]  *** DEADLOCK ***
      [   47.938117]
      [   47.938117] 2 locks held by swapper/3/0:
      [   47.938117]  #0: 0000000062c64f90 ((&d->timer)){+.-.}, at: call_timer_fn+0x5/0x280
      [   47.938117]  #1: 00000000ee39619c (&(&d->lock)->rlock){+.-.}, at: tipc_disc_timeout+0xc8/0x540 [tipc]
      [   47.938117]
      [   47.938117] stack backtrace:
      [   47.938117] CPU: 3 PID: 0 Comm: swapper/3 Tainted: G            E     4.19.0+ #37
      [   47.938117] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
      [   47.938117] Call Trace:
      [   47.938117]  <IRQ>
      [   47.938117]  dump_stack+0x5e/0x8b
      [   47.938117]  print_usage_bug+0x1ed/0x1ff
      [   47.938117]  mark_lock+0x5b5/0x630
      [   47.938117]  __lock_acquire+0x4c0/0x18f0
      [   47.938117]  ? lock_acquire+0xa6/0x180
      [   47.938117]  lock_acquire+0xa6/0x180
      [   47.938117]  ? rhashtable_walk_enter+0x36/0xb0
      [   47.938117]  _raw_spin_lock+0x29/0x60
      [   47.938117]  ? rhashtable_walk_enter+0x36/0xb0
      [   47.938117]  rhashtable_walk_enter+0x36/0xb0
      [   47.938117]  tipc_sk_reinit+0xb0/0x410 [tipc]
      [   47.938117]  ? mark_held_locks+0x6f/0x90
      [   47.938117]  ? __local_bh_enable_ip+0x7a/0xf0
      [   47.938117]  ? lockdep_hardirqs_on+0x20/0x1a0
      [   47.938117]  tipc_net_finalize+0xbf/0x180 [tipc]
      [   47.938117]  tipc_disc_timeout+0x509/0x540 [tipc]
      [   47.938117]  ? call_timer_fn+0x5/0x280
      [   47.938117]  ? tipc_disc_msg_xmit.isra.19+0xa0/0xa0 [tipc]
      [   47.938117]  ? tipc_disc_msg_xmit.isra.19+0xa0/0xa0 [tipc]
      [   47.938117]  call_timer_fn+0xa1/0x280
      [   47.938117]  ? tipc_disc_msg_xmit.isra.19+0xa0/0xa0 [tipc]
      [   47.938117]  run_timer_softirq+0x1f2/0x4d0
      [   47.938117]  __do_softirq+0xfc/0x413
      [   47.938117]  irq_exit+0xb5/0xc0
      [   47.938117]  smp_apic_timer_interrupt+0xac/0x210
      [   47.938117]  apic_timer_interrupt+0xf/0x20
      [   47.938117]  </IRQ>
      [   47.938117] RIP: 0010:default_idle+0x1c/0x140
      [   47.938117] Code: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 41 54 55 53 65 8b 2d d8 2b 74 65 0f 1f 44 00 00 e8 c6 2c 8b ff fb f4 <65> 8b 2d c5 2b 74 65 0f 1f 44 00 00 5b 5d 41 5c c3 65 8b 05 b4 2b
      [   47.938117] RSP: 0018:ffffaf6ac0207ec8 EFLAGS: 00000206 ORIG_RAX: ffffffffffffff13
      [   47.938117] RAX: ffff8f5b3735e200 RBX: 0000000000000003 RCX: 0000000000000001
      [   47.938117] RDX: 0000000000000001 RSI: 0000000000000001 RDI: ffff8f5b3735e200
      [   47.938117] RBP: 0000000000000003 R08: 0000000000000001 R09: 0000000000000000
      [   47.938117] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
      [   47.938117] R13: 0000000000000000 R14: ffff8f5b3735e200 R15: ffff8f5b3735e200
      [   47.938117]  ? default_idle+0x1a/0x140
      [   47.938117]  do_idle+0x1bc/0x280
      [   47.938117]  cpu_startup_entry+0x19/0x20
      [   47.938117]  start_secondary+0x187/0x1c0
      [   47.938117]  secondary_startup_64+0xa4/0xb0
      
      The reason seems to be that tipc_net_finalize()->tipc_sk_reinit() is
      calling the function rhashtable_walk_enter() within a timer interrupt.
      We fix this by executing tipc_net_finalize() in work queue context.
      Acked-by: NYing Xue <ying.xue@windriver.com>
      Signed-off-by: NJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      adba75be
    • E
      net-gro: reset skb->pkt_type in napi_reuse_skb() · 33d9a2c7
      Eric Dumazet 提交于
      eth_type_trans() assumes initial value for skb->pkt_type
      is PACKET_HOST.
      
      This is indeed the value right after a fresh skb allocation.
      
      However, it is possible that GRO merged a packet with a different
      value (like PACKET_OTHERHOST in case macvlan is used), so
      we need to make sure napi->skb will have pkt_type set back to
      PACKET_HOST.
      
      Otherwise, valid packets might be dropped by the stack because
      their pkt_type is not PACKET_HOST.
      
      napi_reuse_skb() was added in commit 96e93eab ("gro: Add
      internal interfaces for VLAN"), but this bug always has
      been there.
      
      Fixes: 96e93eab ("gro: Add internal interfaces for VLAN")
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      33d9a2c7
    • S
      ip_tunnel: don't force DF when MTU is locked · 16f7eb2b
      Sabrina Dubroca 提交于
      The various types of tunnels running over IPv4 can ask to set the DF
      bit to do PMTU discovery. However, PMTU discovery is subject to the
      threshold set by the net.ipv4.route.min_pmtu sysctl, and is also
      disabled on routes with "mtu lock". In those cases, we shouldn't set
      the DF bit.
      
      This patch makes setting the DF bit conditional on the route's MTU
      locking state.
      
      This issue seems to be older than git history.
      Signed-off-by: NSabrina Dubroca <sd@queasysnail.net>
      Reviewed-by: NStefano Brivio <sbrivio@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      16f7eb2b
    • N
      net: bridge: fix vlan stats use-after-free on destruction · 9d332e69
      Nikolay Aleksandrov 提交于
      Syzbot reported a use-after-free of the global vlan context on port vlan
      destruction. When I added per-port vlan stats I missed the fact that the
      global vlan context can be freed before the per-port vlan rcu callback.
      There're a few different ways to deal with this, I've chosen to add a
      new private flag that is set only when per-port stats are allocated so
      we can directly check it on destruction without dereferencing the global
      context at all. The new field in net_bridge_vlan uses a hole.
      
      v2: cosmetic change, move the check to br_process_vlan_info where the
          other checks are done
      v3: add change log in the patch, add private (in-kernel only) flags in a
          hole in net_bridge_vlan struct and use that instead of mixing
          user-space flags with private flags
      
      Fixes: 9163a0fc ("net: bridge: add support for per-port vlan stats")
      Reported-by: syzbot+04681da557a0e49a52e5@syzkaller.appspotmail.com
      Signed-off-by: NNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9d332e69
    • S
      socket: do a generic_file_splice_read when proto_ops has no splice_read · 95506588
      Slavomir Kaslev 提交于
      splice(2) fails with -EINVAL when called reading on a socket with no splice_read
      set in its proto_ops (such as vsock sockets). Switch this to fallbacks to a
      generic_file_splice_read instead.
      Signed-off-by: NSlavomir Kaslev <kaslevs@vmware.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      95506588
    • S
      net/ncsi: Configure multi-package, multi-channel modes with failover · 8d951a75
      Samuel Mendoza-Jonas 提交于
      This patch extends the ncsi-netlink interface with two new commands and
      three new attributes to configure multiple packages and/or channels at
      once, and configure specific failover modes.
      
      NCSI_CMD_SET_PACKAGE mask and NCSI_CMD_SET_CHANNEL_MASK set a whitelist
      of packages or channels allowed to be configured with the
      NCSI_ATTR_PACKAGE_MASK and NCSI_ATTR_CHANNEL_MASK attributes
      respectively. If one of these whitelists is set only packages or
      channels matching the whitelist are considered for the channel queue in
      ncsi_choose_active_channel().
      
      These commands may also use the NCSI_ATTR_MULTI_FLAG to signal that
      multiple packages or channels may be configured simultaneously. NCSI
      hardware arbitration (HWA) must be available in order to enable
      multi-package mode. Multi-channel mode is always available.
      
      If the NCSI_ATTR_CHANNEL_ID attribute is present in the
      NCSI_CMD_SET_CHANNEL_MASK command the it sets the preferred channel as
      with the NCSI_CMD_SET_INTERFACE command. The combination of preferred
      channel and channel whitelist defines a primary channel and the allowed
      failover channels.
      If the NCSI_ATTR_MULTI_FLAG attribute is also present then the preferred
      channel is configured for Tx/Rx and the other channels are enabled only
      for Rx.
      Signed-off-by: NSamuel Mendoza-Jonas <sam@mendozajonas.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8d951a75
    • S
      net/ncsi: Reset channel state in ncsi_start_dev() · 2878a2cf
      Samuel Mendoza-Jonas 提交于
      When the NCSI driver is stopped with ncsi_stop_dev() the channel
      monitors are stopped and the state set to "inactive". However the
      channels are still configured and active from the perspective of the
      network controller. We should suspend each active channel but in the
      context of ncsi_stop_dev() the transmit queue has been or is about to be
      stopped so we won't have time to do so.
      
      Instead when ncsi_start_dev() is called if the NCSI topology has already
      been probed then call ncsi_reset_dev() to suspend any channels that were
      previously active. This resets the network controller to a known state,
      provides an up to date view of channel link state, and makes sure that
      mode flags such as NCSI_MODE_TX_ENABLE are properly reset.
      
      In addition to ncsi_start_dev() use ncsi_reset_dev() in ncsi-netlink.c
      to update the channel configuration more cleanly.
      Signed-off-by: NSamuel Mendoza-Jonas <sam@mendozajonas.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2878a2cf
    • S
      net/ncsi: Don't mark configured channels inactive · 0b970e1b
      Samuel Mendoza-Jonas 提交于
      The concepts of a channel being 'active' and it having link are slightly
      muddled in the NCSI driver. Tweak this slightly so that
      NCSI_CHANNEL_ACTIVE represents a channel that has been configured and
      enabled, and NCSI_CHANNEL_INACTIVE represents a de-configured channel.
      This distinction is important because a channel can be 'active' but have
      its link down; in this case the channel may still need to be configured
      so that it may receive AEN link-state-change packets.
      Signed-off-by: NSamuel Mendoza-Jonas <sam@mendozajonas.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0b970e1b
    • S
      net/ncsi: Don't deselect package in suspend if active · cd09ab09
      Samuel Mendoza-Jonas 提交于
      When a package is deselected all channels of that package cease
      communication. If there are other channels active on the package of the
      suspended channel this will disable them as well, so only send a
      deselect-package command if no other channels are active.
      Signed-off-by: NSamuel Mendoza-Jonas <sam@mendozajonas.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cd09ab09
    • S
      net/ncsi: Probe single packages to avoid conflict · 8e13f70b
      Samuel Mendoza-Jonas 提交于
      Currently the NCSI driver sends a select-package command to all possible
      packages simultaneously to discover what packages are available. However
      at this stage in the probe process the driver does not know if
      hardware arbitration is available: if it isn't then this process could
      cause collisions on the RMII bus when packages try to respond.
      
      Update the probe loop to probe each package one by one, and once
      complete check if HWA is universally supported.
      Signed-off-by: NSamuel Mendoza-Jonas <sam@mendozajonas.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8e13f70b
    • S
      net/ncsi: Don't enable all channels when HWA available · 60ab49bf
      Samuel Mendoza-Jonas 提交于
      NCSI hardware arbitration allows multiple packages to be enabled at once
      and share the same wiring. If the NCSI driver recognises that HWA is
      available it unconditionally enables all packages and channels; but that
      is a configuration decision rather than something required by HWA.
      Additionally the current implementation will not failover on link events
      which can cause connectivity to be lost unless the interface is manually
      bounced.
      
      Retain basic HWA support but remove the separate configuration path to
      enable all channels, leaving this to be handled by a later
      implementation.
      Signed-off-by: NSamuel Mendoza-Jonas <sam@mendozajonas.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      60ab49bf
    • Y
      tcp: add SRTT to SCM_TIMESTAMPING_OPT_STATS · e8bd8fca
      Yousuk Seung 提交于
      Add TCP_NLA_SRTT to SCM_TIMESTAMPING_OPT_STATS that reports the smoothed
      round trip time in microseconds (tcp_sock.srtt_us >> 3).
      Signed-off-by: NYousuk Seung <ysseung@google.com>
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Acked-by: NSoheil Hassas Yeganeh <soheil@google.com>
      Acked-by: NNeal Cardwell <ncardwell@google.com>
      Acked-by: NYuchung Cheng <ycheng@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e8bd8fca
  7. 17 11月, 2018 4 次提交