commit 425fdd287e9b41a20bc8b47a00064da3fcd8cae4
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Aug 16 13:40:42 2017 -0700

    Linux 4.4.83

commit 792f1fe5ec55a053091d628bbf6b751c17983dca
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Jun 29 23:33:35 2017 +0200

    pinctrl: samsung: Remove bogus irq_[un]mask from resource management
    
    commit 3fa53ec2ed885b0aec3f0472e3b4a8a6f1cd748c upstream.
    
    The irq chip callbacks irq_request/release_resources() have absolutely no
    business with masking and unmasking the irq.
    
    The core code unmasks the interrupt after complete setup and masks it
    before invoking irq_release_resources().
    
    The unmask is actually harmful as it happens before the interrupt is
    completely initialized in __setup_irq().
    
    Remove it.
    
    Fixes: f6a8249f9e55 ("pinctrl: exynos: Lock GPIOs as interrupts when used as EINTs")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Krzysztof Kozlowski <krzk@kernel.org>
    Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Kukjin Kim <kgene@kernel.org>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-samsung-soc@vger.kernel.org
    Cc: linux-gpio@vger.kernel.org
    Acked-by: Tomasz Figa <tomasz.figa@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f51066b3797ed2b23542477288927e9bf831323
Author: Icenowy Zheng <icenowy@aosc.io>
Date:   Sat Jul 22 10:50:53 2017 +0800

    pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver
    
    commit d81ece747d8727bb8b1cfc9a20dbe62f09a4e35a upstream.
    
    The PH16 pin has a function with mux id 0x5, which is the DET pin of the
    "sim" (smart card reader) IP block.
    
    This function is missing in old versions of A10/A20 SoCs' datasheets and
    user manuals, so it's also missing in the old drivers. The newest A10
    Datasheet V1.70 and A20 Datasheet V1.41 contain this pin function, and
    it's discovered during implementing R40 pinctrl driver.
    
    Add it to the driver. As we now merged A20 pinctrl driver to the A10
    one, we need to only fix the A10 driver now.
    
    Fixes: f2821b1ca3a2 ("pinctrl: sunxi: Move Allwinner A10 pinctrl
    driver to a driver of its own")
    
    Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bb6ef68655e445af18d4da191c837c9ad003587
Author: Christoph Hellwig <hch@lst.de>
Date:   Sat Aug 5 10:59:14 2017 +0200

    pnfs/blocklayout: require 64-bit sector_t
    
    commit 8a9d6e964d318533ba3d2901ce153ba317c99a89 upstream.
    
    The blocklayout code does not compile cleanly for a 32-bit sector_t,
    and also has no reliable checks for devices sizes, which makes it
    unsafe to use with a kernel that doesn't support large block devices.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reported-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 5c83746a0cf2 ("pnfs/blocklayout: in-kernel GETDEVICEINFO XDR parsing")
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b5a9de376b860fd344c0d773633a71394b518fa
Author: Stefan-Gabriel Mirea <stefan-gabriel.mirea@nxp.com>
Date:   Thu Jul 6 10:06:41 2017 +0100

    iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits
    
    commit d466d3c1217406b14b834335b5b4b33c0d45bd09 upstream.
    
    In order to select the alternate voltage reference pair (VALTH/VALTL), the
    right value for the REFSEL field in the ADCx_CFG register is "01", leading
    to 0x800 as register mask. See section 8.2.6.4 in the reference manual[1].
    
    [1] http://www.nxp.com/docs/en/reference-manual/VFXXXRM.pdf
    
    Fixes: a775427632fd ("iio:adc:imx: add Freescale Vybrid vf610 adc driver")
    Signed-off-by: Stefan-Gabriel Mirea <stefan-gabriel.mirea@nxp.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 567a21de8531490e6e7e2aabf29fb87b1d2ec8ee
Author: Sandeep Singh <sandeep.singh@amd.com>
Date:   Fri Aug 4 16:35:56 2017 +0530

    usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
    
    commit e788787ef4f9c24aafefc480a8da5f92b914e5e6 upstream.
    
    Certain HP keyboards would keep inputting a character automatically which
    is the wake-up key after S3 resume
    
    On some AMD platforms USB host fails to respond (by holding resume-K) to
    USB device (an HP keyboard) resume request within 1ms (TURSM) and ensures
    that resume is signaled for at least 20 ms (TDRSMDN), which is defined in
    USB 2.0 spec. The result is that the keyboard is out of function.
    
    In SNPS USB design, the host responds to the resume request only after
    system gets back to S0 and the host gets to functional after the internal
    HW restore operation that is more than 1 second after the initial resume
    request from the USB device.
    
    As a workaround for specific keyboard ID(HP Keyboards), applying port reset
    after resume when the keyboard is plugged in.
    
    Signed-off-by: Sandeep Singh <Sandeep.Singh@amd.com>
    Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    cc: Nehal Shah <Nehal-bakulchandra.Shah@amd.com>
    Reviewed-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd3a2a08943f565da74f18e0ac3d71d3b6c04e22
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Tue Aug 8 17:51:27 2017 +0800

    usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter
    
    commit 7496cfe5431f21da5d27a8388c326397e3f0a5db upstream.
    
    Moshi USB to Ethernet Adapter internally uses a Genesys Logic hub to
    connect to Realtek r8153.
    
    The Realtek r8153 ethernet does not work on the internal hub, no-lpm quirk
    can make it work.
    
    Since another r8153 dongle at my hand does not have the issue, so add
    the quirk to the Genesys Logic hub instead.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 921a1ed2a11ad05ffd95171a6b7509634baab760
Author: Bin Liu <b-liu@ti.com>
Date:   Tue Jul 25 09:31:33 2017 -0500

    usb: core: unlink urbs from the tail of the endpoint's urb_list
    
    commit 2eac13624364db5b5e1666ae0bb3a4d36bc56b6e upstream.
    
    While unlink an urb, if the urb has been programmed in the controller,
    the controller driver might do some hw related actions to tear down the
    urb.
    
    Currently usb_hcd_flush_endpoint() passes each urb from the head of the
    endpoint's urb_list to the controller driver, which could make the
    controller driver think each urb has been programmed and take the
    unnecessary actions for each urb.
    
    This patch changes the behavior in usb_hcd_flush_endpoint() to pass the
    urbs from the tail of the list, to avoid any unnecessary actions in an
    controller driver.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc2f02f745491d487a799d94fabf2a2e4cef4cb6
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Aug 1 10:41:56 2017 -0400

    USB: Check for dropped connection before switching to full speed
    
    commit 94c43b9897abf4ea366ed4dba027494e080c7050 upstream.
    
    Some buggy USB disk adapters disconnect and reconnect multiple times
    during the enumeration procedure.  This may lead to a device
    connecting at full speed instead of high speed, because when the USB
    stack sees that a device isn't able to enumerate at high speed, it
    tries to hand the connection over to a full-speed companion
    controller.
    
    The logic for doing this is careful to check that the device is still
    connected.  But this check is inadequate if the device disconnects and
    reconnects before the check is done.  The symptom is that a device
    works, but much more slowly than it is capable of operating.
    
    The situation was made worse recently by commit 22547c4cc4fe ("usb:
    hub: Wait for connection to be reestablished after port reset"), which
    increases the delay following a reset before a disconnect is
    recognized, thus giving the device more time to reconnect.
    
    This patch makes the check more robust.  If the device was
    disconnected at any time during enumeration, we will now skip the
    full-speed handover.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: Zdenek Kabelac <zkabelac@redhat.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed4f50eec60f0214cf3973dd94c8084cd6afd82e
Author: Alan Swanson <reiver@improbability.net>
Date:   Wed Jul 26 12:03:33 2017 +0100

    uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069
    
    commit 89f23d51defcb94a5026d4b5da13faf4e1150a6f upstream.
    
    Similar to commit d595259fbb7a ("usb-storage: Add ignore-residue quirk for
    Initio INIC-3619") for INIC-3169 in unusual_devs.h but INIC-3069 already
    present in unusual_uas.h. Both in same controller IC family.
    
    Issue is that MakeMKV fails during key exchange with installed bluray drive
    with following error:
    
    002004:0000 Error 'Scsi error - ILLEGAL REQUEST:COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT ESTABLISHED'
    occurred while issuing SCSI command AD010..080002400 to device 'SG:dev_11:0'
    
    Signed-off-by: Alan Swanson <reiver@improbability.net>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dedeba47c51ae265567e819eb8530a9cd73f5e26
Author: Akinobu Mita <akinobu.mita@gmail.com>
Date:   Wed Jun 21 01:46:37 2017 +0900

    iio: light: tsl2563: use correct event code
    
    commit a3507e48d3f99a93a3056a34a5365f310434570f upstream.
    
    The TSL2563 driver provides three iio channels, two of which are raw ADC
    channels (channel 0 and channel 1) in the device and the remaining one
    is calculated by the two.  The ADC channel 0 only supports programmable
    interrupt with threshold settings and this driver supports the event but
    the generated event code does not contain the corresponding iio channel
    type.
    
    This is going to change userspace ABI.  Hopefully fixing this to be
    what it should always have been won't break any userspace code.
    
    Cc: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfb5cc919c6140451c99c442a4411881c881f77e
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Jul 13 15:13:41 2017 +0200

    iio: accel: bmc150: Always restore device to normal mode after suspend-resume
    
    commit e59e18989c68a8d7941005f81ad6abc4ca682de0 upstream.
    
    After probe we would put the device in normal mode, after a runtime
    suspend-resume we would put it back in normal mode. But for a regular
    suspend-resume we would only put it back in normal mode if triggers
    or events have been requested.  This is not consistent and breaks
    reading raw values after a suspend-resume.
    
    This commit changes the regular resume path to also unconditionally put
    the device back in normal mode, fixing reading of raw values not working
    after a regular suspend-resume cycle.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5f6f4fe1c0923f4e4ace6d7da5cda9e6b8a3bc0
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Jul 14 11:31:03 2017 +0200

    staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read
    
    commit 105967ad68d2eb1a041bc041f9cf96af2a653b65 upstream.
    
    gcc-7 points out an older regression:
    
    drivers/staging/iio/resolver/ad2s1210.c: In function 'ad2s1210_read_raw':
    drivers/staging/iio/resolver/ad2s1210.c:515:42: error: '<<' in boolean context, did you mean '<' ? [-Werror=int-in-bool-context]
    
    The original code had 'unsigned short' here, but incorrectly got
    converted to 'bool'. This reverts the regression and uses a normal
    type instead.
    
    Fixes: 29148543c521 ("staging:iio:resolver:ad2s1210 minimal chan spec conversion.")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc978e9b65ab4c3b87ccefc52c454f29693ae135
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Tue Jul 25 23:58:50 2017 +0200

    USB: hcd: Mark secondary HCD as dead if the primary one died
    
    commit cd5a6a4fdaba150089af2afc220eae0fef74878a upstream.
    
    Make usb_hc_died() clear the HCD_FLAG_RH_RUNNING flag for the shared
    HCD and set HCD_FLAG_DEAD for it, in analogy with what is done for
    the primary one.
    
    Among other thigs, this prevents check_root_hub_suspended() from
    returning -EBUSY for dead HCDs which helps to work around system
    suspend issues in some situations.
    
    This actually fixes occasional suspend failures on one of my test
    machines.
    
    Suggested-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b278516e5e36fd330ce8b88371e755decd19d3b
Author: Bin Liu <b-liu@ti.com>
Date:   Tue Jul 25 09:31:34 2017 -0500

    usb: musb: fix tx fifo flush handling again
    
    commit 45d73860530a14c608f410b91c6c341777bfa85d upstream.
    
    commit 68fe05e2a451 ("usb: musb: fix tx fifo flush handling") drops the
    1ms delay trying to solve the long disconnect time issue when
    application queued many tx urbs. However, the 1ms delay is needed for
    some use cases, for example, without the delay, reconnecting AR9271 WIFI
    dongle no longer works if the connection is dropped from the AP.
    
    So let's add back the 1ms delay in musb_h_tx_flush_fifo(), and solve the
    long disconnect time problem with a separate patch for
    usb_hcd_flush_endpoint().
    
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a0c225613c2aa0bb3f607932545fe6fed5b385d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Aug 10 11:54:12 2017 -0700

    USB: serial: pl2303: add new ATEN device id
    
    commit 3b6bcd3d093c698d32e93d4da57679b8fbc5e01e upstream.
    
    This adds a new ATEN device id for a new pl2303-based device.
    
    Reported-by: Peter Kuo <PeterKuo@aten.com.tw>
    Cc: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31c9287b94303c4202f8232675da2852749d5ed7
Author: Stefan Triller <github@stefantriller.de>
Date:   Fri Jun 30 14:44:03 2017 +0200

    USB: serial: cp210x: add support for Qivicon USB ZigBee dongle
    
    commit 9585e340db9f6cc1c0928d82c3a23cc4460f0a3f upstream.
    
    The German Telekom offers a ZigBee USB Stick under the brand name Qivicon
    for their SmartHome Home Base in its 1. Generation. The productId is not
    known by the according kernel module, this patch adds support for it.
    
    Signed-off-by: Stefan Triller <github@stefantriller.de>
    Reviewed-by: Frans Klaver <fransklaver@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9cb43dec24e0a2b2799ac83561f58932454d9d9d
Author: Hector Martin <marcan@marcan.st>
Date:   Wed Aug 2 00:45:06 2017 +0900

    USB: serial: option: add D-Link DWM-222 device ID
    
    commit fd1b8668af59a11bb754a6c9b0051c6c5ce73b74 upstream.
    
    Add device id for D-Link DWM-222.
    
    Signed-off-by: Hector Martin <marcan@marcan.st>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a89843a80bd4cf348a69eaae21baa797ee620345
Author: Weston Andros Adamson <dros@monkey.org>
Date:   Tue Aug 1 16:25:01 2017 -0400

    nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays
    
    commit 1feb26162bee7b2f110facfec71b5c7bdbc7d14d upstream.
    
    The client was freeing the nfs4_ff_layout_ds, but not the contained
    nfs4_ff_ds_version array.
    
    Signed-off-by: Weston Andros Adamson <dros@primarydata.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7271d130b5dcde1bd0cc8b7924f712b8a111dbb2
Author: Mateusz Jurczyk <mjurczyk@google.com>
Date:   Wed Jun 7 12:26:49 2017 +0200

    fuse: initialize the flock flag in fuse_file on allocation
    
    commit 68227c03cba84a24faf8a7277d2b1a03c8959c2c upstream.
    
    Before the patch, the flock flag could remain uninitialized for the
    lifespan of the fuse_file allocation. Unless set to true in
    fuse_file_flock(), it would remain in an indeterminate state until read in
    an if statement in fuse_release_common(). This could consequently lead to
    taking an unexpected branch in the code.
    
    The bug was discovered by a runtime instrumentation designed to detect use
    of uninitialized memory in the kernel.
    
    Signed-off-by: Mateusz Jurczyk <mjurczyk@google.com>
    Fixes: 37fb3a30b462 ("fuse: fix flock")
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b89e781dab249e1c74e6b49e2664ae53a14c0306
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Fri Aug 4 23:59:31 2017 -0700

    iscsi-target: Fix iscsi_np reset hung task during parallel delete
    
    commit 978d13d60c34818a41fc35962602bdfa5c03f214 upstream.
    
    This patch fixes a bug associated with iscsit_reset_np_thread()
    that can occur during parallel configfs rmdir of a single iscsi_np
    used across multiple iscsi-target instances, that would result in
    hung task(s) similar to below where configfs rmdir process context
    was blocked indefinately waiting for iscsi_np->np_restart_comp
    to finish:
    
    [ 6726.112076] INFO: task dcp_proxy_node_:15550 blocked for more than 120 seconds.
    [ 6726.119440]       Tainted: G        W  O     4.1.26-3321 #2
    [ 6726.125045] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [ 6726.132927] dcp_proxy_node_ D ffff8803f202bc88     0 15550      1 0x00000000
    [ 6726.140058]  ffff8803f202bc88 ffff88085c64d960 ffff88083b3b1ad0 ffff88087fffeb08
    [ 6726.147593]  ffff8803f202c000 7fffffffffffffff ffff88083f459c28 ffff88083b3b1ad0
    [ 6726.155132]  ffff88035373c100 ffff8803f202bca8 ffffffff8168ced2 ffff8803f202bcb8
    [ 6726.162667] Call Trace:
    [ 6726.165150]  [<ffffffff8168ced2>] schedule+0x32/0x80
    [ 6726.170156]  [<ffffffff8168f5b4>] schedule_timeout+0x214/0x290
    [ 6726.176030]  [<ffffffff810caef2>] ? __send_signal+0x52/0x4a0
    [ 6726.181728]  [<ffffffff8168d7d6>] wait_for_completion+0x96/0x100
    [ 6726.187774]  [<ffffffff810e7c80>] ? wake_up_state+0x10/0x10
    [ 6726.193395]  [<ffffffffa035d6e2>] iscsit_reset_np_thread+0x62/0xe0 [iscsi_target_mod]
    [ 6726.201278]  [<ffffffffa0355d86>] iscsit_tpg_disable_portal_group+0x96/0x190 [iscsi_target_mod]
    [ 6726.210033]  [<ffffffffa0363f7f>] lio_target_tpg_store_enable+0x4f/0xc0 [iscsi_target_mod]
    [ 6726.218351]  [<ffffffff81260c5a>] configfs_write_file+0xaa/0x110
    [ 6726.224392]  [<ffffffff811ea364>] vfs_write+0xa4/0x1b0
    [ 6726.229576]  [<ffffffff811eb111>] SyS_write+0x41/0xb0
    [ 6726.234659]  [<ffffffff8169042e>] system_call_fastpath+0x12/0x71
    
    It would happen because each iscsit_reset_np_thread() sets state
    to ISCSI_NP_THREAD_RESET, sends SIGINT, and then blocks waiting
    for completion on iscsi_np->np_restart_comp.
    
    However, if iscsi_np was active processing a login request and
    more than a single iscsit_reset_np_thread() caller to the same
    iscsi_np was blocked on iscsi_np->np_restart_comp, iscsi_np
    kthread process context in __iscsi_target_login_thread() would
    flush pending signals and only perform a single completion of
    np->np_restart_comp before going back to sleep within transport
    specific iscsit_transport->iscsi_accept_np code.
    
    To address this bug, add a iscsi_np->np_reset_count and update
    __iscsi_target_login_thread() to keep completing np->np_restart_comp
    until ->np_reset_count has reached zero.
    
    Reported-by: Gary Guo <ghg@datera.io>
    Tested-by: Gary Guo <ghg@datera.io>
    Cc: Mike Christie <mchristi@redhat.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3afc4e9273dea5e15ca8e7e1a8af1e57e61493fc
Author: Varun Prakash <varun@chelsio.com>
Date:   Sun Jul 23 20:03:33 2017 +0530

    iscsi-target: fix memory leak in iscsit_setup_text_cmd()
    
    commit ea8dc5b4cd2195ee582cae28afa4164c6dea1738 upstream.
    
    On receiving text request iscsi-target allocates buffer for
    payload in iscsit_handle_text_cmd() and assigns buffer pointer
    to cmd->text_in_ptr, this buffer is currently freed in
    iscsit_release_cmd(), if iscsi-target sets 'C' bit in text
    response then it will receive another text request from the
    initiator with ttt != 0xffffffff in this case iscsi-target
    will find cmd using itt and call iscsit_setup_text_cmd()
    which will set cmd->text_in_ptr to NULL without freeing
    previously allocated buffer.
    
    This patch fixes this issue by calling kfree(cmd->text_in_ptr)
    in iscsit_setup_text_cmd() before assigning NULL to it.
    
    For the first text request cmd->text_in_ptr is NULL as
    cmd is memset to 0 in iscsit_allocate_cmd().
    
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ea732ebb53fdba26140989ac351dbc82056f224
Author: Jonathan Toppins <jtoppins@redhat.com>
Date:   Thu Aug 10 15:23:35 2017 -0700

    mm: ratelimit PFNs busy info message
    
    commit 75dddef32514f7aa58930bde6a1263253bc3d4ba upstream.
    
    The RDMA subsystem can generate several thousand of these messages per
    second eventually leading to a kernel crash.  Ratelimit these messages
    to prevent this crash.
    
    Doug said:
     "I've been carrying a version of this for several kernel versions. I
      don't remember when they started, but we have one (and only one) class
      of machines: Dell PE R730xd, that generate these errors. When it
      happens, without a rate limit, we get rcu timeouts and kernel oopses.
      With the rate limit, we just get a lot of annoying kernel messages but
      the machine continues on, recovers, and eventually the memory
      operations all succeed"
    
    And:
     "> Well... why are all these EBUSY's occurring? It sounds inefficient
      > (at least) but if it is expected, normal and unavoidable then
      > perhaps we should just remove that message altogether?
    
      I don't have an answer to that question. To be honest, I haven't
      looked real hard. We never had this at all, then it started out of the
      blue, but only on our Dell 730xd machines (and it hits all of them),
      but no other classes or brands of machines. And we have our 730xd
      machines loaded up with different brands and models of cards (for
      instance one dedicated to mlx4 hardware, one for qib, one for mlx5, an
      ocrdma/cxgb4 combo, etc), so the fact that it hit all of the machines
      meant it wasn't tied to any particular brand/model of RDMA hardware.
      To me, it always smelled of a hardware oddity specific to maybe the
      CPUs or mainboard chipsets in these machines, so given that I'm not an
      mm expert anyway, I never chased it down.
    
      A few other relevant details: it showed up somewhere around 4.8/4.9 or
      thereabouts. It never happened before, but the prinkt has been there
      since the 3.18 days, so possibly the test to trigger this message was
      changed, or something else in the allocator changed such that the
      situation started happening on these machines?
    
      And, like I said, it is specific to our 730xd machines (but they are
      all identical, so that could mean it's something like their specific
      ram configuration is causing the allocator to hit this on these
      machine but not on other machines in the cluster, I don't want to say
      it's necessarily the model of chipset or CPU, there are other bits of
      identicalness between these machines)"
    
    Link: http://lkml.kernel.org/r/499c0f6cc10d6eb829a67f2a4d75b4228a9b356e.1501695897.git.jtoppins@redhat.com
    Signed-off-by: Jonathan Toppins <jtoppins@redhat.com>
    Reviewed-by: Doug Ledford <dledford@redhat.com>
    Tested-by: Doug Ledford <dledford@redhat.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Hillf Danton <hillf.zj@alibaba-inc.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 97e371409da76ebe3282c0ba8bc86a84efc3694c
Author: Dima Zavin <dmitriyz@waymo.com>
Date:   Wed Aug 2 13:32:18 2017 -0700

    cpuset: fix a deadlock due to incomplete patching of cpusets_enabled()
    
    commit 89affbf5d9ebb15c6460596822e8857ea2f9e735 upstream.
    
    In codepaths that use the begin/retry interface for reading
    mems_allowed_seq with irqs disabled, there exists a race condition that
    stalls the patch process after only modifying a subset of the
    static_branch call sites.
    
    This problem manifested itself as a deadlock in the slub allocator,
    inside get_any_partial.  The loop reads mems_allowed_seq value (via
    read_mems_allowed_begin), performs the defrag operation, and then
    verifies the consistency of mem_allowed via the read_mems_allowed_retry
    and the cookie returned by xxx_begin.
    
    The issue here is that both begin and retry first check if cpusets are
    enabled via cpusets_enabled() static branch.  This branch can be
    rewritted dynamically (via cpuset_inc) if a new cpuset is created.  The
    x86 jump label code fully synchronizes across all CPUs for every entry
    it rewrites.  If it rewrites only one of the callsites (specifically the
    one in read_mems_allowed_retry) and then waits for the
    smp_call_function(do_sync_core) to complete while a CPU is inside the
    begin/retry section with IRQs off and the mems_allowed value is changed,
    we can hang.
    
    This is because begin() will always return 0 (since it wasn't patched
    yet) while retry() will test the 0 against the actual value of the seq
    counter.
    
    The fix is to use two different static keys: one for begin
    (pre_enable_key) and one for retry (enable_key).  In cpuset_inc(), we
    first bump the pre_enable key to ensure that cpuset_mems_allowed_begin()
    always return a valid seqcount if are enabling cpusets.  Similarly, when
    disabling cpusets via cpuset_dec(), we first ensure that callers of
    cpuset_mems_allowed_retry() will start ignoring the seqcount value
    before we let cpuset_mems_allowed_begin() return 0.
    
    The relevant stack traces of the two stuck threads:
    
      CPU: 1 PID: 1415 Comm: mkdir Tainted: G L  4.9.36-00104-g540c51286237 #4
      Hardware name: Default string Default string/Hardware, BIOS 4.29.1-20170526215256 05/26/2017
      task: ffff8817f9c28000 task.stack: ffffc9000ffa4000
      RIP: smp_call_function_many+0x1f9/0x260
      Call Trace:
        smp_call_function+0x3b/0x70
        on_each_cpu+0x2f/0x90
        text_poke_bp+0x87/0xd0
        arch_jump_label_transform+0x93/0x100
        __jump_label_update+0x77/0x90
        jump_label_update+0xaa/0xc0
        static_key_slow_inc+0x9e/0xb0
        cpuset_css_online+0x70/0x2e0
        online_css+0x2c/0xa0
        cgroup_apply_control_enable+0x27f/0x3d0
        cgroup_mkdir+0x2b7/0x420
        kernfs_iop_mkdir+0x5a/0x80
        vfs_mkdir+0xf6/0x1a0
        SyS_mkdir+0xb7/0xe0
        entry_SYSCALL_64_fastpath+0x18/0xad
    
      ...
    
      CPU: 2 PID: 1 Comm: init Tainted: G L  4.9.36-00104-g540c51286237 #4
      Hardware name: Default string Default string/Hardware, BIOS 4.29.1-20170526215256 05/26/2017
      task: ffff8818087c0000 task.stack: ffffc90000030000
      RIP: int3+0x39/0x70
      Call Trace:
        <#DB> ? ___slab_alloc+0x28b/0x5a0
        <EOE> ? copy_process.part.40+0xf7/0x1de0
        __slab_alloc.isra.80+0x54/0x90
        copy_process.part.40+0xf7/0x1de0
        copy_process.part.40+0xf7/0x1de0
        kmem_cache_alloc_node+0x8a/0x280
        copy_process.part.40+0xf7/0x1de0
        _do_fork+0xe7/0x6c0
        _raw_spin_unlock_irq+0x2d/0x60
        trace_hardirqs_on_caller+0x136/0x1d0
        entry_SYSCALL_64_fastpath+0x5/0xad
        do_syscall_64+0x27/0x350
        SyS_clone+0x19/0x20
        do_syscall_64+0x60/0x350
        entry_SYSCALL64_slow_path+0x25/0x25
    
    Link: http://lkml.kernel.org/r/20170731040113.14197-1-dmitriyz@waymo.com
    Fixes: 46e700abc44c ("mm, page_alloc: remove unnecessary taking of a seqlock when cpusets are disabled")
    Signed-off-by: Dima Zavin <dmitriyz@waymo.com>
    Reported-by: Cliff Spradlin <cspradlin@waymo.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Christopher Lameter <cl@linux.com>
    Cc: Li Zefan <lizefan@huawei.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    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>