commit 07bcb2489b96b2bd8b030822b4495e4a18c7b5da
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jan 2 20:35:18 2018 +0100

    Linux 4.9.74

commit 181a832c2e26ac7ff1e3b3c8bd6b7e9b8d70f870
Author: Andy Lutomirski <luto@kernel.org>
Date:   Mon Jun 5 07:40:25 2017 -0700

    mm/vmstat: Make NR_TLB_REMOTE_FLUSH_RECEIVED available even on UP
    
    commit 5dd0b16cdaff9b94da06074d5888b03235c0bf17 upstream.
    
    This fixes CONFIG_SMP=n, CONFIG_DEBUG_TLBFLUSH=y without introducing
    further #ifdef soup.  Caught by a Kbuild bot randconfig build.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: ce4a4e565f52 ("x86/mm: Remove the UP asm/tlbflush.h code, always use the (formerly) SMP code")
    Link: http://lkml.kernel.org/r/76da9a3cc4415996f2ad2c905b93414add322021.1496673616.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d76dabb5af066e8da87924825f725f585a41daa0
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Nov 3 15:18:05 2017 +0100

    tty: fix tty_ldisc_receive_buf() documentation
    
    commit e7e51dcf3b8a5f65c5653a054ad57eb2492a90d0 upstream.
    
    The tty_ldisc_receive_buf() helper returns the number of bytes
    processed so drop the bogus "not" from the kernel doc comment.
    
    Fixes: 8d082cd300ab ("tty: Unify receive_buf() code paths")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00fc57ae06c3519a5e32e39882549e4e1f6328fb
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Dec 20 17:57:06 2017 -0800

    n_tty: fix EXTPROC vs ICANON interaction with TIOCINQ (aka FIONREAD)
    
    commit 966031f340185eddd05affcf72b740549f056348 upstream.
    
    We added support for EXTPROC back in 2010 in commit 26df6d13406d ("tty:
    Add EXTPROC support for LINEMODE") and the intent was to allow it to
    override some (all?) ICANON behavior.  Quoting from that original commit
    message:
    
             There is a new bit in the termios local flag word, EXTPROC.
             When this bit is set, several aspects of the terminal driver
             are disabled.  Input line editing, character echo, and mapping
             of signals are all disabled.  This allows the telnetd to turn
             off these functions when in linemode, but still keep track of
             what state the user wants the terminal to be in.
    
    but the problem turns out that "several aspects of the terminal driver
    are disabled" is a bit ambiguous, and you can really confuse the n_tty
    layer by setting EXTPROC and then causing some of the ICANON invariants
    to no longer be maintained.
    
    This fixes at least one such case (TIOCINQ) becoming unhappy because of
    the confusion over whether ICANON really means ICANON when EXTPROC is set.
    
    This basically makes TIOCINQ match the case of read: if EXTPROC is set,
    we ignore ICANON.  Also, make sure to reset the ICANON state ie EXTPROC
    changes, not just if ICANON changes.
    
    Fixes: 26df6d13406d ("tty: Add EXTPROC support for LINEMODE")
    Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Cc: Jiri Slaby <jslaby@suse.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 404ae546c7d1927b877d24bf447a462a5c5a5ad7
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sat Dec 30 22:13:53 2017 +0100

    x86/smpboot: Remove stale TLB flush invocations
    
    commit 322f8b8b340c824aef891342b0f5795d15e11562 upstream.
    
    smpboot_setup_warm_reset_vector() and smpboot_restore_warm_reset_vector()
    invoke local_flush_tlb() for no obvious reason.
    
    Digging in history revealed that the original code in the 2.1 era added
    those because the code manipulated a swapper_pg_dir pagetable entry. The
    pagetable manipulation was removed long ago in the 2.3 timeframe, but the
    TLB flush invocations stayed around forever.
    
    Remove them along with the pointless pr_debug()s which come from the same 2.1
    change.
    
    Reported-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linuxfoundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20171230211829.586548655@linutronix.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8119ac05d7160cce59ce1ff04c210c22e147a6c
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Dec 22 15:51:13 2017 +0100

    nohz: Prevent a timer interrupt storm in tick_nohz_stop_sched_tick()
    
    commit 5d62c183f9e9df1deeea0906d099a94e8a43047a upstream.
    
    The conditions in irq_exit() to invoke tick_nohz_irq_exit() which
    subsequently invokes tick_nohz_stop_sched_tick() are:
    
      if ((idle_cpu(cpu) && !need_resched()) || tick_nohz_full_cpu(cpu))
    
    If need_resched() is not set, but a timer softirq is pending then this is
    an indication that the softirq code punted and delegated the execution to
    softirqd. need_resched() is not true because the current interrupted task
    takes precedence over softirqd.
    
    Invoking tick_nohz_irq_exit() in this case can cause an endless loop of
    timer interrupts because the timer wheel contains an expired timer, but
    softirqs are not yet executed. So it returns an immediate expiry request,
    which causes the timer to fire immediately again. Lather, rinse and
    repeat....
    
    Prevent that by adding a check for a pending timer soft interrupt to the
    conditions in tick_nohz_stop_sched_tick() which avoid calling
    get_next_timer_interrupt(). That keeps the tick sched timer on the tick and
    prevents a repetitive programming of an already expired timer.
    
    Reported-by: Sebastian Siewior <bigeasy@linutronix.d>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Anna-Maria Gleixner <anna-maria@linutronix.de>
    Cc: Sebastian Siewior <bigeasy@linutronix.de>
    Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1712272156050.2431@nanos
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 249d4a9b3246f4ec92433ba8ea3bae5ceb4dc1ed
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Dec 27 21:37:25 2017 +0100

    timers: Reinitialize per cpu bases on hotplug
    
    commit 26456f87aca7157c057de65c9414b37f1ab881d1 upstream.
    
    The timer wheel bases are not (re)initialized on CPU hotplug. That leaves
    them with a potentially stale clk and next_expiry valuem, which can cause
    trouble then the CPU is plugged.
    
    Add a prepare callback which forwards the clock, sets next_expiry to far in
    the future and reset the control flags to a known state.
    
    Set base->must_forward_clk so the first timer which is queued will try to
    forward the clock to current jiffies.
    
    Fixes: 500462a9de65 ("timers: Switch to a non-cascading wheel")
    Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Sebastian Siewior <bigeasy@linutronix.de>
    Cc: Anna-Maria Gleixner <anna-maria@linutronix.de>
    Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1712272152200.2431@nanos
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 574e543ff970ea208d6d97524e0373d3741a6a34
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Dec 22 15:51:14 2017 +0100

    timers: Invoke timer_start_debug() where it makes sense
    
    commit fd45bb77ad682be728d1002431d77b8c73342836 upstream.
    
    The timer start debug function is called before the proper timer base is
    set. As a consequence the trace data contains the stale CPU and flags
    values.
    
    Call the debug function after setting the new base and flags.
    
    Fixes: 500462a9de65 ("timers: Switch to a non-cascading wheel")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Sebastian Siewior <bigeasy@linutronix.de>
    Cc: rt@linutronix.de
    Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Anna-Maria Gleixner <anna-maria@linutronix.de>
    Link: https://lkml.kernel.org/r/20171222145337.792907137@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d840687aa8a3ca7b8219b1a207a1c55e47c90225
Author: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date:   Fri Dec 22 15:51:12 2017 +0100

    timers: Use deferrable base independent of base::nohz_active
    
    commit ced6d5c11d3e7b342f1a80f908e6756ebd4b8ddd upstream.
    
    During boot and before base::nohz_active is set in the timer bases, deferrable
    timers are enqueued into the standard timer base. This works correctly as
    long as base::nohz_active is false.
    
    Once it base::nohz_active is set and a timer which was enqueued before that
    is accessed the lock selector code choses the lock of the deferred
    base. This causes unlocked access to the standard base and in case the
    timer is removed it does not clear the pending flag in the standard base
    bitmap which causes get_next_timer_interrupt() to return bogus values.
    
    To prevent that, the deferrable timers must be enqueued in the deferrable
    base, even when base::nohz_active is not set. Those deferrable timers also
    need to be expired unconditional.
    
    Fixes: 500462a9de65 ("timers: Switch to a non-cascading wheel")
    Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sebastian Siewior <bigeasy@linutronix.de>
    Cc: rt@linutronix.de
    Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
    Link: https://lkml.kernel.org/r/20171222145337.633328378@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 09d3e69305b32a43de75d36430f9856df8055022
Author: Daniel Thompson <daniel.thompson@linaro.org>
Date:   Thu Dec 21 15:06:15 2017 +0200

    usb: xhci: Add XHCI_TRUST_TX_LENGTH for Renesas uPD720201
    
    commit da99706689481717998d1d48edd389f339eea979 upstream.
    
    When plugging in a USB webcam I see the following message:
    xhci_hcd 0000:04:00.0: WARN Successful completion on short TX: needs
    XHCI_TRUST_TX_LENGTH quirk?
    handle_tx_event: 913 callbacks suppressed
    
    All is quiet again with this patch (and I've done a fair but of soak
    testing with the camera since).
    
    Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab1fbfecd3300325c69b6dd2434329fadec26257
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Dec 19 11:14:42 2017 +0200

    USB: Fix off by one in type-specific length check of BOS SSP capability
    
    commit 07b9f12864d16c3a861aef4817eb1efccbc5d0e6 upstream.
    
    USB 3.1 devices are not detected as 3.1 capable since 4.15-rc3 due to a
    off by one in commit 81cf4a45360f ("USB: core: Add type-specific length
    check of BOS descriptors")
    
    It uses USB_DT_USB_SSP_CAP_SIZE() to get SSP capability size which takes
    the zero based SSAC as argument, not the actual count of sublink speed
    attributes.
    
    USB3 spec 9.6.2.5 says "The number of Sublink Speed Attributes = SSAC + 1."
    
    The type-specific length check patch was added to stable and needs to be
    fixed there as well
    
    Fixes: 81cf4a45360f ("USB: core: Add type-specific length check of BOS descriptors")
    CC: Masakazu Mokuno <masakazu.mokuno@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 425d2f15338d9a65ea3bd57b481c8a55a1deebbd
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Dec 12 16:11:30 2017 +0100

    usb: add RESET_RESUME for ELSA MicroLink 56K
    
    commit b9096d9f15c142574ebebe8fbb137012bb9d99c2 upstream.
    
    This modem needs this quirk to operate. It produces timeouts when
    resumed without reset.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f2e9cbc231c0de2dfd5785e7b83b10145ace76b
Author: Dmitry Fleytman Dmitry Fleytman <dmitry.fleytman@gmail.com>
Date:   Tue Dec 19 06:02:04 2017 +0200

    usb: Add device quirk for Logitech HD Pro Webcam C925e
    
    commit 7f038d256c723dd390d2fca942919573995f4cfd upstream.
    
    Commit e0429362ab15
    ("usb: Add device quirk for Logitech HD Pro Webcams C920 and C930e")
    introduced quirk to workaround an issue with some Logitech webcams.
    
    There is one more model that has the same issue - C925e, so applying
    the same quirk as well.
    
    See aforementioned commit message for detailed explanation of the problem.
    
    Signed-off-by: Dmitry Fleytman <dmitry.fleytman@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d98f4d4d028393aac5113c943c289ef3ad1c36f3
Author: SZ Lin (林上智) <sz.lin@moxa.com>
Date:   Tue Dec 19 17:40:32 2017 +0800

    USB: serial: option: adding support for YUGA CLM920-NC5
    
    commit 3920bb713038810f25770e7545b79f204685c8f2 upstream.
    
    This patch adds support for YUGA CLM920-NC5 PID 0x9625 USB modem to option
    driver.
    
    Interface layout:
    0: QCDM/DIAG
    1: ADB
    2: MODEM
    3: AT
    4: RMNET
    
    Signed-off-by: Taiyi Wu <taiyity.wu@moxa.com>
    Signed-off-by: SZ Lin (林上智) <sz.lin@moxa.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 192cdf5ecaf841d172e2c3a6bb6b5aaed530b68b
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Thu Dec 14 16:54:45 2017 +0100

    USB: serial: option: add support for Telit ME910 PID 0x1101
    
    commit 08933099e6404f588f81c2050bfec7313e06eeaf upstream.
    
    This patch adds support for PID 0x1101 of Telit ME910.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ab3d87ad702941243b53be7e1c45393dc5df4c6
Author: Reinhard Speyerer <rspmn@arcor.de>
Date:   Fri Dec 15 00:39:27 2017 +0100

    USB: serial: qcserial: add Sierra Wireless EM7565
    
    commit 92a18a657fb2e2ffbfa0659af32cc18fd2346516 upstream.
    
    Sierra Wireless EM7565 devices use the QCSERIAL_SWI layout for their
    serial ports
    
    T:  Bus=01 Lev=03 Prnt=29 Port=01 Cnt=02 Dev#= 31 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1199 ProdID=9091 Rev= 0.06
    S:  Manufacturer=Sierra Wireless, Incorporated
    S:  Product=Sierra Wireless EM7565 Qualcomm Snapdragon X16 LTE-A
    S:  SerialNumber=xxxxxxxx
    C:* #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=qcserial
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=qcserial
    E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=qcserial
    E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 8 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=86(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    but need sendsetup = true for the NMEA port to make it work properly.
    
    Simplify the patch compared to v1 as suggested by Bjørn Mork by taking
    advantage of the fact that existing devices work with sendsetup = true
    too.
    
    Use sendsetup = true for the NMEA interface of QCSERIAL_SWI and add
    DEVICE_SWI entries for the EM7565 PID 0x9091 and the EM7565 QDL PID
    0x9090.
    
    Tests with several MC73xx/MC74xx/MC77xx devices have been performed in
    order to verify backward compatibility.
    
    Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0af1aebb6a8b0d9816777b4fea304c4272e067fe
Author: Max Schulze <max.schulze@posteo.de>
Date:   Wed Dec 20 20:47:44 2017 +0100

    USB: serial: ftdi_sio: add id for Airbus DS P8GR
    
    commit c6a36ad383559a60a249aa6016cebf3cb8b6c485 upstream.
    
    Add AIRBUS_DS_P8GR device IDs to ftdi_sio driver.
    
    Signed-off-by: Max Schulze <max.schulze@posteo.de>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03dce0573d38a17ca5ffc798611a9026f9792477
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Mon Dec 18 17:24:22 2017 -0700

    usbip: vhci: stop printing kernel pointer addresses in messages
    
    commit 8272d099d05f7ab2776cf56a2ab9f9443be18907 upstream.
    
    Remove and/or change debug, info. and error messages to not print
    kernel pointer addresses.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e9f4255c0d3465c11fe6262e008ccf832db5f26
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Mon Dec 18 17:23:37 2017 -0700

    usbip: stub: stop printing kernel pointer addresses in messages
    
    commit 248a22044366f588d46754c54dfe29ffe4f8b4df upstream.
    
    Remove and/or change debug, info. and error messages to not print
    kernel pointer addresses.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ef5c433b3b9deaa81095d7065df04877567b778
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Fri Dec 15 10:50:09 2017 -0700

    usbip: prevent leaking socket pointer address in messages
    
    commit 90120d15f4c397272aaf41077960a157fc4212bf upstream.
    
    usbip driver is leaking socket pointer address in messages. Remove
    the messages that aren't useful and print sockfd in the ones that
    are useful for debugging.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c579d0b4f0f07ab5c57dd3329ca07d70168879b
Author: Juan Zea <juan.zea@qindel.com>
Date:   Fri Dec 15 10:21:20 2017 +0100

    usbip: fix usbip bind writing random string after command in match_busid
    
    commit 544c4605acc5ae4afe7dd5914147947db182f2fb upstream.
    
    usbip bind writes commands followed by random string when writing to
    match_busid attribute in sysfs, caused by using full variable size
    instead of string length.
    
    Signed-off-by: Juan Zea <juan.zea@qindel.com>
    Acked-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67b539cab43cf3e46896a747004c923abf33ae17
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Wed Dec 13 18:56:32 2017 +0100

    s390/qeth: update takeover IPs after configuration change
    
    
    [ Upstream commit 02f510f326501470348a5df341e8232c3497bbbb ]
    
    Any modification to the takeover IP-ranges requires that we re-evaluate
    which IP addresses are takeover-eligible. Otherwise we might do takeover
    for some addresses when we no longer should, or vice-versa.
    
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 476d7d6932953a3ca8d7cde01e75284268f4f52e
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Wed Dec 13 18:56:31 2017 +0100

    s390/qeth: lock IP table while applying takeover changes
    
    
    [ Upstream commit 8a03a3692b100d84785ee7a834e9215e304c9e00 ]
    
    Modifying the flags of an IP addr object needs to be protected against
    eg. concurrent removal of the same object from the IP table.
    
    Fixes: 5f78e29ceebf ("qeth: optimize IP handling in rx_mode callback")
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 475018c79742ecd5806a9fde88582f13b2d5a5c7
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Wed Dec 13 18:56:30 2017 +0100

    s390/qeth: don't apply takeover changes to RXIP
    
    
    [ Upstream commit b22d73d6689fd902a66c08ebe71ab2f3b351e22f ]
    
    When takeover is switched off, current code clears the 'TAKEOVER' flag on
    all IPs. But the flag is also used for RXIP addresses, and those should
    not be affected by the takeover mode.
    Fix the behaviour by consistenly applying takover logic to NORMAL
    addresses only.
    
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ed7c48e93bb800077b1bd7a24b5b86e675f3764
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Wed Dec 13 18:56:29 2017 +0100

    s390/qeth: apply takeover changes when mode is toggled
    
    
    [ Upstream commit 7fbd9493f0eeae8cef58300505a9ef5c8fce6313 ]
    
    Just as for an explicit enable/disable, toggling the takeover mode also
    requires that the IP addresses get updated. Otherwise all IPs that were
    added to the table before the mode-toggle, get registered with the old
    settings.
    
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7493d98ea84c1fb92feef5b2e863d696a1634448
Author: Moni Shoua <monis@mellanox.com>
Date:   Mon Dec 4 08:59:25 2017 +0200

    net/mlx5: Fix error flow in CREATE_QP command
    
    
    [ Upstream commit dbff26e44dc3ec4de6578733b054a0114652a764 ]
    
    In error flow, when DESTROY_QP command should be executed, the wrong
    mailbox was set with data, not the one that is written to hardware,
    Fix that.
    
    Fixes: 09a7d9eca1a6 '{net,IB}/mlx5: QP/XRCD commands via mlx5 ifc'
    Signed-off-by: Moni Shoua <monis@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c844a458948711c36105bf0b4e8771b104e1906b
Author: Gal Pressman <galp@mellanox.com>
Date:   Mon Dec 4 09:57:43 2017 +0200

    net/mlx5e: Prevent possible races in VXLAN control flow
    
    
    [ Upstream commit 0c1cc8b2215f5122ca614b5adca60346018758c3 ]
    
    When calling add/remove VXLAN port, a lock must be held in order to
    prevent race scenarios when more than one add/remove happens at the
    same time.
    Fix by holding our state_lock (mutex) as done by all other parts of the
    driver.
    Note that the spinlock protecting the radix-tree is still needed in
    order to synchronize radix-tree access from softirq context.
    
    Fixes: b3f63c3d5e2c ("net/mlx5e: Add netdev support for VXLAN tunneling")
    Signed-off-by: Gal Pressman <galp@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 604225824f063bb6a737af564cd5261fba7d8221
Author: Gal Pressman <galp@mellanox.com>
Date:   Sun Dec 3 13:58:50 2017 +0200

    net/mlx5e: Add refcount to VXLAN structure
    
    
    [ Upstream commit 23f4cc2cd9ed92570647220aca60d0197d8c1fa9 ]
    
    A refcount mechanism must be implemented in order to prevent unwanted
    scenarios such as:
    - Open an IPv4 VXLAN interface
    - Open an IPv6 VXLAN interface (different socket)
    - Remove one of the interfaces
    
    With current implementation, the UDP port will be removed from our VXLAN
    database and turn off the offloads for the other interface, which is
    still active.
    The reference count mechanism will only allow UDP port removals once all
    consumers are gone.
    
    Fixes: b3f63c3d5e2c ("net/mlx5e: Add netdev support for VXLAN tunneling")
    Signed-off-by: Gal Pressman <galp@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1614fd9cd1039f26aaf63cbb261d5ccc3bdf133
Author: Gal Pressman <galp@mellanox.com>
Date:   Thu Nov 23 13:52:28 2017 +0200

    net/mlx5e: Fix possible deadlock of VXLAN lock
    
    
    [ Upstream commit 6323514116404cc651df1b7fffa1311ddf8ce647 ]
    
    mlx5e_vxlan_lookup_port is called both from mlx5e_add_vxlan_port (user
    context) and mlx5e_features_check (softirq), but the lock acquired does
    not disable bottom half and might result in deadlock. Fix it by simply
    replacing spin_lock() with spin_lock_bh().
    While at it, replace all unnecessary spin_lock_irq() to spin_lock_bh().
    
    lockdep's WARNING: inconsistent lock state
    [  654.028136] inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
    [  654.028229] swapper/5/0 [HC0[0]:SC1[9]:HE1:SE0] takes:
    [  654.028321]  (&(&vxlan_db->lock)->rlock){+.?.}, at: [<ffffffffa06e7f0e>] mlx5e_vxlan_lookup_port+0x1e/0x50 [mlx5_core]
    [  654.028528] {SOFTIRQ-ON-W} state was registered at:
    [  654.028607]   _raw_spin_lock+0x3c/0x70
    [  654.028689]   mlx5e_vxlan_lookup_port+0x1e/0x50 [mlx5_core]
    [  654.028794]   mlx5e_vxlan_add_port+0x2e/0x120 [mlx5_core]
    [  654.028878]   process_one_work+0x1e9/0x640
    [  654.028942]   worker_thread+0x4a/0x3f0
    [  654.029002]   kthread+0x141/0x180
    [  654.029056]   ret_from_fork+0x24/0x30
    [  654.029114] irq event stamp: 579088
    [  654.029174] hardirqs last  enabled at (579088): [<ffffffff818f475a>] ip6_finish_output2+0x49a/0x8c0
    [  654.029309] hardirqs last disabled at (579087): [<ffffffff818f470e>] ip6_finish_output2+0x44e/0x8c0
    [  654.029446] softirqs last  enabled at (579030): [<ffffffff810b3b3d>] irq_enter+0x6d/0x80
    [  654.029567] softirqs last disabled at (579031): [<ffffffff810b3c05>] irq_exit+0xb5/0xc0
    [  654.029684] other info that might help us debug this:
    [  654.029781]  Possible unsafe locking scenario:
    
    [  654.029868]        CPU0
    [  654.029908]        ----
    [  654.029947]   lock(&(&vxlan_db->lock)->rlock);
    [  654.030045]   <Interrupt>
    [  654.030090]     lock(&(&vxlan_db->lock)->rlock);
    [  654.030162]
     *** DEADLOCK ***
    
    Fixes: b3f63c3d5e2c ("net/mlx5e: Add netdev support for VXLAN tunneling")
    Signed-off-by: Gal Pressman <galp@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9424a79ec11d5aac7fcb73583afc448be1ca6848
Author: Gal Pressman <galp@mellanox.com>
Date:   Tue Nov 21 17:49:36 2017 +0200

    net/mlx5e: Fix features check of IPv6 traffic
    
    
    [ Upstream commit 2989ad1ec03021ee6d2193c35414f1d970a243de ]
    
    The assumption that the next header field contains the transport
    protocol is wrong for IPv6 packets with extension headers.
    Instead, we should look the inner-most next header field in the buffer.
    This will fix TSO offload for tunnels over IPv6 with extension headers.
    
    Performance testing: 19.25x improvement, cool!
    Measuring bandwidth of 16 threads TCP traffic over IPv6 GRE tap.
    CPU: Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz
    NIC: Mellanox Technologies MT28800 Family [ConnectX-5 Ex]
    TSO: Enabled
    Before: 4,926.24  Mbps
    Now   : 94,827.91 Mbps
    
    Fixes: b3f63c3d5e2c ("net/mlx5e: Add netdev support for VXLAN tunneling")
    Signed-off-by: Gal Pressman <galp@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 138723912343f74b23170a2f86728f70e65e4d6b
Author: Eran Ben Elisha <eranbe@mellanox.com>
Date:   Mon Nov 13 10:11:27 2017 +0200

    net/mlx5: Fix rate limit packet pacing naming and struct
    
    
    [ Upstream commit 37e92a9d4fe38dc3e7308913575983a6a088c8d4 ]
    
    In mlx5_ifc, struct size was not complete, and thus driver was sending
    garbage after the last defined field. Fixed it by adding reserved field
    to complete the struct size.
    
    In addition, rename all set_rate_limit to set_pp_rate_limit to be
    compliant with the Firmware <-> Driver definition.
    
    Fixes: 7486216b3a0b ("{net,IB}/mlx5: mlx5_ifc updates")
    Fixes: 1466cc5b23d1 ("net/mlx5: Rate limit tables support")
    Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e74fe7268e7eadb2880d3842fe167131220d5616
Author: Yousuk Seung <ysseung@google.com>
Date:   Thu Dec 7 13:41:34 2017 -0800

    tcp: invalidate rate samples during SACK reneging
    
    
    [ Upstream commit d4761754b4fb2ef8d9a1e9d121c4bec84e1fe292 ]
    
    Mark tcp_sock during a SACK reneging event and invalidate rate samples
    while marked. Such rate samples may overestimate bw by including packets
    that were SACKed before reneging.
    
    < ack 6001 win 10000 sack 7001:38001
    < ack 7001 win 0 sack 8001:38001 // Reneg detected
    > seq 7001:8001 // RTO, SACK cleared.
    < ack 38001 win 10000
    
    In above example the rate sample taken after the last ack will count
    7001-38001 as delivered while the actual delivery rate likely could
    be much lower i.e. 7001-8001.
    
    This patch adds a new field tcp_sock.sack_reneg and marks it when we
    declare SACK reneging and entering TCP_CA_Loss, and unmarks it after
    the last rate sample was taken before moving back to TCP_CA_Open. This
    patch also invalidates rate samples taken while tcp_sock.is_sack_reneg
    is set.
    
    Fixes: b9f64820fb22 ("tcp: track data delivery rate for a TCP connection")
    Signed-off-by: Yousuk Seung <ysseung@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Priyaranjan Jha <priyarjha@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58f6ebbd3424ef855cf28887f20965bfbef13b90
Author: Willem de Bruijn <willemb@google.com>
Date:   Wed Dec 13 14:41:06 2017 -0500

    sock: free skb in skb_complete_tx_timestamp on error
    
    
    [ Upstream commit 35b99dffc3f710cafceee6c8c6ac6a98eb2cb4bf ]
    
    skb_complete_tx_timestamp must ingest the skb it is passed. Call
    kfree_skb if the skb cannot be enqueued.
    
    Fixes: b245be1f4db1 ("net-timestamp: no-payload only sysctl")
    Fixes: 9ac25fc06375 ("net: fix socket refcounting in skb_complete_tx_timestamp()")
    Reported-by: Richard Cochran <richardcochran@gmail.com>
    Signed-off-by: Willem de Bruijn <willemb@google.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 a746fadd5e3187b814a66769355adcc9524839e6
Author: Grygorii Strashko <grygorii.strashko@ti.com>
Date:   Wed Dec 20 18:45:10 2017 -0600

    net: phy: micrel: ksz9031: reconfigure autoneg after phy autoneg workaround
    
    
    [ Upstream commit c1a8d0a3accf64a014d605e6806ce05d1c17adf1 ]
    
    Under some circumstances driver will perform PHY reset in
    ksz9031_read_status() to fix autoneg failure case (idle error count =
    0xFF). When this happens ksz9031 will not detect link status change any
    more when connecting to Netgear 1G switch (link can be recovered sometimes by
    restarting netdevice "ifconfig down up"). Reproduced with TI am572x board
    equipped with ksz9031 PHY while connecting to Netgear 1G switch.
    
    Fix the issue by reconfiguring autonegotiation after PHY reset in
    ksz9031_read_status().
    
    Fixes: d2fd719bcb0e ("net/phy: micrel: Add workaround for bad autoneg")
    Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03c93293a83a603fc5b87fc15321f392d3cf0043
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Tue Dec 19 11:27:56 2017 -0600

    net: Fix double free and memory corruption in get_net_ns_by_id()
    
    
    [ Upstream commit 21b5944350052d2583e82dd59b19a9ba94a007f0 ]
    
    (I can trivially verify that that idr_remove in cleanup_net happens
     after the network namespace count has dropped to zero --EWB)
    
    Function get_net_ns_by_id() does not check for net::count
    after it has found a peer in netns_ids idr.
    
    It may dereference a peer, after its count has already been
    finaly decremented. This leads to double free and memory
    corruption:
    
    put_net(peer)                                   rtnl_lock()
    atomic_dec_and_test(&peer->count) [count=0]     ...
    __put_net(peer)                                 get_net_ns_by_id(net, id)
      spin_lock(&cleanup_list_lock)
      list_add(&net->cleanup_list, &cleanup_list)
      spin_unlock(&cleanup_list_lock)
    queue_work()                                      peer = idr_find(&net->netns_ids, id)
      |                                               get_net(peer) [count=1]
      |                                               ...
      |                                               (use after final put)
      v                                               ...
      cleanup_net()                                   ...
        spin_lock(&cleanup_list_lock)                 ...
        list_replace_init(&cleanup_list, ..)          ...
        spin_unlock(&cleanup_list_lock)               ...
        ...                                           ...
        ...                                           put_net(peer)
        ...                                             atomic_dec_and_test(&peer->count) [count=0]
        ...                                               spin_lock(&cleanup_list_lock)
        ...                                               list_add(&net->cleanup_list, &cleanup_list)
        ...                                               spin_unlock(&cleanup_list_lock)
        ...                                             queue_work()
        ...                                           rtnl_unlock()
        rtnl_lock()                                   ...
        for_each_net(tmp) {                           ...
          id = __peernet2id(tmp, peer)                ...
          spin_lock_irq(&tmp->nsid_lock)              ...
          idr_remove(&tmp->netns_ids, id)             ...
          ...                                         ...
          net_drop_ns()                               ...
            net_free(peer)                            ...
        }                                             ...
      |
      v
      cleanup_net()
        ...
        (Second free of peer)
    
    Also, put_net() on the right cpu may reorder with left's cpu
    list_replace_init(&cleanup_list, ..), and then cleanup_list
    will be corrupted.
    
    Since cleanup_net() is executed in worker thread, while
    put_net(peer) can happen everywhere, there should be
    enough time for concurrent get_net_ns_by_id() to pick
    the peer up, and the race does not seem to be unlikely.
    The patch fixes the problem in standard way.
    
    (Also, there is possible problem in peernet2id_alloc(), which requires
    check for net::count under nsid_lock and maybe_get_net(peer), but
    in current stable kernel it's used under rtnl_lock() and it has to be
    safe. Openswitch begun to use peernet2id_alloc(), and possibly it should
    be fixed too. While this is not in stable kernel yet, so I'll send
    a separate message to netdev@ later).
    
    Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    Fixes: 0c7aecd4bde4 "netns: add rtnl cmd to add and get peer netns ids"
    Reviewed-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Reviewed-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c38f3190fd69ec1700f83078785b83e173f1499
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Sun Jul 30 19:36:05 2017 +0200

    net: fec: Allow reception of frames bigger than 1522 bytes
    
    
    [ Upstream commit fbbeefdd21049fcf9437c809da3828b210577f36 ]
    
    The FEC Receive Control Register has a 14 bit field indicating the
    longest frame that may be received. It is being set to 1522. Frames
    longer than this are discarded, but counted as being in error.
    
    When using DSA, frames from the switch has an additional header,
    either 4 or 8 bytes if a Marvell switch is used. Thus a full MTU frame
    of 1522 bytes received by the switch on a port becomes 1530 bytes when
    passed to the host via the FEC interface.
    
    Change the maximum receive size to 2048 - 64, where 64 is the maximum
    rx_alignment applied on the receive buffer for AVB capable FEC
    cores. Use this value also for the maximum receive buffer size. The
    driver is already allocating a receive SKB of 2048 bytes, so this
    change should not have any significant effects.
    
    Tested on imx51, imx6, vf610.
    
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 243adaa4eaea5088aa5a8813b82bb6098ba6fb92
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Mon Dec 18 17:35:09 2017 +0200

    net: bridge: fix early call to br_stp_change_bridge_id and plug newlink leaks
    
    
    [ Upstream commit 84aeb437ab98a2bce3d4b2111c79723aedfceb33 ]
    
    The early call to br_stp_change_bridge_id in bridge's newlink can cause
    a memory leak if an error occurs during the newlink because the fdb
    entries are not cleaned up if a different lladdr was specified, also
    another minor issue is that it generates fdb notifications with
    ifindex = 0. Another unrelated memory leak is the bridge sysfs entries
    which get added on NETDEV_REGISTER event, but are not cleaned up in the
    newlink error path. To remove this special case the call to
    br_stp_change_bridge_id is done after netdev register and we cleanup the
    bridge on changelink error via br_dev_delete to plug all leaks.
    
    This patch makes netlink bridge destruction on newlink error the same as
    dellink and ioctl del which is necessary since at that point we have a
    fully initialized bridge device.
    
    To reproduce the issue:
    $ ip l add br0 address 00:11:22:33:44:55 type bridge group_fwd_mask 1
    RTNETLINK answers: Invalid argument
    
    $ rmmod bridge
    [ 1822.142525] =============================================================================
    [ 1822.143640] BUG bridge_fdb_cache (Tainted: G           O    ): Objects remaining in bridge_fdb_cache on __kmem_cache_shutdown()
    [ 1822.144821] -----------------------------------------------------------------------------
    
    [ 1822.145990] Disabling lock debugging due to kernel taint
    [ 1822.146732] INFO: Slab 0x0000000092a844b2 objects=32 used=2 fp=0x00000000fef011b0 flags=0x1ffff8000000100
    [ 1822.147700] CPU: 2 PID: 13584 Comm: rmmod Tainted: G    B      O     4.15.0-rc2+ #87
    [ 1822.148578] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.7.5-20140531_083030-gandalf 04/01/2014
    [ 1822.150008] Call Trace:
    [ 1822.150510]  dump_stack+0x78/0xa9
    [ 1822.151156]  slab_err+0xb1/0xd3
    [ 1822.151834]  ? __kmalloc+0x1bb/0x1ce
    [ 1822.152546]  __kmem_cache_shutdown+0x151/0x28b
    [ 1822.153395]  shutdown_cache+0x13/0x144
    [ 1822.154126]  kmem_cache_destroy+0x1c0/0x1fb
    [ 1822.154669]  SyS_delete_module+0x194/0x244
    [ 1822.155199]  ? trace_hardirqs_on_thunk+0x1a/0x1c
    [ 1822.155773]  entry_SYSCALL_64_fastpath+0x23/0x9a
    [ 1822.156343] RIP: 0033:0x7f929bd38b17
    [ 1822.156859] RSP: 002b:00007ffd160e9a98 EFLAGS: 00000202 ORIG_RAX: 00000000000000b0
    [ 1822.157728] RAX: ffffffffffffffda RBX: 00005578316ba090 RCX: 00007f929bd38b17
    [ 1822.158422] RDX: 00007f929bd9ec60 RSI: 0000000000000800 RDI: 00005578316ba0f0
    [ 1822.159114] RBP: 0000000000000003 R08: 00007f929bff5f20 R09: 00007ffd160e8a11
    [ 1822.159808] R10: 00007ffd160e9860 R11: 0000000000000202 R12: 00007ffd160e8a80
    [ 1822.160513] R13: 0000000000000000 R14: 0000000000000000 R15: 00005578316ba090
    [ 1822.161278] INFO: Object 0x000000007645de29 @offset=0
    [ 1822.161666] INFO: Object 0x00000000d5df2ab5 @offset=128
    
    Fixes: 30313a3d5794 ("bridge: Handle IFLA_ADDRESS correctly when creating bridge device")
    Fixes: 5b8d5429daa0 ("bridge: netlink: register netdevice before executing changelink")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4f6698027751bdca656e90f568b9cc8f5e7f401
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Wed Dec 20 19:34:19 2017 +0200

    ipv4: Fix use-after-free when flushing FIB tables
    
    
    [ Upstream commit b4681c2829e24943aadd1a7bb3a30d41d0a20050 ]
    
    Since commit 0ddcf43d5d4a ("ipv4: FIB Local/MAIN table collapse") the
    local table uses the same trie allocated for the main table when custom
    rules are not in use.
    
    When a net namespace is dismantled, the main table is flushed and freed
    (via an RCU callback) before the local table. In case the callback is
    invoked before the local table is iterated, a use-after-free can occur.
    
    Fix this by iterating over the FIB tables in reverse order, so that the
    main table is always freed after the local table.
    
    v3: Reworded comment according to Alex's suggestion.
    v2: Add a comment to make the fix more explicit per Dave's and Alex's
    feedback.
    
    Fixes: 0ddcf43d5d4a ("ipv4: FIB Local/MAIN table collapse")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reported-by: Fengguang Wu <fengguang.wu@intel.com>
    Acked-by: Alexander Duyck <alexander.h.duyck@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e51abae8458a36b24b18162873578ef788412191
Author: Nikita V. Shirokov <tehnerd@fb.com>
Date:   Wed Dec 6 17:15:43 2017 -0800

    adding missing rcu_read_unlock in ipxip6_rcv
    
    
    [ Upstream commit 74c4b656c3d92ec4c824ea1a4afd726b7b6568c8 ]
    
    commit 8d79266bc48c ("ip6_tunnel: add collect_md mode to IPv6 tunnels")
    introduced new exit point in  ipxip6_rcv. however rcu_read_unlock is
    missing there. this diff is fixing this
    
    v1->v2:
     instead of doing rcu_read_unlock in place, we are going to "drop"
     section (to prevent skb leakage)
    
    Fixes: 8d79266bc48c ("ip6_tunnel: add collect_md mode to IPv6 tunnels")
    Signed-off-by: Nikita V. Shirokov <tehnerd@fb.com>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae67e5486b972610648cd8ad1abff4049e7e8b0c
Author: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date:   Fri Dec 22 10:15:20 2017 -0800

    sctp: Replace use of sockets_allocated with specified macro.
    
    
    [ Upstream commit 8cb38a602478e9f806571f6920b0a3298aabf042 ]
    
    The patch(180d8cd942ce) replaces all uses of struct sock fields'
    memory_pressure, memory_allocated, sockets_allocated, and sysctl_mem
    to accessor macros. But the sockets_allocated field of sctp sock is
    not replaced at all. Then replace it now for unifying the code.
    
    Fixes: 180d8cd942ce ("foundations of per-cgroup memory pressure controlling.")
    Cc: Glauber Costa <glommer@parallels.com>
    Signed-off-by: Tonghao Zhang <zhangtonghao@didichuxing.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99cf2daf0da31b0b1853d1ccec9fbabc9d5856ae
Author: Tobias Jordan <Tobias.Jordan@elektrobit.com>
Date:   Wed Dec 6 15:23:23 2017 +0100

    net: mvmdio: disable/unprepare clocks in EPROBE_DEFER case
    
    
    [ Upstream commit 589bf32f09852041fbd3b7ce1a9e703f95c230ba ]
    
    add appropriate calls to clk_disable_unprepare() by jumping to out_mdio
    in case orion_mdio_probe() returns -EPROBE_DEFER.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Fixes: 3d604da1e954 ("net: mvmdio: get and enable optional clock")
    Signed-off-by: Tobias Jordan <Tobias.Jordan@elektrobit.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f75f910ffa90af17eeca18714847eaa0f16cb4ad
Author: Mohamed Ghannam <simo.ghannam@gmail.com>
Date:   Sun Dec 10 03:50:58 2017 +0000

    net: ipv4: fix for a race condition in raw_sendmsg
    
    
    [ Upstream commit 8f659a03a0ba9289b9aeb9b4470e6fb263d6f483 ]
    
    inet->hdrincl is racy, and could lead to uninitialized stack pointer
    usage, so its value should be read only once.
    
    Fixes: c008ba5bdc9f ("ipv4: Avoid reading user iov twice after raw_probe_proto_opt")
    Signed-off-by: Mohamed Ghannam <simo.ghannam@gmail.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 484369ff9715ed4f7a2d7b3da27249674a25a523
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Dec 15 15:21:50 2017 -0600

    tg3: Fix rx hang on MTU change with 5717/5719
    
    
    [ Upstream commit 748a240c589824e9121befb1cba5341c319885bc ]
    
    This fixes a hang issue seen when changing the MTU size from 1500 MTU
    to 9000 MTU on both 5717 and 5719 chips. In discussion with Broadcom,
    they've indicated that these chipsets have the same phy as the 57766
    chipset, so the same workarounds apply. This has been tested by IBM
    on both Power 8 and Power 9 systems as well as by Broadcom on x86
    hardware and has been confirmed to resolve the hang issue.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7887a700ce613bcf200edda53ca824d691c6ee8f
Author: Christoph Paasch <cpaasch@apple.com>
Date:   Mon Dec 11 00:05:46 2017 -0800

    tcp md5sig: Use skb's saddr when replying to an incoming segment
    
    
    [ Upstream commit 30791ac41927ebd3e75486f9504b6d2280463bf0 ]
    
    The MD5-key that belongs to a connection is identified by the peer's
    IP-address. When we are in tcp_v4(6)_reqsk_send_ack(), we are replying
    to an incoming segment from tcp_check_req() that failed the seq-number
    checks.
    
    Thus, to find the correct key, we need to use the skb's saddr and not
    the daddr.
    
    This bug seems to have been there since quite a while, but probably got
    unnoticed because the consequences are not catastrophic. We will call
    tcp_v4_reqsk_send_ack only to send a challenge-ACK back to the peer,
    thus the connection doesn't really fail.
    
    Fixes: 9501f9722922 ("tcp md5sig: Let the caller pass appropriate key for tcp_v{4,6}_do_calc_md5_hash().")
    Signed-off-by: Christoph Paasch <cpaasch@apple.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 a4bf8efd2bcb233c422adc663552515dc4ee0da8
Author: Neal Cardwell <ncardwell@google.com>
Date:   Thu Dec 7 12:43:30 2017 -0500

    tcp_bbr: record "full bw reached" decision in new full_bw_reached bit
    
    
    [ Upstream commit c589e69b508d29ed8e644dfecda453f71c02ec27 ]
    
    This commit records the "full bw reached" decision in a new
    full_bw_reached bit. This is a pure refactor that does not change the
    current behavior, but enables subsequent fixes and improvements.
    
    In particular, this enables simple and clean fixes because the full_bw
    and full_bw_cnt can be unconditionally zeroed without worrying about
    forgetting that we estimated we filled the pipe in Startup. And it
    enables future improvements because multiple code paths can be used
    for estimating that we filled the pipe in Startup; any new code paths
    only need to set this bit when they think the pipe is full.
    
    Note that this fix intentionally reduces the width of the full_bw_cnt
    counter, since we have never used the most significant bit.
    
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Reviewed-by: Yuchung Cheng <ycheng@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 53288d82188ba3f69731283c78430121c246e737
Author: Avinash Repaka <avinash.repaka@oracle.com>
Date:   Thu Dec 21 20:17:04 2017 -0800

    RDS: Check cmsg_len before dereferencing CMSG_DATA
    
    
    [ Upstream commit 14e138a86f6347c6199f610576d2e11c03bec5f0 ]
    
    RDS currently doesn't check if the length of the control message is
    large enough to hold the required data, before dereferencing the control
    message data. This results in following crash:
    
    BUG: KASAN: stack-out-of-bounds in rds_rdma_bytes net/rds/send.c:1013
    [inline]
    BUG: KASAN: stack-out-of-bounds in rds_sendmsg+0x1f02/0x1f90
    net/rds/send.c:1066
    Read of size 8 at addr ffff8801c928fb70 by task syzkaller455006/3157
    
    CPU: 0 PID: 3157 Comm: syzkaller455006 Not tainted 4.15.0-rc3+ #161
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:53
     print_address_description+0x73/0x250 mm/kasan/report.c:252
     kasan_report_error mm/kasan/report.c:351 [inline]
     kasan_report+0x25b/0x340 mm/kasan/report.c:409
     __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:430
     rds_rdma_bytes net/rds/send.c:1013 [inline]
     rds_sendmsg+0x1f02/0x1f90 net/rds/send.c:1066
     sock_sendmsg_nosec net/socket.c:628 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:638
     ___sys_sendmsg+0x320/0x8b0 net/socket.c:2018
     __sys_sendmmsg+0x1ee/0x620 net/socket.c:2108
     SYSC_sendmmsg net/socket.c:2139 [inline]
     SyS_sendmmsg+0x35/0x60 net/socket.c:2134
     entry_SYSCALL_64_fastpath+0x1f/0x96
    RIP: 0033:0x43fe49
    RSP: 002b:00007fffbe244ad8 EFLAGS: 00000217 ORIG_RAX: 0000000000000133
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 000000000043fe49
    RDX: 0000000000000001 RSI: 000000002020c000 RDI: 0000000000000003
    RBP: 00000000006ca018 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000217 R12: 00000000004017b0
    R13: 0000000000401840 R14: 0000000000000000 R15: 0000000000000000
    
    To fix this, we verify that the cmsg_len is large enough to hold the
    data to be read, before proceeding further.
    
    Reported-by: syzbot <syzkaller-bugs@googlegroups.com>
    Signed-off-by: Avinash Repaka <avinash.repaka@oracle.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b032bde28998122bd38cd9e7ee1e52cd15f4773
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Tue Dec 5 21:29:37 2017 +0200

    ptr_ring: add barriers
    
    
    [ Upstream commit a8ceb5dbfde1092b466936bca0ff3be127ecf38e ]
    
    Users of ptr_ring expect that it's safe to give the
    data structure a pointer and have it be available
    to consumers, but that actually requires an smb_wmb
    or a stronger barrier.
    
    In absence of such barriers and on architectures that reorder writes,
    consumer might read an un=initialized value from an skb pointer stored
    in the skb array.  This was observed causing crashes.
    
    To fix, add memory barriers.  The barrier we use is a wmb, the
    assumption being that producers do not need to read the value so we do
    not need to order these reads.
    
    Reported-by: George Cherian <george.cherian@cavium.com>
    Suggested-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3b56038bab017847ac9e1c5610fc00567b51d00
Author: Shaohua Li <shli@fb.com>
Date:   Wed Dec 20 12:10:21 2017 -0800

    net: reevalulate autoflowlabel setting after sysctl setting
    
    
    [ Upstream commit 513674b5a2c9c7a67501506419da5c3c77ac6f08 ]
    
    sysctl.ip6.auto_flowlabels is default 1. In our hosts, we set it to 2.
    If sockopt doesn't set autoflowlabel, outcome packets from the hosts are
    supposed to not include flowlabel. This is true for normal packet, but
    not for reset packet.
    
    The reason is ipv6_pinfo.autoflowlabel is set in sock creation. Later if
    we change sysctl.ip6.auto_flowlabels, the ipv6_pinfo.autoflowlabel isn't
    changed, so the sock will keep the old behavior in terms of auto
    flowlabel. Reset packet is suffering from this problem, because reset
    packet is sent from a special control socket, which is created at boot
    time. Since sysctl.ipv6.auto_flowlabels is 1 by default, the control
    socket will always have its ipv6_pinfo.autoflowlabel set, even after
    user set sysctl.ipv6.auto_flowlabels to 1, so reset packset will always
    have flowlabel. Normal sock created before sysctl setting suffers from
    the same issue. We can't even turn off autoflowlabel unless we kill all
    socks in the hosts.
    
    To fix this, if IPV6_AUTOFLOWLABEL sockopt is used, we use the
    autoflowlabel setting from user, otherwise we always call
    ip6_default_np_autolabel() which has the new settings of sysctl.
    
    Note, this changes behavior a little bit. Before commit 42240901f7c4
    (ipv6: Implement different admin modes for automatic flow labels), the
    autoflowlabel behavior of a sock isn't sticky, eg, if sysctl changes,
    existing connection will change autoflowlabel behavior. After that
    commit, autoflowlabel behavior is sticky in the whole life of the sock.
    With this patch, the behavior isn't sticky again.
    
    Cc: Martin KaFai Lau <kafai@fb.com>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: Tom Herbert <tom@quantonium.net>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8baa58c5d536462977907773d351d656b8b6dd1e
Author: Sebastian Sjoholm <ssjoholm@mac.com>
Date:   Mon Dec 11 21:51:14 2017 +0100

    net: qmi_wwan: add Sierra EM7565 1199:9091
    
    
    [ Upstream commit aceef61ee56898cfa7b6960fb60b9326c3860441 ]
    
    Sierra Wireless EM7565 is an Qualcomm MDM9x50 based M.2 modem.
    The USB id is added to qmi_wwan.c to allow QMI communication
    with the EM7565.
    
    Signed-off-by: Sebastian Sjoholm <ssjoholm@mac.com>
    Acked-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b18782288a2f1c2a25e85d2553c15ea83bb5802
Author: Kevin Cernekee <cernekee@chromium.org>
Date:   Wed Dec 6 12:12:27 2017 -0800

    netlink: Add netns check on taps
    
    
    [ Upstream commit 93c647643b48f0131f02e45da3bd367d80443291 ]
    
    Currently, a nlmon link inside a child namespace can observe systemwide
    netlink activity.  Filter the traffic so that nlmon can only sniff
    netlink messages from its own netns.
    
    Test case:
    
        vpnns -- bash -c "ip link add nlmon0 type nlmon; \
                          ip link set nlmon0 up; \
                          tcpdump -i nlmon0 -q -w /tmp/nlmon.pcap -U" &
        sudo ip xfrm state add src 10.1.1.1 dst 10.1.1.2 proto esp \
            spi 0x1 mode transport \
            auth sha1 0x6162633132330000000000000000000000000000 \
            enc aes 0x00000000000000000000000000000000
        grep --binary abc123 /tmp/nlmon.pcap
    
    Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c1a0b2e2bac6a35121d9ea9547b4b66d6f1380b
Author: Kevin Cernekee <cernekee@chromium.org>
Date:   Mon Dec 11 11:13:45 2017 -0800

    net: igmp: Use correct source address on IGMPv3 reports
    
    
    [ Upstream commit a46182b00290839fa3fa159d54fd3237bd8669f0 ]
    
    Closing a multicast socket after the final IPv4 address is deleted
    from an interface can generate a membership report that uses the
    source IP from a different interface.  The following test script, run
    from an isolated netns, reproduces the issue:
    
        #!/bin/bash
    
        ip link add dummy0 type dummy
        ip link add dummy1 type dummy
        ip link set dummy0 up
        ip link set dummy1 up
        ip addr add 10.1.1.1/24 dev dummy0
        ip addr add 192.168.99.99/24 dev dummy1
    
        tcpdump -U -i dummy0 &
        socat EXEC:"sleep 2" \
            UDP4-DATAGRAM:239.101.1.68:8889,ip-add-membership=239.0.1.68:10.1.1.1 &
    
        sleep 1
        ip addr del 10.1.1.1/24 dev dummy0
        sleep 5
        kill %tcpdump
    
    RFC 3376 specifies that the report must be sent with a valid IP source
    address from the destination subnet, or from address 0.0.0.0.  Add an
    extra check to make sure this is the case.
    
    Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 930882f8b83105eb6e4827bf87b38ecaa47c404a
Author: Fugang Duan <fugang.duan@nxp.com>
Date:   Fri Dec 22 17:12:09 2017 +0800

    net: fec: unmap the xmit buffer that are not transferred by DMA
    
    
    [ Upstream commit 178e5f57a8d8f8fc5799a624b96fc31ef9a29ffa ]
    
    The enet IP only support 32 bit, it will use swiotlb buffer to do dma
    mapping when xmit buffer DMA memory address is bigger than 4G in i.MX
    platform. After stress suspend/resume test, it will print out:
    
    log:
    [12826.352864] fec 5b040000.ethernet: swiotlb buffer is full (sz: 191 bytes)
    [12826.359676] DMA: Out of SW-IOMMU space for 191 bytes at device 5b040000.ethernet
    [12826.367110] fec 5b040000.ethernet eth0: Tx DMA memory map failed
    
    The issue is that the ready xmit buffers that are dma mapped but DMA still
    don't copy them into fifo, once MAC restart, these DMA buffers are not unmapped.
    So it should check the dma mapping buffer and unmap them.
    
    Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6d7cdbb028506040b951768565892a4eff0a330
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Dec 11 07:03:38 2017 -0800

    ipv6: mcast: better catch silly mtu values
    
    
    [ Upstream commit b9b312a7a451e9c098921856e7cfbc201120e1a7 ]
    
    syzkaller reported crashes in IPv6 stack [1]
    
    Xin Long found that lo MTU was set to silly values.
    
    IPv6 stack reacts to changes to small MTU, by disabling itself under
    RTNL.
    
    But there is a window where threads not using RTNL can see a wrong
    device mtu. This can lead to surprises, in mld code where it is assumed
    the mtu is suitable.
    
    Fix this by reading device mtu once and checking IPv6 minimal MTU.
    
    [1]
     skbuff: skb_over_panic: text:0000000010b86b8d len:196 put:20
     head:000000003b477e60 data:000000000e85441e tail:0xd4 end:0xc0 dev:lo
     ------------[ cut here ]------------
     kernel BUG at net/core/skbuff.c:104!
     invalid opcode: 0000 [#1] SMP KASAN
     Dumping ftrace buffer:
        (ftrace buffer empty)
     Modules linked in:
     CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.15.0-rc2-mm1+ #39
     Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
     Google 01/01/2011
     RIP: 0010:skb_panic+0x15c/0x1f0 net/core/skbuff.c:100
     RSP: 0018:ffff8801db307508 EFLAGS: 00010286
     RAX: 0000000000000082 RBX: ffff8801c517e840 RCX: 0000000000000000
     RDX: 0000000000000082 RSI: 1ffff1003b660e61 RDI: ffffed003b660e95
     RBP: ffff8801db307570 R08: 1ffff1003b660e23 R09: 0000000000000000
     R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff85bd4020
     R13: ffffffff84754ed2 R14: 0000000000000014 R15: ffff8801c4e26540
     FS:  0000000000000000(0000) GS:ffff8801db300000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000463610 CR3: 00000001c6698000 CR4: 00000000001406e0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     Call Trace:
      <IRQ>
      skb_over_panic net/core/skbuff.c:109 [inline]
      skb_put+0x181/0x1c0 net/core/skbuff.c:1694
      add_grhead.isra.24+0x42/0x3b0 net/ipv6/mcast.c:1695
      add_grec+0xa55/0x1060 net/ipv6/mcast.c:1817
      mld_send_cr net/ipv6/mcast.c:1903 [inline]
      mld_ifc_timer_expire+0x4d2/0x770 net/ipv6/mcast.c:2448
      call_timer_fn+0x23b/0x840 kernel/time/timer.c:1320
      expire_timers kernel/time/timer.c:1357 [inline]
      __run_timers+0x7e1/0xb60 kernel/time/timer.c:1660
      run_timer_softirq+0x4c/0xb0 kernel/time/timer.c:1686
      __do_softirq+0x29d/0xbb2 kernel/softirq.c:285
      invoke_softirq kernel/softirq.c:365 [inline]
      irq_exit+0x1d3/0x210 kernel/softirq.c:405
      exiting_irq arch/x86/include/asm/apic.h:540 [inline]
      smp_apic_timer_interrupt+0x16b/0x700 arch/x86/kernel/apic/apic.c:1052
      apic_timer_interrupt+0xa9/0xb0 arch/x86/entry/entry_64.S:920
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Tested-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2f78bf8ca3aa18e51f1de41093db5adae2c5f34
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Dec 11 07:17:39 2017 -0800

    ipv4: igmp: guard against silly MTU values
    
    
    [ Upstream commit b5476022bbada3764609368f03329ca287528dc8 ]
    
    IPv4 stack reacts to changes to small MTU, by disabling itself under
    RTNL.
    
    But there is a window where threads not using RTNL can see a wrong
    device mtu. This can lead to surprises, in igmp code where it is
    assumed the mtu is suitable.
    
    Fix this by reading device mtu once and checking IPv4 minimal MTU.
    
    This patch adds missing IPV4_MIN_MTU define, to not abuse
    ETH_MIN_MTU anymore.
    
    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 b929ccccbc8c22736d1fd722da181e275465f5a6
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri Dec 29 17:34:43 2017 -0800

    kbuild: add '-fno-stack-check' to kernel build options
    
    commit 3ce120b16cc548472f80cf8644f90eda958cf1b6 upstream.
    
    It appears that hardened gentoo enables "-fstack-check" by default for
    gcc.
    
    That doesn't work _at_all_ for the kernel, because the kernel stack
    doesn't act like a user stack at all: it's much smaller, and it doesn't
    auto-expand on use.  So the extra "probe one page below the stack" code
    generated by -fstack-check just breaks the kernel in horrible ways,
    causing infinite double faults etc.
    
    [ I have to say, that the particular code gcc generates looks very
      stupid even for user space where it works, but that's a separate
      issue.  ]
    
    Reported-and-tested-by: Alexander Tsoy <alexander@tsoy.me>
    Reported-and-tested-by: Toralf Förster <toralf.foerster@gmx.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04bdf71d9f7412364e9bae93f321e6bf776cd1d4
Author: Andy Lutomirski <luto@kernel.org>
Date:   Sun Oct 8 21:53:05 2017 -0700

    x86/mm/64: Fix reboot interaction with CR4.PCIDE
    
    commit 924c6b900cfdf376b07bccfd80e62b21914f8a5a upstream.
    
    Trying to reboot via real mode fails with PCID on: long mode cannot
    be exited while CR4.PCIDE is set.  (No, I have no idea why, but the
    SDM and actual CPUs are in agreement here.)  The result is a GPF and
    a hang instead of a reboot.
    
    I didn't catch this in testing because neither my computer nor my VM
    reboots this way.  I can trigger it with reboot=bios, though.
    
    Fixes: 660da7c9228f ("x86/mm: Enable CR4.PCIDE on supported systems")
    Reported-and-tested-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Link: https://lkml.kernel.org/r/f1e7d965998018450a7a70c2823873686a8b21c0.1507524746.git.luto@kernel.org
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b52f937eccd4c68000ba80cd03609bcf1f97c141
Author: Andy Lutomirski <luto@kernel.org>
Date:   Thu Jun 29 08:53:21 2017 -0700

    x86/mm: Enable CR4.PCIDE on supported systems
    
    commit 660da7c9228f685b2ebe664f9fd69aaddcc420b5 upstream.
    
    We can use PCID if the CPU has PCID and PGE and we're not on Xen.
    
    By itself, this has no effect. A followup patch will start using PCID.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Nadav Amit <nadav.amit@gmail.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/6327ecd907b32f79d5aa0d466f04503bbec5df88.1498751203.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6a29320de005792c06f2deec2c77b19c42d1e6a
Author: Andy Lutomirski <luto@kernel.org>
Date:   Thu Jun 29 08:53:20 2017 -0700

    x86/mm: Add the 'nopcid' boot option to turn off PCID
    
    commit 0790c9aad84901ca1bdc14746175549c8b5da215 upstream.
    
    The parameter is only present on x86_64 systems to save a few bytes,
    as PCID is always disabled on x86_32.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Nadav Amit <nadav.amit@gmail.com>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/8bbb2e65bcd249a5f18bfb8128b4689f08ac2b60.1498751203.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e7f3d8875ee92983bd754982af7f4f044dd057d
Author: Andy Lutomirski <luto@kernel.org>
Date:   Thu Jun 29 08:53:19 2017 -0700

    x86/mm: Disable PCID on 32-bit kernels
    
    commit cba4671af7550e008f7a7835f06df0763825bf3e upstream.
    
    32-bit kernels on new hardware will see PCID in CPUID, but PCID can
    only be used in 64-bit mode.  Rather than making all PCID code
    conditional, just disable the feature on 32-bit builds.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Nadav Amit <nadav.amit@gmail.com>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/2e391769192a4d31b808410c383c6bf0734bc6ea.1498751203.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e5daacf65173987436bad6ab9039a05f9545cdd
Author: Andy Lutomirski <luto@kernel.org>
Date:   Sun May 28 10:00:14 2017 -0700

    x86/mm: Remove the UP asm/tlbflush.h code, always use the (formerly) SMP code
    
    commit ce4a4e565f5264909a18c733b864c3f74467f69e upstream.
    
    The UP asm/tlbflush.h generates somewhat nicer code than the SMP version.
    Aside from that, it's fallen quite a bit behind the SMP code:
    
     - flush_tlb_mm_range() didn't flush individual pages if the range
       was small.
    
     - The lazy TLB code was much weaker.  This usually wouldn't matter,
       but, if a kernel thread flushed its lazy "active_mm" more than
       once (due to reclaim or similar), it wouldn't be unlazied and
       would instead pointlessly flush repeatedly.
    
     - Tracepoints were missing.
    
    Aside from that, simply having the UP code around was a maintanence
    burden, since it means that any change to the TLB flush code had to
    make sure not to break it.
    
    Simplify everything by deleting the UP code.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Borislav Petkov <bpetkov@suse.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Nadav Amit <nadav.amit@gmail.com>
    Cc: Nadav Amit <namit@vmware.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a94af050080f3301eecb4e7f7bbe59899568446d
Author: Andy Lutomirski <luto@kernel.org>
Date:   Mon May 22 15:30:01 2017 -0700

    x86/mm: Reimplement flush_tlb_page() using flush_tlb_mm_range()
    
    commit ca6c99c0794875c6d1db6e22f246699691ab7e6b upstream.
    
    flush_tlb_page() was very similar to flush_tlb_mm_range() except that
    it had a couple of issues:
    
     - It was missing an smp_mb() in the case where
       current->active_mm != mm.  (This is a longstanding bug reported by Nadav Amit)
    
     - It was missing tracepoints and vm counter updates.
    
    The only reason that I can see for keeping it at as a separate
    function is that it could avoid a few branches that
    flush_tlb_mm_range() needs to decide to flush just one page.  This
    hardly seems worthwhile.  If we decide we want to get rid of those
    branches again, a better way would be to introduce an
    __flush_tlb_mm_range() helper and make both flush_tlb_page() and
    flush_tlb_mm_range() use it.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Borislav Petkov <bpetkov@suse.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Nadav Amit <nadav.amit@gmail.com>
    Cc: Nadav Amit <namit@vmware.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/3cc3847cf888d8907577569b8bac3f01992ef8f9.1495492063.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 113980c002eb092a1f947389c933740193ada766
Author: Andy Lutomirski <luto@kernel.org>
Date:   Sat Apr 22 00:01:21 2017 -0700

    x86/mm: Make flush_tlb_mm_range() more predictable
    
    commit ce27374fabf553153c3f53efcaa9bfab9216bd8c upstream.
    
    I'm about to rewrite the function almost completely, but first I
    want to get a functional change out of the way.  Currently, if
    flush_tlb_mm_range() does not flush the local TLB at all, it will
    never do individual page flushes on remote CPUs.  This seems to be
    an accident, and preserving it will be awkward.  Let's change it
    first so that any regressions in the rewrite will be easier to
    bisect and so that the rewrite can attempt to change no visible
    behavior at all.
    
    The fix is simple: we can simply avoid short-circuiting the
    calculation of base_pages_to_flush.
    
    As a side effect, this also eliminates a potential corner case: if
    tlb_single_page_flush_ceiling == TLB_FLUSH_ALL, flush_tlb_mm_range()
    could have ended up flushing the entire address space one page at a
    time.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Acked-by: Dave Hansen <dave.hansen@intel.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Nadav Amit <namit@vmware.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/4b29b771d9975aad7154c314534fec235618175a.1492844372.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 219acedb061c56a46e5cf562cb072cd2815a1263
Author: Andy Lutomirski <luto@kernel.org>
Date:   Sat Apr 22 00:01:20 2017 -0700

    x86/mm: Remove flush_tlb() and flush_tlb_current_task()
    
    commit 29961b59a51f8c6838a26a45e871a7ed6771809b upstream.
    
    I was trying to figure out what how flush_tlb_current_task() would
    possibly work correctly if current->mm != current->active_mm, but I
    realized I could spare myself the effort: it has no callers except
    the unused flush_tlb() macro.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Nadav Amit <namit@vmware.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/e52d64c11690f85e9f1d69d7b48cc2269cd2e94b.1492844372.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72b812d5b874893070f81afa2d4b4ccc7f0efa5f
Author: Andy Lutomirski <luto@kernel.org>
Date:   Sat Apr 22 00:01:19 2017 -0700

    x86/vm86/32: Switch to flush_tlb_mm_range() in mark_screen_rdonly()
    
    commit 9ccee2373f0658f234727700e619df097ba57023 upstream.
    
    mark_screen_rdonly() is the last remaining caller of flush_tlb().
    flush_tlb_mm_range() is potentially faster and isn't obsolete.
    
    Compile-tested only because I don't know whether software that uses
    this mechanism even exists.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Nadav Amit <namit@vmware.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/791a644076fc3577ba7f7b7cafd643cc089baa7d.1492844372.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65ca46e5fe123ebd5128f0af1eaaef35251d4bc4
Author: Hui Wang <hui.wang@canonical.com>
Date:   Fri Dec 22 11:17:45 2017 +0800

    ALSA: hda - fix headset mic detection issue on a Dell machine
    
    commit 285d5ddcffafa5d5e68c586f4c9eaa8b24a2897d upstream.
    
    It has the codec alc256, and add its pin definition to pin quirk
    table to let it apply ALC255_FIXUP_DELL1_MIC_NO_PRESENCE.
    
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1dbcd823a302fa90766ca4eb80374031d4dea72
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Dec 22 10:45:07 2017 +0100

    ALSA: hda: Drop useless WARN_ON()
    
    commit a36c2638380c0a4676647a1f553b70b20d3ebce1 upstream.
    
    Since the commit 97cc2ed27e5a ("ALSA: hda - Fix yet another i915
    pointer leftover in error path") cleared hdac_acomp pointer, the
    WARN_ON() non-NULL check in snd_hdac_i915_register_notifier() may give
    a false-positive warning, as the function gets called no matter
    whether the component is registered or not.  For fixing it, let's get
    rid of the spurious WARN_ON().
    
    Fixes: 97cc2ed27e5a ("ALSA: hda - Fix yet another i915 pointer leftover in error path")
    Reported-by: Kouta Okamoto <kouta.okamoto@toshiba.co.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d30d1761bc433d5ab5b620129b0efa3d4a7c6e52
Author: Andrew F. Davis <afd@ti.com>
Date:   Wed Nov 29 15:32:46 2017 -0600

    ASoC: tlv320aic31xx: Fix GPIO1 register definition
    
    commit 737e0b7b67bdfe24090fab2852044bb283282fc5 upstream.
    
    GPIO1 control register is number 51, fix this here.
    
    Fixes: bafcbfe429eb ("ASoC: tlv320aic31xx: Make the register values human readable")
    Signed-off-by: Andrew F. Davis <afd@ti.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b04640a450d3306eb350ef758336ce7385471646
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Nov 13 12:12:56 2017 +0100

    ASoC: twl4030: fix child-node lookup
    
    commit 15f8c5f2415bfac73f33a14bcd83422bcbfb5298 upstream.
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.
    
    To make things worse, the parent codec node was also prematurely freed,
    while the child node was leaked.
    
    Fixes: 2d6d649a2e0f ("ASoC: twl4030: Support for DT booted kernel")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00add00ed2c0d59aceaf83981afc00228f357387
Author: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Date:   Mon Nov 20 23:14:55 2017 +0100

    ASoC: fsl_ssi: AC'97 ops need regmap, clock and cleaning up on failure
    
    commit 695b78b548d8a26288f041e907ff17758df9e1d5 upstream.
    
    AC'97 ops (register read / write) need SSI regmap and clock, so they have
    to be set after them.
    
    We also need to set these ops back to NULL if we fail the probe.
    
    Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
    Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35f87d45cba354936430f93feba7b46edaf35e5c
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Nov 13 12:12:55 2017 +0100

    ASoC: da7218: fix fix child-node lookup
    
    commit bc6476d6c1edcb9b97621b5131bd169aa81f27db upstream.
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.
    
    To make things worse, the parent codec node was also prematurely freed.
    
    Fixes: 4d50934abd22 ("ASoC: da7218: Add da7218 codec driver")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 125e81b5afcb50dc48c7c2058631e8fd2b10a1ba
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Fri Dec 8 16:15:20 2017 +0000

    ASoC: wm_adsp: Fix validation of firmware and coeff lengths
    
    commit 50dd2ea8ef67a1617e0c0658bcbec4b9fb03b936 upstream.
    
    The checks for whether another region/block header could be present
    are subtracting the size from the current offset.  Obviously we should
    instead subtract the offset from the size.
    
    The checks for whether the region/block data fit in the file are
    adding the data size to the current offset and header size, without
    checking for integer overflow.  Rearrange these so that overflow is
    impossible.
    
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Tested-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72d5e020c0ef77ba86f2a5ff37620b65ba7d5daf
Author: Steve Wise <swise@opengridcomputing.com>
Date:   Mon Dec 18 13:10:00 2017 -0800

    iw_cxgb4: Only validate the MSN for successful completions
    
    commit f55688c45442bc863f40ad678c638785b26cdce6 upstream.
    
    If the RECV CQE is in error, ignore the MSN check.  This was causing
    recvs that were flushed into the sw cq to be completed with the wrong
    status (BAD_MSN instead of FLUSHED).
    
    Signed-off-by: Steve Wise <swise@opengridcomputing.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e0d458c315ab2bee425212725aae841e0f6dd6a
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Fri Dec 22 20:32:35 2017 -0500

    ring-buffer: Mask out the info bits when returning buffer page length
    
    commit 45d8b80c2ac5d21cd1e2954431fb676bc2b1e099 upstream.
    
    Two info bits were added to the "commit" part of the ring buffer data page
    when returned to be consumed. This was to inform the user space readers that
    events have been missed, and that the count may be stored at the end of the
    page.
    
    What wasn't handled, was the splice code that actually called a function to
    return the length of the data in order to zero out the rest of the page
    before sending it up to user space. These data bits were returned with the
    length making the value negative, and that negative value was not checked.
    It was compared to PAGE_SIZE, and only used if the size was less than
    PAGE_SIZE. Luckily PAGE_SIZE is unsigned long which made the compare an
    unsigned compare, meaning the negative size value did not end up causing a
    large portion of memory to be randomly zeroed out.
    
    Fixes: 66a8cb95ed040 ("ring-buffer: Add place holder recording of dropped events")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81e155e7b023dd8967ddead36edf8a6a0e2ba72b
Author: Jing Xia <jing.xia@spreadtrum.com>
Date:   Tue Dec 26 15:12:53 2017 +0800

    tracing: Fix crash when it fails to alloc ring buffer
    
    commit 24f2aaf952ee0b59f31c3a18b8b36c9e3d3c2cf5 upstream.
    
    Double free of the ring buffer happens when it fails to alloc new
    ring buffer instance for max_buffer if TRACER_MAX_TRACE is configured.
    The root cause is that the pointer is not set to NULL after the buffer
    is freed in allocate_trace_buffers(), and the freeing of the ring
    buffer is invoked again later if the pointer is not equal to Null,
    as:
    
    instance_mkdir()
        |-allocate_trace_buffers()
            |-allocate_trace_buffer(tr, &tr->trace_buffer...)
            |-allocate_trace_buffer(tr, &tr->max_buffer...)
    
              // allocate fail(-ENOMEM),first free
              // and the buffer pointer is not set to null
            |-ring_buffer_free(tr->trace_buffer.buffer)
    
           // out_free_tr
        |-free_trace_buffers()
            |-free_trace_buffer(&tr->trace_buffer);
    
                  //if trace_buffer is not null, free again
                |-ring_buffer_free(buf->buffer)
                    |-rb_free_cpu_buffer(buffer->buffers[cpu])
                        // ring_buffer_per_cpu is null, and
                        // crash in ring_buffer_per_cpu->pages
    
    Link: http://lkml.kernel.org/r/20171226071253.8968-1-chunyan.zhang@spreadtrum.com
    
    Fixes: 737223fbca3b1 ("tracing: Consolidate buffer allocation code")
    Signed-off-by: Jing Xia <jing.xia@spreadtrum.com>
    Signed-off-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5dc4cd2688e39b0286e9a4b815c9bf5e71b5a685
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Tue Dec 26 20:07:34 2017 -0500

    tracing: Fix possible double free on failure of allocating trace buffer
    
    commit 4397f04575c44e1440ec2e49b6302785c95fd2f8 upstream.
    
    Jing Xia and Chunyan Zhang reported that on failing to allocate part of the
    tracing buffer, memory is freed, but the pointers that point to them are not
    initialized back to NULL, and later paths may try to free the freed memory
    again. Jing and Chunyan fixed one of the locations that does this, but
    missed a spot.
    
    Link: http://lkml.kernel.org/r/20171226071253.8968-1-chunyan.zhang@spreadtrum.com
    
    Fixes: 737223fbca3b1 ("tracing: Consolidate buffer allocation code")
    Reported-by: Jing Xia <jing.xia@spreadtrum.com>
    Reported-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6edea15d120c6e18b6383969e35d6a9683b31d2c
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Fri Dec 22 20:38:57 2017 -0500

    tracing: Remove extra zeroing out of the ring buffer page
    
    commit 6b7e633fe9c24682df550e5311f47fb524701586 upstream.
    
    The ring_buffer_read_page() takes care of zeroing out any extra data in the
    page that it returns. There's no need to zero it out again from the
    consumer. It was removed from one consumer of this function, but
    read_buffers_splice_read() did not remove it, and worse, it contained a
    nasty bug because of it.
    
    Fixes: 2711ca237a084 ("ring-buffer: Move zeroing out excess in page to ring buffer code")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d16a1315add12386894e7dc7bc86454e4f4b79d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Dec 31 14:13:42 2017 +0100

    sync objtool's copy of x86-opcode-map.txt
    
    When building objtool, we get the warning:
            warning: objtool: x86 instruction decoder differs from kernel
    
    That's due to commit 2816c0455cea088f07a210f8a00701a82a78aa9c which was
    commit 12a78d43de767eaf8fb272facb7a7b6f2dc6a9df upstream that modified
    arch/x86/lib/x86-opcode-map.txt without also updating the objtool copy.
    The objtool copy was updated in a much larger patch upstream, but we
    don't need all of that here, so just update the single file.
    
    If this gets too annoying, I'll just end up doing what we did for 4.14
    and backport the whole series to keep this from happening again, but as
    this seems to be rare in the 4.9-stable series, this single patch should
    be fine.
    
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>