commit dbba166b0e442d4d38ae0f244d32338c3e92d16f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Jul 28 07:43:19 2018 +0200

    Linux 3.18.117

commit 430c3fdb11ec1f0af1eca28460c922b9c1eb2ac5
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Jul 26 10:13:22 2018 +0200

    turn off -Wattribute-alias
    
    Starting with gcc-8.1, we get a warning about all system call definitions,
    which use an alias between functions with incompatible prototypes, e.g.:
    
    In file included from ../mm/process_vm_access.c:19:
    ../include/linux/syscalls.h:211:18: warning: 'sys_process_vm_readv' alias between functions of incompatible types 'long int(pid_t,  const struct iovec *, long unsigned int,  const struct iovec *, long unsigned int,  long unsigned int)' {aka 'long int(int,  const struct iovec *, long unsigned int,  const struct iovec *, long unsigned int,  long unsigned int)'} and 'long int(long int,  long int,  long int,  long int,  long int,  long int)' [-Wattribute-alias]
      asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \
                      ^~~
    ../include/linux/syscalls.h:207:2: note: in expansion of macro '__SYSCALL_DEFINEx'
      __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
      ^~~~~~~~~~~~~~~~~
    ../include/linux/syscalls.h:201:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     #define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)
                                        ^~~~~~~~~~~~~~~
    ../mm/process_vm_access.c:300:1: note: in expansion of macro 'SYSCALL_DEFINE6'
     SYSCALL_DEFINE6(process_vm_readv, pid_t, pid, const struct iovec __user *, lvec,
     ^~~~~~~~~~~~~~~
    ../include/linux/syscalls.h:215:18: note: aliased declaration here
      asmlinkage long SyS##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
                      ^~~
    ../include/linux/syscalls.h:207:2: note: in expansion of macro '__SYSCALL_DEFINEx'
      __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
      ^~~~~~~~~~~~~~~~~
    ../include/linux/syscalls.h:201:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     #define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)
                                        ^~~~~~~~~~~~~~~
    ../mm/process_vm_access.c:300:1: note: in expansion of macro 'SYSCALL_DEFINE6'
     SYSCALL_DEFINE6(process_vm_readv, pid_t, pid, const struct iovec __user *, lvec,
    
    This is really noisy and does not indicate a real problem. In the latest
    mainline kernel, this was addressed by commit bee20031772a ("disable
    -Wattribute-alias warning for SYSCALL_DEFINEx()"), which seems too invasive
    to backport.
    
    This takes a much simpler approach and just disables the warning across the
    kernel.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a71ae0513c232c844009738af135a13e5d7e39c
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Jul 26 10:13:23 2018 +0200

    ARM: fix put_user() for gcc-8
    
    Building kernels before linux-4.7 with gcc-8 results in many build failures
    when gcc triggers a check that was meant to catch broken compilers:
    
    /tmp/ccCGMQmS.s:648: Error: .err encountered
    
    According to the discussion in the gcc bugzilla, a local "register
    asm()" variable is still supposed to be the correct way to force an
    inline assembly to use a particular register, but marking it 'const'
    lets the compiler do optimizations that break that, i.e the compiler is
    free to treat the variable as either 'const' or 'register' in that case.
    
    Upstream commit 9f73bd8bb445 ("ARM: uaccess: remove put_user() code
    duplication") fixed this problem in linux-4.8 as part of a larger change,
    but seems a little too big to be backported to 4.4.
    
    Let's take the simplest fix and change only the one broken line in the
    same way as newer kernels.
    
    Suggested-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85745
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86673
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57a617aa6ad62e6e798eb7de6e1ed9c2e9affc7c
Author: Anssi Hannula <anssi.hannula@bitwise.fi>
Date:   Mon Feb 26 14:27:13 2018 +0200

    can: xilinx_can: fix RX overflow interrupt not being enabled
    
    commit 83997997252f5d3fc7f04abc24a89600c2b504ab upstream.
    
    RX overflow interrupt (RXOFLW) is disabled even though xcan_interrupt()
    processes it. This means that an RX overflow interrupt will only be
    processed when another interrupt gets asserted (e.g. for RX/TX).
    
    Fix that by enabling the RXOFLW interrupt.
    
    Fixes: b1201e44f50b ("can: xilinx CAN controller support")
    Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
    Cc: Michal Simek <michal.simek@xilinx.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e368141b2f4acf0cd26bea6aae19a3501af3841
Author: Anssi Hannula <anssi.hannula@bitwise.fi>
Date:   Thu Feb 23 14:50:03 2017 +0200

    can: xilinx_can: keep only 1-2 frames in TX FIFO to fix TX accounting
    
    commit 620050d9c2be15c47017ba95efe59e0832e99a56 upstream.
    
    The xilinx_can driver assumes that the TXOK interrupt only clears after
    it has been acknowledged as many times as there have been successfully
    sent frames.
    
    However, the documentation does not mention such behavior, instead
    saying just that the interrupt is cleared when the clear bit is set.
    
    Similarly, testing seems to also suggest that it is immediately cleared
    regardless of the amount of frames having been sent. Performing some
    heavy TX load and then going back to idle has the tx_head drifting
    further away from tx_tail over time, steadily reducing the amount of
    frames the driver keeps in the TX FIFO (but not to zero, as the TXOK
    interrupt always frees up space for 1 frame from the driver's
    perspective, so frames continue to be sent) and delaying the local echo
    frames.
    
    The TX FIFO tracking is also otherwise buggy as it does not account for
    TX FIFO being cleared after software resets, causing
      BUG!, TX FIFO full when queue awake!
    messages to be output.
    
    There does not seem to be any way to accurately track the state of the
    TX FIFO for local echo support while using the full TX FIFO.
    
    The Zynq version of the HW (but not the soft-AXI version) has watermark
    programming support and with it an additional TX-FIFO-empty interrupt
    bit.
    
    Modify the driver to only put 1 frame into TX FIFO at a time on soft-AXI
    and 2 frames at a time on Zynq. On Zynq the TXFEMP interrupt bit is used
    to detect whether 1 or 2 frames have been sent at interrupt processing
    time.
    
    Tested with the integrated CAN on Zynq-7000 SoC. The 1-frame-FIFO mode
    was also tested.
    
    An alternative way to solve this would be to drop local echo support but
    keep using the full TX FIFO.
    
    v2: Add FIFO space check before TX queue wake with locking to
    synchronize with queue stop. This avoids waking the queue when xmit()
    had just filled it.
    
    v3: Keep local echo support and reduce the amount of frames in FIFO
    instead as suggested by Marc Kleine-Budde.
    
    Fixes: b1201e44f50b ("can: xilinx CAN controller support")
    Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 159b65a11c7485cce2784f99a715486ba870a6f4
Author: Anssi Hannula <anssi.hannula@bitwise.fi>
Date:   Tue Feb 7 13:23:04 2017 +0200

    can: xilinx_can: fix device dropping off bus on RX overrun
    
    commit 2574fe54515ed3487405de329e4e9f13d7098c10 upstream.
    
    The xilinx_can driver performs a software reset when an RX overrun is
    detected. This causes the device to enter Configuration mode where no
    messages are received or transmitted.
    
    The documentation does not mention any need to perform a reset on an RX
    overrun, and testing by inducing an RX overflow also indicated that the
    device continues to work just fine without a reset.
    
    Remove the software reset.
    
    Tested with the integrated CAN on Zynq-7000 SoC.
    
    Fixes: b1201e44f50b ("can: xilinx CAN controller support")
    Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7337c5f58d70202548c39adf85c6a4c5a001e7a
Author: Anssi Hannula <anssi.hannula@bitwise.fi>
Date:   Tue Feb 7 17:01:14 2017 +0200

    can: xilinx_can: fix RX loop if RXNEMP is asserted without RXOK
    
    commit 32852c561bffd613d4ed7ec464b1e03e1b7b6c5c upstream.
    
    If the device gets into a state where RXNEMP (RX FIFO not empty)
    interrupt is asserted without RXOK (new frame received successfully)
    interrupt being asserted, xcan_rx_poll() will continue to try to clear
    RXNEMP without actually reading frames from RX FIFO. If the RX FIFO is
    not empty, the interrupt will not be cleared and napi_schedule() will
    just be called again.
    
    This situation can occur when:
    
    (a) xcan_rx() returns without reading RX FIFO due to an error condition.
    The code tries to clear both RXOK and RXNEMP but RXNEMP will not clear
    due to a frame still being in the FIFO. The frame will never be read
    from the FIFO as RXOK is no longer set.
    
    (b) A frame is received between xcan_rx_poll() reading interrupt status
    and clearing RXOK. RXOK will be cleared, but RXNEMP will again remain
    set as the new message is still in the FIFO.
    
    I'm able to trigger case (b) by flooding the bus with frames under load.
    
    There does not seem to be any benefit in using both RXNEMP and RXOK in
    the way the driver does, and the polling example in the reference manual
    (UG585 v1.10 18.3.7 Read Messages from RxFIFO) also says that either
    RXOK or RXNEMP can be used for detecting incoming messages.
    
    Fix the issue and simplify the RX processing by only using RXNEMP
    without RXOK.
    
    Tested with the integrated CAN on Zynq-7000 SoC.
    
    Fixes: b1201e44f50b ("can: xilinx CAN controller support")
    Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce03b315ba7a2362b41d5ff99370a87ec34c1cf8
Author: Jerry Zhang <zhangjerry@google.com>
Date:   Mon Jul 2 12:48:08 2018 -0700

    usb: gadget: f_fs: Only return delayed status when len is 0
    
    commit 4d644abf25698362bd33d17c9ddc8f7122c30f17 upstream.
    
    Commit 1b9ba000 ("Allow function drivers to pause control
    transfers") states that USB_GADGET_DELAYED_STATUS is only
    supported if data phase is 0 bytes.
    
    It seems that when the length is not 0 bytes, there is no
    need to explicitly delay the data stage since the transfer
    is not completed until the user responds. However, when the
    length is 0, there is no data stage and the transfer is
    finished once setup() returns, hence there is a need to
    explicitly delay completion.
    
    This manifests as the following bugs:
    
    Prior to 946ef68ad4e4 ('Let setup() return
    USB_GADGET_DELAYED_STATUS'), when setup is 0 bytes, ffs
    would require user to queue a 0 byte request in order to
    clear setup state. However, that 0 byte request was actually
    not needed and would hang and cause errors in other setup
    requests.
    
    After the above commit, 0 byte setups work since the gadget
    now accepts empty queues to ep0 to clear the delay, but all
    other setups hang.
    
    Fixes: 946ef68ad4e4 ("Let setup() return USB_GADGET_DELAYED_STATUS")
    Signed-off-by: Jerry Zhang <zhangjerry@google.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72254c8771854ac83492cac200618b13ad128cb6
Author: Bin Liu <b-liu@ti.com>
Date:   Thu Jul 19 14:39:37 2018 -0500

    usb: core: handle hub C_PORT_OVER_CURRENT condition
    
    commit 249a32b7eeb3edb6897dd38f89651a62163ac4ed upstream.
    
    Based on USB2.0 Spec Section 11.12.5,
    
      "If a hub has per-port power switching and per-port current limiting,
      an over-current on one port may still cause the power on another port
      to fall below specific minimums. In this case, the affected port is
      placed in the Power-Off state and C_PORT_OVER_CURRENT is set for the
      port, but PORT_OVER_CURRENT is not set."
    
    so let's check C_PORT_OVER_CURRENT too for over current condition.
    
    Fixes: 08d1dec6f405 ("usb:hub set hub->change_bits when over-current happens")
    Cc: <stable@vger.kernel.org>
    Tested-by: Alessandro Antenucci <antenucci@korg.it>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd620d990b52c7633c65809824034a45424af2b1
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Tue Jul 10 08:28:49 2018 +0200

    usb: cdc_acm: Add quirk for Castles VEGA3000
    
    commit 1445cbe476fc3dd09c0b380b206526a49403c071 upstream.
    
    The device (a POS terminal) implements CDC ACM, but has not union
    descriptor.
    
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d932145a840ebc81e7a029a0531cad8f7a1f0932
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jul 23 09:28:19 2018 -0700

    tcp: detect malicious patterns in tcp_collapse_ofo_queue()
    
    [ Upstream commit 3d4bf93ac12003f9b8e1e2de37fe27983deebdcf ]
    
    In case an attacker feeds tiny packets completely out of order,
    tcp_collapse_ofo_queue() might scan the whole rb-tree, performing
    expensive copies, but not changing socket memory usage at all.
    
    1) Do not attempt to collapse tiny skbs.
    2) Add logic to exit early when too many tiny skbs are detected.
    
    We prefer not doing aggressive collapsing (which copies packets)
    for pathological flows, and revert to tcp_prune_ofo_queue() which
    will be less expensive.
    
    In the future, we might add the possibility of terminating flows
    that are proven to be malicious.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25c28af9ee6a9cfeeb9245e174b3b65d70e614b2
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jul 23 09:28:18 2018 -0700

    tcp: avoid collapses in tcp_prune_queue() if possible
    
    [ Upstream commit f4a3313d8e2ca9fd8d8f45e40a2903ba782607e7 ]
    
    Right after a TCP flow is created, receiving tiny out of order
    packets allways hit the condition :
    
    if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf)
            tcp_clamp_window(sk);
    
    tcp_clamp_window() increases sk_rcvbuf to match sk_rmem_alloc
    (guarded by tcp_rmem[2])
    
    Calling tcp_collapse_ofo_queue() in this case is not useful,
    and offers a O(N^2) surface attack to malicious peers.
    
    Better not attempt anything before full queue capacity is reached,
    forcing attacker to spend lots of resource and allow us to more
    easily detect the abuse.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e758a79523c55185667c476e2c6a2736007e7da
Author: Yuchung Cheng <ycheng@google.com>
Date:   Wed Jul 18 13:56:36 2018 -0700

    tcp: do not delay ACK in DCTCP upon CE status change
    
    [ Upstream commit a0496ef2c23b3b180902dd185d0d63ccbc624cf8 ]
    
    Per DCTCP RFC8257 (Section 3.2) the ACK reflecting the CE status change
    has to be sent immediately so the sender can respond quickly:
    
    """ When receiving packets, the CE codepoint MUST be processed as follows:
    
       1.  If the CE codepoint is set and DCTCP.CE is false, set DCTCP.CE to
           true and send an immediate ACK.
    
       2.  If the CE codepoint is not set and DCTCP.CE is true, set DCTCP.CE
           to false and send an immediate ACK.
    """
    
    Previously DCTCP implementation may continue to delay the ACK. This
    patch fixes that to implement the RFC by forcing an immediate ACK.
    
    Tested with this packetdrill script provided by Larry Brakmo
    
    0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
    0.000 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
    0.000 setsockopt(3, SOL_TCP, TCP_CONGESTION, "dctcp", 5) = 0
    0.000 bind(3, ..., ...) = 0
    0.000 listen(3, 1) = 0
    
    0.100 < [ect0] SEW 0:0(0) win 32792 <mss 1000,sackOK,nop,nop,nop,wscale 7>
    0.100 > SE. 0:0(0) ack 1 <mss 1460,nop,nop,sackOK,nop,wscale 8>
    0.110 < [ect0] . 1:1(0) ack 1 win 257
    0.200 accept(3, ..., ...) = 4
       +0 setsockopt(4, SOL_SOCKET, SO_DEBUG, [1], 4) = 0
    
    0.200 < [ect0] . 1:1001(1000) ack 1 win 257
    0.200 > [ect01] . 1:1(0) ack 1001
    
    0.200 write(4, ..., 1) = 1
    0.200 > [ect01] P. 1:2(1) ack 1001
    
    0.200 < [ect0] . 1001:2001(1000) ack 2 win 257
    +0.005 < [ce] . 2001:3001(1000) ack 2 win 257
    
    +0.000 > [ect01] . 2:2(0) ack 2001
    // Previously the ACK below would be delayed by 40ms
    +0.000 > [ect01] E. 2:2(0) ack 3001
    
    +0.500 < F. 9501:9501(0) ack 4 win 257
    
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c11f488b6f415a9c7d91cc09fec939b256c05be
Author: Yuchung Cheng <ycheng@google.com>
Date:   Wed Jul 18 13:56:35 2018 -0700

    tcp: do not cancel delay-AcK on DCTCP special ACK
    
    [ Upstream commit 27cde44a259c380a3c09066fc4b42de7dde9b1ad ]
    
    Currently when a DCTCP receiver delays an ACK and receive a
    data packet with a different CE mark from the previous one's, it
    sends two immediate ACKs acking previous and latest sequences
    respectly (for ECN accounting).
    
    Previously sending the first ACK may mark off the delayed ACK timer
    (tcp_event_ack_sent). This may subsequently prevent sending the
    second ACK to acknowledge the latest sequence (tcp_ack_snd_check).
    The culprit is that tcp_send_ack() assumes it always acknowleges
    the latest sequence, which is not true for the first special ACK.
    
    The fix is to not make the assumption in tcp_send_ack and check the
    actual ack sequence before cancelling the delayed ACK. Further it's
    safer to pass the ack sequence number as a local variable into
    tcp_send_ack routine, instead of intercepting tp->rcv_nxt to avoid
    future bugs like this.
    
    Reported-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e76a28ca1f536df0c7f6c5631e76a1eeda8f8cef
Author: Yuchung Cheng <ycheng@google.com>
Date:   Wed Jul 18 13:56:34 2018 -0700

    tcp: helpers to send special DCTCP ack
    
    [ Upstream commit 2987babb6982306509380fc11b450227a844493b ]
    
    Refactor and create helpers to send the special ACK in DCTCP.
    
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d776e16ee1da25ceecfadff6264c1b25971f3dd
Author: Yuchung Cheng <ycheng@google.com>
Date:   Thu Jul 12 06:04:52 2018 -0700

    tcp: fix dctcp delayed ACK schedule
    
    [ Upstream commit b0c05d0e99d98d7f0cd41efc1eeec94efdc3325d ]
    
    Previously, when a data segment was sent an ACK was piggybacked
    on the data segment without generating a CA_EVENT_NON_DELAYED_ACK
    event to notify congestion control modules. So the DCTCP
    ca->delayed_ack_reserved flag could incorrectly stay set when
    in fact there were no delayed ACKs being reserved. This could result
    in sending a special ECN notification ACK that carries an older
    ACK sequence, when in fact there was no need for such an ACK.
    DCTCP keeps track of the delayed ACK status with its own separate
    state ca->delayed_ack_reserved. Previously it may accidentally cancel
    the delayed ACK without updating this field upon sending a special
    ACK that carries a older ACK sequence. This inconsistency would
    lead to DCTCP receiver never acknowledging the latest data until the
    sender times out and retry in some cases.
    
    Packetdrill script (provided by Larry Brakmo)
    
    0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
    0.000 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
    0.000 setsockopt(3, SOL_TCP, TCP_CONGESTION, "dctcp", 5) = 0
    0.000 bind(3, ..., ...) = 0
    0.000 listen(3, 1) = 0
    
    0.100 < [ect0] SEW 0:0(0) win 32792 <mss 1000,sackOK,nop,nop,nop,wscale 7>
    0.100 > SE. 0:0(0) ack 1 <mss 1460,nop,nop,sackOK,nop,wscale 8>
    0.110 < [ect0] . 1:1(0) ack 1 win 257
    0.200 accept(3, ..., ...) = 4
    
    0.200 < [ect0] . 1:1001(1000) ack 1 win 257
    0.200 > [ect01] . 1:1(0) ack 1001
    
    0.200 write(4, ..., 1) = 1
    0.200 > [ect01] P. 1:2(1) ack 1001
    
    0.200 < [ect0] . 1001:2001(1000) ack 2 win 257
    0.200 write(4, ..., 1) = 1
    0.200 > [ect01] P. 2:3(1) ack 2001
    
    0.200 < [ect0] . 2001:3001(1000) ack 3 win 257
    0.200 < [ect0] . 3001:4001(1000) ack 3 win 257
    0.200 > [ect01] . 3:3(0) ack 4001
    
    0.210 < [ce] P. 4001:4501(500) ack 3 win 257
    
    +0.001 read(4, ..., 4500) = 4500
    +0 write(4, ..., 1) = 1
    +0 > [ect01] PE. 3:4(1) ack 4501
    
    +0.010 < [ect0] W. 4501:5501(1000) ack 4 win 257
    // Previously the ACK sequence below would be 4501, causing a long RTO
    +0.040~+0.045 > [ect01] . 4:4(0) ack 5501   // delayed ack
    
    +0.311 < [ect0] . 5501:6501(1000) ack 4 win 257  // More data
    +0 > [ect01] . 4:4(0) ack 6501     // now acks everything
    
    +0.500 < F. 9501:9501(0) ack 4 win 257
    
    Reported-by: Larry Brakmo <brakmo@fb.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Lawrence Brakmo <brakmo@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 411d7e3c161e8f2036d20896145d4f1c6b0e3f9b
Author: Roopa Prabhu <roopa@cumulusnetworks.com>
Date:   Fri Jul 20 13:21:01 2018 -0700

    rtnetlink: add rtnl_link_state check in rtnl_configure_link
    
    [ Upstream commit 5025f7f7d506fba9b39e7fe8ca10f6f34cb9bc2d ]
    
    rtnl_configure_link sets dev->rtnl_link_state to
    RTNL_LINK_INITIALIZED and unconditionally calls
    __dev_notify_flags to notify user-space of dev flags.
    
    current call sequence for rtnl_configure_link
    rtnetlink_newlink
        rtnl_link_ops->newlink
        rtnl_configure_link (unconditionally notifies userspace of
                             default and new dev flags)
    
    If a newlink handler wants to call rtnl_configure_link
    early, we will end up with duplicate notifications to
    user-space.
    
    This patch fixes rtnl_configure_link to check rtnl_link_state
    and call __dev_notify_flags with gchanges = 0 if already
    RTNL_LINK_INITIALIZED.
    
    Later in the series, this patch will help the following sequence
    where a driver implementing newlink can call rtnl_configure_link
    to initialize the link early.
    
    makes the following call sequence work:
    rtnetlink_newlink
        rtnl_link_ops->newlink (vxlan) -> rtnl_configure_link (initializes
                                                    link and notifies
                                                    user-space of default
                                                    dev flags)
        rtnl_configure_link (updates dev flags if requested by user ifm
                             and notifies user-space of new dev flags)
    
    Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3f461a94794e75c4c03dd6ce5e3a803163abb45
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Tue Jul 24 14:27:55 2018 +0300

    net/mlx4_core: Save the qpn from the input modifier in RST2INIT wrapper
    
    [ Upstream commit 958c696f5a7274d9447a458ad7aa70719b29a50a ]
    
    Function mlx4_RST2INIT_QP_wrapper saved the qp number passed in the qp
    context, rather than the one passed in the input modifier.
    
    However, the qp number in the qp context is not defined as a
    required parameter by the FW. Therefore, drivers may choose to not
    specify the qp number in the qp context for the reset-to-init transition.
    
    Thus, we must save the qp number passed in the command input modifier --
    which is always present. (This saved qp number is used as the input
    modifier for command 2RST_QP when a slave's qp's are destroyed).
    
    Fixes: c82e9aa0a8bc ("mlx4_core: resource tracking for HCA resources used by guests")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88021f225b9ee2ee63d98fb5bd75a6434737b9b3
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Mon Jul 23 16:50:48 2018 +0200

    ip: hash fragments consistently
    
    [ Upstream commit 3dd1c9a1270736029ffca670e9bd0265f4120600 ]
    
    The skb hash for locally generated ip[v6] fragments belonging
    to the same datagram can vary in several circumstances:
    * for connected UDP[v6] sockets, the first fragment get its hash
      via set_owner_w()/skb_set_hash_from_sk()
    * for unconnected IPv6 UDPv6 sockets, the first fragment can get
      its hash via ip6_make_flowlabel()/skb_get_hash_flowi6(), if
      auto_flowlabel is enabled
    
    For the following frags the hash is usually computed via
    skb_get_hash().
    The above can cause OoO for unconnected IPv6 UDPv6 socket: in that
    scenario the egress tx queue can be selected on a per packet basis
    via the skb hash.
    It may also fool flow-oriented schedulers to place fragments belonging
    to the same datagram in different flows.
    
    Fix the issue by copying the skb hash from the head frag into
    the others at fragmentation time.
    
    Before this commit:
    perf probe -a "dev_queue_xmit skb skb->hash skb->l4_hash:b1@0/8 skb->sw_hash:b1@1/8"
    netperf -H $IPV4 -t UDP_STREAM -l 5 -- -m 2000 -n &
    perf record -e probe:dev_queue_xmit -e probe:skb_set_owner_w -a sleep 0.1
    perf script
    probe:dev_queue_xmit: (ffffffff8c6b1b20) hash=3713014309 l4_hash=1 sw_hash=0
    probe:dev_queue_xmit: (ffffffff8c6b1b20) hash=0 l4_hash=0 sw_hash=0
    
    After this commit:
    probe:dev_queue_xmit: (ffffffff8c6b1b20) hash=2171763177 l4_hash=1 sw_hash=0
    probe:dev_queue_xmit: (ffffffff8c6b1b20) hash=2171763177 l4_hash=1 sw_hash=0
    
    Fixes: b73c3d0e4f0e ("net: Save TX flow hash in sock and set in skbuf on xmit")
    Fixes: 67800f9b1f4e ("ipv6: Call skb_get_hash_flowi6 to get skb->hash in ip6_make_flowlabel")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15245b3e79dccb75906920717973ab948a386270
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Fri Jul 13 13:21:07 2018 +0200

    skbuff: Unconditionally copy pfmemalloc in __skb_clone()
    
    [ Upstream commit e78bfb0751d4e312699106ba7efbed2bab1a53ca ]
    
    Commit 8b7008620b84 ("net: Don't copy pfmemalloc flag in
    __copy_skb_header()") introduced a different handling for the
    pfmemalloc flag in copy and clone paths.
    
    In __skb_clone(), now, the flag is set only if it was set in the
    original skb, but not cleared if it wasn't. This is wrong and
    might lead to socket buffers being flagged with pfmemalloc even
    if the skb data wasn't allocated from pfmemalloc reserves. Copy
    the flag instead of ORing it.
    
    Reported-by: Sabrina Dubroca <sd@queasysnail.net>
    Fixes: 8b7008620b84 ("net: Don't copy pfmemalloc flag in __copy_skb_header()")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Tested-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8428d1ead1ab0835b12868cb63d8b6d8b37eaa6d
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Wed Jul 11 14:39:42 2018 +0200

    net: Don't copy pfmemalloc flag in __copy_skb_header()
    
    [ Upstream commit 8b7008620b8452728cadead460a36f64ed78c460 ]
    
    The pfmemalloc flag indicates that the skb was allocated from
    the PFMEMALLOC reserves, and the flag is currently copied on skb
    copy and clone.
    
    However, an skb copied from an skb flagged with pfmemalloc
    wasn't necessarily allocated from PFMEMALLOC reserves, and on
    the other hand an skb allocated that way might be copied from an
    skb that wasn't.
    
    So we should not copy the flag on skb copy, and rather decide
    whether to allow an skb to be associated with sockets unrelated
    to page reclaim depending only on how it was allocated.
    
    Move the pfmemalloc flag before headers_start[0] using an
    existing 1-bit hole, so that __copy_skb_header() doesn't copy
    it.
    
    When cloning, we'll now take care of this flag explicitly,
    contravening to the warning comment of __skb_clone().
    
    While at it, restore the newline usage introduced by commit
    b19372273164 ("net: reorganize sk_buff for faster
    __copy_skb_header()") to visually separate bytes used in
    bitfields after headers_start[0], that was gone after commit
    a9e419dc7be6 ("netfilter: merge ctinfo into nfct pointer storage
    area"), and describe the pfmemalloc flag in the kernel-doc
    structure comment.
    
    This doesn't change the size of sk_buff or cacheline boundaries,
    but consolidates the 15 bits hole before tc_index into a 2 bytes
    hole before csum, that could now be filled more easily.
    
    Reported-by: Patrick Talbert <ptalbert@redhat.com>
    Fixes: c93bdd0e03e8 ("netvm: allow skb allocation to use PFMEMALLOC reserves")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f970e49289206327007ce227034d307182e91219
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Jul 17 20:17:33 2018 -0500

    ptp: fix missing break in switch
    
    [ Upstream commit 9ba8376ce1e2cbf4ce44f7e4bee1d0648e10d594 ]
    
    It seems that a *break* is missing in order to avoid falling through
    to the default case. Otherwise, checking *chan* makes no sense.
    
    Fixes: 72df7a7244c0 ("ptp: Allow reassigning calibration pin function")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58635c84de109bf77d04b174d7641e376b0d2c20
Author: Tyler Hicks <tyhicks@canonical.com>
Date:   Thu Jul 5 18:49:23 2018 +0000

    ipv4: Return EINVAL when ping_group_range sysctl doesn't map to user ns
    
    [ Upstream commit 70ba5b6db96ff7324b8cfc87e0d0383cf59c9677 ]
    
    The low and high values of the net.ipv4.ping_group_range sysctl were
    being silently forced to the default disabled state when a write to the
    sysctl contained GIDs that didn't map to the associated user namespace.
    Confusingly, the sysctl's write operation would return success and then
    a subsequent read of the sysctl would indicate that the low and high
    values are the overflowgid.
    
    This patch changes the behavior by clearly returning an error when the
    sysctl write operation receives a GID range that doesn't map to the
    associated user namespace. In such a situation, the previous value of
    the sysctl is preserved and that range will be returned in a subsequent
    read of the sysctl.
    
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd385143709f604be9566c9618f800624ae68254
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Wed Jul 11 10:42:20 2018 -0700

    ARC: mm: allow mprotect to make stack mappings executable
    
    commit 93312b6da4df31e4102ce5420e6217135a16c7ea upstream.
    
    mprotect(EXEC) was failing for stack mappings as default vm flags was
    missing MAYEXEC.
    
    This was triggered by glibc test suite nptl/tst-execstack testcase
    
    What is surprising is that despite running LTP for years on, we didn't
    catch this issue as it lacks a directed test case.
    
    gcc dejagnu tests with nested functions also requiring exec stack work
    fine though because they rely on the GNU_STACK segment spit out by
    compiler and handled in kernel elf loader.
    
    This glibc case is different as the stack is non exec to begin with and
    a dlopen of shared lib with GNU_STACK segment triggers the exec stack
    proceedings using a mprotect(PROT_EXEC) which was broken.
    
    CC: stable@vger.kernel.org
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ade78e53ce11db4391b6d3aa0ab9b144e974844b
Author: Alexey Brodkin <abrodkin@synopsys.com>
Date:   Thu Jun 28 16:59:14 2018 -0700

    ARC: Fix CONFIG_SWAP
    
    commit 6e3761145a9ba3ce267c330b6bff51cf6a057b06 upstream.
    
    swap was broken on ARC due to silly copy-paste issue.
    
    We encode offset from swapcache page in __swp_entry() as (off << 13) but
    were not decoding back in __swp_offset() as (off >> 13) - it was still
    (off << 13).
    
    This finally fixes swap usage on ARC.
    
    | # mkswap /dev/sda2
    |
    | # swapon -a -e /dev/sda2
    | Adding 500728k swap on /dev/sda2.  Priority:-2 extents:1 across:500728k
    |
    | # free
    |              total       used       free     shared    buffers     cached
    | Mem:        765104      13456     751648       4736          8       4736
    | -/+ buffers/cache:       8712     756392
    | Swap:       500728          0     500728
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfa30d8adceec8633bea60333707fe1208f2f0e9
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jul 17 17:26:43 2018 +0200

    ALSA: rawmidi: Change resized buffers atomically
    
    commit 39675f7a7c7e7702f7d5341f1e0d01db746543a0 upstream.
    
    The SNDRV_RAWMIDI_IOCTL_PARAMS ioctl may resize the buffers and the
    current code is racy.  For example, the sequencer client may write to
    buffer while it being resized.
    
    As a simple workaround, let's switch to the resized buffer inside the
    stream runtime lock.
    
    Reported-by: syzbot+52f83f0ea8df16932f7f@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7bd86d8c5b8cdd2d9f779a844828fdbc7bae94f
Author: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Date:   Fri Jul 20 17:53:42 2018 -0700

    fat: fix memory allocation failure handling of match_strdup()
    
    commit 35033ab988c396ad7bce3b6d24060c16a9066db8 upstream.
    
    In parse_options(), if match_strdup() failed, parse_options() leaves
    opts->iocharset in unexpected state (i.e.  still pointing the freed
    string).  And this can be the cause of double free.
    
    To fix, this initialize opts->iocharset always when freeing.
    
    Link: http://lkml.kernel.org/r/8736wp9dzc.fsf@mail.parknet.co.jp
    Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Reported-by: syzbot+90b8e10515ae88228a92@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49347a32f2a3d12b80a22a557d8ba575bf106287
Author: Dewet Thibaut <thibaut.dewet@nokia.com>
Date:   Mon Jul 16 10:49:27 2018 +0200

    x86/MCE: Remove min interval polling limitation
    
    commit fbdb328c6bae0a7c78d75734a738b66b86dffc96 upstream.
    
    commit b3b7c4795c ("x86/MCE: Serialize sysfs changes") introduced a min
    interval limitation when setting the check interval for polled MCEs.
    However, the logic is that 0 disables polling for corrected MCEs, see
    Documentation/x86/x86_64/machinecheck. The limitation prevents disabling.
    
    Remove this limitation and allow the value 0 to disable polling again.
    
    Fixes: b3b7c4795c ("x86/MCE: Serialize sysfs changes")
    Signed-off-by: Dewet Thibaut <thibaut.dewet@nokia.com>
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    [ Massage commit message. ]
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20180716084927.24869-1-alexander.sverdlin@nokia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>