commit be8335f6b5ee1cbca72121dd495f922c72141b74
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jun 14 15:08:04 2017 +0200

    Linux 4.11.5

commit 2c2c50379270a92205ba2f4a1786b248299797c8
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Mon May 29 09:22:07 2017 +0200

    kthread: fix boot hang (regression) on MIPS/OpenRISC
    
    commit b0f5a8f32e8bbdaae1abb8abe2d3cbafaba57e08 upstream.
    
    This fixes a regression in commit 4d6501dce079 where I didn't notice
    that MIPS and OpenRISC were reinitialising p->{set,clear}_child_tid to
    NULL after our initialisation in copy_process().
    
    We can simply get rid of the arch-specific initialisation here since it
    is now always done in copy_process() before hitting copy_thread{,_tls}().
    
    Review notes:
    
     - As far as I can tell, copy_process() is the only user of
       copy_thread_tls(), which is the only caller of copy_thread() for
       architectures that don't implement copy_thread_tls().
    
     - After this patch, there is no arch-specific code touching
       p->set_child_tid or p->clear_child_tid whatsoever.
    
     - It may look like MIPS/OpenRISC wanted to always have these fields be
       NULL, but that's not true, as copy_process() would unconditionally
       set them again _after_ calling copy_thread_tls() before commit
       4d6501dce079.
    
    Fixes: 4d6501dce079c1eb6bf0b1d8f528a5e81770109e ("kthread: Fix use-after-free if kthread fork fails")
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net> # MIPS only
    Acked-by: Stafford Horne <shorne@gmail.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: Jonas Bonn <jonas@southpole.se>
    Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
    Cc: openrisc@lists.librecores.org
    Cc: Jamie Iles <jamie.iles@oracle.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a422e547a65c949a52074f830259f57ed665824
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Sun May 21 00:37:10 2017 +0200

    netfilter: nft_set_rbtree: handle element re-addition after deletion
    
    commit d2df92e98a34a5619dadd29c6291113c009181e7 upstream.
    
    The existing code selects no next branch to be inspected when
    re-inserting an inactive element into the rb-tree, looping endlessly.
    This patch restricts the check for active elements to the EEXIST case
    only.
    
    Fixes: e701001e7cbe ("netfilter: nft_rbtree: allow adjacent intervals with dynamic updates")
    Reported-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
    Tested-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b183d1b84764e81dcb64f6b41151e79db23679c
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Fri Mar 10 15:27:58 2017 +0200

    drm/i915/vbt: split out defaults that are set when there is no VBT
    
    commit bb1d132935c2f87cd261eb559759fe49d5e5dc43 upstream.
    
    The main thing are the DDI ports. If there's a VBT that says there are
    no outputs, we should trust that, and not have semi-random
    defaults. Unfortunately, the defaults have resulted in some Chromebooks
    without VBT to rely on this behaviour, so we split out the defaults for
    the missing VBT case.
    
    Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>
    Cc: Manasi Navare <manasi.d.navare@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/95c26079ff640d43f53b944f17e9fc356b36daec.1489152288.git.jani.nikula@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07f0aa40fcc708afb7cd7351149b4adda3177e18
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Fri Mar 10 15:27:57 2017 +0200

    drm/i915/vbt: don't propagate errors from intel_bios_init()
    
    commit 665788572c6410b7efadc2e3009c5d830b6d8ef9 upstream.
    
    We don't use the error return for anything other than reporting and
    logging that there is no VBT. We can pull the logging in the function,
    and remove the error status return. Moreover, if we needed the
    information for something later on, we'd probably be better off storing
    the bit in dev_priv, and using it where it's needed, instead of using
    the error return.
    
    While at it, improve the comments.
    
    Cc: Manasi Navare <manasi.d.navare@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/438ebbb0d5f0d321c625065b9cc78532a1dab24f.1489152288.git.jani.nikula@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1df30f8264b842a83a27e92995e704f3edaa8195
Author: Paul Moore <paul@paul-moore.com>
Date:   Tue May 2 10:16:05 2017 -0400

    audit: fix the RCU locking for the auditd_connection structure
    
    commit 48d0e023af9799cd7220335baf8e3ba61eeafbeb upstream.
    
    Cong Wang correctly pointed out that the RCU read locking of the
    auditd_connection struct was wrong, this patch correct this by
    adopting a more traditional, and correct RCU locking model.
    
    This patch is heavily based on an earlier prototype by Cong Wang.
    
    Reported-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f17b15c896011bb21aff1d0be64840031fd6fec1
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed May 10 16:30:12 2017 +0200

    hwmon: (coretemp) Handle frozen hotplug state correctly
    
    commit 90b4f30b6d15222a509dacf47f29efef2b22571e upstream.
    
    The recent conversion to the hotplug state machine missed that the original
    hotplug notifiers did not execute in the frozen state, which is used on
    suspend on resume.
    
    This does not matter on single socket machines, but on multi socket systems
    this breaks when the device for a non-boot socket is removed when the last
    CPU of that socket is brought offline. The device removal locks up the
    machine hard w/o any debug output.
    
    Prevent executing the hotplug callbacks when cpuhp_tasks_frozen is true.
    
    Thanks to Tommi for providing debug information patiently while I failed to
    spot the obvious.
    
    Fixes: e00ca5df37ad ("hwmon: (coretemp) Convert to hotplug state machine")
    Reported-by: Tommi Rantala <tt.rantala@gmail.com>
    Tested-by: Tommi Rantala <tt.rantala@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Cc: "Chen, Yu C" <yu.c.chen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcaa3c1ec9cd5fe1590df26c3e03e8b967ea02d8
Author: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Date:   Wed Apr 12 11:03:20 2017 -0700

    iomap_dio_rw: Prevent reading file data beyond iomap_dio->i_size
    
    commit a008c31c7ef9a4106dbadf21b3bcb7e89826a5d7 upstream.
    
    On a ppc64 machine executing overlayfs/019 with xfs as the lower and
    upper filesystem causes the following call trace,
    
    WARNING: CPU: 2 PID: 8034 at /root/repos/linux/fs/iomap.c:765 .iomap_dio_actor+0xcc/0x420
    Modules linked in:
    CPU: 2 PID: 8034 Comm: fsstress Tainted: G             L  4.11.0-rc5-next-20170405 #100
    task: c000000631314880 task.stack: c0000003915d4000
    NIP: c00000000035a72c LR: c00000000035a6f4 CTR: c00000000035a660
    REGS: c0000003915d7570 TRAP: 0700   Tainted: G             L   (4.11.0-rc5-next-20170405)
    MSR: 800000000282b032 <SF,VEC,VSX,EE,FP,ME,IR,DR,RI>
      CR: 24004284  XER: 00000000
    CFAR: c0000000006f7190 SOFTE: 1
    GPR00: c00000000035a6f4 c0000003915d77f0 c0000000015a3f00 000000007c22f600
    GPR04: 000000000022d000 0000000000002600 c0000003b2d56360 c0000003915d7960
    GPR08: c0000003915d7cd0 0000000000000002 0000000000002600 c000000000521cc0
    GPR12: 0000000024004284 c00000000fd80a00 000000004b04ae64 ffffffffffffffff
    GPR16: 000000001000ca70 0000000000000000 c0000003b2d56380 c00000000153d2b8
    GPR20: 0000000000000010 c0000003bc87bac8 0000000000223000 000000000022f5ff
    GPR24: c0000003b2d56360 000000000000000c 0000000000002600 000000000022d000
    GPR28: 0000000000000000 c0000003915d7960 c0000003b2d56360 00000000000001ff
    NIP [c00000000035a72c] .iomap_dio_actor+0xcc/0x420
    LR [c00000000035a6f4] .iomap_dio_actor+0x94/0x420
    Call Trace:
    [c0000003915d77f0] [c00000000035a6f4] .iomap_dio_actor+0x94/0x420 (unreliable)
    [c0000003915d78f0] [c00000000035b9f4] .iomap_apply+0xf4/0x1f0
    [c0000003915d79d0] [c00000000035c320] .iomap_dio_rw+0x230/0x420
    [c0000003915d7ae0] [c000000000512a14] .xfs_file_dio_aio_read+0x84/0x160
    [c0000003915d7b80] [c000000000512d24] .xfs_file_read_iter+0x104/0x130
    [c0000003915d7c10] [c0000000002d6234] .__vfs_read+0x114/0x1a0
    [c0000003915d7cf0] [c0000000002d7a8c] .vfs_read+0xac/0x1a0
    [c0000003915d7d90] [c0000000002d96b8] .SyS_read+0x58/0x100
    [c0000003915d7e30] [c00000000000b8e0] system_call+0x38/0xfc
    Instruction dump:
    78630020 7f831b78 7ffc07b4 7c7ce039 40820360 a13d0018 2f890003 419e0288
    2f890004 419e00a0 2f890001 419e02a8 <0fe00000> 3b80fffb 38210100 7f83e378
    
    The above problem can also be recreated on a regular xfs filesystem
    using the command,
    
    $ fsstress -d /mnt -l 1000 -n 1000 -p 1000
    
    The reason for the call trace is,
    1. When 'reserving' blocks for delayed allocation , XFS reserves more
       blocks (i.e. past file's current EOF) than required. This is done
       because XFS assumes that userspace might write more data and hence
       'reserving' more blocks might lead to the file's new data being
       stored contiguously on disk.
    2. The in-memory 'struct xfs_bmbt_irec' mapping the file's last extent would
       then cover the prealloc-ed EOF blocks in addition to the regular blocks.
    3. When flushing the dirty blocks to disk, we only flush data till the
       file's EOF. But before writing out the dirty data, we allocate blocks
       on the disk for holding the file's new data. This allocation includes
       the blocks that are part of the 'prealloc EOF blocks'.
    4. Later, when the last reference to the inode is being closed, XFS frees the
       unused 'prealloc EOF blocks' in xfs_inactive().
    
    In step 3 above, When allocating space on disk for the delayed allocation
    range, the space allocator might sometimes allocate less blocks than
    required. If such an allocation ends right at the current EOF of the
    file, We will not be able to clear the "delayed allocation" flag for the
    'prealloc EOF blocks', since we won't have dirty buffer heads associated
    with that range of the file.
    
    In such a situation if a Direct I/O read operation is performed on file
    range [X, Y] (where X < EOF and Y > EOF), we flush dirty data in the
    range [X, Y] and invalidate page cache for that range (Refer to
    iomap_dio_rw()). Later for performing the Direct I/O read, XFS obtains
    the extent items (which are still cached in memory) for the file
    range. When doing so we are not supposed to get an extent item with
    IOMAP_DELALLOC flag set, since the previous "flush" operation should
    have converted any delayed allocation data in the range [X, Y]. Hence we
    end up hitting a WARN_ON_ONCE(1) statement in iomap_dio_actor().
    
    This commit fixes the bug by preventing the read operation from going
    beyond iomap_dio->i_size.
    
    Reported-by: Santhosh G <santhog4@linux.vnet.ibm.com>
    Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 695b2bd64be3a3824c264e4ba32b3d3d58b7d7e8
Author: Tejun Heo <tj@kernel.org>
Date:   Mon May 1 15:24:14 2017 -0400

    cgroup: mark cgroup_get() with __maybe_unused
    
    commit 310b4816a5d8082416b4ab83e5a7b3cb92883a4d upstream.
    
    a590b90d472f ("cgroup: fix spurious warnings on cgroup_is_dead() from
    cgroup_sk_alloc()") converted most cgroup_get() usages to
    cgroup_get_live() leaving cgroup_sk_alloc() the sole user of
    cgroup_get().  When !CONFIG_SOCK_CGROUP_DATA, this ends up triggering
    unused warning for cgroup_get().
    
    Silence the warning by adding __maybe_unused to cgroup_get().
    
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Link: http://lkml.kernel.org/r/20170501145340.17e8ef86@canb.auug.org.au
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba301861f686c37ad410838ffaec3255a7b7c1d9
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Tue Apr 25 06:22:05 2017 +0000

    pinctrl: cherryview: Add terminate entry for dmi_system_id tables
    
    commit a9de080bbcd5c4e213a3d7bbb1e314d60980e943 upstream.
    
    Make sure dmi_system_id tables are NULL terminated.
    
    Fixes: 703650278372 ("pinctrl: cherryview: Add a quirk to make Acer
    Chromebook keyboard work again")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Cc: Jean Delvare <jdelvare@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 944601cf16f028982d407d6b04d5489770a998f7
Author: Takatoshi Akiyama <takatoshi.akiyama.kj@ps.hitachi-solutions.com>
Date:   Mon Feb 27 15:56:31 2017 +0900

    serial: sh-sci: Fix panic when serial console and DMA are enabled
    
    commit 3c9101766b502a0163d1d437fada5801cf616be2 upstream.
    
    This patch fixes an issue that kernel panic happens when DMA is enabled
    and we press enter key while the kernel booting on the serial console.
    
    * An interrupt may occur after sci_request_irq().
    * DMA transfer area is initialized by setup_timer() in sci_request_dma()
      and used in interrupt.
    
    If an interrupt occurred between sci_request_irq() and setup_timer() in
    sci_request_dma(), DMA transfer area has not been initialized yet.
    So, this patch changes the order of sci_request_irq() and
    sci_request_dma().
    
    Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.")
    Signed-off-by: Takatoshi Akiyama <takatoshi.akiyama.kj@ps.hitachi-solutions.com>
    [Shimoda changes the commit log]
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e979ac9724ec181cb164e87736a7e6493bf0834
Author: Michał Winiarski <michal.winiarski@intel.com>
Date:   Mon Feb 27 12:22:56 2017 +0100

    drm/i915/skl: Add missing SKL ID
    
    commit ca7a45ba6fb9e7ceca56d10b91db29c2f3451a2e upstream.
    
    Used by production device:
        Intel(R) Iris(TM) Graphics P555
    
    Cc: Mika Kuoppala <mika.kuoppala@intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
    Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
    Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170227112256.20060-1-michal.winiarski@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa8a1ce79271d38cadba5c43b025d44b67c14b9c
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Apr 27 19:02:20 2017 +0300

    drm/i915: Fix runtime PM for LPE audio
    
    commit 668e3b014afb66ab29e134bca7c258527273ac75 upstream.
    
    Not calling pm_runtime_enable() means that runtime PM can't be
    enabled at all via sysfs. So we definitely need to call it
    from somewhere.
    
    Calling it from the driver seems like a bad idea because it
    would have to be paired with a pm_runtime_disable() at driver
    unload time, otherwise the core gets upset. Also if there's
    no LPE audio driver loaded then we couldn't runtime suspend
    i915 either.
    
    So it looks like a better plan is to call it from i915 when
    we register the platform device. That seems to match how
    pci generally does things. I cargo culted the
    pm_runtime_forbid() and pm_runtime_set_active() calls from
    pci as well.
    
    The exposed runtime PM API is massive an thorougly misleading, so
    I don't actually know if this is how you're supposed to use the API
    or not. But it seems to work. I can now runtime suspend i915 again
    with or without the LPE audio driver loaded, and reloading the
    LPE audio driver also seems to work.
    
    Note that powertop won't auto-tune runtime PM for platform devices,
    which is a little annoying. So I'm not sure that leaving runtime
    PM in "on" mode by default is the best choice here. But I've left
    it like that for now at least.
    
    Also remove the comment about there not being much benefit from
    LPE audio runtime PM. Not allowing runtime PM blocks i915 runtime
    PM, which will also block s0ix, and that could have a measurable
    impact on power consumption.
    
    Cc: Takashi Iwai <tiwai@suse.de>
    Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Fixes: 0b6b524f3915 ("ALSA: x86: Don't enable runtime PM as default")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170427160231.13337-2-ville.syrjala@linux.intel.com
    Reviewed-by: Takashi Iwai <tiwai@suse.de>
    (cherry picked from commit 183c00350ccda86781f6695840e6c5f5b22efbd1)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd6c3d0a3bc5de3f70c11cfcc2d1936527e7b6bc
Author: Julius Werner <jwerner@chromium.org>
Date:   Fri Jun 2 15:36:39 2017 -0700

    drivers: char: mem: Fix wraparound check to allow mappings up to the end
    
    commit 32829da54d9368103a2f03269a5120aa9ee4d5da upstream.
    
    A recent fix to /dev/mem prevents mappings from wrapping around the end
    of physical address space. However, the check was written in a way that
    also prevents a mapping reaching just up to the end of physical address
    space, which may be a valid use case (especially on 32-bit systems).
    This patch fixes it by checking the last mapped address (instead of the
    first address behind that) for overflow.
    
    Fixes: b299cde245 ("drivers: char: mem: Check for address space wraparound with mmap()")
    Reported-by: Nico Huber <nico.h@gmx.de>
    Signed-off-by: Julius Werner <jwerner@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc337d0e008eee4b53465e4bb453513c2c26cf24
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Fri Jun 2 16:27:14 2017 +0200

    cpu/hotplug: Drop the device lock on error
    
    commit 40da1b11f01e43aad1aa6cea64681b6125e8a2a7 upstream.
    
    If a custom CPU target is specified and that one is not available _or_
    can't be interrupted then the code returns to userland without dropping a
    lock as notices by lockdep:
    
    |echo 133 > /sys/devices/system/cpu/cpu7/hotplug/target
    | ================================================
    | [ BUG: lock held when returning to user space! ]
    | ------------------------------------------------
    | bash/503 is leaving the kernel with locks still held!
    | 1 lock held by bash/503:
    |  #0:  (device_hotplug_lock){+.+...}, at: [<ffffffff815b5650>] lock_device_hotplug_sysfs+0x10/0x40
    
    So release the lock then.
    
    Fixes: 757c989b9994 ("cpu/hotplug: Make target state writeable")
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20170602142714.3ogo25f2wbq6fjpj@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4fa867a37ae074ae9b11ab4f9521f1874be586b4
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed May 24 10:19:45 2017 +0200

    ASoC: Fix use-after-free at card unregistration
    
    commit 4efda5f2130da033aeedc5b3205569893b910de2 upstream.
    
    soc_cleanup_card_resources() call snd_card_free() at the last of its
    procedure.  This turned out to lead to a use-after-free.
    PCM runtimes have been already removed via soc_remove_pcm_runtimes(),
    while it's dereferenced later in soc_pcm_free() called via
    snd_card_free().
    
    The fix is simple: just move the snd_card_free() call to the beginning
    of the whole procedure.  This also gives another benefit: it
    guarantees that all operations have been shut down before actually
    releasing the resources, which was racy until now.
    
    Reported-and-tested-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d4bee66009fad3ac6931e8736819e920e0ef99c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jun 2 17:26:56 2017 +0200

    ALSA: timer: Fix missing queue indices reset at SNDRV_TIMER_IOCTL_SELECT
    
    commit ba3021b2c79b2fa9114f92790a99deb27a65b728 upstream.
    
    snd_timer_user_tselect() reallocates the queue buffer dynamically, but
    it forgot to reset its indices.  Since the read may happen
    concurrently with ioctl and snd_timer_user_tselect() allocates the
    buffer via kmalloc(), this may lead to the leak of uninitialized
    kernel-space data, as spotted via KMSAN:
    
      BUG: KMSAN: use of unitialized memory in snd_timer_user_read+0x6c4/0xa10
      CPU: 0 PID: 1037 Comm: probe Not tainted 4.11.0-rc5+ #2739
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
      Call Trace:
       __dump_stack lib/dump_stack.c:16
       dump_stack+0x143/0x1b0 lib/dump_stack.c:52
       kmsan_report+0x12a/0x180 mm/kmsan/kmsan.c:1007
       kmsan_check_memory+0xc2/0x140 mm/kmsan/kmsan.c:1086
       copy_to_user ./arch/x86/include/asm/uaccess.h:725
       snd_timer_user_read+0x6c4/0xa10 sound/core/timer.c:2004
       do_loop_readv_writev fs/read_write.c:716
       __do_readv_writev+0x94c/0x1380 fs/read_write.c:864
       do_readv_writev fs/read_write.c:894
       vfs_readv fs/read_write.c:908
       do_readv+0x52a/0x5d0 fs/read_write.c:934
       SYSC_readv+0xb6/0xd0 fs/read_write.c:1021
       SyS_readv+0x87/0xb0 fs/read_write.c:1018
    
    This patch adds the missing reset of queue indices.  Together with the
    previous fix for the ioctl/read race, we cover the whole problem.
    
    Reported-by: Alexander Potapenko <glider@google.com>
    Tested-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9018818b2410fcaf51042f1c0315cc4498c6c6e9
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jun 2 15:03:38 2017 +0200

    ALSA: timer: Fix race between read and ioctl
    
    commit d11662f4f798b50d8c8743f433842c3e40fe3378 upstream.
    
    The read from ALSA timer device, the function snd_timer_user_tread(),
    may access to an uninitialized struct snd_timer_user fields when the
    read is concurrently performed while the ioctl like
    snd_timer_user_tselect() is invoked.  We have already fixed the races
    among ioctls via a mutex, but we seem to have forgotten the race
    between read vs ioctl.
    
    This patch simply applies (more exactly extends the already applied
    range of) tu->ioctl_lock in snd_timer_user_tread() for closing the
    race window.
    
    Reported-by: Alexander Potapenko <glider@google.com>
    Tested-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8282f018b106daca76002bab87f3d5482391c21
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Mon Jun 5 17:23:32 2017 +1000

    drm/nouveau/tmr: fully separate alarm execution/pending lists
    
    commit b4e382ca7586a63b6c1e5221ce0863ff867c2df6 upstream.
    
    Reusing the list_head for both is a bad idea.  Callback execution is done
    with the lock dropped so that alarms can be rescheduled from the callback,
    which means that with some unfortunate timing, lists can get corrupted.
    
    The execution list should not require its own locking, the single function
    that uses it can only be called from a single context.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7e7ade1b4c9e3fdf3a33c0cdb45682a54f4b638
Author: Dominik Brodowski <linux@dominikbrodowski.net>
Date:   Wed Jun 7 11:58:19 2017 +0200

    x86/microcode/intel: Clear patch pointer before jettisoning the initrd
    
    commit 5b0bc9ac2ce4881ee318a21f31140584ce4dbdad upstream.
    
    During early boot, load_ucode_intel_ap() uses __load_ucode_intel()
    to obtain a pointer to the relevant microcode patch (embedded in the
    initrd), and stores this value in 'intel_ucode_patch' to speed up the
    microcode patch application for subsequent CPUs.
    
    On resuming from suspend-to-RAM, however, load_ucode_ap() calls
    load_ucode_intel_ap() for each non-boot-CPU. By then the initramfs is
    long gone so the pointer stored in 'intel_ucode_patch' no longer points to
    a valid microcode patch.
    
    Clear that pointer so that we effectively fall back to the CPU hotplug
    notifier callbacks to update the microcode.
    
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    [ Edit and massage commit message. ]
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20170607095819.9754-1-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bc7a4a5643e79a819ac56132826480d5102d48c
Author: Sinclair Yeh <syeh@vmware.com>
Date:   Fri Jun 2 07:50:57 2017 +0200

    drm/vmwgfx: Make sure backup_handle is always valid
    
    commit 07678eca2cf9c9a18584e546c2b2a0d0c9a3150c upstream.
    
    When vmw_gb_surface_define_ioctl() is called with an existing buffer,
    we end up returning an uninitialized variable in the backup_handle.
    
    The fix is to first initialize backup_handle to 0 just to be sure, and
    second, when a user-provided buffer is found, we will use the
    req->buffer_handle as the backup_handle.
    
    Reported-by: Murray McAllister <murray.mcallister@insomniasec.com>
    Signed-off-by: Sinclair Yeh <syeh@vmware.com>
    Reviewed-by: Deepak Rawat <drawat@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a6a4857199fb593b2e14621304546977a5acff3
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Fri Jun 2 07:42:09 2017 +0200

    drm/vmwgfx: limit the number of mip levels in vmw_gb_surface_define_ioctl()
    
    commit ee9c4e681ec4f58e42a83cb0c22a0289ade1aacf upstream.
    
    The 'req->mip_levels' parameter in vmw_gb_surface_define_ioctl() is
    a user-controlled 'uint32_t' value which is used as a loop count limit.
    This can lead to a kernel lockup and DoS. Add check for 'req->mip_levels'.
    
    References:
    https://bugzilla.redhat.com/show_bug.cgi?id=1437431
    
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c704276e2441a9c90845751c5adc023a8cb719b
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Apr 27 12:12:08 2017 +0300

    drm/vmwgfx: Handle vmalloc() failure in vmw_local_fifo_reserve()
    
    commit f0c62e9878024300319ba2438adc7b06c6b9c448 upstream.
    
    If vmalloc() fails then we need to a bit of cleanup before returning.
    
    Fixes: fb1d9738ca05 ("drm/vmwgfx: Add DRM driver for VMware Virtual GPU")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e857aaa8f30b7658cf28d4b8efa67f3d1e9abc7
Author: Timur Tabi <timur@codeaurora.org>
Date:   Thu Jun 1 16:08:13 2017 -0500

    net: qcom/emac: do not use hardware mdio automatic polling
    
    commit 246096690be0742d9bb5f3456d2cb95b68f7b46d upstream.
    
    Use software polling (PHY_POLL) to check for link state changes instead
    of relying on the EMAC's hardware polling feature.  Some PHY drivers
    are unable to get a functioning link because the HW polling is not
    robust enough.
    
    The EMAC is able to poll the PHY on the MDIO bus looking for link state
    changes (via the Link Status bit in the Status Register at address 0x1).
    When the link state changes, the EMAC triggers an interrupt and tells the
    driver what the new state is.  The feature eliminates the need for
    software to poll the MDIO bus.
    
    Unfortunately, this feature is incompatible with phylib, because it
    ignores everything that the PHY core and PHY drivers are trying to do.
    In particular:
    
    1. It assumes a compatible register set, so PHYs with different registers
       may not work.
    
    2. It doesn't allow for hardware errata that have work-arounds implemented
       in the PHY driver.
    
    3. It doesn't support multiple register pages. If the PHY core switches
       the register set to another page, the EMAC won't know the page has
       changed and will still attempt to read the same PHY register.
    
    4. It only checks the copper side of the link, not the SGMII side.  Some
       PHY drivers (e.g. at803x) may also check the SGMII side, and
       report the link as not ready during autonegotiation if the SGMII link
       is still down.  Phylib then waits for another interrupt to query
       the PHY again, but the EMAC won't send another interrupt because it
       thinks the link is up.
    
    Tested-by: Manoj Iyer <manoj.iyer@canonical.com>
    Signed-off-by: Timur Tabi <timur@codeaurora.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cadb844501f1822a5b18a093126e7af1cdf5d67a
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed May 31 14:03:11 2017 +0200

    srcu: Allow use of Classic SRCU from both process and interrupt context
    
    commit 1123a6041654e8f889014659593bad4168e542c2 upstream.
    
    Linu Cherian reported a WARN in cleanup_srcu_struct() when shutting
    down a guest running iperf on a VFIO assigned device.  This happens
    because irqfd_wakeup() calls srcu_read_lock(&kvm->irq_srcu) in interrupt
    context, while a worker thread does the same inside kvm_set_irq().  If the
    interrupt happens while the worker thread is executing __srcu_read_lock(),
    updates to the Classic SRCU ->lock_count[] field or the Tree SRCU
    ->srcu_lock_count[] field can be lost.
    
    The docs say you are not supposed to call srcu_read_lock() and
    srcu_read_unlock() from irq context, but KVM interrupt injection happens
    from (host) interrupt context and it would be nice if SRCU supported the
    use case.  KVM is using SRCU here not really for the "sleepable" part,
    but rather due to its IPI-free fast detection of grace periods.  It is
    therefore not desirable to switch back to RCU, which would effectively
    revert commit 719d93cd5f5c ("kvm/irqchip: Speed up KVM_SET_GSI_ROUTING",
    2014-01-16).
    
    However, the docs are overly conservative.  You can have an SRCU instance
    only has users in irq context, and you can mix process and irq context
    as long as process context users disable interrupts.  In addition,
    __srcu_read_unlock() actually uses this_cpu_dec() on both Tree SRCU and
    Classic SRCU.  For those two implementations, only srcu_read_lock()
    is unsafe.
    
    When Classic SRCU's __srcu_read_unlock() was changed to use this_cpu_dec(),
    in commit 5a41344a3d83 ("srcu: Simplify __srcu_read_unlock() via
    this_cpu_dec()", 2012-11-29), __srcu_read_lock() did two increments.
    Therefore it kept __this_cpu_inc(), with preempt_disable/enable in
    the caller.  Tree SRCU however only does one increment, so on most
    architectures it is more efficient for __srcu_read_lock() to use
    this_cpu_inc(), and any performance differences appear to be down in
    the noise.
    
    Fixes: 719d93cd5f5c ("kvm/irqchip: Speed up KVM_SET_GSI_ROUTING")
    Reported-by: Linu Cherian <linuc.decode@gmail.com>
    Suggested-by: Linu Cherian <linuc.decode@gmail.com>
    Cc: kvm@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 574f76fc58bab9da7344af35891c5cc15824ccbf
Author: Jin Yao <yao.jin@linux.intel.com>
Date:   Thu May 25 18:09:07 2017 +0800

    perf/core: Drop kernel samples even though :u is specified
    
    commit cc1582c231ea041fbc68861dfaf957eaf902b829 upstream.
    
    When doing sampling, for example:
    
      perf record -e cycles:u ...
    
    On workloads that do a lot of kernel entry/exits we see kernel
    samples, even though :u is specified. This is due to skid existing.
    
    This might be a security issue because it can leak kernel addresses even
    though kernel sampling support is disabled.
    
    The patch drops the kernel samples if exclude_kernel is specified.
    
    For example, test on Haswell desktop:
    
      perf record -e cycles:u <mgen>
      perf report --stdio
    
    Before patch applied:
    
        99.77%  mgen     mgen              [.] buf_read
         0.20%  mgen     mgen              [.] rand_buf_init
         0.01%  mgen     [kernel.vmlinux]  [k] apic_timer_interrupt
         0.00%  mgen     mgen              [.] last_free_elem
         0.00%  mgen     libc-2.23.so      [.] __random_r
         0.00%  mgen     libc-2.23.so      [.] _int_malloc
         0.00%  mgen     mgen              [.] rand_array_init
         0.00%  mgen     [kernel.vmlinux]  [k] page_fault
         0.00%  mgen     libc-2.23.so      [.] __random
         0.00%  mgen     libc-2.23.so      [.] __strcasestr
         0.00%  mgen     ld-2.23.so        [.] strcmp
         0.00%  mgen     ld-2.23.so        [.] _dl_start
         0.00%  mgen     libc-2.23.so      [.] sched_setaffinity@@GLIBC_2.3.4
         0.00%  mgen     ld-2.23.so        [.] _start
    
    We can see kernel symbols apic_timer_interrupt and page_fault.
    
    After patch applied:
    
        99.79%  mgen     mgen           [.] buf_read
         0.19%  mgen     mgen           [.] rand_buf_init
         0.00%  mgen     libc-2.23.so   [.] __random_r
         0.00%  mgen     mgen           [.] rand_array_init
         0.00%  mgen     mgen           [.] last_free_elem
         0.00%  mgen     libc-2.23.so   [.] vfprintf
         0.00%  mgen     libc-2.23.so   [.] rand
         0.00%  mgen     libc-2.23.so   [.] __random
         0.00%  mgen     libc-2.23.so   [.] _int_malloc
         0.00%  mgen     libc-2.23.so   [.] _IO_doallocbuf
         0.00%  mgen     ld-2.23.so     [.] do_lookup_x
         0.00%  mgen     ld-2.23.so     [.] open_verify.constprop.7
         0.00%  mgen     ld-2.23.so     [.] _dl_important_hwcaps
         0.00%  mgen     libc-2.23.so   [.] sched_setaffinity@@GLIBC_2.3.4
         0.00%  mgen     ld-2.23.so     [.] _start
    
    There are only userspace symbols.
    
    Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: acme@kernel.org
    Cc: jolsa@kernel.org
    Cc: kan.liang@intel.com
    Cc: mark.rutland@arm.com
    Cc: will.deacon@arm.com
    Cc: yao.jin@intel.com
    Link: http://lkml.kernel.org/r/1495706947-3744-1-git-send-email-yao.jin@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52782a1e1604ba8db4b86d15edffa105f60e3f65
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Wed May 24 01:39:35 2017 +0200

    Revert "ata: sata_mv: Convert to devm_ioremap_resource()"
    
    commit 3e4240da0e3673637c1c995bdd14cfdbc8f4dc4c upstream.
    
    This reverts commit 368e5fbdfc60732643f34f538823ed4bc8829827.
    
    devm_ioremap_resource() enforces that there are no overlapping
    resources, where as devm_ioremap() does not. The sata phy driver needs
    a subset of the sata IO address space, so maps some of the sata
    address space. As a result, sata_mv now fails to probe, reporting it
    cannot get its resources, and so we don't have any SATA disks.
    
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Acked-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93dfb4e6a745df04bc6cda92b0a993cd92e73b6f
Author: Breno Leitao <leitao@debian.org>
Date:   Mon Jun 5 11:40:59 2017 -0300

    powerpc/kernel: Initialize load_tm on task creation
    
    commit 7f22ced4377628074e2ac25f41a88f98eb3b03f1 upstream.
    
    Currently tsk->thread.load_tm is not initialized in the task creation
    and can contain garbage on a new task.
    
    This is an undesired behaviour, since it affects the timing to enable
    and disable the transactional memory laziness (disabling and enabling
    the MSR TM bit, which affects TM reclaim and recheckpoint in the
    scheduling process).
    
    Fixes: 5d176f751ee3 ("powerpc: tm: Enable transactional memory (TM) lazily for userspace")
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 154b6570081a97398a3ce7c567725e26608b66b8
Author: Breno Leitao <leitao@debian.org>
Date:   Fri Jun 2 18:43:30 2017 -0300

    powerpc/kernel: Fix FP and vector register restoration
    
    commit 1195892c091a15cc862f4e202482a36adc924e12 upstream.
    
    Currently tsk->thread->load_vec and load_fp are not initialized during
    task creation, which can lead to garbage values in these variables (non-zero
    values).
    
    These variables will be checked later in restore_math() to validate if the
    FP and vector registers are being utilized. Since these values might be
    non-zero, the restore_math() will continue to save the FP and vectors even if
    they were never utilized by the userspace application. load_fp and load_vec
    counters will then overflow (they wrap at 255) and the FP and Altivec will be
    finally disabled, but before that condition is reached (counter overflow)
    several context switches will have restored FP and vector registers without
    need, causing a performance degradation.
    
    Fixes: 70fe3d980f5f ("powerpc: Restore FPU/VEC/VSX if previously used")
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Signed-off-by: Gustavo Romero <gusbromero@gmail.com>
    Acked-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3e2874653ee146184c78577c217fbb0b3034f74
Author: Michael Bringmann <mwb@linux.vnet.ibm.com>
Date:   Mon May 22 15:44:37 2017 -0500

    powerpc/hotplug-mem: Fix missing endian conversion of aa_index
    
    commit dc421b200f91930c9c6a9586810ff8c232cf10fc upstream.
    
    When adding or removing memory, the aa_index (affinity value) for the
    memblock must also be converted to match the endianness of the rest
    of the 'ibm,dynamic-memory' property.  Otherwise, subsequent retrieval
    of the attribute will likely lead to non-existent nodes, followed by
    using the default node in the code inappropriately.
    
    Fixes: 5f97b2a0d176 ("powerpc/pseries: Implement memory hotplug add in the kernel")
    Signed-off-by: Michael Bringmann <mwb@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 840407e3da0401f416b929a6f103157138f0a1cb
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Tue Jun 6 20:23:57 2017 +1000

    powerpc/numa: Fix percpu allocations to be NUMA aware
    
    commit ba4a648f12f4cd0a8003dd229b6ca8a53348ee4b upstream.
    
    In commit 8c272261194d ("powerpc/numa: Enable USE_PERCPU_NUMA_NODE_ID"), we
    switched to the generic implementation of cpu_to_node(), which uses a percpu
    variable to hold the NUMA node for each CPU.
    
    Unfortunately we neglected to notice that we use cpu_to_node() in the allocation
    of our percpu areas, leading to a chicken and egg problem. In practice what
    happens is when we are setting up the percpu areas, cpu_to_node() reports that
    all CPUs are on node 0, so we allocate all percpu areas on node 0.
    
    This is visible in the dmesg output, as all pcpu allocs being in group 0:
    
      pcpu-alloc: [0] 00 01 02 03 [0] 04 05 06 07
      pcpu-alloc: [0] 08 09 10 11 [0] 12 13 14 15
      pcpu-alloc: [0] 16 17 18 19 [0] 20 21 22 23
      pcpu-alloc: [0] 24 25 26 27 [0] 28 29 30 31
      pcpu-alloc: [0] 32 33 34 35 [0] 36 37 38 39
      pcpu-alloc: [0] 40 41 42 43 [0] 44 45 46 47
    
    To fix it we need an early_cpu_to_node() which can run prior to percpu being
    setup. We already have the numa_cpu_lookup_table we can use, so just plumb it
    in. With the patch dmesg output shows two groups, 0 and 1:
    
      pcpu-alloc: [0] 00 01 02 03 [0] 04 05 06 07
      pcpu-alloc: [0] 08 09 10 11 [0] 12 13 14 15
      pcpu-alloc: [0] 16 17 18 19 [0] 20 21 22 23
      pcpu-alloc: [1] 24 25 26 27 [1] 28 29 30 31
      pcpu-alloc: [1] 32 33 34 35 [1] 36 37 38 39
      pcpu-alloc: [1] 40 41 42 43 [1] 44 45 46 47
    
    We can also check the data_offset in the paca of various CPUs, with the fix we
    see:
    
      CPU 0:  data_offset = 0x0ffe8b0000
      CPU 24: data_offset = 0x1ffe5b0000
    
    And we can see from dmesg that CPU 24 has an allocation on node 1:
    
      node   0: [mem 0x0000000000000000-0x0000000fffffffff]
      node   1: [mem 0x0000001000000000-0x0000001fffffffff]
    
    Fixes: 8c272261194d ("powerpc/numa: Enable USE_PERCPU_NUMA_NODE_ID")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bcd25cbc6bba9b5af17f6103f259602c8f3d97b
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Wed May 24 10:01:55 2017 +0200

    powerpc/sysdev/simple_gpio: Fix oops in gpio save_regs function
    
    commit 6f553912eedafae13ff20b322a65e471fe7f5236 upstream.
    
    of_mm_gpiochip_add_data() generates an oops for NULL pointer dereference.
    
    of_mm_gpiochip_add_data() calls mm_gc->save_regs() before
    setting the data, therefore ->save_regs() cannot use gpiochip_get_data()
    
    Fixes: 937daafca774 ("powerpc: simple-gpio: use gpiochip data pointer")
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ce16922737686ab3b85d3fc0b2f112899aadd14
Author: Joe Carnuccio <joe.carnuccio@qlogic.com>
Date:   Wed May 24 18:06:23 2017 -0700

    scsi: qla2xxx: Fix mailbox pointer error in fwdump capture
    
    commit 74939a0bc772d642b1c12827966c4c3a3c90ea2c upstream.
    
    Signed-off-by: Joe Carnuccio <joe.carnuccio@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 223b1549f04c90469081d6caad38d42a6f7780f9
Author: Joe Carnuccio <joe.carnuccio@cavium.com>
Date:   Wed May 24 18:06:22 2017 -0700

    scsi: qla2xxx: Set bit 15 for DIAG_ECHO_TEST MBC
    
    commit 1d63496516c61e2e1351f10e6becbfc9ee511395 upstream.
    
    Set bit (BIT_15) to send right ECHO payload information for Diagnostic
    Echo Test command.
    
    Signed-off-by: Joe Carnuccio <joe.carnuccio@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67034eaa0d531a6f6f7a04989ceccc796be0c8f9
Author: Joe Carnuccio <joe.carnuccio@cavium.com>
Date:   Wed May 24 18:06:21 2017 -0700

    scsi: qla2xxx: Modify T262 FW dump template to specify same start/end to debug customer issues
    
    commit ce6c668b146cc4f4442111e2bcee4c3af94e1ddf upstream.
    
    Firmware dump allows for debugging customer issues. This patch fixes
    start/end pointer calculation to capture T262 template entry for dump
    tool.
    
    Signed-off-by: Joe Carnuccio <joe.carnuccio@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21fffaa1b70cf049d6eddaa807ce8967ac020543
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Wed May 24 18:06:19 2017 -0700

    scsi: qla2xxx: Fix NULL pointer access due to redundant fc_host_port_name call
    
    commit 0ea88662b5c6404a8f7af6b040b3cf1f0e8c3a66 upstream.
    
    Remove redundant fc_host_port_name calls to prevent early access of
    scsi_host->shost_data buffer. This prevent null pointer access.
    
    Following stack trace is seen:
    
    BUG: unable to handle kernel NULL pointer dereference at 00000000000008
    IP: qla24xx_report_id_acquisition+0x22d/0x3a0 [qla2xxx]
    
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96e0d45552c184eb54f2e2ff569136d2b9bab0a7
Author: Sawan Chandak <sawan.chandak@cavium.com>
Date:   Wed May 24 18:06:20 2017 -0700

    scsi: qla2xxx: Fix crash due to mismatch mumber of Q-pair creation for Multi queue
    
    commit b95b9452aacf80659ea67bf0948cbfa7e28e5e0b upstream.
    
    when driver is loaded with Multi Queue enabled, it was noticed that
    there was one less queue pair created.
    
    Following message would indicate this:
    
    "No resources to create additional q pair."
    
    The result of one less queue pair means that system can crash, if the
    block mq layer thinks there is an extra hardware queue available, and
    the driver will use a NULL ptr qpair in that instance.
    
    Following stack trace is seen in one of the crash:
    
    irq_create_affinity_masks+0x98/0x530
    irq_create_affinity_masks+0x98/0x530
    __pci_enable_msix+0x321/0x4e0
    mutex_lock+0x12/0x40
    pci_alloc_irq_vectors_affinity+0xb5/0x140
    qla24xx_enable_msix+0x79/0x530 [qla2xxx]
    qla2x00_request_irqs+0x61/0x2d0 [qla2xxx]
    qla2x00_probe_one+0xc73/0x2390 [qla2xxx]
    ida_simple_get+0x98/0x100
    kernfs_next_descendant_post+0x40/0x50
    local_pci_probe+0x45/0xa0
    pci_device_probe+0xfc/0x140
    driver_probe_device+0x2c5/0x470
    __driver_attach+0xdd/0xe0
    driver_probe_device+0x470/0x470
    bus_for_each_dev+0x6c/0xc0
    driver_attach+0x1e/0x20
    bus_add_driver+0x45/0x270
    driver_register+0x60/0xe0
    __pci_register_driver+0x4c/0x50
    qla2x00_module_init+0x1ce/0x21e [qla2xxx]
    
    Signed-off-by: Sawan Chandak <sawan.chandak@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 083dca440b2c467cb5e521a845230ef461c32c54
Author: himanshu.madhani@cavium.com <himanshu.madhani@cavium.com>
Date:   Wed May 24 18:06:18 2017 -0700

    scsi: qla2xxx: Fix recursive loop during target mode configuration for ISP25XX leaving system unresponsive
    
    commit cb590700e04d4f59179c44f360217f5ad04ae262 upstream.
    
    Following messages are seen into system logs
    
    qla2xxx [0000:09:00.0]-00af:9: Performing ISP error recovery - ha=ffff98315ee30000.
    qla2xxx [0000:09:00.0]-504b:9: RISC paused -- HCCR=40, Dumping firmware.
    qla2xxx [0000:09:00.0]-d009:9: Firmware has been previously dumped (ffffba488c001000) -- ignoring request.
    qla2xxx [0000:09:00.0]-504b:9: RISC paused -- HCCR=40, Dumping firmware.
    
    See Bugzilla for details
    https://bugzilla.kernel.org/show_bug.cgi?id=195285
    
    Fixes: d74595278f4ab ("scsi: qla2xxx: Add multiple queue pair functionality.")
    Reported-by: Laurence Oberman <loberman@redhat.com>
    Reported-by: Anthony Bloodoff <anthony.bloodoff@gmail.com>
    Tested-by: Laurence Oberman <loberman@redhat.com>
    Tested-by: Anthony Bloodoff <anthony.bloodoff@gmail.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Giridhar Malavali <giridhar.malavali@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit daa15f6f84e77da690032f4bcc4212e7509fc540
Author: Johannes Thumshirn <jthumshirn@suse.de>
Date:   Tue May 23 16:50:47 2017 +0200

    scsi: qla2xxx: don't disable a not previously enabled PCI device
    
    commit ddff7ed45edce4a4c92949d3c61cd25d229c4a14 upstream.
    
    When pci_enable_device() or pci_enable_device_mem() fail in
    qla2x00_probe_one() we bail out but do a call to
    pci_disable_device(). This causes the dev_WARN_ON() in
    pci_disable_device() to trigger, as the device wasn't enabled
    previously.
    
    So instead of taking the 'probe_out' error path we can directly return
    *iff* one of the pci_enable_device() calls fails.
    
    Additionally rename the 'probe_out' goto label's name to the more
    descriptive 'disable_device'.
    
    Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
    Fixes: e315cd28b9ef ("[SCSI] qla2xxx: Code changes for qla data structure refactoring")
    Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Reviewed-by: Giridhar Malavali <giridhar.malavali@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bae71aa85e09605bd90aa154c1940088bc51898
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Mon Jun 5 19:17:18 2017 +0100

    KVM: arm/arm64: Handle possible NULL stage2 pud when ageing pages
    
    commit d6dbdd3c8558cad3b6d74cc357b408622d122331 upstream.
    
    Under memory pressure, we start ageing pages, which amounts to parsing
    the page tables. Since we don't want to allocate any extra level,
    we pass NULL for our private allocation cache. Which means that
    stage2_get_pud() is allowed to fail. This results in the following
    splat:
    
    [ 1520.409577] Unable to handle kernel NULL pointer dereference at virtual address 00000008
    [ 1520.417741] pgd = ffff810f52fef000
    [ 1520.421201] [00000008] *pgd=0000010f636c5003, *pud=0000010f56f48003, *pmd=0000000000000000
    [ 1520.429546] Internal error: Oops: 96000006 [#1] PREEMPT SMP
    [ 1520.435156] Modules linked in:
    [ 1520.438246] CPU: 15 PID: 53550 Comm: qemu-system-aar Tainted: G        W       4.12.0-rc4-00027-g1885c397eaec #7205
    [ 1520.448705] Hardware name: FOXCONN R2-1221R-A4/C2U4N_MB, BIOS G31FB12A 10/26/2016
    [ 1520.463726] task: ffff800ac5fb4e00 task.stack: ffff800ce04e0000
    [ 1520.469666] PC is at stage2_get_pmd+0x34/0x110
    [ 1520.474119] LR is at kvm_age_hva_handler+0x44/0xf0
    [ 1520.478917] pc : [<ffff0000080b137c>] lr : [<ffff0000080b149c>] pstate: 40000145
    [ 1520.486325] sp : ffff800ce04e33d0
    [ 1520.489644] x29: ffff800ce04e33d0 x28: 0000000ffff40064
    [ 1520.494967] x27: 0000ffff27e00000 x26: 0000000000000000
    [ 1520.500289] x25: ffff81051ba65008 x24: 0000ffff40065000
    [ 1520.505618] x23: 0000ffff40064000 x22: 0000000000000000
    [ 1520.510947] x21: ffff810f52b20000 x20: 0000000000000000
    [ 1520.516274] x19: 0000000058264000 x18: 0000000000000000
    [ 1520.521603] x17: 0000ffffa6fe7438 x16: ffff000008278b70
    [ 1520.526940] x15: 000028ccd8000000 x14: 0000000000000008
    [ 1520.532264] x13: ffff7e0018298000 x12: 0000000000000002
    [ 1520.537582] x11: ffff000009241b93 x10: 0000000000000940
    [ 1520.542908] x9 : ffff0000092ef800 x8 : 0000000000000200
    [ 1520.548229] x7 : ffff800ce04e36a8 x6 : 0000000000000000
    [ 1520.553552] x5 : 0000000000000001 x4 : 0000000000000000
    [ 1520.558873] x3 : 0000000000000000 x2 : 0000000000000008
    [ 1520.571696] x1 : ffff000008fd5000 x0 : ffff0000080b149c
    [ 1520.577039] Process qemu-system-aar (pid: 53550, stack limit = 0xffff800ce04e0000)
    [...]
    [ 1521.510735] [<ffff0000080b137c>] stage2_get_pmd+0x34/0x110
    [ 1521.516221] [<ffff0000080b149c>] kvm_age_hva_handler+0x44/0xf0
    [ 1521.522054] [<ffff0000080b0610>] handle_hva_to_gpa+0xb8/0xe8
    [ 1521.527716] [<ffff0000080b3434>] kvm_age_hva+0x44/0xf0
    [ 1521.532854] [<ffff0000080a58b0>] kvm_mmu_notifier_clear_flush_young+0x70/0xc0
    [ 1521.539992] [<ffff000008238378>] __mmu_notifier_clear_flush_young+0x88/0xd0
    [ 1521.546958] [<ffff00000821eca0>] page_referenced_one+0xf0/0x188
    [ 1521.552881] [<ffff00000821f36c>] rmap_walk_anon+0xec/0x250
    [ 1521.558370] [<ffff000008220f78>] rmap_walk+0x78/0xa0
    [ 1521.563337] [<ffff000008221104>] page_referenced+0x164/0x180
    [ 1521.569002] [<ffff0000081f1af0>] shrink_active_list+0x178/0x3b8
    [ 1521.574922] [<ffff0000081f2058>] shrink_node_memcg+0x328/0x600
    [ 1521.580758] [<ffff0000081f23f4>] shrink_node+0xc4/0x328
    [ 1521.585986] [<ffff0000081f2718>] do_try_to_free_pages+0xc0/0x340
    [ 1521.592000] [<ffff0000081f2a64>] try_to_free_pages+0xcc/0x240
    [...]
    
    The trivial fix is to handle this NULL pud value early, rather than
    dereferencing it blindly.
    
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Reviewed-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7751d94da921628c8927007364aa9a08af004347
Author: Omar Sandoval <osandov@fb.com>
Date:   Fri Jun 2 01:20:01 2017 -0700

    Btrfs: fix delalloc accounting leak caused by u32 overflow
    
    commit 70e7af244f24c94604ef6eca32ad297632018583 upstream.
    
    btrfs_calc_trans_metadata_size() does an unsigned 32-bit multiplication,
    which can overflow if num_items >= 4 GB / (nodesize * BTRFS_MAX_LEVEL * 2).
    For a nodesize of 16kB, this overflow happens at 16k items. Usually,
    num_items is a small constant passed to btrfs_start_transaction(), but
    we also use btrfs_calc_trans_metadata_size() for metadata reservations
    for extent items in btrfs_delalloc_{reserve,release}_metadata().
    
    In drop_outstanding_extents(), num_items is calculated as
    inode->reserved_extents - inode->outstanding_extents. The difference
    between these two counters is usually small, but if many delalloc
    extents are reserved and then the outstanding extents are merged in
    btrfs_merge_extent_hook(), the difference can become large enough to
    overflow in btrfs_calc_trans_metadata_size().
    
    The overflow manifests itself as a leak of a multiple of 4 GB in
    delalloc_block_rsv and the metadata bytes_may_use counter. This in turn
    can cause early ENOSPC errors. Additionally, these WARN_ONs in
    extent-tree.c will be hit when unmounting:
    
        WARN_ON(fs_info->delalloc_block_rsv.size > 0);
        WARN_ON(fs_info->delalloc_block_rsv.reserved > 0);
        WARN_ON(space_info->bytes_pinned > 0 ||
                space_info->bytes_reserved > 0 ||
                space_info->bytes_may_use > 0);
    
    Fix it by casting nodesize to a u64 so that
    btrfs_calc_trans_metadata_size() does a full 64-bit multiplication.
    While we're here, do the same in btrfs_calc_trunc_metadata_size(); this
    can't overflow with any existing uses, but it's better to be safe here
    than have another hard-to-debug problem later on.
    
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit acccdbef2c63351ba811d4a89c5ce839939a9cb7
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Wed May 17 11:38:34 2017 -0400

    btrfs: fix race with relocation recovery and fs_root setup
    
    commit a9b3311ef36b670909ea4443f306c8318082c8f0 upstream.
    
    If we have to recover relocation during mount, we'll ultimately have to
    evict the orphan inode.  That goes through the reservation dance, where
    priority_reclaim_metadata_space and flush_space expect fs_info->fs_root
    to be valid.  That's the next thing to be set up during mount, so we
    crash, almost always in flush_space trying to join the transaction
    but priority_reclaim_metadata_space is possible as well.  This call
    path has been problematic in the past WRT whether ->fs_root is valid
    yet.  Commit 957780eb278 (Btrfs: introduce ticketed enospc
    infrastructure) added new users that are called in the direct path
    instead of the async path that had already been worked around.
    
    The thing is that we don't actually need the fs_root, specifically, for
    anything.  We either use it to determine whether the root is the
    chunk_root for use in choosing an allocation profile or as a root to pass
    btrfs_join_transaction before immediately committing it.  Anything that
    isn't the chunk root works in the former case and any root works in
    the latter.
    
    A simple fix is to use a root we know will always be there: the
    extent_root.
    
    Fixes: 957780eb278 (Btrfs: introduce ticketed enospc infrastructure)
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ca9daf72226d7486925e8672f6841cfdf37b33e
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Wed May 17 09:49:37 2017 -0400

    btrfs: fix memory leak in update_space_info failure path
    
    commit 896533a7da929136d0432713f02a3edffece2826 upstream.
    
    If we fail to add the space_info kobject, we'll leak the memory
    for the percpu counter.
    
    Fixes: 6ab0a2029c (btrfs: publish allocation data in sysfs)
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6bc3d6a6332f49ccb3a74de28758b1637d214db8
Author: David Sterba <dsterba@suse.com>
Date:   Fri May 12 01:03:52 2017 +0200

    btrfs: use correct types for page indices in btrfs_page_exists_in_range
    
    commit cc2b702c52094b637a351d7491ac5200331d0445 upstream.
    
    Variables start_idx and end_idx are supposed to hold a page index
    derived from the file offsets. The int type is not the right one though,
    offsets larger than 1 << 44 will get silently trimmed off the high bits.
    (1 << 44 is 16TiB)
    
    What can go wrong, if start is below the boundary and end gets trimmed:
    - if there's a page after start, we'll find it (radix_tree_gang_lookup_slot)
    - the final check "if (page->index <= end_idx)" will unexpectedly fail
    
    The function will return false, ie. "there's no page in the range",
    although there is at least one.
    
    btrfs_page_exists_in_range is used to prevent races in:
    
    * in hole punching, where we make sure there are not pages in the
      truncated range, otherwise we'll wait for them to finish and redo
      truncation, but we're going to replace the pages with holes anyway so
      the only problem is the intermediate state
    
    * lock_extent_direct: we want to make sure there are no pages before we
      lock and start DIO, to prevent stale data reads
    
    For practical occurence of the bug, there are several constaints.  The
    file must be quite large, the affected range must cross the 16TiB
    boundary and the internal state of the file pages and pending operations
    must match.  Also, we must not have started any ordered data in the
    range, otherwise we don't even reach the buggy function check.
    
    DIO locking tries hard in several places to avoid deadlocks with
    buffered IO and avoids waiting for ranges. The worst consequence seems
    to be stale data read.
    
    CC: Liu Bo <bo.li.liu@oracle.com>
    Fixes: fc4adbff823f7 ("btrfs: Drop EXTENT_UPTODATE check in hole punching and direct locking")
    Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 574ab1b8fba76f88107177aa6dca26b5656e0e70
Author: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
Date:   Fri Jun 2 22:26:48 2017 +0530

    cxl: Avoid double free_irq() for psl,slice interrupts
    
    commit b3aa20ba2ba8072b73bd799605b8c98927b7056c upstream.
    
    During an eeh call to cxl_remove can result in double free_irq of
    psl,slice interrupts. This can happen if perst_reloads_same_image == 1
    and call to cxl_configure_adapter() fails during slot_reset
    callback. In such a case we see a kernel oops with following back-trace:
    
    Oops: Kernel access of bad area, sig: 11 [#1]
    Call Trace:
      free_irq+0x88/0xd0 (unreliable)
      cxl_unmap_irq+0x20/0x40 [cxl]
      cxl_native_release_psl_irq+0x78/0xd8 [cxl]
      pci_deconfigure_afu+0xac/0x110 [cxl]
      cxl_remove+0x104/0x210 [cxl]
      pci_device_remove+0x6c/0x110
      device_release_driver_internal+0x204/0x2e0
      pci_stop_bus_device+0xa0/0xd0
      pci_stop_and_remove_bus_device+0x28/0x40
      pci_hp_remove_devices+0xb0/0x150
      pci_hp_remove_devices+0x68/0x150
      eeh_handle_normal_event+0x140/0x580
      eeh_handle_event+0x174/0x360
      eeh_event_handler+0x1e8/0x1f0
    
    This patch fixes the issue of double free_irq by checking that
    variables that hold the virqs (err_hwirq, serr_hwirq, psl_virq) are
    not '0' before un-mapping and resetting these variables to '0' when
    they are un-mapped.
    
    Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
    Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c94348b23d37e9213f11b0ea8fea52169a0ac30
Author: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
Date:   Tue Jun 6 11:43:41 2017 +0200

    cxl: Fix error path on bad ioctl
    
    commit cec422c11caeeccae709e9942058b6b644ce434c upstream.
    
    Fix error path if we can't copy user structure on CXL_IOCTL_START_WORK
    ioctl. We shouldn't unlock the context status mutex as it was not
    locked (yet).
    
    Fixes: 0712dc7e73e5 ("cxl: Fix issues when unmapping contexts")
    Signed-off-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
    Reviewed-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
    Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4907e3bb672fe4a841f24e5afd6a710c1b06ea18
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Jun 9 16:20:34 2017 -0400

    excessive checks in ufs_write_failed() and ufs_evict_inode()
    
    commit babef37dccbaa49249a22bae9150686815d7be71 upstream.
    
    As it is, short copy in write() to append-only file will fail
    to truncate the excessive allocated blocks.  As the matter of
    fact, all checks in ufs_truncate_blocks() are either redundant
    or wrong for that caller.  As for the only other caller
    (ufs_evict_inode()), we only need the file type checks there.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6af5db5d39579f8e5e430177a06973fbce66809b
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Jun 8 23:28:53 2017 -0400

    ufs_getfrag_block(): we only grab ->truncate_mutex on block creation path
    
    commit 006351ac8ead0d4a67dd3845e3ceffe650a23212 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c12c0c4ff5d1e7202561b51e2f2697ebe5fc425d
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Jun 8 23:27:12 2017 -0400

    ufs_extend_tail(): fix the braino in calling conventions of ufs_new_fragments()
    
    commit 940ef1a0ed939c2ca029fca715e25e7778ce1e34 upstream.
    
    ... and it really needs splitting into "new" and "extend" cases, but that's for
    later
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 728154e9631abb1497f5bed8becb56e85519f87e
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Jun 8 21:15:45 2017 -0400

    ufs: set correct ->s_maxsize
    
    commit 6b0d144fa758869bdd652c50aa41aaf601232550 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d426b9575ff50da5a80f5d52e3ee777546d1f379
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Jun 8 21:15:03 2017 -0400

    ufs: restore maintaining ->i_blocks
    
    commit eb315d2ae614493fd1ebb026c75a80573d84f7ad upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 386e884c854e4bef582ce9c5d7076a30af55cd74
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Jun 8 18:15:18 2017 -0400

    fix ufs_isblockset()
    
    commit 414cf7186dbec29bd946c138d6b5c09da5955a08 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 823c065a40178b50faa5e0fdde5e1e596e661121
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Jun 8 02:42:03 2017 -0400

    ufs: restore proper tail allocation
    
    commit 8785d84d002c2ce0f68fbcd6c2c86be859802c7e upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9be0c9d62dfb1f00de04fceae948fd56e84cdd28
Author: Tejun Heo <tj@kernel.org>
Date:   Wed May 24 12:03:48 2017 -0400

    cpuset: consider dying css as offline
    
    commit 41c25707d21716826e3c1f60967f5550610ec1c9 upstream.
    
    In most cases, a cgroup controller don't care about the liftimes of
    cgroups.  For the controller, a css becomes online when ->css_online()
    is called on it and offline when ->css_offline() is called.
    
    However, cpuset is special in that the user interface it exposes cares
    whether certain cgroups exist or not.  Combined with the RCU delay
    between cgroup removal and css offlining, this can lead to user
    visible behavior oddities where operations which should succeed after
    cgroup removals fail for some time period.  The effects of cgroup
    removals are delayed when seen from userland.
    
    This patch adds css_is_dying() which tests whether offline is pending
    and updates is_cpuset_online() so that the function returns false also
    while offline is pending.  This gets rid of the userland visible
    delays.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Link: http://lkml.kernel.org/r/327ca1f5-7957-fbb9-9e5f-9ba149d40ba2@oracle.com
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48b2c7c865b544637c0ccca9861fc26aed69cd28
Author: Ulrik De Bie <ulrik.debie-os@e2big.org>
Date:   Wed Jun 7 10:30:57 2017 -0700

    Input: elantech - add Fujitsu Lifebook E546/E557 to force crc_enabled
    
    commit 47eb0c8b4d9eb6368941c6a9bb443f00847a46d7 upstream.
    
    The Lifebook E546 and E557 touchpad were also not functioning and
    worked after running:
    
            echo "1" > /sys/devices/platform/i8042/serio2/crc_enabled
    
    Add them to the list of machines that need this workaround.
    
    Signed-off-by: Ulrik De Bie <ulrik.debie-os@e2big.org>
    Reviewed-by: Arjan Opmeer <arjan@opmeer.net>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3c1dfa84dbefc138a85930ebc43aa9a875e5718
Author: Waiman Long <longman@redhat.com>
Date:   Mon May 15 09:34:06 2017 -0400

    cgroup: Prevent kill_css() from being called more than once
    
    commit 33c35aa4817864e056fd772230b0c6b552e36ea2 upstream.
    
    The kill_css() function may be called more than once under the condition
    that the css was killed but not physically removed yet followed by the
    removal of the cgroup that is hosting the css. This patch prevents any
    harmm from being done when that happens.
    
    Signed-off-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d31fff8cbc9afc539bdf34b39a8e116551fa69a8
Author: Sean Young <sean@mess.org>
Date:   Wed May 24 06:24:51 2017 -0300

    rc-core: race condition during ir_raw_event_register()
    
    commit 963761a0b2e85663ee4a5630f72930885a06598a upstream.
    
    A rc device can call ir_raw_event_handle() after rc_allocate_device(),
    but before rc_register_device() has completed. This is racey because
    rcdev->raw is set before rcdev->raw->thread has a valid value.
    
    Reported-by: kbuild test robot <fengguang.wu@intel.com>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9f48c4661374802f4ee34e6547fdd9459bbd459
Author: Sui Chen <suichen6@gmail.com>
Date:   Tue May 9 07:47:22 2017 -0500

    ahci: Acer SA5-271 SSD Not Detected Fix
    
    commit 8bfd174312629866efa535193d9e563768ff4307 upstream.
    
    (Correction in this resend: fixed function name acer_sa5_271_workaround; fixed
     the always-true condition in the function; fixed description.)
    
    On the Acer Switch Alpha 12 (model number: SA5-271), the internal SSD may not
    get detected because the port_map and CAP.nr_ports combination causes the driver
    to skip the port that is actually connected to the SSD. More specifically,
    either all SATA ports are identified as DUMMY, or all ports get ``link down''
    and never get up again.
    
    This problem occurs occasionally. When this problem occurs, CAP may hold a
    value of 0xC734FF00 or 0xC734FF01 and port_map may hold a value of 0x00 or 0x01.
    When this problem does not occur, CAP holds a value of 0xC734FF02 and port_map
    may hold a value of 0x07. Overriding the CAP value to 0xC734FF02 and port_map to
    0x7 significantly reduces the occurrence of this problem.
    
    Link: https://bugzilla.kernel.org/attachment.cgi?id=253091
    Signed-off-by: Sui Chen <suichen6@gmail.com>
    Tested-by: Damian Ivanov <damianatorrpm@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39d584db444e83331c47b5b0d621bac5461ab0ac
Author: Rob Clark <robdclark@gmail.com>
Date:   Wed May 3 10:04:48 2017 -0400

    drm/msm/mdp5: use __drm_atomic_helper_plane_duplicate_state()
    
    commit 786813c343cb619d23cb0990e152e350b826d810 upstream.
    
    Somehow the helper was never retrofitted for mdp5.  Which meant when
    plane_state->fence was added, it could get copied into new state in
    mdp5_plane_duplicate_state().
    
    If an update to disable the plane (for example on rmfb) managed to sneak
    in after an nonblock update had swapped state, but before it was
    committed, we'd get a splat:
    
        WARNING: CPU: 1 PID: 69 at ../drivers/gpu/drm/drm_atomic_helper.c:1061 drm_atomic_helper_wait_for_fences+0xe0/0xf8
       Modules linked in:
    
       CPU: 1 PID: 69 Comm: kworker/1:1 Tainted: G        W       4.11.0-rc8+ #1187
       Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
       Workqueue: events drm_mode_rmfb_work_fn
       task: ffffffc036560d00 task.stack: ffffffc036550000
       PC is at drm_atomic_helper_wait_for_fences+0xe0/0xf8
       LR is at complete_commit.isra.1+0x44/0x1c0
       pc : [<ffffff80084f6040>] lr : [<ffffff800854176c>] pstate: 20000145
       sp : ffffffc036553b60
       x29: ffffffc036553b60 x28: ffffffc0264e6a00
       x27: ffffffc035659000 x26: 0000000000000000
       x25: ffffffc0240e8000 x24: 0000000000000038
       x23: 0000000000000000 x22: ffffff800858f200
       x21: ffffffc0240e8000 x20: ffffffc02f56a800
       x19: 0000000000000000 x18: 0000000000000000
       x17: 0000000000000000 x16: 0000000000000000
       x15: 0000000000000000 x14: ffffffc00a192700
       x13: 0000000000000004 x12: 0000000000000000
       x11: ffffff80089a1690 x10: 00000000000008f0
       x9 : ffffffc036553b20 x8 : ffffffc036561650
       x7 : ffffffc03fe6cb40 x6 : 0000000000000000
       x5 : 0000000000000001 x4 : 0000000000000002
       x3 : ffffffc035659000 x2 : ffffffc0240e8c80
       x1 : 0000000000000000 x0 : ffffffc02adbe588
    
       ---[ end trace 13aeec77c3fb55e2 ]---
       Call trace:
       Exception stack(0xffffffc036553990 to 0xffffffc036553ac0)
       3980:                                   0000000000000000 0000008000000000
       39a0: ffffffc036553b60 ffffff80084f6040 0000000000004ff0 0000000000000038
       39c0: ffffffc0365539d0 ffffff800857e098 ffffffc036553a00 ffffff800857e1b0
       39e0: ffffffc036553a10 ffffff800857c554 ffffffc0365e8400 ffffffc0365e8400
       3a00: ffffffc036553a20 ffffff8008103358 000000000001aad7 ffffff800851b72c
       3a20: ffffffc036553a50 ffffff80080e9228 ffffffc02adbe588 0000000000000000
       3a40: ffffffc0240e8c80 ffffffc035659000 0000000000000002 0000000000000001
       3a60: 0000000000000000 ffffffc03fe6cb40 ffffffc036561650 ffffffc036553b20
       3a80: 00000000000008f0 ffffff80089a1690 0000000000000000 0000000000000004
       3aa0: ffffffc00a192700 0000000000000000 0000000000000000 0000000000000000
       [<ffffff80084f6040>] drm_atomic_helper_wait_for_fences+0xe0/0xf8
       [<ffffff800854176c>] complete_commit.isra.1+0x44/0x1c0
       [<ffffff8008541c64>] msm_atomic_commit+0x32c/0x350
       [<ffffff8008516230>] drm_atomic_commit+0x50/0x60
       [<ffffff8008517548>] drm_atomic_remove_fb+0x158/0x250
       [<ffffff80085186d0>] drm_framebuffer_remove+0x50/0x158
       [<ffffff8008518818>] drm_mode_rmfb_work_fn+0x40/0x58
       [<ffffff80080d5668>] process_one_work+0x1d0/0x378
       [<ffffff80080d5a54>] worker_thread+0x244/0x488
       [<ffffff80080db7fc>] kthread+0xfc/0x128
       [<ffffff8008082ec0>] ret_from_fork+0x10/0x50
    
    Fixes: 9626014 ("drm/fence: add in-fences support")
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Reported-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
    Signed-off-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5ab52b38f1f6c1ae47be7027e4207b89466750e
Author: Eric Anholt <eric@anholt.net>
Date:   Wed Apr 12 12:11:58 2017 -0700

    drm/msm: Expose our reservation object when exporting a dmabuf.
    
    commit 43523eba79bda8f5b4c27f8ffe20ea078d20113a upstream.
    
    Without this, polling on the dma-buf (and presumably other devices
    synchronizing against our rendering) would return immediately, even
    while the BO was busy.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Rob Clark <robdclark@gmail.com>
    Cc: linux-arm-msm@vger.kernel.org
    Cc: freedreno@lists.freedesktop.org
    Reviewed-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0354d1d64ff6d2f578ad7a4cce042922fc983f07
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Thu May 11 01:07:24 2017 -0700

    target: Re-add check to reject control WRITEs with overflow data
    
    commit 4ff83daa0200affe1894bd33d17bac404e3d78d4 upstream.
    
    During v4.3 when the overflow/underflow check was relaxed by
    commit c72c525022:
    
      commit c72c5250224d475614a00c1d7e54a67f77cd3410
      Author: Roland Dreier <roland@purestorage.com>
      Date:   Wed Jul 22 15:08:18 2015 -0700
    
           target: allow underflow/overflow for PR OUT etc. commands
    
    to allow underflow/overflow for Windows compliance + FCP, a
    consequence was to allow control CDBs to process overflow
    data for iscsi-target with immediate data as well.
    
    As per Roland's original change, continue to allow underflow
    cases for control CDBs to make Windows compliance + FCP happy,
    but until overflow for control CDBs is supported tree-wide,
    explicitly reject all control WRITEs with overflow following
    pre v4.3.y logic.
    
    Reported-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Roland Dreier <roland@purestorage.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0eedb7832e10f43980766f210b74cee15d983352
Author: David Arcari <darcari@redhat.com>
Date:   Fri May 26 11:37:31 2017 -0400

    cpufreq: cpufreq_register_driver() should return -ENODEV if init fails
    
    commit 6c77003677d5f1ce15f26d24360cb66c0bc07bb3 upstream.
    
    For a driver that does not set the CPUFREQ_STICKY flag, if all of the
    ->init() calls fail, cpufreq_register_driver() should return an error.
    This will prevent the driver from loading.
    
    Fixes: ce1bcfe94db8 (cpufreq: check cpufreq_policy_list instead of scanning policies for all CPUs)
    Signed-off-by: David Arcari <darcari@redhat.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 86f95e53ed76fec2579e00351c6050ab398a7730
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Wed Jun 7 19:45:31 2017 -0400

    random: invalidate batched entropy after crng init
    
    commit b169c13de473a85b3c859bb36216a4cb5f00a54a upstream.
    
    It's possible that get_random_{u32,u64} is used before the crng has
    initialized, in which case, its output might not be cryptographically
    secure. For this problem, directly, this patch set is introducing the
    *_wait variety of functions, but even with that, there's a subtle issue:
    what happens to our batched entropy that was generated before
    initialization. Prior to this commit, it'd stick around, supplying bad
    numbers. After this commit, we force the entropy to be re-extracted
    after each phase of the crng has initialized.
    
    In order to avoid a race condition with the position counter, we
    introduce a simple rwlock for this invalidation. Since it's only during
    this awkward transition period, after things are all set up, we stop
    using it, so that it doesn't have an impact on performance.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0524867ee278b8d9efb19e7a9fbae78ae59503b6
Author: Pratyush Anand <panand@redhat.com>
Date:   Mon May 29 22:08:24 2017 +0300

    mei: make sysfs modalias format similar as uevent modalias
    
    commit 6f9193ec044a8f72d8b6ae94a5c4ab6e8b0f00ca upstream.
    
    modprobe is not able to resolve sysfs modalias for mei devices.
    
     # cat
    /sys/class/watchdog/watchdog0/device/watchdog/watchdog0/device/modalias
    mei::05b79a6f-4628-4d7f-899d-a91514cb32ab:
     # modprobe --set-version 4.9.6-200.fc25.x86_64 -R
    mei::05b79a6f-4628-4d7f-899d-a91514cb32ab:
    modprobe: FATAL: Module mei::05b79a6f-4628-4d7f-899d-a91514cb32ab: not
    found in directory /lib/modules/4.9.6-200.fc25.x86_64
     # cat /lib/modules/4.9.6-200.fc25.x86_64/modules.alias | grep
    05b79a6f-4628-4d7f-899d-a91514cb32ab
    alias mei:*:05b79a6f-4628-4d7f-899d-a91514cb32ab:*:* mei_wdt
    
    commit b26864cad1c9 ("mei: bus: add client protocol
    version to the device alias"), however sysfs modalias
    is still in formmat mei:S:uuid:*.
    
    This patch equates format of uevent and sysfs modalias so that modprobe
    is able to resolve the aliases.
    
    Fixes: commit b26864cad1c9 ("mei: bus: add client protocol version to the device alias")
    Signed-off-by: Pratyush Anand <panand@redhat.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6712554818fd9cc361a9b4552aad62286848bdb3
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Wed May 31 14:43:45 2017 -0700

    block: Avoid that blk_exit_rl() triggers a use-after-free
    
    commit b425e50492583b10cceb388af36ef0bd3bdf842a upstream.
    
    Since the introduction of .init_rq_fn() and .exit_rq_fn() it is
    essential that the memory allocated for struct request_queue
    stays around until all blk_exit_rl() calls have finished. Hence
    make blk_init_rl() take a reference on struct request_queue.
    
    This patch fixes the following crash:
    
    general protection fault: 0000 [#2] SMP
    CPU: 3 PID: 28 Comm: ksoftirqd/3 Tainted: G      D         4.12.0-rc2-dbg+ #2
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.0.0-prebuilt.qemu-project.org 04/01/2014
    task: ffff88013a108040 task.stack: ffffc9000071c000
    RIP: 0010:free_request_size+0x1a/0x30
    RSP: 0018:ffffc9000071fd38 EFLAGS: 00010202
    RAX: 6b6b6b6b6b6b6b6b RBX: ffff880067362a88 RCX: 0000000000000003
    RDX: ffff880067464178 RSI: ffff880067362a88 RDI: ffff880135ea4418
    RBP: ffffc9000071fd40 R08: 0000000000000000 R09: 0000000100180009
    R10: ffffc9000071fd38 R11: ffffffff81110800 R12: ffff88006752d3d8
    R13: ffff88006752d3d8 R14: ffff88013a108040 R15: 000000000000000a
    FS:  0000000000000000(0000) GS:ffff88013fd80000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fa8ec1edb00 CR3: 0000000138ee8000 CR4: 00000000001406e0
    Call Trace:
     mempool_destroy.part.10+0x21/0x40
     mempool_destroy+0xe/0x10
     blk_exit_rl+0x12/0x20
     blkg_free+0x4d/0xa0
     __blkg_release_rcu+0x59/0x170
     rcu_process_callbacks+0x260/0x4e0
     __do_softirq+0x116/0x250
     smpboot_thread_fn+0x123/0x1e0
     kthread+0x109/0x140
     ret_from_fork+0x31/0x40
    
    Fixes: commit e9c787e65c0c ("scsi: allocate scsi_cmnd structures as part of struct request")
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 698aa7206722346059aca7a4a458b64c2bb795f6
Author: Matt Ranostay <matt.ranostay@konsulko.com>
Date:   Thu May 4 17:32:19 2017 -0700

    iio: proximity: as3935: fix iio_trigger_poll issue
    
    commit 9122b54f266ddee09654fe3fbc503c1a60f4a01c upstream.
    
    Using iio_trigger_poll() can oops when multiple interrupts
    happen before the first is handled.
    
    Use iio_trigger_poll_chained() instead and use the timestamp
    when processed, since it will be in theory be 2 ms max latency.
    
    Fixes: 24ddb0e4bba4 ("iio: Add AS3935 lightning sensor support")
    Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71c0950cd71a16448c4532b504f0ea4ca08bd5cb
Author: Matt Ranostay <matt.ranostay@konsulko.com>
Date:   Thu Apr 27 00:52:32 2017 -0700

    iio: proximity: as3935: fix AS3935_INT mask
    
    commit 275292d3a3d62670b1b13484707b74e5239b4bb0 upstream.
    
    AS3935 interrupt mask has been incorrect so valid lightning events
    would never trigger an buffer event. Also noise interrupt should be
    BIT(0).
    
    Fixes: 24ddb0e4bba4 ("iio: Add AS3935 lightning sensor support")
    Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b5d3c1a14543ffe0a5b336b1cee6b2b6e9839fe
Author: Marcin Niestroj <m.niestroj@grinn-global.com>
Date:   Thu May 18 09:12:06 2017 +0200

    iio: trigger: fix NULL pointer dereference in iio_trigger_write_current()
    
    commit 4eecbe81885180c9f6217ecfd679b1f285967218 upstream.
    
    In case oldtrig == trig == NULL (which happens when we set none
    trigger, when there is already none set) there is a NULL pointer
    dereference during iio_trigger_put(trig). Below is kernel output when
    this occurs:
    
    [   26.741790] Unable to handle kernel NULL pointer dereference at virtual address 00000000
    [   26.750179] pgd = cacc0000
    [   26.752936] [00000000] *pgd=8adc6835, *pte=00000000, *ppte=00000000
    [   26.759531] Internal error: Oops: 17 [#1] SMP ARM
    [   26.764261] Modules linked in: usb_f_ncm u_ether usb_f_acm u_serial usb_f_fs libcomposite configfs evbug
    [   26.773844] CPU: 0 PID: 152 Comm: synchro Not tainted 4.12.0-rc1 #2
    [   26.780128] Hardware name: Freescale i.MX6 Ultralite (Device Tree)
    [   26.786329] task: cb1de200 task.stack: cac92000
    [   26.790892] PC is at iio_trigger_write_current+0x188/0x1f4
    [   26.796403] LR is at lock_release+0xf8/0x20c
    [   26.800696] pc : [<c0736f34>]    lr : [<c016efb0>]    psr: 600d0013
    [   26.800696] sp : cac93e30  ip : cac93db0  fp : cac93e5c
    [   26.812193] r10: c0e64fe8  r9 : 00000000  r8 : 00000001
    [   26.817436] r7 : cb190810  r6 : 00000010  r5 : 00000001  r4 : 00000000
    [   26.823982] r3 : 00000000  r2 : 00000000  r1 : cb1de200  r0 : 00000000
    [   26.830528] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    [   26.837683] Control: 10c5387d  Table: 8acc006a  DAC: 00000051
    [   26.843448] Process synchro (pid: 152, stack limit = 0xcac92210)
    [   26.849475] Stack: (0xcac93e30 to 0xcac94000)
    [   26.853857] 3e20:                                     00000001 c0736dac c054033c cae6b680
    [   26.862060] 3e40: cae6b680 00000000 00000001 cb3f8610 cac93e74 cac93e60 c054035c c0736db8
    [   26.870264] 3e60: 00000001 c054033c cac93e94 cac93e78 c029bf34 c0540348 00000000 00000000
    [   26.878469] 3e80: cb3f8600 cae6b680 cac93ed4 cac93e98 c029b320 c029bef0 00000000 00000000
    [   26.886672] 3ea0: 00000000 cac93f78 cb2d41fc caed3280 c029b214 cac93f78 00000001 000e20f8
    [   26.894874] 3ec0: 00000001 00000000 cac93f44 cac93ed8 c0221dcc c029b220 c0e1ca39 cb2d41fc
    [   26.903079] 3ee0: cac93f04 cac93ef0 c0183ef0 c0183ab0 cb2d41fc 00000000 cac93f44 cac93f08
    [   26.911282] 3f00: c0225eec c0183ebc 00000001 00000000 c0223728 00000000 c0245454 00000001
    [   26.919485] 3f20: 00000001 caed3280 000e20f8 cac93f78 000e20f8 00000001 cac93f74 cac93f48
    [   26.927690] 3f40: c0223680 c0221da4 c0246520 c0245460 caed3283 caed3280 00000000 00000000
    [   26.935893] 3f60: 000e20f8 00000001 cac93fa4 cac93f78 c0224520 c02235e4 00000000 00000000
    [   26.944096] 3f80: 00000001 000e20f8 00000001 00000004 c0107f84 cac92000 00000000 cac93fa8
    [   26.952299] 3fa0: c0107de0 c02244e8 00000001 000e20f8 0000000e 000e20f8 00000001 fbad2484
    [   26.960502] 3fc0: 00000001 000e20f8 00000001 00000004 beb6b698 00064260 0006421c beb6b4b4
    [   26.968705] 3fe0: 00000000 beb6b450 b6f219a0 b6e2f268 800d0010 0000000e cac93ff4 cac93ffc
    [   26.976896] Backtrace:
    [   26.979388] [<c0736dac>] (iio_trigger_write_current) from [<c054035c>] (dev_attr_store+0x20/0x2c)
    [   26.988289]  r10:cb3f8610 r9:00000001 r8:00000000 r7:cae6b680 r6:cae6b680 r5:c054033c
    [   26.996138]  r4:c0736dac r3:00000001
    [   26.999747] [<c054033c>] (dev_attr_store) from [<c029bf34>] (sysfs_kf_write+0x50/0x54)
    [   27.007686]  r5:c054033c r4:00000001
    [   27.011290] [<c029bee4>] (sysfs_kf_write) from [<c029b320>] (kernfs_fop_write+0x10c/0x224)
    [   27.019579]  r7:cae6b680 r6:cb3f8600 r5:00000000 r4:00000000
    [   27.025271] [<c029b214>] (kernfs_fop_write) from [<c0221dcc>] (__vfs_write+0x34/0x120)
    [   27.033214]  r10:00000000 r9:00000001 r8:000e20f8 r7:00000001 r6:cac93f78 r5:c029b214
    [   27.041059]  r4:caed3280
    [   27.043622] [<c0221d98>] (__vfs_write) from [<c0223680>] (vfs_write+0xa8/0x170)
    [   27.050959]  r9:00000001 r8:000e20f8 r7:cac93f78 r6:000e20f8 r5:caed3280 r4:00000001
    [   27.058731] [<c02235d8>] (vfs_write) from [<c0224520>] (SyS_write+0x44/0x98)
    [   27.065806]  r9:00000001 r8:000e20f8 r7:00000000 r6:00000000 r5:caed3280 r4:caed3283
    [   27.073582] [<c02244dc>] (SyS_write) from [<c0107de0>] (ret_fast_syscall+0x0/0x1c)
    [   27.081179]  r9:cac92000 r8:c0107f84 r7:00000004 r6:00000001 r5:000e20f8 r4:00000001
    [   27.088947] Code: 1a000009 e1a04009 e3a06010 e1a05008 (e5943000)
    [   27.095244] ---[ end trace 06d1dab86d6e6bab ]---
    
    To fix that problem call iio_trigger_put(trig) only when trig is not
    NULL.
    
    Fixes: d5d24bcc0a10 ("iio: trigger: close race condition in acquiring trigger reference")
    Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80c8ac6b9bc0b78b08ca79745e7a8efd87fe1f41
Author: Franziska Naepelt <franziska.naepelt@idt.com>
Date:   Wed May 17 12:41:19 2017 +0200

    iio: light: ltr501 Fix interchanged als/ps register field
    
    commit 7cc3bff4efe6164a0c8163331c8aa55454799f42 upstream.
    
    The register mapping for the IIO driver for the Liteon Light and Proximity
    sensor LTR501 interrupt mode is interchanged (ALS/PS).
    There is a register called INTERRUPT register (address 0x8F)
    Bit 0 represents PS measurement trigger.
    Bit 1 represents ALS measurement trigger.
    This two bit fields are interchanged within the driver.
    see datasheet page 24:
    http://optoelectronics.liteon.com/upload/download/DS86-2012-0006/S_110_LTR-501ALS-01_PrelimDS_ver1%5B1%5D.pdf
    
    Signed-off-by: Franziska Naepelt <franziska.naepelt@idt.com>
    Fixes: 7ac702b3144b6 ("iio: ltr501: Add interrupt support")
    Acked-by: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1cb7bbe7b56a03de2e2868eb136ab3299d1af4f2
Author: Raveendra Padasalagi <raveendra.padasalagi@broadcom.com>
Date:   Tue May 16 12:22:42 2017 +0530

    iio: adc: bcm_iproc_adc: swap primary and secondary isr handler's
    
    commit f7d86ecf83cb66d3c4c6ac4edb1dd50c0919aa2b upstream.
    
    The third argument of devm_request_threaded_irq() is the primary
    handler. It is called in hardirq context and checks whether the
    interrupt is relevant to the device. If the primary handler returns
    IRQ_WAKE_THREAD, the secondary handler (a.k.a. handler thread) is
    scheduled to run in process context.
    
    bcm_iproc_adc.c uses the secondary handler as the primary one
    and the other way around. So this patch fixes the same, along with
    re-naming the secondary handler and primary handler names properly.
    
    Tested on the BCM9583XX iProc SoC based boards.
    
    Fixes: 4324c97ecedc ("iio: Add driver for Broadcom iproc-static-adc")
    Reported-by: Pavel Roskin <plroskin@gmail.com>
    Signed-off-by: Raveendra Padasalagi <raveendra.padasalagi@broadcom.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9b0c955852374d6fc88e424780281623fb39c4c
Author: Oleg Drokin <green@linuxhacker.ru>
Date:   Fri May 26 23:40:33 2017 -0400

    staging/lustre/lov: remove set_fs() call from lov_getstripe()
    
    commit 0a33252e060e97ed3fbdcec9517672f1e91aaef3 upstream.
    
    lov_getstripe() calls set_fs(KERNEL_DS) so that it can handle a struct
    lov_user_md pointer from user- or kernel-space.  This changes the
    behavior of copy_from_user() on SPARC and may result in a misaligned
    access exception which in turn oopses the kernel.  In fact the
    relevant argument to lov_getstripe() is never called with a
    kernel-space pointer and so changing the address limits is unnecessary
    and so we remove the calls to save, set, and restore the address
    limits.
    
    Signed-off-by: John L. Hammond <john.hammond@intel.com>
    Reviewed-on: http://review.whamcloud.com/6150
    Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3221
    Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
    Reviewed-by: Li Wei <wei.g.li@intel.com>
    Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd8980bb03d4c12533b556a2ae3f961504876d61
Author: Michael Thalmeier <michael.thalmeier@hale.at>
Date:   Thu May 18 16:14:14 2017 +0200

    usb: chipidea: debug: check before accessing ci_role
    
    commit 0340ff83cd4475261e7474033a381bc125b45244 upstream.
    
    ci_role BUGs when the role is >= CI_ROLE_END.
    
    Signed-off-by: Michael Thalmeier <michael.thalmeier@hale.at>
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2967b72b6653ac81949d9b0a970a273a3137f69
Author: Jisheng Zhang <jszhang@marvell.com>
Date:   Mon Apr 24 12:35:51 2017 +0000

    usb: chipidea: udc: fix NULL pointer dereference if udc_start failed
    
    commit aa1f058d7d9244423b8c5a75b9484b1115df7f02 upstream.
    
    Fix below NULL pointer dereference. we set ci->roles[CI_ROLE_GADGET]
    too early in ci_hdrc_gadget_init(), if udc_start() fails due to some
    reason, the ci->roles[CI_ROLE_GADGET] check in  ci_hdrc_gadget_destroy
    can't protect us.
    
    We fix this issue by only setting ci->roles[CI_ROLE_GADGET] if
    udc_start() succeed.
    
    [    1.398550] Unable to handle kernel NULL pointer dereference at
    virtual address 00000000
    ...
    [    1.448600] PC is at dma_pool_free+0xb8/0xf0
    [    1.453012] LR is at dma_pool_free+0x28/0xf0
    [    2.113369] [<ffffff80081817d8>] dma_pool_free+0xb8/0xf0
    [    2.118857] [<ffffff800841209c>] destroy_eps+0x4c/0x68
    [    2.124165] [<ffffff8008413770>] ci_hdrc_gadget_destroy+0x28/0x50
    [    2.130461] [<ffffff800840fa30>] ci_hdrc_probe+0x588/0x7e8
    [    2.136129] [<ffffff8008380fb8>] platform_drv_probe+0x50/0xb8
    [    2.142066] [<ffffff800837f494>] driver_probe_device+0x1fc/0x2a8
    [    2.148270] [<ffffff800837f68c>] __device_attach_driver+0x9c/0xf8
    [    2.154563] [<ffffff800837d570>] bus_for_each_drv+0x58/0x98
    [    2.160317] [<ffffff800837f174>] __device_attach+0xc4/0x138
    [    2.166072] [<ffffff800837f738>] device_initial_probe+0x10/0x18
    [    2.172185] [<ffffff800837e58c>] bus_probe_device+0x94/0xa0
    [    2.177940] [<ffffff800837c560>] device_add+0x3f0/0x560
    [    2.183337] [<ffffff8008380d20>] platform_device_add+0x180/0x240
    [    2.189541] [<ffffff800840f0e8>] ci_hdrc_add_device+0x440/0x4f8
    [    2.195654] [<ffffff8008414194>] ci_hdrc_usb2_probe+0x13c/0x2d8
    [    2.201769] [<ffffff8008380fb8>] platform_drv_probe+0x50/0xb8
    [    2.207705] [<ffffff800837f494>] driver_probe_device+0x1fc/0x2a8
    [    2.213910] [<ffffff800837f5ec>] __driver_attach+0xac/0xb0
    [    2.219575] [<ffffff800837d4b0>] bus_for_each_dev+0x60/0xa0
    [    2.225329] [<ffffff800837ec80>] driver_attach+0x20/0x28
    [    2.230816] [<ffffff800837e880>] bus_add_driver+0x1d0/0x238
    [    2.236571] [<ffffff800837fdb0>] driver_register+0x60/0xf8
    [    2.242237] [<ffffff8008380ef4>] __platform_driver_register+0x44/0x50
    [    2.248891] [<ffffff80086fd440>] ci_hdrc_usb2_driver_init+0x18/0x20
    [    2.255365] [<ffffff8008082950>] do_one_initcall+0x38/0x128
    [    2.261121] [<ffffff80086e0d00>] kernel_init_freeable+0x1ac/0x250
    [    2.267414] [<ffffff800852f0b8>] kernel_init+0x10/0x100
    [    2.272810] [<ffffff8008082680>] ret_from_fork+0x10/0x50
    
    Fixes: 3f124d233e97 ("usb: chipidea: add role init and destroy APIs")
    Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f26ac1fc9fbb718746f2d3b494d964574d902bf1
Author: Andrey Smirnov <andrew.smirnov@gmail.com>
Date:   Mon May 15 06:48:58 2017 -0700

    usb: chipidea: imx: Do not access CLKONOFF on i.MX51
    
    commit 62b97d502bb76c6e8d589e42e02bfcb7bdff0453 upstream.
    
    Unlike i.MX53, i.MX51's USBOH3 register file does not implemenent
    registers past offset 0x018, which includes
    MX53_USB_CLKONOFF_CTRL_OFFSET and trying to access that register on
    said platform results in external abort.
    
    Fix it by enabling CLKONOFF accessing codepath only for i.MX53.
    
    Fixes 3be3251db088 ("usb: chipidea: imx: Disable internal 60Mhz clock with ULPI PHY")
    Cc: cphealy@gmail.com
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: linux-usb@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b89de0406a1a17d478b34976d6b1d4b2a1cca559
Author: Bin Liu <b-liu@ti.com>
Date:   Thu May 25 13:42:39 2017 -0500

    usb: musb: dsps: keep VBUS on for host-only mode
    
    commit b3addcf0d1f04f53fcc302577d5a5e964c18531a upstream.
    
    Currently VBUS is turned off while a usb device is detached, and turned
    on again by the polling routine. This short period VBUS loss prevents
    usb modem to switch mode.
    
    VBUS should be constantly on for host-only mode, so this changes the
    driver to not turn off VBUS for host-only mode.
    
    Fixes: 2f3fd2c5bde1 ("usb: musb: Prepare dsps glue layer for PM runtime support")
    Reported-by: Moreno Bartalucci <moreno.bartalucci@tecnorama.it>
    Acked-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c33b087c83e7fa77e7c5d6e4be3ca4b7ed8981d1
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Thu May 11 17:26:48 2017 -0700

    usb: gadget: f_mass_storage: Serialize wake and sleep execution
    
    commit dc9217b69dd6089dcfeb86ed4b3c671504326087 upstream.
    
    f_mass_storage has a memorry barrier issue with the sleep and wake
    functions that can cause a deadlock. This results in intermittent hangs
    during MSC file transfer. The host will reset the device after receiving
    no response to resume the transfer. This issue is seen when dwc3 is
    processing 2 transfer-in-progress events at the same time, invoking
    completion handlers for CSW and CBW. Also this issue occurs depending on
    the system timing and latency.
    
    To increase the chance to hit this issue, you can force dwc3 driver to
    wait and process those 2 events at once by adding a small delay (~100us)
    in dwc3_check_event_buf() whenever the request is for CSW and read the
    event count again. Avoid debugging with printk and ftrace as extra
    delays and memory barrier will mask this issue.
    
    Scenario which can lead to failure:
    -----------------------------------
    1) The main thread sleeps and waits for the next command in
       get_next_command().
    2) bulk_in_complete() wakes up main thread for CSW.
    3) bulk_out_complete() tries to wake up the running main thread for CBW.
    4) thread_wakeup_needed is not loaded with correct value in
       sleep_thread().
    5) Main thread goes to sleep again.
    
    The pattern is shown below. Note the 2 critical variables.
     * common->thread_wakeup_needed
     * bh->state
    
            CPU 0 (sleep_thread)            CPU 1 (wakeup_thread)
            ==============================  ===============================
    
                                            bh->state = BH_STATE_FULL;
                                            smp_wmb();
            thread_wakeup_needed = 0;       thread_wakeup_needed = 1;
            smp_rmb();
            if (bh->state != BH_STATE_FULL)
                    sleep again ...
    
    As pointed out by Alan Stern, this is an R-pattern issue. The issue can
    be seen when there are two wakeups in quick succession. The
    thread_wakeup_needed can be overwritten in sleep_thread, and the read of
    the bh->state maybe reordered before the write to thread_wakeup_needed.
    
    This patch applies full memory barrier smp_mb() in both sleep_thread()
    and wakeup_thread() to ensure the order which the thread_wakeup_needed
    and bh->state are written and loaded.
    
    However, a better solution in the future would be to use wait_queue
    method that takes care of managing memory barrier between waker and
    waiter.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d7ba52b5f2fd46c88b8f8afcebbc186684f35dc
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Jun 1 13:54:30 2017 +0200

    drm: Fix oops + Xserver hang when unplugging USB drm devices
    
    commit 75fb636324a839c2c31be9f81644034c6142e469 upstream.
    
    commit a39be606f99d ("drm: Do a full device unregister when unplugging")
    causes backtraces like this one when unplugging an usb drm device while
    it is in use:
    
    usb 2-3: USB disconnect, device number 25
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 242 at drivers/gpu/drm/drm_mode_config.c:424
       drm_mode_config_cleanup+0x220/0x280 [drm]
    ...
    RIP: 0010:drm_mode_config_cleanup+0x220/0x280 [drm]
    ...
    Call Trace:
     gm12u320_modeset_cleanup+0xe/0x10 [gm12u320]
     gm12u320_driver_unload+0x35/0x70 [gm12u320]
     drm_dev_unregister+0x3c/0xe0 [drm]
     drm_unplug_dev+0x12/0x60 [drm]
     gm12u320_usb_disconnect+0x36/0x40 [gm12u320]
     usb_unbind_interface+0x72/0x280
     device_release_driver_internal+0x158/0x210
     device_release_driver+0x12/0x20
     bus_remove_device+0x104/0x180
     device_del+0x1d2/0x350
     usb_disable_device+0x9f/0x270
     usb_disconnect+0xc6/0x260
    ...
    [drm:drm_mode_config_cleanup [drm]] *ERROR* connector Unknown-1 leaked!
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 242 at drivers/gpu/drm/drm_mode_config.c:458
       drm_mode_config_cleanup+0x268/0x280 [drm]
    ...
    <same Call Trace>
    ---[ end trace 80df975dae439ed6 ]---
    general protection fault: 0000 [#1] SMP
    ...
    Call Trace:
     ? __switch_to+0x225/0x450
     drm_mode_rmfb_work_fn+0x55/0x70 [drm]
     process_one_work+0x193/0x3c0
     worker_thread+0x4a/0x3a0
    ...
    RIP: drm_framebuffer_remove+0x62/0x3f0 [drm] RSP: ffffb776c39dfd98
    ---[ end trace 80df975dae439ed7 ]---
    
    After which the system is unusable this is caused by drm_dev_unregister
    getting called immediately on unplug, which calls the drivers unload
    function which calls drm_mode_config_cleanup which removes the framebuffer
    object while userspace is still holding a reference to it.
    
    Reverting commit a39be606f99d ("drm: Do a full device unregister
    when unplugging") leads to the following oops on unplug instead,
    when userspace closes the last fd referencing the drm_dev:
    
    sysfs group 'power' not found for kobject 'card1-Unknown-1'
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 2459 at fs/sysfs/group.c:237
       sysfs_remove_group+0x80/0x90
    ...
    RIP: 0010:sysfs_remove_group+0x80/0x90
    ...
    Call Trace:
     dpm_sysfs_remove+0x57/0x60
     device_del+0xfd/0x350
     device_unregister+0x1a/0x60
     drm_sysfs_connector_remove+0x39/0x50 [drm]
     drm_connector_unregister+0x5a/0x70 [drm]
     drm_connector_unregister_all+0x45/0xa0 [drm]
     drm_modeset_unregister_all+0x12/0x30 [drm]
     drm_dev_unregister+0xca/0xe0 [drm]
     drm_put_dev+0x32/0x60 [drm]
     drm_release+0x2f3/0x380 [drm]
     __fput+0xdf/0x1e0
    ...
    ---[ end trace ecfb91ac85688bbe ]---
    BUG: unable to handle kernel NULL pointer dereference at 00000000000000a8
    IP: down_write+0x1f/0x40
    ...
    Call Trace:
     debugfs_remove_recursive+0x55/0x1b0
     drm_debugfs_connector_remove+0x21/0x40 [drm]
     drm_connector_unregister+0x62/0x70 [drm]
     drm_connector_unregister_all+0x45/0xa0 [drm]
     drm_modeset_unregister_all+0x12/0x30 [drm]
     drm_dev_unregister+0xca/0xe0 [drm]
     drm_put_dev+0x32/0x60 [drm]
     drm_release+0x2f3/0x380 [drm]
     __fput+0xdf/0x1e0
    ...
    ---[ end trace ecfb91ac85688bbf ]---
    
    This is caused by the revert moving back to drm_unplug_dev calling
    drm_minor_unregister which does:
    
            device_del(minor->kdev);
            dev_set_drvdata(minor->kdev, NULL); /* safety belt */
            drm_debugfs_cleanup(minor);
    
    Causing the sysfs entries to already be removed even though we still
    have references to them in e.g. drm_connector.
    
    Note we must call drm_minor_unregister to notify userspace of the unplug
    of the device, so calling drm_dev_unregister is not completely wrong the
    problem is that drm_dev_unregister does too much.
    
    This commit fixes drm_unplug_dev by not only reverting
    commit a39be606f99d ("drm: Do a full device unregister when unplugging")
    but by also adding a call to drm_modeset_unregister_all before the
    drm_minor_unregister calls to make sure all sysfs entries are removed
    before calling device_del(minor->kdev) thereby also fixing the second
    set of oopses caused by just reverting the commit.
    
    Fixes: a39be606f99d ("drm: Do a full device unregister when unplugging")
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Jeffy <jeffy.chen@rock-chips.com>
    Cc: Marco Diego Aurélio Mesquita <marcodiegomesquita@gmail.com>
    Reported-by: Marco Diego Aurélio Mesquita <marcodiegomesquita@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Sean Paul <seanpaul@chromium.org>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170601115430.4113-1-hdegoede@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de8f4aeaa167d82363e7ca56b512919119cd80d4
Author: Jan Kara <jack@suse.cz>
Date:   Mon May 29 13:24:55 2017 -0400

    ext4: fix fdatasync(2) after extent manipulation operations
    
    commit 67a7d5f561f469ad2fa5154d2888258ab8e6df7c upstream.
    
    Currently, extent manipulation operations such as hole punch, range
    zeroing, or extent shifting do not record the fact that file data has
    changed and thus fdatasync(2) has a work to do. As a result if we crash
    e.g. after a punch hole and fdatasync, user can still possibly see the
    punched out data after journal replay. Test generic/392 fails due to
    these problems.
    
    Fix the problem by properly marking that file data has changed in these
    operations.
    
    Fixes: a4bb6b64e39abc0e41ca077725f2a72c868e7622
    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 875d084e9798c47adc61be262ba3103d0afb23f9
Author: Jan Kara <jack@suse.cz>
Date:   Fri May 26 17:40:52 2017 -0400

    ext4: fix data corruption with EXT4_GET_BLOCKS_ZERO
    
    commit 4f8caa60a5a13a78f26198618f21774bd6aa6498 upstream.
    
    When ext4_map_blocks() is called with EXT4_GET_BLOCKS_ZERO to zero-out
    allocated blocks and these blocks are actually converted from unwritten
    extent the following race can happen:
    
    CPU0                                    CPU1
    
    page fault                              page fault
    ...                                     ...
    ext4_map_blocks()
      ext4_ext_map_blocks()
        ext4_ext_handle_unwritten_extents()
          ext4_ext_convert_to_initialized()
            - zero out converted extent
            ext4_zeroout_es()
              - inserts extent as initialized in status tree
    
                                            ext4_map_blocks()
                                              ext4_es_lookup_extent()
                                                - finds initialized extent
                                            write data
      ext4_issue_zeroout()
        - zeroes out new extent overwriting data
    
    This problem can be reproduced by generic/340 for the fallocated case
    for the last block in the file.
    
    Fix the problem by avoiding zeroing out the area we are mapping with
    ext4_map_blocks() in ext4_ext_convert_to_initialized(). It is pointless
    to zero out this area in the first place as the caller asked us to
    convert the area to initialized because he is just going to write data
    there before the transaction finishes. To achieve this we delete the
    special case of zeroing out full extent as that will be handled by the
    cases below zeroing only the part of the extent that needs it. We also
    instruct ext4_split_extent() that the middle of extent being split
    contains data so that ext4_split_extent_at() cannot zero out full extent
    in case of ENOSPC.
    
    Fixes: 12735f881952c32b31bc4e433768f18489f79ec9
    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 22fb074c671326be62ad71b79b9deddaf7cf2945
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Sun May 21 22:36:23 2017 -0400

    ext4: keep existing extra fields when inode expands
    
    commit 887a9730614727c4fff7cb756711b190593fc1df upstream.
    
    ext4_expand_extra_isize() should clear only space between old and new
    size.
    
    Fixes: 6dd4ee7cab7e # v2.6.23
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 699dc1080db32e1373c36965125f5b8c68fafd88
Author: Jan Kara <jack@suse.cz>
Date:   Sun May 21 22:33:23 2017 -0400

    ext4: fix SEEK_HOLE
    
    commit 7d95eddf313c88b24f99d4ca9c2411a4b82fef33 upstream.
    
    Currently, SEEK_HOLE implementation in ext4 may both return that there's
    a hole at some offset although that offset already has data and skip
    some holes during a search for the next hole. The first problem is
    demostrated by:
    
    xfs_io -c "falloc 0 256k" -c "pwrite 0 56k" -c "seek -h 0" file
    wrote 57344/57344 bytes at offset 0
    56 KiB, 14 ops; 0.0000 sec (2.054 GiB/sec and 538461.5385 ops/sec)
    Whence  Result
    HOLE    0
    
    Where we can see that SEEK_HOLE wrongly returned offset 0 as containing
    a hole although we have written data there. The second problem can be
    demonstrated by:
    
    xfs_io -c "falloc 0 256k" -c "pwrite 0 56k" -c "pwrite 128k 8k"
           -c "seek -h 0" file
    
    wrote 57344/57344 bytes at offset 0
    56 KiB, 14 ops; 0.0000 sec (1.978 GiB/sec and 518518.5185 ops/sec)
    wrote 8192/8192 bytes at offset 131072
    8 KiB, 2 ops; 0.0000 sec (2 GiB/sec and 500000.0000 ops/sec)
    Whence  Result
    HOLE    139264
    
    Where we can see that hole at offsets 56k..128k has been ignored by the
    SEEK_HOLE call.
    
    The underlying problem is in the ext4_find_unwritten_pgoff() which is
    just buggy. In some cases it fails to update returned offset when it
    finds a hole (when no pages are found or when the first found page has
    higher index than expected), in some cases conditions for detecting hole
    are just missing (we fail to detect a situation where indices of
    returned pages are not contiguous).
    
    Fix ext4_find_unwritten_pgoff() to properly detect non-contiguous page
    indices and also handle all cases where we got less pages then expected
    in one place and handle it properly there.
    
    Fixes: c8c0df241cc2719b1262e627f999638411934f60
    CC: Zheng Liu <wenqing.lz@taobao.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 628ee504589528aad7eb90353c00b52adafa3bb2
Author: Julien Grall <julien.grall@arm.com>
Date:   Wed May 31 14:03:57 2017 +0100

    xen/privcmd: Support correctly 64KB page granularity when mapping memory
    
    commit 753c09b5652bb4fe53e2db648002ec64b32b8827 upstream.
    
    Commit 5995a68 "xen/privcmd: Add support for Linux 64KB page granularity" did
    not go far enough to support 64KB in mmap_batch_fn.
    
    The variable 'nr' is the number of 4KB chunk to map. However, when Linux
    is using 64KB page granularity the array of pages (vma->vm_private_data)
    contain one page per 64KB. Fix it by incrementing st->index correctly.
    
    Furthermore, st->va is not correctly incremented as PAGE_SIZE !=
    XEN_PAGE_SIZE.
    
    Fixes: 5995a68 ("xen/privcmd: Add support for Linux 64KB page granularity")
    Reported-by: Feng Kan <fkan@apm.com>
    Signed-off-by: Julien Grall <julien.grall@arm.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9d013c005551194a00edaf269be02f9945c694c
Author: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
Date:   Fri May 12 17:34:01 2017 +0200

    mtd: nand: tango: Update ecc_stats.corrected
    
    commit 60cf0ce14b09b54e7ee79dc3ef498de6ef0e41e9 upstream.
    
    According to Boris, some user-space tools expect MTD drivers to
    update ecc_stats.corrected, and it's better to provide a lower
    bound than to provide no information at all.
    
    Fixes: 6956e2385a16 ("mtd: nand: add tango NAND flash controller support")
    Reported-by: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d916021a189921c97c64feb641f9c7f60329f26
Author: Andres Galacho <andresgalacho@gmail.com>
Date:   Mon May 1 16:30:15 2017 -0400

    mtd: nand: tango: Export OF device ID table as module aliases
    
    commit 2761b4f12b017f6d3e5add386733a700a490df47 upstream.
    
    The device table is required to load modules based on
    modaliases. After adding MODULE_DEVICE_TABLE, below entries
    for example will be added to module.alias:
    alias:          of:N*T*Csigma,smp8758-nandC*
    alias:          of:N*T*Csigma,smp8758-nand
    
    Fixes: 6956e2385a16 ("mtd: nand: add tango NAND flash controller support")
    Signed-off-by: Andres Galacho <andresgalacho@gmail.com>
    Acked-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0aa7a0415dcde49767688ad194bc8f4abad18fc
Author: Jan Kara <jack@suse.cz>
Date:   Tue May 2 13:16:18 2017 +0200

    reiserfs: Make flush bios explicitely sync
    
    commit d8747d642ec4ce96adf17ae35652a5e4015cfe02 upstream.
    
    Commit b685d3d65ac7 "block: treat REQ_FUA and REQ_PREFLUSH as
    synchronous" removed REQ_SYNC flag from WRITE_{FUA|PREFLUSH|...}
    definitions.  generic_make_request_checks() however strips REQ_FUA and
    REQ_PREFLUSH flags from a bio when the storage doesn't report volatile
    write cache and thus write effectively becomes asynchronous which can
    lead to performance regressions
    
    Fix the problem by making sure all bios which are synchronous are
    properly marked with REQ_SYNC.
    
    Fixes: b685d3d65ac791406e0dfd8779cc9b3707fea5a3
    CC: reiserfs-devel@vger.kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2fee0c4cd060ea0da0f363c7b6b943dc754f54d
Author: Hou Tao <houtao1@huawei.com>
Date:   Wed Mar 1 09:02:33 2017 +0800

    cfq-iosched: fix the delay of cfq_group's vdisktime under iops mode
    
    commit 5be6b75610cefd1e21b98a218211922c2feb6e08 upstream.
    
    When adding a cfq_group into the cfq service tree, we use CFQ_IDLE_DELAY
    as the delay of cfq_group's vdisktime if there have been other cfq_groups
    already.
    
    When cfq is under iops mode, commit 9a7f38c42c2b ("cfq-iosched: Convert
    from jiffies to nanoseconds") could result in a large iops delay and
    lead to an abnormal io schedule delay for the added cfq_group. To fix
    it, we just need to revert to the old CFQ_IDLE_DELAY value: HZ / 5
    when iops mode is enabled.
    
    Despite having the same value, the delay of a cfq_queue in idle class
    and the delay of cfq_group are different things, so I define two new
    macros for the delay of a cfq_group under time-slice mode and iops mode.
    
    Fixes: 9a7f38c42c2b ("cfq-iosched: Convert from jiffies to nanoseconds")
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Acked-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 067b131e20e73ae190374a4ff646d76654e3711f
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Fri May 5 11:57:50 2017 +0200

    dmaengine: mv_xor_v2: set DMA mask to 40 bits
    
    commit b2d3c270f9f2fb82518ac500a9849c3aaf503852 upstream.
    
    The XORv2 engine on Armada 7K/8K can only access the first 40 bits of
    the physical address space, so the DMA mask must be set accordingly.
    
    Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d41a85b296379b4dfb6fc30cb266bc048269da0
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Fri May 5 11:57:49 2017 +0200

    dmaengine: mv_xor_v2: remove interrupt coalescing
    
    commit 9dd4f319bac25334a869d9276b19eac9e478fd33 upstream.
    
    The current implementation of interrupt coalescing doesn't work, because
    it doesn't configure the coalescing timer, which is needed to make sure
    we get an interrupt at some point.
    
    As a fix for stable, we simply remove the interrupt coalescing
    functionality. It will be re-introduced properly in a future commit.
    
    Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f4c739de94e6a29a1e0ae2cacb251ec60b93260
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Fri May 5 11:57:48 2017 +0200

    dmaengine: mv_xor_v2: fix tx_submit() implementation
    
    commit 44d5887a8bf1e86915c8ff647337cb138149da82 upstream.
    
    The mv_xor_v2_tx_submit() gets the next available HW descriptor by
    calling mv_xor_v2_get_desq_write_ptr(), which reads a HW register
    telling the next available HW descriptor. This was working fine when HW
    descriptors were issued for processing directly in tx_submit().
    
    However, as part of the review process of the driver, a change was
    requested to move the actual kick-off of HW descriptors processing to
    ->issue_pending(). Due to this, reading the HW register to know the next
    available HW descriptor no longer works.
    
    So instead of using this HW register, we implemented a software index
    pointing to the next available HW descriptor.
    
    Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4634dfb7c357f45b386d442150d9f76a2f74a93
Author: Hanna Hawa <hannah@marvell.com>
Date:   Fri May 5 11:57:47 2017 +0200

    dmaengine: mv_xor_v2: enable XOR engine after its configuration
    
    commit ab2c5f0a77fe49bdb6e307b397496373cb47d2c2 upstream.
    
    The engine was enabled prior to its configuration, which isn't
    correct. This patch relocates the activation of the XOR engine, to be
    after the configuration of the XOR engine.
    
    Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
    Signed-off-by: Hanna Hawa <hannah@marvell.com>
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cba2cd6df422255ea66a98e71c55d206709fbd5f
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Fri May 5 11:57:46 2017 +0200

    dmaengine: mv_xor_v2: do not use descriptors not acked by async_tx
    
    commit bc473da1ed726c975ad47f8d7d27631de11356d8 upstream.
    
    Descriptors that have not been acknowledged by the async_tx layer
    should not be re-used, so this commit adjusts the implementation of
    mv_xor_v2_prep_sw_desc() to skip descriptors for which
    async_tx_test_ack() is false.
    
    Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2384df2bfe4e7dcce9a1bd77390daba0a23a67b9
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Fri May 5 11:57:45 2017 +0200

    dmaengine: mv_xor_v2: properly handle wrapping in the array of HW descriptors
    
    commit 2aab4e18152cd30cb5d2f4c27629fc8a04aed979 upstream.
    
    mv_xor_v2_tasklet() is looping over completed HW descriptors. Before the
    loop, it initializes 'next_pending_hw_desc' to the first HW descriptor
    to handle, and then the loop simply increments this point, without
    taking care of wrapping when we reach the last HW descriptor. The
    'pending_ptr' index was being wrapped back to 0 at the end, but it
    wasn't used in each iteration of the loop to calculate
    next_pending_hw_desc.
    
    This commit fixes that, and makes next_pending_hw_desc a variable local
    to the loop itself.
    
    Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fdcadb5f70c7666d3f1751e4760791b3162280a5
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Fri May 5 11:57:44 2017 +0200

    dmaengine: mv_xor_v2: handle mv_xor_v2_prep_sw_desc() error properly
    
    commit eb8df543e444492328f506adffc7dfe94111f1bd upstream.
    
    The mv_xor_v2_prep_sw_desc() is called from a few different places in
    the driver, but we never take into account the fact that it might
    return NULL. This commit fixes that, ensuring that we don't panic if
    there are no more descriptors available.
    
    Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c039176bc48ebf69147fa1efe7c5d15538cc222
Author: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Date:   Mon May 22 16:05:23 2017 +0200

    dmaengine: ep93xx: Don't drain the transfers in terminate_all()
    
    commit 98f9de366fccee7572c646af226b2d4b4841e3b5 upstream.
    
    Draining the transfers in terminate_all callback happens with IRQs disabled,
    therefore induces huge latency:
    
     irqsoff latency trace v1.1.5 on 4.11.0
     --------------------------------------------------------------------
     latency: 39770 us, #57/57, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0)
        -----------------
        | task: process-129 (uid:0 nice:0 policy:2 rt_prio:50)
        -----------------
      => started at: _snd_pcm_stream_lock_irqsave
      => ended at:   snd_pcm_stream_unlock_irqrestore
    
                      _------=> CPU#
                     / _-----=> irqs-off
                    | / _----=> need-resched
                    || / _---=> hardirq/softirq
                    ||| / _--=> preempt-depth
                    |||| /     delay
      cmd     pid   ||||| time  |   caller
         \   /      |||||  \    |   /
    process-129     0d.s.    3us : _snd_pcm_stream_lock_irqsave
    process-129     0d.s1    9us : snd_pcm_stream_lock <-_snd_pcm_stream_lock_irqsave
    process-129     0d.s1   15us : preempt_count_add <-snd_pcm_stream_lock
    process-129     0d.s2   22us : preempt_count_add <-snd_pcm_stream_lock
    process-129     0d.s3   32us : snd_pcm_update_hw_ptr0 <-snd_pcm_period_elapsed
    process-129     0d.s3   41us : soc_pcm_pointer <-snd_pcm_update_hw_ptr0
    process-129     0d.s3   50us : dmaengine_pcm_pointer <-soc_pcm_pointer
    process-129     0d.s3   58us+: snd_dmaengine_pcm_pointer_no_residue <-dmaengine_pcm_pointer
    process-129     0d.s3   96us : update_audio_tstamp <-snd_pcm_update_hw_ptr0
    process-129     0d.s3  103us : snd_pcm_update_state <-snd_pcm_update_hw_ptr0
    process-129     0d.s3  112us : xrun <-snd_pcm_update_state
    process-129     0d.s3  119us : snd_pcm_stop <-xrun
    process-129     0d.s3  126us : snd_pcm_action <-snd_pcm_stop
    process-129     0d.s3  134us : snd_pcm_action_single <-snd_pcm_action
    process-129     0d.s3  141us : snd_pcm_pre_stop <-snd_pcm_action_single
    process-129     0d.s3  150us : snd_pcm_do_stop <-snd_pcm_action_single
    process-129     0d.s3  157us : soc_pcm_trigger <-snd_pcm_do_stop
    process-129     0d.s3  166us : snd_dmaengine_pcm_trigger <-soc_pcm_trigger
    process-129     0d.s3  175us : ep93xx_dma_terminate_all <-snd_dmaengine_pcm_trigger
    process-129     0d.s3  182us : preempt_count_add <-ep93xx_dma_terminate_all
    process-129     0d.s4  189us*: m2p_hw_shutdown <-ep93xx_dma_terminate_all
    process-129     0d.s4 39472us : m2p_hw_setup <-ep93xx_dma_terminate_all
    
     ... rest skipped...
    
    process-129     0d.s. 40080us : <stack trace>
     => ep93xx_dma_tasklet
     => tasklet_action
     => __do_softirq
     => irq_exit
     => __handle_domain_irq
     => vic_handle_irq
     => __irq_usr
     => 0xb66c6668
    
    Just abort the transfers and warn if the HW state is not what we expect.
    Move draining into device_synchronize callback.
    
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81a38a595dbc788c4ab1685a2cd18508741cbe9c
Author: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Date:   Mon May 22 16:05:22 2017 +0200

    dmaengine: ep93xx: Always start from BASE0
    
    commit 0037ae47812b1f431cc602100d1d51f37d77b61e upstream.
    
    The current buffer is being reset to zero on device_free_chan_resources()
    but not on device_terminate_all(). It could happen that HW is restarted and
    expects BASE0 to be used, but the driver is not synchronized and will start
    from BASE1. One solution is to reset the buffer explicitly in
    m2p_hw_setup().
    
    Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9812dc2abf10a3942bf08b0e55a7d829ce47e3e0
Author: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
Date:   Mon May 15 17:49:52 2017 +0900

    dmaengine: usb-dmac: Fix DMAOR AE bit definition
    
    commit 9a445bbb1607d9f14556a532453dd86d1b7e381e upstream.
    
    This patch fixes the register definition of AE (Address Error flag) bit.
    
    Fixes: 0c1c8ff32fa2 ("dmaengine: usb-dmac: Add Renesas USB DMA Controller (USB-DMAC) driver")
    Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
    [Shimoda: add Fixes and Cc tags in the commit log]
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e456059a42ab4b07aabbc829e691b30c9524de1
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Thu Jun 8 20:13:40 2017 -0700

    KVM: async_pf: avoid async pf injection when in guest mode
    
    commit 9bc1f09f6fa76fdf31eb7d6a4a4df43574725f93 upstream.
    
     INFO: task gnome-terminal-:1734 blocked for more than 120 seconds.
           Not tainted 4.12.0-rc4+ #8
     "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
     gnome-terminal- D    0  1734   1015 0x00000000
     Call Trace:
      __schedule+0x3cd/0xb30
      schedule+0x40/0x90
      kvm_async_pf_task_wait+0x1cc/0x270
      ? __vfs_read+0x37/0x150
      ? prepare_to_swait+0x22/0x70
      do_async_page_fault+0x77/0xb0
      ? do_async_page_fault+0x77/0xb0
      async_page_fault+0x28/0x30
    
    This is triggered by running both win7 and win2016 on L1 KVM simultaneously,
    and then gives stress to memory on L1, I can observed this hang on L1 when
    at least ~70% swap area is occupied on L0.
    
    This is due to async pf was injected to L2 which should be injected to L1,
    L2 guest starts receiving pagefault w/ bogus %cr2(apf token from the host
    actually), and L1 guest starts accumulating tasks stuck in D state in
    kvm_async_pf_task_wait() since missing PAGE_READY async_pfs.
    
    This patch fixes the hang by doing async pf when executing L1 guest.
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37b1521501039697f32b4883acf820ec6c2a7fb3
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Jun 6 19:08:35 2017 +0100

    arm: KVM: Allow unaligned accesses at HYP
    
    commit 33b5c38852b29736f3b472dd095c9a18ec22746f upstream.
    
    We currently have the HSCTLR.A bit set, trapping unaligned accesses
    at HYP, but we're not really prepared to deal with it.
    
    Since the rest of the kernel is pretty happy about that, let's follow
    its example and set HSCTLR.A to zero. Modern CPUs don't really care.
    
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d06ca326dd0f93074deee4845c7334d7d4df1cbd
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Jun 6 19:08:34 2017 +0100

    arm64: KVM: Allow unaligned accesses at EL2
    
    commit 78fd6dcf11468a5a131b8365580d0c613bcc02cb upstream.
    
    We currently have the SCTLR_EL2.A bit set, trapping unaligned accesses
    at EL2, but we're not really prepared to deal with it. So far, this
    has been unnoticed, until GCC 7 started emitting those (in particular
    64bit writes on a 32bit boundary).
    
    Since the rest of the kernel is pretty happy about that, let's follow
    its example and set SCTLR_EL2.A to zero. Modern CPUs don't really
    care.
    
    Reported-by: Alexander Graf <agraf@suse.de>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff384c499bf7aea518790b4bafabc2611c2d73a3
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Jun 6 19:08:33 2017 +0100

    arm64: KVM: Preserve RES1 bits in SCTLR_EL2
    
    commit d68c1f7fd1b7148dab5fe658321d511998969f2d upstream.
    
    __do_hyp_init has the rather bad habit of ignoring RES1 bits and
    writing them back as zero. On a v8.0-8.2 CPU, this doesn't do anything
    bad, but may end-up being pretty nasty on future revisions of the
    architecture.
    
    Let's preserve those bits so that we don't have to fix this later on.
    
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d2c539eadfdf01d21b4be5be54d62102cb594d3
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Thu Jun 8 01:22:07 2017 -0700

    KVM: cpuid: Fix read/write out-of-bounds vulnerability in cpuid emulation
    
    commit a3641631d14571242eec0d30c9faa786cbf52d44 upstream.
    
    If "i" is the last element in the vcpu->arch.cpuid_entries[] array, it
    potentially can be exploited the vulnerability. this will out-of-bounds
    read and write.  Luckily, the effect is small:
    
            /* when no next entry is found, the current entry[i] is reselected */
            for (j = i + 1; ; j = (j + 1) % nent) {
                    struct kvm_cpuid_entry2 *ej = &vcpu->arch.cpuid_entries[j];
                    if (ej->function == e->function) {
    
    It reads ej->maxphyaddr, which is user controlled.  However...
    
                            ej->flags |= KVM_CPUID_FLAG_STATE_READ_NEXT;
    
    After cpuid_entries there is
    
            int maxphyaddr;
            struct x86_emulate_ctxt emulate_ctxt;  /* 16-byte aligned */
    
    So we have:
    
    - cpuid_entries at offset 1B50 (6992)
    - maxphyaddr at offset 27D0 (6992 + 3200 = 10192)
    - padding at 27D4...27DF
    - emulate_ctxt at 27E0
    
    And it writes in the padding.  Pfew, writing the ops field of emulate_ctxt
    would have been much worse.
    
    This patch fixes it by modding the index to avoid the out-of-bounds
    access. Worst case, i == j and ej->function == e->function,
    the loop can bail out.
    
    Reported-by: Moguofang <moguofang@huawei.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Guofang Mo <moguofang@huawei.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 406aa22b292cf36a4a6ad28a77fb1623245ef335
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Apr 26 16:56:26 2017 +0200

    kvm: async_pf: fix rcu_irq_enter() with irqs enabled
    
    commit bbaf0e2b1c1b4f88abd6ef49576f0efb1734eae5 upstream.
    
    native_safe_halt enables interrupts, and you just shouldn't
    call rcu_irq_enter() with interrupts enabled.  Reorder the
    call with the following local_irq_disable() to respect the
    invariant.
    
    Reported-by: Ross Zwisler <ross.zwisler@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Tested-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9ecf4222a8b71913a87012107fa3959c8aefeac
Author: Dave Young <dyoung@redhat.com>
Date:   Fri May 26 12:36:51 2017 +0100

    efi/bgrt: Skip efi_bgrt_init() in case of non-EFI boot
    
    commit 7425826f4f7ac60f2538b06a7f0a5d1006405159 upstream.
    
    Sabrina Dubroca reported an early panic:
    
      BUG: unable to handle kernel paging request at ffffffffff240001
      IP: efi_bgrt_init+0xdc/0x134
    
      [...]
    
      ---[ end Kernel panic - not syncing: Attempted to kill the idle task!
    
    ... which was introduced by:
    
      7b0a911478c7 ("efi/x86: Move the EFI BGRT init code to early init code")
    
    The cause is that on this machine the firmware provides the EFI ACPI BGRT
    table even on legacy non-EFI bootups - which table should be EFI only.
    
    The garbage BGRT data causes the efi_bgrt_init() panic.
    
    Add a check to skip efi_bgrt_init() in case non-EFI bootup to work around
    this firmware bug.
    
    Tested-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: Dave Young <dyoung@redhat.com>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Fixes: 7b0a911478c7 ("efi/x86: Move the EFI BGRT init code to early init code")
    Link: http://lkml.kernel.org/r/20170526113652.21339-6-matt@codeblueprint.co.uk
    [ Rewrote the changelog to be more readable. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c76a4a07715ce5bebf437d5848a3324f1811451f
Author: Juergen Gross <jgross@suse.com>
Date:   Fri May 26 12:36:47 2017 +0100

    efi: Don't issue error message when booted under Xen
    
    commit 1ea34adb87c969b89dfd83f1905a79161e9ada26 upstream.
    
    When booted as Xen dom0 there won't be an EFI memmap allocated. Avoid
    issuing an error message in this case:
    
      [    0.144079] efi: Failed to allocate new EFI memmap
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20170526113652.21339-2-matt@codeblueprint.co.uk
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8745dbb65601f9d27241bdad3f1420c7035f15d
Author: Jan Kara <jack@suse.cz>
Date:   Tue May 2 13:14:13 2017 +0200

    gfs2: Make flush bios explicitely sync
    
    commit 0f0b9b63e14fc3f66e4d342df016c9b071c5abed upstream.
    
    Commit b685d3d65ac7 "block: treat REQ_FUA and REQ_PREFLUSH as
    synchronous" removed REQ_SYNC flag from WRITE_{FUA|PREFLUSH|...}
    definitions.  generic_make_request_checks() however strips REQ_FUA and
    REQ_PREFLUSH flags from a bio when the storage doesn't report volatile
    write cache and thus write effectively becomes asynchronous which can
    lead to performance regressions
    
    Fix the problem by making sure all bios which are synchronous are
    properly marked with REQ_SYNC.
    
    Fixes: b685d3d65ac791406e0dfd8779cc9b3707fea5a3
    CC: Steven Whitehouse <swhiteho@redhat.com>
    CC: cluster-devel@redhat.com
    Acked-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 836fb216da4c23bf23a53f42daf95529db3208a2
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Tue May 23 12:24:40 2017 -0400

    nfsd4: fix null dereference on replay
    
    commit 9a307403d374b993061f5992a6e260c944920d0b upstream.
    
    if we receive a compound such that:
    
            - the sessionid, slot, and sequence number in the SEQUENCE op
              match a cached succesful reply with N ops, and
            - the Nth operation of the compound is a PUTFH, PUTPUBFH,
              PUTROOTFH, or RESTOREFH,
    
    then nfsd4_sequence will return 0 and set cstate->status to
    nfserr_replay_cache.  The current filehandle will not be set.  This will
    cause us to call check_nfsd_access with first argument NULL.
    
    To nfsd4_compound it looks like we just succesfully executed an
    operation that set a filehandle, but the current filehandle is not set.
    
    Fix this by moving the nfserr_replay_cache earlier.  There was never any
    reason to have it after the encode_op label, since the only case where
    he hit that is when opdesc->op_func sets it.
    
    Note that there are two ways we could hit this case:
    
            - a client is resending a previously sent compound that ended
              with one of the four PUTFH-like operations, or
            - a client is sending a *new* compound that (incorrectly) shares
              sessionid, slot, and sequence number with a previously sent
              compound, and the length of the previously sent compound
              happens to match the position of a PUTFH-like operation in the
              new compound.
    
    The second is obviously incorrect client behavior.  The first is also
    very strange--the only purpose of a PUTFH-like operation is to set the
    current filehandle to be used by the following operation, so there's no
    point in having it as the last in a compound.
    
    So it's likely this requires a buggy or malicious client to reproduce.
    
    Reported-by: Scott Mayhew <smayhew@redhat.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8015cc81a6f7313ebd30fd1418b36bad47aee7b5
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu May 11 13:10:02 2017 -0400

    drm/amdgpu/ci: disable mclk switching for high refresh rates (v2)
    
    commit 0a646f331db0eb9efc8d3a95a44872036d441d58 upstream.
    
    Even if the vblank period would allow it, it still seems to
    be problematic on some cards.
    
    v2: fix logic inversion (Nils)
    
    bug: https://bugs.freedesktop.org/show_bug.cgi?id=96868
    
    Acked-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f7ff02f7dc0460a1405314a2b9b4e899f661398
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Tue May 9 09:39:59 2017 +0200

    kthread: Fix use-after-free if kthread fork fails
    
    commit 4d6501dce079c1eb6bf0b1d8f528a5e81770109e upstream.
    
    If a kthread forks (e.g. usermodehelper since commit 1da5c46fa965) but
    fails in copy_process() between calling dup_task_struct() and setting
    p->set_child_tid, then the value of p->set_child_tid will be inherited
    from the parent and get prematurely freed by free_kthread_struct().
    
        kthread()
         - worker_thread()
            - process_one_work()
            |  - call_usermodehelper_exec_work()
            |     - kernel_thread()
            |        - _do_fork()
            |           - copy_process()
            |              - dup_task_struct()
            |                 - arch_dup_task_struct()
            |                    - tsk->set_child_tid = current->set_child_tid // implied
            |              - ...
            |              - goto bad_fork_*
            |              - ...
            |              - free_task(tsk)
            |                 - free_kthread_struct(tsk)
            |                    - kfree(tsk->set_child_tid)
            - ...
            - schedule()
               - __schedule()
                  - wq_worker_sleeping()
                     - kthread_data(task)->flags // UAF
    
    The problem started showing up with commit 1da5c46fa965 since it reused
    ->set_child_tid for the kthread worker data.
    
    A better long-term solution might be to get rid of the ->set_child_tid
    abuse. The comment in set_kthread_struct() also looks slightly wrong.
    
    Debugged-by: Jamie Iles <jamie.iles@oracle.com>
    Fixes: 1da5c46fa965 ("kthread: Make struct kthread kmalloc'ed")
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Jamie Iles <jamie.iles@oracle.com>
    Link: http://lkml.kernel.org/r/20170509073959.17858-1-vegard.nossum@oracle.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5505a656fecbef8302b235da3ff393d41546659
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Tue May 16 08:45:46 2017 +0300

    ovl: fix creds leak in copy up error path
    
    commit 8137ae26d25303e7b5cfb418fd28b976461e5b6e upstream.
    
    Fixes: 42f269b92540 ("ovl: rearrange code in ovl_copy_up_locked()")
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f59fdb278e178cbdd9772a879b7707e5de6deff8
Author: Gilad Ben-Yossef <gilad@benyossef.com>
Date:   Thu May 18 16:29:25 2017 +0300

    crypto: gcm - wait for crypto op not signal safe
    
    commit f3ad587070d6bd961ab942b3fd7a85d00dfc934b upstream.
    
    crypto_gcm_setkey() was using wait_for_completion_interruptible() to
    wait for completion of async crypto op but if a signal occurs it
    may return before DMA ops of HW crypto provider finish, thus
    corrupting the data buffer that is kfree'ed in this case.
    
    Resolve this by using wait_for_completion() instead.
    
    Reported-by: Eric Biggers <ebiggers3@gmail.com>
    Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1286652e80cc3c847ca23aac4a91ecd232095ff9
Author: Gilad Ben-Yossef <gilad@benyossef.com>
Date:   Thu May 18 16:29:24 2017 +0300

    crypto: drbg - wait for crypto op not signal safe
    
    commit a5dfefb1c3f3db81662556393fd9283511e08430 upstream.
    
    drbg_kcapi_sym_ctr() was using wait_for_completion_interruptible() to
    wait for completion of async crypto op but if a signal occurs it
    may return before DMA ops of HW crypto provider finish, thus
    corrupting the output buffer.
    
    Resolve this by using wait_for_completion() instead.
    
    Reported-by: Eric Biggers <ebiggers3@gmail.com>
    Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e4c3a6da3ad22260de198b3d13d31c12e635bbc
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Jun 8 14:48:10 2017 +0100

    KEYS: encrypted: avoid encrypting/decrypting stack buffers
    
    commit e9ff56ac352446f55141aaef1553cee662b2e310 upstream.
    
    Since v4.9, the crypto API cannot (normally) be used to encrypt/decrypt
    stack buffers because the stack may be virtually mapped.  Fix this for
    the padding buffers in encrypted-keys by using ZERO_PAGE for the
    encryption padding and by allocating a temporary heap buffer for the
    decryption padding.
    
    Tested with CONFIG_DEBUG_SG=y:
            keyctl new_session
            keyctl add user master "abcdefghijklmnop" @s
            keyid=$(keyctl add encrypted desc "new user:master 25" @s)
            datablob="$(keyctl pipe $keyid)"
            keyctl unlink $keyid
            keyid=$(keyctl add encrypted desc "load $datablob" @s)
            datablob2="$(keyctl pipe $keyid)"
            [ "$datablob" = "$datablob2" ] && echo "Success!"
    
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a28f221a057bed79c90b83efa7db3160de0f069
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Jun 8 14:48:47 2017 +0100

    KEYS: fix freeing uninitialized memory in key_update()
    
    commit 63a0b0509e700717a59f049ec6e4e04e903c7fe2 upstream.
    
    key_update() freed the key_preparsed_payload even if it was not
    initialized first.  This would cause a crash if userspace called
    keyctl_update() on a key with type like "asymmetric" that has a
    ->preparse() method but not an ->update() method.  Possibly it could
    even be triggered for other key types by racing with keyctl_setperm() to
    make the KEY_NEED_WRITE check fail (the permission was already checked,
    so normally it wouldn't fail there).
    
    Reproducer with key type "asymmetric", given a valid cert.der:
    
    keyctl new_session
    keyid=$(keyctl padd asymmetric desc @s < cert.der)
    keyctl setperm $keyid 0x3f000000
    keyctl update $keyid data
    
    [  150.686666] BUG: unable to handle kernel NULL pointer dereference at 0000000000000001
    [  150.687601] IP: asymmetric_key_free_kids+0x12/0x30
    [  150.688139] PGD 38a3d067
    [  150.688141] PUD 3b3de067
    [  150.688447] PMD 0
    [  150.688745]
    [  150.689160] Oops: 0000 [#1] SMP
    [  150.689455] Modules linked in:
    [  150.689769] CPU: 1 PID: 2478 Comm: keyctl Not tainted 4.11.0-rc4-xfstests-00187-ga9f6b6b8cd2f #742
    [  150.690916] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-20170228_101828-anatol 04/01/2014
    [  150.692199] task: ffff88003b30c480 task.stack: ffffc90000350000
    [  150.692952] RIP: 0010:asymmetric_key_free_kids+0x12/0x30
    [  150.693556] RSP: 0018:ffffc90000353e58 EFLAGS: 00010202
    [  150.694142] RAX: 0000000000000000 RBX: 0000000000000001 RCX: 0000000000000004
    [  150.694845] RDX: ffffffff81ee3920 RSI: ffff88003d4b0700 RDI: 0000000000000001
    [  150.697569] RBP: ffffc90000353e60 R08: ffff88003d5d2140 R09: 0000000000000000
    [  150.702483] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000001
    [  150.707393] R13: 0000000000000004 R14: ffff880038a4d2d8 R15: 000000000040411f
    [  150.709720] FS:  00007fcbcee35700(0000) GS:ffff88003fd00000(0000) knlGS:0000000000000000
    [  150.711504] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  150.712733] CR2: 0000000000000001 CR3: 0000000039eab000 CR4: 00000000003406e0
    [  150.714487] Call Trace:
    [  150.714975]  asymmetric_key_free_preparse+0x2f/0x40
    [  150.715907]  key_update+0xf7/0x140
    [  150.716560]  ? key_default_cmp+0x20/0x20
    [  150.717319]  keyctl_update_key+0xb0/0xe0
    [  150.718066]  SyS_keyctl+0x109/0x130
    [  150.718663]  entry_SYSCALL_64_fastpath+0x1f/0xc2
    [  150.719440] RIP: 0033:0x7fcbce75ff19
    [  150.719926] RSP: 002b:00007ffd5d167088 EFLAGS: 00000206 ORIG_RAX: 00000000000000fa
    [  150.720918] RAX: ffffffffffffffda RBX: 0000000000404d80 RCX: 00007fcbce75ff19
    [  150.721874] RDX: 00007ffd5d16785e RSI: 000000002866cd36 RDI: 0000000000000002
    [  150.722827] RBP: 0000000000000006 R08: 000000002866cd36 R09: 00007ffd5d16785e
    [  150.723781] R10: 0000000000000004 R11: 0000000000000206 R12: 0000000000404d80
    [  150.724650] R13: 00007ffd5d16784d R14: 00007ffd5d167238 R15: 000000000040411f
    [  150.725447] Code: 83 c4 08 31 c0 5b 41 5c 41 5d 41 5e 41 5f 5d c3 66 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 85 ff 74 23 55 48 89 e5 53 48 89 fb <48> 8b 3f e8 06 21 c5 ff 48 8b 7b 08 e8 fd 20 c5 ff 48 89 df e8
    [  150.727489] RIP: asymmetric_key_free_kids+0x12/0x30 RSP: ffffc90000353e58
    [  150.728117] CR2: 0000000000000001
    [  150.728430] ---[ end trace f7f8fe1da2d5ae8d ]---
    
    Fixes: 4d8c0250b841 ("KEYS: Call ->free_preparse() even after ->preparse() returns an error")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5def69023aec63f6d2facb39fde6f4cdf9c12710
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Jun 8 14:48:40 2017 +0100

    KEYS: fix dereferencing NULL payload with nonzero length
    
    commit 5649645d725c73df4302428ee4e02c869248b4c5 upstream.
    
    sys_add_key() and the KEYCTL_UPDATE operation of sys_keyctl() allowed a
    NULL payload with nonzero length to be passed to the key type's
    ->preparse(), ->instantiate(), and/or ->update() methods.  Various key
    types including asymmetric, cifs.idmap, cifs.spnego, and pkcs7_test did
    not handle this case, allowing an unprivileged user to trivially cause a
    NULL pointer dereference (kernel oops) if one of these key types was
    present.  Fix it by doing the copy_from_user() when 'plen' is nonzero
    rather than when '_payload' is non-NULL, causing the syscall to fail
    with EFAULT as expected when an invalid buffer is specified.
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e423898fd89fc5c69e61dd7e7ca617f1394516c3
Author: Gilad Ben-Yossef <gilad@benyossef.com>
Date:   Thu May 18 16:29:23 2017 +0300

    crypto: asymmetric_keys - handle EBUSY due to backlog correctly
    
    commit e68368aed56324e2e38d4f6b044bb8cf82077fc2 upstream.
    
    public_key_verify_signature() was passing the CRYPTO_TFM_REQ_MAY_BACKLOG
    flag to akcipher_request_set_callback() but was not handling correctly
    the case where a -EBUSY error could be returned from the call to
    crypto_akcipher_verify() if backlog was used, possibly casuing
    data corruption due to use-after-free of buffers.
    
    Resolve this by handling -EBUSY correctly.
    
    Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c10acee89d7ae9befad5b5706fb90052da5b02e5
Author: Murali Karicheri <m-karicheri2@ti.com>
Date:   Wed Mar 29 16:02:18 2017 +0530

    ARM: dts: keystone-k2l: fix broken Ethernet due to disabled OSR
    
    commit 791229f1d530a0f0a680a4c09f98199792485f33 upstream.
    
    Ethernet networking on K2L has been broken since v4.11-rc1. This was
    caused by commit 32a34441a9bd ("ARM: keystone: dts: fix netcp clocks
    and add names"). This commit inadvertently moves on-chip static RAM
    clock to the end of list of clocks provided for netcp. Since keystone
    PM domain support does not have a list of recognized con_ids, only the
    first clock in the list comes under runtime PM management. This means
    the OSR (On-chip Static RAM) clock remains disabled and that broke
    networking on K2L.
    
    The OSR is used by QMSS on K2L as an external linking RAM. However this
    is a standalone RAM that can be used for non-QMSS usage (as well as from
    DSP side). So add a SRAM device node for the same and add the OSR clock
    to the node.
    
    Remove the now redundant OSR clock node from netcp.
    
    To manage all clocks defined for netCP's use by runtime PM needs keystone
    generic power domain (genpd) driver support which is under works.
    Meanwhile, this patch restores K2L networking and is correct irrespective
    of any future genpd work since OSR is an independent module and not part
    of NetCP anyway.
    
    Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
    Acked-by: Tero Kristo <t-kristo@ti.com>
    [nsekhar@ti.com: commit message updates, port to latest mainline]
    Signed-off-by: Sekhar Nori <nsekhar@ti.com>
    Acked-by: Santosh Shilimkar <ssantosh@kernel.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff6c1649b4a15065474adc9b2590ba20c0a62238
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Mon May 22 15:40:12 2017 -0500

    ptrace: Properly initialize ptracer_cred on fork
    
    commit c70d9d809fdeecedb96972457ee45c49a232d97f upstream.
    
    When I introduced ptracer_cred I failed to consider the weirdness of
    fork where the task_struct copies the old value by default.  This
    winds up leaving ptracer_cred set even when a process forks and
    the child process does not wind up being ptraced.
    
    Because ptracer_cred is not set on non-ptraced processes whose
    parents were ptraced this has broken the ability of the enlightenment
    window manager to start setuid children.
    
    Fix this by properly initializing ptracer_cred in ptrace_init_task
    
    This must be done with a little bit of care to preserve the current value
    of ptracer_cred when ptrace carries through fork.  Re-reading the
    ptracer_cred from the ptracing process at this point is inconsistent
    with how PT_PTRACE_CAP has been maintained all of these years.
    
    Tested-by: Takashi Iwai <tiwai@suse.de>
    Fixes: 64b875f7ac8a ("ptrace: Capture the ptracer's creds not PT_PTRACE_CAP")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Ralph Sennhauser <ralph.sennhauser@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c8faeebd5e7ec0ceb8a62f002a5161d1797f7ab
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Thu May 11 12:56:14 2017 +0200

    serial: core: fix crash in uart_suspend_port
    
    commit 88e2582e90bb89fe895ff0dceeb5d5ab65d07997 upstream.
    
    With serdev we might end up with serial ports that have no cdev exported
    to userspace, as they are used as the bus interface to other devices. In
    that case serial_match_port() won't be able to find a matching tty_dev.
    
    Skip the irq wakeup enabling in that case, as serdev will make sure to
    keep the port active, as long as there are devices depending on it.
    
    Fixes: 8ee3fde04758 (tty_port: register tty ports with serdev bus)
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70876e7c0254d323a8f8ae30106484d237764bf1
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Apr 26 12:24:21 2017 +0200

    serial: ifx6x60: fix use-after-free on module unload
    
    commit 1e948479b3d63e3ac0ecca13cbf4921c7d17c168 upstream.
    
    Make sure to deregister the SPI driver before releasing the tty driver
    to avoid use-after-free in the SPI remove callback where the tty
    devices are deregistered.
    
    Fixes: 72d4724ea54c ("serial: ifx6x60: Add modem power off function in the platform reboot process")
    Cc: Jun Chen <jun.d.chen@intel.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7faf3f5f892a95c84739ac5d73e6ddf90ef3644c
Author: Jan Kiszka <jan.kiszka@siemens.com>
Date:   Mon Apr 24 12:30:15 2017 +0200

    serial: exar: Fix stuck MSIs
    
    commit 2c0ac5b48a3586f612b85755b041ed7733dc8e6b upstream.
    
    After migrating 8250_exar to MSI in 172c33cb61da, we can get stuck
    without further interrupts because of the special wake-up event these
    chips send. They are only cleared by reading INT0. As we fail to do so
    during startup and shutdown, we can leave the interrupt line asserted,
    which is fatal with edge-triggered MSIs.
    
    Add the required reading of INT0 to startup and shutdown. Also account
    for the fact that a pending wake-up interrupt means we have to return 1
    from exar_handle_irq. Drop the unneeded reading of INT1..3 along with
    this - those never reset anything.
    
    An alternative approach would have been disabling the wake-up interrupt.
    Unfortunately, this feature (REGB[17] = 1) is not available on the
    XR17D15X.
    
    Fixes: 172c33cb61da ("serial: exar: Enable MSI support")
    Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc0734aac32d75fc1834d8bdbd9f482fcfb22b9b
Author: Luis Henriques <lhenriques@suse.com>
Date:   Thu May 25 16:20:38 2017 +0100

    ftrace: Fix memory leak in ftrace_graph_release()
    
    commit f9797c2f20c0160edd718aa467101f3301e57e59 upstream.
    
    ftrace_hash is being kfree'ed in ftrace_graph_release(), however the
    ->buckets field is not.  This results in a memory leak that is easily
    captured by kmemleak:
    
    unreferenced object 0xffff880038afe000 (size 8192):
      comm "trace-cmd", pid 238, jiffies 4294916898 (age 9.736s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff815f561e>] kmemleak_alloc+0x4e/0xb0
        [<ffffffff8113964d>] __kmalloc+0x12d/0x1a0
        [<ffffffff810bf6d1>] alloc_ftrace_hash+0x51/0x80
        [<ffffffff810c0523>] __ftrace_graph_open.isra.39.constprop.46+0xa3/0x100
        [<ffffffff810c05e8>] ftrace_graph_open+0x68/0xa0
        [<ffffffff8114003d>] do_dentry_open.isra.1+0x1bd/0x2d0
        [<ffffffff81140df7>] vfs_open+0x47/0x60
        [<ffffffff81150f95>] path_openat+0x2a5/0x1020
        [<ffffffff81152d6a>] do_filp_open+0x8a/0xf0
        [<ffffffff811411df>] do_sys_open+0x12f/0x200
        [<ffffffff811412ce>] SyS_open+0x1e/0x20
        [<ffffffff815fa6e0>] entry_SYSCALL_64_fastpath+0x13/0x94
        [<ffffffffffffffff>] 0xffffffffffffffff
    
    Link: http://lkml.kernel.org/r/20170525152038.7661-1-lhenriques@suse.com
    
    Fixes: b9b0c831bed2 ("ftrace: Convert graph filter to use hash tables")
    Signed-off-by: Luis Henriques <lhenriques@suse.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a223727ae4679d390f670ef38e0659aa809cb18
Author: Jane Chu <jane.chu@oracle.com>
Date:   Tue Jun 6 14:32:29 2017 -0600

    arch/sparc: support NR_CPUS = 4096
    
    
    [ Upstream commit c79a13734d104b5b147d7cb0870276ccdd660dae ]
    
    Linux SPARC64 limits NR_CPUS to 4064 because init_cpu_send_mondo_info()
    only allocates a single page for NR_CPUS mondo entries. Thus we cannot
    use all 4096 CPUs on some SPARC platforms.
    
    To fix, allocate (2^order) pages where order is set according to the size
    of cpu_list for possible cpus. Since cpu_list_pa and cpu_mondo_block_pa
    are not used in asm code, there are no imm13 offsets from the base PA
    that will break because they can only reach one page.
    
    Orabug: 25505750
    
    Signed-off-by: Jane Chu <jane.chu@oracle.com>
    
    Reviewed-by: Bob Picco <bob.picco@oracle.com>
    Reviewed-by: Atish Patra <atish.patra@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10e3a2945e339ce1972acd116ff89f9f43d6779d
Author: Pavel Tatashin <pasha.tatashin@oracle.com>
Date:   Wed May 31 11:25:25 2017 -0400

    sparc64: delete old wrap code
    
    
    [ Upstream commit 0197e41ce70511dc3b71f7fefa1a676e2b5cd60b ]
    
    The old method that is using xcall and softint to get new context id is
    deleted, as it is replaced by a method of using per_cpu_secondary_mm
    without xcall to perform the context wrap.
    
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Reviewed-by: Bob Picco <bob.picco@oracle.com>
    Reviewed-by: Steven Sistare <steven.sistare@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b60d9051cc6f70a689cde4f73c14129267897b35
Author: Pavel Tatashin <pasha.tatashin@oracle.com>
Date:   Wed May 31 11:25:24 2017 -0400

    sparc64: new context wrap
    
    
    [ Upstream commit a0582f26ec9dfd5360ea2f35dd9a1b026f8adda0 ]
    
    The current wrap implementation has a race issue: it is called outside of
    the ctx_alloc_lock, and also does not wait for all CPUs to complete the
    wrap.  This means that a thread can get a new context with a new version
    and another thread might still be running with the same context. The
    problem is especially severe on CPUs with shared TLBs, like sun4v. I used
    the following test to very quickly reproduce the problem:
    - start over 8K processes (must be more than context IDs)
    - write and read values at a  memory location in every process.
    
    Very quickly memory corruptions start happening, and what we read back
    does not equal what we wrote.
    
    Several approaches were explored before settling on this one:
    
    Approach 1:
    Move smp_new_mmu_context_version() inside ctx_alloc_lock, and wait for
    every process to complete the wrap. (Note: every CPU must WAIT before
    leaving smp_new_mmu_context_version_client() until every one arrives).
    
    This approach ends up with deadlocks, as some threads own locks which other
    threads are waiting for, and they never receive softint until these threads
    exit smp_new_mmu_context_version_client(). Since we do not allow the exit,
    deadlock happens.
    
    Approach 2:
    Handle wrap right during mondo interrupt. Use etrap/rtrap to enter into
    into C code, and issue new versions to every CPU.
    This approach adds some overhead to runtime: in switch_mm() we must add
    some checks to make sure that versions have not changed due to wrap while
    we were loading the new secondary context. (could be protected by PSTATE_IE
    but that degrades performance as on M7 and older CPUs as it takes 50 cycles
    for each access). Also, we still need a global per-cpu array of MMs to know
    where we need to load new contexts, otherwise we can change context to a
    thread that is going way (if we received mondo between switch_mm() and
    switch_to() time). Finally, there are some issues with window registers in
    rtrap() when context IDs are changed during CPU mondo time.
    
    The approach in this patch is the simplest and has almost no impact on
    runtime.  We use the array with mm's where last secondary contexts were
    loaded onto CPUs and bump their versions to the new generation without
    changing context IDs. If a new process comes in to get a context ID, it
    will go through get_new_mmu_context() because of version mismatch. But the
    running processes do not need to be interrupted. And wrap is quicker as we
    do not need to xcall and wait for everyone to receive and complete wrap.
    
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Reviewed-by: Bob Picco <bob.picco@oracle.com>
    Reviewed-by: Steven Sistare <steven.sistare@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be5e2c7026c2427f3b9b4464a597acae10d33997
Author: Pavel Tatashin <pasha.tatashin@oracle.com>
Date:   Wed May 31 11:25:23 2017 -0400

    sparc64: add per-cpu mm of secondary contexts
    
    
    [ Upstream commit 7a5b4bbf49fe86ce77488a70c5dccfe2d50d7a2d ]
    
    The new wrap is going to use information from this array to figure out
    mm's that currently have valid secondary contexts setup.
    
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Reviewed-by: Bob Picco <bob.picco@oracle.com>
    Reviewed-by: Steven Sistare <steven.sistare@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5fb553c51b2cecb61e86e0b12c451a1113f351f
Author: Pavel Tatashin <pasha.tatashin@oracle.com>
Date:   Wed May 31 11:25:22 2017 -0400

    sparc64: redefine first version
    
    
    [ Upstream commit c4415235b2be0cc791572e8e7f7466ab8f73a2bf ]
    
    CTX_FIRST_VERSION defines the first context version, but also it defines
    first context. This patch redefines it to only include the first context
    version.
    
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Reviewed-by: Bob Picco <bob.picco@oracle.com>
    Reviewed-by: Steven Sistare <steven.sistare@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 557145f44c6e0b07edd1bd4b1da3dc4f0d095fac
Author: Pavel Tatashin <pasha.tatashin@oracle.com>
Date:   Wed May 31 11:25:21 2017 -0400

    sparc64: combine activate_mm and switch_mm
    
    
    [ Upstream commit 14d0334c6748ff2aedb3f2f7fdc51ee90a9b54e7 ]
    
    The only difference between these two functions is that in activate_mm we
    unconditionally flush context. However, there is no need to keep this
    difference after fixing a bug where cpumask was not reset on a wrap. So, in
    this patch we combine these.
    
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Reviewed-by: Bob Picco <bob.picco@oracle.com>
    Reviewed-by: Steven Sistare <steven.sistare@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa6349e03063632d95ecc1d2f1079fd2fa06666d
Author: Pavel Tatashin <pasha.tatashin@oracle.com>
Date:   Wed May 31 11:25:20 2017 -0400

    sparc64: reset mm cpumask after wrap
    
    
    [ Upstream commit 588974857359861891f478a070b1dc7ae04a3880 ]
    
    After a wrap (getting a new context version) a process must get a new
    context id, which means that we would need to flush the context id from
    the TLB before running for the first time with this ID on every CPU. But,
    we use mm_cpumask to determine if this process has been running on this CPU
    before, and this mask is not reset after a wrap. So, there are two possible
    fixes for this issue:
    
    1. Clear mm cpumask whenever mm gets a new context id
    2. Unconditionally flush context every time process is running on a CPU
    
    This patch implements the first solution
    
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Reviewed-by: Bob Picco <bob.picco@oracle.com>
    Reviewed-by: Steven Sistare <steven.sistare@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8c7bb2f5b148d9d79fa2de664b091ae023b1167
Author: Liam R. Howlett <Liam.Howlett@Oracle.com>
Date:   Tue May 30 15:45:00 2017 -0400

    sparc/mm/hugepages: Fix setup_hugepagesz for invalid values.
    
    
    [ Upstream commit f322980b74a15e08f8c70a34a5864ecdbf957251 ]
    
    hugetlb_bad_size needs to be called on invalid values.  Also change the
    pr_warn to a pr_err to better align with other platforms.
    
    Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a091e625ed7fe0132ac7c901d295705378f3d49f
Author: James Clarke <jrtc27@jrtc27.com>
Date:   Mon May 29 20:17:56 2017 +0100

    sparc: Machine description indices can vary
    
    
    [ Upstream commit c982aa9c304bf0b9a7522fd118fed4afa5a0263c ]
    
    VIO devices were being looked up by their index in the machine
    description node block, but this often varies over time as devices are
    added and removed. Instead, store the ID and look up using the type,
    config handle and ID.
    
    Signed-off-by: James Clarke <jrtc27@jrtc27.com>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=112541
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 376452d48eb2603f46391e3f73343ba67f3e636e
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Fri Jun 2 14:51:12 2017 -0700

    sparc64: mm: fix copy_tsb to correctly copy huge page TSBs
    
    
    [ Upstream commit 654f4807624a657f364417c2a7454f0df9961734 ]
    
    When a TSB grows beyond its current capacity, a new TSB is allocated
    and copy_tsb is called to copy entries from the old TSB to the new.
    A hash shift based on page size is used to calculate the index of an
    entry in the TSB.  copy_tsb has hard coded PAGE_SHIFT in these
    calculations.  However, for huge page TSBs the value REAL_HPAGE_SHIFT
    should be used.  As a result, when copy_tsb is called for a huge page
    TSB the entries are placed at the incorrect index in the newly
    allocated TSB.  When doing hardware table walk, the MMU does not
    match these entries and we end up in the TSB miss handling code.
    This code will then create and write an entry to the correct index
    in the TSB.  We take a performance hit for the table walk miss and
    recreation of these entries.
    
    Pass a new parameter to copy_tsb that is the page size shift to be
    used when copying the TSB.
    
    Suggested-by: Anthony Yznaga <anthony.yznaga@oracle.com>
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35b284c7394edc3958092bc52a6d8baddb643597
Author: David S. Miller <davem@davemloft.net>
Date:   Mon Jun 5 11:28:57 2017 -0700

    sparc64: Add __multi3 for gcc 7.x and later.
    
    
    [ Upstream commit 1b4af13ff2cc6897557bb0b8d9e2fad4fa4d67aa ]
    
    Reported-by: Waldemar Brodkorb <wbx@openadk.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6bf499d388662b2ec338ae502b8155115aecaef8
Author: Niklas Cassel <niklas.cassel@axis.com>
Date:   Tue Jun 6 09:25:00 2017 +0200

    net: stmmac: fix completely hung TX when using TSO
    
    
    [ Upstream commit 426849e6611f2092553f8d53372ae310818a6292 ]
    
    stmmac_tso_allocator can fail to set the Last Descriptor bit
    on a descriptor that actually was the last descriptor.
    
    This happens when the buffer of the last descriptor ends
    up having a size of exactly TSO_MAX_BUFF_SIZE.
    
    When the IP eventually reaches the next last descriptor,
    which actually has the bit set, the DMA will hang.
    
    When the DMA hangs, we get a tx timeout, however,
    since stmmac does not do a complete reset of the IP
    in stmmac_tx_timeout, we end up in a state with
    completely hung TX.
    
    Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
    Acked-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
    Acked-by: Alexandre TORGUE <alexandre.torgue@st.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d44184237a9d9e35e729302e3b3a8cd0d5931736
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Mon Jun 5 18:31:16 2017 -0700

    net: ethoc: enable NAPI before poll may be scheduled
    
    
    [ Upstream commit d220b942a4b6a0640aee78841608f4aa5e8e185e ]
    
    ethoc_reset enables device interrupts, ethoc_interrupt may schedule a
    NAPI poll before NAPI is enabled in the ethoc_open, which results in
    device being unable to send or receive anything until it's closed and
    reopened. In case the device is flooded with ingress packets it may be
    unable to recover at all.
    Move napi_enable above ethoc_reset in the ethoc_open to fix that.
    
    Fixes: a1702857724f ("net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.")
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Reviewed-by: Tobias Klauser <tklauser@distanz.ch>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9719e31a96e8212d99f2e82210d559f06d53d91c
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Tue Jun 6 01:26:24 2017 +0300

    net: bridge: fix a null pointer dereference in br_afspec
    
    
    [ Upstream commit 1020ce3108cc26fbf09d70550ea2937cb1a211d2 ]
    
    We might call br_afspec() with p == NULL which is a valid use case if
    the action is on the bridge device itself, but the bridge tunnel code
    dereferences the p pointer without checking, so check if p is null
    first.
    
    Reported-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
    Fixes: efa5356b0d97 ("bridge: per vlan dst_metadata netlink support")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d673c7641c4de8c64231b862be75eef234b3e475
Author: Eugeniu Rosca <erosca@de.adit-jv.com>
Date:   Tue Jun 6 00:08:10 2017 +0200

    ravb: Fix use-after-free on `ifconfig eth0 down`
    
    
    [ Upstream commit 79514ef670e9e575a1fe36922268c439d0f0ca8a ]
    
    Commit a47b70ea86bd ("ravb: unmap descriptors when freeing rings") has
    introduced the issue seen in [1] reproduced on H3ULCB board.
    
    Fix this by relocating the RX skb ringbuffer free operation, so that
    swiotlb page unmapping can be done first. Freeing of aligned TX buffers
    is not relevant to the issue seen in [1]. Still, reposition TX free
    calls as well, to have all kfree() operations performed consistently
    _after_ dma_unmap_*()/dma_free_*().
    
    [1] Console screenshot with the problem reproduced:
    
    salvator-x login: root
    root@salvator-x:~# ifconfig eth0 up
    Micrel KSZ9031 Gigabit PHY e6800000.ethernet-ffffffff:00: \
           attached PHY driver [Micrel KSZ9031 Gigabit PHY]   \
           (mii_bus:phy_addr=e6800000.ethernet-ffffffff:00, irq=235)
    IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    root@salvator-x:~#
    root@salvator-x:~# ifconfig eth0 down
    
    ==================================================================
    BUG: KASAN: use-after-free in swiotlb_tbl_unmap_single+0xc4/0x35c
    Write of size 1538 at addr ffff8006d884f780 by task ifconfig/1649
    
    CPU: 0 PID: 1649 Comm: ifconfig Not tainted 4.12.0-rc4-00004-g112eb07287d1 #32
    Hardware name: Renesas H3ULCB board based on r8a7795 (DT)
    Call trace:
    [<ffff20000808f11c>] dump_backtrace+0x0/0x3a4
    [<ffff20000808f4d4>] show_stack+0x14/0x1c
    [<ffff20000865970c>] dump_stack+0xf8/0x150
    [<ffff20000831f8b0>] print_address_description+0x7c/0x330
    [<ffff200008320010>] kasan_report+0x2e0/0x2f4
    [<ffff20000831eac0>] check_memory_region+0x20/0x14c
    [<ffff20000831f054>] memcpy+0x48/0x68
    [<ffff20000869ed50>] swiotlb_tbl_unmap_single+0xc4/0x35c
    [<ffff20000869fcf4>] unmap_single+0x90/0xa4
    [<ffff20000869fd14>] swiotlb_unmap_page+0xc/0x14
    [<ffff2000080a2974>] __swiotlb_unmap_page+0xcc/0xe4
    [<ffff2000088acdb8>] ravb_ring_free+0x514/0x870
    [<ffff2000088b25dc>] ravb_close+0x288/0x36c
    [<ffff200008aaf8c4>] __dev_close_many+0x14c/0x174
    [<ffff200008aaf9b4>] __dev_close+0xc8/0x144
    [<ffff200008ac2100>] __dev_change_flags+0xd8/0x194
    [<ffff200008ac221c>] dev_change_flags+0x60/0xb0
    [<ffff200008ba2dec>] devinet_ioctl+0x484/0x9d4
    [<ffff200008ba7b78>] inet_ioctl+0x190/0x194
    [<ffff200008a78c44>] sock_do_ioctl+0x78/0xa8
    [<ffff200008a7a128>] sock_ioctl+0x110/0x3c4
    [<ffff200008365a70>] vfs_ioctl+0x90/0xa0
    [<ffff200008365dbc>] do_vfs_ioctl+0x148/0xc38
    [<ffff2000083668f0>] SyS_ioctl+0x44/0x74
    [<ffff200008083770>] el0_svc_naked+0x24/0x28
    
    The buggy address belongs to the page:
    page:ffff7e001b6213c0 count:0 mapcount:0 mapping:          (null) index:0x0
    flags: 0x4000000000000000()
    raw: 4000000000000000 0000000000000000 0000000000000000 00000000ffffffff
    raw: 0000000000000000 ffff7e001b6213e0 0000000000000000 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8006d884f680: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
     ffff8006d884f700: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    >ffff8006d884f780: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
                       ^
     ffff8006d884f800: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
     ffff8006d884f880: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    ==================================================================
    Disabling lock debugging due to kernel taint
    root@salvator-x:~#
    
    Fixes: a47b70ea86bd ("ravb: unmap descriptors when freeing rings")
    Signed-off-by: Eugeniu Rosca <erosca@de.adit-jv.com>
    Acked-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4990610df0e5397da61a251ced6601a1ab55d3f2
Author: Richard Haines <richard_c_haines@btinternet.com>
Date:   Mon Jun 5 16:44:40 2017 +0100

    net/ipv6: Fix CALIPSO causing GPF with datagram support
    
    
    [ Upstream commit e3ebdb20fddacded2740a333ff66781e0d28b05c ]
    
    When using CALIPSO with IPPROTO_UDP it is possible to trigger a GPF as the
    IP header may have moved.
    
    Also update the payload length after adding the CALIPSO option.
    
    Signed-off-by: Richard Haines <richard_c_haines@btinternet.com>
    Acked-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Huw Davies <huw@codeweavers.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76d36dd1b1afbd1135bd2548af29daac0b8a02cb
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Jun 3 09:29:25 2017 -0700

    net: ping: do not abuse udp_poll()
    
    
    [ Upstream commit 77d4b1d36926a9b8387c6b53eeba42bcaaffcea3 ]
    
    Alexander reported various KASAN messages triggered in recent kernels
    
    The problem is that ping sockets should not use udp_poll() in the first
    place, and recent changes in UDP stack finally exposed this old bug.
    
    Fixes: c319b4d76b9e ("net: ipv4: add IPPROTO_ICMP socket kind")
    Fixes: 6d0bfe226116 ("net: ipv6: Add IPv6 support to the ping socket.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Sasha Levin <alexander.levin@verizon.com>
    Cc: Solar Designer <solar@openwall.com>
    Cc: Vasiliy Kulikov <segoon@openwall.com>
    Cc: Lorenzo Colitti <lorenzo@google.com>
    Acked-By: Lorenzo Colitti <lorenzo@google.com>
    Tested-By: Lorenzo Colitti <lorenzo@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 223313c9be690577f888976cc6da46a6a43878f6
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Jun 2 22:05:23 2017 -0700

    net: dsa: Fix stale cpu_switch reference after unbind then bind
    
    
    [ Upstream commit b07ac9894644202614ca87c69f3f45e424a82fef ]
    
    Commit 9520ed8fb841 ("net: dsa: use cpu_switch instead of ds[0]")
    replaced the use of dst->ds[0] with dst->cpu_switch since that is
    functionally equivalent, however, we can now run into an use after free
    scenario after unbinding then rebinding the switch driver.
    
    The use after free happens because we do correctly initialize
    dst->cpu_switch the first time we probe in dsa_cpu_parse(), then we
    unbind the driver: dsa_dst_unapply() is called, and we rebind again.
    dst->cpu_switch now points to a freed "ds" structure, and so when we
    finally dereference it in dsa_cpu_port_ethtool_setup(), we oops.
    
    To fix this, simply set dst->cpu_switch to NULL in dsa_dst_unapply()
    which guarantees that we always correctly re-assign dst->cpu_switch in
    dsa_cpu_parse().
    
    Fixes: 9520ed8fb841 ("net: dsa: use cpu_switch instead of ds[0]")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a32f7198b20d0aaece709028327469fdbcb8d25a
Author: David S. Miller <davem@davemloft.net>
Date:   Sun Jun 4 21:41:10 2017 -0400

    ipv6: Fix leak in ipv6_gso_segment().
    
    
    [ Upstream commit e3e86b5119f81e5e2499bea7ea1ebe8ac6aab789 ]
    
    If ip6_find_1stfragopt() fails and we return an error we have to free
    up 'segs' because nobody else is going to.
    
    Fixes: 2423496af35d ("ipv6: Prevent overrun when parsing v6 header options")
    Reported-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7f87871c4b620615b8c68d3f639e3c106047538
Author: Eric Garver <e@erig.me>
Date:   Fri Jun 2 14:54:10 2017 -0400

    geneve: fix needed_headroom and max_mtu for collect_metadata
    
    
    [ Upstream commit 9a1c44d989bff4c992b8b9a112d9fda275ea5515 ]
    
    Since commit 9b4437a5b870 ("geneve: Unify LWT and netdev handling.")
    when using COLLECT_METADATA geneve devices are created with too small of
    a needed_headroom and too large of a max_mtu. This is because
    ip_tunnel_info_af() is not valid with the device level info when using
    COLLECT_METADATA and we mistakenly fall into the IPv4 case.
    
    For COLLECT_METADATA, always use the worst case of ipv6 since both
    sockets are created.
    
    Fixes: 9b4437a5b870 ("geneve: Unify LWT and netdev handling.")
    Signed-off-by: Eric Garver <e@erig.me>
    Acked-by: Pravin B Shelar <pshelar@ovn.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19456d4526558a83d7e7c0301b829ed998937bb0
Author: Soheil Hassas Yeganeh <soheil@google.com>
Date:   Fri Jun 2 12:38:22 2017 -0400

    sock: reset sk_err when the error queue is empty
    
    
    [ Upstream commit 38b257938ac6655d0d6333743303231b9c465ec1 ]
    
    Prior to f5f99309fa74 (sock: do not set sk_err in
    sock_dequeue_err_skb), sk_err was reset to the error of
    the skb on the head of the error queue.
    
    Applications, most notably ping, are relying on this
    behavior to reset sk_err for ICMP packets.
    
    Set sk_err to the ICMP error when there is an ICMP packet
    at the head of the error queue.
    
    Fixes: f5f99309fa74 (sock: do not set sk_err in sock_dequeue_err_skb)
    Reported-by: Cyril Hrubis <chrubis@suse.cz>
    Tested-by: Cyril Hrubis <chrubis@suse.cz>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ab7563eed885448eba9d2bea70f1c585bf7c710
Author: Liam McBirnie <mcbirnie.l@gmail.com>
Date:   Thu Jun 1 15:36:01 2017 +1000

    ip6_tunnel: fix traffic class routing for tunnels
    
    
    [ Upstream commit 5f733ee68f9a4df94775299ac6a7ab260704f6ed ]
    
    ip6_route_output() requires that the flowlabel contains the traffic
    class for policy routing.
    
    Commit 0e9a709560db ("ip6_tunnel, ip6_gre: fix setting of DSCP on
    encapsulated packets") removed the code which previously added the
    traffic class to the flowlabel.
    
    The traffic class is added here because only route lookup needs the
    flowlabel to contain the traffic class.
    
    Fixes: 0e9a709560db ("ip6_tunnel, ip6_gre: fix setting of DSCP on encapsulated packets")
    Signed-off-by: Liam McBirnie <liam.mcbirnie@boeing.com>
    Acked-by: Peter Dawson <peter.a.dawson@boeing.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35e08f6e2bfed4ac35b10df11fc9eb17cdb40354
Author: Mark Bloch <markb@mellanox.com>
Date:   Fri Jun 2 03:24:08 2017 +0300

    vxlan: fix use-after-free on deletion
    
    
    [ Upstream commit a53cb29b0af346af44e4abf13d7e59f807fba690 ]
    
    Adding a vxlan interface to a socket isn't symmetrical, while adding
    is done in vxlan_open() the deletion is done in vxlan_dellink().
    This can cause a use-after-free error when we close the vxlan
    interface before deleting it.
    
    We add vxlan_vs_del_dev() to match vxlan_vs_add_dev() and call
    it from vxlan_stop() to match the call from vxlan_open().
    
    Fixes: 56ef9c909b40 ("vxlan: Move socket initialization to within rtnl scope")
    Acked-by: Jiri Benc <jbenc@redhat.com>
    Tested-by: Roi Dayan <roid@mellanox.com>
    Signed-off-by: Mark Bloch <markb@mellanox.com>
    Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 905ae1b1e6d94e308ef96bfe50d72f5fb4044710
Author: Yuchung Cheng <ycheng@google.com>
Date:   Wed May 31 11:21:27 2017 -0700

    tcp: disallow cwnd undo when switching congestion control
    
    
    [ Upstream commit 44abafc4cc094214a99f860f778c48ecb23422fc ]
    
    When the sender switches its congestion control during loss
    recovery, if the recovery is spurious then it may incorrectly
    revert cwnd and ssthresh to the older values set by a previous
    congestion control. Consider a congestion control (like BBR)
    that does not use ssthresh and keeps it infinite: the connection
    may incorrectly revert cwnd to an infinite value when switching
    from BBR to another congestion control.
    
    This patch fixes it by disallowing such cwnd undo operation
    upon switching congestion control.  Note that undo_marker
    is not reset s.t. the packets that were incorrectly marked
    lost would be corrected. We only avoid undoing the cwnd in
    tcp_undo_cwnd_reduction().
    
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb62fe105bf344834ea5452c8348aba2bbd4d6ba
Author: Ganesh Goudar <ganeshgr@chelsio.com>
Date:   Wed May 31 18:26:28 2017 +0530

    cxgb4: avoid enabling napi twice to the same queue
    
    
    [ Upstream commit e7519f9926f1d0d11c776eb0475eb098c7760f68 ]
    
    Take uld mutex to avoid race between cxgb_up() and
    cxgb4_register_uld() to enable napi for the same uld
    queue.
    
    Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d935063ac4d6f088725351e569495b5e99f3b957
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Wed May 31 13:15:41 2017 +0100

    ipv6: xfrm: Handle errors reported by xfrm6_find_1stfragopt()
    
    
    [ Upstream commit 6e80ac5cc992ab6256c3dae87f7e57db15e1a58c ]
    
    xfrm6_find_1stfragopt() may now return an error code and we must
    not treat it as a length.
    
    Fixes: 2423496af35d ("ipv6: Prevent overrun when parsing v6 header options")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Acked-by: Craig Gallek <kraig@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce45e4f99594d1c9243a6eb7a5947c22af845a0b
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Jun 1 18:02:39 2017 -0700

    net: systemport: Fix missing Wake-on-LAN interrupt for SYSTEMPORT Lite
    
    
    [ Upstream commit d31353cd753c443ace5723d6878a39f393a0c136 ]
    
    On SYSTEMPORT Lite, since we have the main interrupt source in the first
    cell, the second cell is the Wake-on-LAN interrupt, yet the code was not
    properly updated to fetch the second cell, and instead looked at the
    third and non-existing cell for Wake-on-LAN.
    
    Fixes: 44a4524c54af ("net: systemport: Add support for SYSTEMPORT Lite")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f9f0e2822e9a1ec29c0d60d2e943f2b9d49cc5d
Author: Lance Richardson <lrichard@redhat.com>
Date:   Mon May 29 13:25:57 2017 -0400

    vxlan: eliminate cached dst leak
    
    
    [ Upstream commit 35cf2845563c1aaa01d27bd34d64795c4ae72700 ]
    
    After commit 0c1d70af924b ("net: use dst_cache for vxlan device"),
    cached dst entries could be leaked when more than one remote was
    present for a given vxlan_fdb entry, causing subsequent netns
    operations to block indefinitely and "unregister_netdevice: waiting
    for lo to become free." messages to appear in the kernel log.
    
    Fix by properly releasing cached dst and freeing resources in this
    case.
    
    Fixes: 0c1d70af924b ("net: use dst_cache for vxlan device")
    Signed-off-by: Lance Richardson <lrichard@redhat.com>
    Acked-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 8b8fd1831b0172a54f33b17b5d719e17a8cf9770
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Thu Jun 1 18:07:55 2017 +0300

    net: bridge: start hello timer only if device is up
    
    
    [ Upstream commit aeb073241fe7a2b932e04e20c60e47718332877f ]
    
    When the transition of NO_STP -> KERNEL_STP was fixed by always calling
    mod_timer in br_stp_start, it introduced a new regression which causes
    the timer to be armed even when the bridge is down, and since we stop
    the timers in its ndo_stop() function, they never get disabled if the
    device is destroyed before it's upped.
    
    To reproduce:
    $ while :; do ip l add br0 type bridge hello_time 100; brctl stp br0 on;
    ip l del br0; done;
    
    CC: Xin Long <lucien.xin@gmail.com>
    CC: Ivan Vecera <cera@cera.cz>
    CC: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Reported-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Fixes: 6d18c732b95c ("bridge: start hello_timer when enabling KERNEL_STP in br_stp_start")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5f67e441e3888219c625c39f93e9bba83d0828a
Author: Mintz, Yuval <Yuval.Mintz@cavium.com>
Date:   Thu Jun 1 15:57:56 2017 +0300

    bnx2x: Fix Multi-Cos
    
    
    [ Upstream commit 3968d38917eb9bd0cd391265f6c9c538d9b33ffa ]
    
    Apparently multi-cos isn't working for bnx2x quite some time -
    driver implements ndo_select_queue() to allow queue-selection
    for FCoE, but the regular L2 flow would cause it to modulo the
    fallback's result by the number of queues.
    The fallback would return a queue matching the needed tc
    [via __skb_tx_hash()], but since the modulo is by the number of TSS
    queues where number of TCs is not accounted, transmission would always
    be done by a queue configured into using TC0.
    
    Fixes: ada7c19e6d27 ("bnx2x: use XPS if possible for bnx2x_select_queue instead of pure hash")
    Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>