commit 4bd4cfc5210ef2f9002e54a16334a56acd295e4b
Author: Sasha Levin <alexander.levin@verizon.com>
Date:   Thu Jun 15 09:20:49 2017 -0400

    Linux 4.1.41
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c1dd3f51ad77ea76dddb72af8add962f579b8551
Author: Keno Fischer <keno@juliacomputing.com>
Date:   Tue Jan 24 15:17:48 2017 -0800

    mm/huge_memory.c: respect FOLL_FORCE/FOLL_COW for thp
    
    [ Upstream commit 8310d48b125d19fcd9521d83b8293e63eb1646aa ]
    
    In commit 19be0eaffa3a ("mm: remove gup_flags FOLL_WRITE games from
    __get_user_pages()"), the mm code was changed from unsetting FOLL_WRITE
    after a COW was resolved to setting the (newly introduced) FOLL_COW
    instead.  Simultaneously, the check in gup.c was updated to still allow
    writes with FOLL_FORCE set if FOLL_COW had also been set.
    
    However, a similar check in huge_memory.c was forgotten.  As a result,
    remote memory writes to ro regions of memory backed by transparent huge
    pages cause an infinite loop in the kernel (handle_mm_fault sets
    FOLL_COW and returns 0 causing a retry, but follow_trans_huge_pmd bails
    out immidiately because `(flags & FOLL_WRITE) && !pmd_write(*pmd)` is
    true.
    
    While in this state the process is stil SIGKILLable, but little else
    works (e.g.  no ptrace attach, no other signals).  This is easily
    reproduced with the following code (assuming thp are set to always):
    
        #include <assert.h>
        #include <fcntl.h>
        #include <stdint.h>
        #include <stdio.h>
        #include <string.h>
        #include <sys/mman.h>
        #include <sys/stat.h>
        #include <sys/types.h>
        #include <sys/wait.h>
        #include <unistd.h>
    
        #define TEST_SIZE 5 * 1024 * 1024
    
        int main(void) {
          int status;
          pid_t child;
          int fd = open("/proc/self/mem", O_RDWR);
          void *addr = mmap(NULL, TEST_SIZE, PROT_READ,
                            MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);
          assert(addr != MAP_FAILED);
          pid_t parent_pid = getpid();
          if ((child = fork()) == 0) {
            void *addr2 = mmap(NULL, TEST_SIZE, PROT_READ | PROT_WRITE,
                               MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);
            assert(addr2 != MAP_FAILED);
            memset(addr2, 'a', TEST_SIZE);
            pwrite(fd, addr2, TEST_SIZE, (uintptr_t)addr);
            return 0;
          }
          assert(child == waitpid(child, &status, 0));
          assert(WIFEXITED(status) && WEXITSTATUS(status) == 0);
          return 0;
        }
    
    Fix this by updating follow_trans_huge_pmd in huge_memory.c analogously
    to the update in gup.c in the original commit.  The same pattern exists
    in follow_devmap_pmd.  However, we should not be able to reach that
    check with FOLL_COW set, so add WARN_ONCE to make sure we notice if we
    ever do.
    
    [akpm@linux-foundation.org: coding-style fixes]
    Link: http://lkml.kernel.org/r/20170106015025.GA38411@juliacomputing.com
    Signed-off-by: Keno Fischer <keno@juliacomputing.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Greg Thelen <gthelen@google.com>
    Cc: Nicholas Piggin <npiggin@gmail.com>
    Cc: Willy Tarreau <w@1wt.eu>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit afeb39160249eed5b585b4e9c8227351725b29fd
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Nov 17 10:49:31 2016 +0100

    xc2028: Fix use-after-free bug properly
    
    [ Upstream commit 22a1e7783e173ab3d86018eb590107d68df46c11 ]
    
    The commit 8dfbcc4351a0 ("[media] xc2028: avoid use after free") tried
    to address the reported use-after-free by clearing the reference.
    
    However, it's clearing the wrong pointer; it sets NULL to
    priv->ctrl.fname, but it's anyway overwritten by the next line
    memcpy(&priv->ctrl, p, sizeof(priv->ctrl)).
    
    OTOH, the actual code accessing the freed string is the strcmp() call
    with priv->fname:
            if (!firmware_name[0] && p->fname &&
                priv->fname && strcmp(p->fname, priv->fname))
                    free_firmware(priv);
    
    where priv->fname points to the previous file name, and this was
    already freed by kfree().
    
    For fixing the bug properly, this patch does the following:
    
    - Keep the copy of firmware file name in only priv->fname,
      priv->ctrl.fname isn't changed;
    - The allocation is done only when the firmware gets loaded;
    - The kfree() is called in free_firmware() commonly
    
    Fixes: commit 8dfbcc4351a0 ('[media] xc2028: avoid use after free')
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5eef36af59740aa26f9a39ff8124134ec3e0c4ef
Author: Matt Ranostay <matt.ranostay@konsulko.com>
Date:   Thu Apr 13 23:21:56 2017 -0700

    iio: proximity: as3935: fix as3935_write
    
    [ Upstream commit 84ca8e364acb26aba3292bc113ca8ed4335380fd ]
    
    AS3935_WRITE_DATA macro bit is incorrect and the actual write
    sequence is two leading zeros.
    
    Cc: George McCollister <george.mccollister@gmail.com>
    Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e8701e0f6768291622b01a3083c3a7e6761f6c51
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue May 2 13:58:53 2017 +0300

    ipx: call ipxitf_put() in ioctl error path
    
    [ Upstream commit ee0d8d8482345ff97a75a7d747efc309f13b0d80 ]
    
    We should call ipxitf_put() if the copy_to_user() fails.
    
    Reported-by: 李强 <liqiang6-s@360.cn>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 709dcf11a35318f4d9b8aeb0c5c144fd59fbabc1
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Thu Jun 16 15:57:01 2016 +0300

    sched/fair: Initialize throttle_count for new task-groups lazily
    
    [ Upstream commit 094f469172e00d6ab0a3130b0e01c83b3cf3a98d ]
    
    Cgroup created inside throttled group must inherit current throttle_count.
    Broken throttle_count allows to nominate throttled entries as a next buddy,
    later this leads to null pointer dereference in pick_next_task_fair().
    
    This patch initialize cfs_rq->throttle_count at first enqueue: laziness
    allows to skip locking all rq at group creation. Lazy approach also allows
    to skip full sub-tree scan at throttling hierarchy (not in this patch).
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: bsegall@google.com
    Link: http://lkml.kernel.org/r/146608182119.21870.8439834428248129633.stgit@buzz
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0f665ed5581f1c4e6cf1353484a0f625b2bf88a0
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Thu Jun 16 15:57:15 2016 +0300

    sched/fair: Do not announce throttled next buddy in dequeue_task_fair()
    
    [ Upstream commit 754bd598be9bbc953bc709a9e8ed7f3188bfb9d7 ]
    
    Hierarchy could be already throttled at this point. Throttled next
    buddy could trigger a NULL pointer dereference in pick_next_task_fair().
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Ben Segall <bsegall@google.com>
    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/146608183552.21905.15924473394414832071.stgit@buzz
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 953334de0819acba9cfebb3a7fd190a9b7d6b7e5
Author: Pavel Roskin <plroskin@gmail.com>
Date:   Thu Apr 13 14:54:23 2017 -0700

    iio: dac: ad7303: fix channel description
    
    [ Upstream commit ce420fd4251809b4c3119b3b20c8b13bd8eba150 ]
    
    realbits, storagebits and shift should be numbers, not ASCII characters.
    
    Signed-off-by: Pavel Roskin <plroskin@gmail.com>
    Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 60e2e499e37da15bf6d81a9c5f1e76e750006850
Author: Brian Norris <briannorris@chromium.org>
Date:   Fri Apr 14 14:51:17 2017 -0700

    mwifiex: pcie: fix cmd_buf use-after-free in remove/reset
    
    [ Upstream commit 3c8cb9ad032d737b874e402c59eb51e3c991a144 ]
    
    Command buffers (skb's) are allocated by the main driver, and freed upon
    the last use. That last use is often in mwifiex_free_cmd_buffer(). In
    the meantime, if the command buffer gets used by the PCI driver, we map
    it as DMA-able, and store the mapping information in the 'cb' memory.
    
    However, if a command was in-flight when resetting the device (and
    therefore was still mapped), we don't get a chance to unmap this memory
    until after the core has cleaned up its command handling.
    
    Let's keep a refcount within the PCI driver, so we ensure the memory
    only gets freed after we've finished unmapping it.
    
    Noticed by KASAN when forcing a reset via:
    
      echo 1 > /sys/bus/pci/.../reset
    
    The same code path can presumably be exercised in remove() and
    shutdown().
    
    [  205.390377] mwifiex_pcie 0000:01:00.0: info: shutdown mwifiex...
    [  205.400393] ==================================================================
    [  205.407719] BUG: KASAN: use-after-free in mwifiex_unmap_pci_memory.isra.14+0x4c/0x100 [mwifiex_pcie] at addr ffffffc0ad471b28
    [  205.419040] Read of size 16 by task bash/1913
    [  205.423421] =============================================================================
    [  205.431625] BUG skbuff_head_cache (Tainted: G    B          ): kasan: bad access detected
    [  205.439815] -----------------------------------------------------------------------------
    [  205.439815]
    [  205.449534] INFO: Allocated in __build_skb+0x48/0x114 age=1311 cpu=4 pid=1913
    [  205.456709]  alloc_debug_processing+0x124/0x178
    [  205.461282]  ___slab_alloc.constprop.58+0x528/0x608
    [  205.466196]  __slab_alloc.isra.54.constprop.57+0x44/0x54
    [  205.471542]  kmem_cache_alloc+0xcc/0x278
    [  205.475497]  __build_skb+0x48/0x114
    [  205.479019]  __netdev_alloc_skb+0xe0/0x170
    [  205.483244]  mwifiex_alloc_cmd_buffer+0x68/0xdc [mwifiex]
    [  205.488759]  mwifiex_init_fw+0x40/0x6cc [mwifiex]
    [  205.493584]  _mwifiex_fw_dpc+0x158/0x520 [mwifiex]
    [  205.498491]  mwifiex_reinit_sw+0x2c4/0x398 [mwifiex]
    [  205.503510]  mwifiex_pcie_reset_notify+0x114/0x15c [mwifiex_pcie]
    [  205.509643]  pci_reset_notify+0x5c/0x6c
    [  205.513519]  pci_reset_function+0x6c/0x7c
    [  205.517567]  reset_store+0x68/0x98
    [  205.521003]  dev_attr_store+0x54/0x60
    [  205.524705]  sysfs_kf_write+0x9c/0xb0
    [  205.528413] INFO: Freed in __kfree_skb+0xb0/0xbc age=131 cpu=4 pid=1913
    [  205.535064]  free_debug_processing+0x264/0x370
    [  205.539550]  __slab_free+0x84/0x40c
    [  205.543075]  kmem_cache_free+0x1c8/0x2a0
    [  205.547030]  __kfree_skb+0xb0/0xbc
    [  205.550465]  consume_skb+0x164/0x178
    [  205.554079]  __dev_kfree_skb_any+0x58/0x64
    [  205.558304]  mwifiex_free_cmd_buffer+0xa0/0x158 [mwifiex]
    [  205.563817]  mwifiex_shutdown_drv+0x578/0x5c4 [mwifiex]
    [  205.569164]  mwifiex_shutdown_sw+0x178/0x310 [mwifiex]
    [  205.574353]  mwifiex_pcie_reset_notify+0xd4/0x15c [mwifiex_pcie]
    [  205.580398]  pci_reset_notify+0x5c/0x6c
    [  205.584274]  pci_dev_save_and_disable+0x24/0x6c
    [  205.588837]  pci_reset_function+0x30/0x7c
    [  205.592885]  reset_store+0x68/0x98
    [  205.596324]  dev_attr_store+0x54/0x60
    [  205.600017]  sysfs_kf_write+0x9c/0xb0
    ...
    [  205.800488] Call trace:
    [  205.802980] [<ffffffc00020a69c>] dump_backtrace+0x0/0x190
    [  205.808415] [<ffffffc00020a96c>] show_stack+0x20/0x28
    [  205.813506] [<ffffffc0005d020c>] dump_stack+0xa4/0xcc
    [  205.818598] [<ffffffc0003be44c>] print_trailer+0x158/0x168
    [  205.824120] [<ffffffc0003be5f0>] object_err+0x4c/0x5c
    [  205.829210] [<ffffffc0003c45bc>] kasan_report+0x334/0x500
    [  205.834641] [<ffffffc0003c3994>] check_memory_region+0x20/0x14c
    [  205.840593] [<ffffffc0003c3b14>] __asan_loadN+0x14/0x1c
    [  205.845879] [<ffffffbffc46171c>] mwifiex_unmap_pci_memory.isra.14+0x4c/0x100 [mwifiex_pcie]
    [  205.854282] [<ffffffbffc461864>] mwifiex_pcie_delete_cmdrsp_buf+0x94/0xa8 [mwifiex_pcie]
    [  205.862421] [<ffffffbffc462028>] mwifiex_pcie_free_buffers+0x11c/0x158 [mwifiex_pcie]
    [  205.870302] [<ffffffbffc4620d4>] mwifiex_pcie_down_dev+0x70/0x80 [mwifiex_pcie]
    [  205.877736] [<ffffffbffc1397a8>] mwifiex_shutdown_sw+0x190/0x310 [mwifiex]
    [  205.884658] [<ffffffbffc4606b4>] mwifiex_pcie_reset_notify+0xd4/0x15c [mwifiex_pcie]
    [  205.892446] [<ffffffc000635f54>] pci_reset_notify+0x5c/0x6c
    [  205.898048] [<ffffffc00063a044>] pci_dev_save_and_disable+0x24/0x6c
    [  205.904350] [<ffffffc00063cf0c>] pci_reset_function+0x30/0x7c
    [  205.910134] [<ffffffc000641118>] reset_store+0x68/0x98
    [  205.915312] [<ffffffc000771588>] dev_attr_store+0x54/0x60
    [  205.920750] [<ffffffc00046f53c>] sysfs_kf_write+0x9c/0xb0
    [  205.926182] [<ffffffc00046dfb0>] kernfs_fop_write+0x184/0x1f8
    [  205.931963] [<ffffffc0003d64f4>] __vfs_write+0x6c/0x17c
    [  205.937221] [<ffffffc0003d7164>] vfs_write+0xf0/0x1c4
    [  205.942310] [<ffffffc0003d7da0>] SyS_write+0x78/0xd8
    [  205.947312] [<ffffffc000204634>] el0_svc_naked+0x24/0x28
    ...
    [  205.998268] ==================================================================
    
    This bug has been around in different forms for a while. It was sort of
    noticed in commit 955ab095c51a ("mwifiex: Do not kfree cmd buf while
    unregistering PCIe"), but it just fixed the double-free, without
    acknowledging the potential for use-after-free.
    
    Fixes: fc3314609047 ("mwifiex: use pci_alloc/free_consistent APIs for PCIe")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 036ab4111761ca02eb9b99b9db5ca41daaef8c06
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Sun Apr 16 19:32:07 2017 -0500

    rtlwifi: rtl8821ae: setup 8812ae RFE according to device type
    
    [ Upstream commit 46cfa2148e7371c537efff1a1c693e58f523089d ]
    
    Current channel switch implementation sets 8812ae RFE reg value assuming
    that device always has type 2.
    
    Extend possible RFE types set and write corresponding reg values.
    
    Source for new code is
    http://dlcdnet.asus.com/pub/ASUS/wireless/PCE-AC51/DR_PCE_AC51_20232801152016.zip
    
    Signed-off-by: Maxim Samoylov <max7255@gmail.com>
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: Stable <stable@vger.kernel.org>
    Cc: Yan-Hsuan Chuang <yhchuang@realtek.com>
    Cc: Pkshih <pkshih@realtek.com>
    Cc: Birming Chiu <birming@realtek.com>
    Cc: Shaofu <shaofu@realtek.com>
    Cc: Steven Ting <steventing@realtek.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit df8198865a0fad311689086b2d25e524bb178788
Author: Marc Dietrich <marvin24@gmx.de>
Date:   Fri Dec 9 10:20:38 2016 +0100

    ARM: tegra: paz00: Mark panel regulator as enabled on boot
    
    [ Upstream commit 0c18927f51f4d390abdcf385bff5f995407ee732 ]
    
    Current U-Boot enables the display already. Marking the regulator as
    enabled on boot fixes sporadic panel initialization failures.
    
    Signed-off-by: Marc Dietrich <marvin24@gmx.de>
    Tested-by: Misha Komarovskiy <zombah@gmail.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit fda7c899dd7618887e18953f3499f131b6d5da66
Author: Michal Hocko <mhocko@suse.com>
Date:   Mon May 8 15:57:24 2017 -0700

    fs/xattr.c: zero out memory copied to userspace in getxattr
    
    [ Upstream commit 81be3dee96346fbe08c31be5ef74f03f6b63cf68 ]
    
    getxattr uses vmalloc to allocate memory if kzalloc fails.  This is
    filled by vfs_getxattr and then copied to the userspace.  vmalloc,
    however, doesn't zero out the memory so if the specific implementation
    of the xattr handler is sloppy we can theoretically expose a kernel
    memory.  There is no real sign this is really the case but let's make
    sure this will not happen and use vzalloc instead.
    
    Fixes: 779302e67835 ("fs/xattr.c:getxattr(): improve handling of allocation failures")
    Link: http://lkml.kernel.org/r/20170306103327.2766-1-mhocko@kernel.org
    Acked-by: Kees Cook <keescook@chromium.org>
    Reported-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Cc: <stable@vger.kernel.org>    [3.6+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 273225634fef092a063010d0eb48232bda2895af
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Thu Apr 13 14:10:15 2017 -0600

    vfio/type1: Remove locked page accounting workqueue
    
    [ Upstream commit 0cfef2b7410b64d7a430947e0b533314c4f97153 ]
    
    If the mmap_sem is contented then the vfio type1 IOMMU backend will
    defer locked page accounting updates to a workqueue task.  This has a
    few problems and depending on which side the user tries to play, they
    might be over-penalized for unmaps that haven't yet been accounted or
    race the workqueue to enter more mappings than they're allowed.  The
    original intent of this workqueue mechanism seems to be focused on
    reducing latency through the ioctl, but we cannot do so at the cost
    of correctness.  Remove this workqueue mechanism and update the
    callers to allow for failure.  We can also now recheck the limit under
    write lock to make sure we don't exceed it.
    
    vfio_pin_pages_remote() also now necessarily includes an unwind path
    which we can jump to directly if the consecutive page pinning finds
    that we're exceeding the user's memory limits.  This avoids the
    current lazy approach which does accounting and mapping up to the
    fault, only to return an error on the next iteration to unwind the
    entire vfio_dma.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Peter Xu <peterx@redhat.com>
    Reviewed-by: Kirti Wankhede <kwankhede@nvidia.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 358fa411ba9a40c1d78c3ec85e95343bc415c5d8
Author: Stephan Mueller <smueller@chronox.de>
Date:   Mon Apr 24 11:15:23 2017 +0200

    crypto: algif_aead - Require setkey before accept(2)
    
    [ Upstream commit 2a2a251f110576b1d89efbd0662677d7e7db21a8 ]
    
    Some cipher implementations will crash if you try to use them
    without calling setkey first.  This patch adds a check so that
    the accept(2) call will fail with -ENOKEY if setkey hasn't been
    done on the socket yet.
    
    Fixes: 400c40cf78da ("crypto: algif - add AEAD support")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Stephan Mueller <smueller@chronox.de>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e0b7d5eae185f302b319cd9f7319584b27ed83b2
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Apr 26 12:23:04 2017 +0200

    staging: gdm724x: gdm_mux: fix use-after-free on module unload
    
    [ Upstream commit b58f45c8fc301fe83ee28cad3e64686c19e78f1c ]
    
    Make sure to deregister the USB driver before releasing the tty driver
    to avoid use-after-free in the USB disconnect callback where the tty
    devices are deregistered.
    
    Fixes: 61e121047645 ("staging: gdm7240: adding LTE USB driver")
    Cc: stable <stable@vger.kernel.org>     # 3.12
    Cc: Won Kang <wkang77@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 47655216cdf4666a274f41ef64adfb2b91a0890e
Author: Nicolai Hähnle <nicolai.haehnle@amd.com>
Date:   Sat Feb 18 22:59:56 2017 +0100

    drm/ttm: fix use-after-free races in vm fault handling
    
    [ Upstream commit 3089c1df10e2931b1d72d2ffa7d86431084c86b3 ]
    
    The vm fault handler relies on the fact that the VMA owns a reference
    to the BO. However, once mmap_sem is released, other tasks are free to
    destroy the VMA, which can lead to the BO being freed. Fix two code
    paths where that can happen, both related to vm fault retries.
    
    Found via a lock debugging warning which flagged &bo->wu_mutex as
    locked while being destroyed.
    
    Fixes: cbe12e74ee4e ("drm/ttm: Allow vm fault retries")
    Signed-off-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 46527f8d11fa64d3b493d03fc5c3b5ecc7d4d37a
Author: Jin Qian <jinqian@google.com>
Date:   Tue Apr 25 16:28:48 2017 -0700

    f2fs: sanity check segment count
    
    [ Upstream commit b9dd46188edc2f0d1f37328637860bb65a771124 ]
    
    F2FS uses 4 bytes to represent block address. As a result, supported
    size of disk is 16 TB and it equals to 16 * 1024 * 1024 / 2 segments.
    
    Signed-off-by: Jin Qian <jinqian@google.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2b674f4ecce8f0e8181c3daef3339ce836ebce72
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Mon May 8 10:12:13 2017 -0700

    ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf
    
    [ Upstream commit 242d3a49a2a1a71d8eb9f953db1bcaa9d698ce00 ]
    
    For each netns (except init_net), we initialize its null entry
    in 3 places:
    
    1) The template itself, as we use kmemdup()
    2) Code around dst_init_metrics() in ip6_route_net_init()
    3) ip6_route_dev_notify(), which is supposed to initialize it after
       loopback registers
    
    Unfortunately the last one still happens in a wrong order because
    we expect to initialize net->ipv6.ip6_null_entry->rt6i_idev to
    net->loopback_dev's idev, thus we have to do that after we add
    idev to loopback. However, this notifier has priority == 0 same as
    ipv6_dev_notf, and ipv6_dev_notf is registered after
    ip6_route_dev_notifier so it is called actually after
    ip6_route_dev_notifier. This is similar to commit 2f460933f58e
    ("ipv6: initialize route null entry in addrconf_init()") which
    fixes init_net.
    
    Fix it by picking a smaller priority for ip6_route_dev_notifier.
    Also, we have to release the refcnt accordingly when unregistering
    loopback_dev because device exit functions are called before subsys
    exit functions.
    
    Acked-by: David Ahern <dsahern@gmail.com>
    Tested-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4aaeda7f5c4f34bb2746cc3b10a7ee605571c539
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Wed May 3 22:07:31 2017 -0700

    ipv6: initialize route null entry in addrconf_init()
    
    [ Upstream commit 2f460933f58eee3393aba64f0f6d14acb08d1724 ]
    
    Andrey reported a crash on init_net.ipv6.ip6_null_entry->rt6i_idev
    since it is always NULL.
    
    This is clearly wrong, we have code to initialize it to loopback_dev,
    unfortunately the order is still not correct.
    
    loopback_dev is registered very early during boot, we lose a chance
    to re-initialize it in notifier. addrconf_init() is called after
    ip6_route_init(), which means we have no chance to correct it.
    
    Fix it by moving this initialization explicitly after
    ipv6_add_dev(init_net.loopback_dev) in addrconf_init().
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1d9afaa5c0a8ae28b54afee5651fb0308ac69160
Author: Michal Schmidt <mschmidt@redhat.com>
Date:   Thu May 4 16:48:58 2017 +0200

    rtnetlink: NUL-terminate IFLA_PHYS_PORT_NAME string
    
    [ Upstream commit 77ef033b687c3e030017c94a29bf6ea3aaaef678 ]
    
    IFLA_PHYS_PORT_NAME is a string attribute, so terminate it with \0.
    Otherwise libnl3 fails to validate netlink messages with this attribute.
    "ip -detail a" assumes too that the attribute is NUL-terminated when
    printing it. It often was, due to padding.
    
    I noticed this as libvirtd failing to start on a system with sfc driver
    after upgrading it to Linux 4.11, i.e. when sfc added support for
    phys_port_name.
    
    Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 226d200531f46df1f8ce57c556df2b723548bf41
Author: Alexander Potapenko <glider@google.com>
Date:   Wed May 3 17:06:58 2017 +0200

    ipv4, ipv6: ensure raw socket message is big enough to hold an IP header
    
    [ Upstream commit 86f4c90a1c5c1493f07f2d12c1079f5bf01936f2 ]
    
    raw_send_hdrinc() and rawv6_send_hdrinc() expect that the buffer copied
    from the userspace contains the IPv4/IPv6 header, so if too few bytes are
    copied, parts of the header may remain uninitialized.
    
    This bug has been detected with KMSAN.
    
    For the record, the KMSAN report:
    
    ==================================================================
    BUG: KMSAN: use of unitialized memory in nf_ct_frag6_gather+0xf5a/0x44a0
    inter: 0
    CPU: 0 PID: 1036 Comm: probe Not tainted 4.11.0-rc5+ #2455
    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+0x16b/0x1e0 mm/kmsan/kmsan.c:1078
     __kmsan_warning_32+0x5c/0xa0 mm/kmsan/kmsan_instr.c:510
     nf_ct_frag6_gather+0xf5a/0x44a0 net/ipv6/netfilter/nf_conntrack_reasm.c:577
     ipv6_defrag+0x1d9/0x280 net/ipv6/netfilter/nf_defrag_ipv6_hooks.c:68
     nf_hook_entry_hookfn ./include/linux/netfilter.h:102
     nf_hook_slow+0x13f/0x3c0 net/netfilter/core.c:310
     nf_hook ./include/linux/netfilter.h:212
     NF_HOOK ./include/linux/netfilter.h:255
     rawv6_send_hdrinc net/ipv6/raw.c:673
     rawv6_sendmsg+0x2fcb/0x41a0 net/ipv6/raw.c:919
     inet_sendmsg+0x3f8/0x6d0 net/ipv4/af_inet.c:762
     sock_sendmsg_nosec net/socket.c:633
     sock_sendmsg net/socket.c:643
     SYSC_sendto+0x6a5/0x7c0 net/socket.c:1696
     SyS_sendto+0xbc/0xe0 net/socket.c:1664
     do_syscall_64+0x72/0xa0 arch/x86/entry/common.c:285
     entry_SYSCALL64_slow_path+0x25/0x25 arch/x86/entry/entry_64.S:246
    RIP: 0033:0x436e03
    RSP: 002b:00007ffce48baf38 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00000000004002b0 RCX: 0000000000436e03
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003
    RBP: 00007ffce48baf90 R08: 00007ffce48baf50 R09: 000000000000001c
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000401790 R14: 0000000000401820 R15: 0000000000000000
    origin: 00000000d9400053
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:362
     kmsan_internal_poison_shadow+0xb1/0x1a0 mm/kmsan/kmsan.c:257
     kmsan_poison_shadow+0x6d/0xc0 mm/kmsan/kmsan.c:270
     slab_alloc_node mm/slub.c:2735
     __kmalloc_node_track_caller+0x1f4/0x390 mm/slub.c:4341
     __kmalloc_reserve net/core/skbuff.c:138
     __alloc_skb+0x2cd/0x740 net/core/skbuff.c:231
     alloc_skb ./include/linux/skbuff.h:933
     alloc_skb_with_frags+0x209/0xbc0 net/core/skbuff.c:4678
     sock_alloc_send_pskb+0x9ff/0xe00 net/core/sock.c:1903
     sock_alloc_send_skb+0xe4/0x100 net/core/sock.c:1920
     rawv6_send_hdrinc net/ipv6/raw.c:638
     rawv6_sendmsg+0x2918/0x41a0 net/ipv6/raw.c:919
     inet_sendmsg+0x3f8/0x6d0 net/ipv4/af_inet.c:762
     sock_sendmsg_nosec net/socket.c:633
     sock_sendmsg net/socket.c:643
     SYSC_sendto+0x6a5/0x7c0 net/socket.c:1696
     SyS_sendto+0xbc/0xe0 net/socket.c:1664
     do_syscall_64+0x72/0xa0 arch/x86/entry/common.c:285
     return_from_SYSCALL_64+0x0/0x6a arch/x86/entry/entry_64.S:246
    ==================================================================
    
    , triggered by the following syscalls:
      socket(PF_INET6, SOCK_RAW, IPPROTO_RAW) = 3
      sendto(3, NULL, 0, 0, {sa_family=AF_INET6, sin6_port=htons(0), inet_pton(AF_INET6, "ff00::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EPERM
    
    A similar report is triggered in net/ipv4/raw.c if we use a PF_INET socket
    instead of a PF_INET6 one.
    
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 14e82f4ce5bbff73094a5f061aef7a2b805bac6c
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon May 1 15:29:48 2017 -0700

    tcp: fix wraparound issue in tcp_lp
    
    [ Upstream commit a9f11f963a546fea9144f6a6d1a307e814a387e7 ]
    
    Be careful when comparing tcp_time_stamp to some u32 quantity,
    otherwise result can be surprising.
    
    Fixes: 7c106d7e782b ("[TCP]: TCP Low Priority congestion control")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 38853e5c3775353d095a338a2a7c340a95911d28
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Apr 26 17:15:40 2017 -0700

    tcp: do not underestimate skb->truesize in tcp_trim_head()
    
    [ Upstream commit 7162fb242cb8322beb558828fd26b33c3e9fc805 ]
    
    Andrey found a way to trigger the WARN_ON_ONCE(delta < len) in
    skb_try_coalesce() using syzkaller and a filter attached to a TCP
    socket over loopback interface.
    
    I believe one issue with looped skbs is that tcp_trim_head() can end up
    producing skb with under estimated truesize.
    
    It hardly matters for normal conditions, since packets sent over
    loopback are never truncated.
    
    Bytes trimmed from skb->head should not change skb truesize, since
    skb->head is not reallocated.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 918d8536e126b9eefde4613907be768c2d9e59de
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 2 11:37:04 2017 +0100

    ALSA: hda - Fix deadlock of controller device lock at unbinding
    
    [ Upstream commit ab949d519601880fd46e8bc1445d6a453bf2dc09 ]
    
    Imre Deak reported a deadlock of HD-audio driver at unbinding while
    it's still in probing.  Since we probe the codecs asynchronously in a
    work, the codec driver probe may still be kicked off while the
    controller itself is being unbound.  And, azx_remove() tries to
    process all pending tasks via cancel_work_sync() for fixing the other
    races (see commit [0b8c82190c12: ALSA: hda - Cancel probe work instead
    of flush at remove]), now we may meet a bizarre deadlock:
    
    Unbind snd_hda_intel via sysfs:
      device_release_driver() ->
        device_lock(snd_hda_intel) ->
          azx_remove() ->
            cancel_work_sync(azx_probe_work)
    
    azx_probe_work():
      codec driver probe() ->
         __driver_attach() ->
           device_lock(snd_hda_intel)
    
    This deadlock is caused by the fact that both device_release_driver()
    and driver_probe_device() take both the device and its parent locks at
    the same time.  The codec device sets the controller device as its
    parent, and this lock is taken before the probe() callback is called,
    while the controller remove() callback gets called also with the same
    lock.
    
    In this patch, as an ugly workaround, we unlock the controller device
    temporarily during cancel_work_sync() call.  The race against another
    bind call should be still suppressed by the parent's device lock.
    
    Reported-by: Imre Deak <imre.deak@intel.com>
    Fixes: 0b8c82190c12 ("ALSA: hda - Cancel probe work instead of flush at remove")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1c370084c6f3ad44e98ab6dfb4ef57ee8a031eaa
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Dec 16 10:09:39 2016 +0100

    staging: emxx_udc: remove incorrect __init annotations
    
    [ Upstream commit 4f3445067d5f78fb8d1970b02610f85c2f377ea4 ]
    
    The probe function is not marked __init, but some other functions
    are. This leads to a warning on older compilers (e.g. gcc-4.3),
    and can cause executing freed memory when built with those
    compilers:
    
    WARNING: drivers/staging/emxx_udc/emxx_udc.o(.text+0x2d78): Section mismatch in reference from the function nbu2ss_drv_probe() to the function .init.text:nbu2ss_drv_contest_init()
    
    This removes the annotations.
    
    Fixes: 33aa8d45a4fe ("staging: emxx_udc: Add Emma Mobile USB Gadget driver")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8602853345b73283cd8825cf356b1600b6adfe6a
Author: Igor Pylypiv <igor.pylypiv@gmail.com>
Date:   Mon Jan 30 21:39:54 2017 -0800

    staging: wlan-ng: add missing byte order conversion
    
    [ Upstream commit 2c474b8579e9b67ff72b2bcefce9f53c7f4469d4 ]
    
    Conversion macros le16_to_cpu was removed and that caused new sparse warning
    
    sparse output:
    drivers/staging/wlan-ng/p80211netdev.c:241:44: warning: incorrect type in argument 2 (different base types)
    drivers/staging/wlan-ng/p80211netdev.c:241:44:    expected unsigned short [unsigned] [usertype] fc
    drivers/staging/wlan-ng/p80211netdev.c:241:44:    got restricted __le16 [usertype] fc
    
    Fixes: 7ad82572348c ("staging:wlan-ng:Fix sparse warning")
    Signed-off-by: Igor Pylypiv <igor.pylypiv@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit bd253cf639297a0bcac86b6c6ceb82e27975bed5
Author: James Hughes <james.hughes@raspberrypi.org>
Date:   Tue Apr 25 10:15:06 2017 +0100

    brcmfmac: Make skb header writable before use
    
    [ Upstream commit 9cc4b7cb86cbcc6330a3faa8cd65268cd2d3c227 ]
    
    The driver was making changes to the skb_header without
    ensuring it was writable (i.e. uncloned).
    This patch also removes some boiler plate header size
    checking/adjustment code as that is also handled by the
    skb_cow_header function used to make header writable.
    
    Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c4efbc9ce69d6c155ee02da9ae745b95d2054cc0
Author: James Hughes <james.hughes@raspberrypi.org>
Date:   Mon Apr 24 12:40:50 2017 +0100

    brcmfmac: Ensure pointer correctly set if skb data location changes
    
    [ Upstream commit 455a1eb4654c24560eb9dfc634f29cba3d87601e ]
    
    The incoming skb header may be resized if header space is
    insufficient, which might change the data adddress in the skb.
    Ensure that a cached pointer to that data is correctly set by
    moving assignment to after any possible changes.
    
    Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
    
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 62494116045eac405cb83ab8a7c24c1c8b088892
Author: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
Date:   Thu Aug 25 10:37:38 2016 -0700

    MIPS: R2-on-R6 MULTU/MADDU/MSUBU emulation bugfix
    
    [ Upstream commit d65e5677ad5b3a49c43f60ec07644dc1f87bbd2e ]
    
    MIPS instructions MULTU, MADDU and MSUBU emulation requires registers HI/LO
    to be converted to signed 32bits before 64bit sign extension on MIPS64.
    
    Bug was found on running MIPS32 R2 test application on MIPS64 R6 kernel.
    
    Fixes: b0a668fb2038 ("MIPS: kernel: mips-r2-to-r6-emul: Add R2 emulator for MIPS R6")
    Signed-off-by: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
    Reported-by: Nikola.Veljkovic@imgtec.com
    Cc: paul.burton@imgtec.com
    Cc: yamada.masahiro@socionext.com
    Cc: akpm@linux-foundation.org
    Cc: andrea.gelmini@gelma.net
    Cc: macro@imgtec.com
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14043/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 48ea252abd409832aa181edf8c3ae94d95c182f2
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Thu Feb 23 09:08:02 2017 +1100

    scsi: mac_scsi: Fix MAC_SCSI=m option when SCSI=m
    
    [ Upstream commit 2559a1ef688f933835912c731bed2254146a9b04 ]
    
    The mac_scsi driver still gets disabled when SCSI=m. This should have
    been fixed back when I enabled the tristate but I didn't see the bug.
    
    Fixes: 6e9ae6d560e1 ("[PATCH] mac_scsi: Add module option to Kconfig")
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit ddfc6a095d10d9ff391d50c8935baf56749b4e6c
Author: Tony Lindgren <tony@atomide.com>
Date:   Fri Jan 20 12:22:31 2017 -0800

    serial: 8250_omap: Fix probe and remove for PM runtime
    
    [ Upstream commit 4e0f5cc65098ea32a1e77baae74215b9bd5276b1 ]
    
    Otherwise the interconnect related code implementing PM runtime will
    produce these errors on a failed probe:
    
    omap_uart 48066000.serial: omap_device: omap_device_enable() called from invalid state 1
    omap_uart 48066000.serial: use pm_runtime_put_sync_suspend() in driver?
    
    Note that we now also need to check for priv in omap8250_runtime_suspend()
    as it has not yet been registered if probe fails. And we need to use
    pm_runtime_put_sync() to properly idle the device like we already do
    in omap8250_remove().
    
    Fixes: 61929cf0169d ("tty: serial: Add 8250-core based omap driver")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2c7105e86e3d44ede962f691d031b312060e7387
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Jan 12 14:56:14 2017 +0100

    USB: serial: io_edgeport: fix descriptor error handling
    
    [ Upstream commit 3c0e25d883d06a1fbd1ad35257e8abaa57befb37 ]
    
    Make sure to detect short control-message transfers and log an error
    when reading incomplete manufacturer and boot descriptors.
    
    Note that the default all-zero descriptors will now be used after a
    short transfer is detected instead of partially initialised ones.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 00f244650faff0528541ca1e5927a4c7b024bfa4
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Jan 12 14:56:16 2017 +0100

    USB: serial: mct_u232: fix modem-status error handling
    
    [ Upstream commit 36356a669eddb32917fc4b5c2b9b8bf80ede69de ]
    
    Make sure to detect short control-message transfers so that errors are
    logged when reading the modem status at open.
    
    Note that while this also avoids initialising the modem status using
    uninitialised heap data, these bits could not leak to user space as they
    are currently not used.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0379d54281fc15eab61a1c820887a61f760510be
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Jan 12 14:56:20 2017 +0100

    USB: serial: quatech2: fix control-message error handling
    
    [ Upstream commit 8c34cb8ddfe808d557b51da983ff10c02793beb2 ]
    
    Make sure to detect short control-message transfers when fetching
    modem and line state in open and when retrieving registers.
    
    This specifically makes sure that an errno is returned to user space on
    errors in TIOCMGET instead of a zero bitmask.
    
    Also drop the unused getdevice function which also lacked appropriate
    error handling.
    
    Fixes: f7a33e608d9a ("USB: serial: add quatech2 usb to serial driver")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e2eaebce9d2051e1efedb893a211f09e52707463
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Jan 12 14:56:12 2017 +0100

    USB: serial: ftdi_sio: fix latency-timer error handling
    
    [ Upstream commit e3e574ad85a208cb179f33720bb5f12b453de33c ]
    
    Make sure to detect short responses when reading the latency timer to
    avoid using stale buffer data.
    
    Note that no heap data would currently leak through sysfs as
    ASYNC_LOW_LATENCY is set by default.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e7ccc604153b11628528466fb3906c8453319fec
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Jan 12 14:56:10 2017 +0100

    USB: serial: ark3116: fix open error handling
    
    [ Upstream commit b631433b175f1002a31020e09bbfc2e5caecf290 ]
    
    Fix open error handling which failed to detect errors when reading the
    MSR and LSR registers, something which could lead to the shadow
    registers being initialised from errnos.
    
    Note that calling the generic close implementation is sufficient in the
    error paths as the interrupt urb has not yet been submitted and the
    register updates have not been made.
    
    Fixes: f4c1e8d597d1 ("USB: ark3116: Make existing functions 16450-aware
    and add close and release functions.")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b5b985c3a0bd5750d85b794cb61c2623194f1459
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Jan 12 14:56:23 2017 +0100

    USB: serial: ti_usb_3410_5052: fix control-message error handling
    
    [ Upstream commit 39712e8bfa8d3aa6ce1e60fc9d62c9b076c17a30 ]
    
    Make sure to detect and return an error on zero-length control-message
    transfers when reading from the device.
    
    This addresses a potential failure to detect an empty transmit buffer
    during close.
    
    Also remove a redundant check for short transfer when sending a command.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit dc7697bad3f65182e23541ce6279703cec643bb7
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Jan 12 14:56:13 2017 +0100

    USB: serial: io_edgeport: fix epic-descriptor handling
    
    [ Upstream commit e4457d9798adb96272468e93da663de9bd0a4198 ]
    
    Use a dedicated buffer for the DMA transfer and make sure to detect
    short transfers to avoid parsing a corrupt descriptor.
    
    Fixes: 6e8cf7751f9f ("USB: add EPIC support to the io_edgeport driver")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4e78688b4cb3a178589affd8eee5d95cbe462606
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Jan 12 14:56:22 2017 +0100

    USB: serial: ssu100: fix control-message error handling
    
    [ Upstream commit 1eac5c244f705182d1552a53e2f74e2775ed95d6 ]
    
    Make sure to detect short control-message transfers rather than continue
    with zero-initialised data when retrieving modem status and during
    device initialisation.
    
    Fixes: 52af95459939 ("USB: add USB serial ssu100 driver")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0f5e27457f1adb83a07c231a00e471c96fc4ead5
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 31 17:17:28 2017 +0100

    USB: serial: digi_acceleport: fix incomplete rx sanity check
    
    [ Upstream commit 1b0aed2b1600f6e5c7b9acfbd610a4e351ef5232 ]
    
    Make sure the received data has the required headers before parsing it.
    
    Also drop the redundant urb-status check, which has already been handled
    by the caller.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5d798576527128e55d39e5417d6056203dffad03
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 31 17:17:29 2017 +0100

    USB: serial: keyspan_pda: fix receive sanity checks
    
    [ Upstream commit c528fcb116e61afc379a2e0a0f70906b937f1e2c ]
    
    Make sure to check for short transfers before parsing the receive buffer
    to avoid acting on stale data.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9de980a19940377cb32a1c7e5cd9b4e40c5b0e04
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Sat Jan 7 10:41:41 2017 +0200

    usb: host: ohci-exynos: Decrese node refcount on exynos_ehci_get_phy() error paths
    
    [ Upstream commit 68bd6fc3cfa98ef253e17307ccafd8ef907b5556 ]
    
    Returning from for_each_available_child_of_node() loop requires cleaning
    up node refcount.  Error paths lacked it so for example in case of
    deferred probe, the refcount of phy node was left increased.
    
    Fixes: 6d40500ac9b6 ("usb: ehci/ohci-exynos: Fix of_node_put() for child when getting PHYs")
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 08fd577b4b0f138e7373831daa6ef78464d0d30c
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Sat Jan 7 10:41:40 2017 +0200

    usb: host: ehci-exynos: Decrese node refcount on exynos_ehci_get_phy() error paths
    
    [ Upstream commit 3f6026b1dcb3c8ee71198c485a72ac674c6890dd ]
    
    Returning from for_each_available_child_of_node() loop requires cleaning
    up node refcount.  Error paths lacked it so for example in case of
    deferred probe, the refcount of phy node was left increased.
    
    Fixes: 6d40500ac9b6 ("usb: ehci/ohci-exynos: Fix of_node_put() for child when getting PHYs")
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0a9f0af48e3fdc0b2213dd7b39b36658ace02c4d
Author: Ladi Prosek <lprosek@redhat.com>
Date:   Tue Apr 4 14:18:53 2017 +0200

    KVM: nVMX: initialize PML fields in vmcs02
    
    [ Upstream commit 1fb883bb827ee8efc1cc9ea0154f953f8a219d38 ]
    
    L2 was running with uninitialized PML fields which led to incomplete
    dirty bitmap logging. This manifested as all kinds of subtle erratic
    behavior of the nested guest.
    
    Fixes: 843e4330573c ("KVM: VMX: Add PML support in VMX")
    Signed-off-by: Ladi Prosek <lprosek@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4736ccc83dfca59e589eae8c183ecd0d579e75a2
Author: Jim Mattson <jmattson@google.com>
Date:   Tue Dec 20 16:34:50 2016 -0800

    Revert "KVM: nested VMX: disable perf cpuid reporting"
    
    [ Upstream commit 0b4c208d443ba2af82b4c70f99ca8df31e9a0020 ]
    
    This reverts commit bc6134942dbbf31c25e9bd7c876be5da81c9e1ce.
    
    A CPUID instruction executed in VMX non-root mode always causes a
    VM-exit, regardless of the leaf being queried.
    
    Fixes: bc6134942dbb ("KVM: nested VMX: disable perf cpuid reporting")
    Signed-off-by: Jim Mattson <jmattson@google.com>
    [The issue solved by bc6134942dbb has been resolved with ff651cb613b4
     ("KVM: nVMX: Add nested msr load/restore algorithm").]
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7a07dbb8c25c3a9c2d9461d22faf38436c160239
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Sun Mar 12 17:07:44 2017 +0200

    x86/platform/intel-mid: Correct MSI IRQ line for watchdog device
    
    [ Upstream commit 80354c29025833acd72ddac1ffa21c6cb50128cd ]
    
    The interrupt line used for the watchdog is 12, according to the official
    Intel Edison BSP code.
    
    And indeed after fixing it we start getting an interrupt and thus the
    watchdog starts working again:
    
      [  191.699951] Kernel panic - not syncing: Kernel Watchdog
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: David Cohen <david.a.cohen@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 78a3bb9e408b ("x86: intel-mid: add watchdog platform code for Merrifield")
    Link: http://lkml.kernel.org/r/20170312150744.45493-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 92e01bd47512f985548f930ce771b124068e3af2
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Wed Mar 1 01:23:24 2017 +0900

    kprobes/x86: Fix kernel panic when certain exception-handling addresses are probed
    
    [ Upstream commit 75013fb16f8484898eaa8d0b08fed942d790f029 ]
    
    Fix to the exception table entry check by using probed address
    instead of the address of copied instruction.
    
    This bug may cause unexpected kernel panic if user probe an address
    where an exception can happen which should be fixup by __ex_table
    (e.g. copy_from_user.)
    
    Unless user puts a kprobe on such address, this doesn't
    cause any problem.
    
    This bug has been introduced years ago, by commit:
    
      464846888d9a ("x86/kprobes: Fix a bug which can modify kernel code permanently").
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 464846888d9a ("x86/kprobes: Fix a bug which can modify kernel code permanently")
    Link: http://lkml.kernel.org/r/148829899399.28855.12581062400757221722.stgit@devbox
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 19d416eaccbbac6f410d3d4a3fa4b51b2e22fbb0
Author: Nikola Pajkovsky <npajkovsky@suse.cz>
Date:   Tue Nov 15 09:47:49 2016 +0100

    x86/pci-calgary: Fix iommu_free() comparison of unsigned expression >= 0
    
    [ Upstream commit 68dee8e2f2cacc54d038394e70d22411dee89da2 ]
    
    commit 8fd524b355da ("x86: Kill bad_dma_address variable") has killed
    bad_dma_address variable and used instead of macro DMA_ERROR_CODE
    which is always zero. Since dma_addr is unsigned, the statement
    
       dma_addr >= DMA_ERROR_CODE
    
    is always true, and not needed.
    
    arch/x86/kernel/pci-calgary_64.c: In function ‘iommu_free’:
    arch/x86/kernel/pci-calgary_64.c:299:2: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
      if (unlikely((dma_addr >= DMA_ERROR_CODE) && (dma_addr < badend))) {
    
    Fixes: 8fd524b355da ("x86: Kill bad_dma_address variable")
    Signed-off-by: Nikola Pajkovsky <npajkovsky@suse.cz>
    Cc: iommu@lists.linux-foundation.org
    Cc: Jon Mason <jdmason@kudzu.us>
    Cc: Muli Ben-Yehuda <mulix@mulix.org>
    Link: http://lkml.kernel.org/r/7612c0f9dd7c1290407dbf8e809def922006920b.1479161177.git.npajkovsky@suse.cz
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit ae0f7bd8e2260ab234044dbe382a1134a3b27858
Author: Ganapathi Bhat <gbhat@marvell.com>
Date:   Fri Feb 3 18:30:22 2017 +0530

    mwifiex: Avoid skipping WEP key deletion for AP
    
    [ Upstream commit a5b60de6972decc6b50a39abb376077c3c3621c8 ]
    
    This patch fixes the issue specific to AP. AP is started with WEP
    security and external station is connected to it. Data path works
    in this case. Now if AP is restarted with WPA/WPA2 security,
    station is able to connect but ping fails.
    
    Driver skips the deletion of WEP keys if interface type is AP.
    Removing that redundant check resolves the issue.
    
    Fixes: e57f1734d87a ("mwifiex: add key material v2 support")
    Signed-off-by: Ganapathi Bhat <gbhat@marvell.com>
    Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 34390bea46f7d8a83be3f4abba8b6698f87f204c
Author: Xinming Hu <huxm@marvell.com>
Date:   Wed Jan 11 21:41:24 2017 +0530

    mwifiex: remove redundant dma padding in AMSDU
    
    [ Upstream commit 5f0a221f59ad6b72202ef9c6e232086de8c336f2 ]
    
    We already ensure 64 bytes alignment and add padding if required
    during skb_aggr allocation.
    
    Alignment and padding in mwifiex_11n_form_amsdu_txpd() is redundant.
    We may end up accessing more data than allocated size with this.
    
    This patch fixes following issue by removing redundant padding.
    
    [  370.241338] skbuff: skb_over_panic: text:ffffffffc046946a len:3550
    put:72 head:ffff880000110000 data:ffff8800001100e4 tail:0xec2 end:0xec0 dev:<NULL>
    [  370.241374] ------------[ cut here ]------------
    [  370.241382] kernel BUG at net/core/skbuff.c:104!
      370.244032] Call Trace:
    [  370.244041]  [<ffffffff8c3df5ec>] skb_put+0x44/0x45
    [  370.244055]  [<ffffffffc046946a>]
    mwifiex_11n_aggregate_pkt+0x1e9/0xa50 [mwifiex]
    [  370.244067]  [<ffffffffc0467c16>] mwifiex_wmm_process_tx+0x44a/0x6b7
    [mwifiex]
    [  370.244074]  [<ffffffffc0411eb8>] ? 0xffffffffc0411eb8
    [  370.244084]  [<ffffffffc046116b>] mwifiex_main_process+0x476/0x5a5
    [mwifiex]
    [  370.244098]  [<ffffffffc0461298>] mwifiex_main_process+0x5a3/0x5a5
    [mwifiex]
    [  370.244113]  [<ffffffff8be7e9ff>] process_one_work+0x1a4/0x309
    [  370.244123]  [<ffffffff8be7f4ca>] worker_thread+0x20c/0x2ee
    [  370.244130]  [<ffffffff8be7f2be>] ? rescuer_thread+0x383/0x383
    [  370.244136]  [<ffffffff8be7f2be>] ? rescuer_thread+0x383/0x383
    [  370.244143]  [<ffffffff8be83742>] kthread+0x11c/0x124
    [  370.244150]  [<ffffffff8be83626>] ? kthread_parkme+0x24/0x24
    [  370.244157]  [<ffffffff8c4da1ef>] ret_from_fork+0x3f/0x70
    [  370.244168]  [<ffffffff8be83626>] ? kthread_parkme+0x24/0x24
    
    Fixes: 84b313b35f8158d ("mwifiex: make tx packet 64 byte DMA aligned")
    Signed-off-by: Xinming Hu <huxm@marvell.com>
    Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a5a09b34dab1c8660d131703c10d85aee1a57ecb
Author: Brian Norris <briannorris@chromium.org>
Date:   Mon Jan 9 15:33:50 2017 -0800

    mwifiex: debugfs: Fix (sometimes) off-by-1 SSID print
    
    [ Upstream commit 6183468a23fc6b6903f8597982017ad2c7fdefcf ]
    
    Similar to commit fcd2042e8d36 ("mwifiex: printk() overflow with 32-byte
    SSIDs"), we failed to account for the existence of 32-char SSIDs in our
    debugfs code. Unlike in that case though, we zeroed out the containing
    struct first, and I'm pretty sure we're guaranteed to have some padding
    after the 'ssid.ssid' and 'ssid.ssid_len' fields (the struct is 33 bytes
    long).
    
    So, this is the difference between:
    
      # cat /sys/kernel/debug/mwifiex/mlan0/info
      ...
      essid="0123456789abcdef0123456789abcdef "
      ...
    
    and the correct output:
    
      # cat /sys/kernel/debug/mwifiex/mlan0/info
      ...
      essid="0123456789abcdef0123456789abcdef"
      ...
    
    Fixes: 5e6e3a92b9a4 ("wireless: mwifiex: initial commit for Marvell mwifiex driver")
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 039747b6ef2d9b7480acb4ba58069268e73c43ac
Author: Liam Breck <liam@networkimprov.net>
Date:   Wed Jan 18 09:26:50 2017 -0800

    power: supply: bq24190_charger: Install irq_handler_thread() at end of probe()
    
    [ Upstream commit d62acc5ef0621463446091ebd7a345e06e9ab80c ]
    
    The device specific data is not fully initialized on
    request_threaded_irq(). This may cause a crash when the IRQ handler
    tries to reference them.
    
    Fix the issue by installing IRQ handler at the end of the probe.
    
    Fixes: d7bf353fd0aa3 ("bq24190_charger: Add support for TI BQ24190 Battery Charger")
    Signed-off-by: Liam Breck <kernel@networkimprov.net>
    Acked-by: Mark Greer <mgreer@animalcreek.com>
    Acked-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f3b0fe6bfcbf9f36e7156984ad5ae6b34102c0e6
Author: Liam Breck <liam@networkimprov.net>
Date:   Wed Jan 18 09:26:49 2017 -0800

    power: supply: bq24190_charger: Call set_mode_host() on pm_resume()
    
    [ Upstream commit e05ad7e0741ce0505e1df157c62b22b95172bb97 ]
    
    pm_resume() does a register_reset() which clears charger host mode.
    
    Fix by calling set_mode_host() after the reset.
    
    Fixes: d7bf353fd0aa3 ("bq24190_charger: Add support for TI BQ24190 Battery Charger")
    Signed-off-by: Liam Breck <kernel@networkimprov.net>
    Acked-by: Mark Greer <mgreer@animalcreek.com>
    Acked-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0ba15a289c6753640d4c4b264c8a4de5c4a8b54e
Author: Liam Breck <liam@networkimprov.net>
Date:   Wed Jan 18 09:26:48 2017 -0800

    power: supply: bq24190_charger: Fix irq trigger to IRQF_TRIGGER_FALLING
    
    [ Upstream commit 767eee362fd72bb2ca44cc80419ca4b38c6d8369 ]
    
    The interrupt signal is TRIGGER_FALLING. This is is specified in the
    data sheet PIN FUNCTIONS: "The INT pin sends active low, 256us
    pulse to host to report charger device status and fault."
    
    Also the direction can be seen in the data sheet Figure 37 "BQ24190
    with D+/D- Detection and USB On-The-Go (OTG)" which shows a 10k
    pull-up resistor installed for the sample configurations.
    
    Fixes: d7bf353fd0aa3 ("bq24190_charger: Add support for TI BQ24190 Battery Charger")
    Signed-off-by: Liam Breck <kernel@networkimprov.net>
    Acked-by: Mark Greer <mgreer@animalcreek.com>
    Acked-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit ab1b642339b38c8ddaceb65b03ec6bb589c82b7e
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Tue Feb 7 21:01:01 2017 +1100

    powerpc/powernv: Fix opal_exit tracepoint opcode
    
    [ Upstream commit a7e0fb6c2029a780444d09560f739e020d54fe4d ]
    
    Currently the opal_exit tracepoint usually shows the opcode as 0:
    
      <idle>-0     [047] d.h.   635.654292: opal_entry: opcode=63
      <idle>-0     [047] d.h.   635.654296: opal_exit: opcode=0 retval=0
      kopald-1209  [019] d...   636.420943: opal_entry: opcode=10
      kopald-1209  [019] d...   636.420959: opal_exit: opcode=0 retval=0
    
    This is because we incorrectly load the opcode into r0 before calling
    __trace_opal_exit(), whereas it expects the opcode in r3 (first function
    parameter). In fact we are leaving the retval in r3, so opcode and
    retval will always show the same value.
    
    Instead load the opcode into r3, resulting in:
    
      <idle>-0     [040] d.h.   636.618625: opal_entry: opcode=63
      <idle>-0     [040] d.h.   636.618627: opal_exit: opcode=63 retval=0
    
    Fixes: c49f63530bb6 ("powernv: Add OPAL tracepoints")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5d1767ceff1f67969265f497f6e8d7d21feb188e
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Tue Apr 11 00:29:44 2017 +0100

    cpupower: Fix turbo frequency reporting for pre-Sandy Bridge cores
    
    [ Upstream commit 4cca0457686e4ee1677d69469e4ddfd94d389a80 ]
    
    The switch that conditionally sets CPUPOWER_CAP_HAS_TURBO_RATIO and
    CPUPOWER_CAP_IS_SNB flags is missing a break, so all cores get both
    flags set and an assumed base clock of 100 MHz for turbo values.
    
    Reported-by: GSR <gsr.bugs@infernal-iceberg.com>
    Tested-by: GSR <gsr.bugs@infernal-iceberg.com>
    References: https://bugs.debian.org/859978
    Fixes: 8fb2e440b223 (cpupower: Show Intel turbo ratio support via ...)
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 16968228efa5496a6a964048de1b77a344120af8
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Wed Feb 22 15:40:53 2017 -0800

    9p: fix a potential acl leak
    
    [ Upstream commit b5c66bab72a6a65edb15beb60b90d3cb84c5763b ]
    
    posix_acl_update_mode() could possibly clear 'acl', if so we leak the
    memory pointed by 'acl'.  Save this pointer before calling
    posix_acl_update_mode() and release the memory if 'acl' really gets
    cleared.
    
    Link: http://lkml.kernel.org/r/1486678332-2430-1-git-send-email-xiyou.wangcong@gmail.com
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Reported-by: Mark Salyzyn <salyzyn@android.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Greg Kurz <groug@kaod.org>
    Cc: Eric Van Hensbergen <ericvh@gmail.com>
    Cc: Ron Minnich <rminnich@sandia.gov>
    Cc: Latchesar Ionkov <lucho@ionkov.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c41e1ba879616a28e527c2ee465dfd177a4a9ecf
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Jan 29 12:39:15 2016 +0100

    net: tg3: avoid uninitialized variable warning
    
    [ Upstream commit e434e04110704eb91acfecbd0fb8ca8e2da9c29b ]
    
    The tg3_set_eeprom() function correctly initializes the 'start' variable,
    but gcc generates a false warning:
    
    drivers/net/ethernet/broadcom/tg3.c: In function 'tg3_set_eeprom':
    drivers/net/ethernet/broadcom/tg3.c:12057:4: warning: 'start' may be used uninitialized in this function [-Wmaybe-uninitialized]
    
    I have not come up with a way to restructure the code in a way that
    avoids the warning without making it less readable, so this adds an
    initialization for the declaration to shut up that warning.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 95660aa2822dff51e73077865f3ed9fabe7bc48d
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Feb 29 13:20:28 2016 +0100

    mtd: avoid stack overflow in MTD CFI code
    
    [ Upstream commit fddcca5107051adf9e4481d2a79ae0616577fd2c ]
    
    When map_word gets too large, we use a lot of kernel stack, and for
    MTD_MAP_BANK_WIDTH_32, this means we use more than the recommended
    1024 bytes in a number of functions:
    
    drivers/mtd/chips/cfi_cmdset_0020.c: In function 'cfi_staa_write_buffers':
    drivers/mtd/chips/cfi_cmdset_0020.c:651:1: warning: the frame size of 1336 bytes is larger than 1024 bytes [-Wframe-larger-than=]
    drivers/mtd/chips/cfi_cmdset_0020.c: In function 'cfi_staa_erase_varsize':
    drivers/mtd/chips/cfi_cmdset_0020.c:972:1: warning: the frame size of 1208 bytes is larger than 1024 bytes [-Wframe-larger-than=]
    drivers/mtd/chips/cfi_cmdset_0001.c: In function 'do_write_buffer':
    drivers/mtd/chips/cfi_cmdset_0001.c:1835:1: warning: the frame size of 1240 bytes is larger than 1024 bytes [-Wframe-larger-than=]
    
    This can be avoided if all operations on the map word are done
    indirectly and the stack gets reused between the calls. We can
    mostly achieve this by selecting MTD_COMPLEX_MAPPINGS whenever
    MTD_MAP_BANK_WIDTH_32 is set, but for the case that no other
    bank width is enabled, we also need to use a non-constant
    map_bankwidth() to convince the compiler to use less stack.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    [Brian: this patch mostly achieves its goal by forcing
        MTD_COMPLEX_MAPPINGS (and the accompanying indirection) for 256-bit
        mappings; the rest of the change is mostly a wash, though it helps
        reduce stack size slightly. If we really care about supporting
        256-bit mappings though, we should consider rewriting some of this
        code to avoid keeping and assigning so many 256-bit objects on the
        stack.]
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b9e4b97eb9a0e6e2747166a66a99c4d34b1fd9e8
Author: Lars Ellenberg <lars.ellenberg@linbit.com>
Date:   Fri Mar 20 15:47:22 2015 +0100

    drbd: avoid redefinition of BITS_PER_PAGE
    
    [ Upstream commit 2630628b2dbc3fc320aafaf84836119e4e3d62f1 ]
    
    Apparently we now implicitly get definitions for BITS_PER_PAGE and
    BITS_PER_PAGE_MASK from the pid_namespace.h
    
    Instead of renaming our defines, I chose to define only if not yet
    defined, but to double check the value if already defined.
    
    Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
    Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1de253cbd35be16b6b0f7d8ef6ed360159f33a1e
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Jul 4 17:07:45 2016 +0200

    ALSA: ppc/awacs: shut up maybe-uninitialized warning
    
    [ Upstream commit b268c34e5ee92a4cc3099b0caaf26e6bfbdf0f18 ]
    
    The awacs sound driver produces a false-positive warning in ppc64_defconfig:
    
    sound/ppc/awacs.c: In function 'snd_pmac_awacs_init':
    include/sound/control.h:219:9: warning: 'master_vol' may be used uninitialized in this function [-Wmaybe-uninitialized]
    
    I haven't come up with a good way to rewrite the code to avoid the
    warning, so here is a bad one: I initialize the variable before
    the conditionall initialization so gcc no longer has to worry about
    it.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit db14464180fa453a8ba82bce8107884571d7db6d
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Jan 31 15:24:03 2017 +0100

    timerfd: Protect the might cancel mechanism proper
    
    [ Upstream commit 1e38da300e1e395a15048b0af1e5305bd91402f6 ]
    
    The handling of the might_cancel queueing is not properly protected, so
    parallel operations on the file descriptor can race with each other and
    lead to list corruptions or use after free.
    
    Protect the context for these operations with a seperate lock.
    
    The wait queue lock cannot be reused for this because that would create a
    lock inversion scenario vs. the cancel lock. Replacing might_cancel with an
    atomic (atomic_t or atomic bit) does not help either because it still can
    race vs. the actual list operation.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "linux-fsdevel@vger.kernel.org"
    Cc: syzkaller <syzkaller@googlegroups.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: linux-fsdevel@vger.kernel.org
    Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1701311521430.3457@nanos
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 11d54db42149cd7270469c4ff5a9eab9bb7f6bc5
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Thu Apr 13 17:53:55 2017 -0500

    ftrace/x86: Fix triple fault with graph tracing and suspend-to-ram
    
    [ Upstream commit 34a477e5297cbaa6ecc6e17c042a866e1cbe80d6 ]
    
    On x86-32, with CONFIG_FIRMWARE and multiple CPUs, if you enable function
    graph tracing and then suspend to RAM, it will triple fault and reboot when
    it resumes.
    
    The first fault happens when booting a secondary CPU:
    
    startup_32_smp()
      load_ucode_ap()
        prepare_ftrace_return()
          ftrace_graph_is_dead()
            (accesses 'kill_ftrace_graph')
    
    The early head_32.S code calls into load_ucode_ap(), which has an an
    ftrace hook, so it calls prepare_ftrace_return(), which calls
    ftrace_graph_is_dead(), which tries to access the global
    'kill_ftrace_graph' variable with a virtual address, causing a fault
    because the CPU is still in real mode.
    
    The fix is to add a check in prepare_ftrace_return() to make sure it's
    running in protected mode before continuing.  The check makes sure the
    stack pointer is a virtual kernel address.  It's a bit of a hack, but
    it's not very intrusive and it works well enough.
    
    For reference, here are a few other (more difficult) ways this could
    have potentially been fixed:
    
    - Move startup_32_smp()'s call to load_ucode_ap() down to *after* paging
      is enabled.  (No idea what that would break.)
    
    - Track down load_ucode_ap()'s entire callee tree and mark all the
      functions 'notrace'.  (Probably not realistic.)
    
    - Pause graph tracing in ftrace_suspend_notifier_call() or bringup_cpu()
      or __cpu_up(), and ensure that the pause facility can be queried from
      real mode.
    
    Reported-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Tested-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: "Rafael J . Wysocki" <rjw@rjwysocki.net>
    Cc: linux-acpi@vger.kernel.org
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: stable@kernel.org
    Cc: Len Brown <lenb@kernel.org>
    Link: http://lkml.kernel.org/r/5c1272269a580660703ed2eccf44308e790c7a98.1492123841.git.jpoimboe@redhat.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 77ded373242b49f02333ce77153f0c615ef496e8
Author: Jamie Bainbridge <jbainbri@redhat.com>
Date:   Wed Apr 26 10:43:27 2017 +1000

    ipv6: check raw payload size correctly in ioctl
    
    [ Upstream commit 105f5528b9bbaa08b526d3405a5bcd2ff0c953c8 ]
    
    In situations where an skb is paged, the transport header pointer and
    tail pointer can be the same because the skb contents are in frags.
    
    This results in ioctl(SIOCINQ/FIONREAD) incorrectly returning a
    length of 0 when the length to receive is actually greater than zero.
    
    skb->len is already correctly set in ip6_input_finish() with
    pskb_pull(), so use skb->len as it always returns the correct result
    for both linear and paged data.
    
    Signed-off-by: Jamie Bainbridge <jbainbri@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0c8f1722d1d675ca89cf02cf6c61172533ae511e
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Fri Apr 21 20:42:16 2017 +0300

    ip6mr: fix notification device destruction
    
    [ Upstream commit 723b929ca0f79c0796f160c2eeda4597ee98d2b8 ]
    
    Andrey Konovalov reported a BUG caused by the ip6mr code which is caused
    because we call unregister_netdevice_many for a device that is already
    being destroyed. In IPv4's ipmr that has been resolved by two commits
    long time ago by introducing the "notify" parameter to the delete
    function and avoiding the unregister when called from a notifier, so
    let's do the same for ip6mr.
    
    The trace from Andrey:
    ------------[ cut here ]------------
    kernel BUG at net/core/dev.c:6813!
    invalid opcode: 0000 [#1] SMP KASAN
    Modules linked in:
    CPU: 1 PID: 1165 Comm: kworker/u4:3 Not tainted 4.11.0-rc7+ #251
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
    01/01/2011
    Workqueue: netns cleanup_net
    task: ffff880069208000 task.stack: ffff8800692d8000
    RIP: 0010:rollback_registered_many+0x348/0xeb0 net/core/dev.c:6813
    RSP: 0018:ffff8800692de7f0 EFLAGS: 00010297
    RAX: ffff880069208000 RBX: 0000000000000002 RCX: 0000000000000001
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88006af90569
    RBP: ffff8800692de9f0 R08: ffff8800692dec60 R09: 0000000000000000
    R10: 0000000000000006 R11: 0000000000000000 R12: ffff88006af90070
    R13: ffff8800692debf0 R14: dffffc0000000000 R15: ffff88006af90000
    FS:  0000000000000000(0000) GS:ffff88006cb00000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fe7e897d870 CR3: 00000000657e7000 CR4: 00000000000006e0
    Call Trace:
     unregister_netdevice_many.part.105+0x87/0x440 net/core/dev.c:7881
     unregister_netdevice_many+0xc8/0x120 net/core/dev.c:7880
     ip6mr_device_event+0x362/0x3f0 net/ipv6/ip6mr.c:1346
     notifier_call_chain+0x145/0x2f0 kernel/notifier.c:93
     __raw_notifier_call_chain kernel/notifier.c:394
     raw_notifier_call_chain+0x2d/0x40 kernel/notifier.c:401
     call_netdevice_notifiers_info+0x51/0x90 net/core/dev.c:1647
     call_netdevice_notifiers net/core/dev.c:1663
     rollback_registered_many+0x919/0xeb0 net/core/dev.c:6841
     unregister_netdevice_many.part.105+0x87/0x440 net/core/dev.c:7881
     unregister_netdevice_many net/core/dev.c:7880
     default_device_exit_batch+0x4fa/0x640 net/core/dev.c:8333
     ops_exit_list.isra.4+0x100/0x150 net/core/net_namespace.c:144
     cleanup_net+0x5a8/0xb40 net/core/net_namespace.c:463
     process_one_work+0xc04/0x1c10 kernel/workqueue.c:2097
     worker_thread+0x223/0x19c0 kernel/workqueue.c:2231
     kthread+0x35e/0x430 kernel/kthread.c:231
     ret_from_fork+0x31/0x40 arch/x86/entry/entry_64.S:430
    Code: 3c 32 00 0f 85 70 0b 00 00 48 b8 00 02 00 00 00 00 ad de 49 89
    47 78 e9 93 fe ff ff 49 8d 57 70 49 8d 5f 78 eb 9e e8 88 7a 14 fe <0f>
    0b 48 8b 9d 28 fe ff ff e8 7a 7a 14 fe 48 b8 00 00 00 00 00
    RIP: rollback_registered_many+0x348/0xeb0 RSP: ffff8800692de7f0
    ---[ end trace e0b29c57e9b3292c ]---
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7f4ab2ced0a76a184565f64c8414f83bea334a40
Author: Tushar Dave <tushar.n.dave@oracle.com>
Date:   Thu Apr 20 15:57:31 2017 -0700

    netpoll: Check for skb->queue_mapping
    
    [ Upstream commit c70b17b775edb21280e9de7531acf6db3b365274 ]
    
    Reducing real_num_tx_queues needs to be in sync with skb queue_mapping
    otherwise skbs with queue_mapping greater than real_num_tx_queues
    can be sent to the underlying driver and can result in kernel panic.
    
    One such event is running netconsole and enabling VF on the same
    device. Or running netconsole and changing number of tx queues via
    ethtool on same device.
    
    e.g.
    Unable to handle kernel NULL pointer dereference
    tsk->{mm,active_mm}->context = 0000000000001525
    tsk->{mm,active_mm}->pgd = fff800130ff9a000
                  \|/ ____ \|/
                  "@'/ .. \`@"
                  /_| \__/ |_\
                     \__U_/
    kworker/48:1(475): Oops [#1]
    CPU: 48 PID: 475 Comm: kworker/48:1 Tainted: G           OE
    4.11.0-rc3-davem-net+ #7
    Workqueue: events queue_process
    task: fff80013113299c0 task.stack: fff800131132c000
    TSTATE: 0000004480e01600 TPC: 00000000103f9e3c TNPC: 00000000103f9e40 Y:
    00000000    Tainted: G           OE
    TPC: <ixgbe_xmit_frame_ring+0x7c/0x6c0 [ixgbe]>
    g0: 0000000000000000 g1: 0000000000003fff g2: 0000000000000000 g3:
    0000000000000001
    g4: fff80013113299c0 g5: fff8001fa6808000 g6: fff800131132c000 g7:
    00000000000000c0
    o0: fff8001fa760c460 o1: fff8001311329a50 o2: fff8001fa7607504 o3:
    0000000000000003
    o4: fff8001f96e63a40 o5: fff8001311d77ec0 sp: fff800131132f0e1 ret_pc:
    000000000049ed94
    RPC: <set_next_entity+0x34/0xb80>
    l0: 0000000000000000 l1: 0000000000000800 l2: 0000000000000000 l3:
    0000000000000000
    l4: 000b2aa30e34b10d l5: 0000000000000000 l6: 0000000000000000 l7:
    fff8001fa7605028
    i0: fff80013111a8a00 i1: fff80013155a0780 i2: 0000000000000000 i3:
    0000000000000000
    i4: 0000000000000000 i5: 0000000000100000 i6: fff800131132f1a1 i7:
    00000000103fa4b0
    I7: <ixgbe_xmit_frame+0x30/0xa0 [ixgbe]>
    Call Trace:
     [00000000103fa4b0] ixgbe_xmit_frame+0x30/0xa0 [ixgbe]
     [0000000000998c74] netpoll_start_xmit+0xf4/0x200
     [0000000000998e10] queue_process+0x90/0x160
     [0000000000485fa8] process_one_work+0x188/0x480
     [0000000000486410] worker_thread+0x170/0x4c0
     [000000000048c6b8] kthread+0xd8/0x120
     [0000000000406064] ret_from_fork+0x1c/0x2c
     [0000000000000000]           (null)
    Disabling lock debugging due to kernel taint
    Caller[00000000103fa4b0]: ixgbe_xmit_frame+0x30/0xa0 [ixgbe]
    Caller[0000000000998c74]: netpoll_start_xmit+0xf4/0x200
    Caller[0000000000998e10]: queue_process+0x90/0x160
    Caller[0000000000485fa8]: process_one_work+0x188/0x480
    Caller[0000000000486410]: worker_thread+0x170/0x4c0
    Caller[000000000048c6b8]: kthread+0xd8/0x120
    Caller[0000000000406064]: ret_from_fork+0x1c/0x2c
    Caller[0000000000000000]:           (null)
    
    Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 74c4460b6482311a4ff2edabc84772a42bc07d46
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Apr 6 13:10:52 2017 +0800

    sctp: listen on the sock only when it's state is listening or closed
    
    [ Upstream commit 34b2789f1d9bf8dcca9b5cb553d076ca2cd898ee ]
    
    Now sctp doesn't check sock's state before listening on it. It could
    even cause changing a sock with any state to become a listening sock
    when doing sctp_listen.
    
    This patch is to fix it by checking sock's state in sctp_listen, so
    that it will listen on the sock with right state.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7d1a0fdd41f8796fc921b322b142b03586685b69
Author: Florian Larysch <fl@n621.de>
Date:   Mon Apr 3 16:46:09 2017 +0200

    net: ipv4: fix multipath RTM_GETROUTE behavior when iif is given
    
    [ Upstream commit a8801799c6975601fd58ae62f48964caec2eb83f ]
    
    inet_rtm_getroute synthesizes a skeletal ICMP skb, which is passed to
    ip_route_input when iif is given. If a multipath route is present for
    the designated destination, ip_multipath_icmp_hash ends up being called,
    which uses the source/destination addresses within the skb to calculate
    a hash. However, those are not set in the synthetic skb, causing it to
    return an arbitrary and incorrect result.
    
    Instead, use UDP, which gets no such special treatment.
    
    Signed-off-by: Florian Larysch <fl@n621.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6824dcd302fd10e9764e89f78c0ac66b572e1394
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Mon Apr 3 12:03:13 2017 +0200

    l2tp: take reference on sessions being dumped
    
    [ Upstream commit e08293a4ccbcc993ded0fdc46f1e57926b833d63 ]
    
    Take a reference on the sessions returned by l2tp_session_find_nth()
    (and rename it l2tp_session_get_nth() to reflect this change), so that
    caller is assured that the session isn't going to disappear while
    processing it.
    
    For procfs and debugfs handlers, the session is held in the .start()
    callback and dropped in .show(). Given that pppol2tp_seq_session_show()
    dereferences the associated PPPoL2TP socket and that
    l2tp_dfs_seq_session_show() might call pppol2tp_show(), we also need to
    call the session's .ref() callback to prevent the socket from going
    away from under us.
    
    Fixes: fd558d186df2 ("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
    Fixes: 0ad6614048cf ("l2tp: Add debugfs files for dumping l2tp debug info")
    Fixes: 309795f4bec2 ("l2tp: Add netlink control API for L2TP")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit cc09115fb0b9cecc1fffd881416aad0b0639adc3
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Wed Mar 29 16:11:22 2017 +0200

    net/packet: fix overflow in check for tp_reserve
    
    [ Upstream commit bcc5364bdcfe131e6379363f089e7b4108d35b70 ]
    
    When calculating po->tp_hdrlen + po->tp_reserve the result can overflow.
    
    Fix by checking that tp_reserve <= INT_MAX on assign.
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit fed853407cc28fff0db4e4976a80323fea39d183
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Wed Mar 29 16:11:21 2017 +0200

    net/packet: fix overflow in check for tp_frame_nr
    
    [ Upstream commit 8f8d28e4d6d815a391285e121c3a53a0b6cb9e7b ]
    
    When calculating rb->frames_per_block * req->tp_block_nr the result
    can overflow.
    
    Add a check that tp_block_size * tp_block_nr <= UINT_MAX.
    
    Since frames_per_block <= tp_block_size, the expression would
    never overflow.
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9ba240219c96b7a2be1373dbec4a8a718cd5412e
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Wed Mar 29 08:45:29 2017 +0200

    l2tp: purge socket queues in the .destruct() callback
    
    [ Upstream commit e91793bb615cf6cdd59c0b6749fe173687bb0947 ]
    
    The Rx path may grab the socket right before pppol2tp_release(), but
    nothing guarantees that it will enqueue packets before
    skb_queue_purge(). Therefore, the socket can be destroyed without its
    queues fully purged.
    
    Fix this by purging queues in pppol2tp_session_destruct() where we're
    guaranteed nothing is still referencing the socket.
    
    Fixes: 9e9cb6221aa7 ("l2tp: fix userspace reception on plain L2TP sockets")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 28bad8a652e9ad3bd0b9a230ac43c7c2ff3648fd
Author: Nathan Sullivan <nathan.sullivan@ni.com>
Date:   Wed Mar 22 15:27:01 2017 -0500

    net: phy: handle state correctly in phy_stop_machine
    
    [ Upstream commit 49d52e8108a21749dc2114b924c907db43358984 ]
    
    If the PHY is halted on stop, then do not set the state to PHY_UP.  This
    ensures the phy will be restarted later in phy_start when the machine is
    started again.
    
    Fixes: 00db8189d984 ("This patch adds a PHY Abstraction Layer to the Linux Kernel, enabling ethernet drivers to remain as ignorant as is reasonable of the connected PHY's design and operation details.")
    Signed-off-by: Nathan Sullivan <nathan.sullivan@ni.com>
    Signed-off-by: Brad Mouring <brad.mouring@ni.com>
    Acked-by: Xander Huff <xander.huff@ni.com>
    Acked-by: Kyle Roeschley <kyle.roeschley@ni.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b39245e33e95813bd25ffd3166c8788834ffd904
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Mar 23 12:39:21 2017 -0700

    net: neigh: guard against NULL solicit() method
    
    [ Upstream commit 48481c8fa16410ffa45939b13b6c53c2ca609e5f ]
    
    Dmitry posted a nice reproducer of a bug triggering in neigh_probe()
    when dereferencing a NULL neigh->ops->solicit method.
    
    This can happen for arp_direct_ops/ndisc_direct_ops and similar,
    which can be used for NUD_NOARP neighbours (created when dev->header_ops
    is NULL). Admin can then force changing nud_state to some other state
    that would fire neigh timer.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9ffb20a699469e8de9c44e61b28d0b70354127a4
Author: Tom Hromatka <tom.hromatka@oracle.com>
Date:   Fri Mar 31 16:31:42 2017 -0600

    sparc64: Fix kernel panic due to erroneous #ifdef surrounding pmd_write()
    
    [ Upstream commit 9ae34dbd8afd790cb5f52467e4f816434379eafa ]
    
    This commit moves sparc64's prototype of pmd_write() outside
    of the CONFIG_TRANSPARENT_HUGEPAGE ifdef.
    
    In 2013, commit a7b9403f0e6d ("sparc64: Encode huge PMDs using PTE
    encoding.") exposed a path where pmd_write() could be called without
    CONFIG_TRANSPARENT_HUGEPAGE defined.  This can result in the panic below.
    
    The diff is awkward to read, but the changes are straightforward.
    pmd_write() was moved outside of #ifdef CONFIG_TRANSPARENT_HUGEPAGE.
    Also, __HAVE_ARCH_PMD_WRITE was defined.
    
    kernel BUG at include/asm-generic/pgtable.h:576!
                  \|/ ____ \|/
                  "@'/ .. \`@"
                  /_| \__/ |_\
                     \__U_/
    oracle_8114_cdb(8114): Kernel bad sw trap 5 [#1]
    CPU: 120 PID: 8114 Comm: oracle_8114_cdb Not tainted
    4.1.12-61.7.1.el6uek.rc1.sparc64 #1
    task: fff8400700a24d60 ti: fff8400700bc4000 task.ti: fff8400700bc4000
    TSTATE: 0000004411e01607 TPC: 00000000004609f8 TNPC: 00000000004609fc Y:
    00000005    Not tainted
    TPC: <gup_huge_pmd+0x198/0x1e0>
    g0: 000000000001c000 g1: 0000000000ef3954 g2: 0000000000000000 g3: 0000000000000001
    g4: fff8400700a24d60 g5: fff8001fa5c10000 g6: fff8400700bc4000 g7: 0000000000000720
    o0: 0000000000bc5058 o1: 0000000000000240 o2: 0000000000006000 o3: 0000000000001c00
    o4: 0000000000000000 o5: 0000048000080000 sp: fff8400700bc6ab1 ret_pc: 00000000004609f0
    RPC: <gup_huge_pmd+0x190/0x1e0>
    l0: fff8400700bc74fc l1: 0000000000020000 l2: 0000000000002000 l3: 0000000000000000
    l4: fff8001f93250950 l5: 000000000113f800 l6: 0000000000000004 l7: 0000000000000000
    i0: fff8400700ca46a0 i1: bd0000085e800453 i2: 000000026a0c4000 i3: 000000026a0c6000
    i4: 0000000000000001 i5: fff800070c958de8 i6: fff8400700bc6b61 i7: 0000000000460dd0
    I7: <gup_pud_range+0x170/0x1a0>
    Call Trace:
     [0000000000460dd0] gup_pud_range+0x170/0x1a0
     [0000000000460e84] get_user_pages_fast+0x84/0x120
     [00000000006f5a18] iov_iter_get_pages+0x98/0x240
     [00000000005fa744] do_direct_IO+0xf64/0x1e00
     [00000000005fbbc0] __blockdev_direct_IO+0x360/0x15a0
     [00000000101f74fc] ext4_ind_direct_IO+0xdc/0x400 [ext4]
     [00000000101af690] ext4_ext_direct_IO+0x1d0/0x2c0 [ext4]
     [00000000101af86c] ext4_direct_IO+0xec/0x220 [ext4]
     [0000000000553bd4] generic_file_read_iter+0x114/0x140
     [00000000005bdc2c] __vfs_read+0xac/0x100
     [00000000005bf254] vfs_read+0x54/0x100
     [00000000005bf368] SyS_pread64+0x68/0x80
    
    Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1acc886c425eb98e3c16d0ea0950448cfbeeaf3d
Author: bob picco <bob.picco@oracle.com>
Date:   Fri Mar 10 14:31:19 2017 -0500

    sparc64: kern_addr_valid regression
    
    [ Upstream commit adfae8a5d833fa2b46577a8081f350e408851f5b ]
    
    I encountered this bug when using /proc/kcore to examine the kernel. Plus a
    coworker inquired about debugging tools. We computed pa but did
    not use it during the maximum physical address bits test. Instead we used
    the identity mapped virtual address which will always fail this test.
    
    I believe the defect came in here:
    [bpicco@zareason linus.git]$ git describe --contains bb4e6e85daa52
    v3.18-rc1~87^2~4
    .
    
    Signed-off-by: Bob Picco <bob.picco@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5023f12103b9185d89f484f7869cbdfb1059ae11
Author: Stefano Stabellini <sstabellini@kernel.org>
Date:   Fri Apr 15 18:23:00 2016 -0700

    xen/x86: don't lose event interrupts
    
    [ Upstream commit c06b6d70feb32d28f04ba37aa3df17973fd37b6b ]
    
    On slow platforms with unreliable TSC, such as QEMU emulated machines,
    it is possible for the kernel to request the next event in the past. In
    that case, in the current implementation of xen_vcpuop_clockevent, we
    simply return -ETIME. To be precise the Xen returns -ETIME and we pass
    it on. However the result of this is a missed event, which simply causes
    the kernel to hang.
    
    Instead it is better to always ask the hypervisor for a timer event,
    even if the timeout is in the past. That way there are no lost
    interrupts and the kernel survives. To do that, remove the
    VCPU_SSHOTTMR_future flag.
    
    Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b64d082304fe242e9423f1a0dde540999de2dde2
Author: Felipe F. Tonello <eu@felipetonello.com>
Date:   Wed Mar 9 19:39:30 2016 +0000

    usb: gadget: f_midi: Fixed a bug when buflen was smaller than wMaxPacketSize
    
    [ Upstream commit 03d27ade4941076b34c823d63d91dc895731a595 ]
    
    buflen by default (256) is smaller than wMaxPacketSize (512) in high-speed
    devices.
    
    That caused the OUT endpoint to freeze if the host send any data packet of
    length greater than 256 bytes.
    
    This is an example dump of what happended on that enpoint:
    HOST:   [DATA][Length=260][...]
    DEVICE: [NAK]
    HOST:   [PING]
    DEVICE: [NAK]
    HOST:   [PING]
    DEVICE: [NAK]
    ...
    HOST:   [PING]
    DEVICE: [NAK]
    
    This patch fixes this problem by setting the minimum usb_request's buffer size
    for the OUT endpoint as its wMaxPacketSize.
    
    Acked-by: Michal Nazarewicz <mina86@mina86.com>
    Signed-off-by: Felipe F. Tonello <eu@felipetonello.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e7211d1ff579e6085337c7ff959f0177e2225864
Author: santosh.shilimkar@oracle.com <santosh.shilimkar@oracle.com>
Date:   Thu Apr 14 10:43:27 2016 -0700

    RDS: Fix the atomicity for congestion map update
    
    [ Upstream commit e47db94e10447fc467777a40302f2b393e9af2fa ]
    
    Two different threads with different rds sockets may be in
    rds_recv_rcvbuf_delta() via receive path. If their ports
    both map to the same word in the congestion map, then
    using non-atomic ops to update it could cause the map to
    be incorrect. Lets use atomics to avoid such an issue.
    
    Full credit to Wengang <wen.gang.wang@oracle.com> for
    finding the issue, analysing it and also pointing out
    to offending code with spin lock based fix.
    
    Reviewed-by: Leon Romanovsky <leon@leon.nu>
    Signed-off-by: Wengang Wang <wen.gang.wang@oracle.com>
    Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 92bf6b466b99d79fccb0b88f8e28db1bf101b551
Author: Corey Minyard <cminyard@mvista.com>
Date:   Mon Apr 11 09:10:19 2016 -0500

    MIPS: Fix crash registers on non-crashing CPUs
    
    [ Upstream commit c80e1b62ffca52e2d1d865ee58bc79c4c0c55005 ]
    
    As part of handling a crash on an SMP system, an IPI is send to
    all other CPUs to save their current registers and stop.  It was
    using task_pt_regs(current) to get the registers, but that will
    only be accurate if the CPU was interrupted running in userland.
    Instead allow the architecture to pass in the registers (all
    pass NULL now, but allow for the future) and then use get_irq_regs()
    which should be accurate as we are in an interrupt.  Fall back to
    task_pt_regs(current) if nothing else is available.
    
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Cc: David Daney <ddaney@caviumnetworks.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/13050/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d0388c0e2556ea797bc433618f54238f0c7b9fcf
Author: Wei Fang <fangwei1@huawei.com>
Date:   Mon Mar 21 19:18:32 2016 +0800

    md:raid1: fix a dead loop when read from a WriteMostly disk
    
    [ Upstream commit 816b0acf3deb6d6be5d0519b286fdd4bafade905 ]
    
    If first_bad == this_sector when we get the WriteMostly disk
    in read_balance(), valid disk will be returned with zero
    max_sectors. It'll lead to a dead loop in make_request(), and
    OOM will happen because of endless allocation of struct bio.
    
    Since we can't get data from this disk in this case, so
    continue for another disk.
    
    Signed-off-by: Wei Fang <fangwei1@huawei.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f364181f7aa2e6dc6ae837da02c7c7811023c2cd
Author: Jerome Marchand <jmarchan@redhat.com>
Date:   Wed Feb 3 13:58:12 2016 +0100

    crypto: testmgr - fix out of bound read in __test_aead()
    
    [ Upstream commit abfa7f4357e3640fdee87dfc276fd0f379fb5ae6 ]
    
    __test_aead() reads MAX_IVLEN bytes from template[i].iv, but the
    actual length of the initialisation vector can be shorter.
    The length of the IV is already calculated earlier in the
    function. Let's just reuses that. Also the IV length is currently
    calculated several time for no reason. Let's fix that too.
    This fix an out-of-bound error detected by KASan.
    
    Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9800a9a4b17ae1ede8cd0d3fbd55183fe5653406
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Feb 3 13:34:00 2016 -0200

    [media] xc2028: unlock on error in xc2028_set_config()
    
    [ Upstream commit 210bd104c6acd31c3c6b8b075b3f12d4a9f6b60d ]
    
    We have to unlock before returning -ENOMEM.
    
    Fixes: 8dfbcc4351a0 ('[media] xc2028: avoid use after free')
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c5ef0e9f70d182cda057417b98cb8f88cf1dea42
Author: Chao Yu <chao2.yu@samsung.com>
Date:   Tue Dec 15 09:58:18 2015 +0800

    f2fs: do more integrity verification for superblock
    
    [ Upstream commit 9a59b62fd88196844cee5fff851bee2cfd7afb6e ]
    
    Do more sanity check for superblock during ->mount.
    
    Signed-off-by: Chao Yu <chao2.yu@samsung.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5f1cef9e823aa35c881745446ea3c865da338e4e
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Mar 24 19:36:13 2017 -0700

    ping: implement proper locking
    
    [ Upstream commit 43a6684519ab0a6c52024b5e25322476cabad893 ]
    
    We got a report of yet another bug in ping
    
    http://www.openwall.com/lists/oss-security/2017/03/24/6
    
    ->disconnect() is not called with socket lock held.
    
    Fix this by acquiring ping rwlock earlier.
    
    Thanks to Daniel, Alexander and Andrey for letting us know this problem.
    
    Fixes: c319b4d76b9e ("net: ipv4: add IPPROTO_ICMP socket kind")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Daniel Jiang <danieljiang0415@gmail.com>
    Reported-by: Solar Designer <solar@openwall.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9c90c093b98f210d9611fac2c1f9e4f28254a55c
Author: EunTaik Lee <eun.taik.lee@samsung.com>
Date:   Wed Feb 24 04:38:06 2016 +0000

    staging/android/ion : fix a race condition in the ion driver
    
    [ Upstream commit 9590232bb4f4cc824f3425a6e1349afbe6d6d2b7 ]
    
    There is a use-after-free problem in the ion driver.
    This is caused by a race condition in the ion_ioctl()
    function.
    
    A handle has ref count of 1 and two tasks on different
    cpus calls ION_IOC_FREE simultaneously.
    
    cpu 0                                   cpu 1
    -------------------------------------------------------
    ion_handle_get_by_id()
    (ref == 2)
                                ion_handle_get_by_id()
                                (ref == 3)
    
    ion_free()
    (ref == 2)
    
    ion_handle_put()
    (ref == 1)
    
                                ion_free()
                                (ref == 0 so ion_handle_destroy() is
                                called
                                and the handle is freed.)
    
                                ion_handle_put() is called and it
                                decreases the slub's next free pointer
    
    The problem is detected as an unaligned access in the
    spin lock functions since it uses load exclusive
     instruction. In some cases it corrupts the slub's
    free pointer which causes a mis-aligned access to the
    next free pointer.(kmalloc returns a pointer like
    ffffc0745b4580aa). And it causes lots of other
    hard-to-debug problems.
    
    This symptom is caused since the first member in the
    ion_handle structure is the reference count and the
    ion driver decrements the reference after it has been
    freed.
    
    To fix this problem client->lock mutex is extended
    to protect all the codes that uses the handle.
    
    Signed-off-by: Eun Taik Lee <eun.taik.lee@samsung.com>
    Reviewed-by: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 073e9973d48b1a7fa6d610fde377f3d7f4171ad6
Author: Vlad Tsyrklevich <vlad@tsyrklevich.net>
Date:   Wed Oct 12 18:51:24 2016 +0200

    vfio/pci: Fix integer overflows, bitmask check
    
    [ Upstream commit 05692d7005a364add85c6e25a6c4447ce08f913a ]
    
    The VFIO_DEVICE_SET_IRQS ioctl did not sufficiently sanitize
    user-supplied integers, potentially allowing memory corruption. This
    patch adds appropriate integer overflow checks, checks the range bounds
    for VFIO_IRQ_SET_DATA_NONE, and also verifies that only single element
    in the VFIO_IRQ_SET_DATA_TYPE_MASK bitmask is set.
    VFIO_IRQ_SET_ACTION_TYPE_MASK is already correctly checked later in
    vfio_pci_set_irqs_ioctl().
    
    Furthermore, a kzalloc is changed to a kcalloc because the use of a
    kzalloc with an integer multiplication allowed an integer overflow
    condition to be reached without this patch. kcalloc checks for overflow
    and should prevent a similar occurrence.
    
    Signed-off-by: Vlad Tsyrklevich <vlad@tsyrklevich.net>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e21b00fe6cc7de57072cb89c87e43f33af866476
Author: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Date:   Thu Jan 28 09:22:44 2016 -0200

    [media] xc2028: avoid use after free
    
    [ Upstream commit 8dfbcc4351a0b6d2f2d77f367552f48ffefafe18 ]
    
    If struct xc2028_config is passed without a firmware name,
    the following trouble may happen:
    
    [11009.907205] xc2028 5-0061: type set to XCeive xc2028/xc3028 tuner
    [11009.907491] ==================================================================
    [11009.907750] BUG: KASAN: use-after-free in strcmp+0x96/0xb0 at addr ffff8803bd78ab40
    [11009.907992] Read of size 1 by task modprobe/28992
    [11009.907994] =============================================================================
    [11009.907997] BUG kmalloc-16 (Tainted: G        W      ): kasan: bad access detected
    [11009.907999] -----------------------------------------------------------------------------
    
    [11009.908008] INFO: Allocated in xhci_urb_enqueue+0x214/0x14c0 [xhci_hcd] age=0 cpu=3 pid=28992
    [11009.908012]  ___slab_alloc+0x581/0x5b0
    [11009.908014]  __slab_alloc+0x51/0x90
    [11009.908017]  __kmalloc+0x27b/0x350
    [11009.908022]  xhci_urb_enqueue+0x214/0x14c0 [xhci_hcd]
    [11009.908026]  usb_hcd_submit_urb+0x1e8/0x1c60
    [11009.908029]  usb_submit_urb+0xb0e/0x1200
    [11009.908032]  usb_serial_generic_write_start+0xb6/0x4c0
    [11009.908035]  usb_serial_generic_write+0x92/0xc0
    [11009.908039]  usb_console_write+0x38a/0x560
    [11009.908045]  call_console_drivers.constprop.14+0x1ee/0x2c0
    [11009.908051]  console_unlock+0x40d/0x900
    [11009.908056]  vprintk_emit+0x4b4/0x830
    [11009.908061]  vprintk_default+0x1f/0x30
    [11009.908064]  printk+0x99/0xb5
    [11009.908067]  kasan_report_error+0x10a/0x550
    [11009.908070]  __asan_report_load1_noabort+0x43/0x50
    [11009.908074] INFO: Freed in xc2028_set_config+0x90/0x630 [tuner_xc2028] age=1 cpu=3 pid=28992
    [11009.908077]  __slab_free+0x2ec/0x460
    [11009.908080]  kfree+0x266/0x280
    [11009.908083]  xc2028_set_config+0x90/0x630 [tuner_xc2028]
    [11009.908086]  xc2028_attach+0x310/0x8a0 [tuner_xc2028]
    [11009.908090]  em28xx_attach_xc3028.constprop.7+0x1f9/0x30d [em28xx_dvb]
    [11009.908094]  em28xx_dvb_init.part.3+0x8e4/0x5cf4 [em28xx_dvb]
    [11009.908098]  em28xx_dvb_init+0x81/0x8a [em28xx_dvb]
    [11009.908101]  em28xx_register_extension+0xd9/0x190 [em28xx]
    [11009.908105]  em28xx_dvb_register+0x10/0x1000 [em28xx_dvb]
    [11009.908108]  do_one_initcall+0x141/0x300
    [11009.908111]  do_init_module+0x1d0/0x5ad
    [11009.908114]  load_module+0x6666/0x9ba0
    [11009.908117]  SyS_finit_module+0x108/0x130
    [11009.908120]  entry_SYSCALL_64_fastpath+0x16/0x76
    [11009.908123] INFO: Slab 0xffffea000ef5e280 objects=25 used=25 fp=0x          (null) flags=0x2ffff8000004080
    [11009.908126] INFO: Object 0xffff8803bd78ab40 @offset=2880 fp=0x0000000000000001
    
    [11009.908130] Bytes b4 ffff8803bd78ab30: 01 00 00 00 2a 07 00 00 9d 28 00 00 01 00 00 00  ....*....(......
    [11009.908133] Object ffff8803bd78ab40: 01 00 00 00 00 00 00 00 b0 1d c3 6a 00 88 ff ff  ...........j....
    [11009.908137] CPU: 3 PID: 28992 Comm: modprobe Tainted: G    B   W       4.5.0-rc1+ #43
    [11009.908140] Hardware name:                  /NUC5i7RYB, BIOS RYBDWi35.86A.0350.2015.0812.1722 08/12/2015
    [11009.908142]  ffff8803bd78a000 ffff8802c273f1b8 ffffffff81932007 ffff8803c6407a80
    [11009.908148]  ffff8802c273f1e8 ffffffff81556759 ffff8803c6407a80 ffffea000ef5e280
    [11009.908153]  ffff8803bd78ab40 dffffc0000000000 ffff8802c273f210 ffffffff8155ccb4
    [11009.908158] Call Trace:
    [11009.908162]  [<ffffffff81932007>] dump_stack+0x4b/0x64
    [11009.908165]  [<ffffffff81556759>] print_trailer+0xf9/0x150
    [11009.908168]  [<ffffffff8155ccb4>] object_err+0x34/0x40
    [11009.908171]  [<ffffffff8155f260>] kasan_report_error+0x230/0x550
    [11009.908175]  [<ffffffff81237d71>] ? trace_hardirqs_off_caller+0x21/0x290
    [11009.908179]  [<ffffffff8155e926>] ? kasan_unpoison_shadow+0x36/0x50
    [11009.908182]  [<ffffffff8155f5c3>] __asan_report_load1_noabort+0x43/0x50
    [11009.908185]  [<ffffffff8155ea00>] ? __asan_register_globals+0x50/0xa0
    [11009.908189]  [<ffffffff8194cea6>] ? strcmp+0x96/0xb0
    [11009.908192]  [<ffffffff8194cea6>] strcmp+0x96/0xb0
    [11009.908196]  [<ffffffffa13ba4ac>] xc2028_set_config+0x15c/0x630 [tuner_xc2028]
    [11009.908200]  [<ffffffffa13bac90>] xc2028_attach+0x310/0x8a0 [tuner_xc2028]
    [11009.908203]  [<ffffffff8155ea78>] ? memset+0x28/0x30
    [11009.908206]  [<ffffffffa13ba980>] ? xc2028_set_config+0x630/0x630 [tuner_xc2028]
    [11009.908211]  [<ffffffffa157a59a>] em28xx_attach_xc3028.constprop.7+0x1f9/0x30d [em28xx_dvb]
    [11009.908215]  [<ffffffffa157aa2a>] ? em28xx_dvb_init.part.3+0x37c/0x5cf4 [em28xx_dvb]
    [11009.908219]  [<ffffffffa157a3a1>] ? hauppauge_hvr930c_init+0x487/0x487 [em28xx_dvb]
    [11009.908222]  [<ffffffffa01795ac>] ? lgdt330x_attach+0x1cc/0x370 [lgdt330x]
    [11009.908226]  [<ffffffffa01793e0>] ? i2c_read_demod_bytes.isra.2+0x210/0x210 [lgdt330x]
    [11009.908230]  [<ffffffff812e87d0>] ? ref_module.part.15+0x10/0x10
    [11009.908233]  [<ffffffff812e56e0>] ? module_assert_mutex_or_preempt+0x80/0x80
    [11009.908238]  [<ffffffffa157af92>] em28xx_dvb_init.part.3+0x8e4/0x5cf4 [em28xx_dvb]
    [11009.908242]  [<ffffffffa157a6ae>] ? em28xx_attach_xc3028.constprop.7+0x30d/0x30d [em28xx_dvb]
    [11009.908245]  [<ffffffff8195222d>] ? string+0x14d/0x1f0
    [11009.908249]  [<ffffffff8195381f>] ? symbol_string+0xff/0x1a0
    [11009.908253]  [<ffffffff81953720>] ? uuid_string+0x6f0/0x6f0
    [11009.908257]  [<ffffffff811a775e>] ? __kernel_text_address+0x7e/0xa0
    [11009.908260]  [<ffffffff8104b02f>] ? print_context_stack+0x7f/0xf0
    [11009.908264]  [<ffffffff812e9846>] ? __module_address+0xb6/0x360
    [11009.908268]  [<ffffffff8137fdc9>] ? is_ftrace_trampoline+0x99/0xe0
    [11009.908271]  [<ffffffff811a775e>] ? __kernel_text_address+0x7e/0xa0
    [11009.908275]  [<ffffffff81240a70>] ? debug_check_no_locks_freed+0x290/0x290
    [11009.908278]  [<ffffffff8104a24b>] ? dump_trace+0x11b/0x300
    [11009.908282]  [<ffffffffa13e8143>] ? em28xx_register_extension+0x23/0x190 [em28xx]
    [11009.908285]  [<ffffffff81237d71>] ? trace_hardirqs_off_caller+0x21/0x290
    [11009.908289]  [<ffffffff8123ff56>] ? trace_hardirqs_on_caller+0x16/0x590
    [11009.908292]  [<ffffffff812404dd>] ? trace_hardirqs_on+0xd/0x10
    [11009.908296]  [<ffffffffa13e8143>] ? em28xx_register_extension+0x23/0x190 [em28xx]
    [11009.908299]  [<ffffffff822dcbb0>] ? mutex_trylock+0x400/0x400
    [11009.908302]  [<ffffffff810021a1>] ? do_one_initcall+0x131/0x300
    [11009.908306]  [<ffffffff81296dc7>] ? call_rcu_sched+0x17/0x20
    [11009.908309]  [<ffffffff8159e708>] ? put_object+0x48/0x70
    [11009.908314]  [<ffffffffa1579f11>] em28xx_dvb_init+0x81/0x8a [em28xx_dvb]
    [11009.908317]  [<ffffffffa13e81f9>] em28xx_register_extension+0xd9/0x190 [em28xx]
    [11009.908320]  [<ffffffffa0150000>] ? 0xffffffffa0150000
    [11009.908324]  [<ffffffffa0150010>] em28xx_dvb_register+0x10/0x1000 [em28xx_dvb]
    [11009.908327]  [<ffffffff810021b1>] do_one_initcall+0x141/0x300
    [11009.908330]  [<ffffffff81002070>] ? try_to_run_init_process+0x40/0x40
    [11009.908333]  [<ffffffff8123ff56>] ? trace_hardirqs_on_caller+0x16/0x590
    [11009.908337]  [<ffffffff8155e926>] ? kasan_unpoison_shadow+0x36/0x50
    [11009.908340]  [<ffffffff8155e926>] ? kasan_unpoison_shadow+0x36/0x50
    [11009.908343]  [<ffffffff8155e926>] ? kasan_unpoison_shadow+0x36/0x50
    [11009.908346]  [<ffffffff8155ea37>] ? __asan_register_globals+0x87/0xa0
    [11009.908350]  [<ffffffff8144da7b>] do_init_module+0x1d0/0x5ad
    [11009.908353]  [<ffffffff812f2626>] load_module+0x6666/0x9ba0
    [11009.908356]  [<ffffffff812e9c90>] ? symbol_put_addr+0x50/0x50
    [11009.908361]  [<ffffffffa1580037>] ? em28xx_dvb_init.part.3+0x5989/0x5cf4 [em28xx_dvb]
    [11009.908366]  [<ffffffff812ebfc0>] ? module_frob_arch_sections+0x20/0x20
    [11009.908369]  [<ffffffff815bc940>] ? open_exec+0x50/0x50
    [11009.908374]  [<ffffffff811671bb>] ? ns_capable+0x5b/0xd0
    [11009.908377]  [<ffffffff812f5e58>] SyS_finit_module+0x108/0x130
    [11009.908379]  [<ffffffff812f5d50>] ? SyS_init_module+0x1f0/0x1f0
    [11009.908383]  [<ffffffff81004044>] ? lockdep_sys_exit_thunk+0x12/0x14
    [11009.908394]  [<ffffffff822e6936>] entry_SYSCALL_64_fastpath+0x16/0x76
    [11009.908396] Memory state around the buggy address:
    [11009.908398]  ffff8803bd78aa00: 00 00 fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [11009.908401]  ffff8803bd78aa80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [11009.908403] >ffff8803bd78ab00: fc fc fc fc fc fc fc fc 00 00 fc fc fc fc fc fc
    [11009.908405]                                            ^
    [11009.908407]  ffff8803bd78ab80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [11009.908409]  ffff8803bd78ac00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [11009.908411] ==================================================================
    
    In order to avoid it, let's set the cached value of the firmware
    name to NULL after freeing it. While here, return an error if
    the memory allocation fails.
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c8580e3dcd00b4549f9ba81e7f39d1c6fe91164d
Author: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
Date:   Thu Sep 1 16:22:16 2016 +0200

    tipc: fix random link resets while adding a second bearer
    
    [ Upstream commit d2f394dc4816b7bd1b44981d83509f18f19c53f0 ]
    
    In a dual bearer configuration, if the second tipc link becomes
    active while the first link still has pending nametable "bulk"
    updates, it randomly leads to reset of the second link.
    
    When a link is established, the function named_distribute(),
    fills the skb based on node mtu (allows room for TUNNEL_PROTOCOL)
    with NAME_DISTRIBUTOR message for each PUBLICATION.
    However, the function named_distribute() allocates the buffer by
    increasing the node mtu by INT_H_SIZE (to insert NAME_DISTRIBUTOR).
    This consumes the space allocated for TUNNEL_PROTOCOL.
    
    When establishing the second link, the link shall tunnel all the
    messages in the first link queue including the "bulk" update.
    As size of the NAME_DISTRIBUTOR messages while tunnelling, exceeds
    the link mtu the transmission fails (-EMSGSIZE).
    
    Thus, the synch point based on the message count of the tunnel
    packets is never reached leading to link timeout.
    
    In this commit, we adjust the size of name distributor message so that
    they can be tunnelled.
    
    Reviewed-by: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5eb668f8442ed4e442dd0ecfa8331b6b448b340c
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jan 26 13:08:10 2016 -0500

    gfs2: avoid uninitialized variable warning
    
    [ Upstream commit 67893f12e5374bbcaaffbc6e570acbc2714ea884 ]
    
    We get a bogus warning about a potential uninitialized variable
    use in gfs2, because the compiler does not figure out that we
    never use the leaf number if get_leaf_nr() returns an error:
    
    fs/gfs2/dir.c: In function 'get_first_leaf':
    fs/gfs2/dir.c:802:9: warning: 'leaf_no' may be used uninitialized in this function [-Wmaybe-uninitialized]
    fs/gfs2/dir.c: In function 'dir_split_leaf':
    fs/gfs2/dir.c:1021:8: warning: 'leaf_no' may be used uninitialized in this function [-Wmaybe-uninitialized]
    
    Changing the 'if (!error)' to 'if (!IS_ERR_VALUE(error))' is
    sufficient to let gcc understand that this is exactly the same
    condition as in IS_ERR() so it can optimize the code path enough
    to understand it.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6013c31fb7e18019058d8e51f6a01625b98446c4
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Jan 28 22:58:28 2016 +0100

    hostap: avoid uninitialized variable use in hfa384x_get_rid
    
    [ Upstream commit 48dc5fb3ba53b20418de8514700f63d88c5de3a3 ]
    
    The driver reads a value from hfa384x_from_bap(), which may fail,
    and then assigns the value to a local variable. gcc detects that
    in in the failure case, the 'rlen' variable now contains
    uninitialized data:
    
    In file included from ../drivers/net/wireless/intersil/hostap/hostap_pci.c:220:0:
    drivers/net/wireless/intersil/hostap/hostap_hw.c: In function 'hfa384x_get_rid':
    drivers/net/wireless/intersil/hostap/hostap_hw.c:842:5: warning: 'rec' may be used uninitialized in this function [-Wmaybe-uninitialized]
      if (le16_to_cpu(rec.len) == 0) {
    
    This restructures the function as suggested by Russell King, to
    make it more readable and get more reliable error handling, by
    handling each failure mode using a goto.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 56c3cd0967478845b45068347d01fc115520ddd5
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Jan 25 22:54:56 2016 +0100

    tty: nozomi: avoid a harmless gcc warning
    
    [ Upstream commit a4f642a8a3c2838ad09fe8313d45db46600e1478 ]
    
    The nozomi wireless data driver has its own helper function to
    transfer data from a FIFO, doing an extra byte swap on big-endian
    architectures, presumably to bring the data back into byte-serial
    order after readw() or readl() perform their implicit byteswap.
    
    This helper function is used in the receive_data() function to
    first read the length into a 32-bit variable, which causes
    a compile-time warning:
    
    drivers/tty/nozomi.c: In function 'receive_data':
    drivers/tty/nozomi.c:857:9: warning: 'size' may be used uninitialized in this function [-Wmaybe-uninitialized]
    
    The problem is that gcc is unsure whether the data was actually
    read or not. We know that it is at this point, so we can replace
    it with a single readl() to shut up that warning.
    
    I am leaving the byteswap in there, to preserve the existing
    behavior, even though this seems fishy: Reading the length of
    the data into a cpu-endian variable should normally not use
    a second byteswap on big-endian systems, unless the hardware
    is aware of the CPU endianess.
    
    There appears to be a lot more confusion about endianess in this
    driver, so it probably has not worked on big-endian systems in
    a long time, if ever, and I have no way to test it. It's well
    possible that this driver has not been used by anyone in a while,
    the last patch that looks like it was tested on the hardware is
    from 2008.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 39a978c3e19238fb276dd0516f7c35c29844a005
Author: Jon Paul Maloy <jon.maloy@ericsson.com>
Date:   Mon May 2 11:58:45 2016 -0400

    tipc: re-enable compensation for socket receive buffer double counting
    
    [ Upstream commit 7c8bcfb1255fe9d929c227d67bdcd84430fd200b ]
    
    In the refactoring commit d570d86497ee ("tipc: enqueue arrived buffers
    in socket in separate function") we did by accident replace the test
    
    if (sk->sk_backlog.len == 0)
         atomic_set(&tsk->dupl_rcvcnt, 0);
    
    with
    
    if (sk->sk_backlog.len)
         atomic_set(&tsk->dupl_rcvcnt, 0);
    
    This effectively disables the compensation we have for the double
    receive buffer accounting that occurs temporarily when buffers are
    moved from the backlog to the socket receive queue. Until now, this
    has gone unnoticed because of the large receive buffer limits we are
    applying, but becomes indispensable when we reduce this buffer limit
    later in this series.
    
    We now fix this by inverting the mentioned condition.
    
    Acked-by: Ying Xue <ying.xue@windriver.com>
    Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0c28e96f0fecd9889b4f597fa165525ebad8ad61
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Tue Dec 29 14:02:29 2015 -0800

    block: fix del_gendisk() vs blkdev_ioctl crash
    
    [ Upstream commit ac34f15e0c6d2fd58480052b6985f6991fb53bcc ]
    
    When tearing down a block device early in its lifetime, userspace may
    still be performing discovery actions like blkdev_ioctl() to re-read
    partitions.
    
    The nvdimm_revalidate_disk() implementation depends on
    disk->driverfs_dev to be valid at entry.  However, it is set to NULL in
    del_gendisk() and fatally this is happening *before* the disk device is
    deleted from userspace view.
    
    There's no reason for del_gendisk() to clear ->driverfs_dev.  That
    device is the parent of the disk.  It is guaranteed to not be freed
    until the disk, as a child, drops its ->parent reference.
    
    We could also fix this issue locally in nvdimm_revalidate_disk() by
    using disk_to_dev(disk)->parent, but lets fix it globally since
    ->driverfs_dev follows the lifetime of the parent.  Longer term we
    should probably just add a @parent parameter to add_disk(), and stop
    carrying this pointer in the gendisk.
    
     BUG: unable to handle kernel NULL pointer dereference at           (null)
     IP: [<ffffffffa00340a8>] nvdimm_revalidate_disk+0x18/0x90 [libnvdimm]
     CPU: 2 PID: 538 Comm: systemd-udevd Tainted: G           O    4.4.0-rc5 #2257
     [..]
     Call Trace:
      [<ffffffff8143e5c7>] rescan_partitions+0x87/0x2c0
      [<ffffffff810f37f9>] ? __lock_is_held+0x49/0x70
      [<ffffffff81438c62>] __blkdev_reread_part+0x72/0xb0
      [<ffffffff81438cc5>] blkdev_reread_part+0x25/0x40
      [<ffffffff8143982d>] blkdev_ioctl+0x4fd/0x9c0
      [<ffffffff811246c9>] ? current_kernel_time64+0x69/0xd0
      [<ffffffff812916dd>] block_ioctl+0x3d/0x50
      [<ffffffff81264c38>] do_vfs_ioctl+0x308/0x560
      [<ffffffff8115dbd1>] ? __audit_syscall_entry+0xb1/0x100
      [<ffffffff810031d6>] ? do_audit_syscall_entry+0x66/0x70
      [<ffffffff81264f09>] SyS_ioctl+0x79/0x90
      [<ffffffff81902672>] entry_SYSCALL_64_fastpath+0x12/0x76
    
    Reported-by: Robert Hu <robert.hu@intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0c4670d5a6a415c52f664cfc4d97b90b7f1e5beb
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Wed Aug 24 16:23:10 2016 -0700

    Drivers: hv: balloon: account for gaps in hot add regions
    
    [ Upstream commit cb7a5724c7e1bfb5766ad1c3beba14cc715991cf ]
    
    I'm observing the following hot add requests from the WS2012 host:
    
    hot_add_req: start_pfn = 0x108200 count = 330752
    hot_add_req: start_pfn = 0x158e00 count = 193536
    hot_add_req: start_pfn = 0x188400 count = 239616
    
    As the host doesn't specify hot add regions we're trying to create
    128Mb-aligned region covering the first request, we create the 0x108000 -
    0x160000 region and we add 0x108000 - 0x158e00 memory. The second request
    passes the pfn_covered() check, we enlarge the region to 0x108000 -
    0x190000 and add 0x158e00 - 0x188200 memory. The problem emerges with the
    third request as it starts at 0x188400 so there is a 0x200 gap which is
    not covered. As the end of our region is 0x190000 now it again passes the
    pfn_covered() check were we just adjust the covered_end_pfn and make it
    0x188400 instead of 0x188200 which means that we'll try to online
    0x188200-0x188400 pages but these pages were never assigned to us and we
    crash.
    
    We can't react to such requests by creating new hot add regions as it may
    happen that the whole suggested range falls into the previously identified
    128Mb-aligned area so we'll end up adding nothing or create intersecting
    regions and our current logic doesn't allow that. Instead, create a list of
    such 'gaps' and check for them in the page online callback.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2cbbeec3e5a7e5cac9b23310b0edff92dc6c4e83
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Wed Aug 24 16:23:09 2016 -0700

    Drivers: hv: balloon: keep track of where ha_region starts
    
    [ Upstream commit 7cf3b79ec85ee1a5bbaaf936bb1d050dc652983b ]
    
    Windows 2012 (non-R2) does not specify hot add region in hot add requests
    and the logic in hot_add_req() is trying to find a 128Mb-aligned region
    covering the request. It may also happen that host's requests are not 128Mb
    aligned and the created ha_region will start before the first specified
    PFN. We can't online these non-present pages but we don't remember the real
    start of the region.
    
    This is a regression introduced by the commit 5abbbb75d733 ("Drivers: hv:
    hv_balloon: don't lose memory when onlining order is not natural"). While
    the idea of keeping the 'moving window' was wrong (as there is no guarantee
    that hot add requests come ordered) we should still keep track of
    covered_start_pfn. This is not a revert, the logic is different.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5b9ab933c3693caf6279d6e5694bee8fc6494153
Author: Yazen Ghannam <yazen.ghannam@amd.com>
Date:   Thu Mar 30 13:17:14 2017 +0200

    x86/mce/AMD: Give a name to MCA bank 3 when accessed with legacy MSRs
    
    [ Upstream commit 29f72ce3e4d18066ec75c79c857bee0618a3504b ]
    
    MCA bank 3 is reserved on systems pre-Fam17h, so it didn't have a name.
    However, MCA bank 3 is defined on Fam17h systems and can be accessed
    using legacy MSRs. Without a name we get a stack trace on Fam17h systems
    when trying to register sysfs files for bank 3 on kernels that don't
    recognize Scalable MCA.
    
    Call MCA bank 3 "decode_unit" since this is what it represents on
    Fam17h. This will allow kernels without SMCA support to see this bank on
    Fam17h+ and prevent the stack trace. This will not affect older systems
    since this bank is reserved on them, i.e. it'll be ignored.
    
    Tested on AMD Fam15h and Fam17h systems.
    
      WARNING: CPU: 26 PID: 1 at lib/kobject.c:210 kobject_add_internal
      kobject: (ffff88085bb256c0): attempted to be registered with empty name!
      ...
      Call Trace:
       kobject_add_internal
       kobject_add
       kobject_create_and_add
       threshold_create_device
       threshold_init_device
    
    Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: http://lkml.kernel.org/r/1490102285-3659-1-git-send-email-Yazen.Ghannam@amd.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 749cab8560427db991ae7a7a0c9b6b8de873e044
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Fri Jul 1 16:26:36 2016 -0700

    Drivers: hv: vmbus: Reduce the delay between retries in vmbus_post_msg()
    
    [ Upstream commit 8de0d7e951826d7592e0ba1da655b175c4aa0923 ]
    
    The current delay between retries is unnecessarily high and is negatively
    affecting the time it takes to boot the system.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 38f9c4b9176af7df75d94512a183fb1b6293090c
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Fri Jun 3 17:09:24 2016 -0700

    Drivers: hv: don't leak memory in vmbus_establish_gpadl()
    
    [ Upstream commit 7cc80c98070ccc7940fc28811c92cca0a681015d ]
    
    In some cases create_gpadl_header() allocates submessages but we never
    free them.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9f4a8ebb750b8a9b47bcb35b8e621d0f492ed472
Author: Mantas M <grawity@gmail.com>
Date:   Fri Dec 16 10:30:59 2016 +0200

    net: ipv6: check route protocol when deleting routes
    
    [ Upstream commit c2ed1880fd61a998e3ce40254a99a2ad000f1a7d ]
    
    The protocol field is checked when deleting IPv4 routes, but ignored for
    IPv6, which causes problems with routing daemons accidentally deleting
    externally set routes (observed by multiple bird6 users).
    
    This can be verified using `ip -6 route del <prefix> proto something`.
    
    Signed-off-by: Mantas MikulÄ—nas <grawity@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5ce729a895b0c6cb21bc20e614d12a1b8ae850ab
Author: Richard Genoud <richard.genoud@gmail.com>
Date:   Tue Dec 6 13:05:33 2016 +0100

    tty/serial: atmel: RS485 half duplex w/DMA: enable RX after TX is done
    
    [ Upstream commit b389f173aaa1204d6dc1f299082a162eb0491545 ]
    
    When using RS485 in half duplex, RX should be enabled when TX is
    finished, and stopped when TX starts.
    
    Before commit 0058f0871efe7b01c6 ("tty/serial: atmel: fix RS485 half
    duplex with DMA"), RX was not disabled in atmel_start_tx() if the DMA
    was used. So, collisions could happened.
    
    But disabling RX in atmel_start_tx() uncovered another bug:
    RX was enabled again in the wrong place (in atmel_tx_dma) instead of
    being enabled when TX is finished (in atmel_complete_tx_dma), so the
    transmission simply stopped.
    
    This bug was not triggered before commit 0058f0871efe7b01c6
    ("tty/serial: atmel: fix RS485 half duplex with DMA") because RX was
    never disabled before.
    
    Moving atmel_start_rx() in atmel_complete_tx_dma() corrects the problem.
    
    Cc: stable@vger.kernel.org
    Reported-by: Gil Weber <webergil@gmail.com>
    Fixes: 0058f0871efe7b01c6
    Tested-by: Gil Weber <webergil@gmail.com>
    Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
    Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9d86a569dbd7cbdf91339c8f0b477c27520c2028
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:57:04 2017 +0000

    catc: Use heap buffer for memory size test
    
    [ Upstream commit 2d6a0e9de03ee658a9adc3bfb2f0ca55dff1e478 ]
    
    Allocating USB buffers on the stack is not portable, and no longer
    works on x86_64 (with VMAP_STACK enabled as per default).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4d7726afea377d47470968abbeaff65a30078882
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:56:56 2017 +0000

    catc: Combine failure cleanup code in catc_probe()
    
    [ Upstream commit d41149145f98fe26dcd0bfd1d6cc095e6e041418 ]
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 61bd90b31be783fb5cf52a00a05c38930bce2b6e
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:56:32 2017 +0000

    rtl8150: Use heap buffers for all register access
    
    [ Upstream commit 7926aff5c57b577ab0f43364ff0c59d968f6a414 ]
    
    Allocating USB buffers on the stack is not portable, and no longer
    works on x86_64 (with VMAP_STACK enabled as per default).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7b69bee71416ee886816b42a1f10a1865ae1a68e
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:56:03 2017 +0000

    pegasus: Use heap buffers for all register access
    
    [ Upstream commit 5593523f968bc86d42a035c6df47d5e0979b5ace ]
    
    Allocating USB buffers on the stack is not portable, and no longer
    works on x86_64 (with VMAP_STACK enabled as per default).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    References: https://bugs.debian.org/852556
    Reported-by: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
    Tested-by: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0dd8a4702cbc9730ab923720db298c0febd91914
Author: Omar Sandoval <osandov@fb.com>
Date:   Wed Feb 1 00:02:27 2017 -0800

    virtio-console: avoid DMA from stack
    
    [ Upstream commit c4baad50297d84bde1a7ad45e50c73adae4a2192 ]
    
    put_chars() stuffs the buffer it gets into an sg, but that buffer may be
    on the stack. This breaks with CONFIG_VMAP_STACK=y (for me, it
    manifested as printks getting turned into NUL bytes).
    
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Amit Shah <amit.shah@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit eb618d2eb22bb0e1843fb17431fdd18253918cb8
Author: Kees Cook <keescook@chromium.org>
Date:   Wed Apr 5 09:39:08 2017 -0700

    mm: Tighten x86 /dev/mem with zeroing reads
    
    [ Upstream commit a4866aa812518ed1a37d8ea0c881dc946409de94 ]
    
    Under CONFIG_STRICT_DEVMEM, reading System RAM through /dev/mem is
    disallowed. However, on x86, the first 1MB was always allowed for BIOS
    and similar things, regardless of it actually being System RAM. It was
    possible for heap to end up getting allocated in low 1MB RAM, and then
    read by things like x86info or dd, which would trip hardened usercopy:
    
    usercopy: kernel memory exposure attempt detected from ffff880000090000 (dma-kmalloc-256) (4096 bytes)
    
    This changes the x86 exception for the low 1MB by reading back zeros for
    System RAM areas instead of blindly allowing them. More work is needed to
    extend this to mmap, but currently mmap doesn't go through usercopy, so
    hardened usercopy won't Oops the kernel.
    
    Reported-by: Tommi Rantala <tommi.t.rantala@nokia.com>
    Tested-by: Tommi Rantala <tommi.t.rantala@nokia.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 187887b3dbae03517c5ae8fe7631607682c4cac0
Author: Thierry Reding <treding@nvidia.com>
Date:   Thu Jan 12 17:07:43 2017 +0100

    rtc: tegra: Implement clock handling
    
    [ Upstream commit 5fa4086987506b2ab8c92f8f99f2295db9918856 ]
    
    Accessing the registers of the RTC block on Tegra requires the module
    clock to be enabled. This only works because the RTC module clock will
    be enabled by default during early boot. However, because the clock is
    unused, the CCF will disable it at late_init time. This causes the RTC
    to become unusable afterwards. This can easily be reproduced by trying
    to use the RTC:
    
            $ hwclock --rtc /dev/rtc1
    
    This will hang the system. I ran into this by following up on a report
    by Martin Michlmayr that reboot wasn't working on Tegra210 systems. It
    turns out that the rtc-tegra driver's ->shutdown() implementation will
    hang the CPU, because of the disabled clock, before the system can be
    rebooted.
    
    What confused me for a while is that the same driver is used on prior
    Tegra generations where the hang can not be observed. However, as Peter
    De Schrijver pointed out, this is because on 32-bit Tegra chips the RTC
    clock is enabled by the tegra20_timer.c clocksource driver, which uses
    the RTC to provide a persistent clock. This code is never enabled on
    64-bit Tegra because the persistent clock infrastructure does not exist
    on 64-bit ARM.
    
    The proper fix for this is to add proper clock handling to the RTC
    driver in order to ensure that the clock is enabled when the driver
    requires it. All device trees contain the clock already, therefore
    no additional changes are required.
    
    Reported-by: Martin Michlmayr <tbm@cyrius.com>
    Acked-By Peter De Schrijver <pdeschrijver@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit ea215d798bc2444485eac4a86c4957e360f9775a
Author: Lee, Chun-Yi <joeyli.kernel@gmail.com>
Date:   Thu Nov 3 08:18:52 2016 +0800

    platform/x86: acer-wmi: setup accelerometer when machine has appropriate notify event
    
    [ Upstream commit 98d610c3739ac354319a6590b915f4624d9151e6 ]
    
    The accelerometer event relies on the ACERWMID_EVENT_GUID notify.
    So, this patch changes the codes to setup accelerometer input device
    when detected ACERWMID_EVENT_GUID. It avoids that the accel input
    device created on every Acer machines.
    
    In addition, patch adds a clearly parsing logic of accelerometer hid
    to acer_wmi_get_handle_cb callback function. It is positive matching
    the "SENR" name with "BST0001" device to avoid non-supported hardware.
    
    Reported-by: Bjørn Mork <bjorn@mork.no>
    Cc: Darren Hart <dvhart@infradead.org>
    Signed-off-by: Lee, Chun-Yi <jlee@suse.com>
    [andy: slightly massage commit message]
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4473dc376c48ea0be28a087922b97c90333f22ce
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Feb 2 12:36:01 2017 -0200

    [media] dvb-usb-v2: avoid use-after-free
    
    [ Upstream commit 005145378c9ad7575a01b6ce1ba118fb427f583a ]
    
    I ran into a stack frame size warning because of the on-stack copy of
    the USB device structure:
    
    drivers/media/usb/dvb-usb-v2/dvb_usb_core.c: In function 'dvb_usbv2_disconnect':
    drivers/media/usb/dvb-usb-v2/dvb_usb_core.c:1029:1: error: the frame size of 1104 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]
    
    Copying a device structure like this is wrong for a number of other reasons
    too aside from the possible stack overflow. One of them is that the
    dev_info() call will print the name of the device later, but AFAICT
    we have only copied a pointer to the name earlier and the actual name
    has been freed by the time it gets printed.
    
    This removes the on-stack copy of the device and instead copies the
    device name using kstrdup(). I'm ignoring the possible failure here
    as both printk() and kfree() are able to deal with NULL pointers.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 68e9c254f662e4c2763e672b026a513d91f3a1c4
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Tue Jan 24 11:56:21 2017 +0100

    kvm: fix page struct leak in handle_vmon
    
    [ Upstream commit 06ce521af9558814b8606c0476c54497cf83a653 ]
    
    handle_vmon gets a reference on VMXON region page,
    but does not release it. Release the reference.
    
    Found by syzkaller; based on a patch by Dmitry.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f800bcede54dad3f50ece4fbee90e5053ac4bccf
Author: Max Bires <jbires@google.com>
Date:   Tue Jan 3 08:18:07 2017 -0800

    char: lack of bool string made CONFIG_DEVPORT always on
    
    [ Upstream commit f2cfa58b136e4b06a9b9db7af5ef62fbb5992f62 ]
    
    Without a bool string present, using "# CONFIG_DEVPORT is not set" in
    defconfig files would not actually unset devport. This esnured that
    /dev/port was always on, but there are reasons a user may wish to
    disable it (smaller kernel, attack surface reduction) if it's not being
    used. Adding a message here in order to make this user visible.
    
    Signed-off-by: Max Bires <jbires@google.com>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d1cdf638cde8360f5039afe3ee700435f431e4f3
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Mon Apr 11 10:40:55 2016 +0200

    char: Drop bogus dependency of DEVPORT on !M68K
    
    [ Upstream commit 309124e2648d668a0c23539c5078815660a4a850 ]
    
    According to full-history-linux commit d3794f4fa7c3edc3 ("[PATCH] M68k
    update (part 25)"), port operations are allowed on m68k if CONFIG_ISA is
    defined.
    
    However, commit 153dcc54df826d2f ("[PATCH] mem driver: fix conditional
    on isa i/o support") accidentally changed an "||" into an "&&",
    disabling it completely on m68k. This logic was retained when
    introducing the DEVPORT symbol in commit 4f911d64e04a44c4 ("Make
    /dev/port conditional on config symbol").
    
    Drop the bogus dependency on !M68K to fix this.
    
    Fixes: 153dcc54df826d2f ("[PATCH] mem driver: fix conditional on isa i/o support")
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Tested-by: Al Stone <ahs3@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6d1174d8ff9d692e33a9220a36825f3bf5365ae7
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Mon Jan 16 18:31:38 2017 +0200

    net/mlx4_core: Fix when to save some qp context flags for dynamic VST to VGT transitions
    
    [ Upstream commit 7c3945bc2073554bb2ecf983e073dee686679c53 ]
    
    Save the qp context flags byte containing the flag disabling vlan stripping
    in the RESET to INIT qp transition, rather than in the INIT to RTR
    transition. Per the firmware spec, the flags in this byte are active
    in the RESET to INIT transition.
    
    As a result of saving the flags in the incorrect qp transition, when
    switching dynamically from VGT to VST and back to VGT, the vlan
    remained stripped (as is required for VST) and did not return to
    not-stripped (as is required for VGT).
    
    Fixes: f0f829bf42cd ("net/mlx4_core: Add immediate activate for VGT->VST->VGT")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8a8878b16056d604cfc16de8eddb41c5779e6225
Author: Eugenia Emantayev <eugenia@mellanox.com>
Date:   Thu Dec 29 18:37:10 2016 +0200

    net/mlx4_en: Fix bad WQE issue
    
    [ Upstream commit 6496bbf0ec481966ef9ffe5b6660d8d1b55c60cc ]
    
    Single send WQE in RX buffer should be stamped with software
    ownership in order to prevent the flow of QP in error in FW
    once UPDATE_QP is called.
    
    Fixes: 9f519f68cfff ('mlx4_en: Not using Shared Receive Queues')
    Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 037948b4f092edf0d35bbd9f5e51e09d9faabe66
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Dec 1 13:49:59 2016 -0800

    usb: hub: Wait for connection to be reestablished after port reset
    
    [ Upstream commit 22547c4cc4fe20698a6a85a55b8788859134b8e4 ]
    
    On a system with a defective USB device connected to an USB hub,
    an endless sequence of port connect events was observed. The sequence
    of events as observed is as follows:
    
    - Port reports connected event (port status=USB_PORT_STAT_CONNECTION).
    - Event handler debounces port and resets it by calling hub_port_reset().
    - hub_port_reset() calls hub_port_wait_reset() to wait for the reset
      to complete.
    - The reset completes, but USB_PORT_STAT_CONNECTION is not immediately
      set in the port status register.
    - hub_port_wait_reset() returns -ENOTCONN.
    - Port initialization sequence is aborted.
    - A few milliseconds later, the port again reports a connected event,
      and the sequence repeats.
    
    This continues either forever or, randomly, stops if the connection
    is already re-established when the port status is read. It results in
    a high rate of udev events. This in turn destabilizes userspace since
    the above sequence holds the device mutex pretty much continuously
    and prevents userspace from actually reading the device status.
    
    To prevent the problem from happening, let's wait for the connection
    to be re-established after a port reset. If the device was actually
    disconnected, the code will still return an error, but it will do so
    only after the long reset timeout.
    
    Cc: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit dd07486ceba48b5d2157b212bb9bd5ce9a46b593
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Wed Mar 29 16:11:20 2017 +0200

    net/packet: fix overflow in check for priv area size
    
    [ Upstream commit 2b6867c2ce76c596676bec7d2d525af525fdc6e2 ]
    
    Subtracting tp_sizeof_priv from tp_block_size and casting to int
    to check whether one is less then the other doesn't always work
    (both of them are unsigned ints).
    
    Compare them as is instead.
    
    Also cast tp_sizeof_priv to u64 before using BLK_PLUS_PRIV, as
    it can overflow inside BLK_PLUS_PRIV otherwise.
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c9d0eb33ba82ac82a12bdd4b66b33edbf5ac5e30
Author: Matt Redfearn <matt.redfearn@imgtec.com>
Date:   Mon Dec 19 14:21:00 2016 +0000

    MIPS: Select HAVE_IRQ_EXIT_ON_IRQ_STACK
    
    [ Upstream commit 3cc3434fd6307d06b53b98ce83e76bf9807689b9 ]
    
    Since do_IRQ is now invoked on a separate IRQ stack, we select
    HAVE_IRQ_EXIT_ON_IRQ_STACK so that softirq's may be invoked directly
    from irq_exit(), rather than requiring do_softirq_own_stack.
    
    Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
    Acked-by: Jason A. Donenfeld <jason@zx2c4.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/14744/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit cd7de3163c8c01d9ea1171f69a3d8731918f6d3a
Author: Matt Redfearn <matt.redfearn@imgtec.com>
Date:   Mon Dec 19 14:20:58 2016 +0000

    MIPS: Only change $28 to thread_info if coming from user mode
    
    [ Upstream commit 510d86362a27577f5ee23f46cfb354ad49731e61 ]
    
    The SAVE_SOME macro is used to save the execution context on all
    exceptions.
    If an exception occurs while executing user code, the stack is switched
    to the kernel's stack for the current task, and register $28 is switched
    to point to the current_thread_info, which is at the bottom of the stack
    region.
    If the exception occurs while executing kernel code, the stack is left,
    and this change ensures that register $28 is not updated. This is the
    correct behaviour when the kernel can be executing on the separate irq
    stack, because the thread_info will not be at the base of it.
    
    With this change, register $28 is only switched to it's kernel
    conventional usage of the currrent thread info pointer at the point at
    which execution enters kernel space. Doing it on every exception was
    redundant, but OK without an IRQ stack, but will be erroneous once that
    is introduced.
    
    Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
    Acked-by: Jason A. Donenfeld <jason@zx2c4.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: James Hogan <james.hogan@imgtec.com>
    Cc: Paul Burton <paul.burton@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/14742/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit aa7ae7fee5d62348dae1a32ea5f775e6f311646a
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Sun Nov 20 16:09:30 2016 +0100

    mtd: bcm47xxpart: fix parsing first block after aligned TRX
    
    [ Upstream commit bd5d21310133921021d78995ad6346f908483124 ]
    
    After parsing TRX we should skip to the first block placed behind it.
    Our code was working only with TRX with length not aligned to the
    blocksize. In other cases (length aligned) it was missing the block
    places right after TRX.
    
    This fixes calculation and simplifies the comment.
    
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1669925abfce829877484f9e4e7c72f6a94468b9
Author: Janusz Dziedzic <januszx.dziedzic@intel.com>
Date:   Mon Mar 13 14:11:32 2017 +0200

    usb: dwc3: gadget: delay unmap of bounced requests
    
    [ Upstream commit de288e36fe33f7e06fa272bc8e2f85aa386d99aa ]
    
    In the case of bounced ep0 requests, we must delay DMA operation until
    after ->complete() otherwise we might overwrite contents of req->buf.
    
    This caused problems with RNDIS gadget.
    
    Signed-off-by: Janusz Dziedzic <januszx.dziedzic@intel.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit aa612d59c08f52a1ee508a12d95deb012e2163d2
Author: Chris Salls <salls@cs.ucsb.edu>
Date:   Fri Apr 7 23:48:11 2017 -0700

    mm/mempolicy.c: fix error handling in set_mempolicy and mbind.
    
    [ Upstream commit cf01fb9985e8deb25ccf0ea54d916b8871ae0e62 ]
    
    In the case that compat_get_bitmap fails we do not want to copy the
    bitmap to the user as it will contain uninitialized stack data and leak
    sensitive data.
    
    Signed-off-by: Chris Salls <salls@cs.ucsb.edu>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 00fc586ea7410ee8664bfd4f4ea246c60ea0482c
Author: Yisheng Xie <xieyisheng1@huawei.com>
Date:   Fri Jun 2 14:46:43 2017 -0700

    mlock: fix mlock count can not decrease in race condition
    
    [ Upstream commit 70feee0e1ef331b22cc51f383d532a0d043fbdcc ]
    
    Kefeng reported that when running the follow test, the mlock count in
    meminfo will increase permanently:
    
     [1] testcase
     linux:~ # cat test_mlockal
     grep Mlocked /proc/meminfo
      for j in `seq 0 10`
      do
            for i in `seq 4 15`
            do
                    ./p_mlockall >> log &
            done
            sleep 0.2
     done
     # wait some time to let mlock counter decrease and 5s may not enough
     sleep 5
     grep Mlocked /proc/meminfo
    
     linux:~ # cat p_mlockall.c
     #include <sys/mman.h>
     #include <stdlib.h>
     #include <stdio.h>
    
     #define SPACE_LEN      4096
    
     int main(int argc, char ** argv)
     {
                    int ret;
                    void *adr = malloc(SPACE_LEN);
                    if (!adr)
                            return -1;
    
                    ret = mlockall(MCL_CURRENT | MCL_FUTURE);
                    printf("mlcokall ret = %d\n", ret);
    
                    ret = munlockall();
                    printf("munlcokall ret = %d\n", ret);
    
                    free(adr);
                    return 0;
             }
    
    In __munlock_pagevec() we should decrement NR_MLOCK for each page where
    we clear the PageMlocked flag.  Commit 1ebb7cc6a583 ("mm: munlock: batch
    NR_MLOCK zone state updates") has introduced a bug where we don't
    decrement NR_MLOCK for pages where we clear the flag, but fail to
    isolate them from the lru list (e.g.  when the pages are on some other
    cpu's percpu pagevec).  Since PageMlocked stays cleared, the NR_MLOCK
    accounting gets permanently disrupted by this.
    
    Fix it by counting the number of page whose PageMlock flag is cleared.
    
    Fixes: 1ebb7cc6a583 (" mm: munlock: batch NR_MLOCK zone state updates")
    Link: http://lkml.kernel.org/r/1495678405-54569-1-git-send-email-xieyisheng1@huawei.com
    Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
    Reported-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Tested-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Joern Engel <joern@logfs.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Michel Lespinasse <walken@google.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@suse.cz>
    Cc: Xishi Qiu <qiuxishi@huawei.com>
    Cc: zhongjiang <zhongjiang@huawei.com>
    Cc: Hanjun Guo <guohanjun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 001360714b852672f870cd5f3a111cb1aaa59db4
Author: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date:   Wed Jun 24 16:56:48 2015 -0700

    mm/memory-failure: introduce get_hwpoison_page() for consistent refcount handling
    
    [ Upstream commit ead07f6a867b5b1b41cf703735e8b39094987a7d ]
    
    memory_failure() can run in 2 different mode (specified by
    MF_COUNT_INCREASED) in page refcount perspective.  When
    MF_COUNT_INCREASED is set, memory_failure() assumes that the caller
    takes a refcount of the target page.  And if cleared, memory_failure()
    takes it in it's own.
    
    In current code, however, refcounting is done differently in each caller.
    For example, madvise_hwpoison() uses get_user_pages_fast() and
    hwpoison_inject() uses get_page_unless_zero().  So this inconsistent
    refcounting causes refcount failure especially for thp tail pages.
    Typical user visible effects are like memory leak or
    VM_BUG_ON_PAGE(!page_count(page)) in isolate_lru_page().
    
    To fix this refcounting issue, this patch introduces get_hwpoison_page()
    to handle thp tail pages in the same manner for each caller of hwpoison
    code.
    
    memory_failure() might fail to split thp and in such case it returns
    without completing page isolation.  This is not good because PageHWPoison
    on the thp is still set and there's no easy way to unpoison such thps.  So
    this patch try to roll back any action to the thp in "non anonymous thp"
    case and "thp split failed" case, expecting an MCE(SRAR) generated by
    later access afterward will properly free such thps.
    
    [akpm@linux-foundation.org: fix CONFIG_HWPOISON_INJECT=m]
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit da7cbd0c660c7f14d64f07a74e7a79fdc51758ed
Author: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date:   Wed Jun 24 16:56:45 2015 -0700

    mm/memory-failure: split thp earlier in memory error handling
    
    [ Upstream commit 415c64c1453aa2bbcc7e30a38f8894d0894cb8ab ]
    
    memory_failure() doesn't handle thp itself at this time and need to split
    it before doing isolation.  Currently thp is split in the middle of
    hwpoison_user_mappings(), but there're corner cases where memory_failure()
    wrongly tries to handle thp without splitting.
    
    1) "non anonymous" thp, which is not a normal operating mode of thp,
       but a memory error could hit a thp before anon_vma is initialized.  In
       such case, split_huge_page() fails and me_huge_page() (intended for
       hugetlb) is called for thp, which triggers BUG_ON in page_hstate().
    
    2) !PageLRU case, where hwpoison_user_mappings() returns with
       SWAP_SUCCESS and the result is the same as case 1.
    
    memory_failure() can't avoid splitting, so let's split it more earlier,
    which also reduces code which are prepared for both of normal page and
    thp.
    
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit aeb3435b49878fa80079ccc9a2a304e439b1c35d
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jun 2 14:46:25 2017 -0700

    slub/memcg: cure the brainless abuse of sysfs attributes
    
    [ Upstream commit 478fe3037b2278d276d4cd9cd0ab06c4cb2e9b32 ]
    
    memcg_propagate_slab_attrs() abuses the sysfs attribute file functions
    to propagate settings from the root kmem_cache to a newly created
    kmem_cache.  It does that with:
    
         attr->show(root, buf);
         attr->store(new, buf, strlen(bug);
    
    Aside of being a lazy and absurd hackery this is broken because it does
    not check the return value of the show() function.
    
    Some of the show() functions return 0 w/o touching the buffer.  That
    means in such a case the store function is called with the stale content
    of the previous show().  That causes nonsense like invoking
    kmem_cache_shrink() on a newly created kmem_cache.  In the worst case it
    would cause handing in an uninitialized buffer.
    
    This should be rewritten proper by adding a propagate() callback to
    those slub_attributes which must be propagated and avoid that insane
    conversion to and from ASCII, but that's too large for a hot fix.
    
    Check at least the return value of the show() function, so calling
    store() with stale content is prevented.
    
    Steven said:
     "It can cause a deadlock with get_online_cpus() that has been uncovered
      by recent cpu hotplug and lockdep changes that Thomas and Peter have
      been doing.
    
         Possible unsafe locking scenario:
    
               CPU0                    CPU1
               ----                    ----
          lock(cpu_hotplug.lock);
                                       lock(slab_mutex);
                                       lock(cpu_hotplug.lock);
          lock(slab_mutex);
    
         *** DEADLOCK ***"
    
    Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1705201244540.2255@nanos
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reported-by: Steven Rostedt <rostedt@goodmis.org>
    Acked-by: David Rientjes <rientjes@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit afc6ec14b86349b814ba4984f7c02a4d8216e2a9
Author: Tejun Heo <tj@kernel.org>
Date:   Tue Aug 18 14:55:07 2015 -0700

    blkcg: use blkg_free() in blkcg_init_queue() failure path
    
    [ Upstream commit 994b78327458ea14a1743196ee0560c73ace37f3 ]
    
    When blkcg_init_queue() fails midway after creating a new blkg, it
    performs kfree() directly; however, this doesn't free the policy data
    areas.  Make it use blkg_free() instead.  In turn, blkg_free() is
    updated to handle root request_list special case.
    
    While this fixes a possible memory leak, it's on an unlikely failure
    path of an already cold path and the size leaked per occurrence is
    miniscule too.  I don't think it needs to be tagged for -stable.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f9fac98fc753ca29e5367c2d81b13ff4eee506a8
Author: Tejun Heo <tj@kernel.org>
Date:   Fri May 22 17:13:19 2015 -0400

    blkcg: always create the blkcg_gq for the root blkcg
    
    [ Upstream commit ec13b1d6f0a0457312e615335ce8ceb07da50a11 ]
    
    Currently, blkcg does a minor optimization where the root blkcg is
    created when the first blkcg policy is activated on a queue and
    destroyed on the deactivation of the last.  On systems where blkcg is
    configured but not used, this saves one blkcg_gq struct per queue.  On
    systems where blkcg is actually used, there's no difference.  The only
    case where this can lead to any meaninful, albeit still minute, save
    in memory consumption is when all blkcg policies are deactivated after
    being widely used in the system, which is a hihgly unlikely scenario.
    
    The conditional existence of root blkcg_gq has already created several
    bugs in blkcg and became an issue once again for the new per-cgroup
    wb_congested mechanism for cgroup writeback support leading to a NULL
    dereference when no blkcg policy is active.  This is really not worth
    bothering with.  This patch makes blkcg always allocate and link the
    root blkcg_gq and release it only on queue destruction.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Fengguang Wu <fengguang.wu@intel.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 712b6a6dceb2e96b261aa1a10a279a9bccf345bf
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Sun Jan 24 21:19:52 2016 +0800

    iscsi-target: Use shash and ahash
    
    [ Upstream commit 69110e3cedbb8aad1c70d91ed58a9f4f0ed9eec6 ]
    
    This patch replaces uses of the long obsolete hash interface with
    either shash (for non-SG users) or ahash.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1bd31de39e6275e24690189c23f6d9ea97ecd8d6
Author: Alexei Potashnik <alexei@purestorage.com>
Date:   Mon Jul 20 17:12:12 2015 -0700

    target/iscsi: Use proper SGL accessors for digest computation
    
    [ Upstream commit aa75679c797c0250a853e600e45368f1f9545c27 ]
    
    Current implementation assumes that all the buffers of an IO are linked
    with a single SG list, which is OK because target-core is only allocating
    a contigious scatterlist region.  However, this assumption is wrong for
    se_cmd descriptors that want to use chaining across multiple SGL regions.
    
    Fix this up by using proper SGL accessors for digest payload computation.
    
    Signed-off-by: Alexei Potashnik <alexei@purestorage.com>
    Cc: Roland Dreier <roland@purestorage.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 89ff28d0d690f710bdffa190e84fd1e789382aa5
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Wed May 24 21:47:09 2017 -0700

    iscsi-target: Fix initial login PDU asynchronous socket close OOPs
    
    [ Upstream commit 25cdda95fda78d22d44157da15aa7ea34be3c804 ]
    
    This patch fixes a OOPs originally introduced by:
    
       commit bb048357dad6d604520c91586334c9c230366a14
       Author: Nicholas Bellinger <nab@linux-iscsi.org>
       Date:   Thu Sep 5 14:54:04 2013 -0700
    
       iscsi-target: Add sk->sk_state_change to cleanup after TCP failure
    
    which would trigger a NULL pointer dereference when a TCP connection
    was closed asynchronously via iscsi_target_sk_state_change(), but only
    when the initial PDU processing in iscsi_target_do_login() from iscsi_np
    process context was blocked waiting for backend I/O to complete.
    
    To address this issue, this patch makes the following changes.
    
    First, it introduces some common helper functions used for checking
    socket closing state, checking login_flags, and atomically checking
    socket closing state + setting login_flags.
    
    Second, it introduces a LOGIN_FLAGS_INITIAL_PDU bit to know when a TCP
    connection has dropped via iscsi_target_sk_state_change(), but the
    initial PDU processing within iscsi_target_do_login() in iscsi_np
    context is still running.  For this case, it sets LOGIN_FLAGS_CLOSED,
    but doesn't invoke schedule_delayed_work().
    
    The original NULL pointer dereference case reported by MNC is now handled
    by iscsi_target_do_login() doing a iscsi_target_sk_check_close() before
    transitioning to FFP to determine when the socket has already closed,
    or iscsi_target_start_negotiation() if the login needs to exchange
    more PDUs (eg: iscsi_target_do_login returned 0) but the socket has
    closed.  For both of these cases, the cleanup up of remaining connection
    resources will occur in iscsi_target_start_negotiation() from iscsi_np
    process context once the failure is detected.
    
    Finally, to handle to case where iscsi_target_sk_state_change() is
    called after the initial PDU procesing is complete, it now invokes
    conn->login_work -> iscsi_target_do_login_rx() to perform cleanup once
    existing iscsi_target_sk_check_close() checks detect connection failure.
    For this case, the cleanup of remaining connection resources will occur
    in iscsi_target_do_login_rx() from delayed workqueue process context
    once the failure is detected.
    
    Reported-by: Mike Christie <mchristi@redhat.com>
    Reviewed-by: Mike Christie <mchristi@redhat.com>
    Tested-by: Mike Christie <mchristi@redhat.com>
    Cc: Mike Christie <mchristi@redhat.com>
    Reported-by: Hannes Reinecke <hare@suse.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Cc: Sagi Grimberg <sagi@grimberg.me>
    Cc: Varun Prakash <varun@chelsio.com>
    Cc: <stable@vger.kernel.org> # v3.12+
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 09cb399b62196217fc2c6108f0949d9497f7880e
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Fri Dec 23 12:45:27 2016 +0100

    target/iscsi: Fix indentation in iscsi_target_start_negotiation()
    
    [ Upstream commit 1efaa949396b5d9e8d1e6edef7e97e9ce1a97319 ]
    
    This patch avoids that smatch complains about inconsistent
    indentation in iscsi_target_start_negotiation().
    
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: Nicholas A. Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 68185cb17f7e79afbc9d4cd09bca269c4e325c7d
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Sat Feb 27 18:15:46 2016 -0800

    iscsi-target: Fix early sk_data_ready LOGIN_FLAGS_READY race
    
    [ Upstream commit 8f0dfb3d8b1120c61f6e2cc3729290db10772b2d ]
    
    There is a iscsi-target/tcp login race in LOGIN_FLAGS_READY
    state assignment that can result in frequent errors during
    iscsi discovery:
    
          "iSCSI Login negotiation failed."
    
    To address this bug, move the initial LOGIN_FLAGS_READY
    assignment ahead of iscsi_target_do_login() when handling
    the initial iscsi_target_start_negotiation() request PDU
    during connection login.
    
    As iscsi_target_do_login_rx() work_struct callback is
    clearing LOGIN_FLAGS_READ_ACTIVE after subsequent calls
    to iscsi_target_do_login(), the early sk_data_ready
    ahead of the first iscsi_target_do_login() expects
    LOGIN_FLAGS_READY to also be set for the initial
    login request PDU.
    
    As reported by Maged, this was first obsered using an
    MSFT initiator running across multiple VMWare host
    virtual machines with iscsi-target/tcp.
    
    Reported-by: Maged Mokhtar <mmokhtar@binarykinetics.com>
    Tested-by: Maged Mokhtar <mmokhtar@binarykinetics.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5df474e63ca56a79c41fce7530882b6ff30eed37
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
    
    [ Upstream commit 6c77003677d5f1ce15f26d24360cb66c0bc07bb3 ]
    
    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)
    Cc: 4.0+ <stable@vger.kernel.org> # 4.0+
    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: Sasha Levin <alexander.levin@verizon.com>

commit 7e144ca4d77a8866a7b39b1c573230e69488b84b
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.
    
    [ Upstream commit 43523eba79bda8f5b4c27f8ffe20ea078d20113a ]
    
    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: stable@vger.kernel.org
    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: Sasha Levin <alexander.levin@verizon.com>

commit 7e185e0063bcd0600fb4efcd9d34937792efdb05
Author: Jan Kara <jack@suse.cz>
Date:   Thu May 18 16:36:22 2017 -0700

    xfs: Fix missed holes in SEEK_HOLE implementation
    
    [ Upstream commit 5375023ae1266553a7baa0845e82917d8803f48c ]
    
    XFS SEEK_HOLE implementation could miss a hole in an unwritten extent as
    can be seen by the following command:
    
    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 (49.312 MiB/sec and 12623.9856 ops/sec)
    wrote 8192/8192 bytes at offset 131072
    8 KiB, 2 ops; 0.0000 sec (70.383 MiB/sec and 18018.0180 ops/sec)
    Whence  Result
    HOLE    139264
    
    Where we can see that hole at offset 56k was just ignored by SEEK_HOLE
    implementation. The bug is in xfs_find_get_desired_pgoff() which does
    not properly detect the case when pages are not contiguous.
    
    Fix the problem by properly detecting when found page has larger offset
    than expected.
    
    CC: stable@vger.kernel.org
    Fixes: d126d43f631f996daeee5006714fed914be32368
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 59acce815cd65d016df99c5ab7e15a1c1a6288e8
Author: Eryu Guan <eguan@redhat.com>
Date:   Tue May 23 08:30:46 2017 -0700

    xfs: fix off-by-one on max nr_pages in xfs_find_get_desired_pgoff()
    
    [ Upstream commit 8affebe16d79ebefb1d9d6d56a46dc89716f9453 ]
    
    xfs_find_get_desired_pgoff() is used to search for offset of hole or
    data in page range [index, end] (both inclusive), and the max number
    of pages to search should be at least one, if end == index.
    Otherwise the only page is missed and no hole or data is found,
    which is not correct.
    
    When block size is smaller than page size, this can be demonstrated
    by preallocating a file with size smaller than page size and writing
    data to the last block. E.g. run this xfs_io command on a 1k block
    size XFS on x86_64 host.
    
      # xfs_io -fc "falloc 0 3k" -c "pwrite 2k 1k" \
                -c "seek -d 0" /mnt/xfs/testfile
      wrote 1024/1024 bytes at offset 2048
      1 KiB, 1 ops; 0.0000 sec (33.675 MiB/sec and 34482.7586 ops/sec)
      Whence  Result
      DATA    EOF
    
    Data at offset 2k was missed, and lseek(2) returned ENXIO.
    
    This is uncovered by generic/285 subtest 07 and 08 on ppc64 host,
    where pagesize is 64k. Because a recent change to generic/285
    reduced the preallocated file size to smaller than 64k.
    
    Cc: stable@vger.kernel.org # v3.7+
    Signed-off-by: Eryu Guan <eguan@redhat.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b96e5f18eb815c20a31811760f5b4330c25a59f9
Author: Lyude <lyude@redhat.com>
Date:   Thu May 11 19:31:12 2017 -0400

    drm/radeon: Unbreak HPD handling for r600+
    
    [ Upstream commit 3d18e33735a02b1a90aecf14410bf3edbfd4d3dc ]
    
    We end up reading the interrupt register for HPD5, and then writing it
    to HPD6 which on systems without anything using HPD5 results in
    permanently disabling hotplug on one of the display outputs after the
    first time we acknowledge a hotplug interrupt from the GPU.
    
    This code is really bad. But for now, let's just fix this. I will
    hopefully have a large patch series to refactor all of this soon.
    
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Lyude <lyude@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 81402e4033a7d10c6f841bff364ae0bf0f2fa505
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()
    
    [ Upstream commit 98f9de366fccee7572c646af226b2d4b4841e3b5 ]
    
    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>
    Cc: stable@vger.kernel.org
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

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

    dmaengine: ep93xx: Always start from BASE0
    
    [ Upstream commit 0037ae47812b1f431cc602100d1d51f37d77b61e ]
    
    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>
    Cc: stable@vger.kernel.org
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 72a5ed836013a6597700d1a405d3d879c545a255
Author: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Date:   Tue Apr 18 13:43:32 2017 +0200

    drm/gma500/psb: Actually use VBT mode when it is found
    
    [ Upstream commit 82bc9a42cf854fdf63155759c0aa790bd1f361b0 ]
    
    With LVDS we were incorrectly picking the pre-programmed mode instead of
    the prefered mode provided by VBT. Make sure we pick the VBT mode if
    one is provided. It is likely that the mode read-out code is still wrong
    but this patch fixes the immediate problem on most machines.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78562
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170418114332.12183-1-patrik.r.jakobsson@gmail.com
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4f268a106e88fc4e9b8d3e084c3303cdfdaa25b2
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed Sep 30 01:10:24 2015 +0200

    PCI / PM: Avoid resuming more devices during system suspend
    
    [ Upstream commit 2cef548adf58e9a58a411948b98edb9a3980dbe6 ]
    
    Commit bac2a909a096 (PCI / PM: Avoid resuming PCI devices during
    system suspend) introduced a mechanism by which some PCI devices that
    were runtime-suspended at the system suspend time might be left in
    that state for the duration of the system suspend-resume cycle.
    However, it overlooked devices that were marked as capable of waking
    up the system just because PME support was detected in their PCI
    config space.
    
    Namely, in that case, device_can_wakeup(dev) returns 'true' for the
    device and if the device is not configured for system wakeup,
    device_may_wakeup(dev) returns 'false' and it will be resumed during
    system suspend even though configuring it for system wakeup may not
    really make sense at all.
    
    To avoid this problem, simply disable PME for PCI devices that have
    not been configured for system wakeup and are runtime-suspended at
    the system suspend time for the duration of the suspend-resume cycle.
    
    If the device is in D3cold, its config space is not available and it
    shouldn't be written to, but that's only possible if the device
    has platform PM support and the platform code is responsible for
    checking whether or not the device's configuration is suitable for
    system suspend in that case.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b060ae49eb947bc8a05076074a40840f73c3190c
Author: Tadeusz Struk <tadeusz.struk@intel.com>
Date:   Fri Aug 7 11:34:42 2015 -0700

    PCI: Add quirk for Intel DH895xCC VF PCI config erratum
    
    [ Upstream commit 3388a614b609ad9ac4f542e56ada737557a19651 ]
    
    The PCI capabilities list for Intel DH895xCC VFs (device id 0x0443) with
    QuickAssist Technology is prematurely terminated in hardware.
    Workaround the issue by hard-coding the known expected next capability
    pointer and saving the PCIE cap into internal buffer.
    
    Patch generated against cryptodev-2.6
    
    Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e0bda32c5bc5e2d5de98fc0e42d0284f9e262b42
Author: Alexander Tsoy <alexander@tsoy.me>
Date:   Mon May 22 20:58:11 2017 +0300

    ALSA: hda - apply STAC_9200_DELL_M22 quirk for Dell Latitude D430
    
    [ Upstream commit 1fc2e41f7af4572b07190f9dec28396b418e9a36 ]
    
    This model is actually called 92XXM2-8 in Windows driver. But since pin
    configs for M22 and M28 are identical, just reuse M22 quirk.
    
    Fixes external microphone (tested) and probably docking station ports
    (not tested).
    
    Signed-off-by: Alexander Tsoy <alexander@tsoy.me>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9dbe42c5ae4680e11f257a26f6806d1ad0dd7639
Author: Srinath Mannam <srinath.mannam@broadcom.com>
Date:   Thu May 18 22:27:40 2017 +0530

    mmc: sdhci-iproc: suppress spurious interrupt with Multiblock read
    
    [ Upstream commit f5f968f2371ccdebb8a365487649673c9af68d09 ]
    
    The stingray SDHCI hardware supports ACMD12 and automatically
    issues after multi block transfer completed.
    
    If ACMD12 in SDHCI is disabled, spurious tx done interrupts are seen
    on multi block read command with below error message:
    
    Got data interrupt 0x00000002 even though no data
    operation was in progress.
    
    This patch uses SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 to enable
    ACM12 support in SDHCI hardware and suppress spurious interrupt.
    
    Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
    Reviewed-by: Ray Jui <ray.jui@broadcom.com>
    Reviewed-by: Scott Branden <scott.branden@broadcom.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Fixes: b580c52d58d9 ("mmc: sdhci-iproc: add IPROC SDHCI driver")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0210333e202b6530d52f5208aebe2d499670a385
Author: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Date:   Fri May 5 11:06:50 2017 +0200

    i2c: i2c-tiny-usb: fix buffer not being DMA capable
    
    [ Upstream commit 5165da5923d6c7df6f2927b0113b2e4d9288661e ]
    
    Since v4.9 i2c-tiny-usb generates the below call trace
    and longer works, since it can't communicate with the
    USB device. The reason is, that since v4.9 the USB
    stack checks, that the buffer it should transfer is DMA
    capable. This was a requirement since v2.2 days, but it
    usually worked nevertheless.
    
    [   17.504959] ------------[ cut here ]------------
    [   17.505488] WARNING: CPU: 0 PID: 93 at drivers/usb/core/hcd.c:1587 usb_hcd_map_urb_for_dma+0x37c/0x570
    [   17.506545] transfer buffer not dma capable
    [   17.507022] Modules linked in:
    [   17.507370] CPU: 0 PID: 93 Comm: i2cdetect Not tainted 4.11.0-rc8+ #10
    [   17.508103] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
    [   17.509039] Call Trace:
    [   17.509320]  ? dump_stack+0x5c/0x78
    [   17.509714]  ? __warn+0xbe/0xe0
    [   17.510073]  ? warn_slowpath_fmt+0x5a/0x80
    [   17.510532]  ? nommu_map_sg+0xb0/0xb0
    [   17.510949]  ? usb_hcd_map_urb_for_dma+0x37c/0x570
    [   17.511482]  ? usb_hcd_submit_urb+0x336/0xab0
    [   17.511976]  ? wait_for_completion_timeout+0x12f/0x1a0
    [   17.512549]  ? wait_for_completion_timeout+0x65/0x1a0
    [   17.513125]  ? usb_start_wait_urb+0x65/0x160
    [   17.513604]  ? usb_control_msg+0xdc/0x130
    [   17.514061]  ? usb_xfer+0xa4/0x2a0
    [   17.514445]  ? __i2c_transfer+0x108/0x3c0
    [   17.514899]  ? i2c_transfer+0x57/0xb0
    [   17.515310]  ? i2c_smbus_xfer_emulated+0x12f/0x590
    [   17.515851]  ? _raw_spin_unlock_irqrestore+0x11/0x20
    [   17.516408]  ? i2c_smbus_xfer+0x125/0x330
    [   17.516876]  ? i2c_smbus_xfer+0x125/0x330
    [   17.517329]  ? i2cdev_ioctl_smbus+0x1c1/0x2b0
    [   17.517824]  ? i2cdev_ioctl+0x75/0x1c0
    [   17.518248]  ? do_vfs_ioctl+0x9f/0x600
    [   17.518671]  ? vfs_write+0x144/0x190
    [   17.519078]  ? SyS_ioctl+0x74/0x80
    [   17.519463]  ? entry_SYSCALL_64_fastpath+0x1e/0xad
    [   17.519959] ---[ end trace d047c04982f5ac50 ]---
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Acked-by: Till Harbaum <till@harbaum.org>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8852d28b3f06d30f6bc177df627f0fe50b703a49
Author: Chen, Gong <gong.chen@linux.intel.com>
Date:   Wed Aug 12 18:29:35 2015 +0200

    x86/mce: Don't use percpu workqueues
    
    [ Upstream commit 061120aed7081b9a4393fbe07b558192f40ad911 ]
    
    An MCE is a rare event. Therefore, there's no need to have
    per-CPU instances of both normal and IRQ workqueues. Make them
    both global.
    
    Signed-off-by: Chen, Gong <gong.chen@linux.intel.com>
    [ Fold in subsequent patch from Rui/Boris/Tony for early boot logging. ]
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    [ 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/1439396985-12812-4-git-send-email-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 94d42e8811f4202f3f6c23827c6ebc10576bc2e7
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun May 14 21:47:25 2017 -0400

    osf_wait4(): fix infoleak
    
    [ Upstream commit a8c39544a6eb2093c04afd5005b6192bd0e880c6 ]
    
    failing sys_wait4() won't fill struct rusage...
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 156c18c7d9eda2db224c0e6bb7dcb3d1411ee1bc
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Fri May 19 02:46:56 2017 -0700

    KVM: X86: Fix read out-of-bounds vulnerability in kvm pio emulation
    
    [ Upstream commit cbfc6c9184ce71b52df4b1d82af5afc81a709178 ]
    
    Huawei folks reported a read out-of-bounds vulnerability in kvm pio emulation.
    
    - "inb" instruction to access PIT Mod/Command register (ioport 0x43, write only,
      a read should be ignored) in guest can get a random number.
    - "rep insb" instruction to access PIT register port 0x43 can control memcpy()
      in emulator_pio_in_emulated() to copy max 0x400 bytes but only read 1 bytes,
      which will disclose the unimportant kernel memory in host but no crash.
    
    The similar test program below can reproduce the read out-of-bounds vulnerability:
    
    void hexdump(void *mem, unsigned int len)
    {
            unsigned int i, j;
    
            for(i = 0; i < len + ((len % HEXDUMP_COLS) ? (HEXDUMP_COLS - len % HEXDUMP_COLS) : 0); i++)
            {
                    /* print offset */
                    if(i % HEXDUMP_COLS == 0)
                    {
                            printf("0x%06x: ", i);
                    }
    
                    /* print hex data */
                    if(i < len)
                    {
                            printf("%02x ", 0xFF & ((char*)mem)[i]);
                    }
                    else /* end of block, just aligning for ASCII dump */
                    {
                            printf("   ");
                    }
    
                    /* print ASCII dump */
                    if(i % HEXDUMP_COLS == (HEXDUMP_COLS - 1))
                    {
                            for(j = i - (HEXDUMP_COLS - 1); j <= i; j++)
                            {
                                    if(j >= len) /* end of block, not really printing */
                                    {
                                            putchar(' ');
                                    }
                                    else if(isprint(((char*)mem)[j])) /* printable char */
                                    {
                                            putchar(0xFF & ((char*)mem)[j]);
                                    }
                                    else /* other char */
                                    {
                                            putchar('.');
                                    }
                            }
                            putchar('\n');
                    }
            }
    }
    
    int main(void)
    {
            int i;
            if (iopl(3))
            {
                    err(1, "set iopl unsuccessfully\n");
                    return -1;
            }
            static char buf[0x40];
    
            /* test ioport 0x40,0x41,0x42,0x43,0x44,0x45 */
    
            memset(buf, 0xab, sizeof(buf));
    
            asm volatile("push %rdi;");
            asm volatile("mov %0, %%rdi;"::"q"(buf));
    
            asm volatile ("mov $0x40, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("mov $0x41, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("mov $0x42, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("mov $0x43, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("mov $0x44, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("mov $0x45, %rdx;");
            asm volatile ("in %dx,%al;");
            asm volatile ("stosb;");
    
            asm volatile ("pop %rdi;");
            hexdump(buf, 0x40);
    
            printf("\n");
    
            /* ins port 0x40 */
    
            memset(buf, 0xab, sizeof(buf));
    
            asm volatile("push %rdi;");
            asm volatile("mov %0, %%rdi;"::"q"(buf));
    
            asm volatile ("mov $0x20, %rcx;");
            asm volatile ("mov $0x40, %rdx;");
            asm volatile ("rep insb;");
    
            asm volatile ("pop %rdi;");
            hexdump(buf, 0x40);
    
            printf("\n");
    
            /* ins port 0x43 */
    
            memset(buf, 0xab, sizeof(buf));
    
            asm volatile("push %rdi;");
            asm volatile("mov %0, %%rdi;"::"q"(buf));
    
            asm volatile ("mov $0x20, %rcx;");
            asm volatile ("mov $0x43, %rdx;");
            asm volatile ("rep insb;");
    
            asm volatile ("pop %rdi;");
            hexdump(buf, 0x40);
    
            printf("\n");
            return 0;
    }
    
    The vcpu->arch.pio_data buffer is used by both in/out instrutions emulation
    w/o clear after using which results in some random datas are left over in
    the buffer. Guest reads port 0x43 will be ignored since it is write only,
    however, the function kernel_pio() can't distigush this ignore from successfully
    reads data from device's ioport. There is no new data fill the buffer from
    port 0x43, however, emulator_pio_in_emulated() will copy the stale data in
    the buffer to the guest unconditionally. This patch fixes it by clearing the
    buffer before in instruction emulation to avoid to grant guest the stale data
    in the buffer.
    
    In addition, string I/O is not supported for in kernel device. So there is no
    iteration to read ioport %RCX times for string I/O. The function kernel_pio()
    just reads one round, and then copy the io size * %RCX to the guest unconditionally,
    actually it copies the one round ioport data w/ other random datas which are left
    over in the vcpu->arch.pio_data buffer to the guest. This patch fixes it by
    introducing the string I/O support for in kernel device in order to grant the right
    ioport datas to the guest.
    
    Before the patch:
    
    0x000000: fe 38 93 93 ff ff ab ab .8......
    0x000008: ab ab ab ab ab ab ab ab ........
    0x000010: ab ab ab ab ab ab ab ab ........
    0x000018: ab ab ab ab ab ab ab ab ........
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    0x000000: f6 00 00 00 00 00 00 00 ........
    0x000008: 00 00 00 00 00 00 00 00 ........
    0x000010: 00 00 00 00 4d 51 30 30 ....MQ00
    0x000018: 30 30 20 33 20 20 20 20 00 3
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    0x000000: f6 00 00 00 00 00 00 00 ........
    0x000008: 00 00 00 00 00 00 00 00 ........
    0x000010: 00 00 00 00 4d 51 30 30 ....MQ00
    0x000018: 30 30 20 33 20 20 20 20 00 3
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    After the patch:
    
    0x000000: 1e 02 f8 00 ff ff ab ab ........
    0x000008: ab ab ab ab ab ab ab ab ........
    0x000010: ab ab ab ab ab ab ab ab ........
    0x000018: ab ab ab ab ab ab ab ab ........
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    0x000000: d2 e2 d2 df d2 db d2 d7 ........
    0x000008: d2 d3 d2 cf d2 cb d2 c7 ........
    0x000010: d2 c4 d2 c0 d2 bc d2 b8 ........
    0x000018: d2 b4 d2 b0 d2 ac d2 a8 ........
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    0x000000: 00 00 00 00 00 00 00 00 ........
    0x000008: 00 00 00 00 00 00 00 00 ........
    0x000010: 00 00 00 00 00 00 00 00 ........
    0x000018: 00 00 00 00 00 00 00 00 ........
    0x000020: ab ab ab ab ab ab ab ab ........
    0x000028: ab ab ab ab ab ab ab ab ........
    0x000030: ab ab ab ab ab ab ab ab ........
    0x000038: ab ab ab ab ab ab ab ab ........
    
    Reported-by: Moguofang <moguofang@huawei.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Moguofang <moguofang@huawei.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e8b80de6d76ec77bd8457b0aa157b2617ed06454
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 13:49:45 2017 +0100

    watchdog: pcwd_usb: fix NULL-deref at probe
    
    [ Upstream commit 46c319b848268dab3f0e7c4a5b6e9146d3bca8a4 ]
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer should a malicious device lack endpoints.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9ef27e6ccbe0f3a822d6b446978522e9ae4424dc
Author: Julius Werner <jwerner@chromium.org>
Date:   Fri May 12 14:42:58 2017 -0700

    drivers: char: mem: Check for address space wraparound with mmap()
    
    [ Upstream commit b299cde245b0b76c977f4291162cf668e087b408 ]
    
    /dev/mem currently allows mmap() mappings that wrap around the end of
    the physical address space, which should probably be illegal. It
    circumvents the existing STRICT_DEVMEM permission check because the loop
    immediately terminates (as the start address is already higher than the
    end address). On the x86_64 architecture it will then cause a panic
    (from the BUG(start >= end) in arch/x86/mm/pat.c:reserve_memtype()).
    
    This patch adds an explicit check to make sure offset + size will not
    wrap around in the physical address type.
    
    Signed-off-by: Julius Werner <jwerner@chromium.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

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

    serial: core: fix crash in uart_suspend_port
    
    [ Upstream commit 88e2582e90bb89fe895ff0dceeb5d5ab65d07997 ]
    
    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>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b614900e06509cba6a33b563b95c121f615c8863
Author: Peter Hurley <peter@hurleysoftware.com>
Date:   Fri Nov 27 14:25:08 2015 -0500

    tty: Fix GPF in flush_to_ldisc()
    
    [ Upstream commit 9ce119f318ba1a07c29149301f1544b6c4bea52a ]
    
    A line discipline which does not define a receive_buf() method can
    can cause a GPF if data is ever received [1]. Oddly, this was known
    to the author of n_tracesink in 2011, but never fixed.
    
    [1] GPF report
        BUG: unable to handle kernel NULL pointer dereference at           (null)
        IP: [<          (null)>]           (null)
        PGD 3752d067 PUD 37a7b067 PMD 0
        Oops: 0010 [#1] SMP KASAN
        Modules linked in:
        CPU: 2 PID: 148 Comm: kworker/u10:2 Not tainted 4.4.0-rc2+ #51
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
        Workqueue: events_unbound flush_to_ldisc
        task: ffff88006da94440 ti: ffff88006db60000 task.ti: ffff88006db60000
        RIP: 0010:[<0000000000000000>]  [<          (null)>]           (null)
        RSP: 0018:ffff88006db67b50  EFLAGS: 00010246
        RAX: 0000000000000102 RBX: ffff88003ab32f88 RCX: 0000000000000102
        RDX: 0000000000000000 RSI: ffff88003ab330a6 RDI: ffff88003aabd388
        RBP: ffff88006db67c48 R08: ffff88003ab32f9c R09: ffff88003ab31fb0
        R10: ffff88003ab32fa8 R11: 0000000000000000 R12: dffffc0000000000
        R13: ffff88006db67c20 R14: ffffffff863df820 R15: ffff88003ab31fb8
        FS:  0000000000000000(0000) GS:ffff88006dc00000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
        CR2: 0000000000000000 CR3: 0000000037938000 CR4: 00000000000006e0
        Stack:
         ffffffff829f46f1 ffff88006da94bf8 ffff88006da94bf8 0000000000000000
         ffff88003ab31fb0 ffff88003aabd438 ffff88003ab31ff8 ffff88006430fd90
         ffff88003ab32f9c ffffed0007557a87 1ffff1000db6cf78 ffff88003ab32078
        Call Trace:
         [<ffffffff8127cf91>] process_one_work+0x8f1/0x17a0 kernel/workqueue.c:2030
         [<ffffffff8127df14>] worker_thread+0xd4/0x1180 kernel/workqueue.c:2162
         [<ffffffff8128faaf>] kthread+0x1cf/0x270 drivers/block/aoe/aoecmd.c:1302
         [<ffffffff852a7c2f>] ret_from_fork+0x3f/0x70 arch/x86/entry/entry_64.S:468
        Code:  Bad RIP value.
        RIP  [<          (null)>]           (null)
         RSP <ffff88006db67b50>
        CR2: 0000000000000000
        ---[ end trace a587f8947e54d6ea ]---
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2e279b7d786ccbe8aa4345c1ec43bafab179b409
Author: Dmitry Vyukov <dvyukov@google.com>
Date:   Thu Sep 17 17:17:08 2015 +0200

    tty: fix data race in flush_to_ldisc
    
    [ Upstream commit 7098296a362a96051fa120abf48f0095818b99cd ]
    
    flush_to_ldisc reads port->itty and checks that it is not NULL,
    concurrently release_tty sets port->itty to NULL. It is possible
    that flush_to_ldisc loads port->itty once, ensures that it is
    not NULL, but then reloads it again and uses. The second load
    can already return NULL, which will cause a crash.
    
    Use READ_ONCE to read port->itty.
    
    The data race was found with KernelThreadSanitizer (KTSAN).
    
    Signed-off-by: Dmitry Vyukov <dvyukov@google.com>
    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

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

    serial: ifx6x60: fix use-after-free on module unload
    
    [ Upstream commit 1e948479b3d63e3ac0ecca13cbf4921c7d17c168 ]
    
    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: stable <stable@vger.kernel.org>     # 3.8
    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>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 191c13c554e5af263e090148288e1b310986455d
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Thu Apr 23 16:15:39 2015 +0200

    serial: ifx6x60: Remove dangerous spi_driver casts
    
    [ Upstream commit 9a499db0325b8a8e2368f21fef66705b120f38ba ]
    
    Casting spi_driver pointers to "void *" when calling
    spi_{,un}register_driver() bypasses all type checking.
    
    Remove the superfluous casts to fix this.
    
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 95a639d1506750c863d9b4fbb26f8fd97ab30f56
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Apr 11 19:07:28 2017 +0200

    Revert "tty_port: register tty ports with serdev bus"
    
    [ Upstream commit d3ba126a226a6b6da021ebfea444a2a807cde945 ]
    
    This reverts commit 8ee3fde047589dc9c201251f07d0ca1dc776feca.
    
    The new serdev bus hooked into the tty layer in
    tty_port_register_device() by registering a serdev controller instead of
    a tty device whenever a serdev client is present, and by deregistering
    the controller in the tty-port destructor. This is broken in several
    ways:
    
    Firstly, it leads to a NULL-pointer dereference whenever a tty driver
    later deregisters its devices as no corresponding character device will
    exist.
    
    Secondly, far from every tty driver uses tty-port refcounting (e.g.
    serial core) so the serdev devices might never be deregistered or
    deallocated.
    
    Thirdly, deregistering at tty-port destruction is too late as the
    underlying device and structures may be long gone by then. A port is not
    released before an open tty device is closed, something which a
    registered serdev client can prevent from ever happening. A driver
    callback while the device is gone typically also leads to crashes.
    
    Many tty drivers even keep their ports around until the driver is
    unloaded (e.g. serial core), something which even if a late callback
    never happens, leads to leaks if a device is unbound from its driver and
    is later rebound.
    
    The right solution here is to add a new tty_port_unregister_device()
    helper and to never call tty_device_unregister() whenever the port has
    been claimed by serdev, but since this requires modifying just about
    every tty driver (and multiple subsystems) it will need to be done
    incrementally.
    
    Reverting the offending patch is the first step in fixing the broken
    lifetime assumptions. A follow-up patch will add a new pair of
    tty-device registration helpers, which a vetted tty driver can use to
    support serdev (initially serial core). When every tty driver uses the
    serdev helpers (at least for deregistration), we can add serdev
    registration to tty_port_register_device() again.
    
    Note that this also fixes another issue with serdev, which currently
    allocates and registers a serdev controller for every tty device
    registered using tty_port_device_register() only to immediately
    deregister and deallocate it when the corresponding OF node or serdev
    child node is missing. This should be addressed before enabling serdev
    for hot-pluggable buses.
    
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Rob Herring <robh@kernel.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1520f7e76d45844e83ca6f606afac378ecb62109
Author: Rob Herring <robh@kernel.org>
Date:   Thu Feb 2 13:48:09 2017 -0600

    tty_port: register tty ports with serdev bus
    
    [ Upstream commit 8ee3fde047589dc9c201251f07d0ca1dc776feca ]
    
    Register a serdev controller with the serdev bus when a tty_port is
    registered. This creates the serdev controller and create's serdev
    devices for any DT child nodes of the tty_port's parent (i.e. the UART
    device).
    
    Signed-off-by: Rob Herring <robh@kernel.org>
    Reviewed-By: Sebastian Reichel <sre@kernel.org>
    Tested-By: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0095625438b2cc980fc2bdd3d509ca699c688b44
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Wed May 17 11:23:11 2017 -0500

    usb: musb: tusb6010_omap: Do not reset the other direction's packet size
    
    [ Upstream commit 6df2b42f7c040d57d9ecb67244e04e905ab87ac6 ]
    
    We have one register for each EP to set the maximum packet size for both
    TX and RX.
    If for example an RX programming would happen before the previous TX
    transfer finishes we would reset the TX packet side.
    
    To fix this issue, only modify the TX or RX part of the register.
    
    Fixes: 550a7375fe72 ("USB: Add MUSB and TUSB support")
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Tested-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d7cc01aa17966ddd55a8d24eef92381ea27fa46a
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Wed May 17 18:32:06 2017 +0300

    usb: host: xhci-plat: propagate return value of platform_get_irq()
    
    [ Upstream commit 4b148d5144d64ee135b8924350cb0b3a7fd21150 ]
    
    platform_get_irq() returns an error code, but the xhci-plat driver
    ignores it and always returns -ENODEV. This is not correct, and
    prevents -EPROBE_DEFER from being propagated properly.
    
    CC: <stable@vger.kernel.org>
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1458bfaae6c8e876ea819c63253bd6926d3f880a
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed May 17 18:32:03 2017 +0300

    USB: xhci: fix lock-inversion problem
    
    [ Upstream commit 63aea0dbab90a2461faaae357cbc8cfd6c8de9fe ]
    
    With threaded interrupts, bottom-half handlers are called with
    interrupts enabled.  Therefore they can't safely use spin_lock(); they
    have to use spin_lock_irqsave().  Lockdep warns about a violation
    occurring in xhci_irq():
    
    =========================================================
    [ INFO: possible irq lock inversion dependency detected ]
    4.11.0-rc8-dbg+ #1 Not tainted
    ---------------------------------------------------------
    swapper/7/0 just changed the state of lock:
     (&(&ehci->lock)->rlock){-.-...}, at: [<ffffffffa0130a69>]
    ehci_hrtimer_func+0x29/0xc0 [ehci_hcd]
    but this lock took another, HARDIRQ-unsafe lock in the past:
     (hcd_urb_list_lock){+.....}
    
    and interrupts could create inverse lock ordering between them.
    
    other info that might help us debug this:
     Possible interrupt unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(hcd_urb_list_lock);
                                   local_irq_disable();
                                   lock(&(&ehci->lock)->rlock);
                                   lock(hcd_urb_list_lock);
      <Interrupt>
        lock(&(&ehci->lock)->rlock);
     *** DEADLOCK ***
    
    no locks held by swapper/7/0.
    the shortest dependencies between 2nd lock and 1st lock:
     -> (hcd_urb_list_lock){+.....} ops: 252 {
        HARDIRQ-ON-W at:
                          __lock_acquire+0x602/0x1280
                          lock_acquire+0xd5/0x1c0
                          _raw_spin_lock+0x2f/0x40
                          usb_hcd_unlink_urb_from_ep+0x1b/0x60 [usbcore]
                          xhci_giveback_urb_in_irq.isra.45+0x70/0x1b0 [xhci_hcd]
                          finish_td.constprop.60+0x1d8/0x2e0 [xhci_hcd]
                          xhci_irq+0xdd6/0x1fa0 [xhci_hcd]
                          usb_hcd_irq+0x26/0x40 [usbcore]
                          irq_forced_thread_fn+0x2f/0x70
                          irq_thread+0x149/0x1d0
                          kthread+0x113/0x150
                          ret_from_fork+0x2e/0x40
    
    This patch fixes the problem.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: Bart Van Assche <bart.vanassche@sandisk.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a0334d0ba6ad15be563cc30ddf2784c86793a083
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Mon Jan 23 14:20:07 2017 +0200

    usb: host: xhci: simplify irq handler return
    
    [ Upstream commit 76a35293b901915c5dcb4a87a4a0da8d7caf39fe ]
    
    Instead of having several return points, let's use a local variable and
    a single place to return. This makes the code slightly easier to read.
    
    [set ret = IRQ_HANDLED in default working case  -Mathias]
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8732affeaf374527f44d49162a68b6f4f260ef8e
Author: Peter Chen <peter.chen@nxp.com>
Date:   Wed May 17 18:32:01 2017 +0300

    usb: host: xhci-mem: allocate zeroed Scratchpad Buffer
    
    [ Upstream commit 7480d912d549f414e0ce39331870899e89a5598c ]
    
    According to xHCI ch4.20 Scratchpad Buffers, the Scratchpad
    Buffer needs to be zeroed.
    
            ...
            The following operations take place to allocate
            Scratchpad Buffers to the xHC:
            ...
                    b. Software clears the Scratchpad Buffer to '0'
    
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2f68fe68ad96e45a172e17e3369c8d676b229c43
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Wed May 17 18:32:00 2017 +0300

    xhci: apply PME_STUCK_QUIRK and MISSING_CAS quirk for Denverton
    
    [ Upstream commit a0c16630d35a874e82bdf2088f58ecaca1024315 ]
    
    Intel Denverton microserver is Atom based and need the PME and CAS quirks
    as well.
    
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e17762c03b3ee6ca56778f081cd1a4f4068fb1fb
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed May 17 10:19:49 2017 +0200

    tracing/kprobes: Enforce kprobes teardown after testing
    
    [ Upstream commit 30e7d894c1478c88d50ce94ddcdbd7f9763d9cdd ]
    
    Enabling the tracer selftest triggers occasionally the warning in
    text_poke(), which warns when the to be modified page is not marked
    reserved.
    
    The reason is that the tracer selftest installs kprobes on functions marked
    __init for testing. These probes are removed after the tests, but that
    removal schedules the delayed kprobes_optimizer work, which will do the
    actual text poke. If the work is executed after the init text is freed,
    then the warning triggers. The bug can be reproduced reliably when the work
    delay is increased.
    
    Flush the optimizer work and wait for the optimizing/unoptimizing lists to
    become empty before returning from the kprobes tracer selftest. That
    ensures that all operations which were queued due to the probes removal
    have completed.
    
    Link: http://lkml.kernel.org/r/20170516094802.76a468bb@gandalf.local.home
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: 6274de498 ("kprobes: Support delayed unoptimizing")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 78de28c67c8f3e46d4198982cff389ab986544ac
Author: Johan Hovold <johan@kernel.org>
Date:   Wed May 17 17:29:09 2017 +0200

    of: fdt: add missing allocation-failure check
    
    [ Upstream commit 49e67dd17649b60b4d54966e18ec9c80198227f0 ]
    
    The memory allocator passed to __unflatten_device_tree() (e.g. a wrapped
    kzalloc) can fail so add the missing sanity check to avoid dereferencing
    a NULL pointer.
    
    Fixes: fe14042358fa ("of/flattree: Refactor unflatten_device_tree and add fdt_unflatten_tree")
    Cc: stable <stable@vger.kernel.org>     # 2.6.38
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit ac38837324c2f0b818892abfefbf26593edf1d62
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed May 17 16:30:50 2017 +0200

    USB: serial: qcserial: add more Lenovo EM74xx device IDs
    
    [ Upstream commit 8d7a10dd323993cc40bd37bce8bc570133b0c396 ]
    
    In their infinite wisdom, and never ending quest for end user frustration,
    Lenovo has decided to use new USB device IDs for the wwan modules in
    their 2017 laptops.  The actual hardware is still the Sierra Wireless
    EM7455 or EM7430, depending on region.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2a3835ffa5ed491145bb48667c0d17bb4b4a0484
Author: Johan Hovold <johan@kernel.org>
Date:   Wed May 10 18:18:28 2017 +0200

    USB: hub: fix non-SS hub-descriptor handling
    
    [ Upstream commit bec444cd1c94c48df409a35ad4e5b143c245c3f7 ]
    
    Add missing sanity check on the non-SuperSpeed hub-descriptor length in
    order to avoid parsing and leaking two bytes of uninitialised slab data
    through sysfs removable-attributes (or a compound-device debug
    statement).
    
    Note that we only make sure that the DeviceRemovable field is always
    present (and specifically ignore the unused PortPwrCtrlMask field) in
    order to continue support any hubs with non-compliant descriptors. As a
    further safeguard, the descriptor buffer is also cleared.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>     # 2.6.12
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c5922c99f1936d499d4a0d78bc4e4f55fc8ca9b5
Author: Johan Hovold <johan@kernel.org>
Date:   Wed May 10 18:18:27 2017 +0200

    USB: hub: fix SS hub-descriptor handling
    
    [ Upstream commit 2c25a2c818023df64463aac3288a9f969491e507 ]
    
    A SuperSpeed hub descriptor does not have any variable-length fields so
    bail out when reading a short descriptor.
    
    This avoids parsing and leaking two bytes of uninitialised slab data
    through sysfs removable-attributes.
    
    Fixes: dbe79bbe9dcb ("USB 3.0 Hub Changes")
    Cc: stable <stable@vger.kernel.org>     # 2.6.39
    Cc: John Youn <John.Youn@synopsys.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit de90980c52daa2bf68a2f91cf11255c00e803034
Author: Johan Hovold <johan@kernel.org>
Date:   Thu May 11 11:36:02 2017 +0200

    USB: iowarrior: fix info ioctl on big-endian hosts
    
    [ Upstream commit dd5ca753fa92fb736b1395db892bd29f78e6d408 ]
    
    Drop erroneous le16_to_cpu when returning the USB device speed which is
    already in host byte order.
    
    Found using sparse:
    
            warning: cast to restricted __le16
    
    Fixes: 946b960d13c1 ("USB: add driver for iowarrior devices.")
    Cc: stable <stable@vger.kernel.org>     # 2.6.21
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 46b3a375a9267374006f2d561afe007a31c0ca29
Author: Johan Hovold <johan@kernel.org>
Date:   Fri May 12 12:06:32 2017 +0200

    uwb: fix device quirk on big-endian hosts
    
    [ Upstream commit 41318a2b82f5d5fe1fb408f6d6e0b22aa557111d ]
    
    Add missing endianness conversion when using the USB device-descriptor
    idProduct field to apply a hardware quirk.
    
    Fixes: 1ba47da52712 ("uwb: add the i1480 DFU driver")
    Cc: stable <stable@vger.kernel.org>     # 2.6.28
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8ace7b038603bf825afd10771a936f39f003c03f
Author: Vamsi Krishna Samavedam <vskrishn@codeaurora.org>
Date:   Tue May 16 14:38:08 2017 +0200

    USB: core: replace %p with %pK
    
    [ Upstream commit 2f964780c03b73de269b08d12aff96a9618d13f3 ]
    
    Format specifier %p can leak kernel addresses while not valuing the
    kptr_restrict system settings. When kptr_restrict is set to (1), kernel
    pointers printed using the %pK format specifier will be replaced with
    Zeros. Debugging Note : &pK prints only Zeros as address. If you need
    actual address information, write 0 to kptr_restrict.
    
    echo 0 > /proc/sys/kernel/kptr_restrict
    
    [Found by poking around in a random vendor kernel tree, it would be nice
    if someone would actually send these types of patches upstream - gkh]
    
    Signed-off-by: Vamsi Krishna Samavedam <vskrishn@codeaurora.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 083112faaf11b169240eb25e74baeebbfea5b52e
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue May 16 11:47:29 2017 -0400

    USB: ene_usb6250: fix DMA to the stack
    
    [ Upstream commit 628c2893d44876ddd11602400c70606ade62e129 ]
    
    The ene_usb6250 sub-driver in usb-storage does USB I/O to buffers on
    the stack, which doesn't work with vmapped stacks.  This patch fixes
    the problem by allocating a separate 512-byte buffer at probe time and
    using it for all of the offending I/O operations.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: Andreas Hartmann <andihartmann@01019freenet.de>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a3670852d2fb07c6f5251b2d701d4ee07312b64d
Author: Andrey Korolyov <andrey@xdel.ru>
Date:   Tue May 16 23:54:41 2017 +0300

    USB: serial: ftdi_sio: add Olimex ARM-USB-TINY(H) PIDs
    
    [ Upstream commit 5f63424ab7daac840df2b12dd5bcc5b38d50f779 ]
    
    This patch adds support for recognition of ARM-USB-TINY(H) devices which
    are almost identical to ARM-USB-OCD(H) but lacking separate barrel jack
    and serial console.
    
    By suggestion from Johan Hovold it is possible to replace
    ftdi_jtag_quirk with a bit more generic construction. Since all
    Olimex-ARM debuggers has exactly two ports, we could safely always use
    only second port within the debugger family.
    
    Signed-off-by: Andrey Korolyov <andrey@xdel.ru>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d0e929a4e63f5b4a95a7daaf68d3738d1ec06d8c
Author: Willy Tarreau <w@1wt.eu>
Date:   Tue May 16 19:18:55 2017 +0200

    char: lp: fix possible integer overflow in lp_setup()
    
    [ Upstream commit 3e21f4af170bebf47c187c1ff8bf155583c9f3b1 ]
    
    The lp_setup() code doesn't apply any bounds checking when passing
    "lp=none", and only in this case, resulting in an overflow of the
    parport_nr[] array. All versions in Git history are affected.
    
    Reported-By: Roee Hay <roee.hay@hcl.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit da6d8dbb5da7cb0286d2ab11724c27f2023f4032
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Sun Apr 30 17:32:28 2017 -0400

    dm bufio: make the parameter "retain_bytes" unsigned long
    
    [ Upstream commit 13840d38016203f0095cd547b90352812d24b787 ]
    
    Change the type of the parameter "retain_bytes" from unsigned to
    unsigned long, so that on 64-bit machines the user can set more than
    4GiB of data to be retained.
    
    Also, change the type of the variable "count" in the function
    "__evict_old_buffers" to unsigned long.  The assignment
    "count = c->n_buffers[LIST_CLEAN] + c->n_buffers[LIST_DIRTY];"
    could result in unsigned long to unsigned overflow and that could result
    in buffers not being freed when they should.
    
    While at it, avoid division in get_retain_buffers().  Division is slow,
    we can change it to shift because we have precalculated the log2 of
    block size.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b9805634c6de3d38841f53e814c91bab6708f337
Author: Jiang Liu <jiang.liu@linux.intel.com>
Date:   Mon Jun 1 16:05:12 2015 +0800

    genirq: Introduce struct irq_common_data to host shared irq data
    
    [ Upstream commit 0d0b4c866bcce647f40d73efe5e90aeeb079050a ]
    
    With the introduction of hierarchy irqdomain, struct irq_data becomes
    per-chip instead of per-irq and there may be multiple irq_datas
    associated with the same irq. Some per-irq data stored in struct
    irq_data now may get duplicated into multiple irq_datas, and causes
    inconsistent view.
    
    So introduce struct irq_common_data to host per-irq common data and to
    achieve consistent view among irq_chips.
    
    Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Cc: Kevin Cernekee <cernekee@gmail.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Link: http://lkml.kernel.org/r/1433145945-789-4-git-send-email-jiang.liu@linux.intel.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 073bc325fdc48c352207b76c32e2fc12fc780d06
Author: Du, Changbin <changbin.du@intel.com>
Date:   Tue Apr 12 19:10:18 2016 +0800

    usb: dwc3: make dwc3_debugfs_init return value be void
    
    [ Upstream commit 4e9f311833a946e984c82086b21b128918f4a6a4 ]
    
    Debugfs init failure is not so important. We can continue our job on
    this failure. Also no break need for debugfs_create_file call failure.
    
    Signed-off-by: Du, Changbin <changbin.du@intel.com>
    
    [felipe.balbi@linux.intel.com :
            - remove out-of-memory message, we get that from OOM.
            - switch dev_err() to dev_dbg() ]
    
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 83204fd38a020749bd0f0d614b2ac4274039dc96
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Tue Mar 1 10:03:06 2016 +0000

    kvm arm: Move fake PGD handling to arch specific files
    
    [ Upstream commit 120f0779c3ed89c25ef1db943feac8ed73a0d7f9 ]
    
    Rearrange the code for fake pgd handling, which is applicable
    only for arm64. This will later be removed once we introduce
    the stage2 page table walker macros.
    
    Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
    Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 060e39373d8a2d5c6b80f462e233c2e19da7ab3c
Author: Firo Yang <firogm@gmail.com>
Date:   Thu Apr 23 11:07:40 2015 +0100

    ARM: KVM: Remove pointless void pointer cast
    
    [ Upstream commit a5f56ba3b4ec8d2ad80da4c447d47e37e2b504fb ]
    
    No need to cast the void pointer returned by kmalloc() in
    arch/arm/kvm/mmu.c::kvm_alloc_stage2_pgd().
    
    Signed-off-by: Firo Yang <firogm@gmail.com>
    Acked-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0bef2bd6fa64c5dac54a3b41f58bc7068af85333
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
    
    [ Upstream commit 9a445bbb1607d9f14556a532453dd86d1b7e381e ]
    
    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")
    Cc: <stable@vger.kernel.org> # v4.1+
    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: Sasha Levin <alexander.levin@verizon.com>

commit 873bdf5cd492d25b6a9c64840f03552a02ae928a
Author: Joe Thornber <ejt@redhat.com>
Date:   Mon May 15 09:45:40 2017 -0400

    dm space map disk: fix some book keeping in the disk space map
    
    [ Upstream commit 0377a07c7a035e0d033cd8b29f0cb15244c0916a ]
    
    When decrementing the reference count for a block, the free count wasn't
    being updated if the reference count went to zero.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a42b975f484e72909138334b21ef748420137a18
Author: Joe Thornber <ejt@redhat.com>
Date:   Mon May 15 09:43:05 2017 -0400

    dm thin metadata: call precommit before saving the roots
    
    [ Upstream commit 91bcdb92d39711d1adb40c26b653b7978d93eb98 ]
    
    These calls were the wrong way round in __write_initial_superblock.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2cd394cd10465fc0878958ba99e6080ac8ead559
Author: Johan Hovold <johan@kernel.org>
Date:   Thu May 11 11:41:21 2017 +0200

    USB: serial: io_ti: fix div-by-zero in set_termios
    
    [ Upstream commit 6aeb75e6adfaed16e58780309613a578fe1ee90b ]
    
    Fix a division-by-zero in set_termios when debugging is enabled and a
    high-enough speed has been requested so that the divisor value becomes
    zero.
    
    Instead of just fixing the offending debug statement, cap the baud rate
    at the base as a zero divisor value also appears to crash the firmware.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>     # 2.6.12
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a1dfb5701675588cb95d180e364d444a48d1c413
Author: Johan Hovold <johan@kernel.org>
Date:   Thu May 11 11:41:20 2017 +0200

    USB: serial: mct_u232: fix big-endian baud-rate handling
    
    [ Upstream commit 26cede343656c0bc2c33cdc783771282405c7fb2 ]
    
    Drop erroneous cpu_to_le32 when setting the baud rate, something which
    corrupted the divisor on big-endian hosts.
    
    Found using sparse:
    
            warning: incorrect type in argument 1 (different base types)
                expected unsigned int [unsigned] [usertype] val
                got restricted __le32 [usertype] <noident>
    
    Fixes: af2ac1a091bc ("USB: serial mct_usb232: move DMA buffers to heap")
    Cc: stable <stable@vger.kernel.org>     # 2.6.34
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Acked-By: Pete Zaitcev <zaitcev@yahoo.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 391f2e9446242a35fd27731769a2540ceed43065
Author: Anthony Mallet <anthony.mallet@laas.fr>
Date:   Fri May 5 17:30:16 2017 +0200

    USB: serial: ftdi_sio: fix setting latency for unprivileged users
    
    [ Upstream commit bb246681b3ed0967489a7401ad528c1aaa1a4c2e ]
    
    Commit 557aaa7ffab6 ("ft232: support the ASYNC_LOW_LATENCY
    flag") enables unprivileged users to set the FTDI latency timer,
    but there was a logic flaw that skipped sending the corresponding
    USB control message to the device.
    
    Specifically, the device latency timer would not be updated until next
    open, something which was later also inadvertently broken by commit
    c19db4c9e49a ("USB: ftdi_sio: set device latency timeout at port
    probe").
    
    A recent commit c6dce2626606 ("USB: serial: ftdi_sio: fix extreme
    low-latency setting") disabled the low-latency mode by default so we now
    need this fix to allow unprivileged users to again enable it.
    
    Signed-off-by: Anthony Mallet <anthony.mallet@laas.fr>
    [johan: amend commit message]
    Fixes: 557aaa7ffab6 ("ft232: support the ASYNC_LOW_LATENCY flag")
    Fixes: c19db4c9e49a ("USB: ftdi_sio: set device latency timeout at port probe").
    Cc: stable <stable@vger.kernel.org>     # 2.6.31
    Signed-off-by: Johan Hovold <johan@kernel.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 048a9813c3e580a165ae49bd43539dd0838daefd
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Wed May 3 10:28:54 2017 +0200

    usb: serial: option: add Telit ME910 support
    
    [ Upstream commit 40dd46048c155b8f0683f468c950a1c107f77a7c ]
    
    This patch adds support for Telit ME910 PID 0x1100.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 092c6f1e1630d2cbdbdea1e2ee95f629640da280
Author: Leonard Crestez <leonard.crestez@nxp.com>
Date:   Fri May 5 14:00:17 2017 +0300

    ARM: dts: imx6sx-sdb: Remove OPP override
    
    [ Upstream commit d8581c7c8be172dac156a19d261f988a72ce596f ]
    
    The board file for imx6sx-sdb overrides cpufreq operating points to use
    higher voltages. This is done because the board has a shared rail for
    VDD_ARM_IN and VDD_SOC_IN and when using LDO bypass the shared voltage
    needs to be a value suitable for both ARM and SOC.
    
    This only applies to LDO bypass mode, a feature not present in upstream.
    When LDOs are enabled the effect is to use higher voltages than necessary
    for no good reason.
    
    Setting these higher voltages can make some boards fail to boot with ugly
    semi-random crashes reminiscent of memory corruption. These failures only
    happen on board rev. C, rev. B is reported to still work.
    
    Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
    Fixes: 54183bd7f766 ("ARM: imx6sx-sdb: add revb board and make it default")
    Cc: stable@vger.kernel.org
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit ba640473d7c9fcca00416eede0501dc68766cb6f
Author: Fabio Estevam <fabio.estevam@nxp.com>
Date:   Thu Apr 28 23:34:27 2016 -0300

    ARM: dts: imx6sx-sdb: Add 198MHz operational point
    
    [ Upstream commit 1dd58e12dfd037edfa75825bb719031dec822a73 ]
    
    imx6sx-sdb has custom operating points entries because it has one
    power supply that drives both VDDARM_IN and VDDSOC_IN.
    
    As per the MX6UL datasheet we have the following minimum voltages for
    198 MHz operation (after adding the 25mV margin value):
    VDDARM_IN = 0.975 V
    VDDSOC_IN = 1.175 V
    
    So use 1.175V for the 198MHz operation.
    
    Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4bb916c171fa2dd59d6c215c5be4b511ad21cf0b
Author: Aleksa Sarai <cyphar@cyphar.com>
Date:   Sat Jun 6 10:02:14 2015 +1000

    cgroup: use bitmask to filter for_each_subsys
    
    [ Upstream commit cb4a316752709be4a644f070440a8be470d92b7d ]
    
    Add a new macro for_each_subsys_which that allows all enabled cgroup
    subsystems to be filtered by a bitmask, such that mask & (1 << ssid)
    determines if the subsystem is to be processed in the loop body (where
    ssid is the unique id of the subsystem).
    
    Also replace the need_forkexit_callback with two separate bitmasks for
    each callback to make (ss->{fork,exit}) checks unnecessary.
    
    tj: add a short comment for "if (!CGROUP_SUBSYS_COUNT)".
    
    Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 034dd596324d53e0d7dd9a7a3f3290e6982eb1b4
Author: Tejun Heo <tj@kernel.org>
Date:   Wed May 13 16:35:16 2015 -0400

    sched, cgroup: reorganize threadgroup locking
    
    [ Upstream commit 7d7efec368d537226142cbe559f45797f18672f9 ]
    
    threadgroup_change_begin/end() are used to mark the beginning and end
    of threadgroup modifying operations to allow code paths which require
    a threadgroup to stay stable across blocking operations to synchronize
    against those sections using threadgroup_lock/unlock().
    
    It's currently implemented as a general mechanism in sched.h using
    per-signal_struct rwsem; however, this never grew non-cgroup use cases
    and becomes noop if !CONFIG_CGROUPS.  It turns out that cgroups is
    gonna be better served with a different sycnrhonization scheme and is
    a bit silly to keep cgroups specific details as a general mechanism.
    
    What's general here is identifying the places where threadgroups are
    modified.  This patch restructures threadgroup locking so that
    threadgroup_change_begin/end() become a place where subsystems which
    need to sycnhronize against threadgroup changes can hook into.
    
    cgroup_threadgroup_change_begin/end() which operate on the
    per-signal_struct rwsem are created and threadgroup_lock/unlock() are
    moved to cgroup.c and made static.
    
    This is pure reorganization which doesn't cause any functional
    changes.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0e521eabd7a3e1c5efb57f1dd8e3721e319a9bc1
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Thu May 11 18:21:01 2017 -0500

    pid_ns: Sleep in TASK_INTERRUPTIBLE in zap_pid_ns_processes
    
    [ Upstream commit b9a985db98961ae1ba0be169f19df1c567e4ffe0 ]
    
    The code can potentially sleep for an indefinite amount of time in
    zap_pid_ns_processes triggering the hung task timeout, and increasing
    the system average.  This is undesirable.  Sleep with a task state of
    TASK_INTERRUPTIBLE instead of TASK_UNINTERRUPTIBLE to remove these
    undesirable side effects.
    
    Apparently under heavy load this has been allowing Chrome to trigger
    the hung time task timeout error and cause ChromeOS to reboot.
    
    Reported-by: Vovo Yang <vovoy@google.com>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Fixes: 6347e9009104 ("pidns: guarantee that the pidns init will be the last pidns process reaped")
    Cc: stable@vger.kernel.org
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 57cd95a5dcbcff6c5d389e91b3d674f9ace903e5
Author: Johan Hovold <johan@kernel.org>
Date:   Fri May 12 12:11:13 2017 +0200

    net: irda: irda-usb: fix firmware name on big-endian hosts
    
    [ Upstream commit 75cf067953d5ee543b3bda90bbfcbee5e1f94ae8 ]
    
    Add missing endianness conversion when using the USB device-descriptor
    bcdDevice field to construct a firmware file name.
    
    Fixes: 8ef80aef118e ("[IRDA]: irda-usb.c: STIR421x cleanups")
    Cc: stable <stable@vger.kernel.org>     # 2.6.18
    Cc: Nick Fedchik <nfedchik@atlantic-link.com.ua>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 38f915577c6ec57e92641cdbbe0c65a8f69fadfb
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Tue May 2 13:36:00 2017 +0200

    s390/cputime: fix incorrect system time
    
    [ Upstream commit 07a63cbe8bcb6ba72fb989dcab1ec55ec6c36c7e ]
    
    git commit c5328901aa1db134 "[S390] entry[64].S improvements" removed
    the update of the exit_timer lowcore field from the critical section
    cleanup of the .Lsysc_restore/.Lsysc_done and .Lio_restore/.Lio_done
    blocks. If the PSW is updated by the critical section cleanup to point to
    user space again, the interrupt entry code will do a vtime calculation
    after the cleanup completed with an exit_timer value which has *not* been
    updated. Due to this incorrect system time deltas are calculated.
    
    If an interrupt occured with an old PSW between .Lsysc_restore/.Lsysc_done
    or .Lio_restore/.Lio_done update __LC_EXIT_TIMER with the system entry
    time of the interrupt.
    
    Cc: stable@vger.kernel.org # 3.3+
    Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 98442999b9671784e659b205be8b5b6be8e81629
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Thu Feb 16 17:22:46 2017 +0100

    dccp: fix freeing skb too early for IPV6_RECVPKTINFO
    
    [ Upstream commit 5edabca9d4cff7f1f2b68f0bac55ef99d9798ba4 ]
    
    In the current DCCP implementation an skb for a DCCP_PKT_REQUEST packet
    is forcibly freed via __kfree_skb in dccp_rcv_state_process if
    dccp_v6_conn_request successfully returns.
    
    However, if IPV6_RECVPKTINFO is set on a socket, the address of the skb
    is saved to ireq->pktopts and the ref count for skb is incremented in
    dccp_v6_conn_request, so skb is still in use. Nevertheless, it gets freed
    in dccp_rcv_state_process.
    
    Fix by calling consume_skb instead of doing goto discard and therefore
    calling __kfree_skb.
    
    Similar fixes for TCP:
    
    fb7e2399ec17f1004c0e0ccfd17439f8759ede01 [TCP]: skb is unexpectedly freed.
    0aea76d35c9651d55bbaf746e7914e5f9ae5a25d tcp: SYN packets are now
    simply consumed
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>