commit e2a75b6d2e9de22858bb2bfa14fea56a2c6e4761
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri May 25 16:46:20 2018 +0200

    Linux 4.16.12

commit 9951b2969b301baf846e52e0c8a0c20cb05eb17d
Author: James Hogan <jhogan@kernel.org>
Date:   Tue Jan 16 14:45:21 2018 +0000

    rtc: goldfish: Add missing MODULE_LICENSE
    
    [ Upstream commit 82d632b85eb89f97051530f556cb49ee1c04bde7 ]
    
    Fix the following warning in MIPS allmodconfig by adding a
    MODULE_LICENSE() at the end of rtc-goldfish.c, based on the file header
    comment which says GNU General Public License version 2:
    
    WARNING: modpost: missing MODULE_LICENSE() in drivers/rtc/rtc-goldfish.o
    
    Fixes: f22d9cdcb5eb ("rtc: goldfish: Add RTC driver for Android emulator")
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Cc: Miodrag Dinic <miodrag.dinic@mips.com>
    Cc: Alessandro Zummo <a.zummo@towertech.it>
    Cc: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Cc: linux-rtc@vger.kernel.org
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ee468a5d38ca0f60a24f46875929ad8bd68b2df
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Mon Feb 12 23:47:49 2018 +0100

    rtc: rp5c01: fix possible race condition
    
    [ Upstream commit bcdd559268039d8340d38fa58668393596e29fdc ]
    
    The probe function is not allowed to fail after registering the RTC because
    the following may happen:
    
    CPU0:                                CPU1:
    sys_load_module()
     do_init_module()
      do_one_initcall()
       cmos_do_probe()
        rtc_device_register()
         __register_chrdev()
         cdev->owner = struct module*
                                         open("/dev/rtc0")
        rtc_device_unregister()
      module_put()
      free_module()
       module_free(mod->module_core)
       /* struct module *module is now
          freed */
                                          chrdev_open()
                                           spin_lock(cdev_lock)
                                           cdev_get()
                                            try_module_get()
                                             module_is_live()
                                             /* dereferences already
                                                freed struct module* */
    
    Switch to devm_rtc_allocate_device/rtc_register_device to register the rtc
    as late as possible.
    
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81abaeb29ed38ccbff015c98a9c6e17ca67a8375
Author: Colin Ian King <colin.king@canonical.com>
Date:   Thu Feb 15 19:36:14 2018 +0000

    rtc: tx4939: avoid unintended sign extension on a 24 bit shift
    
    [ Upstream commit 347876ad47b9923ce26e686173bbf46581802ffa ]
    
    The shifting of buf[5] by 24 bits to the left will be promoted to
    a 32 bit signed int and then sign-extended to an unsigned long. If
    the top bit of buf[5] is set then all then all the upper bits sec
    end up as also being set because of the sign-extension. Fix this by
    casting buf[5] to an unsigned long before the shift.
    
    Detected by CoverityScan, CID#1465292 ("Unintended sign extension")
    
    Fixes: 0e1492330cd2 ("rtc: add rtc-tx4939 driver")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bd8a5978ff44a26ee8e42c47b35eb2fee820d3d
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Sun Feb 25 21:14:31 2018 +0100

    rtc: m41t80: fix race conditions
    
    [ Upstream commit 10d0c768cc6d581523d673b9d1b54213f8a5eb24 ]
    
    The IRQ is requested before the struct rtc is allocated and registered, but
    this struct is used in the IRQ handler, leading to:
    
    Unable to handle kernel NULL pointer dereference at virtual address 0000017c
    pgd = a38a2f9b
    [0000017c] *pgd=00000000
    Internal error: Oops: 5 [#1] ARM
    Modules linked in:
    CPU: 0 PID: 613 Comm: irq/48-m41t80 Not tainted 4.16.0-rc1+ #42
    Hardware name: Atmel SAMA5
    PC is at mutex_lock+0x14/0x38
    LR is at m41t80_handle_irq+0x1c/0x9c
    pc : [<c06e864c>]    lr : [<c04b70f0>]    psr: 20000013
    sp : dec73f30  ip : 00000000  fp : dec56d98
    r10: df437cf0  r9 : c0a03008  r8 : c0145ffc
    r7 : df5c4300  r6 : dec568d0  r5 : df593000  r4 : 0000017c
    r3 : df592800  r2 : 60000013  r1 : df593000  r0 : 0000017c
    Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    Control: 10c53c7d  Table: 20004059  DAC: 00000051
    Process irq/48-m41t80 (pid: 613, stack limit = 0xb52d091e)
    Stack: (0xdec73f30 to 0xdec74000)
    3f20:                                     dec56840 df5c4300 00000001 df5c4300
    3f40: c0145ffc c0146018 dec56840 ffffe000 00000001 c0146290 dec567c0 00000000
    3f60: c0146084 ed7c9a62 c014615c dec56d80 dec567c0 00000000 dec72000 dec56840
    3f80: c014615c c012ffc0 dec72000 dec567c0 c012fe80 00000000 00000000 00000000
    3fa0: 00000000 00000000 00000000 c01010e8 00000000 00000000 00000000 00000000
    3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 29282726 2d2c2b2a
    [<c06e864c>] (mutex_lock) from [<c04b70f0>] (m41t80_handle_irq+0x1c/0x9c)
    [<c04b70f0>] (m41t80_handle_irq) from [<c0146018>] (irq_thread_fn+0x1c/0x54)
    [<c0146018>] (irq_thread_fn) from [<c0146290>] (irq_thread+0x134/0x1c0)
    [<c0146290>] (irq_thread) from [<c012ffc0>] (kthread+0x140/0x148)
    [<c012ffc0>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
    Exception stack(0xdec73fb0 to 0xdec73ff8)
    3fa0:                                     00000000 00000000 00000000 00000000
    3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    3fe0: 00000000 00000000 00000000 00000000 00000013 00000000
    Code: e3c33d7f e3c3303f f5d0f000 e593300c (e1901f9f)
    ---[ end trace 22b027302eb7c604 ]---
    genirq: exiting task "irq/48-m41t80" (613) is an active IRQ thread (irq 48)
    
    Also, there is another possible race condition. The probe function is not
    allowed to fail after the RTC is registered because the following may
    happen:
    
    CPU0:                                CPU1:
    sys_load_module()
     do_init_module()
      do_one_initcall()
       cmos_do_probe()
        rtc_device_register()
         __register_chrdev()
         cdev->owner = struct module*
                                         open("/dev/rtc0")
        rtc_device_unregister()
      module_put()
      free_module()
       module_free(mod->module_core)
       /* struct module *module is now
          freed */
                                          chrdev_open()
                                           spin_lock(cdev_lock)
                                           cdev_get()
                                            try_module_get()
                                             module_is_live()
                                             /* dereferences already
                                                freed struct module* */
    
    Switch to devm_rtc_allocate_device/rtc_register_device to allocate the rtc
    before requesting the IRQ and register it as late as possible.
    
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab3ecb98965034933ddfce5dac3d741df7dec592
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Wed Feb 21 11:57:05 2018 +0100

    rtc: rk808: fix possible race condition
    
    [ Upstream commit 201fac95e799c3d0304ec724d555e1251b9f6e84 ]
    
    The probe function is not allowed to fail after registering the RTC because
    the following may happen:
    
    CPU0:                                CPU1:
    sys_load_module()
     do_init_module()
      do_one_initcall()
       cmos_do_probe()
        rtc_device_register()
         __register_chrdev()
         cdev->owner = struct module*
                                         open("/dev/rtc0")
        rtc_device_unregister()
      module_put()
      free_module()
       module_free(mod->module_core)
       /* struct module *module is now
          freed */
                                          chrdev_open()
                                           spin_lock(cdev_lock)
                                           cdev_get()
                                            try_module_get()
                                             module_is_live()
                                             /* dereferences already
                                                freed struct module* */
    
    Switch to devm_rtc_allocate_device/rtc_register_device to register the rtc
    as late as possible.
    
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ccad3de43bb4469987e244a44bb619385cb38f4
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Thu Mar 8 23:27:31 2018 +0100

    rtc: hctosys: Ensure system time doesn't overflow time_t
    
    [ Upstream commit b3a5ac42ab18b7d1a8f2f072ca0ee76a3b754a43 ]
    
    On 32bit platforms, time_t is still a signed 32bit long. If it is
    overflowed, userspace and the kernel cant agree on the current system time.
    This causes multiple issues, in particular with systemd:
    https://github.com/systemd/systemd/issues/1143
    
    A good workaround is to simply avoid using hctosys which is something I
    greatly encourage as the time is better set by userspace.
    
    However, many distribution enable it and use systemd which is rendering the
    system unusable in case the RTC holds a date after 2038 (and more so after
    2106). Many drivers have workaround for this case and they should be
    eliminated so there is only one place left to fix when userspace is able to
    cope with dates after the 31bit overflow.
    
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87b750b7576b3f4cdc4b2c06817a7fc0d3a4df50
Author: Bryan O'Donoghue <pure.logic@nexus-software.ie>
Date:   Wed Mar 28 20:14:05 2018 +0100

    rtc: snvs: Fix usage of snvs_rtc_enable
    
    [ Upstream commit 1485991c024603b2fb4ae77beb7a0d741128a48e ]
    
    commit 179a502f8c46 ("rtc: snvs: add Freescale rtc-snvs driver") introduces
    the SNVS RTC driver with a function snvs_rtc_enable().
    
    snvs_rtc_enable() can return an error on the enable path however this
    driver does not currently trap that failure on the probe() path and
    consequently if enabling the RTC fails we encounter a later error spinning
    forever in rtc_write_sync_lp().
    
    [   36.093481] [<c010d630>] (__irq_svc) from [<c0c2e9ec>] (_raw_spin_unlock_irqrestore+0x34/0x44)
    [   36.102122] [<c0c2e9ec>] (_raw_spin_unlock_irqrestore) from [<c072e32c>] (regmap_read+0x4c/0x5c)
    [   36.110938] [<c072e32c>] (regmap_read) from [<c085d0f4>] (rtc_write_sync_lp+0x6c/0x98)
    [   36.118881] [<c085d0f4>] (rtc_write_sync_lp) from [<c085d160>] (snvs_rtc_alarm_irq_enable+0x40/0x4c)
    [   36.128041] [<c085d160>] (snvs_rtc_alarm_irq_enable) from [<c08567b4>] (rtc_timer_do_work+0xd8/0x1a8)
    [   36.137291] [<c08567b4>] (rtc_timer_do_work) from [<c01441b8>] (process_one_work+0x28c/0x76c)
    [   36.145840] [<c01441b8>] (process_one_work) from [<c01446cc>] (worker_thread+0x34/0x58c)
    [   36.153961] [<c01446cc>] (worker_thread) from [<c014aee4>] (kthread+0x138/0x150)
    [   36.161388] [<c014aee4>] (kthread) from [<c0107e14>] (ret_from_fork+0x14/0x20)
    [   36.168635] rcu_sched kthread starved for 2602 jiffies! g496 c495 f0x2 RCU_GP_WAIT_FQS(3) ->state=0x0 ->cpu=0
    [   36.178564] rcu_sched       R  running task        0     8      2 0x00000000
    [   36.185664] [<c0c288b0>] (__schedule) from [<c0c29134>] (schedule+0x3c/0xa0)
    [   36.192739] [<c0c29134>] (schedule) from [<c0c2db80>] (schedule_timeout+0x78/0x4e0)
    [   36.200422] [<c0c2db80>] (schedule_timeout) from [<c01a7ab0>] (rcu_gp_kthread+0x648/0x1864)
    [   36.208800] [<c01a7ab0>] (rcu_gp_kthread) from [<c014aee4>] (kthread+0x138/0x150)
    [   36.216309] [<c014aee4>] (kthread) from [<c0107e14>] (ret_from_fork+0x14/0x20)
    
    This patch fixes by parsing the result of rtc_write_sync_lp() and
    propagating both in the probe and elsewhere. If the RTC doesn't start we
    don't proceed loading the driver and don't get into this loop mess later
    on.
    
    Fixes: 179a502f8c46 ("rtc: snvs: add Freescale rtc-snvs driver")
    Signed-off-by: Bryan O'Donoghue <pure.logic@nexus-software.ie>
    Acked-by: Shawn Guo <shawn.guo@linaro.org>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bdeb5165de7b0f3d4fc5ee23af9cb4c9dc587b9a
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Thu Jan 25 14:30:43 2018 +0100

    serial: altera: ensure port->regshift is honored consistently
    
    [ Upstream commit 0e254963b6ba4d63ac911e79537fea38dd03dc50 ]
    
    Most register accesses in the altera driver honor port->regshift by
    using altera_uart_writel(). There are a few accesses however that were
    missed when the driver was converted to use port->regshift and some
    others were added later in commit 4d9d7d896d77 ("serial: altera_uart:
    add earlycon support").
    
    Fixes: 2780ad42f5fe ("tty: serial: altera_uart: Use port->regshift to store bus shift")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Acked-by: Tobias Klauser <tklauser@distanz.ch>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f315308ee5e55deb25a27331175525d0e77acdd4
Author: Vignesh R <vigneshr@ti.com>
Date:   Thu Feb 8 18:25:41 2018 +0530

    serial: 8250: Don't service RX FIFO if interrupts are disabled
    
    [ Upstream commit 2e9fe539108320820016f78ca7704a7342788380 ]
    
    Currently, data in RX FIFO is read based on UART_LSR register state even
    if RDI and RLSI interrupts are disabled in UART_IER register.
    This is because when IRQ handler is called due to TX FIFO empty event,
    RX FIFO is serviced based on UART_LSR register status instead of
    UART_IIR status. This defeats the purpose of disabling UART RX
    FIFO interrupts during throttling(see, omap_8250_throttle()) as IRQ
    handler continues to drain UART RX FIFO resulting in overflow of buffer
    at tty layer.
    Fix this by making sure that driver drains UART RX FIFO only when
    UART_IIR_RDI is set along with UART_LSR_BI or UART_LSR_DR bits.
    
    Signed-off-by: Vignesh R <vigneshr@ti.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9d60298c45289dd982728687959a3763cbd0969
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:29 2018 +0100

    serial: arc_uart: Fix out-of-bounds access through DT alias
    
    [ Upstream commit f9f5786987e81d166c60833edcb7d1836aa16944 ]
    
    The arc_uart_ports[] array is indexed using a value derived from the
    "serialN" alias in DT, which may lead to an out-of-bounds access.
    
    Fix this by adding a range check.
    
    Note that the array size is defined by a Kconfig symbol
    (CONFIG_SERIAL_ARC_NR_PORTS), so this can even be triggered using a
    legitimate DTB.
    
    Fixes: ea28fd56fcde69af ("serial/arc-uart: switch to devicetree based probing")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca3ecfbd7493a4eb4d6cc2279da917f28496fbf7
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:30 2018 +0100

    serial: fsl_lpuart: Fix out-of-bounds access through DT alias
    
    [ Upstream commit ffab87fdecc655cc676f8be8dd1a2c5e22bd6d47 ]
    
    The lpuart_ports[] array is indexed using a value derived from the
    "serialN" alias in DT, which may lead to an out-of-bounds access.
    
    Fix this by adding a range check.
    
    Fixes: c9e2e946fb0ba5d2 ("tty: serial: add Freescale lpuart driver support")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68e634b1129f2e314d438b8d05e1b233f2e28da7
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:31 2018 +0100

    serial: imx: Fix out-of-bounds access through serial port index
    
    [ Upstream commit 5673444821406dda5fc25e4b52aca419f8065a19 ]
    
    The imx_ports[] array is indexed using a value derived from the
    "serialN" alias in DT, or from platform data, which may lead to an
    out-of-bounds access.
    
    Fix this by adding a range check.
    
    Fixes: ff05967a07225ab6 ("serial/imx: add of_alias_get_id() reference back")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f791ceccb4e543c339e7f2c56ed640634b94dc3
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:32 2018 +0100

    serial: mxs-auart: Fix out-of-bounds access through serial port index
    
    [ Upstream commit dd345a31bfdec350d2593e6de5964e55c7f19c76 ]
    
    The auart_port[] array is indexed using a value derived from the
    "serialN" alias in DT, or from platform data, which may lead to an
    out-of-bounds access.
    
    Fix this by adding a range check.
    
    Fixes: 1ea6607d4cdc9179 ("serial: mxs-auart: Allow device tree probing")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b1cab78b629e8597bc6cc1a6f8952dbcfa1bdbc
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:34 2018 +0100

    serial: samsung: Fix out-of-bounds access through serial port index
    
    [ Upstream commit 49ee23b71877831ac087d6083f6f397dc19c9664 ]
    
    The s3c24xx_serial_ports[] array is indexed using a value derived from
    the "serialN" alias in DT, or from an incrementing probe index, which
    may lead to an out-of-bounds access.
    
    Fix this by adding a range check.
    
    Note that the array size is defined by a Kconfig symbol
    (CONFIG_SERIAL_SAMSUNG_UARTS), so this can even be triggered using
    a legitimate DTB or legitimate board code.
    
    Fixes: 13a9f6c64fdc55eb ("serial: samsung: Consider DT alias when probing ports")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c25a932b9636a0623f2529651b9c6dfbfb23bfd
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:35 2018 +0100

    serial: sh-sci: Fix out-of-bounds access through DT alias
    
    [ Upstream commit 090fa4b0dccfa3d04e1c5ab0fe4eba16e6713895 ]
    
    The sci_ports[] array is indexed using a value derived from the
    "serialN" alias in DT, which may lead to an out-of-bounds access.
    
    Fix this by adding a range check.
    
    Note that the array size is defined by a Kconfig symbol
    (CONFIG_SERIAL_SH_SCI_NR_UARTS), so this can even be triggered using a
    legitimate DTB.
    
    Fixes: 97ed9790c514066b ("serial: sh-sci: Remove unused platform data capabilities field")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd26d0836bcef861e9da32b8a46952d54866b331
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Feb 23 14:38:37 2018 +0100

    serial: xuartps: Fix out-of-bounds access through DT alias
    
    [ Upstream commit e7d75e18d0fc3f7193b65282b651f980c778d935 ]
    
    The cdns_uart_port[] array is indexed using a value derived from the
    "serialN" alias in DT, which may lead to an out-of-bounds access.
    
    Fix this by adding a range check.
    
    Fixes: 928e9263492069ee ("tty: xuartps: Initialize ports according to aliases")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Michal Simek <michal.simek@xilinx.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a4642119ac7e3baa73faa79b51657e679671a07
Author: Gabriel Matni <gabriel.matni@exfo.com>
Date:   Thu Mar 22 19:15:12 2018 +0000

    serial: mvebu-uart: fix tx lost characters
    
    [ Upstream commit c685af1108d7c303f0b901413405d68eaeac4477 ]
    
    Fixes missing characters on kernel console at low baud rates (i.e.9600).
    The driver should poll TX_RDY or TX_FIFO_EMP instead of TX_EMP to ensure
    that the transmitter holding register (THR) is ready to receive a new byte.
    
    TX_EMP tells us when it is possible to send a break sequence via
    SND_BRK_SEQ. While this also indicates that both the THR and the TSR are
    empty, it does not guarantee that a new byte can be written just yet.
    
    Fixes: 30530791a7a0 ("serial: mvebu-uart: initial support for Armada-3700 serial port")
    Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Acked-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Gabriel Matni <gabriel.matni@exfo.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d48ec78eb9aa2aa96321460e573d999179d1e7cc
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Jan 31 12:33:09 2018 -0500

    media: cx25821: prevent out-of-bounds read on array card
    
    [ Upstream commit 67300abdbe9f1717532aaf4e037222762716d0f6 ]
    
    Currently an out of range dev->nr is detected by just reporting the
    issue and later on an out-of-bounds read on array card occurs because
    of this. Fix this by checking the upper range of dev->nr with the size
    of array card (removes the hard coded size), move this check earlier
    and also exit with the error -ENOSYS to avoid the later out-of-bounds
    array read.
    
    Detected by CoverityScan, CID#711191 ("Out-of-bounds-read")
    
    Fixes: commit 02b20b0b4cde ("V4L/DVB (12730): Add conexant cx25821 driver")
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    [hans.verkuil@cisco.com: %ld -> %zd]
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7c622f4e15cadabbff96deef48bab78d55a1717
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Thu Feb 1 02:36:33 2018 -0500

    media: vivid: fix incorrect capabilities for radio
    
    [ Upstream commit 65243386f41d38460bfd4375d231a7c0346d0401 ]
    
    The vivid driver has two custom controls that change the behavior of RDS.
    Depending on the control setting the V4L2_CAP_READWRITE capability is toggled.
    However, after an earlier commit the capability was no longer set correctly.
    This is now fixed.
    
    Fixes: 9765a32cd8 ("vivid: set device_caps in video_device")
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37d683fbfea8e115fe1d2352a6ff448f4f2a265d
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Tue Feb 6 03:02:23 2018 -0500

    media: vb2: Fix videobuf2 to map correct area
    
    [ Upstream commit d13a0139d7874a0577b5955d6eed895517d23b72 ]
    
    Fixes vb2_vmalloc_get_userptr() to ioremap correct area.
    Since the current code does ioremap the page address, if the offset > 0,
    it does not do ioremap the last page and results in kernel panic.
    
    This fixes to pass the size + offset to ioremap so that ioremap
    can map correct area. Also, this uses __pfn_to_phys() to get the physical
    address of given PFN.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Reported-by: Takao Orito <orito.takao@socionext.com>
    Reported-by: Fumihiro ATSUMI <atsumi@infinitegra.co.jp>
    Reviewed-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ab7ffcfa080ffd31d4db2d266375f64105c4f64
Author: Kieran Bingham <kieran.bingham@ideasonboard.com>
Date:   Mon Jan 8 13:14:04 2018 -0500

    media: i2c: adv748x: fix HDMI field heights
    
    [ Upstream commit 9f564184e6cc21a86c26bab920afac1bab7653ff ]
    
    The ADV748x handles interlaced media using V4L2_FIELD_ALTERNATE field
    types.  The correct specification for the height on the mbus is the
    image height, in this instance, the field height.
    
    The AFE component already correctly adjusts the height on the mbus, but
    the HDMI component got left behind.
    
    Adjust the mbus height to correctly describe the image height of the
    fields when processing interlaced video for HDMI pipelines.
    
    Fixes: 3e89586a64df ("media: i2c: adv748x: add adv748x driver")
    
    Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 765c00006085a2b09fc021a7ab1ad22a0485725a
Author: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Date:   Sun Dec 3 05:06:57 2017 -0500

    media: v4l: vsp1: Fix display stalls when requesting too many inputs
    
    [ Upstream commit 5e3e4cb5e24b92773b194aa90066170b12133bc6 ]
    
    Make sure we don't accept more inputs than the hardware can handle. This
    is a temporary fix to avoid display stall, we need to instead allocate
    the BRU or BRS to display pipelines dynamically based on the number of
    planes they each use.
    
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a97f4b43d6def0e96de1cade821ace4c3ae0701
Author: Brad Love <brad@nextdimension.cc>
Date:   Thu Jan 4 19:04:15 2018 -0500

    media: em28xx: Add Hauppauge SoloHD/DualHD bulk models
    
    [ Upstream commit f2a326c928cca1f5e36a3dceaf66e8c6b34e9cb8 ]
    
    Add additional pids to driver list
    
    Signed-off-by: Brad Love <brad@nextdimension.cc>
    Reviewed-by: Michael Ira Krufky <mkrufky@linuxtv.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac186fd7985640e949f3e26f1faaf7641239990b
Author: Brad Love <brad@nextdimension.cc>
Date:   Fri Jan 5 09:57:13 2018 -0500

    media: lgdt3306a: Fix a double kfree on i2c device remove
    
    [ Upstream commit 94448e21cf08b10f7dc7acdaca387594370396b0 ]
    
    Both lgdt33606a_release and lgdt3306a_remove kfree state, but _release is
    called first, then _remove operates on states members before kfree'ing it.
    This can lead to random oops/GPF/etc on USB disconnect.
    
    Signed-off-by: Brad Love <brad@nextdimension.cc>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1722c664c0a1c9e562a7166b4ad269961b9c1cae
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jan 16 16:52:15 2018 -0500

    media: s3c-camif: fix out-of-bounds array access
    
    [ Upstream commit a398e043637a4819a0e96467bfecaabf3224dd62 ]
    
    While experimenting with older compiler versions, I ran
    into a warning that no longer shows up on gcc-4.8 or newer:
    
    drivers/media/platform/s3c-camif/camif-capture.c: In function '__camif_subdev_try_format':
    drivers/media/platform/s3c-camif/camif-capture.c:1265:25: error: array subscript is below array bounds
    
    This is an off-by-one bug, leading to an access before the start of the
    array, while newer compilers silently assume this undefined behavior
    cannot happen and leave the loop at index 0 if no other entry matches.
    
    As Sylvester explains, we actually need to ensure that the
    value is within the range, so this reworks the loop to be
    easier to parse correctly, and an additional check to fall
    back on the first format value for any unexpected input.
    
    I found an existing gcc bug for it and added a reduced version
    of the function there.
    
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69249#c3
    Fixes: babde1c243b2 ("[media] V4L: Add driver for S3C24XX/S3C64XX SoC series camera interface")
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f7b0a06c43a69436ae637d077f10d4126bd202e
Author: Brad Love <brad@nextdimension.cc>
Date:   Tue Mar 6 14:15:36 2018 -0500

    media: cx23885: Set subdev host data to clk_freq pointer
    
    [ Upstream commit 5ceade1d97fc6687e050c44c257382c192f56276 ]
    
    Currently clk_freq is ignored entirely, because the cx235840 driver
    configures the xtal at the chip defaults. This is an issue if a
    board is produced with a non-default frequency crystal. If clk_freq
    is not zero the cx25840 will attempt to use the setting provided,
    or fall back to defaults otherwise.
    
    Signed-off-by: Brad Love <brad@nextdimension.cc>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed27030e1351698c5d4a7ff8a1b0bc6c90e59b88
Author: Brad Love <brad@nextdimension.cc>
Date:   Tue Mar 6 14:15:37 2018 -0500

    media: cx23885: Override 888 ImpactVCBe crystal frequency
    
    [ Upstream commit 779c79d4b833ec646b0aed878da38edb45bbe156 ]
    
    Hauppauge produced a revision of ImpactVCBe using an 888,
    with a 25MHz crystal, instead of using the default third
    overtone 50Mhz crystal. This overrides that frequency so
    that the cx25840 is properly configured. Without the proper
    crystal setup the cx25840 cannot load the firmware or
    decode video.
    
    Signed-off-by: Brad Love <brad@nextdimension.cc>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a307381d6ddc9885469ab17565723507324a95b
Author: Akinobu Mita <akinobu.mita@gmail.com>
Date:   Mon Mar 19 12:14:17 2018 -0400

    media: ov5645: add missing of_node_put() in error path
    
    [ Upstream commit 06fe932307d58108a11c3e603517dd2a73a57b80 ]
    
    The device node obtained with of_graph_get_next_endpoint() should be
    released by calling of_node_put().  But it was not released when
    v4l2_fwnode_endpoint_parse() failed.
    
    This change moves the of_node_put() call before the error check and
    fixes the issue.
    
    Cc: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
    Acked-by: Todor Tomov <todor.tomov@linaro.org>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ede9f3e4b247b3cff5f260c10a860e87cf19109
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Fri Jan 19 16:55:29 2018 +0100

    clk: meson: axg: add the fractional part of the fixed_pll
    
    [ Upstream commit 6b71aceceb09918daf37a40a1221077599040be3 ]
    
    The fixed_pll also has a fractional part. On axg s400 board, without
    this parameter, the calculated rate is off by ~8Mhz (0,4%). The fixed_pll
    being the root of the peripheral clock tree, this error is propagated to
    the rest of the clocks
    
    Adding the definition of the parameter fixes the problem
    
    Fixes: 78b4af312f91 ("clk: meson-axg: add clock controller drivers")
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3f208839a172f1c18335ac28de6684f1fb85066
Author: Yixun Lan <yixun.lan@amlogic.com>
Date:   Fri Jan 19 10:09:26 2018 +0800

    clk: meson: axg: fix the od shift of the sys_pll
    
    [ Upstream commit 2fa9b361e500a0e092a9525afbd6a3a363ffa5f0 ]
    
    According to the datasheet, the od shift of sys_pll is actually 16.
    
    Fixes: 78b4af312f91 ('clk: meson-axg: add clock controller drivers')
    Signed-off-by: Yixun Lan <yixun.lan@amlogic.com>
    [fixed commit message]
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 375eb43ac9fab82ecf2ea4a9f0d0a690078ef281
Author: Andrzej Hajda <a.hajda@samsung.com>
Date:   Fri Feb 16 15:57:48 2018 +0100

    clk: samsung: exynos3250: Fix PLL rates
    
    [ Upstream commit a8321e7887410a2b2e80ab89d1ef7b30562658ea ]
    
    Rates declared in PLL rate tables should match exactly rates calculated
    from PLL coefficients. If that is not the case, rate of the PLL's child clock
    might be set not as expected. For instance, if in the PLL rates table we have
    a 393216000 Hz entry and the real value as returned by the PLL's recalc_rate
    callback is 393216003, after setting PLL's clk rate to 393216000 clk_get_rate
    will return 393216003. If we now attempt to set rate of a PLL's child divider
    clock to 393216000/2 its rate will be 131072001, rather than 196608000.
    That is, the divider will be set to 3 instead of 2, because 393216003/2 is
    greater than 196608000.
    
    To fix this issue declared rates are changed to exactly match rates generated
    by the PLL, as calculated from the P, M, S, K coefficients.
    
    In this patch an erroneous P value for 74176002 output frequency is also
    corrected.
    
    Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
    Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
    Acked-by: Tomasz Figa <tomasz.figa@gmail.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ecc5af66468f93325d38421f9616794378c821e
Author: Andrzej Hajda <a.hajda@samsung.com>
Date:   Fri Feb 16 15:57:49 2018 +0100

    clk: samsung: exynos5250: Fix PLL rates
    
    [ Upstream commit 2ac051eeabaa411ef89ae7cd5bb8e60cb41ad780 ]
    
    Rates declared in PLL rate tables should match exactly rates calculated
    from PLL coefficients. If that is not the case, rate of the PLL's child clock
    might be set not as expected. For instance, if in the PLL rates table we have
    a 393216000 Hz entry and the real value as returned by the PLL's recalc_rate
    callback is 393216003, after setting PLL's clk rate to 393216000 clk_get_rate
    will return 393216003. If we now attempt to set rate of a PLL's child divider
    clock to 393216000/2 its rate will be 131072001, rather than 196608000.
    That is, the divider will be set to 3 instead of 2, because 393216003/2 is
    greater than 196608000.
    
    To fix this issue declared rates are changed to exactly match rates generated
    by the PLL, as calculated from the P, M, S, K coefficients.
    
    Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
    Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
    Acked-by: Tomasz Figa <tomasz.figa@gmail.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4ffdeb207f63bff6b1dd02c4f1c3e0f208ecac5
Author: Andrzej Hajda <a.hajda@samsung.com>
Date:   Fri Feb 16 15:57:51 2018 +0100

    clk: samsung: exynos5433: Fix PLL rates
    
    [ Upstream commit ab0447845cffc0fd752df2ccd6b4e34006000ce4 ]
    
    Rates declared in PLL rate tables should match exactly rates calculated from
    the PLL coefficients. If that is not the case, rate of the PLL's child clock
    might be set not as expected. For instance, if in the PLL rates table we have
    a 393216000 Hz entry and the real value as returned by the PLL's recalc_rate
    callback is 393216003, after setting PLL's clk rate to 393216000 clk_get_rate
    will return 393216003. If we now attempt to set rate of a PLL's child divider
    clock to 393216000/2 its rate will be 131072001, rather than 196608000.
    That is, the divider will be set to 3 instead of 2, because 393216003/2 is
    greater than 196608000.
    
    To fix this issue declared rates are changed to exactly match rates generated
    by the PLL, as calculated from the P, M, S, K coefficients.
    
    Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
    Acked-by: Tomasz Figa <tomasz.figa@gmail.com>
    Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fcac40219c068bbdde7d3367a0fac0fcedc5737f
Author: Andrzej Hajda <a.hajda@samsung.com>
Date:   Fri Feb 16 15:57:50 2018 +0100

    clk: samsung: exynos5260: Fix PLL rates
    
    [ Upstream commit cdb68fbd4e7962be742c4f29475220c5bf28d8a5 ]
    
    Rates declared in PLL rate tables should match exactly rates calculated from
    the PLL coefficients. If that is not the case, rate of the PLL's child clock
    might be set not as expected. For instance, if in the PLL rates table we have
    a 393216000 Hz entry and the real value as returned by the PLL's recalc_rate
    callback is 393216003, after setting PLL's clk rate to 393216000 clk_get_rate
    will return 393216003. If we now attempt to set rate of a PLL's child divider
    clock to 393216000/2 its rate will be 131072001, rather than 196608000.
    That is, the divider will be set to 3 instead of 2, because 393216003/2 is
    greater than 196608000.
    
    To fix this issue declared rates are changed to exactly match rates generated
    by the PLL, as calculated from the P, M, S, K coefficients.
    
    Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
    Acked-by: Tomasz Figa <tomasz.figa@gmail.com>
    Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7918ae35f98a95e3ed146e3957706b2a67308df
Author: Andrzej Hajda <a.hajda@samsung.com>
Date:   Fri Feb 16 15:57:52 2018 +0100

    clk: samsung: exynos7: Fix PLL rates
    
    [ Upstream commit 7e4db0c2836e892766565965207eee051c8037b9 ]
    
    Rates declared in PLL rate tables should match exactly rates calculated from
    the PLL coefficients. If that is not the case, rate of the PLL's child clock
    might be set not as expected. For instance, if in the PLL rates table we have
    a 393216000 Hz entry and the real value as returned by the PLL's recalc_rate
    callback is 393216003, after setting PLL's clk rate to 393216000 clk_get_rate
    will return 393216003. If we now attempt to set rate of a PLL's child divider
    clock to 393216000/2 its rate will be 131072001, rather than 196608000.
    That is, the divider will be set to 3 instead of 2, because 393216003/2 is
    greater than 196608000.
    
    To fix this issue declared rates are changed to exactly match rates generated
    by the PLL, as calculated from the P, M, S, K coefficients.
    
    Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
    Acked-by: Tomasz Figa <tomasz.figa@gmail.com>
    Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66065b1bfac77678771dfae4158f730e9d684297
Author: Andrzej Hajda <a.hajda@samsung.com>
Date:   Fri Feb 16 15:57:53 2018 +0100

    clk: samsung: s3c2410: Fix PLL rates
    
    [ Upstream commit 179db533c08431f509a3823077549773d519358b ]
    
    Rates declared in PLL rate tables should match exactly rates calculated from
    the PLL coefficients. If that is not the case, rate of the PLL's child clock
    might be set not as expected. For instance, if in the PLL rates table we have
    a 393216000 Hz entry and the real value as returned by the PLL's recalc_rate
    callback is 393216003, after setting PLL's clk rate to 393216000 clk_get_rate
    will return 393216003. If we now attempt to set rate of a PLL's child divider
    clock to 393216000/2 its rate will be 131072001, rather than 196608000.
    That is, the divider will be set to 3 instead of 2, because 393216003/2 is
    greater than 196608000.
    
    To fix this issue declared rates are changed to exactly match rates generated
    by the PLL, as calculated from the P, M, S, K coefficients.
    
    Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
    Acked-by: Tomasz Figa <tomasz.figa@gmail.com>
    Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab8e3bf355128058dcf5ce26bcb240bc237a6936
Author: Shawn Lin <shawn.lin@rock-chips.com>
Date:   Mon Mar 5 11:25:58 2018 +0800

    clk: rockchip: Prevent calculating mmc phase if clock rate is zero
    
    [ Upstream commit 4bf59902b50012b1dddeeaa23b217d9c4956cdda ]
    
    The MMC sample and drv clock for rockchip platforms are derived from
    the bus clock output to the MMC/SDIO card. So it should never happens
    that the clk rate is zero given it should inherits the clock rate from
    its parent. If something goes wrong and makes the clock rate to be zero,
    the calculation would be wrong but may still make the mmc tuning process
    work luckily. However it makes people harder to debug when the following
    data transfer is unstable.
    
    Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 256abb2bd57d62c73fe96c162515965712521ec0
Author: Marcel Ziswiler <marcel@ziswiler.com>
Date:   Fri Feb 23 00:04:51 2018 +0100

    clk: tegra: Fix pll_u rate configuration
    
    [ Upstream commit c35b518f9ba06c9de79fb3ff62eed7462d804995 ]
    
    Turns out latest upstream U-Boot does not configure/enable pll_u which
    leaves it at some default rate of 500 kHz:
    
    root@apalis-t30:~# cat /sys/kernel/debug/clk/clk_summary | grep pll_u
           pll_u                  3        3        0      500000          0
    
    Of course this won't quite work leading to the following messages:
    
    [    6.559593] usb 2-1: new full-speed USB device number 2 using tegra-
    ehci
    [   11.759173] usb 2-1: device descriptor read/64, error -110
    [   27.119453] usb 2-1: device descriptor read/64, error -110
    [   27.389217] usb 2-1: new full-speed USB device number 3 using tegra-
    ehci
    [   32.559454] usb 2-1: device descriptor read/64, error -110
    [   47.929777] usb 2-1: device descriptor read/64, error -110
    [   48.049658] usb usb2-port1: attempt power cycle
    [   48.759475] usb 2-1: new full-speed USB device number 4 using tegra-
    ehci
    [   59.349457] usb 2-1: device not accepting address 4, error -110
    [   59.509449] usb 2-1: new full-speed USB device number 5 using tegra-
    ehci
    [   70.069457] usb 2-1: device not accepting address 5, error -110
    [   70.079721] usb usb2-port1: unable to enumerate USB device
    
    Fix this by actually allowing the rate also being set from within
    the Linux kernel.
    
    Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 286a7c06afb5ec33a894c0d14e41cf1b3aa54ad7
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Feb 20 16:15:21 2018 +0100

    clk: hisilicon: mark wdt_mux_p[] as const
    
    [ Upstream commit df934cbcbff7afbc024bf05f02615917c61f6470 ]
    
    The symbol is in the __initconst section but not marked init, which
    caused a warning when building with LTO.
    
    This makes it 'const' as was obviously intended.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: c80dfd9bf54e ("clk: hisilicon: add CRG driver for Hi3516CV300 SoC")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b245fee1cc0b1926f5626d2403cdd68e53925470
Author: Shawn Lin <shawn.lin@rock-chips.com>
Date:   Wed Mar 14 08:28:31 2018 +0800

    clk: Don't show the incorrect clock phase
    
    [ Upstream commit 1f9c63e8de3d7b377c9d74e4a17524cfb60e6384 ]
    
    It's found that the clock phase output from clk_summary is
    wrong compared to the actual phase reading from the register.
    
    cat /sys/kernel/debug/clk/clk_summary | grep sdio_sample
    sdio_sample     0        1        0 50000000          0 -22
    
    It exposes an issue that clk core, clk_core_get_phase, always
    returns the cached core->phase which should be either updated
    by calling clk_set_phase or directly from the first place the
    clk was registered.
    
    When registering the clk, the core->phase geting from ->get_phase()
    may return negative value indicating error. This is quite common
    since the clk's phase may be highly related to its parent chain,
    but it was temporarily orphan when registered, since its parent
    chains hadn't be ready at that time, so the clk drivers decide to
    return error in this case. However, if no clk_set_phase is called or
    maybe the ->set_phase() isn't even implemented, the core->phase would
    never be updated. This is wrong, and we should try to update it when
    all its parent chains are settled down, like the way of updating clock
    rate for that. But it's not deserved to complicate the code now and
    just update it anyway when calling clk_core_get_phase, which would be
    much simple and enough.
    
    Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
    Acked-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8600d886bdef2562e020dda90fd0789792ed3466
Author: Shawn Lin <shawn.lin@rock-chips.com>
Date:   Wed Mar 21 10:39:19 2018 +0800

    clk: rockchip: Fix wrong parent for SDMMC phase clock for rk3228
    
    [ Upstream commit 4b0556a441dd37e598887215bc89b49a6ef525b3 ]
    
    commit c420c1e4db22 ("clk: rockchip: Prevent calculating mmc phase
    if clock rate is zero") catches one gremlin again for clk-rk3228.c
    that the parent of SDMMC phase clock should be sclk_sdmmc0, but not
    sclk_sdmmc. However, the naming of the sdmmc clocks varies in the
    manual with the card clock having the 0 while the hclk is named
    without appended 0. So standardize one one format to prevent
    confusion, as there also is only one (non-sdio) mmc controller on
    the soc.
    
    Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ef226a107638f684d44d9d62a8fb930d3887e1f
Author: Sylwester Nawrocki <s.nawrocki@samsung.com>
Date:   Mon Feb 5 16:43:56 2018 +0100

    ASoC: samsung: i2s: Ensure the RCLK rate is properly determined
    
    [ Upstream commit 647d04f8e07afc7c3b7a42b3ee01a8b28db29631 ]
    
    If the RCLK mux clock configuration is specified in DT and no set_sysclk()
    callback is used in the sound card driver the sclk_srcrate field will remain
    set to 0, leading to an incorrect PSR divider setting.
    To fix this the frequency value is retrieved from the CLK_I2S_RCLK_SRC clock,
    so the actual RCLK mux selection is taken into account.
    
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f874df139ca27ddca29ab292545abf75129f447
Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Date:   Fri Mar 9 11:11:17 2018 -0800

    ASoC: topology: create TLV data for dapm widgets
    
    [ Upstream commit bde8b3887add8368ecf0ca71117baf2fd56a6fc9 ]
    
    This patch adds the change required to create the TLV data
    for dapm widget kcontrols from topology. This also fixes the following
    TLV read error shown in amixer while showing the card control contents.
    "amixer: Control hw:1 element TLV read error: No such device or address"
    
    Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a7b15a4861d612d139797ce625b441ffd0926dd
Author: Sylwester Nawrocki <s.nawrocki@samsung.com>
Date:   Wed Mar 14 17:41:13 2018 +0100

    ASoC: samsung: odroid: Fix 32000 sample rate handling
    
    [ Upstream commit 1d22c337dc8f3a25638f7262e7bcb5729a34d140 ]
    
    In case of sample rates lower than 44100 currently there is too low MCLK
    frequency set for the CODEC. Playback fails with following errors:
    
    $ speaker-test -c2 -t sine -f 1500 -l2 -r 32000
    
    Sine wave rate is 1500.0000Hz
    Rate set to 32000Hz (requested 32000Hz)
    Buffer size range from 128 to 131072
    Period size range from 64 to 65536
    Using max buffer size 131072
    Periods = 4
    Unable to set hw params for playback: Invalid argument
    Setting of hwparams failed: Invalid argument
    
    [  497.883700] max98090 1-0010: Invalid master clock frequency
    
    To fix this the I2S root clock's frequency is increased, depending
    on sampling rate.
    
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a11d60d5d5c27b6c97aa68681efdc536b702206
Author: Ezequiel Garcia <ezequiel@collabora.co.uk>
Date:   Tue Mar 20 13:03:31 2018 -0300

    ASoC: rockchip: rk3288-hdmi-analog: Select needed codecs
    
    [ Upstream commit b1d0db067fbe2598d62b248beea5d705a0ea7642 ]
    
    The driver does not select all the codec drivers that needs.
    Fix it by selecting the analog and HDMI codecs.
    
    Cc: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
    Signed-off-by: Ezequiel Garcia <ezequiel@collabora.co.uk>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac79106484f6a463a5468d9033fcb1b6a2b9c569
Author: James Smart <jsmart2021@gmail.com>
Date:   Tue Jan 30 15:58:45 2018 -0800

    scsi: lpfc: Fix frequency of Release WQE CQEs
    
    [ Upstream commit 04673e38f56b30cd39b1fa0f386137d818b17781 ]
    
    The driver controls when the hardware sends completions that communicate
    consumption of elements from the WQ. This is done by setting a WQEC bit
    on a WQE.
    
    The current driver sets it on every Nth WQE posting. However, the driver
    isn't clearing the bit if the WQE is reused. Thus, if the queue depth
    isn't evenly divisible by N, with enough time, it can be set on every
    element, creating a lot of overhead and risking CQ full conditions.
    
    Correct by clearing the bit when not setting it on an Nth element.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00c2c646afb95a32f0e2ae054e4c76a3a38e7430
Author: James Smart <jsmart2021@gmail.com>
Date:   Tue Jan 30 15:58:51 2018 -0800

    scsi: lpfc: Fix IO failure during hba reset testing with nvme io.
    
    [ Upstream commit 91455b850956bc13708a074bd1400f54aae74890 ]
    
    A stress test repeatedly resetting the adapter while performing io would
    eventually report I/O failures and missing nvme namespaces.
    
    The driver was setting the nvmefc_fcp_req->private pointer to NULL
    during the IO completion routine before upcalling done().  If the
    transport was also running an abort for that IO, the driver would fail
    the abort with message 6140. Failing the abort is not allowed by the
    nvme-fc transport, as it mandates that the io must be returned back to
    the transport. As that does not happen, the transport controller delete
    has an outstanding reference and can't complete teardown.
    
    The NULL-ing of the private pointer should be done only when the io is
    considered complete. It's complete when the adapter returns the exchange
    with the "exchange busy" flag clear.
    
    Move the NULL'ing of the structure to the done case. This leaves the io
    contexts set while it is busy and until the subsequent XRI_ABORTED
    completion which returns the exchange is received.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae846a8c3ab2ee0621348d36545776b21224beee
Author: James Smart <jsmart2021@gmail.com>
Date:   Tue Jan 30 15:58:54 2018 -0800

    scsi: lpfc: Fix soft lockup in lpfc worker thread during LIP testing
    
    [ Upstream commit 161df4f09987ae2e9f0f97f0b38eee298b4a39ff ]
    
    During link bounce testing in a point-to-point topology, the host may
    enter a soft lockup on the lpfc_worker thread:
    
        Call Trace:
         lpfc_work_done+0x1f3/0x1390 [lpfc]
         lpfc_do_work+0x16f/0x180 [lpfc]
         kthread+0xc7/0xe0
         ret_from_fork+0x3f/0x70
    
    The driver was simultaneously setting a combination of flags that caused
    lpfc_do_work()to effectively spin between slow path work and new event
    data, causing the lockup.
    
    Ensure in the typical wq completions, that new event data flags are set
    if the slow path flag is running. The slow path will eventually
    reschedule the wq handling.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c6b639b96cf054ca9b166872ba4026673cf9d65
Author: James Smart <jsmart2021@gmail.com>
Date:   Tue Jan 30 15:59:01 2018 -0800

    scsi: lpfc: Fix nonrecovery of NVME controller after cable swap.
    
    [ Upstream commit 815a9c437617e221842d12b3366ff6911b3df628 ]
    
    In a test that is doing large numbers of cable swaps on the target, the
    nvme controllers wouldn't reconnect.
    
    During the cable swaps, the targets n_port_id would change. This
    information was passed to the nvme-fc transport, in the new remoteport
    registration. However, the nvme-fc transport didn't update the n_port_id
    value in the remoteport struct when it reused an existing structure.
    Later, when a new association was attempted on the remoteport, the
    driver's NVME LS routine would use the stale n_port_id from the
    remoteport struct to address the LS. As the device is no longer at that
    address, the LS would go into never never land.
    
    Separately, the nvme-fc transport will be corrected to update the
    n_port_id value on a re-registration.
    
    However, for now, there's no reason to use the transports values.  The
    private pointer points to the drivers node structure and the node
    structure is up to date. Therefore, revise the LS routine to use the
    drivers data structures for the LS. Augmented the debug message for
    better debugging in the future.
    
    Also removed a duplicate if check that seems to have slipped in.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22f377484858ba09254ee335f592bb328e5ab590
Author: James Smart <jsmart2021@gmail.com>
Date:   Tue Jan 30 15:58:55 2018 -0800

    scsi: lpfc: Fix issue_lip if link is disabled
    
    [ Upstream commit 2289e9598dde9705400559ca2606fb8c145c34f0 ]
    
    The driver ignored checks on whether the link should be kept
    administratively down after a link bounce. Correct the checks.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d65c5e47e4760d86c6722a935b7d67ec1b004556
Author: Wilfried Weissmann <wilfried.weissmann@gmx.at>
Date:   Fri Feb 23 20:52:34 2018 +0100

    scsi: mvsas: fix wrong endianness of sgpio api
    
    [ Upstream commit e75fba9c0668b3767f608ea07485f48d33c270cf ]
    
    This patch fixes the byte order of the SGPIO api and brings it back in
    sync with ledmon v0.80 and above.
    
    [mkp: added missing SoB and fixed whitespace]
    
    Signed-off-by: Wilfried Weissmann <wilfried.weissmann@gmx.at>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7964405fd9cb0d6305126858e11a3ac4935e546
Author: Douglas Gilbert <dgilbert@interlog.com>
Date:   Tue Mar 6 22:19:49 2018 -0500

    scsi: core: Make SCSI Status CONDITION MET equivalent to GOOD
    
    [ Upstream commit 1875ede02ed5e176a18dccbca84abc28d5b3e141 ]
    
    The SCSI PRE-FETCH (10 or 16) command is present both on hard disks
    and some SSDs. It is useful when the address of the next block(s) to
    be read is known but it is not following the LBA of the current READ
    (so read-ahead won't help). It returns two "good" SCSI Status values.
    If the requested blocks have fitted (or will most likely fit (when
    the IMMED bit is set)) into the disk's cache, it returns CONDITION
    MET. If it didn't (or will not) fit then it returns GOOD status.
    
    The goal of this patch is to stop the SCSI subsystem treating the
    CONDITION MET SCSI status as an error. The current state makes the
    PRE-FETCH command effectively unusable via pass-throughs.
    
    Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
    Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8167afa3a98e26d321b4fff908c0c30f8131af70
Author: James Smart <jsmart2021@gmail.com>
Date:   Mon Mar 5 12:04:02 2018 -0800

    scsi: lpfc: Fix NVME Initiator FirstBurst
    
    [ Upstream commit 0709263abe0de70a798dcdf481d5dd489ca4752e ]
    
    First Burst support was not properly indicated in NVMe PRLI.
    
    Correct the bit position and the logic to check and set first burst support.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42d8fa4564b6ba3e76ecba3d7a9ae2950eb95d90
Author: Xose Vazquez Perez <xose.vazquez@gmail.com>
Date:   Thu Mar 15 18:32:01 2018 +0100

    scsi: devinfo: add HP DISK-SUBSYSTEM device, for HP XP arrays
    
    [ Upstream commit 5f96f42b76e00e2871033745ff029056cc725c76 ]
    
    "The DISK-SUBSYSTEM is a special model name returned when LUs
    are not installed. For example, when LU#0 is not installed in "OPEN-"
    models, LU#0 is detected as the DISK-SUBSYSTEM model":
    https://marc.info/?l=linux-scsi&m=125424006417825
    
    It's missing for HP XP rebranded arrays, "HP"/"OPEN-".
    Only the HITACHI one is present:
    13f7e5acc8b329080672c13f05f252ace5b79825
    627511e3e67553b04f6917c03e39b797df210e04
    
    Cc: Anthony Cheung <anthony.cheung@hpe.com>
    Cc: Takahiro Yasui <takahiro.yasui@hitachivantara.com>
    Cc: Matthias Rudolph <Matthias.Rudolph@hitachivantara.com>
    Cc: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: James E.J. Bottomley <jejb@linux.vnet.ibm.com>
    Cc: SCSI ML <linux-scsi@vger.kernel.org>
    Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a2b4802bca622695126b73da9773385ec160c3c7
Author: Dave Carroll <david.carroll@microsemi.com>
Date:   Tue Apr 3 15:50:42 2018 -0600

    scsi: aacraid: Insure command thread is not recursively stopped
    
    [ Upstream commit 1c6b41fb92936fa5facea464d5d7cbf855966d04 ]
    
    If a recursive IOP_RESET is invoked, usually due to the eh_thread
    handling errors after the first reset, be sure we flag that the command
    thread has been stopped to avoid an Oops of the form;
    
     [ 336.620256] CPU: 28 PID: 1193 Comm: scsi_eh_0 Kdump: loaded Not tainted 4.14.0-49.el7a.ppc64le #1
     [ 336.620297] task: c000003fd630b800 task.stack: c000003fd61a4000
     [ 336.620326] NIP: c000000000176794 LR: c00000000013038c CTR: c00000000024bc10
     [ 336.620361] REGS: c000003fd61a7720 TRAP: 0300 Not tainted (4.14.0-49.el7a.ppc64le)
     [ 336.620395] MSR: 9000000000009033 <SF,HV,EE,ME,IR,DR,RI,LE> CR: 22084022 XER: 20040000
     [ 336.620435] CFAR: c000000000130388 DAR: 0000000000000000 DSISR: 40000000 SOFTE: 1
     [ 336.620435] GPR00: c00000000013038c c000003fd61a79a0 c0000000014c7e00 0000000000000000
     [ 336.620435] GPR04: 000000000000000c 000000000000000c 9000000000009033 0000000000000477
     [ 336.620435] GPR08: 0000000000000477 0000000000000000 0000000000000000 c008000010f7d940
     [ 336.620435] GPR12: c00000000024bc10 c000000007a33400 c0000000001708a8 c000003fe3b881d8
     [ 336.620435] GPR16: c000003fe3b88060 c000003fd61a7d10 fffffffffffff000 000000000000001e
     [ 336.620435] GPR20: 0000000000000001 c000000000ebf1a0 0000000000000001 c000003fe3b88000
     [ 336.620435] GPR24: 0000000000000003 0000000000000002 c000003fe3b88840 c000003fe3b887e8
     [ 336.620435] GPR28: c000003fe3b88000 c000003fc8181788 0000000000000000 c000003fc8181700
     [ 336.620750] NIP [c000000000176794] exit_creds+0x34/0x160
     [ 336.620775] LR [c00000000013038c] __put_task_struct+0x8c/0x1f0
     [ 336.620804] Call Trace:
     [ 336.620817] [c000003fd61a79a0] [c000003fe3b88000] 0xc000003fe3b88000 (unreliable)
     [ 336.620853] [c000003fd61a79d0] [c00000000013038c] __put_task_struct+0x8c/0x1f0
     [ 336.620889] [c000003fd61a7a00] [c000000000171418] kthread_stop+0x1e8/0x1f0
     [ 336.620922] [c000003fd61a7a40] [c008000010f7448c] aac_reset_adapter+0x14c/0x8d0 [aacraid]
     [ 336.620959] [c000003fd61a7b00] [c008000010f60174] aac_eh_host_reset+0x84/0x100 [aacraid]
     [ 336.621010] [c000003fd61a7b30] [c000000000864f24] scsi_try_host_reset+0x74/0x180
     [ 336.621046] [c000003fd61a7bb0] [c000000000867ac0] scsi_eh_ready_devs+0xc00/0x14d0
     [ 336.625165] [c000003fd61a7ca0] [c0000000008699e0] scsi_error_handler+0x550/0x730
     [ 336.632101] [c000003fd61a7dc0] [c000000000170a08] kthread+0x168/0x1b0
     [ 336.639031] [c000003fd61a7e30] [c00000000000b528] ret_from_kernel_thread+0x5c/0xb4
     [ 336.645971] Instruction dump:
     [ 336.648743] 384216a0 7c0802a6 fbe1fff8 f8010010 f821ffd1 7c7f1b78 60000000 60000000
     [ 336.657056] 39400000 e87f0838 f95f0838 7c0004ac <7d401828> 314affff 7d40192d 40c2fff4
     [ 336.663997] -[ end trace 4640cf8d4945ad95 ]-
    
    So flag when the thread is stopped by setting the thread pointer to NULL.
    
    Signed-off-by: Dave Carroll <david.carroll@microsemi.com>
    Reviewed-by: Raghava Aditya Renukunta <raghavaaditya.renukunta@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b3f61b6ba721edac9b86ca99bf7a8719c7bdead
Author: Antoine Tenart <antoine.tenart@bootlin.com>
Date:   Tue Feb 13 09:26:55 2018 +0100

    crypto: inside-secure - fix the invalidation step during cra_exit
    
    [ Upstream commit b7007dbccd92f7b8c00e590020bee542a48c6a2c ]
    
    When exiting a transformation, the cra_exit() helper is called in each
    driver providing one. The Inside Secure SafeXcel driver has one, which
    is responsible of freeing some areas and of sending one invalidation
    request to the crypto engine, to invalidate the context that was used
    during the transformation.
    
    We could see in some setups (when lots of transformations were being
    used with a short lifetime, and hence lots of cra_exit() calls) NULL
    pointer dereferences and other weird issues. All these issues were
    coming from accessing the tfm context.
    
    The issue is the invalidation request completion is checked using a
    wait_for_completion_interruptible() call in both the cipher and hash
    cra_exit() helpers. In some cases this was interrupted while the
    invalidation request wasn't processed yet. And then cra_exit() returned,
    and its caller was freeing the tfm instance. Only then the request was
    being handled by the SafeXcel driver, which lead to the said issues.
    
    This patch fixes this by using wait_for_completion() calls in these
    specific cases.
    
    Fixes: 1b44c5a60c13 ("crypto: inside-secure - add SafeXcel EIP197 crypto engine driver")
    Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0a8aaf37043cd27fd8d9d61a892690c894a3156
Author: Peter Robinson <pbrobinson@gmail.com>
Date:   Sun Feb 11 23:15:37 2018 +0000

    crypto: sunxi-ss - Add MODULE_ALIAS to sun4i-ss
    
    [ Upstream commit 7c73cf4cc2ac16465f5102437dc0a12d66671bd6 ]
    
    The MODULE_ALIAS is required to enable the sun4i-ss driver to load
    automatically when built at a module. Tested on a Cubietruck.
    
    Fixes: 6298e948215f ("crypto: sunxi-ss - Add Allwinner Security System crypto accelerator")
    Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a814727161d8c6d4d270f8e8b893ea284e71cf9a
Author: Antoine Tenart <antoine.tenart@bootlin.com>
Date:   Tue Feb 13 09:26:51 2018 +0100

    crypto: inside-secure - do not overwrite the threshold value
    
    [ Upstream commit e1d24c0bb76648cdf789b168defb6e31adb0b1b1 ]
    
    This patch fixes the Inside Secure SafeXcel driver not to overwrite the
    interrupt threshold value. In certain cases the value of this register,
    which controls when to fire an interrupt, was overwritten. This lead to
    packet not being processed or acked as the driver never was aware of
    their completion.
    
    This patch fixes this behaviour by not setting the threshold when
    requests are being processed by the engine.
    
    Fixes: dc7e28a3286e ("crypto: inside-secure - dequeue all requests at once")
    Suggested-by: Ofer Heifetz <oferh@marvell.com>
    Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f47bc2630460404af17fca234d933aba3f0bf30
Author: Antoine Tenart <antoine.tenart@bootlin.com>
Date:   Tue Feb 13 09:26:52 2018 +0100

    crypto: inside-secure - fix the extra cache computation
    
    [ Upstream commit c1a8fa6e240ed4b99778d48ab790743565cb61c8 ]
    
    This patch fixes the extra cache computation when the queued data is a
    multiple of a block size. This fixes the hash support in some cases.
    
    Fixes: 809778e02cd4 ("crypto: inside-secure - fix hash when length is a multiple of a block")
    Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b67bf7627028df8f8cd3fa7100a4777f386792b
Author: Antoine Tenart <antoine.tenart@bootlin.com>
Date:   Tue Feb 13 09:26:53 2018 +0100

    crypto: inside-secure - fix the cache_len computation
    
    [ Upstream commit 666a9c70b04fccabde5cea5e680ae1ae92460a62 ]
    
    This patch fixes the cache length computation as cache_len could end up
    being a negative value. The check between the queued size and the
    block size is updated to reflect the caching mechanism which can cache
    up to a full block size (included!).
    
    Fixes: 809778e02cd4 ("crypto: inside-secure - fix hash when length is a multiple of a block")
    Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6c794cb4cf8a2fb386ea7ba2f9ed7855ad48def
Author: Antoine Tenart <antoine.tenart@bootlin.com>
Date:   Tue Feb 13 09:26:54 2018 +0100

    crypto: inside-secure - do not process request if no command was issued
    
    [ Upstream commit 95831ceafc0de7d94a5fe86ebb1c2042317cc2cd ]
    
    This patch adds a check in the SafeXcel dequeue function, to avoid
    processing request further if no hardware command was issued. This can
    happen in certain cases where the ->send() function caches all the data
    that would have been send.
    
    Fixes: 809778e02cd4 ("crypto: inside-secure - fix hash when length is a multiple of a block")
    Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f530364e1d9aa54efbe0d83413b59321076957f
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Fri Feb 23 23:33:07 2018 +0100

    crypto: ccp - don't disable interrupts while setting up debugfs
    
    [ Upstream commit 79eb382b5e06a6dca5806465d7195d686a463ab0 ]
    
    I don't why we need take a single write lock and disable interrupts
    while setting up debugfs. This is what what happens when we try anyway:
    
    |ccp 0000:03:00.2: enabling device (0000 -> 0002)
    |BUG: sleeping function called from invalid context at kernel/locking/rwsem.c:69
    |in_atomic(): 1, irqs_disabled(): 1, pid: 3, name: kworker/0:0
    |irq event stamp: 17150
    |hardirqs last  enabled at (17149): [<0000000097a18c49>] restore_regs_and_return_to_kernel+0x0/0x23
    |hardirqs last disabled at (17150): [<000000000773b3a9>] _raw_write_lock_irqsave+0x1b/0x50
    |softirqs last  enabled at (17148): [<0000000064d56155>] __do_softirq+0x3b8/0x4c1
    |softirqs last disabled at (17125): [<0000000092633c18>] irq_exit+0xb1/0xc0
    |CPU: 0 PID: 3 Comm: kworker/0:0 Not tainted 4.16.0-rc2+ #30
    |Workqueue: events work_for_cpu_fn
    |Call Trace:
    | dump_stack+0x7d/0xb6
    | ___might_sleep+0x1eb/0x250
    | down_write+0x17/0x60
    | start_creating+0x4c/0xe0
    | debugfs_create_dir+0x9/0x100
    | ccp5_debugfs_setup+0x191/0x1b0
    | ccp5_init+0x8a7/0x8c0
    | ccp_dev_init+0xb8/0xe0
    | sp_init+0x6c/0x90
    | sp_pci_probe+0x26e/0x590
    | local_pci_probe+0x3f/0x90
    | work_for_cpu_fn+0x11/0x20
    | process_one_work+0x1ff/0x650
    | worker_thread+0x1d4/0x3a0
    | kthread+0xfe/0x130
    | ret_from_fork+0x27/0x50
    
    If any locking is required, a simple mutex will do it.
    
    Cc: Gary R Hook <gary.hook@amd.com>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Acked-by: Gary R Hook <gary.hook@amd.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 09b1df4caf6b34af6047eb955050eeb00e60d8f0
Author: Antoine Tenart <antoine.tenart@bootlin.com>
Date:   Fri Feb 23 10:01:40 2018 +0100

    crypto: atmel-aes - fix the keys zeroing on errors
    
    [ Upstream commit 5d804a5157dbaa64872a675923ae87161165c66b ]
    
    The Atmel AES driver uses memzero_explicit on the keys on error, but the
    variable zeroed isn't the right one because of a typo. Fix this by using
    the right variable.
    
    Fixes: 89a82ef87e01 ("crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes")
    Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
    Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8c6ebab1afaed4b041cd7854da324e3ea0d7ae8
Author: Antoine Tenart <antoine.tenart@bootlin.com>
Date:   Mon Feb 26 14:45:12 2018 +0100

    crypto: inside-secure - wait for the request to complete if in the backlog
    
    [ Upstream commit 4dc5475ae0375ea4f9283dfd9b2ddc91b20d4c4b ]
    
    This patch updates the safexcel_hmac_init_pad() function to also wait
    for completion when the digest return code is -EBUSY, as it would mean
    the request is in the backlog to be processed later.
    
    Fixes: 1b44c5a60c13 ("crypto: inside-secure - add SafeXcel EIP197 crypto engine driver")
    Suggested-by: Ofer Heifetz <oferh@marvell.com>
    Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f03136a54b7992e82f85e37d6894d9163c72c9f9
Author: Antoine Tenart <antoine.tenart@bootlin.com>
Date:   Mon Mar 19 09:21:13 2018 +0100

    crypto: inside-secure - move the digest to the request context
    
    [ Upstream commit b869648c060fbb00bf6578d13cbe83e6f85914bc ]
    
    This patches moves the digest information from the transformation
    context to the request context. This fixes cases where HMAC init
    functions were called and override the digest value for a short period
    of time, as the HMAC init functions call the SHA init one which reset
    the value. This lead to a small percentage of HMAC being incorrectly
    computed under heavy load.
    
    Fixes: 1b44c5a60c13 ("crypto: inside-secure - add SafeXcel EIP197 crypto engine driver")
    Suggested-by: Ofer Heifetz <oferh@marvell.com>
    Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
    [Ofer here did all the work, from seeing the issue to understanding the
    root cause. I only made the patch.]
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9dc84ac72e303d209eeaf3999d304dae3bb21823
Author: NeilBrown <neilb@suse.com>
Date:   Fri Feb 23 09:09:33 2018 +1100

    staging: lustre: lmv: correctly iput lmo_root
    
    [ Upstream commit 17556cdbe6ed70a6a20e597b228628f7f34387f8 ]
    
    Commit 8f18c8a48b73 ("staging: lustre: lmv: separate master object
    with master stripe") changed how lmo_root inodes were managed,
    particularly when LMV_HASH_FLAG_MIGRATION is not set.
    Previously lsm_md_oinfo[0].lmo_root was always a borrowed
    inode reference and didn't need to by iput().
    Since the change, that special case only applies when
    LMV_HASH_FLAG_MIGRATION is set
    
    In the upstream (lustre-release) version of this patch [Commit
    60e07b972114 ("LU-4690 lod: separate master object with master
    stripe")] the for loop in the lmv_unpack_md() was changed to count
    from 0 and to ignore entry 0 if LMV_HASH_FLAG_MIGRATION is set.
    In the patch that got applied to Linux, that change was missing,
    so lsm_md_oinfo[0].lmo_root is never iput().
    This results in a "VFS: Busy inodes" warning at unmount.
    
    Fixes: 8f18c8a48b73 ("staging: lustre: lmv: separate master object with master stripe")
    Signed-off-by: NeilBrown <neilb@suse.com>
    Reviewed-by: James Simmons <jsimmons@infradead.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7eed70cc97cb114b633ce8534b42c5b29e1e3b88
Author: Quytelda Kahja <quytelda@tamalin.org>
Date:   Wed Feb 28 21:19:07 2018 -0800

    staging: ks7010: Use constants from ieee80211_eid instead of literal ints.
    
    [ Upstream commit dc13498ab47fdfae3cda4df712beb2e4244b3fe0 ]
    
    The case statement in get_ap_information() should not use literal integers
    to parse information element IDs when these values are provided by name
    in 'enum ieee80211_eid' in the header 'linux/ieee80211.h'.
    
    Signed-off-by: Quytelda Kahja <quytelda@tamalin.org>
    Reviewed-by: Tobin C. Harding <me@tobin.cc>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95ae1ea1469db663234fdc8465a35b62ed0b29c0
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Feb 28 11:28:49 2018 +0000

    staging: rtl8192u: return -ENOMEM on failed allocation of priv->oldaddr
    
    [ Upstream commit e1a7418529e33bc4efc346324557251a16a3e79b ]
    
    Currently the allocation of priv->oldaddr is not null checked which will
    lead to subsequent errors when accessing priv->oldaddr.  Fix this with
    a null pointer check and a return of -ENOMEM on allocation failure.
    
    Detected with Coccinelle:
    drivers/staging/rtl8192u/r8192U_core.c:1708:2-15: alloc with no test,
    possible model on line 1723
    
    Fixes: 8fc8598e61f6 ("Staging: Added Realtek rtl8192u driver to staging")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c424c481fb25354105169b5eb1211bcabcaa5027
Author: Ioana Radulescu <ruxandra.radulescu@nxp.com>
Date:   Mon Feb 26 10:28:06 2018 -0600

    staging: fsl-dpaa2/eth: Fix incorrect casts
    
    [ Upstream commit 75c583ab9709692a60871d4719006391cde8dc1d ]
    
    The DPAA2 Ethernet driver incorrectly assumes virtual addresses
    are always 64b long, which causes compiler errors when building
    for a 32b platform.
    
    Fix this by using explicit casts to uintptr_t where necessary.
    
    Signed-off-by: Ioana Radulescu <ruxandra.radulescu@nxp.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3963b6bd02a4816dc74b6118aaffab6fb40295a2
Author: NeilBrown <neilb@suse.com>
Date:   Fri Mar 2 10:31:25 2018 +1100

    staging: lustre: fix bug in osc_enter_cache_try
    
    [ Upstream commit 2fab9faf9b27298c4536c1c1b14072ab18b8f80b ]
    
    The lustre-release patch commit bdc5bb52c554 ("LU-4933 osc:
    Automatically increase the max_dirty_mb") changed
    
    -       if (cli->cl_dirty + PAGE_CACHE_SIZE <= cli->cl_dirty_max &&
    +       if (cli->cl_dirty_pages < cli->cl_dirty_max_pages &&
    
    When this patch landed in Linux a couple of years later, it landed as
    
    -       if (cli->cl_dirty + PAGE_SIZE <= cli->cl_dirty_max &&
    +       if (cli->cl_dirty_pages <= cli->cl_dirty_max_pages &&
    
    which is clearly different ('<=' vs '<'), and allows cl_dirty_pages to
    increase beyond cl_dirty_max_pages - which causes a latter assertion
    to fails.
    
    Fixes: 3147b268400a ("staging: lustre: osc: Automatically increase the max_dirty_mb")
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7c516f1b6c5e8f0ea27d38989c5736ab0a4ef68
Author: Ioana Radulescu <ruxandra.radulescu@nxp.com>
Date:   Wed Mar 14 15:04:51 2018 -0500

    staging: fsl-dpaa2/eth: Fix incorrect kfree
    
    [ Upstream commit 6a9bbe53db9a5aa0be9788aa8a2c250dee55444b ]
    
    Use netdev_alloc_frag() instead of kmalloc to allocate space for
    the S/G table of egress multi-buffer frames.
    
    This fixes a bug where an unaligned pointer received from the
    allocator would be overwritten with the 64B aligned value,
    leading to a wrong address being later passed to kfree.
    
    Signed-off-by: Ioana Radulescu <ruxandra.radulescu@nxp.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4dd7e89ae23b4888af258e93469cb397156c68bf
Author: Kirill Marinushkin <k.marinushkin@gmail.com>
Date:   Fri Mar 23 20:32:54 2018 +0100

    staging: bcm2835-audio: Release resources on module_exit()
    
    [ Upstream commit 626118b472d2eb45f83a0276a18d3e6a01c69f6a ]
    
    In the current implementation, `rmmod snd_bcm2835` does not release
    resources properly. It causes an oops when trying to list sound devices.
    
    This commit fixes it.
    
    The details WRT allocation / free are described below.
    
    Device structure WRT allocation:
    
    pdev
      \childdev[]
        \card
          \chip
            \pcm
            \ctl
    
    Allocation / register sequence:
    
    * childdev: devm_kzalloc      - freed during driver detach
    * childdev: device_initialize - freed during device_unregister
    * pdev: devres_alloc          - freed during driver detach
    * childdev: device_add        - removed during device_unregister
    * pdev, childdev: devres_add  - freed during driver detach
    * card: snd_card_new          - freed during snd_card_free
    * chip: kzalloc               - freed during kfree
    * card, chip: snd_device_new  - freed during snd_device_free
    * chip: new_pcm               - TODO: free pcm
    * chip: new_ctl               - TODO: free ctl
    * card: snd_card_register     - unregistered during snd_card_free
    
    Free / unregister sequence:
    
    * card: snd_card_free
    * card, chip: snd_device_free
    * childdev: device_unregister
    * chip: kfree
    
    Steps to reproduce the issue before this commit:
    
    ~~~~
    $ rmmod snd_bcm2835
    $ aplay -L
    [  138.648130] Unable to handle kernel paging request at virtual address 7f1343c0
    [  138.660415] pgd = ad8f0000
    [  138.665567] [7f1343c0] *pgd=3864c811, *pte=00000000, *ppte=00000000
    [  138.674887] Internal error: Oops: 7 [#1] SMP ARM
    [  138.683571] Modules linked in: sha256_generic cfg80211 rfkill snd_pcm snd_timer
     snd fixed uio_pdrv_genirq uio ip_tables x_tables ipv6 [last unloaded: snd_bcm2835
    ]
    [  138.706594] CPU: 3 PID: 463 Comm: aplay Tainted: G        WC       4.15.0-rc1-v
    7+ #6
    [  138.719833] Hardware name: BCM2835
    [  138.726016] task: b877ac00 task.stack: aebec000
    [  138.733408] PC is at try_module_get+0x38/0x24c
    [  138.740813] LR is at snd_ctl_open+0x58/0x194 [snd]
    [  138.748485] pc : [<801c4d5c>]    lr : [<7f0e6b2c>]    psr: 20000013
    [  138.757709] sp : aebedd60  ip : aebedd88  fp : aebedd84
    [  138.765884] r10: 00000000  r9 : 00000004  r8 : 7f0ed440
    [  138.774040] r7 : b7e469b0  r6 : 7f0e6b2c  r5 : afd91900  r4 : 7f1343c0
    [  138.783571] r3 : aebec000  r2 : 00000001  r1 : b877ac00  r0 : 7f1343c0
    [  138.793084] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
    [  138.803300] Control: 10c5387d  Table: 2d8f006a  DAC: 00000055
    [  138.812064] Process aplay (pid: 463, stack limit = 0xaebec210)
    [  138.820868] Stack: (0xaebedd60 to 0xaebee000)
    [  138.828207] dd60: 00000000 b848d000 afd91900 00000000 b7e469b0 7f0ed440 aebedda4 aebedd88
    [  138.842371] dd80: 7f0e6b2c 801c4d30 afd91900 7f0ea4dc 00000000 b7e469b0 aebeddcc aebedda8
    [  138.856611] dda0: 7f0e250c 7f0e6ae0 7f0e2464 b8478ec0 b7e469b0 afd91900 7f0ea388 00000000
    [  138.870864] ddc0: aebeddf4 aebeddd0 802ce590 7f0e2470 8090ab64 afd91900 afd91900 b7e469b0
    [  138.885301] dde0: afd91908 802ce4e4 aebede1c aebeddf8 802c57b4 802ce4f0 afd91900 aebedea8
    [  138.900110] de00: b7fa4c00 00000000 00000000 00000004 aebede3c aebede20 802c6ba8 802c56b4
    [  138.915260] de20: aebedea8 00000000 aebedf5c 00000000 aebedea4 aebede40 802d9a68 802c6b58
    [  138.930661] de40: b874ddd0 00000000 00000000 00000001 00000041 00000000 afd91900 aebede70
    [  138.946402] de60: 00000000 00000000 00000002 b7e469b0 b8a87610 b8d6ab80 801852f8 00080000
    [  138.962314] de80: aebedf5c aebedea8 00000001 80108464 aebec000 00000000 aebedf4c aebedea8
    [  138.978414] dea0: 802dacd4 802d970c b8a87610 b8d6ab80 a7982bc6 00000009 af363019 b9231480
    [  138.994617] dec0: 00000000 b8c038a0 b7e469b0 00000101 00000002 00000238 00000000 00000000
    [  139.010823] dee0: 00000000 aebedee8 00080000 0000000f aebedf3c aebedf00 802ed7e4 80843f94
    [  139.027025] df00: 00000003 00080000 b9231490 b9231480 00000000 00080000 af363000 00000000
    [  139.043229] df20: 00000005 00000002 ffffff9c 00000000 00080000 ffffff9c af363000 00000003
    [  139.059430] df40: aebedf94 aebedf50 802c6f70 802dac70 aebec000 00000000 00000001 00000000
    [  139.075629] df60: 00020000 00000004 00000100 00000001 7ebe577c 0002e038 00000000 00000005
    [  139.091828] df80: 80108464 aebec000 aebedfa4 aebedf98 802c7060 802c6e6c 00000000 aebedfa8
    [  139.108025] dfa0: 801082c0 802c7040 7ebe577c 0002e038 7ebe577c 00080000 00000b98 e81c8400
    [  139.124222] dfc0: 7ebe577c 0002e038 00000000 00000005 7ebe57e4 00a20af8 7ebe57f0 76f87394
    [  139.140419] dfe0: 00000000 7ebe55c4 76ec88e8 76df1d9c 60000010 7ebe577c 00000000 00000000
    [  139.156715] [<801c4d5c>] (try_module_get) from [<7f0e6b2c>] (snd_ctl_open+0x58/0x194 [snd])
    [  139.173222] [<7f0e6b2c>] (snd_ctl_open [snd]) from [<7f0e250c>] (snd_open+0xa8/0x14c [snd])
    [  139.189683] [<7f0e250c>] (snd_open [snd]) from [<802ce590>] (chrdev_open+0xac/0x188)
    [  139.205465] [<802ce590>] (chrdev_open) from [<802c57b4>] (do_dentry_open+0x10c/0x314)
    [  139.221347] [<802c57b4>] (do_dentry_open) from [<802c6ba8>] (vfs_open+0x5c/0x88)
    [  139.236788] [<802c6ba8>] (vfs_open) from [<802d9a68>] (path_openat+0x368/0x944)
    [  139.248270] [<802d9a68>] (path_openat) from [<802dacd4>] (do_filp_open+0x70/0xc4)
    [  139.263731] [<802dacd4>] (do_filp_open) from [<802c6f70>] (do_sys_open+0x110/0x1d4)
    [  139.279378] [<802c6f70>] (do_sys_open) from [<802c7060>] (SyS_open+0x2c/0x30)
    [  139.290647] [<802c7060>] (SyS_open) from [<801082c0>] (ret_fast_syscall+0x0/0x28)
    [  139.306021] Code: e3c3303f e5932004 e2822001 e5832004 (e5943000)
    [  139.316265] ---[ end trace 7f3f7f6193b663ed ]---
    [  139.324956] note: aplay[463] exited with preempt_count 1
    ~~~~
    
    Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
    Cc: Eric Anholt <eric@anholt.net>
    Cc: Stefan Wahren <stefan.wahren@i2se.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: Ray Jui <rjui@broadcom.com>
    Cc: Scott Branden <sbranden@broadcom.com>
    Cc: bcm-kernel-feedback-list@broadcom.com
    Cc: Michael Zoran <mzoran@crowfest.net>
    Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: linux-rpi-kernel@lists.infradead.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: devel@driverdev.osuosl.org
    Cc: linux-kernel@vger.kernel.org
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 066c49ffe98b76d2f6456d87c67df92c6bdf124d
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Wed May 9 19:42:20 2018 +0900

    x86/kexec: Avoid double free_page() upon do_kexec_load() failure
    
    commit a466ef76b815b86748d9870ef2a430af7b39c710 upstream.
    
    >From ff82bedd3e12f0d3353282054ae48c3bd8c72012 Mon Sep 17 00:00:00 2001
    From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Date: Wed, 9 May 2018 12:12:39 +0900
    Subject: x86/kexec: Avoid double free_page() upon do_kexec_load() failure
    
    syzbot is reporting crashes after memory allocation failure inside
    do_kexec_load() [1]. This is because free_transition_pgtable() is called
    by both init_transition_pgtable() and machine_kexec_cleanup() when memory
    allocation failed inside init_transition_pgtable().
    
    Regarding 32bit code, machine_kexec_free_page_tables() is called by both
    machine_kexec_alloc_page_tables() and machine_kexec_cleanup() when memory
    allocation failed inside machine_kexec_alloc_page_tables().
    
    Fix this by leaving the error handling to machine_kexec_cleanup()
    (and optionally setting NULL after free_page()).
    
    [1] https://syzkaller.appspot.com/bug?id=91e52396168cf2bdd572fe1e1bc0bc645c1c6b40
    
    Fixes: f5deb79679af6eb4 ("x86: kexec: Use one page table in x86_64 machine_kexec")
    Fixes: 92be3d6bdf2cb349 ("kexec/i386: allocate page table pages dynamically")
    Reported-by: syzbot <syzbot+d96f60296ef613fe1d69@syzkaller.appspotmail.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Baoquan He <bhe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: prudo@linux.vnet.ibm.com
    Cc: Huang Ying <ying.huang@intel.com>
    Cc: syzkaller-bugs@googlegroups.com
    Cc: takahiro.akashi@linaro.org
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: akpm@linux-foundation.org
    Cc: dyoung@redhat.com
    Cc: kirill.shutemov@linux.intel.com
    Link: https://lkml.kernel.org/r/201805091942.DGG12448.tMFVFSJFQOOLHO@I-love.SAKURA.ne.jp
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca625434bf182b38496565fa911a29e62a647407
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Fri May 18 16:09:16 2018 -0700

    hfsplus: stop workqueue when fill_super() failed
    
    commit 66072c29328717072fd84aaff3e070e3f008ba77 upstream.
    
    syzbot is reporting ODEBUG messages at hfsplus_fill_super() [1].  This
    is because hfsplus_fill_super() forgot to call cancel_delayed_work_sync().
    
    As far as I can see, it is hfsplus_mark_mdb_dirty() from
    hfsplus_new_inode() in hfsplus_fill_super() that calls
    queue_delayed_work().  Therefore, I assume that hfsplus_new_inode() does
    not fail if queue_delayed_work() was called, and the out_put_hidden_dir
    label is the appropriate location to call cancel_delayed_work_sync().
    
    [1] https://syzkaller.appspot.com/bug?id=a66f45e96fdbeb76b796bf46eb25ea878c42a6c9
    
    Link: http://lkml.kernel.org/r/964a8b27-cd69-357c-fe78-76b066056201@I-love.SAKURA.ne.jp
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reported-by: syzbot <syzbot+4f2e5f086147d543ab03@syzkaller.appspotmail.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Ernesto A. Fernandez <ernesto.mnd.fernandez@gmail.com>
    Cc: Vyacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit daf5a03f762c5174d599f765dec54711e13b21ad
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Tue Apr 3 14:33:49 2018 +0200

    cfg80211: limit wiphy names to 128 bytes
    
    commit a7cfebcb7594a24609268f91299ab85ba064bf82 upstream.
    
    There's currently no limit on wiphy names, other than netlink
    message size and memory limitations, but that causes issues when,
    for example, the wiphy name is used in a uevent, e.g. in rfkill
    where we use the same name for the rfkill instance, and then the
    buffer there is "only" 2k for the environment variables.
    
    This was reported by syzkaller, which used a 4k name.
    
    Limit the name to something reasonable, I randomly picked 128.
    
    Reported-by: syzbot+230d9e642a85d3fec29c@syzkaller.appspotmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0725281a6185046e23190bc749f707a145b2b2dc
Author: Omar Sandoval <osandov@fb.com>
Date:   Fri Apr 6 09:57:03 2018 -0700

    loop: fix LOOP_GET_STATUS lock imbalance
    
    commit bdac616db9bbadb90b7d6a406144571015e138f7 upstream.
    
    Commit 2d1d4c1e591f made loop_get_status() drop lo_ctx_mutex before
    returning, but the loop_get_status_old(), loop_get_status64(), and
    loop_get_status_compat() wrappers don't call loop_get_status() if the
    passed argument is NULL. The callers expect that the lock is dropped, so
    make sure we drop it in that case, too.
    
    Reported-by: syzbot+31e8daa8b3fc129e75f2@syzkaller.appspotmail.com
    Fixes: 2d1d4c1e591f ("loop: don't call into filesystem while holding lo_ctl_mutex")
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a0e8aa0f0f2e8df4703c53b2a7f59a02b98a8da
Author: Omar Sandoval <osandov@fb.com>
Date:   Mon Mar 26 21:39:11 2018 -0700

    loop: don't call into filesystem while holding lo_ctl_mutex
    
    commit 2d1d4c1e591fd40bd7dafd868a249d7d00e215d5 upstream.
    
    We hit an issue where a loop device on NFS was stuck in
    loop_get_status() doing vfs_getattr() after the NFS server died, which
    caused a pile-up of uninterruptible processes waiting on lo_ctl_mutex.
    There's no reason to hold this lock while we wait on the filesystem;
    let's drop it so that other processes can do their thing. We need to
    grab a reference on lo_backing_file while we use it, and we can get rid
    of the check on lo_device, which has been unnecessary since commit
    a34c0ae9ebd6 ("[PATCH] loop: remove the bio remapping capability") in
    the linux-history tree.
    
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d04d5683cfff53abff567f78e09bbc97bb6a80d7
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Mar 16 16:33:06 2018 +0200

    xhci: Show what USB release number the xHC supports from protocol capablity
    
    [ Upstream commit 0ee78c101425aae681c631ba59c6ac7f44b1d83a ]
    
    xhci driver displays the supported xHC USB revision in a message during
    driver load:
    
    "Host supports USB 3.1 Enhanced SuperSpeed"
    
    Get the USB minor revision number from the xhci protocol capability.
    This will show the correct supported revisions for new USB 3.2 and later
    hosts
    
    Don't rely on the SBRN (serial bus revision number) register, it's often
    showing 0x30 (USB3.0) for hosts that support USB 3.1
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e60e385951aa8ef3e217ed2422aa215e65dcab01
Author: Tedd Ho-Jeong An <tedd.an@intel.com>
Date:   Mon Feb 5 14:20:36 2018 -0800

    Bluetooth: btusb: Add support for Intel Bluetooth device 22560 [8087:0026]
    
    [ Upstream commit 1ce0cec1c14cda7e514fa21b36c0f035203b447d ]
    
    The Intel Bluetooth device 22560 family (HarrisonPeak, QnJ, and IcyPeak)
    use the same firmware loading mechanism as previous generation,
    so include new USB product ID and whitelist the hardware variant.
    
    T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 16 Spd=12   MxCh= 0
    D:  Ver= 2.01 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=8087 ProdID=0026 Rev= 0.01
    C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=1ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    
    Signed-off-by: Tedd Ho-Jeong An <tedd.an@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f534bd8e8de22b75ddce4826af6f861a4b08e43
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Sun Feb 11 12:24:32 2018 -0600

    Bluetooth: btusb: Add device ID for RTL8822BE
    
    [ Upstream commit fed03fe7e55b7dc16077f672bd9d7bbe92b3a691 ]
    
    The Asus Z370-I contains a Realtek RTL8822BE device with an associated
    BT chip using a USB ID of 0b05:185c. This device is added to the driver.
    
    Signed-off-by: Hon Weng Chong <honwchong@gmail.com>
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23a18ae07dd3271001f02b65002cffce8204c308
Author: Brad Love <brad@nextdimension.cc>
Date:   Thu Jan 4 19:04:13 2018 -0500

    media: em28xx: USB bulk packet size fix
    
    [ Upstream commit c7c7e8d7803406daa21e96d00c357de8b77b6764 ]
    
    Hauppauge em28xx bulk devices exhibit continuity errors and corrupted
    packets, when run in VMWare virtual machines. Unknown if other
    manufacturers bulk models exhibit the same issue. KVM/Qemu is unaffected.
    
    According to documentation the maximum packet multiplier for em28xx in bulk
    transfer mode is 256 * 188 bytes. This changes the size of bulk transfers
    to maximum supported value and have a bonus beneficial alignment.
    
    Before:
    
    After:
    
    This sets up USB to expect just as many bytes as the em28xx is set to emit.
    
    Successful usage under load afterwards natively and in both VMWare
    and KVM/Qemu virtual machines.
    
    Signed-off-by: Brad Love <brad@nextdimension.cc>
    Reviewed-by: Michael Ira Krufky <mkrufky@linuxtv.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f66e184db1387d3c243a7f6968845e11972a4643
Author: Brad Love <brad@nextdimension.cc>
Date:   Fri Jan 5 09:57:12 2018 -0500

    media: lgdt3306a: Fix module count mismatch on usb unplug
    
    [ Upstream commit 835d66173a38538c072a7c393d02360dcfac8582 ]
    
    When used as an i2c device there is a module usage count mismatch on
    removal, preventing the driver from being used thereafter. dvb_attach
    increments the usage count so it is properly balanced on removal.
    
    On disconnect of Hauppauge SoloHD/DualHD before:
    
    lsmod | grep lgdt3306a
    lgdt3306a              28672  -1
    i2c_mux                16384  1 lgdt3306a
    
    On disconnect of Hauppauge SoloHD/DualHD after:
    
    lsmod | grep lgdt3306a
    lgdt3306a              28672  0
    i2c_mux                16384  1 lgdt3306a
    
    Signed-off-by: Brad Love <brad@nextdimension.cc>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9f7afecf1c0b93fbd7009c1e44ea64fac1f0a21
Author: Chris Dickens <christopher.a.dickens@gmail.com>
Date:   Sun Dec 31 18:59:42 2017 -0800

    usb: gadget: composite: fix incorrect handling of OS desc requests
    
    [ Upstream commit 5d6ae4f0da8a64a185074dabb1b2f8c148efa741 ]
    
    When handling an OS descriptor request, one of the first operations is
    to zero out the request buffer using the wLength from the setup packet.
    There is no bounds checking, so a wLength > 4096 would clobber memory
    adjacent to the request buffer. Fix this by taking the min of wLength
    and the request buffer length prior to the memset. While at it, define
    the buffer length in a header file so that magic numbers don't appear
    throughout the code.
    
    When returning data to the host, the data length should be the min of
    the wLength and the valid data we have to return. Currently we are
    returning wLength, thus requests for a wLength greater than the amount
    of data in the OS descriptor buffer would return invalid (albeit zero'd)
    data following the valid descriptor data. Fix this by counting the
    number of bytes when constructing the data and using this when
    determining the length of the request.
    
    Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 132990e70f7a42b11df6cf94e2a4e9f214e9c2ff
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Tue Feb 6 09:50:40 2018 +0100

    usb: gadget: udc: change comparison to bitshift when dealing with a mask
    
    [ Upstream commit ac87e560f7c0f91b62012e9a159c0681a373b922 ]
    
    Due to a typo, the mask was destroyed by a comparison instead of a bit
    shift.
    
    Reported-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9bc62ffe1033e066dce91e2526d9c1ee445560f2
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Mon Jan 29 00:04:18 2018 +0000

    usbip: Correct maximum value of CONFIG_USBIP_VHCI_HC_PORTS
    
    [ Upstream commit 351a8d4837ae0d61744e64262c3a80ab92ff3e42 ]
    
    Now that usbip supports USB3, the maximum number of ports allowed
    on a hub is 15 (USB_SS_MAXPORTS), not 31 (USB_MAXCHILDREN).
    
    Reported-by: Gianluigi Tiesi <sherpya@netfarm.it>
    Reported-by: Borissh1983 <borissh1983@gmail.com>
    References: https://bugs.debian.org/878866
    Fixes: 1c9de5bf4286 ("usbip: vhci-hcd: Add USB3 SuperSpeed support")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4f7e893c387c957c89ffc4356e0c50fad333a85
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Fri Jan 12 11:05:02 2018 +0100

    usb: gadget: ffs: Execute copy_to_user() with USER_DS set
    
    [ Upstream commit 4058ebf33cb0be88ca516f968eda24ab7b6b93e4 ]
    
    When using a AIO read() operation on the function FS gadget driver a URB is
    submitted asynchronously and on URB completion the received data is copied
    to the userspace buffer associated with the read operation.
    
    This is done from a kernel worker thread invoking copy_to_user() (through
    copy_to_iter()). And while the user space process memory is made available
    to the kernel thread using use_mm(), some architecture require in addition
    to this that the operation runs with USER_DS set. Otherwise the userspace
    memory access will fail.
    
    For example on ARM64 with Privileged Access Never (PAN) and User Access
    Override (UAO) enabled the following crash occurs.
    
            Internal error: Accessing user space memory with fs=KERNEL_DS: 9600004f [#1] SMP
            Modules linked in:
            CPU: 2 PID: 1636 Comm: kworker/2:1 Not tainted 4.9.0-04081-g8ab2dfb-dirty #487
            Hardware name: ZynqMP ZCU102 Rev1.0 (DT)
            Workqueue: events ffs_user_copy_worker
            task: ffffffc87afc8080 task.stack: ffffffc87a00c000
            PC is at __arch_copy_to_user+0x190/0x220
            LR is at copy_to_iter+0x78/0x3c8
            [...]
            [<ffffff800847b790>] __arch_copy_to_user+0x190/0x220
            [<ffffff80086f25d8>] ffs_user_copy_worker+0x70/0x130
            [<ffffff80080b8c64>] process_one_work+0x1dc/0x460
            [<ffffff80080b8f38>] worker_thread+0x50/0x4b0
            [<ffffff80080bf5a0>] kthread+0xd8/0xf0
            [<ffffff8008083680>] ret_from_fork+0x10/0x50
    
    Address this by placing a set_fs(USER_DS) before of the copy operation
    and revert it again once the copy operation has finished.
    
    This patch is analogous to commit d7ffde35e31a ("vhost: use USER_DS in
    vhost_worker thread") which addresses the same underlying issue.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f2964fa640e18e88686daf44785d6e2617d9e0e
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Fri Jan 12 11:26:16 2018 +0100

    usb: gadget: ffs: Let setup() return USB_GADGET_DELAYED_STATUS
    
    [ Upstream commit 946ef68ad4e45aa048a5fb41ce8823ed29da866a ]
    
    Some UDC drivers (like the DWC3) expect that the response to a setup()
    request is queued from within the setup function itself so that it is
    available as soon as setup() has completed.
    
    Upon receiving a setup request the function fs driver creates an event that
    is made available to userspace. And only once userspace has acknowledged
    that event the response to the setup request is queued.
    
    So it violates the requirement of those UDC drivers and random failures can
    be observed. This is basically a race condition and if userspace is able to
    read the event and queue the response fast enough all is good. But if it is
    not, for example because other processes are currently scheduled to run,
    the USB host that sent the setup request will observe an error.
    
    To avoid this the gadget framework provides the USB_GADGET_DELAYED_STATUS
    return code. If a setup() callback returns this value the UDC driver is
    aware that response is not yet available and can uses the appropriate
    methods to handle this case.
    
    Since in the case of function fs the response will never be available when
    the setup() function returns make sure that this status code is used.
    
    This fixed random occasional failures that were previously observed on a
    DWC3 based system under high system load.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f217bc20dac4ef4a4781484fb1ec8f286e17f3c
Author: Minas Harutyunyan <hminas@synopsys.com>
Date:   Fri Jan 19 14:44:20 2018 +0400

    usb: dwc2: host: Fix transaction errors in host mode
    
    [ Upstream commit 92a8dd26464e1f21f1d869ec53717bd2c1200d63 ]
    
    Added missing GUSBCFG programming in host mode, which fixes
    transaction errors issue on HiKey and Altera Cyclone V boards.
    
    These field even if was programmed in device mode (in function
    dwc2_hsotg_core_init_disconnected()) will be resetting to POR values
    after core soft reset applied.
    So, each time when switching to host mode required to set this field
    to correct value.
    
    Acked-by: John Youn <johnyoun@synopsys.com>
    Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
    Signed-off-by: Grigor Tovmasyan <tovmasya@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb7bdfff41d63bcb8455d548196361eff05d4415
Author: Minas Harutyunyan <hminas@synopsys.com>
Date:   Fri Jan 19 14:43:53 2018 +0400

    usb: dwc2: hcd: Fix host channel halt flow
    
    [ Upstream commit a82c7abdf8fc3b09c4a0ed2eee6d43ecef2ccdb0 ]
    
    According databook in Buffer and External DMA mode
    non-split periodic channels can't be halted.
    
    Acked-by: John Youn <johnyoun@synopsys.com>
    Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
    Signed-off-by: Grigor Tovmasyan <tovmasya@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f85052b8eb7ed2b194988bef50d80e44f7f5c542
Author: Grigor Tovmasyan <Grigor.Tovmasyan@synopsys.com>
Date:   Tue Feb 6 19:07:38 2018 +0400

    usb: dwc2: Fix interval type issue
    
    [ Upstream commit 12814a3f8f9b247531d7863170cc82b3fe4218fd ]
    
    The maximum value that unsigned char can hold is 255, meanwhile
    the maximum value of interval is  2^(bIntervalMax-1)=2^15.
    
    Signed-off-by: Grigor Tovmasyan <tovmasya@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 242cf367cd342a2191ce1351f073d2b701363ff3
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Mar 16 16:33:01 2018 +0200

    xhci: zero usb device slot_id member when disabling and freeing a xhci slot
    
    [ Upstream commit a400efe455f7b61ac9a801ac8d0d01f8c8d82dd5 ]
    
    set udev->slot_id to zero when disabling and freeing the xhci slot.
    Prevents usb core from calling xhci with a stale slot id.
    
    xHC controller may be reset during resume to recover from some error.
    All slots are unusable as they are disabled and freed.
    xhci driver starts slot enumeration again from 1 in the order they are
    enabled. In the worst case a stale udev->slot_id for one device matches
    a newly enabled slot_id for a different device, causing us to
    perform a action on the wrong device.
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20bad908346342531b6688f74ab92ade3c98b130
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Thu Mar 22 10:45:20 2018 +0200

    usb: dwc3: Makefile: fix link error on randconfig
    
    [ Upstream commit de948a74ad6f0eefddf36d765b8f2dd6df82caa0 ]
    
    If building a kernel without FTRACE but with TRACING, dwc3.ko fails to
    link due to missing trace events. Fix this by using the correct
    Kconfig symbol on Makefile.
    
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83d08e8df0fa1b980dc5903bb8c4fc12d6565ea8
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Fri Mar 16 15:33:54 2018 -0700

    usb: dwc3: Update DWC_usb31 GTXFIFOSIZ reg fields
    
    [ Upstream commit 0cab8d26d6e5e053b2bed3356992aaa71dc93628 ]
    
    Update two GTXFIFOSIZ bit fields for the DWC_usb31 controller. TXFDEP
    is a 15-bit value instead of 16-bit value, and bit 15 is TXFRAMNUM.
    
    The GTXFIFOSIZ register for DWC_usb31 is as follows:
     +-------+-----------+----------------------------------+
     | BITS  | Name      | Description                      |
     +=======+===========+==================================+
     | 31:16 | TXFSTADDR | Transmit FIFOn RAM Start Address |
     | 15    | TXFRAMNUM | Asynchronous/Periodic TXFIFO     |
     | 14:0  | TXFDEP    | TXFIFO Depth                     |
     +-------+-----------+----------------------------------+
    
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa9160f6b65a664b5746b82c56bdacdd3ecbcba1
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Fri Mar 16 15:33:48 2018 -0700

    usb: dwc3: Add SoftReset PHY synchonization delay
    
    [ Upstream commit fab3833338779e1e668bd58d1f76d601657304b8 ]
    
    >From DWC_usb31 programming guide section 1.3.2, once DWC3_DCTL_CSFTRST
    bit is cleared, we must wait at least 50ms before accessing the PHY
    domain (synchronization delay).
    
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9ad8891b4a3712636b379eb0b3dfdd74415ae2b
Author: Nobutaka Okabe <nob77413@gmail.com>
Date:   Fri Mar 23 19:18:22 2018 +0900

    ALSA: usb-audio: Add native DSD support for Luxman DA-06
    
    [ Upstream commit 71426535f49fe6034d0e0db77608b91a0c1a022d ]
    
    Add native DSD support quirk for Luxman DA-06 DAC, by adding the
    PID/VID 1852:5065.
    
    Rename "is_marantz_denon_dac()" function to "is_itf_usb_dsd_2alts_dac()"
    to cover broader device family sharing the same USB audio
    implementation(*).
    For the same reason, rename "is_teac_dsd_dac()" function to
    "is_itf_usb_dsd_3alts_dac()".
    
    (*)
    These devices have the same USB controller "ITF-USB DSD", supplied by
    INTERFACE Co., Ltd.
    "ITF-USB DSD" USB controller has two patterns,
    
    Pattern 1. (2 altsets version)
    - Altset 0: for control
    - Altset 1: for stream (S32)
    - Altset 2: for stream (S32, DSD_U32)
    
    Pattern 2. (3 altsets version)
    - Altset 0: for control
    - Altset 1: for stream (S16)
    - Altset 2: for stream (S32)
    - Altset 3: for stream (S32, DSD_U32)
    
    "is_itf_usb_dsd_2alts_dac()" returns true, if the DAC has "Pattern 1"
    USB controller, and "is_itf_usb_dsd_3alts_dac()" returns true, if
    "Pattern2".
    
    Signed-off-by: Nobutaka Okabe <nob77413@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f187b62e7e268392dd4564e1a4731417d9c97410
Author: Vicente Bergas <vicencb@gmail.com>
Date:   Tue Mar 20 19:41:10 2018 +0100

    Bluetooth: btusb: Add USB ID 7392:a611 for Edimax EW-7611ULB
    
    [ Upstream commit a41e0796396eeceff673af4a38feaee149c6ff86 ]
    
    This WiFi/Bluetooth USB dongle uses a Realtek chipset, so, use btrtl for it.
    
    Product information:
    https://wikidevi.com/wiki/Edimax_EW-7611ULB
    
    >From /sys/kernel/debug/usb/devices
    T:  Bus=02 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=7392 ProdID=a611 Rev= 2.00
    S:  Manufacturer=Realtek
    S:  Product=Edimax Wi-Fi N150 Bluetooth4.0 USB Adapter
    S:  SerialNumber=00e04c000001
    C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=01
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    I:* If#= 2 Alt= 0 #EPs= 6 Cls=ff(vend.) Sub=ff Prot=ff Driver=rtl8723bu
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=500us
    E:  Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=09(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Tested-by: Vicente Bergas <vicencb@gmail.com>
    Signed-off-by: Vicente Bergas <vicencb@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0536699996fdca5a221e292e54278ef36bff9bc8
Author: Jens Remus <jremus@linux.ibm.com>
Date:   Thu May 3 13:52:47 2018 +0200

    scsi: zfcp: fix infinite iteration on ERP ready list
    
    commit fa89adba1941e4f3b213399b81732a5c12fd9131 upstream.
    
    zfcp_erp_adapter_reopen() schedules blocking of all of the adapter's
    rports via zfcp_scsi_schedule_rports_block() and enqueues a reopen
    adapter ERP action via zfcp_erp_action_enqueue(). Both are separately
    processed asynchronously and concurrently.
    
    Blocking of rports is done in a kworker by zfcp_scsi_rport_work(). It
    calls zfcp_scsi_rport_block(), which then traces a DBF REC "scpdely" via
    zfcp_dbf_rec_trig().  zfcp_dbf_rec_trig() acquires the DBF REC spin lock
    and then iterates with list_for_each() over the adapter's ERP ready list
    without holding the ERP lock. This opens a race window in which the
    current list entry can be moved to another list, causing list_for_each()
    to iterate forever on the wrong list, as the erp_ready_head is never
    encountered as terminal condition.
    
    Meanwhile the ERP action can be processed in the ERP thread by
    zfcp_erp_thread(). It calls zfcp_erp_strategy(), which acquires the ERP
    lock and then calls zfcp_erp_action_to_running() to move the ERP action
    from the ready to the running list.  zfcp_erp_action_to_running() can
    move the ERP action using list_move() just during the aforementioned
    race window. It then traces a REC RUN "erator1" via zfcp_dbf_rec_run().
    zfcp_dbf_rec_run() tries to acquire the DBF REC spin lock. If this is
    held by the infinitely looping kworker, it effectively spins forever.
    
    Example Sequence Diagram:
    
    Process                ERP Thread             rport_work
    -------------------    -------------------    -------------------
    zfcp_erp_adapter_reopen()
    zfcp_erp_adapter_block()
    zfcp_scsi_schedule_rports_block()
    lock ERP                                      zfcp_scsi_rport_work()
    zfcp_erp_action_enqueue(ZFCP_ERP_ACTION_REOPEN_ADAPTER)
    list_add_tail() on ready                      !(rport_task==RPORT_ADD)
    wake_up() ERP thread                          zfcp_scsi_rport_block()
    zfcp_dbf_rec_trig()    zfcp_erp_strategy()    zfcp_dbf_rec_trig()
    unlock ERP                                    lock DBF REC
    zfcp_erp_wait()        lock ERP
    |                      zfcp_erp_action_to_running()
    |                                             list_for_each() ready
    |                      list_move()              current entry
    |                        ready to running
    |                      zfcp_dbf_rec_run()       endless loop over running
    |                      zfcp_dbf_rec_run_lvl()
    |                      lock DBF REC spins forever
    
    Any adapter recovery can trigger this, such as setting the device offline
    or reboot.
    
    V4.9 commit 4eeaa4f3f1d6 ("zfcp: close window with unblocked rport
    during rport gone") introduced additional tracing of (un)blocking of
    rports. It missed that the adapter->erp_lock must be held when calling
    zfcp_dbf_rec_trig().
    
    This fix uses the approach formerly introduced by commit aa0fec62391c
    ("[SCSI] zfcp: Fix sparse warning by providing new entry in dbf") that got
    later removed by commit ae0904f60fab ("[SCSI] zfcp: Redesign of the debug
    tracing for recovery actions.").
    
    Introduce zfcp_dbf_rec_trig_lock(), a wrapper for zfcp_dbf_rec_trig() that
    acquires and releases the adapter->erp_lock for read.
    
    Reported-by: Sebastian Ott <sebott@linux.ibm.com>
    Signed-off-by: Jens Remus <jremus@linux.ibm.com>
    Fixes: 4eeaa4f3f1d6 ("zfcp: close window with unblocked rport during rport gone")
    Cc: <stable@vger.kernel.org> # 2.6.32+
    Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39169410574503c6e901de1aa6eac5108475e017
Author: Alexander Potapenko <glider@google.com>
Date:   Fri May 18 16:23:18 2018 +0200

    scsi: sg: allocate with __GFP_ZERO in sg_build_indirect()
    
    commit a45b599ad808c3c982fdcdc12b0b8611c2f92824 upstream.
    
    This shall help avoid copying uninitialized memory to the userspace when
    calling ioctl(fd, SG_IO) with an empty command.
    
    Reported-by: syzbot+7d26fc1eea198488deab@syzkaller.appspotmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit edbfba1070fa4a7276e07e647023e9790316e25b
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:31 2018 +0200

    s390: use expoline thunks in the BPF JIT
    
    [ Upstream commit de5cb6eb514ebe241e3edeb290cb41deb380b81d ]
    
    The BPF JIT need safe guarding against spectre v2 in the sk_load_xxx
    assembler stubs and the indirect branches generated by the JIT itself
    need to be converted to expolines.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba8e36486b813c27d45779ee80af1b5207c0b19c
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:30 2018 +0200

    s390: extend expoline to BC instructions
    
    [ Upstream commit 6deaa3bbca804b2a3627fd685f75de64da7be535 ]
    
    The BPF JIT uses a 'b <disp>(%r<x>)' instruction in the definition
    of the sk_load_word and sk_load_half functions.
    
    Add support for branch-on-condition instructions contained in the
    thunk code of an expoline.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e236e1ae627357f640659ef6063916f93af416aa
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:29 2018 +0200

    s390: move spectre sysfs attribute code
    
    [ Upstream commit 4253b0e0627ee3461e64c2495c616f1c8f6b127b ]
    
    The nospec-branch.c file is compiled without the gcc options to
    generate expoline thunks. The return branch of the sysfs show
    functions cpu_show_spectre_v1 and cpu_show_spectre_v2 is an indirect
    branch as well. These need to be compiled with expolines.
    
    Move the sysfs functions for spectre reporting to a separate file
    and loose an '.' for one of the messages.
    
    Cc: stable@vger.kernel.org # 4.16
    Fixes: d424986f1d ("s390: add sysfs attributes for spectre")
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14986e84d4d8e4aa49458d6e529ed9d43984c54a
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:28 2018 +0200

    s390/kernel: use expoline for indirect branches
    
    [ Upstream commit c50c84c3ac4d5db683904bdb3257798b6ef980ae ]
    
    The assember code in arch/s390/kernel uses a few more indirect branches
    which need to be done with execute trampolines for CONFIG_EXPOLINE=y.
    
    Cc: stable@vger.kernel.org # 4.16
    Fixes: f19fbd5ed6 ("s390: introduce execute-trampolines for branches")
    Reviewed-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3956a1ec976949246d3215eedc5a026995774151
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:27 2018 +0200

    s390/ftrace: use expoline for indirect branches
    
    [ Upstream commit 23a4d7fd34856da8218c4cfc23dba7a6ec0a423a ]
    
    The return from the ftrace_stub, _mcount, ftrace_caller and
    return_to_handler functions is done with "br %r14" and "br %r1".
    These are indirect branches as well and need to use execute
    trampolines for CONFIG_EXPOLINE=y.
    
    The ftrace_caller function is a special case as it returns to the
    start of a function and may only use %r0 and %r1. For a pre z10
    machine the standard execute trampoline uses a LARL + EX to do
    this, but this requires *two* registers in the range %r1..%r15.
    To get around this the 'br %r1' located in the lowcore is used,
    then the EX instruction does not need an address register.
    But the lowcore trick may only be used for pre z14 machines,
    with noexec=on the mapping for the first page may not contain
    instructions. The solution for that is an ALTERNATIVE in the
    expoline THUNK generated by 'GEN_BR_THUNK %r1' to switch to
    EXRL, this relies on the fact that a machine that supports
    noexec=on has EXRL as well.
    
    Cc: stable@vger.kernel.org # 4.16
    Fixes: f19fbd5ed6 ("s390: introduce execute-trampolines for branches")
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8aa5836f2c7bbe1902d4a408fdc1433ec2ccd49
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:26 2018 +0200

    s390/lib: use expoline for indirect branches
    
    [ Upstream commit 97489e0663fa700d6e7febddc43b58df98d7bcda ]
    
    The return from the memmove, memset, memcpy, __memset16, __memset32 and
    __memset64 functions are done with "br %r14". These are indirect branches
    as well and need to use execute trampolines for CONFIG_EXPOLINE=y.
    
    Cc: stable@vger.kernel.org # 4.16
    Fixes: f19fbd5ed6 ("s390: introduce execute-trampolines for branches")
    Reviewed-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f212c49e9c8e4f74330c5dd7c5b120ceb8b5aab
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:25 2018 +0200

    s390/crc32-vx: use expoline for indirect branches
    
    [ Upstream commit 467a3bf219cee12259182c5cb4821f88fd518a51 ]
    
    The return from the crc32_le_vgfm_16/crc32c_le_vgfm_16 and the
    crc32_be_vgfm_16 functions are done with "br %r14". These are indirect
    branches as well and need to use execute trampolines for CONFIG_EXPOLINE=y.
    
    Cc: stable@vger.kernel.org # 4.16
    Fixes: f19fbd5ed6 ("s390: introduce execute-trampolines for branches")
    Reviewed-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0a844e8299879bc027110d8d21e5a698eb1dd54
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:24 2018 +0200

    s390: move expoline assembler macros to a header
    
    [ Upstream commit 6dd85fbb87d1d6b87a3b1f02ca28d7b2abd2e7ba ]
    
    To be able to use the expoline branches in different assembler
    files move the associated macros from entry.S to a new header
    nospec-insn.h.
    
    While we are at it make the macros a bit nicer to use.
    
    Cc: stable@vger.kernel.org # 4.16
    Fixes: f19fbd5ed6 ("s390: introduce execute-trampolines for branches")
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5997d61ea7f9b7ebe6d44f4d1406a70f2e9c0bfd
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:23 2018 +0200

    s390: correct module section names for expoline code revert
    
    [ Upstream commit 6cf09958f32b9667bb3ebadf74367c791112771b ]
    
    The main linker script vmlinux.lds.S for the kernel image merges
    the expoline code patch tables into two section ".nospec_call_table"
    and ".nospec_return_table". This is *not* done for the modules,
    there the sections retain their original names as generated by gcc:
    ".s390_indirect_call", ".s390_return_mem" and ".s390_return_reg".
    
    The module_finalize code has to check for the compiler generated
    section names, otherwise no code patching is done. This slows down
    the module code in case of "spectre_v2=off".
    
    Cc: stable@vger.kernel.org # 4.16
    Fixes: f19fbd5ed6 ("s390: introduce execute-trampolines for branches")
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac8523574f17df2682ad060ca0783c8f5d3c597f
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:22 2018 +0200

    s390: correct nospec auto detection init order
    
    [ Upstream commit 6a3d1e81a434fc311f224b8be77258bafc18ccc6 ]
    
    With CONFIG_EXPOLINE_AUTO=y the call of spectre_v2_auto_early() via
    early_initcall is done *after* the early_param functions. This
    overwrites any settings done with the nobp/no_spectre_v2/spectre_v2
    parameters. The code patching for the kernel is done after the
    evaluation of the early parameters but before the early_initcall
    is done. The end result is a kernel image that is patched correctly
    but the kernel modules are not.
    
    Make sure that the nospec auto detection function is called before the
    early parameters are evaluated and before the code patching is done.
    
    Fixes: 6e179d64126b ("s390: add automatic detection of the spectre defense")
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aff35c69d283f226e15343588fc11fad613edcf7
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:21 2018 +0200

    s390: add assembler macros for CPU alternatives
    
    [ Upstream commit fba9eb7946251d6e420df3bdf7bc45195be7be9a ]
    
    Add a header with macros usable in assembler files to emit alternative
    code sequences. It works analog to the alternatives for inline assmeblies
    in C files, with the same restrictions and capabilities.
    The syntax is
    
         ALTERNATIVE "<default instructions sequence>", \
                     "<alternative instructions sequence>", \
                     "<features-bit>"
    and
    
         ALTERNATIVE_2 "<default instructions sequence>", \
                       "<alternative instructions sqeuence #1>", \
                       "<feature-bit #1>",
                       "<alternative instructions sqeuence #2>", \
                       "<feature-bit #2>"
    
    Reviewed-by: Vasily Gorbik <gor@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49e2d0e280dd1ca994e525cfc912890257fe49a5
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:20 2018 +0200

    s390: add sysfs attributes for spectre
    
    [ Upstream commit d424986f1d6b16079b3231db0314923f4f8deed1 ]
    
    Set CONFIG_GENERIC_CPU_VULNERABILITIES and provide the two functions
    cpu_show_spectre_v1 and cpu_show_spectre_v2 to report the spectre
    mitigations.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d2addd794f28028ded4289996424f04e0e9b150
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:19 2018 +0200

    s390: report spectre mitigation via syslog
    
    [ Upstream commit bc035599718412cfba9249aa713f90ef13f13ee9 ]
    
    Add a boot message if either of the spectre defenses is active.
    The message is
        "Spectre V2 mitigation: execute trampolines."
    or  "Spectre V2 mitigation: limited branch prediction."
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78ddb798862fca11ef01e304e8d0e0b4a496c20a
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:18 2018 +0200

    s390: add automatic detection of the spectre defense
    
    [ Upstream commit 6e179d64126b909f0b288fa63cdbf07c531e9b1d ]
    
    Automatically decide between nobp vs. expolines if the spectre_v2=auto
    kernel parameter is specified or CONFIG_EXPOLINE_AUTO=y is set.
    
    The decision made at boot time due to CONFIG_EXPOLINE_AUTO=y being set
    can be overruled with the nobp, nospec and spectre_v2 kernel parameters.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6102c5edcb8496c0dca53bd2674a592153fa2e4c
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed May 23 18:22:17 2018 +0200

    s390: move nobp parameter functions to nospec-branch.c
    
    [ Upstream commit b2e2f43a01bace1a25bdbae04c9f9846882b727a ]
    
    Keep the code for the nobp parameter handling with the code for
    expolines. Both are related to the spectre v2 mitigation.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18cdd9bc7889ca87b9746dd5eebbce230744769b
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Wed May 23 00:41:25 2018 +1000

    powerpc/64s: Add support for a store forwarding barrier at kernel entry/exit
    
    commit a048a07d7f4535baa4cbad6bc024f175317ab938 upstream.
    
    On some CPUs we can prevent a vulnerability related to store-to-load
    forwarding by preventing store forwarding between privilege domains,
    by inserting a barrier in kernel entry and exit paths.
    
    This is known to be the case on at least Power7, Power8 and Power9
    powerpc CPUs.
    
    Barriers must be inserted generally before the first load after moving
    to a higher privilege, and after the last store before moving to a
    lower privilege, HV and PR privilege transitions must be protected.
    
    Barriers are added as patch sections, with all kernel/hypervisor entry
    points patched, and the exit points to lower privilge levels patched
    similarly to the RFI flush patching.
    
    Firmware advertisement is not implemented yet, so CPU flush types
    are hard coded.
    
    Thanks to Michal Suchánek for bug fixes and review.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Michal Suchánek <msuchanek@suse.de>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 757a5c7c26ebf1c4201322f9a7a977d305559203
Author: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
Date:   Wed May 23 00:41:24 2018 +1000

    powerpc: Move default security feature flags
    
    commit e7347a86830f38dc3e40c8f7e28c04412b12a2e7 upstream.
    
    This moves the definition of the default security feature flags
    (i.e., enabled by default) closer to the security feature flags.
    
    This can be used to restore current flags to the default flags.
    
    Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a37de314d5801446ac218bb19bb6d030ee3570af
Author: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
Date:   Wed May 23 00:41:23 2018 +1000

    powerpc/pseries: Fix clearing of security feature flags
    
    commit 0f9bdfe3c77091e8704d2e510eb7c2c2c6cde524 upstream.
    
    The H_CPU_BEHAV_* flags should be checked for in the 'behaviour' field
    of 'struct h_cpu_char_result' -- 'character' is for H_CPU_CHAR_*
    flags.
    
    Found by playing around with QEMU's implementation of the hypercall:
    
      H_CPU_CHAR=0xf000000000000000
      H_CPU_BEHAV=0x0000000000000000
    
      This clears H_CPU_BEHAV_FAVOUR_SECURITY and H_CPU_BEHAV_L1D_FLUSH_PR
      so pseries_setup_rfi_flush() disables 'rfi_flush'; and it also
      clears H_CPU_CHAR_L1D_THREAD_PRIV flag. So there is no RFI flush
      mitigation at all for cpu_show_meltdown() to report; but currently
      it does:
    
      Original kernel:
    
        # cat /sys/devices/system/cpu/vulnerabilities/meltdown
        Mitigation: RFI Flush
    
      Patched kernel:
    
        # cat /sys/devices/system/cpu/vulnerabilities/meltdown
        Not affected
    
      H_CPU_CHAR=0x0000000000000000
      H_CPU_BEHAV=0xf000000000000000
    
      This sets H_CPU_BEHAV_BNDS_CHK_SPEC_BAR so cpu_show_spectre_v1() should
      report vulnerable; but currently it doesn't:
    
      Original kernel:
    
        # cat /sys/devices/system/cpu/vulnerabilities/spectre_v1
        Not affected
    
      Patched kernel:
    
        # cat /sys/devices/system/cpu/vulnerabilities/spectre_v1
        Vulnerable
    
    Brown-paper-bag-by: Michael Ellerman <mpe@ellerman.id.au>
    Fixes: f636c14790ea ("powerpc/pseries: Set or clear security feature flags")
    Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f51f4e2cdf495d278ff49e65276c30f00b141a3b
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed May 23 00:41:22 2018 +1000

    powerpc/64s: Wire up cpu_show_spectre_v2()
    
    commit d6fbe1c55c55c6937cbea3531af7da84ab7473c3 upstream.
    
    Add a definition for cpu_show_spectre_v2() to override the generic
    version. This has several permuations, though in practice some may not
    occur we cater for any combination.
    
    The most verbose is:
    
      Mitigation: Indirect branch serialisation (kernel only), Indirect
      branch cache disabled, ori31 speculation barrier enabled
    
    We don't treat the ori31 speculation barrier as a mitigation on its
    own, because it has to be *used* by code in order to be a mitigation
    and we don't know if userspace is doing that. So if that's all we see
    we say:
    
      Vulnerable, ori31 speculation barrier enabled
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98c92788e847e85b812e20a983ae282fa2cbed85
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed May 23 00:41:21 2018 +1000

    powerpc/64s: Wire up cpu_show_spectre_v1()
    
    commit 56986016cb8cd9050e601831fe89f332b4e3c46e upstream.
    
    Add a definition for cpu_show_spectre_v1() to override the generic
    version. Currently this just prints "Not affected" or "Vulnerable"
    based on the firmware flag.
    
    Although the kernel does have array_index_nospec() in a few places, we
    haven't yet audited all the powerpc code to see where it's necessary,
    so for now we don't list that as a mitigation.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 45a6933893d6ef010a6554426279fb177b89384b
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed May 23 00:41:20 2018 +1000

    powerpc/pseries: Use the security flags in pseries_setup_rfi_flush()
    
    commit 2e4a16161fcd324b1f9bf6cb6856529f7eaf0689 upstream.
    
    Now that we have the security flags we can simplify the code in
    pseries_setup_rfi_flush() because the security flags have pessimistic
    defaults.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32a0f8ddf205b366cbb6baa592a8126140f0f34a
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed May 23 00:41:19 2018 +1000

    powerpc/powernv: Use the security flags in pnv_setup_rfi_flush()
    
    commit 37c0bdd00d3ae83369ab60a6712c28e11e6458d5 upstream.
    
    Now that we have the security flags we can significantly simplify the
    code in pnv_setup_rfi_flush(), because we can use the flags instead of
    checking device tree properties and because the security flags have
    pessimistic defaults.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14e646bda3a224ec2ac1fa1bdaa59811629f911d
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed May 23 00:41:18 2018 +1000

    powerpc/64s: Enhance the information in cpu_show_meltdown()
    
    commit ff348355e9c72493947be337bb4fae4fc1a41eba upstream.
    
    Now that we have the security feature flags we can make the
    information displayed in the "meltdown" file more informative.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b97a799752c0cf280a10a6eb1aec00d41c1c48d
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed May 23 00:41:17 2018 +1000

    powerpc/64s: Move cpu_show_meltdown()
    
    commit 8ad33041563a10b34988800c682ada14b2612533 upstream.
    
    This landed in setup_64.c for no good reason other than we had nowhere
    else to put it. Now that we have a security-related file, that is a
    better place for it so move it.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit edfd80ee3ba3ff6bbf257b0507b975c92c862226
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed May 23 00:41:16 2018 +1000

    powerpc/powernv: Set or clear security feature flags
    
    commit 77addf6e95c8689e478d607176b399a6242a777e upstream.
    
    Now that we have feature flags for security related things, set or
    clear them based on what we see in the device tree provided by
    firmware.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4467476bc66e0a4332f7d6338b2f4273003b3b3b
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed May 23 00:41:15 2018 +1000

    powerpc/pseries: Set or clear security feature flags
    
    commit f636c14790ead6cc22cf62279b1f8d7e11a67116 upstream.
    
    Now that we have feature flags for security related things, set or
    clear them based on what we receive from the hypercall.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7eb15ac50411d6aff1a924873f7e9e36cc4bc685
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed May 23 00:41:14 2018 +1000

    powerpc/pseries: Add new H_GET_CPU_CHARACTERISTICS flags
    
    commit c4bc36628d7f8b664657d8bd6ad1c44c177880b7 upstream.
    
    Add some additional values which have been defined for the
    H_GET_CPU_CHARACTERISTICS hypercall.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb02c77649f0c29dec656048b87c9f23b3d082b7
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed May 23 00:41:13 2018 +1000

    powerpc: Add security feature flags for Spectre/Meltdown
    
    commit 9a868f634349e62922c226834aa23e3d1329ae7f upstream.
    
    This commit adds security feature flags to reflect the settings we
    receive from firmware regarding Spectre/Meltdown mitigations.
    
    The feature names reflect the names we are given by firmware on bare
    metal machines. See the hostboot source for details.
    
    Arguably these could be firmware features, but that then requires them
    to be read early in boot so they're available prior to asm feature
    patching, but we don't actually want to use them for patching. We may
    also want to dynamically update them in future, which would be
    incompatible with the way firmware features work (at the moment at
    least). So for now just make them separate flags.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a7130afada05f4a3997e64daacf0c966c514a81
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed May 23 00:41:12 2018 +1000

    powerpc/rfi-flush: Always enable fallback flush on pseries
    
    commit 84749a58b6e382f109abf1e734bc4dd43c2c25bb upstream.
    
    This ensures the fallback flush area is always allocated on pseries,
    so in case a LPAR is migrated from a patched to an unpatched system,
    it is possible to enable the fallback flush in the target system.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 558b10194bc4baa55fa5422b19cfb32856b875f5
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu May 17 17:18:30 2018 -0400

    ext2: fix a block leak
    
    commit 5aa1437d2d9a068c0334bd7c9dafa8ec4f97f13b upstream.
    
    open file, unlink it, then use ioctl(2) to make it immutable or
    append only.  Now close it and watch the blocks *not* freed...
    
    Immutable/append-only checks belong in ->setattr().
    Note: the bug is old and backport to anything prior to 737f2e93b972
    ("ext2: convert to use the new truncate convention") will need
    these checks lifted into ext2_setattr().
    
    Cc: stable@kernel.org
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb4dac97b9458b8441c19586db7f7c7c3171cec0
Author: Arvind Yadav <arvind.yadav.cs@gmail.com>
Date:   Wed Apr 25 20:26:14 2018 +0530

    sparc: vio: use put_device() instead of kfree()
    
    [ Upstream commit 00ad691ab140b54ab9f5de5e74cb994f552e8124 ]
    
    Never directly free @dev after calling device_register(), even
    if it returned an error. Always use put_device() to give up the
    reference initialized.
    
    Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7d7e006512b345ed8bb2bd862f0c7b3b63728f9
Author: Michal Kalderon <Michal.Kalderon@cavium.com>
Date:   Wed May 16 14:44:40 2018 +0300

    qed: Fix LL2 race during connection terminate
    
    [ Upstream commit 490068deaef0c76e47bf89c457de899b7d3995c7 ]
    
    Stress on qedi/qedr load unload lead to list_del corruption.
    This is due to ll2 connection terminate freeing resources without
    verifying that no more ll2 processing will occur.
    
    This patch unregisters the ll2 status block before terminating
    the connection to assure this race does not occur.
    
    Fixes: 1d6cff4fca4366 ("qed: Add iSCSI out of order packet handling")
    Signed-off-by: Ariel Elior <Ariel.Elior@cavium.com>
    Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c25c30b2bfd61da35466bfa18828417088d82711
Author: Michal Kalderon <Michal.Kalderon@cavium.com>
Date:   Wed May 16 14:44:39 2018 +0300

    qed: Fix possibility of list corruption during rmmod flows
    
    [ Upstream commit ffd2c0d12752a69e480366031ec7a7d723dd2510 ]
    
    The ll2 flows of flushing the txq/rxq need to be synchronized with the
    regular fp processing. Caused list corruption during load/unload stress
    tests.
    
    Fixes: 0a7fb11c23c0f ("qed: Add Light L2 support")
    Signed-off-by: Ariel Elior <Ariel.Elior@cavium.com>
    Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbfd32233974bea310250f02b549f1a1aa1ca819
Author: Michal Kalderon <Michal.Kalderon@cavium.com>
Date:   Wed May 16 14:44:38 2018 +0300

    qed: LL2 flush isles when connection is closed
    
    [ Upstream commit f9bcd60274a565751abef622f9018badd01a17c8 ]
    
    Driver should free all pending isles once it gets a FLUSH cqe from FW.
    Part of iSCSI out of order flow.
    
    Fixes: 1d6cff4fca4366 ("qed: Add iSCSI out of order packet handling")
    Signed-off-by: Ariel Elior <Ariel.Elior@cavium.com>
    Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65b249d247ccb76ce7930f41abc972f95242963d
Author: William Tu <u9012063@gmail.com>
Date:   Fri May 18 19:22:28 2018 -0700

    net: ip6_gre: fix tunnel metadata device sharing.
    
    [ Upstream commit b80d0b93b991e551a32157e0d9d38fc5bc9348a7 ]
    
    Currently ip6gre and ip6erspan share single metadata mode device,
    using 'collect_md_tun'.  Thus, when doing:
      ip link add dev ip6gre11 type ip6gretap external
      ip link add dev ip6erspan12 type ip6erspan external
      RTNETLINK answers: File exists
    simply fails due to the 2nd tries to create the same collect_md_tun.
    
    The patch fixes it by adding a separate collect md tunnel device
    for the ip6erspan, 'collect_md_tun_erspan'.  As a result, a couple
    of places need to refactor/split up in order to distinguish ip6gre
    and ip6erspan.
    
    First, move the collect_md check at ip6gre_tunnel_{unlink,link} and
    create separate function {ip6gre,ip6ersapn}_tunnel_{link_md,unlink_md}.
    Then before link/unlink, make sure the link_md/unlink_md is called.
    Finally, a separate ndo_uninit is created for ip6erspan.  Tested it
    using the samples/bpf/test_tunnel_bpf.sh.
    
    Fixes: ef7baf5e083c ("ip6_gre: add ip6 erspan collect_md mode")
    Signed-off-by: William Tu <u9012063@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6d72628352c949629af619b77b042e0fb5245e7
Author: Petr Machata <petrm@mellanox.com>
Date:   Thu May 17 16:36:51 2018 +0200

    net: ip6_gre: Fix ip6erspan hlen calculation
    
    [ Upstream commit 2d665034f239412927b1e71329f20f001c92da09 ]
    
    Even though ip6erspan_tap_init() sets up hlen and tun_hlen according to
    what ERSPAN needs, it goes ahead to call ip6gre_tnl_link_config() which
    overwrites these settings with GRE-specific ones.
    
    Similarly for changelink callbacks, which are handled by
    ip6gre_changelink() calls ip6gre_tnl_change() calls
    ip6gre_tnl_link_config() as well.
    
    The difference ends up being 12 vs. 20 bytes, and this is generally not
    a problem, because a 12-byte request likely ends up allocating more and
    the extra 8 bytes are thus available. However correct it is not.
    
    So replace the newlink and changelink callbacks with an ERSPAN-specific
    ones, reusing the newly-introduced _common() functions.
    
    Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support")
    Signed-off-by: Petr Machata <petrm@mellanox.com>
    Acked-by: William Tu <u9012063@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf5b0c11ca6cefe436422113d6f4acc02e3c528e
Author: Petr Machata <petrm@mellanox.com>
Date:   Thu May 17 16:36:45 2018 +0200

    net: ip6_gre: Split up ip6gre_changelink()
    
    [ Upstream commit c8632fc30bb03aa0c3bd7bcce85355a10feb8149 ]
    
    Extract from ip6gre_changelink() a reusable function
    ip6gre_changelink_common(). This will allow introduction of
    ERSPAN-specific _changelink() function with not a lot of code
    duplication.
    
    Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support")
    Signed-off-by: Petr Machata <petrm@mellanox.com>
    Acked-by: William Tu <u9012063@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20e6b7c7e4d8a8046fb4f60f31beefb3f6d52754
Author: Petr Machata <petrm@mellanox.com>
Date:   Thu May 17 16:36:39 2018 +0200

    net: ip6_gre: Split up ip6gre_newlink()
    
    [ Upstream commit 7fa38a7c852ec99e3a7fc375eb2c21c50c2e46b8 ]
    
    Extract from ip6gre_newlink() a reusable function
    ip6gre_newlink_common(). The ip6gre_tnl_link_config() call needs to be
    made customizable for ERSPAN, thus reorder it with calls to
    ip6_tnl_change_mtu() and dev_hold(), and extract the whole tail to the
    caller, ip6gre_newlink(). Thus enable an ERSPAN-specific _newlink()
    function without a lot of duplicity.
    
    Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support")
    Signed-off-by: Petr Machata <petrm@mellanox.com>
    Acked-by: William Tu <u9012063@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbacae490139ea6d85e073c4d9b782e26e6578d4
Author: Petr Machata <petrm@mellanox.com>
Date:   Thu May 17 16:36:33 2018 +0200

    net: ip6_gre: Split up ip6gre_tnl_change()
    
    [ Upstream commit a6465350ef495f5cbd76a3e505d25a01d648477e ]
    
    Split a reusable function ip6gre_tnl_copy_tnl_parm() from
    ip6gre_tnl_change(). This will allow ERSPAN-specific code to
    reuse the common parts while customizing the behavior for ERSPAN.
    
    Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support")
    Signed-off-by: Petr Machata <petrm@mellanox.com>
    Acked-by: William Tu <u9012063@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d1e3b8e7f76e3f56763f454e5be568d338cf193
Author: Petr Machata <petrm@mellanox.com>
Date:   Thu May 17 16:36:27 2018 +0200

    net: ip6_gre: Split up ip6gre_tnl_link_config()
    
    [ Upstream commit a483373ead61e6079bc8ebe27e2dfdb2e3c1559f ]
    
    The function ip6gre_tnl_link_config() is used for setting up
    configuration of both ip6gretap and ip6erspan tunnels. Split the
    function into the common part and the route-lookup part. The latter then
    takes the calculated header length as an argument. This split will allow
    the patches down the line to sneak in a custom header length computation
    for the ERSPAN tunnel.
    
    Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support")
    Signed-off-by: Petr Machata <petrm@mellanox.com>
    Acked-by: William Tu <u9012063@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 003ad57484d9154db1ba93370a20c92d8356a61d
Author: Petr Machata <petrm@mellanox.com>
Date:   Thu May 17 16:36:15 2018 +0200

    net: ip6_gre: Fix headroom request in ip6erspan_tunnel_xmit()
    
    [ Upstream commit 5691484df961aff897d824bcc26cd1a2aa036b5b ]
    
    dev->needed_headroom is not primed until ip6_tnl_xmit(), so it starts
    out zero. Thus the call to skb_cow_head() fails to actually make sure
    there's enough headroom to push the ERSPAN headers to. That can lead to
    the panic cited below. (Reproducer below that).
    
    Fix by requesting either needed_headroom if already primed, or just the
    bare minimum needed for the header otherwise.
    
    [  190.703567] kernel BUG at net/core/skbuff.c:104!
    [  190.708384] invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
    [  190.714007] Modules linked in: act_mirred cls_matchall ip6_gre ip6_tunnel tunnel6 gre sch_ingress vrf veth x86_pkg_temp_thermal mlx_platform nfsd e1000e leds_mlxcpld
    [  190.728975] CPU: 1 PID: 959 Comm: kworker/1:2 Not tainted 4.17.0-rc4-net_master-custom-139 #10
    [  190.737647] Hardware name: Mellanox Technologies Ltd. "MSN2410-CB2F"/"SA000874", BIOS 4.6.5 03/08/2016
    [  190.747006] Workqueue: ipv6_addrconf addrconf_dad_work
    [  190.752222] RIP: 0010:skb_panic+0xc3/0x100
    [  190.756358] RSP: 0018:ffff8801d54072f0 EFLAGS: 00010282
    [  190.761629] RAX: 0000000000000085 RBX: ffff8801c1a8ecc0 RCX: 0000000000000000
    [  190.768830] RDX: 0000000000000085 RSI: dffffc0000000000 RDI: ffffed003aa80e54
    [  190.776025] RBP: ffff8801bd1ec5a0 R08: ffffed003aabce19 R09: ffffed003aabce19
    [  190.783226] R10: 0000000000000001 R11: ffffed003aabce18 R12: ffff8801bf695dbe
    [  190.790418] R13: 0000000000000084 R14: 00000000000006c0 R15: ffff8801bf695dc8
    [  190.797621] FS:  0000000000000000(0000) GS:ffff8801d5400000(0000) knlGS:0000000000000000
    [  190.805786] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  190.811582] CR2: 000055fa929aced0 CR3: 0000000003228004 CR4: 00000000001606e0
    [  190.818790] Call Trace:
    [  190.821264]  <IRQ>
    [  190.823314]  ? ip6erspan_tunnel_xmit+0x5e4/0x1982 [ip6_gre]
    [  190.828940]  ? ip6erspan_tunnel_xmit+0x5e4/0x1982 [ip6_gre]
    [  190.834562]  skb_push+0x78/0x90
    [  190.837749]  ip6erspan_tunnel_xmit+0x5e4/0x1982 [ip6_gre]
    [  190.843219]  ? ip6gre_tunnel_ioctl+0xd90/0xd90 [ip6_gre]
    [  190.848577]  ? debug_check_no_locks_freed+0x210/0x210
    [  190.853679]  ? debug_check_no_locks_freed+0x210/0x210
    [  190.858783]  ? print_irqtrace_events+0x120/0x120
    [  190.863451]  ? sched_clock_cpu+0x18/0x210
    [  190.867496]  ? cyc2ns_read_end+0x10/0x10
    [  190.871474]  ? skb_network_protocol+0x76/0x200
    [  190.875977]  dev_hard_start_xmit+0x137/0x770
    [  190.880317]  ? do_raw_spin_trylock+0x6d/0xa0
    [  190.884624]  sch_direct_xmit+0x2ef/0x5d0
    [  190.888589]  ? pfifo_fast_dequeue+0x3fa/0x670
    [  190.892994]  ? pfifo_fast_change_tx_queue_len+0x810/0x810
    [  190.898455]  ? __lock_is_held+0xa0/0x160
    [  190.902422]  __qdisc_run+0x39e/0xfc0
    [  190.906041]  ? _raw_spin_unlock+0x29/0x40
    [  190.910090]  ? pfifo_fast_enqueue+0x24b/0x3e0
    [  190.914501]  ? sch_direct_xmit+0x5d0/0x5d0
    [  190.918658]  ? pfifo_fast_dequeue+0x670/0x670
    [  190.923047]  ? __dev_queue_xmit+0x172/0x1770
    [  190.927365]  ? preempt_count_sub+0xf/0xd0
    [  190.931421]  __dev_queue_xmit+0x410/0x1770
    [  190.935553]  ? ___slab_alloc+0x605/0x930
    [  190.939524]  ? print_irqtrace_events+0x120/0x120
    [  190.944186]  ? memcpy+0x34/0x50
    [  190.947364]  ? netdev_pick_tx+0x1c0/0x1c0
    [  190.951428]  ? __skb_clone+0x2fd/0x3d0
    [  190.955218]  ? __copy_skb_header+0x270/0x270
    [  190.959537]  ? rcu_read_lock_sched_held+0x93/0xa0
    [  190.964282]  ? kmem_cache_alloc+0x344/0x4d0
    [  190.968520]  ? cyc2ns_read_end+0x10/0x10
    [  190.972495]  ? skb_clone+0x123/0x230
    [  190.976112]  ? skb_split+0x820/0x820
    [  190.979747]  ? tcf_mirred+0x554/0x930 [act_mirred]
    [  190.984582]  tcf_mirred+0x554/0x930 [act_mirred]
    [  190.989252]  ? tcf_mirred_act_wants_ingress.part.2+0x10/0x10 [act_mirred]
    [  190.996109]  ? __lock_acquire+0x706/0x26e0
    [  191.000239]  ? sched_clock_cpu+0x18/0x210
    [  191.004294]  tcf_action_exec+0xcf/0x2a0
    [  191.008179]  tcf_classify+0xfa/0x340
    [  191.011794]  __netif_receive_skb_core+0x8e1/0x1c60
    [  191.016630]  ? debug_check_no_locks_freed+0x210/0x210
    [  191.021732]  ? nf_ingress+0x500/0x500
    [  191.025458]  ? process_backlog+0x347/0x4b0
    [  191.029619]  ? print_irqtrace_events+0x120/0x120
    [  191.034302]  ? lock_acquire+0xd8/0x320
    [  191.038089]  ? process_backlog+0x1b6/0x4b0
    [  191.042246]  ? process_backlog+0xc2/0x4b0
    [  191.046303]  process_backlog+0xc2/0x4b0
    [  191.050189]  net_rx_action+0x5cc/0x980
    [  191.053991]  ? napi_complete_done+0x2c0/0x2c0
    [  191.058386]  ? mark_lock+0x13d/0xb40
    [  191.062001]  ? clockevents_program_event+0x6b/0x1d0
    [  191.066922]  ? print_irqtrace_events+0x120/0x120
    [  191.071593]  ? __lock_is_held+0xa0/0x160
    [  191.075566]  __do_softirq+0x1d4/0x9d2
    [  191.079282]  ? ip6_finish_output2+0x524/0x1460
    [  191.083771]  do_softirq_own_stack+0x2a/0x40
    [  191.087994]  </IRQ>
    [  191.090130]  do_softirq.part.13+0x38/0x40
    [  191.094178]  __local_bh_enable_ip+0x135/0x190
    [  191.098591]  ip6_finish_output2+0x54d/0x1460
    [  191.102916]  ? ip6_forward_finish+0x2f0/0x2f0
    [  191.107314]  ? ip6_mtu+0x3c/0x2c0
    [  191.110674]  ? ip6_finish_output+0x2f8/0x650
    [  191.114992]  ? ip6_output+0x12a/0x500
    [  191.118696]  ip6_output+0x12a/0x500
    [  191.122223]  ? ip6_route_dev_notify+0x5b0/0x5b0
    [  191.126807]  ? ip6_finish_output+0x650/0x650
    [  191.131120]  ? ip6_fragment+0x1a60/0x1a60
    [  191.135182]  ? icmp6_dst_alloc+0x26e/0x470
    [  191.139317]  mld_sendpack+0x672/0x830
    [  191.143021]  ? igmp6_mcf_seq_next+0x2f0/0x2f0
    [  191.147429]  ? __local_bh_enable_ip+0x77/0x190
    [  191.151913]  ipv6_mc_dad_complete+0x47/0x90
    [  191.156144]  addrconf_dad_completed+0x561/0x720
    [  191.160731]  ? addrconf_rs_timer+0x3a0/0x3a0
    [  191.165036]  ? mark_held_locks+0xc9/0x140
    [  191.169095]  ? __local_bh_enable_ip+0x77/0x190
    [  191.173570]  ? addrconf_dad_work+0x50d/0xa20
    [  191.177886]  ? addrconf_dad_work+0x529/0xa20
    [  191.182194]  addrconf_dad_work+0x529/0xa20
    [  191.186342]  ? addrconf_dad_completed+0x720/0x720
    [  191.191088]  ? __lock_is_held+0xa0/0x160
    [  191.195059]  ? process_one_work+0x45d/0xe20
    [  191.199302]  ? process_one_work+0x51e/0xe20
    [  191.203531]  ? rcu_read_lock_sched_held+0x93/0xa0
    [  191.208279]  process_one_work+0x51e/0xe20
    [  191.212340]  ? pwq_dec_nr_in_flight+0x200/0x200
    [  191.216912]  ? get_lock_stats+0x4b/0xf0
    [  191.220788]  ? preempt_count_sub+0xf/0xd0
    [  191.224844]  ? worker_thread+0x219/0x860
    [  191.228823]  ? do_raw_spin_trylock+0x6d/0xa0
    [  191.233142]  worker_thread+0xeb/0x860
    [  191.236848]  ? process_one_work+0xe20/0xe20
    [  191.241095]  kthread+0x206/0x300
    [  191.244352]  ? process_one_work+0xe20/0xe20
    [  191.248587]  ? kthread_stop+0x570/0x570
    [  191.252459]  ret_from_fork+0x3a/0x50
    [  191.256082] Code: 14 3e ff 8b 4b 78 55 4d 89 f9 41 56 41 55 48 c7 c7 a0 cf db 82 41 54 44 8b 44 24 2c 48 8b 54 24 30 48 8b 74 24 20 e8 16 94 13 ff <0f> 0b 48 c7 c7 60 8e 1f 85 48 83 c4 20 e8 55 ef a6 ff 89 74 24
    [  191.275327] RIP: skb_panic+0xc3/0x100 RSP: ffff8801d54072f0
    [  191.281024] ---[ end trace 7ea51094e099e006 ]---
    [  191.285724] Kernel panic - not syncing: Fatal exception in interrupt
    [  191.292168] Kernel Offset: disabled
    [  191.295697] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
    
    Reproducer:
    
            ip link add h1 type veth peer name swp1
            ip link add h3 type veth peer name swp3
    
            ip link set dev h1 up
            ip address add 192.0.2.1/28 dev h1
    
            ip link add dev vh3 type vrf table 20
            ip link set dev h3 master vh3
            ip link set dev vh3 up
            ip link set dev h3 up
    
            ip link set dev swp3 up
            ip address add dev swp3 2001:db8:2::1/64
    
            ip link set dev swp1 up
            tc qdisc add dev swp1 clsact
    
            ip link add name gt6 type ip6erspan \
                    local 2001:db8:2::1 remote 2001:db8:2::2 oseq okey 123
            ip link set dev gt6 up
    
            sleep 1
    
            tc filter add dev swp1 ingress pref 1000 matchall skip_hw \
                    action mirred egress mirror dev gt6
            ping -I h1 192.0.2.2
    
    Fixes: e41c7c68ea77 ("ip6erspan: make sure enough headroom at xmit.")
    Signed-off-by: Petr Machata <petrm@mellanox.com>
    Acked-by: William Tu <u9012063@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1991e5efbff53bb66f03467343980f9d3bbea556
Author: Petr Machata <petrm@mellanox.com>
Date:   Thu May 17 16:36:10 2018 +0200

    net: ip6_gre: Request headroom in __gre6_xmit()
    
    [ Upstream commit 01b8d064d58b4c1f0eff47f8fe8a8508cb3b3840 ]
    
    __gre6_xmit() pushes GRE headers before handing over to ip6_tnl_xmit()
    for generic IP-in-IP processing. However it doesn't make sure that there
    is enough headroom to push the header to. That can lead to the panic
    cited below. (Reproducer below that).
    
    Fix by requesting either needed_headroom if already primed, or just the
    bare minimum needed for the header otherwise.
    
    [  158.576725] kernel BUG at net/core/skbuff.c:104!
    [  158.581510] invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
    [  158.587174] Modules linked in: act_mirred cls_matchall ip6_gre ip6_tunnel tunnel6 gre sch_ingress vrf veth x86_pkg_temp_thermal mlx_platform nfsd e1000e leds_mlxcpld
    [  158.602268] CPU: 1 PID: 16 Comm: ksoftirqd/1 Not tainted 4.17.0-rc4-net_master-custom-139 #10
    [  158.610938] Hardware name: Mellanox Technologies Ltd. "MSN2410-CB2F"/"SA000874", BIOS 4.6.5 03/08/2016
    [  158.620426] RIP: 0010:skb_panic+0xc3/0x100
    [  158.624586] RSP: 0018:ffff8801d3f27110 EFLAGS: 00010286
    [  158.629882] RAX: 0000000000000082 RBX: ffff8801c02cc040 RCX: 0000000000000000
    [  158.637127] RDX: 0000000000000082 RSI: dffffc0000000000 RDI: ffffed003a7e4e18
    [  158.644366] RBP: ffff8801bfec8020 R08: ffffed003aabce19 R09: ffffed003aabce19
    [  158.651574] R10: 000000000000000b R11: ffffed003aabce18 R12: ffff8801c364de66
    [  158.658786] R13: 000000000000002c R14: 00000000000000c0 R15: ffff8801c364de68
    [  158.666007] FS:  0000000000000000(0000) GS:ffff8801d5400000(0000) knlGS:0000000000000000
    [  158.674212] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  158.680036] CR2: 00007f4b3702dcd0 CR3: 0000000003228002 CR4: 00000000001606e0
    [  158.687228] Call Trace:
    [  158.689752]  ? __gre6_xmit+0x246/0xd80 [ip6_gre]
    [  158.694475]  ? __gre6_xmit+0x246/0xd80 [ip6_gre]
    [  158.699141]  skb_push+0x78/0x90
    [  158.702344]  __gre6_xmit+0x246/0xd80 [ip6_gre]
    [  158.706872]  ip6gre_tunnel_xmit+0x3bc/0x610 [ip6_gre]
    [  158.711992]  ? __gre6_xmit+0xd80/0xd80 [ip6_gre]
    [  158.716668]  ? debug_check_no_locks_freed+0x210/0x210
    [  158.721761]  ? print_irqtrace_events+0x120/0x120
    [  158.726461]  ? sched_clock_cpu+0x18/0x210
    [  158.730572]  ? sched_clock_cpu+0x18/0x210
    [  158.734692]  ? cyc2ns_read_end+0x10/0x10
    [  158.738705]  ? skb_network_protocol+0x76/0x200
    [  158.743216]  ? netif_skb_features+0x1b2/0x550
    [  158.747648]  dev_hard_start_xmit+0x137/0x770
    [  158.752010]  sch_direct_xmit+0x2ef/0x5d0
    [  158.755992]  ? pfifo_fast_dequeue+0x3fa/0x670
    [  158.760460]  ? pfifo_fast_change_tx_queue_len+0x810/0x810
    [  158.765975]  ? __lock_is_held+0xa0/0x160
    [  158.770002]  __qdisc_run+0x39e/0xfc0
    [  158.773673]  ? _raw_spin_unlock+0x29/0x40
    [  158.777781]  ? pfifo_fast_enqueue+0x24b/0x3e0
    [  158.782191]  ? sch_direct_xmit+0x5d0/0x5d0
    [  158.786372]  ? pfifo_fast_dequeue+0x670/0x670
    [  158.790818]  ? __dev_queue_xmit+0x172/0x1770
    [  158.795195]  ? preempt_count_sub+0xf/0xd0
    [  158.799313]  __dev_queue_xmit+0x410/0x1770
    [  158.803512]  ? ___slab_alloc+0x605/0x930
    [  158.807525]  ? ___slab_alloc+0x605/0x930
    [  158.811540]  ? memcpy+0x34/0x50
    [  158.814768]  ? netdev_pick_tx+0x1c0/0x1c0
    [  158.818895]  ? __skb_clone+0x2fd/0x3d0
    [  158.822712]  ? __copy_skb_header+0x270/0x270
    [  158.827079]  ? rcu_read_lock_sched_held+0x93/0xa0
    [  158.831903]  ? kmem_cache_alloc+0x344/0x4d0
    [  158.836199]  ? skb_clone+0x123/0x230
    [  158.839869]  ? skb_split+0x820/0x820
    [  158.843521]  ? tcf_mirred+0x554/0x930 [act_mirred]
    [  158.848407]  tcf_mirred+0x554/0x930 [act_mirred]
    [  158.853104]  ? tcf_mirred_act_wants_ingress.part.2+0x10/0x10 [act_mirred]
    [  158.860005]  ? __lock_acquire+0x706/0x26e0
    [  158.864162]  ? mark_lock+0x13d/0xb40
    [  158.867832]  tcf_action_exec+0xcf/0x2a0
    [  158.871736]  tcf_classify+0xfa/0x340
    [  158.875402]  __netif_receive_skb_core+0x8e1/0x1c60
    [  158.880334]  ? nf_ingress+0x500/0x500
    [  158.884059]  ? process_backlog+0x347/0x4b0
    [  158.888241]  ? lock_acquire+0xd8/0x320
    [  158.892050]  ? process_backlog+0x1b6/0x4b0
    [  158.896228]  ? process_backlog+0xc2/0x4b0
    [  158.900291]  process_backlog+0xc2/0x4b0
    [  158.904210]  net_rx_action+0x5cc/0x980
    [  158.908047]  ? napi_complete_done+0x2c0/0x2c0
    [  158.912525]  ? rcu_read_unlock+0x80/0x80
    [  158.916534]  ? __lock_is_held+0x34/0x160
    [  158.920541]  __do_softirq+0x1d4/0x9d2
    [  158.924308]  ? trace_event_raw_event_irq_handler_exit+0x140/0x140
    [  158.930515]  run_ksoftirqd+0x1d/0x40
    [  158.934152]  smpboot_thread_fn+0x32b/0x690
    [  158.938299]  ? sort_range+0x20/0x20
    [  158.941842]  ? preempt_count_sub+0xf/0xd0
    [  158.945940]  ? schedule+0x5b/0x140
    [  158.949412]  kthread+0x206/0x300
    [  158.952689]  ? sort_range+0x20/0x20
    [  158.956249]  ? kthread_stop+0x570/0x570
    [  158.960164]  ret_from_fork+0x3a/0x50
    [  158.963823] Code: 14 3e ff 8b 4b 78 55 4d 89 f9 41 56 41 55 48 c7 c7 a0 cf db 82 41 54 44 8b 44 24 2c 48 8b 54 24 30 48 8b 74 24 20 e8 16 94 13 ff <0f> 0b 48 c7 c7 60 8e 1f 85 48 83 c4 20 e8 55 ef a6 ff 89 74 24
    [  158.983235] RIP: skb_panic+0xc3/0x100 RSP: ffff8801d3f27110
    [  158.988935] ---[ end trace 5af56ee845aa6cc8 ]---
    [  158.993641] Kernel panic - not syncing: Fatal exception in interrupt
    [  159.000176] Kernel Offset: disabled
    [  159.003767] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
    
    Reproducer:
    
            ip link add h1 type veth peer name swp1
            ip link add h3 type veth peer name swp3
    
            ip link set dev h1 up
            ip address add 192.0.2.1/28 dev h1
    
            ip link add dev vh3 type vrf table 20
            ip link set dev h3 master vh3
            ip link set dev vh3 up
            ip link set dev h3 up
    
            ip link set dev swp3 up
            ip address add dev swp3 2001:db8:2::1/64
    
            ip link set dev swp1 up
            tc qdisc add dev swp1 clsact
    
            ip link add name gt6 type ip6gretap \
                    local 2001:db8:2::1 remote 2001:db8:2::2
            ip link set dev gt6 up
    
            sleep 1
    
            tc filter add dev swp1 ingress pref 1000 matchall skip_hw \
                    action mirred egress mirror dev gt6
            ping -I h1 192.0.2.2
    
    Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
    Signed-off-by: Petr Machata <petrm@mellanox.com>
    Acked-by: William Tu <u9012063@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4efb1f157feb5b786470a66059169b584a393ff5
Author: hpreg@vmware.com <hpreg@vmware.com>
Date:   Mon May 14 08:14:49 2018 -0400

    vmxnet3: use DMA memory barriers where required
    
    [ Upstream commit f3002c1374fb2367c9d8dbb28852791ef90d2bac ]
    
    The gen bits must be read first from (resp. written last to) DMA memory.
    The proper way to enforce this on Linux is to call dma_rmb() (resp.
    dma_wmb()).
    
    Signed-off-by: Regis Duchesne <hpreg@vmware.com>
    Acked-by: Ronak Doshi <doshir@vmware.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d8e811eff576428402cebded0ef5eb93a0aa033
Author: hpreg@vmware.com <hpreg@vmware.com>
Date:   Mon May 14 08:14:34 2018 -0400

    vmxnet3: set the DMA mask before the first DMA map operation
    
    [ Upstream commit 61aeecea40afb2b89933e27cd4adb10fc2e75cfd ]
    
    The DMA mask must be set before, not after, the first DMA map operation, or
    the first DMA map operation could in theory fail on some systems.
    
    Fixes: b0eb57cb97e78 ("VMXNET3: Add support for virtual IOMMU")
    Signed-off-by: Regis Duchesne <hpreg@vmware.com>
    Acked-by: Ronak Doshi <doshir@vmware.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f74924f48eb0ff745ce76f839591665627193ea
Author: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Date:   Fri May 18 19:13:37 2018 +0530

    cxgb4: fix offset in collecting TX rate limit info
    
    [ Upstream commit d775f26b295a0a303f7a73d7da46e04296484fe7 ]
    
    Correct the indirect register offsets in collecting TX rate limit info
    in UP CIM logs.
    
    Also, T5 doesn't support these indirect register offsets, so remove
    them from collection logic.
    
    Fixes: be6e36d916b1 ("cxgb4: collect TX rate limit info in UP CIM logs")
    Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
    Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d30fdc02c49ad9965bba25015ae66c22dae967d1
Author: Christoph Hellwig <hch@lst.de>
Date:   Sat May 12 12:16:50 2018 +0200

    3c59x: convert to generic DMA API
    
    [ Upstream commit 55c82617c3e82210b7471e9334e8fc5df6a9961f ]
    
    This driver supports EISA devices in addition to PCI devices, and relied
    on the legacy behavior of the pci_dma* shims to pass on a NULL pointer
    to the DMA API, and the DMA API being able to handle that.  When the
    NULL forwarding broke the EISA support got broken.  Fix this by converting
    to the DMA API instead of the legacy PCI shims.
    
    Fixes: 4167b2ad ("PCI: Remove NULL device handling from PCI DMA API")
    Reported-by: tedheadster <tedheadster@gmail.com>
    Tested-by: tedheadster <tedheadster@gmail.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef8cce8fbec0daf6b3c9593381d293f5fed4304c
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Tue May 15 16:01:25 2018 -0700

    net: dsa: bcm_sf2: Fix IPv6 rule half deletion
    
    [ Upstream commit 1942adf64214df370350aa46954ba27654456f68 ]
    
    It was possible to delete only one half of an IPv6, which would leave
    the second half still programmed and possibly in use. Instead of
    checking for the unused bitmap, we need to check the unique bitmap, and
    refuse any deletion that does not match that criteria. We also need to
    move that check from bcm_sf2_cfp_rule_del_one() into its caller:
    bcm_sf2_cfp_rule_del() otherwise we would not be able to delete second
    halves anymore that would not pass the first test.
    
    Fixes: ba0696c22e7c ("net: dsa: bcm_sf2: Add support for IPv6 CFP rules")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05b0eaf443fb1879a5cead7e8de028bfa6cd6be3
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Tue May 15 16:01:24 2018 -0700

    net: dsa: bcm_sf2: Fix IPv6 rules and chain ID
    
    [ Upstream commit 6c05561c541843b2bec2189f680bed6d20afc25b ]
    
    We had several issues that would make the programming of IPv6 rules both
    inconsistent and error prone:
    
    - the chain ID that we would be asking the hardware to put in the
      packet's Broadcom tag would be off by one, it would return one of the
      two indexes, but not the one user-space specified
    
    - when an user specified a particular location to insert a CFP rule at,
      we would not be returning the same index, which would be confusing if
      nothing else
    
    - finally, like IPv4, it would be possible to overflow the last entry by
      re-programming it
    
    Fix this by swapping the usage of rule_index[0] and rule_index[1] where
    relevant in order to return a consistent and correct user-space
    experience.
    
    Fixes: ba0696c22e7c ("net: dsa: bcm_sf2: Add support for IPv6 CFP rules")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 77d4cc58a61f107c92c9fa6cc3a9c55974d0289f
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu May 17 16:55:39 2018 -0700

    net: dsa: Do not register devlink for unused ports
    
    [ Upstream commit 5447d78623da2eded06d4cd9469d1a71eba43bc4 ]
    
    Even if commit 1d27732f411d ("net: dsa: setup and teardown ports") indicated
    that registering a devlink instance for unused ports is not a problem, and this
    is true, this can be confusing nonetheless, so let's not do it.
    
    Fixes: 1d27732f411d ("net: dsa: setup and teardown ports")
    Reported-by: Jiri Pirko <jiri@resnulli.us>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1aa396e0f8e92b8d0849781c0f35d4f955a50d3f
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Tue May 15 16:01:23 2018 -0700

    net: dsa: bcm_sf2: Fix RX_CLS_LOC_ANY overwrite for last rule
    
    [ Upstream commit 43a5e00f38fe8933a1c716bfe5b30e97f749d94b ]
    
    When we let the kernel pick up a rule location with RX_CLS_LOC_ANY, we
    would be able to overwrite the last rules because of a number of issues.
    
    The IPv4 code path would not be checking that rule_index is within
    bounds, and it would also only be allowed to pick up rules from range
    0..126 instead of the full 0..127 range. This would lead us to allow
    overwriting the last rule when we let the kernel pick-up the location.
    
    Fixes: 3306145866b6 ("net: dsa: bcm_sf2: Move IPv4 CFP processing to specific functions")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6cf21876e2d3825989a5ed3ed5f28a40c363499a
Author: Kumar Sanghvi <kumaras@chelsio.com>
Date:   Mon May 14 16:27:34 2018 +0530

    cxgb4: Correct ntuple mask validation for hash filters
    
    [ Upstream commit 849a742c59a3d597473c0232f9c2506c69eeef14 ]
    
    Earlier code of doing bitwise AND with field width bits was wrong.
    Instead, simplify code to calculate ntuple_mask based on supplied
    fields and then compare with mask configured in hw - which is the
    correct and simpler way to validate ntuple mask.
    
    Fixes: 3eb8b62d5a26 ("cxgb4: add support to create hash-filters via tc-flower offload")
    Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
    Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0dbbbbb30b6056b191754c17dd33af2523ced12c
Author: Jason Wang <jasowang@redhat.com>
Date:   Wed May 16 20:39:33 2018 +0800

    tuntap: fix use after free during release
    
    [ Upstream commit 7063efd33bb15abc0160347f89eb5aba6b7d000e ]
    
    After commit b196d88aba8a ("tun: fix use after free for ptr_ring") we
    need clean up tx ring during release(). But unfortunately, it tries to
    do the cleanup blindly after socket were destroyed which will lead
    another use-after-free. Fix this by doing the cleanup before dropping
    the last reference of the socket in __tun_detach().
    
    Reported-by: Andrei Vagin <avagin@virtuozzo.com>
    Acked-by: Andrei Vagin <avagin@virtuozzo.com>
    Fixes: b196d88aba8a ("tun: fix use after free for ptr_ring")
    Signed-off-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 3c549e382dc37618d145ffe9f5b04ed37fd7449e
Author: Jason Wang <jasowang@redhat.com>
Date:   Fri May 11 10:49:25 2018 +0800

    tun: fix use after free for ptr_ring
    
    [ Upstream commit b196d88aba8ac72b775137854121097f4c4c6862 ]
    
    We used to initialize ptr_ring during TUNSETIFF, this is because its
    size depends on the tx_queue_len of netdevice. And we try to clean it
    up when socket were detached from netdevice. A race were spotted when
    trying to do uninit during a read which will lead a use after free for
    pointer ring. Solving this by always initialize a zero size ptr_ring
    in open() and do resizing during TUNSETIFF, and then we can safely do
    cleanup during close(). With this, there's no need for the workaround
    that was introduced by commit 4df0bfc79904 ("tun: fix a memory leak
    for tfile->tx_array").
    
    Reported-by: syzbot+e8b902c3c3fadf0a9dba@syzkaller.appspotmail.com
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: Cong Wang <xiyou.wangcong@gmail.com>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Fixes: 1576d9860599 ("tun: switch to use skb array for tx")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd72f913ac3b85cbef7ff367a4742032de1b1214
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon May 14 21:14:26 2018 -0700

    tcp: purge write queue in tcp_connect_init()
    
    [ Upstream commit 7f582b248d0a86bae5788c548d7bb5bca6f7691a ]
    
    syzkaller found a reliable way to crash the host, hitting a BUG()
    in __tcp_retransmit_skb()
    
    Malicous MSG_FASTOPEN is the root cause. We need to purge write queue
    in tcp_connect_init() at the point we init snd_una/write_seq.
    
    This patch also replaces the BUG() by a less intrusive WARN_ON_ONCE()
    
    kernel BUG at net/ipv4/tcp_output.c:2837!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
       (ftrace buffer empty)
    Modules linked in:
    CPU: 0 PID: 5276 Comm: syz-executor0 Not tainted 4.17.0-rc3+ #51
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:__tcp_retransmit_skb+0x2992/0x2eb0 net/ipv4/tcp_output.c:2837
    RSP: 0000:ffff8801dae06ff8 EFLAGS: 00010206
    RAX: ffff8801b9fe61c0 RBX: 00000000ffc18a16 RCX: ffffffff864e1a49
    RDX: 0000000000000100 RSI: ffffffff864e2e12 RDI: 0000000000000005
    RBP: ffff8801dae073a0 R08: ffff8801b9fe61c0 R09: ffffed0039c40dd2
    R10: ffffed0039c40dd2 R11: ffff8801ce206e93 R12: 00000000421eeaad
    R13: ffff8801ce206d4e R14: ffff8801ce206cc0 R15: ffff8801cd4f4a80
    FS:  0000000000000000(0000) GS:ffff8801dae00000(0063) knlGS:00000000096bc900
    CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
    CR2: 0000000020000000 CR3: 00000001c47b6000 CR4: 00000000001406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <IRQ>
     tcp_retransmit_skb+0x2e/0x250 net/ipv4/tcp_output.c:2923
     tcp_retransmit_timer+0xc50/0x3060 net/ipv4/tcp_timer.c:488
     tcp_write_timer_handler+0x339/0x960 net/ipv4/tcp_timer.c:573
     tcp_write_timer+0x111/0x1d0 net/ipv4/tcp_timer.c:593
     call_timer_fn+0x230/0x940 kernel/time/timer.c:1326
     expire_timers kernel/time/timer.c:1363 [inline]
     __run_timers+0x79e/0xc50 kernel/time/timer.c:1666
     run_timer_softirq+0x4c/0x70 kernel/time/timer.c:1692
     __do_softirq+0x2e0/0xaf5 kernel/softirq.c:285
     invoke_softirq kernel/softirq.c:365 [inline]
     irq_exit+0x1d1/0x200 kernel/softirq.c:405
     exiting_irq arch/x86/include/asm/apic.h:525 [inline]
     smp_apic_timer_interrupt+0x17e/0x710 arch/x86/kernel/apic/apic.c:1052
     apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:863
    
    Fixes: cf60af03ca4e ("net-tcp: Fast Open client - sendmsg(MSG_FASTOPEN)")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed6433b9ee12b89ebecd636e62b0d5870ed44e06
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri May 18 04:47:55 2018 -0700

    sock_diag: fix use-after-free read in __sk_free
    
    [ Upstream commit 9709020c86f6bf8439ca3effc58cfca49a5de192 ]
    
    We must not call sock_diag_has_destroy_listeners(sk) on a socket
    that has no reference on net structure.
    
    BUG: KASAN: use-after-free in sock_diag_has_destroy_listeners include/linux/sock_diag.h:75 [inline]
    BUG: KASAN: use-after-free in __sk_free+0x329/0x340 net/core/sock.c:1609
    Read of size 8 at addr ffff88018a02e3a0 by task swapper/1/0
    
    CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.17.0-rc5+ #54
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x1b9/0x294 lib/dump_stack.c:113
     print_address_description+0x6c/0x20b mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report.cold.7+0x242/0x2fe mm/kasan/report.c:412
     __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:433
     sock_diag_has_destroy_listeners include/linux/sock_diag.h:75 [inline]
     __sk_free+0x329/0x340 net/core/sock.c:1609
     sk_free+0x42/0x50 net/core/sock.c:1623
     sock_put include/net/sock.h:1664 [inline]
     reqsk_free include/net/request_sock.h:116 [inline]
     reqsk_put include/net/request_sock.h:124 [inline]
     inet_csk_reqsk_queue_drop_and_put net/ipv4/inet_connection_sock.c:672 [inline]
     reqsk_timer_handler+0xe27/0x10e0 net/ipv4/inet_connection_sock.c:739
     call_timer_fn+0x230/0x940 kernel/time/timer.c:1326
     expire_timers kernel/time/timer.c:1363 [inline]
     __run_timers+0x79e/0xc50 kernel/time/timer.c:1666
     run_timer_softirq+0x4c/0x70 kernel/time/timer.c:1692
     __do_softirq+0x2e0/0xaf5 kernel/softirq.c:285
     invoke_softirq kernel/softirq.c:365 [inline]
     irq_exit+0x1d1/0x200 kernel/softirq.c:405
     exiting_irq arch/x86/include/asm/apic.h:525 [inline]
     smp_apic_timer_interrupt+0x17e/0x710 arch/x86/kernel/apic/apic.c:1052
     apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:863
     </IRQ>
    RIP: 0010:native_safe_halt+0x6/0x10 arch/x86/include/asm/irqflags.h:54
    RSP: 0018:ffff8801d9ae7c38 EFLAGS: 00000282 ORIG_RAX: ffffffffffffff13
    RAX: dffffc0000000000 RBX: 1ffff1003b35cf8a RCX: 0000000000000000
    RDX: 1ffffffff11a30d0 RSI: 0000000000000001 RDI: ffffffff88d18680
    RBP: ffff8801d9ae7c38 R08: ffffed003b5e46c3 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000001
    R13: ffff8801d9ae7cf0 R14: ffffffff897bef20 R15: 0000000000000000
     arch_safe_halt arch/x86/include/asm/paravirt.h:94 [inline]
     default_idle+0xc2/0x440 arch/x86/kernel/process.c:354
     arch_cpu_idle+0x10/0x20 arch/x86/kernel/process.c:345
     default_idle_call+0x6d/0x90 kernel/sched/idle.c:93
     cpuidle_idle_call kernel/sched/idle.c:153 [inline]
     do_idle+0x395/0x560 kernel/sched/idle.c:262
     cpu_startup_entry+0x104/0x120 kernel/sched/idle.c:368
     start_secondary+0x426/0x5b0 arch/x86/kernel/smpboot.c:269
     secondary_startup_64+0xa5/0xb0 arch/x86/kernel/head_64.S:242
    
    Allocated by task 4557:
     save_stack+0x43/0xd0 mm/kasan/kasan.c:448
     set_track mm/kasan/kasan.c:460 [inline]
     kasan_kmalloc+0xc4/0xe0 mm/kasan/kasan.c:553
     kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:490
     kmem_cache_alloc+0x12e/0x760 mm/slab.c:3554
     kmem_cache_zalloc include/linux/slab.h:691 [inline]
     net_alloc net/core/net_namespace.c:383 [inline]
     copy_net_ns+0x159/0x4c0 net/core/net_namespace.c:423
     create_new_namespaces+0x69d/0x8f0 kernel/nsproxy.c:107
     unshare_nsproxy_namespaces+0xc3/0x1f0 kernel/nsproxy.c:206
     ksys_unshare+0x708/0xf90 kernel/fork.c:2408
     __do_sys_unshare kernel/fork.c:2476 [inline]
     __se_sys_unshare kernel/fork.c:2474 [inline]
     __x64_sys_unshare+0x31/0x40 kernel/fork.c:2474
     do_syscall_64+0x1b1/0x800 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Freed by task 69:
     save_stack+0x43/0xd0 mm/kasan/kasan.c:448
     set_track mm/kasan/kasan.c:460 [inline]
     __kasan_slab_free+0x11a/0x170 mm/kasan/kasan.c:521
     kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:528
     __cache_free mm/slab.c:3498 [inline]
     kmem_cache_free+0x86/0x2d0 mm/slab.c:3756
     net_free net/core/net_namespace.c:399 [inline]
     net_drop_ns.part.14+0x11a/0x130 net/core/net_namespace.c:406
     net_drop_ns net/core/net_namespace.c:405 [inline]
     cleanup_net+0x6a1/0xb20 net/core/net_namespace.c:541
     process_one_work+0xc1e/0x1b50 kernel/workqueue.c:2145
     worker_thread+0x1cc/0x1440 kernel/workqueue.c:2279
     kthread+0x345/0x410 kernel/kthread.c:240
     ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:412
    
    The buggy address belongs to the object at ffff88018a02c140
     which belongs to the cache net_namespace of size 8832
    The buggy address is located 8800 bytes inside of
     8832-byte region [ffff88018a02c140, ffff88018a02e3c0)
    The buggy address belongs to the page:
    page:ffffea0006280b00 count:1 mapcount:0 mapping:ffff88018a02c140 index:0x0 compound_mapcount: 0
    flags: 0x2fffc0000008100(slab|head)
    raw: 02fffc0000008100 ffff88018a02c140 0000000000000000 0000000100000001
    raw: ffffea00062a1320 ffffea0006268020 ffff8801d9bdde40 0000000000000000
    page dumped because: kasan: bad access detected
    
    Fixes: b922622ec6ef ("sock_diag: don't broadcast kernel sockets")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Craig Gallek <kraig@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8809ae6747e760e6f1d2453ceb08c9bcc4939766
Author: Willem de Bruijn <willemb@google.com>
Date:   Fri May 11 13:24:25 2018 -0400

    packet: in packet_snd start writing at link layer allocation
    
    [ Upstream commit b84bbaf7a6c8cca24f8acf25a2c8e46913a947ba ]
    
    Packet sockets allow construction of packets shorter than
    dev->hard_header_len to accommodate protocols with variable length
    link layer headers. These packets are padded to dev->hard_header_len,
    because some device drivers interpret that as a minimum packet size.
    
    packet_snd reserves dev->hard_header_len bytes on allocation.
    SOCK_DGRAM sockets call skb_push in dev_hard_header() to ensure that
    link layer headers are stored in the reserved range. SOCK_RAW sockets
    do the same in tpacket_snd, but not in packet_snd.
    
    Syzbot was able to send a zero byte packet to a device with massive
    116B link layer header, causing padding to cross over into skb_shinfo.
    Fix this by writing from the start of the llheader reserved range also
    in the case of packet_snd/SOCK_RAW.
    
    Update skb_set_network_header to the new offset. This also corrects
    it for SOCK_DGRAM, where it incorrectly double counted reserve due to
    the skb_push in dev_hard_header.
    
    Fixes: 9ed988cd5915 ("packet: validate variable length ll headers")
    Reported-by: syzbot+71d74a5406d02057d559@syzkaller.appspotmail.com
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7fc1abdc8f44ccf7b8a9648e3233b110e6a9c55
Author: Willem de Bruijn <willemb@google.com>
Date:   Thu May 17 13:13:29 2018 -0400

    net: test tailroom before appending to linear skb
    
    [ Upstream commit 113f99c3358564a0647d444c2ae34e8b1abfd5b9 ]
    
    Device features may change during transmission. In particular with
    corking, a device may toggle scatter-gather in between allocating
    and writing to an skb.
    
    Do not unconditionally assume that !NETIF_F_SG at write time implies
    that the same held at alloc time and thus the skb has sufficient
    tailroom.
    
    This issue predates git history.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Eric Dumazet <edumazet@google.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 921ca0582d1f9e6b888d9504addcf41494060f93
Author: Eric Biggers <ebiggers@google.com>
Date:   Sun May 13 17:01:30 2018 -0700

    net/smc: check for missing nlattrs in SMC_PNETID messages
    
    [ Upstream commit d49baa7e12ee70c0a7b821d088a770c94c02e494 ]
    
    It's possible to crash the kernel in several different ways by sending
    messages to the SMC_PNETID generic netlink family that are missing the
    expected attributes:
    
    - Missing SMC_PNETID_NAME => null pointer dereference when comparing
      names.
    - Missing SMC_PNETID_ETHNAME => null pointer dereference accessing
      smc_pnetentry::ndev.
    - Missing SMC_PNETID_IBNAME => null pointer dereference accessing
      smc_pnetentry::smcibdev.
    - Missing SMC_PNETID_IBPORT => out of bounds array access to
      smc_ib_device::pattr[-1].
    
    Fix it by validating that all expected attributes are present and that
    SMC_PNETID_IBPORT is nonzero.
    
    Reported-by: syzbot+5cd61039dc9b8bfa6e47@syzkaller.appspotmail.com
    Fixes: 6812baabf24d ("smc: establish pnet table management")
    Cc: <stable@vger.kernel.org> # v4.11+
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d250ebbedca3c6f57001ba70085fb50c969d2b6a
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Fri May 18 14:51:44 2018 +0200

    net: sched: red: avoid hashing NULL child
    
    [ Upstream commit 44a63b137f7b6e4c7bd6c9cc21615941cb36509d ]
    
    Hangbin reported an Oops triggered by the syzkaller qdisc rules:
    
     kasan: GPF could be caused by NULL-ptr deref or user memory access
     general protection fault: 0000 [#1] SMP KASAN PTI
     Modules linked in: sch_red
     CPU: 0 PID: 28699 Comm: syz-executor5 Not tainted 4.17.0-rc4.kcov #1
     Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
     RIP: 0010:qdisc_hash_add+0x26/0xa0
     RSP: 0018:ffff8800589cf470 EFLAGS: 00010203
     RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffffffff824ad971
     RDX: 0000000000000007 RSI: ffffc9000ce9f000 RDI: 000000000000003c
     RBP: 0000000000000001 R08: ffffed000b139ea2 R09: ffff8800589cf4f0
     R10: ffff8800589cf50f R11: ffffed000b139ea2 R12: ffff880054019fc0
     R13: ffff880054019fb4 R14: ffff88005c0af600 R15: ffff880054019fb0
     FS:  00007fa6edcb1700(0000) GS:ffff88005ce00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000020000740 CR3: 000000000fc16000 CR4: 00000000000006f0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     Call Trace:
      red_change+0x2d2/0xed0 [sch_red]
      qdisc_create+0x57e/0xef0
      tc_modify_qdisc+0x47f/0x14e0
      rtnetlink_rcv_msg+0x6a8/0x920
      netlink_rcv_skb+0x2a2/0x3c0
      netlink_unicast+0x511/0x740
      netlink_sendmsg+0x825/0xc30
      sock_sendmsg+0xc5/0x100
      ___sys_sendmsg+0x778/0x8e0
      __sys_sendmsg+0xf5/0x1b0
      do_syscall_64+0xbd/0x3b0
      entry_SYSCALL_64_after_hwframe+0x44/0xa9
     RIP: 0033:0x450869
     RSP: 002b:00007fa6edcb0c48 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
     RAX: ffffffffffffffda RBX: 00007fa6edcb16b4 RCX: 0000000000450869
     RDX: 0000000000000000 RSI: 00000000200000c0 RDI: 0000000000000013
     RBP: 000000000072bea0 R08: 0000000000000000 R09: 0000000000000000
     R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
     R13: 0000000000008778 R14: 0000000000702838 R15: 00007fa6edcb1700
     Code: e9 0b fe ff ff 0f 1f 44 00 00 55 53 48 89 fb 89 f5 e8 3f 07 f3 fe 48 8d 7b 3c 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 04 84 d2 75 51
     RIP: qdisc_hash_add+0x26/0xa0 RSP: ffff8800589cf470
    
    When a red qdisc is updated with a 0 limit, the child qdisc is left
    unmodified, no additional scheduler is created in red_change(),
    the 'child' local variable is rightfully NULL and must not add it
    to the hash table.
    
    This change addresses the above issue moving qdisc_hash_add() right
    after the child qdisc creation. It additionally removes unneeded checks
    for noop_qdisc.
    
    Reported-by: Hangbin Liu <liuhangbin@gmail.com>
    Fixes: 49b499718fa1 ("net: sched: make default fifo qdiscs appear in the dump")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Acked-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3794c6d759cbde7695446b95c7e21aa69f479c56
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Wed May 16 12:54:29 2018 +0200

    net/sched: fix refcnt leak in the error path of tcf_vlan_init()
    
    [ Upstream commit 5a4931ae0193f8a4a97e8260fd0df1d705d83299 ]
    
    Similarly to what was done with commit a52956dfc503 ("net sched actions:
    fix refcnt leak in skbmod"), fix the error path of tcf_vlan_init() to avoid
    refcnt leaks when wrong value of TCA_VLAN_PUSH_VLAN_PROTOCOL is given.
    
    Fixes: 5026c9b1bafc ("net sched: vlan action fix late binding")
    CC: Roman Mashak <mrv@mojatatu.com>
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d36dd8fb9d9b94683ec0f805e26697d95de6974c
Author: Tarick Bedeir <tarick@google.com>
Date:   Sun May 13 16:38:45 2018 -0700

    net/mlx4_core: Fix error handling in mlx4_init_port_info.
    
    [ Upstream commit 57f6f99fdad9984801cde05c1db68fe39b474a10 ]
    
    Avoid exiting the function with a lingering sysfs file (if the first
    call to device_create_file() fails while the second succeeds), and avoid
    calling devlink_port_unregister() twice.
    
    In other words, either mlx4_init_port_info() succeeds and returns zero, or
    it fails, returns non-zero, and requires no cleanup.
    
    Fixes: 096335b3f983 ("mlx4_core: Allow dynamic MTU configuration for IB ports")
    Signed-off-by: Tarick Bedeir <tarick@google.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49b87412eeb6e8b2d78d65fc416999e17ea33762
Author: Amritha Nambiar <amritha.nambiar@intel.com>
Date:   Thu May 17 14:50:44 2018 -0700

    net: Fix a bug in removing queues from XPS map
    
    [ Upstream commit 6358d49ac23995fdfe157cc8747ab0f274d3954b ]
    
    While removing queues from the XPS map, the individual CPU ID
    alone was used to index the CPUs map, this should be changed to also
    factor in the traffic class mapping for the CPU-to-queue lookup.
    
    Fixes: 184c449f91fe ("net: Add support for XPS with QoS via traffic classes")
    Signed-off-by: Amritha Nambiar <amritha.nambiar@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 42e7d35b0102240de08612d54eb101e4a0409305
Author: Saeed Mahameed <saeedm@mellanox.com>
Date:   Mon May 14 15:38:10 2018 -0700

    net/mlx5: Fix build break when CONFIG_SMP=n
    
    commit e3ca34880652250f524022ad89e516f8ba9a805b upstream.
    
    Avoid using the kernel's irq_descriptor and return IRQ vector affinity
    directly from the driver.
    
    This fixes the following build break when CONFIG_SMP=n
    
    include/linux/mlx5/driver.h: In function ‘mlx5_get_vector_affinity_hint’:
    include/linux/mlx5/driver.h:1299:13: error:
            ‘struct irq_desc’ has no member named ‘affinity_hint’
    
    Fixes: 6082d9c9c94a ("net/mlx5: Fix mlx5_get_vector_affinity function")
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    CC: Randy Dunlap <rdunlap@infradead.org>
    CC: Guenter Roeck <linux@roeck-us.net>
    CC: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Israel Rukshin <israelr@mellanox.com>
    Reported-by: kbuild test robot <lkp@intel.com>
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Tested-by: Randy Dunlap <rdunlap@infradead.org>
    Acked-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>