commit 83e05c58300605f3ab87819c19d1822f54eff81e
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jun 26 07:51:32 2018 +0800

    Linux 4.17.3

commit 9ec1cadef3b8b0d380dca1fbb451b8bf67d67bf1
Author: Vlastimil Babka <vbabka@suse.cz>
Date:   Thu Jun 7 17:09:29 2018 -0700

    mm, page_alloc: do not break __GFP_THISNODE by zonelist reset
    
    commit 7810e6781e0fcbca78b91cf65053f895bf59e85f upstream.
    
    In __alloc_pages_slowpath() we reset zonelist and preferred_zoneref for
    allocations that can ignore memory policies.  The zonelist is obtained
    from current CPU's node.  This is a problem for __GFP_THISNODE
    allocations that want to allocate on a different node, e.g.  because the
    allocating thread has been migrated to a different CPU.
    
    This has been observed to break SLAB in our 4.4-based kernel, because
    there it relies on __GFP_THISNODE working as intended.  If a slab page
    is put on wrong node's list, then further list manipulations may corrupt
    the list because page_to_nid() is used to determine which node's
    list_lock should be locked and thus we may take a wrong lock and race.
    
    Current SLAB implementation seems to be immune by luck thanks to commit
    511e3a058812 ("mm/slab: make cache_grow() handle the page allocated on
    arbitrary node") but there may be others assuming that __GFP_THISNODE
    works as promised.
    
    We can fix it by simply removing the zonelist reset completely.  There
    is actually no reason to reset it, because memory policies and cpusets
    don't affect the zonelist choice in the first place.  This was different
    when commit 183f6371aac2 ("mm: ignore mempolicies when using
    ALLOC_NO_WATERMARK") introduced the code, as mempolicies provided their
    own restricted zonelists.
    
    We might consider this for 4.17 although I don't know if there's
    anything currently broken.
    
    SLAB is currently not affected, but in kernels older than 4.7 that don't
    yet have 511e3a058812 ("mm/slab: make cache_grow() handle the page
    allocated on arbitrary node") it is.  That's at least 4.4 LTS.  Older
    ones I'll have to check.
    
    So stable backports should be more important, but will have to be
    reviewed carefully, as the code went through many changes.  BTW I think
    that also the ac->preferred_zoneref reset is currently useless if we
    don't also reset ac->nodemask from a mempolicy to NULL first (which we
    probably should for the OOM victims etc?), but I would leave that for a
    separate patch.
    
    Link: http://lkml.kernel.org/r/20180525130853.13915-1-vbabka@suse.cz
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Fixes: 183f6371aac2 ("mm: ignore mempolicies when using ALLOC_NO_WATERMARK")
    Acked-by: Mel Gorman <mgorman@techsingularity.net>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ce8013b1bbf4ea1ededd2c3f3b1bed7e4f72689
Author: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Date:   Thu Jun 7 17:11:01 2018 -0700

    fs/binfmt_misc.c: do not allow offset overflow
    
    commit 5cc41e099504b77014358b58567c5ea6293dd220 upstream.
    
    WHen registering a new binfmt_misc handler, it is possible to overflow
    the offset to get a negative value, which might crash the system, or
    possibly leak kernel data.
    
    Here is a crash log when 2500000000 was used as an offset:
    
      BUG: unable to handle kernel paging request at ffff989cfd6edca0
      IP: load_misc_binary+0x22b/0x470 [binfmt_misc]
      PGD 1ef3e067 P4D 1ef3e067 PUD 0
      Oops: 0000 [#1] SMP NOPTI
      Modules linked in: binfmt_misc kvm_intel ppdev kvm irqbypass joydev input_leds serio_raw mac_hid parport_pc qemu_fw_cfg parpy
      CPU: 0 PID: 2499 Comm: bash Not tainted 4.15.0-22-generic #24-Ubuntu
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.1-1 04/01/2014
      RIP: 0010:load_misc_binary+0x22b/0x470 [binfmt_misc]
      Call Trace:
        search_binary_handler+0x97/0x1d0
        do_execveat_common.isra.34+0x667/0x810
        SyS_execve+0x31/0x40
        do_syscall_64+0x73/0x130
        entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Use kstrtoint instead of simple_strtoul.  It will work as the code
    already set the delimiter byte to '\0' and we only do it when the field
    is not empty.
    
    Tested with offsets -1, 2500000000, UINT_MAX and INT_MAX.  Also tested
    with examples documented at Documentation/admin-guide/binfmt-misc.rst
    and other registrations from packages on Ubuntu.
    
    Link: http://lkml.kernel.org/r/20180529135648.14254-1-cascardo@canonical.com
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8c0b29a879d56e7bd0cad37fa472876aef69dd9
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Sat May 12 00:33:10 2018 +0300

    vhost: fix info leak due to uninitialized memory
    
    commit 670ae9caaca467ea1bfd325cb2a5c98ba87f94ad upstream.
    
    struct vhost_msg within struct vhost_msg_node is copied to userspace.
    Unfortunately it turns out on 64 bit systems vhost_msg has padding after
    type which gcc doesn't initialize, leaking 4 uninitialized bytes to
    userspace.
    
    This padding also unfortunately means 32 bit users of this interface are
    broken on a 64 bit kernel which will need to be fixed separately.
    
    Fixes: CVE-2018-1118
    Cc: stable@vger.kernel.org
    Reported-by: Kevin Easton <kevin@guarana.org>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reported-by: syzbot+87cfa083e727a224754b@syzkaller.appspotmail.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2527e57b640264599f6157e0285c3adc1322b2d
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Tue Jun 12 13:42:46 2018 -0700

    HID: wacom: Correct logical maximum Y for 2nd-gen Intuos Pro large
    
    commit d471b6b22d37bf9928c6d0202bdaaf76583b8b61 upstream.
    
    The HID descriptor for the 2nd-gen Intuos Pro large (PTH-860) contains
    a typo which defines an incorrect logical maximum Y value. This causes
    a small portion of the bottom of the tablet to become unusable (both
    because the area is below the "bottom" of the tablet and because
    'wacom_wac_event' ignores out-of-range values). It also results in a
    skewed aspect ratio.
    
    To fix this, we add a quirk to 'wacom_usage_mapping' which overwrites
    the data with the correct value.
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    CC: stable@vger.kernel.org # v4.10+
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d95d9509a92691070362495f6f73b3f43364f4e1
Author: Even Xu <even.xu@intel.com>
Date:   Fri Feb 12 04:11:34 2016 +0800

    HID: intel_ish-hid: ipc: register more pm callbacks to support hibernation
    
    commit ebeaa367548e9e92dd9374b9464ff6e7d157117b upstream.
    
    Current ISH driver only registers suspend/resume PM callbacks which don't
    support hibernation (suspend to disk). Basically after hiberation, the ISH
    can't resume properly and user may not see sensor events (for example: screen
                    rotation may not work).
    
    User will not see a crash or panic or anything except the following message
    in log:
    
            hid-sensor-hub 001F:8086:22D8.0001: timeout waiting for response from ISHTP device
    
    So this patch adds support for S4/hiberbation to ISH by using the
    SIMPLE_DEV_PM_OPS() MACRO instead of struct dev_pm_ops directly. The suspend
    and resume functions will now be used for both suspend to RAM and hibernation.
    
    If power management is disabled, SIMPLE_DEV_PM_OPS will do nothing, the suspend
    and resume related functions won't be used, so mark them as __maybe_unused to
    clarify that this is the intended behavior, and remove #ifdefs for power
    management.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Even Xu <even.xu@intel.com>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 998d7773b9edc12abb5377e00f214ecfed0b1945
Author: Martin Brandenburg <martin@omnibond.com>
Date:   Thu May 31 16:37:00 2018 +0000

    orangefs: report attributes_mask and attributes for statx
    
    commit 7f54910fa8dfe504f2e1563f4f6ddc3294dfbf3a upstream.
    
    OrangeFS formerly failed to set attributes_mask with the result that
    software could not see immutable and append flags present in the
    filesystem.
    
    Reported-by: Becky Ligon <ligon@clemson.edu>
    Signed-off-by: Martin Brandenburg <martin@omnibond.com>
    Fixes: 68a24a6cc4a6 ("orangefs: implement statx")
    Cc: stable@vger.kernel.org
    Cc: hubcap@omnibond.com
    Signed-off-by: Mike Marshall <hubcap@omnibond.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5aeeed5f603bd3555e3e690b1f5387da8dc01f65
Author: Martin Brandenburg <martin@omnibond.com>
Date:   Thu May 31 16:36:58 2018 +0000

    orangefs: set i_size on new symlink
    
    commit f6a4b4c9d07dda90c7c29dae96d6119ac6425dca upstream.
    
    As long as a symlink inode remains in-core, the destination (and
    therefore size) will not be re-fetched from the server, as it cannot
    change.  The original implementation of the attribute cache assumed that
    setting the expiry time in the past was sufficient to cause a re-fetch
    of all attributes on the next getattr.  That does not work in this case.
    
    The bug manifested itself as follows.  When the command sequence
    
    touch foo; ln -s foo bar; ls -l bar
    
    is run, the output was
    
    lrwxrwxrwx. 1 fedora fedora 4906 Apr 24 19:10 bar -> foo
    
    However, after a re-mount, ls -l bar produces
    
    lrwxrwxrwx. 1 fedora fedora    3 Apr 24 19:10 bar -> foo
    
    After this commit, even before a re-mount, the output is
    
    lrwxrwxrwx. 1 fedora fedora    3 Apr 24 19:10 bar -> foo
    
    Reported-by: Becky Ligon <ligon@clemson.edu>
    Signed-off-by: Martin Brandenburg <martin@omnibond.com>
    Fixes: 71680c18c8f2 ("orangefs: Cache getattr results.")
    Cc: stable@vger.kernel.org
    Cc: hubcap@omnibond.com
    Signed-off-by: Mike Marshall <hubcap@omnibond.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d79bd39cd5bc975ebe9190ac75dd9285069a33d
Author: Luca Coelho <luciano.coelho@intel.com>
Date:   Tue Feb 13 11:09:40 2018 +0200

    iwlwifi: fw: harden page loading code
    
    commit 9039d985811d5b109b58b202b7594fd24e433fed upstream.
    
    The page loading code trusts the data provided in the firmware images
    a bit too much and may cause a buffer overflow or copy unknown data if
    the block sizes don't match what we expect.
    
    To prevent potential problems, harden the code by checking if the
    sizes we are copying are what we expect.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b72cee00bc77e8cf07dcaa14e751b813342fe3f5
Author: Sean Young <sean@mess.org>
Date:   Thu May 24 05:47:17 2018 -0400

    media: rc: ensure input/lirc device can be opened after register
    
    commit d7832cd2a3c87eb6ae1e802c88b6fc56c5823f6d upstream.
    
    Since commit cb84343fced1 ("media: lirc: do not call close() or open() on
    unregistered devices") rc_open() will return -ENODEV if rcdev->registered
    is false. Ensure this is set before we register the input device and the
    lirc device, else we have a short window where the neither the lirc or
    input device can be opened.
    
    Fixes: cb84343fced1 ("media: lirc: do not call close() or open() on unregistered devices")
    
    Cc: stable@vger.kernel.org # v4.16+
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ffb2627265f681292a1038f65ab91e666d7b7d8
Author: Kieran Bingham <kieran.bingham@ideasonboard.com>
Date:   Wed Mar 21 11:43:08 2018 -0400

    media: uvcvideo: Prevent setting unavailable flags
    
    commit 0dc68cabdb626e33d02561529e6a4c681b72a784 upstream.
    
    The addition of an extra operation to use the GET_INFO command
    overwrites all existing flags from the uvc_ctrls table. This includes
    setting all controls as supporting GET_MIN, GET_MAX, GET_RES, and
    GET_DEF regardless of whether they do or not.
    
    Move the initialisation of these control capabilities directly to the
    uvc_ctrl_fill_xu_info() call where they were originally located in that
    use case, and ensure that the new functionality in uvc_ctrl_get_flags()
    will only set flags based on their reported capability from the GET_INFO
    call.
    
    Fixes: 859086ae3636 ("media: uvcvideo: Apply flags from device to actual properties")
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
    Tested-by: Guennadi Liakhovetski <guennadi.liakhovetski@intel.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit caa8334f34c898c126b232906e4144a1818390cc
Author: Tony Luck <tony.luck@intel.com>
Date:   Fri Jun 8 09:07:32 2018 -0700

    x86/intel_rdt: Enable CMT and MBM on new Skylake stepping
    
    commit 1d9f3e20a56d33e55748552aeec597f58542f92d upstream.
    
    New stepping of Skylake has fixes for cache occupancy and memory
    bandwidth monitoring.
    
    Update the code to enable these by default on newer steppings.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: stable@vger.kernel.org # v4.14
    Cc: Vikas Shivappa <vikas.shivappa@linux.intel.com>
    Link: https://lkml.kernel.org/r/20180608160732.9842-1-tony.luck@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 377cc1b7b889241f3433c3632d8d996e8b089a71
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Jun 6 14:46:59 2018 +0200

    genirq/migration: Avoid out of line call if pending is not set
    
    commit d340ebd696f921d3ad01b8c0c29dd38f2ad2bf3e upstream.
    
    The upcoming fix for the -EBUSY return from affinity settings requires to
    use the irq_move_irq() functionality even on irq remapped interrupts. To
    avoid the out of line call, move the check for the pending bit into an
    inline helper.
    
    Preparatory change for the real fix. No functional change.
    
    Fixes: dccfe3147b42 ("x86/vector: Simplify vector move cleanup")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <liu.song.a23@gmail.com>
    Cc: Dmitry Safonov <0x7f454c46@gmail.com>
    Cc: stable@vger.kernel.org
    Cc: Mike Travis <mike.travis@hpe.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Tariq Toukan <tariqt@mellanox.com>
    Cc: Dou Liyang <douly.fnst@cn.fujitsu.com>
    Link: https://lkml.kernel.org/r/20180604162224.471925894@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65a5f89ae6340633187ba0b8d600e133864b3c34
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Jun 4 17:33:59 2018 +0200

    genirq/affinity: Defer affinity setting if irq chip is busy
    
    commit 12f47073a40f6aa75119d8f5df4077b7f334cced upstream.
    
    The case that interrupt affinity setting fails with -EBUSY can be handled
    in the kernel completely by using the already available generic pending
    infrastructure.
    
    If a irq_chip::set_affinity() fails with -EBUSY, handle it like the
    interrupts for which irq_chip::set_affinity() can only be invoked from
    interrupt context. Copy the new affinity mask to irq_desc::pending_mask and
    set the affinity pending bit. The next raised interrupt for the affected
    irq will check the pending bit and try to set the new affinity from the
    handler. This avoids that -EBUSY is returned when an affinity change is
    requested from user space and the previous change has not been cleaned
    up. The new affinity will take effect when the next interrupt is raised
    from the device.
    
    Fixes: dccfe3147b42 ("x86/vector: Simplify vector move cleanup")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Song Liu <songliubraving@fb.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <liu.song.a23@gmail.com>
    Cc: Dmitry Safonov <0x7f454c46@gmail.com>
    Cc: stable@vger.kernel.org
    Cc: Mike Travis <mike.travis@hpe.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Tariq Toukan <tariqt@mellanox.com>
    Link: https://lkml.kernel.org/r/20180604162224.819273597@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05418c1693fff29673f1edcfc9ca4a38d6e20e30
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Jun 4 17:33:54 2018 +0200

    genirq/generic_pending: Do not lose pending affinity update
    
    commit a33a5d2d16cb84bea8d5f5510f3a41aa48b5c467 upstream.
    
    The generic pending interrupt mechanism moves interrupts from the interrupt
    handler on the original target CPU to the new destination CPU. This is
    required for x86 and ia64 due to the way the interrupt delivery and
    acknowledge works if the interrupts are not remapped.
    
    However that update can fail for various reasons. Some of them are valid
    reasons to discard the pending update, but the case, when the previous move
    has not been fully cleaned up is not a legit reason to fail.
    
    Check the return value of irq_do_set_affinity() for -EBUSY, which indicates
    a pending cleanup, and rearm the pending move in the irq dexcriptor so it's
    tried again when the next interrupt arrives.
    
    Fixes: 996c591227d9 ("x86/irq: Plug vector cleanup race")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Song Liu <songliubraving@fb.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <liu.song.a23@gmail.com>
    Cc: Dmitry Safonov <0x7f454c46@gmail.com>
    Cc: stable@vger.kernel.org
    Cc: Mike Travis <mike.travis@hpe.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Tariq Toukan <tariqt@mellanox.com>
    Link: https://lkml.kernel.org/r/20180604162224.386544292@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ad6484b9e0b334872ebbf25f50ff435cb1e5d49
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Jun 4 17:33:56 2018 +0200

    irq_remapping: Use apic_ack_irq()
    
    commit 8a2b7d142e7ac477d52f5f92251e59fc136d7ddd upstream.
    
    To address the EBUSY fail of interrupt affinity settings in case that the
    previous setting has not been cleaned up yet, use the new apic_ack_irq()
    function instead of the special ir_ack_apic_edge() implementation which is
    merily a wrapper around ack_APIC_irq().
    
    Preparatory change for the real fix
    
    Fixes: dccfe3147b42 ("x86/vector: Simplify vector move cleanup")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Song Liu <songliubraving@fb.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <liu.song.a23@gmail.com>
    Cc: Dmitry Safonov <0x7f454c46@gmail.com>
    Cc: stable@vger.kernel.org
    Cc: Mike Travis <mike.travis@hpe.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Tariq Toukan <tariqt@mellanox.com>
    Link: https://lkml.kernel.org/r/20180604162224.555716895@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8244e4593d17bf325c14dfee1f79891c7068f3ce
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Jun 4 17:33:58 2018 +0200

    x86/platform/uv: Use apic_ack_irq()
    
    commit 839b0f1c4ef674cd929a42304c078afca278581a upstream.
    
    To address the EBUSY fail of interrupt affinity settings in case that the
    previous setting has not been cleaned up yet, use the new apic_ack_irq()
    function instead of the special uv_ack_apic() implementation which is
    merily a wrapper around ack_APIC_irq().
    
    Preparatory change for the real fix
    
    Fixes: dccfe3147b42 ("x86/vector: Simplify vector move cleanup")
    Reported-by: Song Liu <liu.song.a23@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Song Liu <songliubraving@fb.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Dmitry Safonov <0x7f454c46@gmail.com>
    Cc: stable@vger.kernel.org
    Cc: Mike Travis <mike.travis@hpe.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Tariq Toukan <tariqt@mellanox.com>
    Link: https://lkml.kernel.org/r/20180604162224.721691398@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b287d8e1fae4453b4058c8a8bbc4a228288d8e4a
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Jun 4 17:33:57 2018 +0200

    x86/ioapic: Use apic_ack_irq()
    
    commit 2b04e46d8d0b9b7ac08ded672e3eab823f01d77a upstream.
    
    To address the EBUSY fail of interrupt affinity settings in case that the
    previous setting has not been cleaned up yet, use the new apic_ack_irq()
    function instead of directly invoking ack_APIC_irq().
    
    Preparatory change for the real fix
    
    Fixes: dccfe3147b42 ("x86/vector: Simplify vector move cleanup")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Song Liu <songliubraving@fb.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <liu.song.a23@gmail.com>
    Cc: Dmitry Safonov <0x7f454c46@gmail.com>
    Cc: stable@vger.kernel.org
    Cc: Mike Travis <mike.travis@hpe.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Tariq Toukan <tariqt@mellanox.com>
    Link: https://lkml.kernel.org/r/20180604162224.639011135@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa984d9c38dc60fa01d7eaeb6a4d8ef3c6044ac2
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Jun 4 17:33:55 2018 +0200

    x86/apic: Provide apic_ack_irq()
    
    commit c0255770ccdc77ef2184d2a0a2e0cde09d2b44a4 upstream.
    
    apic_ack_edge() is explicitely for handling interrupt affinity cleanup when
    interrupt remapping is not available or disable.
    
    Remapped interrupts and also some of the platform specific special
    interrupts, e.g. UV, invoke ack_APIC_irq() directly.
    
    To address the issue of failing an affinity update with -EBUSY the delayed
    affinity mechanism can be reused, but ack_APIC_irq() does not handle
    that. Adding this to ack_APIC_irq() is not possible, because that function
    is also used for exceptions and directly handled interrupts like IPIs.
    
    Create a new function, which just contains the conditional invocation of
    irq_move_irq() and the final ack_APIC_irq().
    
    Reuse the new function in apic_ack_edge().
    
    Preparatory change for the real fix.
    
    Fixes: dccfe3147b42 ("x86/vector: Simplify vector move cleanup")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Song Liu <songliubraving@fb.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <liu.song.a23@gmail.com>
    Cc: Dmitry Safonov <0x7f454c46@gmail.com>
    Cc: stable@vger.kernel.org
    Cc: Mike Travis <mike.travis@hpe.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Tariq Toukan <tariqt@mellanox.com>
    Link: https://lkml.kernel.org/r/20180604162224.471925894@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fab4dcd0040bc9b6131c3933085fa9ba7545ea3c
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Jun 4 17:33:53 2018 +0200

    x86/apic/vector: Prevent hlist corruption and leaks
    
    commit 80ae7b1a918e78b0bae88b0c0ad413d3fdced968 upstream.
    
    Several people observed the WARN_ON() in irq_matrix_free() which triggers
    when the caller tries to free an vector which is not in the allocation
    range. Song provided the trace information which allowed to decode the root
    cause.
    
    The rework of the vector allocation mechanism failed to preserve a sanity
    check, which prevents setting a new target vector/CPU when the previous
    affinity change has not fully completed.
    
    As a result a half finished affinity change can be overwritten, which can
    cause the leak of a irq descriptor pointer on the previous target CPU and
    double enqueue of the hlist head into the cleanup lists of two or more
    CPUs. After one CPU cleaned up its vector the next CPU will invoke the
    cleanup handler with vector 0, which triggers the out of range warning in
    the matrix allocator.
    
    Prevent this by checking the apic_data of the interrupt whether the
    move_in_progress flag is false and the hlist node is not hashed. Return
    -EBUSY if not.
    
    This prevents the damage and restores the behaviour before the vector
    allocation rework, but due to other changes in that area it also widens the
    chance that user space can observe -EBUSY. In theory this should be fine,
    but actually not all user space tools handle -EBUSY correctly. Addressing
    that is not part of this fix, but will be addressed in follow up patches.
    
    Fixes: 69cde0004a4b ("x86/vector: Use matrix allocator for vector assignment")
    Reported-by: Dmitry Safonov <0x7f454c46@gmail.com>
    Reported-by: Tariq Toukan <tariqt@mellanox.com>
    Reported-by: Song Liu <liu.song.a23@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Song Liu <songliubraving@fb.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Cc: Mike Travis <mike.travis@hpe.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Link: https://lkml.kernel.org/r/20180604162224.303870257@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e274d27200d7253414f927284c7715d84cd18867
Author: Dou Liyang <douly.fnst@cn.fujitsu.com>
Date:   Fri Jun 1 14:50:31 2018 +0800

    x86/vector: Fix the args of vector_alloc tracepoint
    
    commit 838d76d63ec4eaeaa12bedfa50f261480f615200 upstream.
    
    The vector_alloc tracepont reversed the reserved and ret aggs, that made
    the trace print wrong. Exchange them.
    
    Fixes: 8d1e3dca7de6 ("x86/vector: Add tracepoints for vector management")
    Signed-off-by: Dou Liyang <douly.fnst@cn.fujitsu.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: hpa@zytor.com
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180601065031.21872-1-douly.fnst@cn.fujitsu.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7df4825a13128cf0d87f4facde1cdcf3e30d0354
Author: Stefan Potyra <Stefan.Potyra@elektrobit.com>
Date:   Wed May 2 10:55:31 2018 +0200

    w1: mxc_w1: Enable clock before calling clk_get_rate() on it
    
    commit 955bc61328dc0a297fb3baccd84e9d3aee501ed8 upstream.
    
    According to the API, you may only call clk_get_rate() after actually
    enabling it.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Fixes: a5fd9139f74c ("w1: add 1-wire master driver for i.MX27 / i.MX31")
    Signed-off-by: Stefan Potyra <Stefan.Potyra@elektrobit.com>
    Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bee34f76ea0880cb71f41f57f1bfe538d427877
Author: Keith Busch <keith.busch@intel.com>
Date:   Thu May 10 08:34:20 2018 -0600

    nvme/pci: Sync controller reset for AER slot_reset
    
    commit cc1d5e749a2e1cf59fa940b976181e631d6985e1 upstream.
    
    AER handling expects a successful return from slot_reset means the
    driver made the device functional again. The nvme driver had been using
    an asynchronous reset to recover the device, so the device
    may still be initializing after control is returned to the
    AER handler. This creates problems for subsequent event handling,
    causing the initializion to fail.
    
    This patch fixes that by syncing the controller reset before returning
    to the AER driver, and reporting the true state of the reset.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=199657
    Reported-by: Alex Gagniuc <mr.nuke.me@gmail.com>
    Cc: Sinan Kaya <okaya@codeaurora.org>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: stable@vger.kernel.org
    Tested-by: Alex Gagniuc <mr.nuke.me@gmail.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26e0e0da4577888a4cd60d894829d34337b55d39
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu May 31 13:21:07 2018 +0200

    libata: Drop SanDisk SD7UB3Q*G1001 NOLPM quirk
    
    commit 2cfce3a86b64b53f0a70e92a6a659c720c319b45 upstream.
    
    Commit 184add2ca23c ("libata: Apply NOLPM quirk for SanDisk
    SD7UB3Q*G1001 SSDs") disabled LPM for SanDisk SD7UB3Q*G1001 SSDs.
    
    This has lead to several reports of users of that SSD where LPM
    was working fine and who know have a significantly increased idle
    power consumption on their laptops.
    
    Likely there is another problem on the T450s from the original
    reporter which gets exposed by the uncore reaching deeper sleep
    states (higher PC-states) due to LPM being enabled. The problem as
    reported, a hardfreeze about once a day, already did not sound like
    it would be caused by LPM and the reports of the SSD working fine
    confirm this. The original reporter is ok with dropping the quirk.
    
    A X250 user has reported the same hard freeze problem and for him
    the problem went away after unrelated updates, I suspect some GPU
    driver stack changes fixed things.
    
    TL;DR: The original reporters problem were triggered by LPM but not
    an LPM issue, so drop the quirk for the SSD in question.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1583207
    Cc: stable@vger.kernel.org
    Cc: Richard W.M. Jones <rjones@redhat.com>
    Cc: Lorenzo Dalrio <lorenzo.dalrio@gmail.com>
    Reported-by: Lorenzo Dalrio <lorenzo.dalrio@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Acked-by: "Richard W.M. Jones" <rjones@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b7fa3981be54fe6f071dea93b69d96755f323a1
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue May 29 12:13:24 2018 +0300

    libata: zpodd: small read overflow in eject_tray()
    
    commit 18c9a99bce2a57dfd7e881658703b5d7469cc7b9 upstream.
    
    We read from the cdb[] buffer in ata_exec_internal_sg().  It has to be
    ATAPI_CDB_LEN (16) bytes long, but this buffer is only 12 bytes.
    
    Fixes: 213342053db5 ("libata: handle power transition of ODD")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ae0b72896a7bbda41c29d5ca2102099cd0dd351
Author: Chen Yu <yu.c.chen@intel.com>
Date:   Fri Jun 8 09:07:33 2018 +0800

    cpufreq: governors: Fix long idle detection logic in load calculation
    
    commit 7592019634f8473f0b0973ce79297183077bdbc2 upstream.
    
    According to current code implementation, detecting the long
    idle period is done by checking if the interval between two
    adjacent utilization update handlers is long enough. Although
    this mechanism can detect if the idle period is long enough
    (no utilization hooks invoked during idle period), it might
    not cover a corner case: if the task has occupied the CPU
    for too long which causes no context switches during that
    period, then no utilization handler will be launched until this
    high prio task is scheduled out. As a result, the idle_periods
    field might be calculated incorrectly because it regards the
    100% load as 0% and makes the conservative governor who uses
    this field confusing.
    
    Change the detection to compare the idle_time with sampling_rate
    directly.
    
    Reported-by: Artem S. Tashkinov <t.artem@mailcity.com>
    Signed-off-by: Chen Yu <yu.c.chen@intel.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e2d228fca4b3c1f15806444465012fdf659a2cb
Author: Suman Anna <s-anna@ti.com>
Date:   Thu May 31 17:21:43 2018 -0500

    cpufreq: ti-cpufreq: Fix an incorrect error return value
    
    commit e5d295b06d69a1924665a16a4987be475addd00f upstream.
    
    Commit 05829d9431df (cpufreq: ti-cpufreq: kfree opp_data when
    failure) has fixed a memory leak in the failure path, however
    the patch returned a positive value on get_cpu_device() failure
    instead of the previous negative value. Fix this incorrect error
    return value properly.
    
    Fixes: 05829d9431df (cpufreq: ti-cpufreq: kfree opp_data when failure)
    Cc: 4.14+ <stable@vger.kernel.org> # v4.14+
    Signed-off-by: Suman Anna <s-anna@ti.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2243ed28c96f284c3fde9858d5c4c8a7dfc59f84
Author: Tao Wang <kevin.wangtao@hisilicon.com>
Date:   Sat May 26 15:16:48 2018 +0800

    cpufreq: Fix new policy initialization during limits updates via sysfs
    
    commit c7d1f119c48f64bebf0fa1e326af577c6152fe30 upstream.
    
    If the policy limits are updated via cpufreq_update_policy() and
    subsequently via sysfs, the limits stored in user_policy may be
    set incorrectly.
    
    For example, if both min and max are set via sysfs to the maximum
    available frequency, user_policy.min and user_policy.max will also
    be the maximum.  If a policy notifier triggered by
    cpufreq_update_policy() lowers both the min and the max at this
    point, that change is not reflected by the user_policy limits, so
    if the max is updated again via sysfs to the same lower value,
    then user_policy.max will be lower than user_policy.min which
    shouldn't happen.  In particular, if one of the policy CPUs is
    then taken offline and back online, cpufreq_set_policy() will
    fail for it due to a failing limits check.
    
    To prevent that from happening, initialize the min and max fields
    of the new_policy object to the ones stored in user_policy that
    were previously set via sysfs.
    
    Signed-off-by: Kevin Wangtao <kevin.wangtao@hisilicon.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    [ rjw: Subject & changelog ]
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ca4ccb9f38197eb98ad222550ee143e17395386
Author: Tejun Heo <tj@kernel.org>
Date:   Wed May 23 10:56:32 2018 -0700

    bdi: Move cgroup bdi_writeback to a dedicated low concurrency workqueue
    
    commit f183464684190bacbfb14623bd3e4e51b7575b4c upstream.
    
    From 0aa2e9b921d6db71150633ff290199554f0842a8 Mon Sep 17 00:00:00 2001
    From: Tejun Heo <tj@kernel.org>
    Date: Wed, 23 May 2018 10:29:00 -0700
    
    cgwb_release() punts the actual release to cgwb_release_workfn() on
    system_wq.  Depending on the number of cgroups or block devices, there
    can be a lot of cgwb_release_workfn() in flight at the same time.
    
    We're periodically seeing close to 256 kworkers getting stuck with the
    following stack trace and overtime the entire system gets stuck.
    
      [<ffffffff810ee40c>] _synchronize_rcu_expedited.constprop.72+0x2fc/0x330
      [<ffffffff810ee634>] synchronize_rcu_expedited+0x24/0x30
      [<ffffffff811ccf23>] bdi_unregister+0x53/0x290
      [<ffffffff811cd1e9>] release_bdi+0x89/0xc0
      [<ffffffff811cd645>] wb_exit+0x85/0xa0
      [<ffffffff811cdc84>] cgwb_release_workfn+0x54/0xb0
      [<ffffffff810a68d0>] process_one_work+0x150/0x410
      [<ffffffff810a71fd>] worker_thread+0x6d/0x520
      [<ffffffff810ad3dc>] kthread+0x12c/0x160
      [<ffffffff81969019>] ret_from_fork+0x29/0x40
      [<ffffffffffffffff>] 0xffffffffffffffff
    
    The events leading to the lockup are...
    
    1. A lot of cgwb_release_workfn() is queued at the same time and all
       system_wq kworkers are assigned to execute them.
    
    2. They all end up calling synchronize_rcu_expedited().  One of them
       wins and tries to perform the expedited synchronization.
    
    3. However, that invovles queueing rcu_exp_work to system_wq and
       waiting for it.  Because #1 is holding all available kworkers on
       system_wq, rcu_exp_work can't be executed.  cgwb_release_workfn()
       is waiting for synchronize_rcu_expedited() which in turn is waiting
       for cgwb_release_workfn() to free up some of the kworkers.
    
    We shouldn't be scheduling hundreds of cgwb_release_workfn() at the
    same time.  There's nothing to be gained from that.  This patch
    updates cgwb release path to use a dedicated percpu workqueue with
    @max_active of 1.
    
    While this resolves the problem at hand, it might be a good idea to
    isolate rcu_exp_work to its own workqueue too as it can be used from
    various paths and is prone to this sort of indirect A-A deadlocks.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17fdd9860ce4c8c2d4461645ac86fa1120446994
Author: Roman Pen <roman.penyaev@profitbricks.com>
Date:   Sun Jun 10 22:38:24 2018 +0200

    blk-mq: reinit q->tag_set_list entry only after grace period
    
    commit a347c7ad8edf4c5685154f3fdc3c12fc1db800ba upstream.
    
    It is not allowed to reinit q->tag_set_list list entry while RCU grace
    period has not completed yet, otherwise the following soft lockup in
    blk_mq_sched_restart() happens:
    
    [ 1064.252652] watchdog: BUG: soft lockup - CPU#12 stuck for 23s! [fio:9270]
    [ 1064.254445] task: ffff99b912e8b900 task.stack: ffffa6d54c758000
    [ 1064.254613] RIP: 0010:blk_mq_sched_restart+0x96/0x150
    [ 1064.256510] Call Trace:
    [ 1064.256664]  <IRQ>
    [ 1064.256824]  blk_mq_free_request+0xea/0x100
    [ 1064.256987]  msg_io_conf+0x59/0xd0 [ibnbd_client]
    [ 1064.257175]  complete_rdma_req+0xf2/0x230 [ibtrs_client]
    [ 1064.257340]  ? ibtrs_post_recv_empty+0x4d/0x70 [ibtrs_core]
    [ 1064.257502]  ibtrs_clt_rdma_done+0xd1/0x1e0 [ibtrs_client]
    [ 1064.257669]  ib_create_qp+0x321/0x380 [ib_core]
    [ 1064.257841]  ib_process_cq_direct+0xbd/0x120 [ib_core]
    [ 1064.258007]  irq_poll_softirq+0xb7/0xe0
    [ 1064.258165]  __do_softirq+0x106/0x2a2
    [ 1064.258328]  irq_exit+0x92/0xa0
    [ 1064.258509]  do_IRQ+0x4a/0xd0
    [ 1064.258660]  common_interrupt+0x7a/0x7a
    [ 1064.258818]  </IRQ>
    
    Meanwhile another context frees other queue but with the same set of
    shared tags:
    
    [ 1288.201183] INFO: task bash:5910 blocked for more than 180 seconds.
    [ 1288.201833] bash            D    0  5910   5820 0x00000000
    [ 1288.202016] Call Trace:
    [ 1288.202315]  schedule+0x32/0x80
    [ 1288.202462]  schedule_timeout+0x1e5/0x380
    [ 1288.203838]  wait_for_completion+0xb0/0x120
    [ 1288.204137]  __wait_rcu_gp+0x125/0x160
    [ 1288.204287]  synchronize_sched+0x6e/0x80
    [ 1288.204770]  blk_mq_free_queue+0x74/0xe0
    [ 1288.204922]  blk_cleanup_queue+0xc7/0x110
    [ 1288.205073]  ibnbd_clt_unmap_device+0x1bc/0x280 [ibnbd_client]
    [ 1288.205389]  ibnbd_clt_unmap_dev_store+0x169/0x1f0 [ibnbd_client]
    [ 1288.205548]  kernfs_fop_write+0x109/0x180
    [ 1288.206328]  vfs_write+0xb3/0x1a0
    [ 1288.206476]  SyS_write+0x52/0xc0
    [ 1288.206624]  do_syscall_64+0x68/0x1d0
    [ 1288.206774]  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    What happened is the following:
    
    1. There are several MQ queues with shared tags.
    2. One queue is about to be freed and now task is in
       blk_mq_del_queue_tag_set().
    3. Other CPU is in blk_mq_sched_restart() and loops over all queues in
       tag list in order to find hctx to restart.
    
    Because linked list entry was modified in blk_mq_del_queue_tag_set()
    without proper waiting for a grace period, blk_mq_sched_restart()
    never ends, spining in list_for_each_entry_rcu_rr(), thus soft lockup.
    
    Fix is simple: reinit list entry after an RCU grace period elapsed.
    
    Fixes: Fixes: 705cda97ee3a ("blk-mq: Make it safe to use RCU to iterate over blk_mq_tag_set.tag_list")
    Cc: stable@vger.kernel.org
    Cc: Sagi Grimberg <sagi@grimberg.me>
    Cc: linux-block@vger.kernel.org
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com>
    Signed-off-by: Roman Pen <roman.penyaev@profitbricks.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a3f2c2c3662b7804f075bd8b65a7ff079c29720
Author: Josef Bacik <jbacik@fb.com>
Date:   Wed May 16 14:51:19 2018 -0400

    nbd: use bd_set_size when updating disk size
    
    commit 9e2b19675d1338d2a38e99194756f2db44a081df upstream.
    
    When we stopped relying on the bdev everywhere I broke updating the
    block device size on the fly, which ceph relies on.  We can't just do
    set_capacity, we also have to do bd_set_size so things like parted will
    notice the device size change.
    
    Fixes: 29eaadc ("nbd: stop using the bdev everywhere")
    cc: stable@vger.kernel.org
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4484fb56da5bea9239b1bbf28a896d37fd09df1
Author: Josef Bacik <jbacik@fb.com>
Date:   Wed May 16 14:51:18 2018 -0400

    nbd: update size when connected
    
    commit c3f7c9397609705ef848cc98a5fb429b3e90c3c4 upstream.
    
    I messed up changing the size of an NBD device while it was connected by
    not actually updating the device or doing the uevent.  Fix this by
    updating everything if we're connected and we change the size.
    
    cc: stable@vger.kernel.org
    Fixes: 639812a ("nbd: don't set the device size until we're connected")
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d5a503fcaeb8f03925b38d87fa3054a46096d53
Author: Josef Bacik <jbacik@fb.com>
Date:   Wed May 16 14:51:17 2018 -0400

    nbd: fix nbd device deletion
    
    commit 8364da4751cf22201d74933d5e634176f44ed407 upstream.
    
    This fixes a use after free bug, we shouldn't be doing disk->queue right
    after we do del_gendisk(disk).  Save the queue and do the cleanup after
    the del_gendisk.
    
    Fixes: c6a4759ea0c9 ("nbd: add device refcounting")
    cc: stable@vger.kernel.org
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a25e0be2588f1c5ac321de123e0cac9bce16f9e
Author: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
Date:   Mon Jun 4 06:46:22 2018 -0500

    cifs: For SMB2 security informaion query, check for minimum sized security descriptor instead of sizeof FileAllInformation class
    
    commit ee25c6dd7b05113783ce1f4fab6b30fc00d29b8d upstream.
    
    Validate_buf () function checks for an expected minimum sized response
    passed to query_info() function.
    For security information, the size of a security descriptor can be
    smaller (one subauthority, no ACEs) than the size of the structure
    that defines FileInfoClass of FileAllInformation.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199725
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
    Reviewed-by: Noah Morrison <noah.morrison@rubrik.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d49d23fd34915199cfc84c8d971429c387185fb8
Author: Mark Syms <mark.syms@citrix.com>
Date:   Thu May 24 09:47:31 2018 +0100

    CIFS: 511c54a2f69195b28afb9dd119f03787b1625bb4 adds a check for session expiry
    
    commit d81243c697ffc71f983736e7da2db31a8be0001f upstream.
    
    Handle this additional status in the same way as SESSION_EXPIRED.
    
    Signed-off-by: Mark Syms <mark.syms@citrix.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 194f11ffa3cb14a13df0c30bf35e6b25dd0b09a6
Author: Steve French <stfrench@microsoft.com>
Date:   Thu May 31 15:19:25 2018 -0500

    smb3: on reconnect set PreviousSessionId field
    
    commit b2adf22fdfba85a6701c481faccdbbb3a418ccfc upstream.
    
    The server detects reconnect by the (non-zero) value in PreviousSessionId
    of SMB2/SMB3 SessionSetup request, but this behavior regressed due
    to commit 166cea4dc3a4f66f020cfb9286225ecd228ab61d
    ("SMB2: Separate RawNTLMSSP authentication from SMB2_sess_setup")
    
    CC: Stable <stable@vger.kernel.org>
    CC: Sachin Prabhu <sprabhu@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 84a1f067ce8321a8c23a66394abce213a3e98401
Author: Steve French <stfrench@microsoft.com>
Date:   Sat May 19 02:04:55 2018 -0500

    smb3: fix various xid leaks
    
    commit cfe89091644c441a1ade6dae6d2e47b715648615 upstream.
    
    Fix a few cases where we were not freeing the xid which led to
    active requests being non-zero at unmount time.
    
    Signed-off-by: Steve French <smfrench@gmail.com>
    CC: Stable <stable@vger.kernel.org>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 754168a3e42b0db46b5670c628008fb44cc9aa62
Author: Tony Luck <tony.luck@intel.com>
Date:   Fri Apr 27 09:37:08 2018 -0700

    x86/MCE: Fix stack out-of-bounds write in mce-inject.c: Flags_read()
    
    commit 985c78d3ff8e9c74450fa2bb08eb55e680d999ca upstream.
    
    Each of the strings that we want to put into the buf[MAX_FLAG_OPT_SIZE]
    in flags_read() is two characters long. But the sprintf() adds
    a trailing newline and will add a terminating NUL byte. So
    MAX_FLAG_OPT_SIZE needs to be 4.
    
    sprintf() calls vsnprintf() and *that* does return:
    
    " * The return value is the number of characters which would
     * be generated for the given input, excluding the trailing
     * '\0', as per ISO C99."
    
    Note the "excluding".
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20180427163707.ktaiysvbk3yhk4wm@agluck-desk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b16426f3bee8300fcddb817c1ca36ab0744088dd
Author: Dennis Wassenberg <dennis.wassenberg@secunet.com>
Date:   Tue Jun 12 07:11:11 2018 +0200

    ALSA: hda: add dock and led support for HP ProBook 640 G4
    
    commit 7eef32c1ef895a3a96463f9cbd04203007cd5555 upstream.
    
    This patch adds missing initialisation for HP 2013 UltraSlim Dock
    Line-In/Out PINs and activates keyboard mute/micmute leds
    for HP ProBook 640 G4
    
    Signed-off-by: Dennis Wassenberg <dennis.wassenberg@secunet.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df21031ef0debb30362146b678c9c106081ebf22
Author: Dennis Wassenberg <dennis.wassenberg@secunet.com>
Date:   Tue Jun 12 07:10:59 2018 +0200

    ALSA: hda: add dock and led support for HP EliteBook 830 G5
    
    commit 2861751f67b91e1d24e68010ced96614fb3140f4 upstream.
    
    This patch adds missing initialisation for HP 2013 UltraSlim Dock
    Line-In/Out PINs and activates keyboard mute/micmute leds
    for HP EliteBook 830 G5
    
    Signed-off-by: Dennis Wassenberg <dennis.wassenberg@secunet.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b7a7009fd931b435e8ac75d1a40d4226beec5ce
Author: Bo Chen <chenbo@pdx.edu>
Date:   Thu May 31 15:35:18 2018 -0700

    ALSA: hda - Handle kzalloc() failure in snd_hda_attach_pcm_stream()
    
    commit a3aa60d511746bd6c0d0366d4eb90a7998bcde8b upstream.
    
    When 'kzalloc()' fails in 'snd_hda_attach_pcm_stream()', a new pcm instance is
    created without setting its operators via 'snd_pcm_set_ops()'. Following
    operations on the new pcm instance can trigger kernel null pointer dereferences
    and cause kernel oops.
    
    This bug was found with my work on building a gray-box fault-injection tool for
    linux-kernel-module binaries. A kernel null pointer dereference was confirmed
    from line 'substream->ops->open()' in function 'snd_pcm_open_substream()' in
    file 'sound/core/pcm_native.c'.
    
    This patch fixes the bug by calling 'snd_device_free()' in the error handling
    path of 'kzalloc()', which removes the new pcm instance from the snd card before
    returns with an error code.
    
    Signed-off-by: Bo Chen <chenbo@pdx.edu>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 409201da49f77396282c0ea6990e936eff6c8cd2
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri May 18 12:14:32 2018 +0200

    ALSA: hda/conexant - Add fixup for HP Z2 G4 workstation
    
    commit f16041df4c360eccacfe90f96673b37829e4c959 upstream.
    
    HP Z2 G4 requires the same workaround as other HP machines that have
    no mic-pin detection.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0f2334df9569dc9b84f6dabd97588bc4b3c8ae4
Author: Hui Wang <hui.wang@canonical.com>
Date:   Wed May 30 12:33:07 2018 +0800

    ALSA: hda/realtek - Enable mic-mute hotkey for several Lenovo AIOs
    
    commit 986376b68dcc95bb7df60ad30c2353c1f7578fa5 upstream.
    
    We have several Lenovo AIOs like M810z, M820z and M920z, they have
    the same design for mic-mute hotkey and led and they use the same
    codec with the same pin configuration, so use the pin conf table to
    apply fix to all of them.
    
    Fixes: 29693efcea0f ("ALSA: hda - Fix micmute hotkey problem for a lenovo AIO machine")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfbd47c7c9c37f1a7e83d925353c7a9c617523c0
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jun 11 22:34:11 2018 +0200

    ALSA: usb-audio: Disable the quirk for Nura headset
    
    commit 5ebf6b1e459606d7fbf4fc67d2c28a6540953d93 upstream.
    
    The commit 33193dca671c ("ALSA: usb-audio: Add a quirk for Nura's
    first gen headset") added a quirk for Nura headset with USB ID
    0a12:1243, with a hope that it doesn't conflict with others.
    Unfortunately, other devices (e.g. Philips Wecall) with the very same
    ID got broken by this change, spewing an error like:
      usb 2-1.8.2: 2:1: cannot set freq 48000 to ep 0x3
    
    Until we find a proper solution, fix the regression at first by
    disabling the added quirk entry.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199905
    Fixes: 33193dca671c ("ALSA: usb-audio: Add a quirk for Nura's first gen headset")
    Reviewed-by: Martin Peres <martin.peres@free.fr>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d90760b157956f6d0c9a70d1d3cb7931e2c0872a
Author: Qu Wenruo <wqu@suse.com>
Date:   Tue Jun 5 12:36:56 2018 +0800

    btrfs: scrub: Don't use inode pages for device replace
    
    commit ac0b4145d662a3b9e34085dea460fb06ede9b69b upstream.
    
    [BUG]
    Btrfs can create compressed extent without checksum (even though it
    shouldn't), and if we then try to replace device containing such extent,
    the result device will contain all the uncompressed data instead of the
    compressed one.
    
    Test case already submitted to fstests:
    https://patchwork.kernel.org/patch/10442353/
    
    [CAUSE]
    When handling compressed extent without checksum, device replace will
    goe into copy_nocow_pages() function.
    
    In that function, btrfs will get all inodes referring to this data
    extents and then use find_or_create_page() to get pages direct from that
    inode.
    
    The problem here is, pages directly from inode are always uncompressed.
    And for compressed data extent, they mismatch with on-disk data.
    Thus this leads to corrupted compressed data extent written to replace
    device.
    
    [FIX]
    In this attempt, we could just remove the "optimization" branch, and let
    unified scrub_pages() to handle it.
    
    Although scrub_pages() won't bother reusing page cache, it will be a
    little slower, but it does the correct csum checking and won't cause
    such data corruption caused by "optimization".
    
    Note about the fix: this is the minimal fix that can be backported to
    older stable trees without conflicts. The whole callchain from
    copy_nocow_pages() can be deleted, and will be in followup patches.
    
    Fixes: ff023aac3119 ("Btrfs: add code to scrub to copy read data to another disk")
    CC: stable@vger.kernel.org # 4.4+
    Reported-by: James Harvey <jamespharvey20@gmail.com>
    Reviewed-by: James Harvey <jamespharvey20@gmail.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    [ remove code removal, add note why ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe4753f49e79ece79c88c531787358671df7203d
Author: Su Yue <suy.fnst@cn.fujitsu.com>
Date:   Wed May 30 16:48:56 2018 +0800

    btrfs: return error value if create_io_em failed in cow_file_range
    
    commit 090a127afa8f73e9618d4058d6755f7ec7453dd6 upstream.
    
    In cow_file_range(), create_io_em() may fail, but its return value is
    not recorded.  Then return value may be 0 even it failed which is a
    wrong behavior.
    
    Let cow_file_range() return PTR_ERR(em) if create_io_em() failed.
    
    Fixes: 6f9994dbabe5 ("Btrfs: create a helper to create em for IO")
    CC: stable@vger.kernel.org # 4.11+
    Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com>
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c7786995f37ce0caebdda6e6db14742529f93f1
Author: Omar Sandoval <osandov@fb.com>
Date:   Tue May 22 15:44:01 2018 -0700

    Btrfs: fix memory and mount leak in btrfs_ioctl_rm_dev_v2()
    
    commit fd4e994bd1f9dc9628e168a7f619bf69f6984635 upstream.
    
    If we have invalid flags set, when we error out we must drop our writer
    counter and free the buffer we allocated for the arguments. This bug is
    trivially reproduced with the following program on 4.7+:
    
            #include <fcntl.h>
            #include <stdint.h>
            #include <stdio.h>
            #include <stdlib.h>
            #include <unistd.h>
            #include <sys/ioctl.h>
            #include <sys/stat.h>
            #include <sys/types.h>
            #include <linux/btrfs.h>
            #include <linux/btrfs_tree.h>
    
            int main(int argc, char **argv)
            {
                    struct btrfs_ioctl_vol_args_v2 vol_args = {
                            .flags = UINT64_MAX,
                    };
                    int ret;
                    int fd;
    
                    if (argc != 2) {
                            fprintf(stderr, "usage: %s PATH\n", argv[0]);
                            return EXIT_FAILURE;
                    }
    
                    fd = open(argv[1], O_WRONLY);
                    if (fd == -1) {
                            perror("open");
                            return EXIT_FAILURE;
                    }
    
                    ret = ioctl(fd, BTRFS_IOC_RM_DEV_V2, &vol_args);
                    if (ret == -1)
                            perror("ioctl");
    
                    close(fd);
                    return EXIT_SUCCESS;
            }
    
    When unmounting the filesystem, we'll hit the
    WARN_ON(mnt_get_writers(mnt)) in cleanup_mnt() and also may prevent the
    filesystem to be remounted read-only as the writer count will stay
    lifted.
    
    Fixes: 6b526ed70cf1 ("btrfs: introduce device delete by devid")
    CC: stable@vger.kernel.org # 4.9+
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Reviewed-by: Su Yue <suy.fnst@cn.fujitsu.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55f38d1675c69a245cccc04960fe4dc3d4fa0d07
Author: Omar Sandoval <osandov@fb.com>
Date:   Tue May 22 15:02:12 2018 -0700

    Btrfs: fix clone vs chattr NODATASUM race
    
    commit b5c40d598f5408bd0ca22dfffa82f03cd9433f23 upstream.
    
    In btrfs_clone_files(), we must check the NODATASUM flag while the
    inodes are locked. Otherwise, it's possible that btrfs_ioctl_setflags()
    will change the flags after we check and we can end up with a party
    checksummed file.
    
    The race window is only a few instructions in size, between the if and
    the locks which is:
    
    3834         if (S_ISDIR(src->i_mode) || S_ISDIR(inode->i_mode))
    3835                 return -EISDIR;
    
    where the setflags must be run and toggle the NODATASUM flag (provided
    the file size is 0).  The clone will block on the inode lock, segflags
    takes the inode lock, changes flags, releases log and clone continues.
    
    Not impossible but still needs a lot of bad luck to hit unintentionally.
    
    Fixes: 0e7b824c4ef9 ("Btrfs: don't make a file partly checksummed through file clone")
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    [ update changelog ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0da0bcc2fa887e355b5f423d06d56eaac165394
Author: Omar Sandoval <osandov@fb.com>
Date:   Mon May 21 17:07:19 2018 -0700

    Btrfs: allow empty subvol= again
    
    commit 37becec95ac31b209eb1c8e096f1093a7db00f32 upstream.
    
    I got a report that after upgrading to 4.16, someone's filesystems
    weren't mounting:
    
    [   23.845852] BTRFS info (device loop0): unrecognized mount option 'subvol='
    
    Before 4.16, this mounted the default subvolume. It turns out that this
    empty "subvol=" is actually an application bug, but it was causing the
    application to fail, so it's an ABI break if you squint.
    
    The generic parsing code we use for mount options (match_token())
    doesn't match an empty string as "%s". Previously, setup_root_args()
    removed the "subvol=" string, but the mount path was cleaned up to not
    need that. Add a dummy Opt_subvol_empty to fix this.
    
    The simple workaround is to use / or . for the value of 'subvol=' .
    
    Fixes: 312c89fbca06 ("btrfs: cleanup btrfs_mount() using btrfs_mount_root()")
    CC: stable@vger.kernel.org # 4.16+
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a776f1e1695b1edd46be6a3807712898305ee446
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Mon May 7 19:10:31 2018 +0900

    driver core: Don't ignore class_dir_create_and_add() failure.
    
    commit 84d0c27d6233a9ba0578b20f5a09701eb66cee42 upstream.
    
    syzbot is hitting WARN() at kernfs_add_one() [1].
    This is because kernfs_create_link() is confused by previous device_add()
    call which continued without setting dev->kobj.parent field when
    get_device_parent() failed by memory allocation fault injection.
    Fix this by propagating the error from class_dir_create_and_add() to
    the calllers of get_device_parent().
    
    [1] https://syzkaller.appspot.com/bug?id=fae0fb607989ea744526d1c082a5b8de6529116f
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reported-by: syzbot <syzbot+df47f81c226b31d89fb1@syzkaller.appspotmail.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab5bde76c490d4c5c5b3095b3efb8f3d40917f40
Author: Jan Kara <jack@suse.cz>
Date:   Fri May 25 12:51:25 2018 -0400

    ext4: fix fencepost error in check for inode count overflow during resize
    
    commit 4f2f76f751433908364ccff82f437a57d0e6e9b7 upstream.
    
    ext4_resize_fs() has an off-by-one bug when checking whether growing of
    a filesystem will not overflow inode count. As a result it allows a
    filesystem with 8192 inodes per group to grow to 64TB which overflows
    inode count to 0 and makes filesystem unusable. Fix it.
    
    Cc: stable@vger.kernel.org
    Fixes: 3f8a6411fbada1fa482276591e037f3b1adcf55b
    Reported-by: Jaco Kroon <jaco@uls.co.za>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ea1fdcb048f7297153109a2fdced98fe887b0c0
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed May 23 11:31:03 2018 -0400

    ext4: correctly handle a zero-length xattr with a non-zero e_value_offs
    
    commit 8a2b307c21d4b290e3cbe33f768f194286d07c23 upstream.
    
    Ext4 will always create ext4 extended attributes which do not have a
    value (where e_value_size is zero) with e_value_offs set to zero.  In
    most places e_value_offs will not be used in a substantive way if
    e_value_size is zero.
    
    There was one exception to this, which is in ext4_xattr_set_entry(),
    where if there is a maliciously crafted file system where there is an
    extended attribute with e_value_offs is non-zero and e_value_size is
    0, the attempt to remove this xattr will result in a negative value
    getting passed to memmove, leading to the following sadness:
    
    [   41.225365] EXT4-fs (loop0): mounted filesystem with ordered data mode. Opts: (null)
    [   44.538641] BUG: unable to handle kernel paging request at ffff9ec9a3000000
    [   44.538733] IP: __memmove+0x81/0x1a0
    [   44.538755] PGD 1249bd067 P4D 1249bd067 PUD 1249c1067 PMD 80000001230000e1
    [   44.538793] Oops: 0003 [#1] SMP PTI
    [   44.539074] CPU: 0 PID: 1470 Comm: poc Not tainted 4.16.0-rc1+ #1
        ...
    [   44.539475] Call Trace:
    [   44.539832]  ext4_xattr_set_entry+0x9e7/0xf80
        ...
    [   44.539972]  ext4_xattr_block_set+0x212/0xea0
        ...
    [   44.540041]  ext4_xattr_set_handle+0x514/0x610
    [   44.540065]  ext4_xattr_set+0x7f/0x120
    [   44.540090]  __vfs_removexattr+0x4d/0x60
    [   44.540112]  vfs_removexattr+0x75/0xe0
    [   44.540132]  removexattr+0x4d/0x80
        ...
    [   44.540279]  path_removexattr+0x91/0xb0
    [   44.540300]  SyS_removexattr+0xf/0x20
    [   44.540322]  do_syscall_64+0x71/0x120
    [   44.540344]  entry_SYSCALL_64_after_hwframe+0x21/0x86
    
    https://bugzilla.kernel.org/show_bug.cgi?id=199347
    
    This addresses CVE-2018-10840.
    
    Reported-by: "Xu, Wen" <wen.xu@gatech.edu>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Cc: stable@kernel.org
    Fixes: dec214d00e0d7 ("ext4: xattr inode deduplication")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e0ecf69e6b3098e4156f2434d6a33269ff370f5
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Tue May 22 17:14:07 2018 -0400

    ext4: bubble errors from ext4_find_inline_data_nolock() up to ext4_iget()
    
    commit eb9b5f01c33adebc31cbc236c02695f605b0e417 upstream.
    
    If ext4_find_inline_data_nolock() returns an error it needs to get
    reflected up to ext4_iget().  In order to fix this,
    ext4_iget_extra_inode() needs to return an error (and not return
    void).
    
    This is related to "ext4: do not allow external inodes for inline
    data" (which fixes CVE-2018-11412) in that in the errors=continue
    case, it would be useful to for userspace to receive an error
    indicating that file system is corrupted.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49e5abce91a0538a909794681619a2580dccfce0
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Tue May 22 16:15:24 2018 -0400

    ext4: do not allow external inodes for inline data
    
    commit 117166efb1ee8f13c38f9e96b258f16d4923f888 upstream.
    
    The inline data feature was implemented before we added support for
    external inodes for xattrs.  It makes no sense to support that
    combination, but the problem is that there are a number of extended
    attribute checks that are skipped if e_value_inum is non-zero.
    
    Unfortunately, the inline data code is completely e_value_inum
    unaware, and attempts to interpret the xattr fields as if it were an
    inline xattr --- at which point, Hilarty Ensues.
    
    This addresses CVE-2018-11412.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=199803
    
    Reported-by: Jann Horn <jannh@google.com>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Fixes: e50e5129f384 ("ext4: xattr-in-inode support")
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f32dcf2bc10e0a1b9ab27999f5f1eb5e516b99d
Author: Lukas Czerner <lczerner@redhat.com>
Date:   Sun May 13 19:28:35 2018 -0400

    ext4: update mtime in ext4_punch_hole even if no blocks are released
    
    commit eee597ac931305eff3d3fd1d61d6aae553bc0984 upstream.
    
    Currently in ext4_punch_hole we're going to skip the mtime update if
    there are no actual blocks to release. However we've actually modified
    the file by zeroing the partial block so the mtime should be updated.
    
    Moreover the sync and datasync handling is skipped as well, which is
    also wrong. Fix it.
    
    Signed-off-by: Lukas Czerner <lczerner@redhat.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reported-by: Joe Habermann <joe.habermann@quantum.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ab7e7e0523517dfcaf316bde2e8b875659c2814
Author: Jan Kara <jack@suse.cz>
Date:   Sat May 12 19:55:00 2018 -0400

    ext4: fix hole length detection in ext4_ind_map_blocks()
    
    commit 2ee3ee06a8fd792765fa3267ddf928997797eec5 upstream.
    
    When ext4_ind_map_blocks() computes a length of a hole, it doesn't count
    with the fact that mapped offset may be somewhere in the middle of the
    completely empty subtree. In such case it will return too large length
    of the hole which then results in lseek(SEEK_DATA) to end up returning
    an incorrect offset beyond the end of the hole.
    
    Fix the problem by correctly taking offset within a subtree into account
    when computing a length of a hole.
    
    Fixes: facab4d9711e7aa3532cb82643803e8f1b9518e8
    CC: stable@vger.kernel.org
    Reported-by: Jeff Mahoney <jeffm@suse.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e78935d1e27d31955ad2dad4abe6c453cf669fd
Author: Erik Schmauss <erik.schmauss@intel.com>
Date:   Fri Jun 1 12:06:43 2018 -0700

    ACPICA: AML parser: attempt to continue loading table after error
    
    commit 5088814a6e931350e5bd29f5d59fa40c6dbbdf10 upstream.
    
    This change alters the parser so that the table load does not abort
    upon an error.
    
    Notable changes:
    
    If there is an error while parsing an element of the termlist, we
    will skip parsing the current termlist element and continue parsing
    to the next opcode in the termlist.
    
    If we get an error while parsing the conditional of If/Else/While or
    the device name of Scope, we will skip the body of the statement all
    together and pop the parser_state.
    
    If we get an error while parsing the base offset and length of an
    operation region declaration, we will remove the operation region
    from the namespace.
    
    Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a583025f20b8ee22820e6437eeea6dde4b7c2f58
Author: Dexuan Cui <decui@microsoft.com>
Date:   Wed Jun 6 21:32:51 2018 +0000

    hv_netvsc: Fix a network regression after ifdown/ifup
    
    [ Upstream commit 52acf73b6e9a6962045feb2ba5a8921da2201915 ]
    
    Recently people reported the NIC stops working after
    "ifdown eth0; ifup eth0". It turns out in this case the TX queues are not
    enabled, after the refactoring of the common detach logic: when the NIC
    has sub-channels, usually we enable all the TX queues after all
    sub-channels are set up: see rndis_set_subchannel() ->
    netif_device_attach(), but in the case of "ifdown eth0; ifup eth0" where
    the number of channels doesn't change, we also must make sure the TX queues
    are enabled. The patch fixes the regression.
    
    Fixes: 7b2ee50c0cd5 ("hv_netvsc: common detach logic")
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Cc: K. Y. Srinivasan <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aba9ac38845ce702fc5a579b44abef1f0006600d
Author: Willem de Bruijn <willemb@google.com>
Date:   Wed Jun 6 11:23:01 2018 -0400

    net: in virtio_net_hdr only add VLAN_HLEN to csum_start if payload holds vlan
    
    [ Upstream commit fd3a88625844907151737fc3b4201676effa6d27 ]
    
    Tun, tap, virtio, packet and uml vector all use struct virtio_net_hdr
    to communicate packet metadata to userspace.
    
    For skbuffs with vlan, the first two return the packet as it may have
    existed on the wire, inserting the VLAN tag in the user buffer.  Then
    virtio_net_hdr.csum_start needs to be adjusted by VLAN_HLEN bytes.
    
    Commit f09e2249c4f5 ("macvtap: restore vlan header on user read")
    added this feature to macvtap. Commit 3ce9b20f1971 ("macvtap: Fix
    csum_start when VLAN tags are present") then fixed up csum_start.
    
    Virtio, packet and uml do not insert the vlan header in the user
    buffer.
    
    When introducing virtio_net_hdr_from_skb to deduplicate filling in
    the virtio_net_hdr, the variant from macvtap which adds VLAN_HLEN was
    applied uniformly, breaking csum offset for packets with vlan on
    virtio and packet.
    
    Make insertion of VLAN_HLEN optional. Convert the callers to pass it
    when needed.
    
    Fixes: e858fae2b0b8f4 ("virtio_net: use common code for virtio_net_hdr and skb GSO conversion")
    Fixes: 1276f24eeef2 ("packet: use common code for virtio_net_hdr and skb GSO conversion")
    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 e8b9a16954b5a87f8f8ac96b309c50189f6c1026
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Fri Jun 8 11:35:40 2018 +0200

    udp: fix rx queue len reported by diag and proc interface
    
    [ Upstream commit 6c206b20092a3623184cff9470dba75d21507874 ]
    
    After commit 6b229cf77d68 ("udp: add batching to udp_rmem_release()")
    the sk_rmem_alloc field does not measure exactly anymore the
    receive queue length, because we batch the rmem release. The issue
    is really apparent only after commit 0d4a6608f68c ("udp: do rmem bulk
    free even if the rx sk queue is empty"): the user space can easily
    check for an empty socket with not-0 queue length reported by the 'ss'
    tool or the procfs interface.
    
    We need to use a custom UDP helper to report the correct queue length,
    taking into account the forward allocation deficit.
    
    Reported-by: trevor.francis@46labs.com
    Fixes: 6b229cf77d68 ("UDP: add batching to udp_rmem_release()")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be3bb23cc0e4943922db828b923648af7a9f2dc3
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Jun 7 13:39:49 2018 -0700

    socket: close race condition between sock_close() and sockfs_setattr()
    
    [ Upstream commit 6d8c50dcb029872b298eea68cc6209c866fd3e14 ]
    
    fchownat() doesn't even hold refcnt of fd until it figures out
    fd is really needed (otherwise is ignored) and releases it after
    it resolves the path. This means sock_close() could race with
    sockfs_setattr(), which leads to a NULL pointer dereference
    since typically we set sock->sk to NULL in ->release().
    
    As pointed out by Al, this is unique to sockfs. So we can fix this
    in socket layer by acquiring inode_lock in sock_close() and
    checking against NULL in sockfs_setattr().
    
    sock_release() is called in many places, only the sock_close()
    path matters here. And fortunately, this should not affect normal
    sock_close() as it is only called when the last fd refcnt is gone.
    It only affects sock_close() with a parallel sockfs_setattr() in
    progress, which is not common.
    
    Fixes: 86741ec25462 ("net: core: Add a UID field to struct sock.")
    Reported-by: shankarapailoor <shankarapailoor@gmail.com>
    Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Cc: Lorenzo Colitti <lorenzo@google.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6196f30e84ca9f8ad53cd15aaef163b453ed7d20
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Fri Jun 15 03:07:46 2018 +0200

    tls: fix waitall behavior in tls_sw_recvmsg
    
    [ Upstream commit 06030dbaf3b6c5801dcdb7fe4fbab3b91c8da84a ]
    
    Current behavior in tls_sw_recvmsg() is to wait for incoming tls
    messages and copy up to exactly len bytes of data that the user
    provided. This is problematic in the sense that i) if no packet
    is currently queued in strparser we keep waiting until one has been
    processed and pushed into tls receive layer for tls_wait_data() to
    wake up and push the decrypted bits to user space. Given after
    tls decryption, we're back at streaming data, use sock_rcvlowat()
    hint from tcp socket instead. Retain current behavior with MSG_WAITALL
    flag and otherwise use the hint target for breaking the loop and
    returning to application. This is done if currently no ctx->recv_pkt
    is ready, otherwise continue to process it from our strparser
    backlog.
    
    Fixes: c46234ebb4d1 ("tls: RX path for ktls")
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Dave Watson <davejwatson@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7fd98de479ea75144d71862d67eb597c868bf453
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Fri Jun 15 03:07:45 2018 +0200

    tls: fix use-after-free in tls_push_record
    
    [ Upstream commit a447da7d00410278c90d3576782a43f8b675d7be ]
    
    syzkaller managed to trigger a use-after-free in tls like the
    following:
    
      BUG: KASAN: use-after-free in tls_push_record.constprop.15+0x6a2/0x810 [tls]
      Write of size 1 at addr ffff88037aa08000 by task a.out/2317
    
      CPU: 3 PID: 2317 Comm: a.out Not tainted 4.17.0+ #144
      Hardware name: LENOVO 20FBCTO1WW/20FBCTO1WW, BIOS N1FET47W (1.21 ) 11/28/2016
      Call Trace:
       dump_stack+0x71/0xab
       print_address_description+0x6a/0x280
       kasan_report+0x258/0x380
       ? tls_push_record.constprop.15+0x6a2/0x810 [tls]
       tls_push_record.constprop.15+0x6a2/0x810 [tls]
       tls_sw_push_pending_record+0x2e/0x40 [tls]
       tls_sk_proto_close+0x3fe/0x710 [tls]
       ? tcp_check_oom+0x4c0/0x4c0
       ? tls_write_space+0x260/0x260 [tls]
       ? kmem_cache_free+0x88/0x1f0
       inet_release+0xd6/0x1b0
       __sock_release+0xc0/0x240
       sock_close+0x11/0x20
       __fput+0x22d/0x660
       task_work_run+0x114/0x1a0
       do_exit+0x71a/0x2780
       ? mm_update_next_owner+0x650/0x650
       ? handle_mm_fault+0x2f5/0x5f0
       ? __do_page_fault+0x44f/0xa50
       ? mm_fault_error+0x2d0/0x2d0
       do_group_exit+0xde/0x300
       __x64_sys_exit_group+0x3a/0x50
       do_syscall_64+0x9a/0x300
       ? page_fault+0x8/0x30
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    This happened through fault injection where aead_req allocation in
    tls_do_encryption() eventually failed and we returned -ENOMEM from
    the function. Turns out that the use-after-free is triggered from
    tls_sw_sendmsg() in the second tls_push_record(). The error then
    triggers a jump to waiting for memory in sk_stream_wait_memory()
    resp. returning immediately in case of MSG_DONTWAIT. What follows is
    the trim_both_sgl(sk, orig_size), which drops elements from the sg
    list added via tls_sw_sendmsg(). Now the use-after-free gets triggered
    when the socket is being closed, where tls_sk_proto_close() callback
    is invoked. The tls_complete_pending_work() will figure that there's
    a pending closed tls record to be flushed and thus calls into the
    tls_push_pending_closed_record() from there. ctx->push_pending_record()
    is called from the latter, which is the tls_sw_push_pending_record()
    from sw path. This again calls into tls_push_record(). And here the
    tls_fill_prepend() will panic since the buffer address has been freed
    earlier via trim_both_sgl(). One way to fix it is to move the aead
    request allocation out of tls_do_encryption() early into tls_push_record().
    This means we don't prep the tls header and advance state to the
    TLS_PENDING_CLOSED_RECORD before allocation which could potentially
    fail happened. That fixes the issue on my side.
    
    Fixes: 3c4d7559159b ("tls: kernel TLS support")
    Reported-by: syzbot+5c74af81c547738e1684@syzkaller.appspotmail.com
    Reported-by: syzbot+709f2810a6a05f11d4d3@syzkaller.appspotmail.com
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Dave Watson <davejwatson@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1caf7914a7a555a43fe716b99b3c616dceafb806
Author: Frank van der Linden <fllinden@amazon.com>
Date:   Tue Jun 12 23:09:37 2018 +0000

    tcp: verify the checksum of the first data segment in a new connection
    
    [ Upstream commit 4fd44a98ffe0d048246efef67ed640fdf2098a62 ]
    
    commit 079096f103fa ("tcp/dccp: install syn_recv requests into ehash
    table") introduced an optimization for the handling of child sockets
    created for a new TCP connection.
    
    But this optimization passes any data associated with the last ACK of the
    connection handshake up the stack without verifying its checksum, because it
    calls tcp_child_process(), which in turn calls tcp_rcv_state_process()
    directly.  These lower-level processing functions do not do any checksum
    verification.
    
    Insert a tcp_checksum_complete call in the TCP_NEW_SYN_RECEIVE path to
    fix this.
    
    Fixes: 079096f103fa ("tcp/dccp: install syn_recv requests into ehash table")
    Signed-off-by: Frank van der Linden <fllinden@amazon.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Tested-by: Balbir Singh <bsingharora@gmail.com>
    Reviewed-by: Balbir Singh <bsingharora@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a316034b203fd8c38eddc296e770844daaa3cd4d
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Fri Jun 8 05:02:31 2018 +0200

    net/sched: act_simple: fix parsing of TCA_DEF_DATA
    
    [ Upstream commit 8d499533e0bc02d44283dbdab03142b599b8ba16 ]
    
    use nla_strlcpy() to avoid copying data beyond the length of TCA_DEF_DATA
    netlink attribute, in case it is less than SIMP_MAX_DATA and it does not
    end with '\0' character.
    
    v2: fix errors in the commit message, thanks Hangbin Liu
    
    Fixes: fa1b1cff3d06 ("net_cls_act: Make act_simple use of netlink policy.")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Reviewed-by: Simon Horman <simon.horman@netronome.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c13befc37ecd49c58509d1ee195c10bd0b1cc942
Author: Alvaro Gamez Machado <alvaro.gamez@hazent.com>
Date:   Fri Jun 8 12:23:39 2018 +0200

    net: phy: dp83822: use BMCR_ANENABLE instead of BMSR_ANEGCAPABLE for DP83620
    
    [ Upstream commit b718e8c8f4f5920aaddc2e52d5e32f494c91129c ]
    
    DP83620 register set is compatible with the DP83848, but it also supports
    100base-FX. When the hardware is configured such as that fiber mode is
    enabled, autonegotiation is not possible.
    
    The chip, however, doesn't expose this information via BMSR_ANEGCAPABLE.
    Instead, this bit is always set high, even if the particular hardware
    configuration makes it so that auto negotiation is not possible [1]. Under
    these circumstances, the phy subsystem keeps trying for autonegotiation to
    happen, without success.
    
    Hereby, we inspect BMCR_ANENABLE bit after genphy_config_init, which on
    reset is set to 0 when auto negotiation is disabled, and so we use this
    value instead of BMSR_ANEGCAPABLE.
    
    [1] https://e2e.ti.com/support/interface/ethernet/f/903/p/697165/2571170
    
    Signed-off-by: Alvaro Gamez Machado <alvaro.gamez@hazent.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36ee02c5ff46d0e5ee33744cd0b11ad7f91d26e1
Author: Zhouyang Jia <jiazhouyang09@gmail.com>
Date:   Mon Jun 11 13:26:35 2018 +0800

    net: dsa: add error handling for pskb_trim_rcsum
    
    [ Upstream commit 349b71d6f427ff8211adf50839dbbff3f27c1805 ]
    
    When pskb_trim_rcsum fails, the lack of error-handling code may
    cause unexpected results.
    
    This patch adds error-handling code after calling pskb_trim_rcsum.
    
    Signed-off-by: Zhouyang Jia <jiazhouyang09@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b788fc5f6977109a3dba548c996fee06ff6f0bdb
Author: Julian Anastasov <ja@ssi.bg>
Date:   Mon Jun 11 02:02:54 2018 +0300

    ipv6: allow PMTU exceptions to local routes
    
    [ Upstream commit 0975764684487bf3f7a47eef009e750ea41bd514 ]
    
    IPVS setups with local client and remote tunnel server need
    to create exception for the local virtual IP. What we do is to
    change PMTU from 64KB (on "lo") to 1460 in the common case.
    
    Suggested-by: Martin KaFai Lau <kafai@fb.com>
    Fixes: 45e4fd26683c ("ipv6: Only create RTF_CACHE routes after encountering pmtu exception")
    Fixes: 7343ff31ebf0 ("ipv6: Don't create clones of host routes.")
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Acked-by: David Ahern <dsahern@gmail.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b9e032148a9aaefaf54bcfe9d27826a2b111d22
Author: Bjørn Mork <bjorn@mork.no>
Date:   Fri Jun 8 09:15:24 2018 +0200

    cdc_ncm: avoid padding beyond end of skb
    
    [ Upstream commit 49c2c3f246e2fc3009039e31a826333dcd0283cd ]
    
    Commit 4a0e3e989d66 ("cdc_ncm: Add support for moving NDP to end
    of NCM frame") added logic to reserve space for the NDP at the
    end of the NTB/skb.  This reservation did not take the final
    alignment of the NDP into account, causing us to reserve too
    little space. Additionally the padding prior to NDP addition did
    not ensure there was enough space for the NDP.
    
    The NTB/skb with the NDP appended would then exceed the configured
    max size. This caused the final padding of the NTB to use a
    negative count, padding to almost INT_MAX, and resulting in:
    
    [60103.825970] BUG: unable to handle kernel paging request at ffff9641f2004000
    [60103.825998] IP: __memset+0x24/0x30
    [60103.826001] PGD a6a06067 P4D a6a06067 PUD 4f65a063 PMD 72003063 PTE 0
    [60103.826013] Oops: 0002 [#1] SMP NOPTI
    [60103.826018] Modules linked in: (removed(
    [60103.826158] CPU: 0 PID: 5990 Comm: Chrome_DevTools Tainted: G           O 4.14.0-3-amd64 #1 Debian 4.14.17-1
    [60103.826162] Hardware name: LENOVO 20081 BIOS 41CN28WW(V2.04) 05/03/2012
    [60103.826166] task: ffff964193484fc0 task.stack: ffffb2890137c000
    [60103.826171] RIP: 0010:__memset+0x24/0x30
    [60103.826174] RSP: 0000:ffff964316c03b68 EFLAGS: 00010216
    [60103.826178] RAX: 0000000000000000 RBX: 00000000fffffffd RCX: 000000001ffa5000
    [60103.826181] RDX: 0000000000000005 RSI: 0000000000000000 RDI: ffff9641f2003ffc
    [60103.826184] RBP: ffff964192f6c800 R08: 00000000304d434e R09: ffff9641f1d2c004
    [60103.826187] R10: 0000000000000002 R11: 00000000000005ae R12: ffff9642e6957a80
    [60103.826190] R13: ffff964282ff2ee8 R14: 000000000000000d R15: ffff9642e4843900
    [60103.826194] FS:  00007f395aaf6700(0000) GS:ffff964316c00000(0000) knlGS:0000000000000000
    [60103.826197] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [60103.826200] CR2: ffff9641f2004000 CR3: 0000000013b0c000 CR4: 00000000000006f0
    [60103.826204] Call Trace:
    [60103.826212]  <IRQ>
    [60103.826225]  cdc_ncm_fill_tx_frame+0x5e3/0x740 [cdc_ncm]
    [60103.826236]  cdc_ncm_tx_fixup+0x57/0x70 [cdc_ncm]
    [60103.826246]  usbnet_start_xmit+0x5d/0x710 [usbnet]
    [60103.826254]  ? netif_skb_features+0x119/0x250
    [60103.826259]  dev_hard_start_xmit+0xa1/0x200
    [60103.826267]  sch_direct_xmit+0xf2/0x1b0
    [60103.826273]  __dev_queue_xmit+0x5e3/0x7c0
    [60103.826280]  ? ip_finish_output2+0x263/0x3c0
    [60103.826284]  ip_finish_output2+0x263/0x3c0
    [60103.826289]  ? ip_output+0x6c/0xe0
    [60103.826293]  ip_output+0x6c/0xe0
    [60103.826298]  ? ip_forward_options+0x1a0/0x1a0
    [60103.826303]  tcp_transmit_skb+0x516/0x9b0
    [60103.826309]  tcp_write_xmit+0x1aa/0xee0
    [60103.826313]  ? sch_direct_xmit+0x71/0x1b0
    [60103.826318]  tcp_tasklet_func+0x177/0x180
    [60103.826325]  tasklet_action+0x5f/0x110
    [60103.826332]  __do_softirq+0xde/0x2b3
    [60103.826337]  irq_exit+0xae/0xb0
    [60103.826342]  do_IRQ+0x81/0xd0
    [60103.826347]  common_interrupt+0x98/0x98
    [60103.826351]  </IRQ>
    [60103.826355] RIP: 0033:0x7f397bdf2282
    [60103.826358] RSP: 002b:00007f395aaf57d8 EFLAGS: 00000206 ORIG_RAX: ffffffffffffff6e
    [60103.826362] RAX: 0000000000000000 RBX: 00002f07bc6d0900 RCX: 00007f39752d7fe7
    [60103.826365] RDX: 0000000000000022 RSI: 0000000000000147 RDI: 00002f07baea02c0
    [60103.826368] RBP: 0000000000000001 R08: 0000000000000000 R09: 0000000000000000
    [60103.826371] R10: 00000000ffffffff R11: 0000000000000000 R12: 00002f07baea02c0
    [60103.826373] R13: 00002f07bba227a0 R14: 00002f07bc6d090c R15: 0000000000000000
    [60103.826377] Code: 90 90 90 90 90 90 90 0f 1f 44 00 00 49 89 f9 48 89 d1 83
    e2 07 48 c1 e9 03 40 0f b6 f6 48 b8 01 01 01 01 01 01 01 01 48 0f af c6 <f3> 48
    ab 89 d1 f3 aa 4c 89 c8 c3 90 49 89 f9 40 88 f0 48 89 d1
    [60103.826442] RIP: __memset+0x24/0x30 RSP: ffff964316c03b68
    [60103.826444] CR2: ffff9641f2004000
    
    Commit e1069bbfcf3b ("net: cdc_ncm: Reduce memory use when kernel
    memory low") made this bug much more likely to trigger by reducing
    the NTB size under memory pressure.
    
    Link: https://bugs.debian.org/893393
    Reported-by: Горбешко Богдан <bodqhrohro@gmail.com>
    Reported-and-tested-by: Dennis Wassenberg <dennis.wassenberg@secunet.com>
    Cc: Enrico Mioso <mrkiko.rs@gmail.com>
    Fixes: 4a0e3e989d66 ("cdc_ncm: Add support for moving NDP to end of NCM frame")
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6360d939084dc7949a25742e1c92ce0e26734df6
Author: Xiangning Yu <yuxiangning@gmail.com>
Date:   Thu Jun 7 13:39:59 2018 +0800

    bonding: re-evaluate force_primary when the primary slave name changes
    
    [ Upstream commit eb55bbf865d9979098c6a7a17cbdb41237ece951 ]
    
    There is a timing issue under active-standy mode, when bond_enslave() is
    called, bond->params.primary might not be initialized yet.
    
    Any time the primary slave string changes, bond->force_primary should be
    set to true to make sure the primary becomes the active slave.
    
    Signed-off-by: Xiangning Yu <yuxiangning@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0345e21ec98dfd6660ec00f118799140209dea2
Author: Colin Ian King <colin.king@canonical.com>
Date:   Thu Jun 7 17:54:37 2018 -0400

    net: aquantia: fix unsigned numvecs comparison with less than zero
    
    commit 58d813afbe89658a5972747460a5fe19dec4dbcb upstream.
    
    This was originally mistakenly submitted to net-next. Resubmitting to net.
    
    The comparison of numvecs < 0 is always false because numvecs is a u32
    and hence the error return from a failed call to pci_alloc_irq_vectores
    is never detected.  Fix this by using the signed int ret to handle the
    error return and assign numvecs to err.
    
    Detected by CoverityScan, CID#1468650 ("Unsigned compared against 0")
    
    Fixes: a09bd81b5413 ("net: aquantia: Limit number of vectors to actually allocated irqs")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Holger Hoffstätte <holger@applied-asynchrony.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>