22 Oct, 2017

25 commits

  • Pull networking fixes from David Miller:
    "A little more than usual this time around. Been travelling, so that is
    part of it.

    Anyways, here are the highlights:

    1) Deal with memcontrol races wrt. listener dismantle, from Eric
    Dumazet.

    2) Handle page allocation failures properly in nfp driver, from Jaku
    Kicinski.

    3) Fix memory leaks in macsec, from Sabrina Dubroca.

    4) Fix crashes in pppol2tp_session_ioctl(), from Guillaume Nault.

    5) Several fixes in bnxt_en driver, including preventing potential
    NVRAM parameter corruption from Michael Chan.

    6) Fix for KRACK attacks in wireless, from Johannes Berg.

    7) rtnetlink event generation fixes from Xin Long.

    8) Deadlock in mlxsw driver, from Ido Schimmel.

    9) Disallow arithmetic operations on context pointers in bpf, from
    Jakub Kicinski.

    10) Missing sock_owned_by_user() check in sctp_icmp_redirect(), from
    Xin Long.

    11) Only TCP is supported for sockmap, make that explicit with a
    check, from John Fastabend.

    12) Fix IP options state races in DCCP and TCP, from Eric Dumazet.

    13) Fix panic in packet_getsockopt(), also from Eric Dumazet.

    14) Add missing locked in hv_sock layer, from Dexuan Cui.

    15) Various aquantia bug fixes, including several statistics handling
    cures. From Igor Russkikh et al.

    16) Fix arithmetic overflow in devmap code, from John Fastabend.

    17) Fix busted socket memory accounting when we get a fault in the tcp
    zero copy paths. From Willem de Bruijn.

    18) Don't leave opt->tot_len uninitialized in ipv6, from Eric Dumazet"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (106 commits)
    stmmac: Don't access tx_q->dirty_tx before netif_tx_lock
    ipv6: flowlabel: do not leave opt->tot_len with garbage
    of_mdio: Fix broken PHY IRQ in case of probe deferral
    textsearch: fix typos in library helpers
    rxrpc: Don't release call mutex on error pointer
    net: stmmac: Prevent infinite loop in get_rx_timestamp_status()
    net: stmmac: Fix stmmac_get_rx_hwtstamp()
    net: stmmac: Add missing call to dev_kfree_skb()
    mlxsw: spectrum_router: Configure TIGCR on init
    mlxsw: reg: Add Tunneling IPinIP General Configuration Register
    net: ethtool: remove error check for legacy setting transceiver type
    soreuseport: fix initialization race
    net: bridge: fix returning of vlan range op errors
    sock: correct sk_wmem_queued accounting on efault in tcp zerocopy
    bpf: add test cases to bpf selftests to cover all access tests
    bpf: fix pattern matches for direct packet access
    bpf: fix off by one for range markings with L{T, E} patterns
    bpf: devmap fix arithmetic overflow in bitmap_size calculation
    net: aquantia: Bad udp rate on default interrupt coalescing
    net: aquantia: Enable coalescing management via ethtool interface
    ...

    Linus Torvalds
     
  • This is the possible reason for different hard to reproduce
    problems on my ARMv7-SMP test system.

    The symptoms are in recent kernels imprecise external aborts,
    and in older kernels various kinds of network stalls and
    unexpected page allocation failures.

    My testing indicates that the trouble started between v4.5 and v4.6
    and prevails up to v4.14.

    Using the dirty_tx before acquiring the spin lock is clearly
    wrong and was first introduced with v4.6.

    Fixes: e3ad57c96715 ("stmmac: review RX/TX ring management")

    Signed-off-by: Bernd Edlinger
    Signed-off-by: David S. Miller

    Bernd Edlinger
     
  • When syzkaller team brought us a C repro for the crash [1] that
    had been reported many times in the past, I finally could find
    the root cause.

    If FlowLabel info is merged by fl6_merge_options(), we leave
    part of the opt_space storage provided by udp/raw/l2tp with random value
    in opt_space.tot_len, unless a control message was provided at sendmsg()
    time.

    Then ip6_setup_cork() would use this random value to perform a kzalloc()
    call. Undefined behavior and crashes.

    Fix is to properly set tot_len in fl6_merge_options()

    At the same time, we can also avoid consuming memory and cpu cycles
    to clear it, if every option is copied via a kmemdup(). This is the
    change in ip6_setup_cork().

    [1]
    kasan: CONFIG_KASAN_INLINE enabled
    kasan: GPF could be caused by NULL-ptr deref or user memory access
    general protection fault: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
    (ftrace buffer empty)
    Modules linked in:
    CPU: 0 PID: 6613 Comm: syz-executor0 Not tainted 4.14.0-rc4+ #127
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    task: ffff8801cb64a100 task.stack: ffff8801cc350000
    RIP: 0010:ip6_setup_cork+0x274/0x15c0 net/ipv6/ip6_output.c:1168
    RSP: 0018:ffff8801cc357550 EFLAGS: 00010203
    RAX: dffffc0000000000 RBX: ffff8801cc357748 RCX: 0000000000000010
    RDX: 0000000000000002 RSI: ffffffff842bd1d9 RDI: 0000000000000014
    RBP: ffff8801cc357620 R08: ffff8801cb17f380 R09: ffff8801cc357b10
    R10: ffff8801cb64a100 R11: 0000000000000000 R12: ffff8801cc357ab0
    R13: ffff8801cc357b10 R14: 0000000000000000 R15: ffff8801c3bbf0c0
    FS: 00007f9c5c459700(0000) GS:ffff8801db200000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000020324000 CR3: 00000001d1cf2000 CR4: 00000000001406f0
    DR0: 0000000020001010 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000600
    Call Trace:
    ip6_make_skb+0x282/0x530 net/ipv6/ip6_output.c:1729
    udpv6_sendmsg+0x2769/0x3380 net/ipv6/udp.c:1340
    inet_sendmsg+0x11f/0x5e0 net/ipv4/af_inet.c:762
    sock_sendmsg_nosec net/socket.c:633 [inline]
    sock_sendmsg+0xca/0x110 net/socket.c:643
    SYSC_sendto+0x358/0x5a0 net/socket.c:1750
    SyS_sendto+0x40/0x50 net/socket.c:1718
    entry_SYSCALL_64_fastpath+0x1f/0xbe
    RIP: 0033:0x4520a9
    RSP: 002b:00007f9c5c458c08 EFLAGS: 00000216 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004520a9
    RDX: 0000000000000001 RSI: 0000000020fd1000 RDI: 0000000000000016
    RBP: 0000000000000086 R08: 0000000020e0afe4 R09: 000000000000001c
    R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004bb1ee
    R13: 00000000ffffffff R14: 0000000000000016 R15: 0000000000000029
    Code: e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 ea 0f 00 00 48 8d 79 04 48 b8 00 00 00 00 00 fc ff df 45 8b 74 24 04 48 89 fa 48 c1 ea 03 b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85
    RIP: ip6_setup_cork+0x274/0x15c0 net/ipv6/ip6_output.c:1168 RSP: ffff8801cc357550

    Signed-off-by: Eric Dumazet
    Reported-by: Dmitry Vyukov
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • If an Ethernet PHY is initialized before the interrupt controller it is
    connected to, a message like the following is printed:

    irq: no irq domain found for /interrupt-controller@e61c0000 !

    However, the actual error is ignored, leading to a non-functional (POLL)
    PHY interrupt later:

    Micrel KSZ8041RNLI ee700000.ethernet-ffffffff:01: attached PHY driver [Micrel KSZ8041RNLI] (mii_bus:phy_addr=ee700000.ethernet-ffffffff:01, irq=POLL)

    Depending on whether the PHY driver will fall back to polling, Ethernet
    may or may not work.

    To fix this:
    1. Switch of_mdiobus_register_phy() from irq_of_parse_and_map() to
    of_irq_get().
    Unlike the former, the latter returns -EPROBE_DEFER if the
    interrupt controller is not yet available, so this condition can be
    detected.
    Other errors are handled the same as before, i.e. use the passed
    mdio->irq[addr] as interrupt.
    2. Propagate and handle errors from of_mdiobus_register_phy() and
    of_mdiobus_register_device().

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: David S. Miller

    Geert Uytterhoeven
     
  • Fix spellos (typos) in textsearch library helpers.

    Signed-off-by: Randy Dunlap
    Signed-off-by: David S. Miller

    Randy Dunlap
     
  • Don't release call mutex at the end of rxrpc_kernel_begin_call() if the
    call pointer actually holds an error value.

    Fixes: 540b1c48c37a ("rxrpc: Fix deadlock between call creation and sendmsg/recvmsg")
    Reported-by: Marc Dionne
    Signed-off-by: David Howells
    Signed-off-by: David S. Miller

    David Howells
     
  • Jose Abreu says:

    ====================
    net: stmmac: Fix HW timestamping

    Three fixes for HW timestamping feature, all of them for RX side.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Prevent infinite loop by correctly setting the loop condition to
    break when i == 10.

    Signed-off-by: Jose Abreu
    Cc: David S. Miller
    Cc: Joao Pinto
    Cc: Giuseppe Cavallaro
    Cc: Alexandre Torgue
    Signed-off-by: David S. Miller

    Jose Abreu
     
  • When using GMAC4 the valid timestamp is from CTX next desc but
    we are passing the previous desc to get_rx_timestamp_status()
    callback.

    Fix this and while at it rework a little bit the function logic.

    Signed-off-by: Jose Abreu
    Cc: David S. Miller
    Cc: Joao Pinto
    Cc: Giuseppe Cavallaro
    Cc: Alexandre Torgue
    Signed-off-by: David S. Miller

    Jose Abreu
     
  • When RX HW timestamp is enabled and a frame is discarded we are
    not freeing the skb but instead only setting to NULL the entry.

    Add a call to dev_kfree_skb_any() so that skb entry is correctly
    freed.

    Signed-off-by: Jose Abreu
    Cc: David S. Miller
    Cc: Joao Pinto
    Cc: Giuseppe Cavallaro
    Cc: Alexandre Torgue
    Signed-off-by: David S. Miller

    Jose Abreu
     
  • Pull input fixes from Dmitry Torokhov:

    - joydev now implements a blacklist to avoid creating joystick nodes
    for accelerometers found in composite devices such as PlaStation
    controllers

    - assorted driver fixes

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: ims-psu - check if CDC union descriptor is sane
    Input: joydev - blacklist ds3/ds4/udraw motion sensors
    Input: allow matching device IDs on property bits
    Input: factor out and export input_device_id matching code
    Input: goodix - poll the 'buffer status' bit before reading data
    Input: axp20x-pek - fix module not auto-loading for axp221 pek
    Input: tca8418 - enable interrupt after it has been requested
    Input: stmfts - fix setting ABS_MT_POSITION_* maximum size
    Input: ti_am335x_tsc - fix incorrect step config for 5 wire touchscreen
    Input: synaptics - disable kernel tracking on SMBus devices

    Linus Torvalds
     
  • Pull vfs fixes from Al Viro:
    "MS_I_VERSION fixes - Mimi's fix + missing bits picked from Matthew
    (his patch contained a duplicate of the fs/namespace.c fix as well,
    but by that point the original fix had already been applied)"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    Convert fs/*/* to SB_I_VERSION
    vfs: fix mounting a filesystem with i_version

    Linus Torvalds
     
  • Jiri Pirko says:

    ====================
    mlxsw: spectrum: Configure TTL of "inherit" for offloaded tunnels

    Petr says:

    Currently mlxsw only offloads tunnels that are configured with TTL of "inherit"
    (which is the default). However, Spectrum defaults to 255 and the driver
    neglects to change the configuration. Thus the tunnel packets from offloaded
    tunnels always have TTL of 255, even though tunnels with explicit TTL of 255 are
    never actually offloaded.

    To fix this, introduce support for TIGCR, the register that keeps the related
    bits of global tunnel configuration, and use it on first offload to properly
    configure inheritance of TTL of tunnel packets from overlay packets.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Spectrum tunnels do not default to ttl of "inherit" like the Linux ones
    do. Configure TIGCR on router init so that the TTL of tunnel packets is
    copied from the overlay packets.

    Fixes: ee954d1a91b2 ("mlxsw: spectrum_router: Support GRE tunnels")
    Signed-off-by: Petr Machata
    Reviewed-by: Ido Schimmel
    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Petr Machata
     
  • The TIGCR register is used for setting up the IPinIP Tunnel
    configuration.

    Fixes: ee954d1a91b2 ("mlxsw: spectrum_router: Support GRE tunnels")
    Signed-off-by: Petr Machata
    Reviewed-by: Ido Schimmel
    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Petr Machata
     
  • Commit 9cab88726929605 ("net: ethtool: Add back transceiver type")
    restores the transceiver type to struct ethtool_link_settings and
    convert_link_ksettings_to_legacy_settings() but forgets to remove the
    error check for the same in convert_legacy_settings_to_link_ksettings().
    This prevents older versions of ethtool to change link settings.

    # ethtool --version
    ethtool version 3.16

    # ethtool -s eth0 autoneg on speed 100 duplex full
    Cannot set new settings: Invalid argument
    not setting speed
    not setting duplex
    not setting autoneg

    While newer versions of ethtool works.

    # ethtool --version
    ethtool version 4.10

    # ethtool -s eth0 autoneg on speed 100 duplex full
    [ 57.703268] sh-eth ee700000.ethernet eth0: Link is Down
    [ 59.618227] sh-eth ee700000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx

    Fixes: 19cab88726929605 ("net: ethtool: Add back transceiver type")
    Signed-off-by: Niklas Söderlund
    Reported-by: Renjith R V
    Tested-by: Geert Uytterhoeven
    Signed-off-by: David S. Miller

    Niklas Söderlund
     
  • Syzkaller stumbled upon a way to trigger
    WARNING: CPU: 1 PID: 13881 at net/core/sock_reuseport.c:41
    reuseport_alloc+0x306/0x3b0 net/core/sock_reuseport.c:39

    There are two initialization paths for the sock_reuseport structure in a
    socket: Through the udp/tcp bind paths of SO_REUSEPORT sockets or through
    SO_ATTACH_REUSEPORT_[CE]BPF before bind. The existing implementation
    assumedthat the socket lock protected both of these paths when it actually
    only protects the SO_ATTACH_REUSEPORT path. Syzkaller triggered this
    double allocation by running these paths concurrently.

    This patch moves the check for double allocation into the reuseport_alloc
    function which is protected by a global spin lock.

    Fixes: e32ea7e74727 ("soreuseport: fast reuseport UDP socket selection")
    Fixes: c125e80b8868 ("soreuseport: fast reuseport TCP socket selection")
    Signed-off-by: Craig Gallek
    Signed-off-by: David S. Miller

    Craig Gallek
     
  • When vlan tunnels were introduced, vlan range errors got silently
    dropped and instead 0 was returned always. Restore the previous
    behaviour and return errors to user-space.

    Fixes: efa5356b0d97 ("bridge: per vlan dst_metadata netlink support")
    Signed-off-by: Nikolay Aleksandrov
    Acked-by: Roopa Prabhu
    Signed-off-by: David S. Miller

    Nikolay Aleksandrov
     
  • Syzkaller hits WARN_ON(sk->sk_wmem_queued) in sk_stream_kill_queues
    after triggering an EFAULT in __zerocopy_sg_from_iter.

    On this error, skb_zerocopy_stream_iter resets the skb to its state
    before the operation with __pskb_trim. It cannot kfree_skb like
    datagram callers, as the skb may have data from a previous send call.

    __pskb_trim calls skb_condense for unowned skbs, which adjusts their
    truesize. These tcp skbuffs are owned and their truesize must add up
    to sk_wmem_queued. But they match because their skb->sk is NULL until
    tcp_transmit_skb.

    Temporarily set skb->sk when calling __pskb_trim to signal that the
    skbuffs are owned and avoid the skb_condense path.

    Fixes: 52267790ef52 ("sock: add MSG_ZEROCOPY")
    Signed-off-by: Willem de Bruijn
    Reviewed-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Willem de Bruijn
     
  • Daniel Borkmann says:

    ====================
    Two BPF fixes for range marking

    The set contains two fixes for direct packet access range
    markings and test cases for all direct packet access patterns
    that the verifier matches on.

    They are targeted for net tree, note that once net gets merged
    into net-next, there will be a minor merge conflict due to
    signature change of the function find_good_pkt_pointers() as
    well as data_meta patterns present in net-next tree. You can
    just add bool false to the data_meta patterns and I will
    follow-up with properly converting the patterns for data_meta
    in a similar way.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Lets add test cases to cover really all possible direct packet
    access tests for good/bad access cases so we keep tracking them.

    Signed-off-by: Daniel Borkmann
    Acked-by: Alexei Starovoitov
    Acked-by: John Fastabend
    Signed-off-by: David S. Miller

    Daniel Borkmann
     
  • Alexander had a test program with direct packet access, where
    the access test was in the form of data + X > data_end. In an
    unrelated change to the program LLVM decided to swap the branches
    and emitted code for the test in form of data + X
    Signed-off-by: Daniel Borkmann
    Acked-by: Alexei Starovoitov
    Acked-by: John Fastabend
    Signed-off-by: David S. Miller

    Daniel Borkmann
     
  • During review I noticed that the current logic for direct packet
    access marking in check_cond_jmp_op() has an off by one for the
    upper right range border when marking in find_good_pkt_pointers()
    with BPF_JLT and BPF_JLE. It's not really harmful given access
    up to pkt_end is always safe, but we should nevertheless correct
    the range marking before it becomes ABI. If pkt_data' denotes a
    pkt_data derived pointer (pkt_data + X), then for pkt_data' < pkt_end
    in the true branch as well as for pkt_end < pkt_end the verifier simulation cannot
    deduce that a byte load of pkt_data' - 1 would succeed in this
    branch.

    Fixes: b4e432f1000a ("bpf: enable BPF_J{LT, LE, SLT, SLE} opcodes in verifier")
    Signed-off-by: Daniel Borkmann
    Acked-by: Alexei Starovoitov
    Acked-by: John Fastabend
    Signed-off-by: David S. Miller

    Daniel Borkmann
     
  • An integer overflow is possible in dev_map_bitmap_size() when
    calculating the BITS_TO_LONG logic which becomes, after macro
    replacement,

    (((n) + (d) - 1)/ (d))

    where 'n' is a __u32 and 'd' is (8 * sizeof(long)). To avoid
    overflow cast to u64 before arithmetic.

    Reported-by: Richard Weinberger
    Acked-by: Daniel Borkmann
    Signed-off-by: John Fastabend
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    John Fastabend
     
  • Pull dmaengine fix from Vinod Koul:
    "Late fix for altera driver which fixes the locking in driver"

    * tag 'dmaengine-fix-4.14-rc6' of git://git.infradead.org/users/vkoul/slave-dma:
    dmaengine: altera: Use IRQ-safe spinlock calls in the error paths as well

    Linus Torvalds
     

21 Oct, 2017

15 commits

  • Igor Russkikh says:

    ====================
    net: aquantia: Atlantic driver 10/2017 updates

    This patchset fixes various issues in driver,
    improves parameters for better performance on 10Gbit link
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Default Tx rates cause very long ISR delays on Tx.
    0xff is 510us delay, giving only ~ 2000 interrupts per seconds for
    Tx rings cleanup. With these settings udp tx rate was never higher than
    ~800Mbps on a single stream. Changing min delay to 0xF makes it
    way better with ~6Gbps

    TCP stream performance is almost unaffected by this change, since LSO
    optimizations play important role.

    CPU load is affected insignificantly by this change.

    Signed-off-by: Pavel Belous
    Signed-off-by: Igor Russkikh
    Signed-off-by: David S. Miller

    Igor Russkikh
     
  • Aquantia NIC allows both TX and RX interrupt throttle rate (ITR)
    management, but this was used in a very limited way via predefined
    values. This patch allows to setup ITR default values via module
    command line arguments and via standard ethtool coalescing settings.

    Signed-off-by: Pavel Belous
    Signed-off-by: Igor Russkikh
    Signed-off-by: David S. Miller

    Igor Russkikh
     
  • That may lead to mmio resource leakage.

    Signed-off-by: Pavel Belous
    Signed-off-by: Igor Russkikh
    Signed-off-by: David S. Miller

    Igor Russkikh
     
  • There is no much practical use from having MSIX vectors more that number
    of cpus, thus cap this first with preconfigured limit, then with number
    of cpus online.

    Signed-off-by: Pavel Belous
    Signed-off-by: Igor Russkikh
    Signed-off-by: David S. Miller

    Igor Russkikh
     
  • When doing ifconfig down/up, driver did not reported carrier_off neither
    in nic_stop nor in nic_start. That caused link to be visible as "up"
    during couple of seconds immediately after "ifconfig up".

    Signed-off-by: Pavel Belous
    Signed-off-by: Igor Russkikh
    Signed-off-by: David S. Miller

    Igor Russkikh
     
  • Queue stat strings are cleaned up, duplicate stat name strings removed,
    queue restarts counter added

    Signed-off-by: Pavel Belous
    Signed-off-by: Igor Russkikh
    Signed-off-by: David S. Miller

    Igor Russkikh
     
  • Internal statistics system on chip never gets reset until hardware
    reboot. This is quite inconvenient in terms of ethtool statistics usage.

    This patch implements incremental statistics update inside of
    service callback.

    Upon nic initialization, first request is done to fetch
    initial stat data, current collected stat data gets cleared.
    Internal statistics mailbox readout is improved to save space and
    increase readability

    Signed-off-by: Pavel Belous
    Signed-off-by: Igor Russkikh
    Signed-off-by: David S. Miller

    Igor Russkikh
     
  • In the UDP code there are two leftover error messages with very few meaning.
    Replace them with a more descriptive error message as some users
    reported them as "strange network error".

    Signed-off-by: Matteo Croce
    Signed-off-by: David S. Miller

    Matteo Croce
     
  • On big-endian machines, functions converting between tunnel ID
    and VNI use the three LSBs of tunnel ID storage to map VNI.

    The comparison function eq_tun_id_and_vni(), on the other hand,
    attempted to map the VNI from the three MSBs. Fix it by using
    the same check implemented on LE, which maps VNI from the three
    LSBs of tunnel ID.

    Fixes: 2e0b26e10352 ("geneve: Optimize geneve device lookup.")
    Signed-off-by: Stefano Brivio
    Reviewed-by: Jakub Sitnicki
    Signed-off-by: David S. Miller

    Stefano Brivio
     
  • …nux/kernel/git/mkl/linux-can

    Marc Kleine-Budde says:

    ====================
    pull-request: can 2017-10-19

    this is a pull request of 11 patches for the upcoming 4.14 release.

    There are 6 patches by ZHU Yi for the flexcan driver, that work around
    the CAN error handling state transition problems found in various
    incarnations of the flexcan IP core.

    The patch by Colin Ian King fixes a potential NULL pointer deref in the
    CAN broad cast manager (bcm). One patch by me replaces a direct deref of a RCU
    protected pointer by rcu_access_pointer. My second patch adds missing
    OOM error handling in af_can. A patch by Stefan Mätje for the esd_usb2
    driver fixes the dlc in received RTR frames. And the last patch is by
    Wolfgang Grandegger, it fixes a busy loop in the gs_usb driver in case
    it runs out of TX contexts.
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • Without the patch, when hvs_open_connection() hasn't completely established
    a connection (e.g. it has changed sk->sk_state to SS_CONNECTED, but hasn't
    inserted the sock into the connected queue), vsock_stream_connect() may see
    the sk_state change and return the connection to the userspace, and next
    when the userspace closes the connection quickly, hvs_release() may not see
    the connection in the connected queue; finally hvs_open_connection()
    inserts the connection into the queue, but we won't be able to purge the
    connection for ever.

    Signed-off-by: Dexuan Cui
    Cc: K. Y. Srinivasan
    Cc: Haiyang Zhang
    Cc: Stephen Hemminger
    Cc: Vitaly Kuznetsov
    Cc: Cathy Avery
    Cc: Rolf Neugebauer
    Cc: Marcelo Cerri
    Signed-off-by: David S. Miller

    Dexuan Cui
     
  • The length of GVI (GetVersionInfo) response packet should be 40 instead
    of 36. This issue was found from /sys/kernel/debug/ncsi/eth0/stats.

    # ethtool --ncsi eth0 swstats
    :
    RESPONSE OK TIMEOUT ERROR
    =======================================
    GVI 0 0 2

    With this applied, no error reported on GVI response packets:

    # ethtool --ncsi eth0 swstats
    :
    RESPONSE OK TIMEOUT ERROR
    =======================================
    GVI 2 0 0

    Signed-off-by: Gavin Shan
    Signed-off-by: Samuel Mendoza-Jonas
    Signed-off-by: David S. Miller

    Gavin Shan
     
  • The NCSI channel has been configured to provide service if its link
    monitor timer is enabled, regardless of its state (inactive or active).
    So the timeout event on the link monitor indicates the out-of-service
    on that channel, for which a failover is needed.

    This sets NCSI_DEV_RESHUFFLE flag to enforce failover on link monitor
    timeout, regardless the channel's original state (inactive or active).
    Also, the link is put into "down" state to give the failing channel
    lowest priority when selecting for the active channel. The state of
    failing channel should be set to active in order for deinitialization
    and failover to be done.

    Signed-off-by: Gavin Shan
    Signed-off-by: Samuel Mendoza-Jonas
    Signed-off-by: David S. Miller

    Gavin Shan
     
  • When there are no NCSI channels probed, HWA (Hardware Arbitration)
    mode is enabled. It's not correct because HWA depends on the fact:
    NCSI channels exist and all of them support HWA mode. This disables
    HWA when no channels are probed.

    Signed-off-by: Gavin Shan
    Signed-off-by: Samuel Mendoza-Jonas
    Signed-off-by: David S. Miller

    Gavin Shan