commit 0e3910b9b93147bb89eededfebe7bddb3826aa6e
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Thu May 2 21:42:08 2019 +0100

    Linux 3.16.66

commit e0d2ad5eaec135bb79a7045b1c0718557bac4c4d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Apr 5 15:39:26 2019 +0200

    tty: mark Siemens R3964 line discipline as BROKEN
    
    commit c7084edc3f6d67750f50d4183134c4fb5712a5c8 upstream.
    
    The n_r3964 line discipline driver was written in a different time, when
    SMP machines were rare, and users were trusted to do the right thing.
    Since then, the world has moved on but not this code, it has stayed
    rooted in the past with its lovely hand-crafted list structures and
    loads of "interesting" race conditions all over the place.
    
    After attempting to clean up most of the issues, I just gave up and am
    now marking the driver as BROKEN so that hopefully someone who has this
    hardware will show up out of the woodwork (I know you are out there!)
    and will help with debugging a raft of changes that I had laying around
    for the code, but was too afraid to commit as odds are they would break
    things.
    
    Many thanks to Jann and Linus for pointing out the initial problems in
    this codebase, as well as many reviews of my attempts to fix the issues.
    It was a case of whack-a-mole, and as you can see, the mole won.
    
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a62ea6707949c2a49f8a4f62c5b5d4c1703451d3
Author: John Johansen <john.johansen@canonical.com>
Date:   Mon Jan 16 00:42:43 2017 -0800

    apparmor: provide userspace flag indicating binfmt_elf_mmap change
    
    commit 34c426acb75cc21bdf84685e106db0c1a3565057 upstream.
    
    Commit 9f834ec18def ("binfmt_elf: switch to new creds when switching to new mm")
    changed when the creds are installed by the binfmt_elf handler. This
    affects which creds are used to mmap the executable into the address
    space. Which can have an affect on apparmor policy.
    
    Add a flag to apparmor at
    /sys/kernel/security/apparmor/features/domain/fix_binfmt_elf_mmap
    
    to make it possible to detect this semantic change so that the userspace
    tools and the regression test suite can correctly deal with the change.
    
    BugLink: http://bugs.launchpad.net/bugs/1630069
    Signed-off-by: John Johansen <john.johansen@canonical.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1e06334afa7199cc86c6c4830b71a7c1ea8e7901
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Aug 22 16:41:46 2016 -0700

    binfmt_elf: switch to new creds when switching to new mm
    
    commit 9f834ec18defc369d73ccf9e87a2790bfa05bf46 upstream.
    
    We used to delay switching to the new credentials until after we had
    mapped the executable (and possible elf interpreter).  That was kind of
    odd to begin with, since the new executable will actually then _run_
    with the new creds, but whatever.
    
    The bigger problem was that we also want to make sure that we turn off
    prof events and tracing before we start mapping the new executable
    state.  So while this is a cleanup, it's also a fix for a possible
    information leak.
    
    Reported-by: Robert Święcki <robert@swiecki.net>
    Tested-by: Peter Zijlstra <peterz@infradead.org>
    Acked-by: David Howells <dhowells@redhat.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Acked-by: Andy Lutomirski <luto@amacapital.net>
    Acked-by: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Willy Tarreau <w@1wt.eu>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c54cc234b4732355629baccac945c863c8a8684e
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Thu Apr 25 22:09:09 2019 +0100

    binfmt_elf: Fix missing SIGKILL for empty PIE
    
    Commit ea08dc5191d9 "fs/binfmt_elf.c: fix bug in loading of PIE
    binaries", which was a backport of commit a87938b2e246 upstream,
    added a new failure path to load_elf_binary().
    
    Before commit 19d860a140be "handle suicide on late failure exits in
    execve() in search_binary_handler()", load_elf_binary() wass
    responsible for sending a fatal signal to the task in case of an error
    after flushing the old executable.  Add that to the new failure path.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 52b1af5e74cc3f4d513eacf49f71d9855a9ccbec
Author: Arend van Spriel <arend.vanspriel@broadcom.com>
Date:   Thu Feb 14 13:43:48 2019 +0100

    brcmfmac: add subtype check for event handling in data path
    
    commit a4176ec356c73a46c07c181c6d04039fafa34a9f upstream.
    
    For USB there is no separate channel being used to pass events
    from firmware to the host driver and as such are passed over the
    data path. In order to detect mock event messages an additional
    check is needed on event subtype. This check is added conditionally
    using unlikely() keyword.
    
    Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Reviewed-by: Franky Lin <franky.lin@broadcom.com>
    Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16:
     - Drop changes to PCIe bus support
     - Adjust filenames]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 91d35844e9d7b8efead7555f75eb1380c1e706b8
Author: Arend van Spriel <arend@broadcom.com>
Date:   Mon Apr 11 11:35:27 2016 +0200

    brcmfmac: revise handling events in receive path
    
    commit 9c349892ccc90c6de2baaa69cc78449f58082273 upstream.
    
    Move event handling out of brcmf_netif_rx() avoiding the need
    to pass a flag. This flag is only ever true for USB hosts as
    other interface use separate brcmf_rx_event() function.
    
    Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Reviewed-by: Franky Lin <franky.lin@broadcom.com>
    Signed-off-by: Arend van Spriel <arend@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16 as dependency of commit a4176ec356c7
     "brcmfmac: add subtype check for event handling in data path"
     - Drop changes to PCIe bus support
     - Adjust filenames]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 076a3985234a4978cc6935a9e530942b8ee50062
Author: Gavin Li <git@thegavinli.com>
Date:   Tue Jan 17 15:24:05 2017 -0800

    brcmfmac: fix incorrect event channel deduction
    
    commit 8e290cecdd0178f3d4cf7d463c51dc7e462843b4 upstream.
    
    brcmf_sdio_fromevntchan() was being called on the the data frame
    rather than the software header, causing some frames to be
    mischaracterized as on the event channel rather than the data channel.
    
    This fixes a major performance regression (due to dropped packets). With
    this patch the download speed jumped from 1Mbit/s back up to 40MBit/s due
    to the sheer amount of packets being incorrectly processed.
    
    Fixes: c56caa9db8ab ("brcmfmac: screening firmware event packet")
    Signed-off-by: Gavin Li <git@thegavinli.com>
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    [kvalo@codeaurora.org: improve commit logs based on email discussion]
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2e50667aef7a00ff71d304776e7af287272a15cf
Author: Franky Lin <franky.lin@broadcom.com>
Date:   Mon Apr 11 11:35:25 2016 +0200

    brcmfmac: screening firmware event packet
    
    commit c56caa9db8abbbfb9e31325e0897705aa897db37 upstream.
    
    Firmware uses asynchronized events as a communication method to the
    host. The event packets are marked as ETH_P_LINK_CTL protocol type. For
    SDIO and PCIe bus, this kind of packets are delivered through virtual
    event channel not data channel. This patch adds a screening logic to
    make sure the event handler only processes the events coming from the
    correct channel.
    
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Signed-off-by: Franky Lin <franky.lin@broadcom.com>
    Signed-off-by: Arend van Spriel <arend@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16:
     - Drop changes to PCIe bus support
     - Adjust filenames]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d0e1072f9ef8ccfba25cee14bc1d4006ee90c208
Author: Arend van Spriel <arend@broadcom.com>
Date:   Wed Aug 26 22:14:54 2015 +0200

    brcmfmac: make brcmf_proto_hdrpull() return struct brcmf_if instance
    
    commit 796cfb65e3ed01a9b08e3a0b93e34120c54bbbd2 upstream.
    
    Avoid spreading the ifidx in the driver, but have it return the
    struct brcmf_if instance.
    
    Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
    Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
    Signed-off-by: Arend van Spriel <arend@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16:
     - Drop changes to PCIe bus support
     - Adjust filenames]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9c4031ec83b8f68353dee6181a76ae64642a75c0
Author: Arend van Spriel <arend@broadcom.com>
Date:   Wed Aug 26 22:14:53 2015 +0200

    brcmfmac: consolidate ifp lookup in driver core
    
    commit 75effb03ee8e4c9d4bbc909118ce5444b047dfde upstream.
    
    In rx path the firmware provide an interface index which is used to
    map to a struct brcmf_if instance. However, this involves some trick
    that is done in two places. This is changed by having driver core
    providing brcmf_get_ifp() function.
    
    Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
    Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
    Signed-off-by: Arend van Spriel <arend@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16:
     - Drop changes to PCIe bus support
     - Adjust filenames]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9657f3abd17772d3290a3545dfb4811d945e84e1
Author: Arend van Spriel <arend.vanspriel@broadcom.com>
Date:   Thu Feb 14 13:43:47 2019 +0100

    brcmfmac: assure SSID length from firmware is limited
    
    commit 1b5e2423164b3670e8bc9174e4762d297990deff upstream.
    
    The SSID length as received from firmware should not exceed
    IEEE80211_MAX_SSID_LEN as that would result in heap overflow.
    
    Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Reviewed-by: Franky Lin <franky.lin@broadcom.com>
    Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 92cb82fec63d558f7eecc97afbbbdf3fe5ef95b5
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Apr 26 11:36:53 2016 +0200

    perf/core: Fix perf_event_open() vs. execve() race
    
    commit 79c9ce57eb2d5f1497546a3946b4ae21b6fdc438 upstream.
    
    Jann reported that the ptrace_may_access() check in
    find_lively_task_by_vpid() is racy against exec().
    
    Specifically:
    
      perf_event_open()             execve()
    
      ptrace_may_access()
                                    commit_creds()
      ...                           if (get_dumpable() != SUID_DUMP_USER)
                                      perf_event_exit_task();
      perf_install_in_context()
    
    would result in installing a counter across the creds boundary.
    
    Fix this by wrapping lots of perf_event_open() in cred_guard_mutex.
    This should be fine as perf_event_exit_task() is already called with
    cred_guard_mutex held, so all perf locks already nest inside it.
    
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16:
     - Update another failure path in perf_event_open()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a301e6a651037c11d2d9932a35fb56a04eedba8c
Author: Andrea Arcangeli <aarcange@redhat.com>
Date:   Thu Apr 18 17:50:52 2019 -0700

    coredump: fix race condition between mmget_not_zero()/get_task_mm() and core dumping
    
    commit 04f5866e41fb70690e28397487d8bd8eea7d712a upstream.
    
    The core dumping code has always run without holding the mmap_sem for
    writing, despite that is the only way to ensure that the entire vma
    layout will not change from under it.  Only using some signal
    serialization on the processes belonging to the mm is not nearly enough.
    This was pointed out earlier.  For example in Hugh's post from Jul 2017:
    
      https://lkml.kernel.org/r/alpine.LSU.2.11.1707191716030.2055@eggly.anvils
    
      "Not strictly relevant here, but a related note: I was very surprised
       to discover, only quite recently, how handle_mm_fault() may be called
       without down_read(mmap_sem) - when core dumping. That seems a
       misguided optimization to me, which would also be nice to correct"
    
    In particular because the growsdown and growsup can move the
    vm_start/vm_end the various loops the core dump does around the vma will
    not be consistent if page faults can happen concurrently.
    
    Pretty much all users calling mmget_not_zero()/get_task_mm() and then
    taking the mmap_sem had the potential to introduce unexpected side
    effects in the core dumping code.
    
    Adding mmap_sem for writing around the ->core_dump invocation is a
    viable long term fix, but it requires removing all copy user and page
    faults and to replace them with get_dump_page() for all binary formats
    which is not suitable as a short term fix.
    
    For the time being this solution manually covers the places that can
    confuse the core dump either by altering the vma layout or the vma flags
    while it runs.  Once ->core_dump runs under mmap_sem for writing the
    function mmget_still_valid() can be dropped.
    
    Allowing mmap_sem protected sections to run in parallel with the
    coredump provides some minor parallelism advantage to the swapoff code
    (which seems to be safe enough by never mangling any vma field and can
    keep doing swapins in parallel to the core dumping) and to some other
    corner case.
    
    In order to facilitate the backporting I added "Fixes: 86039bd3b4e6"
    however the side effect of this same race condition in /proc/pid/mem
    should be reproducible since before 2.6.12-rc2 so I couldn't add any
    other "Fixes:" because there's no hash beyond the git genesis commit.
    
    Because find_extend_vma() is the only location outside of the process
    context that could modify the "mm" structures under mmap_sem for
    reading, by adding the mmget_still_valid() check to it, all other cases
    that take the mmap_sem for reading don't need the new check after
    mmget_not_zero()/get_task_mm().  The expand_stack() in page fault
    context also doesn't need the new check, because all tasks under core
    dumping are frozen.
    
    Link: http://lkml.kernel.org/r/20190325224949.11068-1-aarcange@redhat.com
    Fixes: 86039bd3b4e6 ("userfaultfd: add new syscall to provide memory externalization")
    Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
    Reported-by: Jann Horn <jannh@google.com>
    Suggested-by: Oleg Nesterov <oleg@redhat.com>
    Acked-by: Peter Xu <peterx@redhat.com>
    Reviewed-by: Mike Rapoport <rppt@linux.ibm.com>
    Reviewed-by: Oleg Nesterov <oleg@redhat.com>
    Reviewed-by: Jann Horn <jannh@google.com>
    Acked-by: Jason Gunthorpe <jgg@mellanox.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16:
     - Drop changes in Infiniband and userfaultfd
     - In clear_refs_write(), use up_read() as we never upgrade to a write lock
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d3334471c34797ab1729cbadddd411118d51c584
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Wed Apr 3 12:36:21 2019 -0600

    vfio/type1: Limit DMA mappings per container
    
    commit 492855939bdb59c6f947b0b5b44af9ad82b7e38c upstream.
    
    Memory backed DMA mappings are accounted against a user's locked
    memory limit, including multiple mappings of the same memory.  This
    accounting bounds the number of such mappings that a user can create.
    However, DMA mappings that are not backed by memory, such as DMA
    mappings of device MMIO via mmaps, do not make use of page pinning
    and therefore do not count against the user's locked memory limit.
    These mappings still consume memory, but the memory is not well
    associated to the process for the purpose of oom killing a task.
    
    To add bounding on this use case, we introduce a limit to the total
    number of concurrent DMA mappings that a user is allowed to create.
    This limit is exposed as a tunable module option where the default
    value of 64K is expected to be well in excess of any reasonable use
    case (a large virtual machine configuration would typically only make
    use of tens of concurrent mappings).
    
    This fixes CVE-2019-3882.
    
    Reviewed-by: Eric Auger <eric.auger@redhat.com>
    Tested-by: Eric Auger <eric.auger@redhat.com>
    Reviewed-by: Peter Xu <peterx@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    [bwh: Backported to 3.16:
     - Add the out_unlock label in vfio_dma_do_map()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c5c6a5c7eb7e3d7859e7ec78a2872360e4bab6aa
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Fri Jan 18 12:56:20 2019 +0100

    Bluetooth: Check L2CAP option sizes returned from l2cap_get_conf_opt
    
    commit af3d5d1c87664a4f150fcf3534c6567cb19909b0 upstream.
    
    When doing option parsing for standard type values of 1, 2 or 4 octets,
    the value is converted directly into a variable instead of a pointer. To
    avoid being tricked into being a pointer, check that for these option
    types that sizes actually match. In L2CAP every option is fixed size and
    thus it is prudent anyway to ensure that the remote side sends us the
    right option size along with option paramters.
    
    If the option size is not matching the option type, then that option is
    silently ignored. It is a protocol violation and instead of trying to
    give the remote attacker any further hints just pretend that option is
    not present and proceed with the default values. Implementation
    following the specification and its qualification procedures will always
    use the correct size and thus not being impacted here.
    
    To keep the code readable and consistent accross all options, a few
    cosmetic changes were also required.
    
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 78c2887130f1a7d1883195732be1b6cdab667487
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Fri Jan 18 13:43:19 2019 +0100

    Bluetooth: Verify that l2cap_get_conf_opt provides large enough buffer
    
    commit 7c9cbd0b5e38a1672fcd137894ace3b042dfbf69 upstream.
    
    The function l2cap_get_conf_opt will return L2CAP_CONF_OPT_SIZE + opt->len
    as length value. The opt->len however is in control over the remote user
    and can be used by an attacker to gain access beyond the bounds of the
    actual packet.
    
    To prevent any potential leak of heap memory, it is enough to check that
    the resulting len calculation after calling l2cap_get_conf_opt is not
    below zero. A well formed packet will always return >= 0 here and will
    end with the length value being zero after the last option has been
    parsed. In case of malformed packets messing with the opt->len field the
    length value will become negative. If that is the case, then just abort
    and ignore the option.
    
    In case an attacker uses a too short opt->len value, then garbage will
    be parsed, but that is protected by the unknown option handling and also
    the option parameter size checks.
    
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit abbb5cf0c8e9995defed43a6c98296f357098b5b
Author: Matthias Schwarzott <zzam@gentoo.org>
Date:   Mon Oct 30 06:07:29 2017 -0400

    media: em28xx: Fix use-after-free when disconnecting
    
    commit 910b0797fa9e8af09c44a3fa36cb310ba7a7218d upstream.
    
    Fix bug by moving the i2c_unregister_device calls after deregistration
    of dvb frontend.
    
    The new style i2c drivers already destroys the frontend object at
    i2c_unregister_device time.
    When the dvb frontend is unregistered afterwards it leads to this oops:
    
      [ 6058.866459] BUG: unable to handle kernel NULL pointer dereference at 00000000000001f8
      [ 6058.866578] IP: dvb_frontend_stop+0x30/0xd0 [dvb_core]
      [ 6058.866644] PGD 0
      [ 6058.866646] P4D 0
    
      [ 6058.866726] Oops: 0000 [#1] SMP
      [ 6058.866768] Modules linked in: rc_pinnacle_pctv_hd(O) em28xx_rc(O) si2157(O) si2168(O) em28xx_dvb(O) em28xx(O) si2165(O) a8293(O) tda10071(O) tea5767(O) tuner(O) cx23885(O) tda18271(O) videobuf2_dvb(O) videobuf2_dma_sg(O) m88ds3103(O) tveeprom(O) cx2341x(O) v4l2_common(O) dvb_core(O) rc_core(O) videobuf2_memops(O) videobuf2_v4l2(O) videobuf2_core(O) videodev(O) media(O) bluetooth ecdh_generic ums_realtek uas rtl8192cu rtl_usb rtl8192c_common rtlwifi usb_storage snd_hda_codec_realtek snd_hda_codec_hdmi snd_hda_codec_generic i2c_mux snd_hda_intel snd_hda_codec snd_hwdep x86_pkg_temp_thermal snd_hda_core kvm_intel kvm irqbypass [last unloaded: videobuf2_memops]
      [ 6058.867497] CPU: 2 PID: 7349 Comm: kworker/2:0 Tainted: G        W  O    4.13.9-gentoo #1
      [ 6058.867595] Hardware name: MEDION E2050 2391/H81H3-EM2, BIOS H81EM2W08.308 08/25/2014
      [ 6058.867692] Workqueue: usb_hub_wq hub_event
      [ 6058.867746] task: ffff88011a15e040 task.stack: ffffc90003074000
      [ 6058.867825] RIP: 0010:dvb_frontend_stop+0x30/0xd0 [dvb_core]
      [ 6058.867896] RSP: 0018:ffffc90003077b58 EFLAGS: 00010293
      [ 6058.867964] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 000000010040001f
      [ 6058.868056] RDX: ffff88011a15e040 RSI: ffffea000464e400 RDI: ffff88001cbe3028
      [ 6058.868150] RBP: ffffc90003077b68 R08: ffff880119390380 R09: 000000010040001f
      [ 6058.868241] R10: ffffc90003077b18 R11: 000000000001e200 R12: ffff88001cbe3028
      [ 6058.868330] R13: ffff88001cbe68d0 R14: ffff8800cf734000 R15: ffff8800cf734098
      [ 6058.868419] FS:  0000000000000000(0000) GS:ffff88011fb00000(0000) knlGS:0000000000000000
      [ 6058.868511] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 6058.868578] CR2: 00000000000001f8 CR3: 00000001113c5000 CR4: 00000000001406e0
      [ 6058.868662] Call Trace:
      [ 6058.868705]  dvb_unregister_frontend+0x2a/0x80 [dvb_core]
      [ 6058.868774]  em28xx_dvb_fini+0x132/0x220 [em28xx_dvb]
      [ 6058.868840]  em28xx_close_extension+0x34/0x90 [em28xx]
      [ 6058.868902]  em28xx_usb_disconnect+0x4e/0x70 [em28xx]
      [ 6058.868968]  usb_unbind_interface+0x6d/0x260
      [ 6058.869025]  device_release_driver_internal+0x150/0x210
      [ 6058.869094]  device_release_driver+0xd/0x10
      [ 6058.869150]  bus_remove_device+0xe4/0x160
      [ 6058.869204]  device_del+0x1ce/0x2f0
      [ 6058.869253]  usb_disable_device+0x99/0x270
      [ 6058.869306]  usb_disconnect+0x8d/0x260
      [ 6058.869359]  hub_event+0x93d/0x1520
      [ 6058.869408]  ? dequeue_task_fair+0xae5/0xd20
      [ 6058.869467]  process_one_work+0x1d9/0x3e0
      [ 6058.869522]  worker_thread+0x43/0x3e0
      [ 6058.869576]  kthread+0x104/0x140
      [ 6058.869602]  ? trace_event_raw_event_workqueue_work+0x80/0x80
      [ 6058.869640]  ? kthread_create_on_node+0x40/0x40
      [ 6058.869673]  ret_from_fork+0x22/0x30
      [ 6058.869698] Code: 54 49 89 fc 53 48 8b 9f 18 03 00 00 0f 1f 44 00 00 41 83 bc 24 04 05 00 00 02 74 0c 41 c7 84 24 04 05 00 00 01 00 00 00 0f ae f0 <48> 8b bb f8 01 00 00 48 85 ff 74 5c e8 df 40 f0 e0 48 8b 93 f8
      [ 6058.869850] RIP: dvb_frontend_stop+0x30/0xd0 [dvb_core] RSP: ffffc90003077b58
      [ 6058.869894] CR2: 00000000000001f8
      [ 6058.875880] ---[ end trace 717eecf7193b3fc6 ]---
    
    Signed-off-by: Matthias Schwarzott <zzam@gentoo.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit abf9aba1ed3e570286d03b8878efc81a549e4a4b
Author: Shuah Khan <shuah.kh@samsung.com>
Date:   Wed Jul 9 10:21:27 2014 -0300

    media: em28xx-dvb - fix em28xx_dvb_resume() to not unregister i2c and dvb
    
    commit 6eb5e3399e8f45aa191ad21c0556bece8ea559f2 upstream.
    
    em28xx_dvb_resume() unregisters i2c tuner, i2c demod, and dvb.
    This erroneous cleanup results in i2c tuner, i2c demod, and dvb
    devices unregistered and removed during resume. This error is a
    result of merge conflict between two patches that went into 3.15.
    
    Signed-off-by: Shuah Khan <shuah.kh@samsung.com>
    Reviewed-by: Antti Palosaari <crope@iki.fi>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9b5d63b6dd23f6c2f739b047cba43ef971cda8bb
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Mar 28 13:38:55 2018 -0500

    ipc/shm: Fix pid freeing.
    
    commit 2236d4d39035b9839944603ec4b65ce71180a9ea upstream.
    
    The 0day kernel test build report reported an oops:
    >
    >  IP: put_pid+0x22/0x5c
    >  PGD 19efa067 P4D 19efa067 PUD 0
    >  Oops: 0000 [#1]
    >  CPU: 0 PID: 727 Comm: trinity Not tainted 4.16.0-rc2-00010-g98f929b #1
    >  RIP: 0010:put_pid+0x22/0x5c
    >  RSP: 0018:ffff986719f73e48 EFLAGS: 00010202
    >  RAX: 00000006d765f710 RBX: ffff98671a4fa4d0 RCX: ffff986719f73d40
    >  RDX: 000000006f6e6125 RSI: 0000000000000000 RDI: ffffffffa01e6d21
    >  RBP: ffffffffa0955fe0 R08: 0000000000000020 R09: 0000000000000000
    >  R10: 0000000000000078 R11: ffff986719f73e76 R12: 0000000000001000
    >  R13: 00000000ffffffea R14: 0000000054000fb0 R15: 0000000000000000
    >  FS:  00000000028c2880(0000) GS:ffffffffa06ad000(0000) knlGS:0000000000000000
    >  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    >  CR2: 0000000677846439 CR3: 0000000019fc1005 CR4: 00000000000606b0
    >  Call Trace:
    >   ? ipc_update_pid+0x36/0x3e
    >   ? newseg+0x34c/0x3a6
    >   ? ipcget+0x5d/0x528
    >   ? entry_SYSCALL_64_after_hwframe+0x52/0xb7
    >   ? SyS_shmget+0x5a/0x84
    >   ? do_syscall_64+0x194/0x1b3
    >   ? entry_SYSCALL_64_after_hwframe+0x42/0xb7
    >  Code: ff 05 e7 20 9b 03 58 c9 c3 48 ff 05 85 21 9b 03 48 85 ff 74 4f 8b 47 04 8b 17 48 ff 05 7c 21 9b 03 48 83 c0 03 48 c1 e0 04 ff ca <48> 8b 44 07 08 74 1f 48 ff 05 6c 21 9b 03 ff 0f 0f 94 c2 48 ff
    >  RIP: put_pid+0x22/0x5c RSP: ffff986719f73e48
    >  CR2: 0000000677846439
    >  ---[ end trace ab8c5cb4389d37c5 ]---
    >  Kernel panic - not syncing: Fatal exception
    
    In newseg when changing shm_cprid and shm_lprid from pid_t to struct
    pid* I misread the kvmalloc as kvzalloc and thought shp was
    initialized to 0.  As that is not the case it is not safe to for the
    error handling to address shm_cprid and shm_lprid before they are
    initialized.
    
    Therefore move the cleanup of shm_cprid and shm_lprid from the no_file
    error cleanup path to the no_id error cleanup path.  Ensuring that an
    early error exit won't cause the oops above.
    
    Reported-by: kernel test robot <fengguang.wu@intel.com>
    Reviewed-by: Nagarathnam Muthusamy <nagarathnam.muthusamy@oracle.com>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a550a01b8af856f2684b0f79d552f5119eb5006c
Author: Sheng Lan <lansheng@huawei.com>
Date:   Thu Feb 28 18:47:58 2019 +0800

    net: netem: fix skb length BUG_ON in __skb_to_sgvec
    
    commit 5845f706388a4cde0f6b80f9e5d33527e942b7d9 upstream.
    
    It can be reproduced by following steps:
    1. virtio_net NIC is configured with gso/tso on
    2. configure nginx as http server with an index file bigger than 1M bytes
    3. use tc netem to produce duplicate packets and delay:
       tc qdisc add dev eth0 root netem delay 100ms 10ms 30% duplicate 90%
    4. continually curl the nginx http server to get index file on client
    5. BUG_ON is seen quickly
    
    [10258690.371129] kernel BUG at net/core/skbuff.c:4028!
    [10258690.371748] invalid opcode: 0000 [#1] SMP PTI
    [10258690.372094] CPU: 5 PID: 0 Comm: swapper/5 Tainted: G        W         5.0.0-rc6 #2
    [10258690.372094] RSP: 0018:ffffa05797b43da0 EFLAGS: 00010202
    [10258690.372094] RBP: 00000000000005ea R08: 0000000000000000 R09: 00000000000005ea
    [10258690.372094] R10: ffffa0579334d800 R11: 00000000000002c0 R12: 0000000000000002
    [10258690.372094] R13: 0000000000000000 R14: ffffa05793122900 R15: ffffa0578f7cb028
    [10258690.372094] FS:  0000000000000000(0000) GS:ffffa05797b40000(0000) knlGS:0000000000000000
    [10258690.372094] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [10258690.372094] CR2: 00007f1a6dc00868 CR3: 000000001000e000 CR4: 00000000000006e0
    [10258690.372094] Call Trace:
    [10258690.372094]  <IRQ>
    [10258690.372094]  skb_to_sgvec+0x11/0x40
    [10258690.372094]  start_xmit+0x38c/0x520 [virtio_net]
    [10258690.372094]  dev_hard_start_xmit+0x9b/0x200
    [10258690.372094]  sch_direct_xmit+0xff/0x260
    [10258690.372094]  __qdisc_run+0x15e/0x4e0
    [10258690.372094]  net_tx_action+0x137/0x210
    [10258690.372094]  __do_softirq+0xd6/0x2a9
    [10258690.372094]  irq_exit+0xde/0xf0
    [10258690.372094]  smp_apic_timer_interrupt+0x74/0x140
    [10258690.372094]  apic_timer_interrupt+0xf/0x20
    [10258690.372094]  </IRQ>
    
    In __skb_to_sgvec(), the skb->len is not equal to the sum of the skb's
    linear data size and nonlinear data size, thus BUG_ON triggered.
    Because the skb is cloned and a part of nonlinear data is split off.
    
    Duplicate packet is cloned in netem_enqueue() and may be delayed
    some time in qdisc. When qdisc len reached the limit and returns
    NET_XMIT_DROP, the skb will be retransmit later in write queue.
    the skb will be fragmented by tso_fragment(), the limit size
    that depends on cwnd and mss decrease, the skb's nonlinear
    data will be split off. The length of the skb cloned by netem
    will not be updated. When we use virtio_net NIC and invoke skb_to_sgvec(),
    the BUG_ON trigger.
    
    To fix it, netem returns NET_XMIT_SUCCESS to upper stack
    when it clones a duplicate packet.
    
    Fixes: 35d889d1 ("sch_netem: fix skb leak in netem_enqueue()")
    Signed-off-by: Sheng Lan <lansheng@huawei.com>
    Reported-by: Qin Ji <jiqin.ji@huawei.com>
    Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: netem_enqueue() may call qdisc_reshape_fail();
     keep returning NET_XMIT_SUCCESS if that succeeds]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 97bc3683c24999ee621d847c9348c75d2fe86272
Author: Paul Moore <paul@paul-moore.com>
Date:   Mon Feb 25 19:06:06 2019 -0500

    netlabel: fix out-of-bounds memory accesses
    
    commit 5578de4834fe0f2a34fedc7374be691443396d1f upstream.
    
    There are two array out-of-bounds memory accesses, one in
    cipso_v4_map_lvl_valid(), the other in netlbl_bitmap_walk().  Both
    errors are embarassingly simple, and the fixes are straightforward.
    
    As a FYI for anyone backporting this patch to kernels prior to v4.8,
    you'll want to apply the netlbl_bitmap_walk() patch to
    cipso_v4_bitmap_walk() as netlbl_bitmap_walk() doesn't exist before
    Linux v4.8.
    
    Reported-by: Jann Horn <jannh@google.com>
    Fixes: 446fda4f2682 ("[NetLabel]: CIPSOv4 engine")
    Fixes: 3faa8f982f95 ("netlabel: Move bitmap manipulation functions to the NetLabel core.")
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16 following Paul's hint]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c90030281dc8b6a25ac8850e98e15877f80b8d66
Author: Jann Horn <jannh@google.com>
Date:   Wed Feb 27 21:29:52 2019 +0100

    mm: enforce min addr even if capable() in expand_downwards()
    
    commit 0a1d52994d440e21def1c2174932410b4f2a98a1 upstream.
    
    security_mmap_addr() does a capability check with current_cred(), but
    we can reach this code from contexts like a VFS write handler where
    current_cred() must not be used.
    
    This can be abused on systems without SMAP to make NULL pointer
    dereferences exploitable again.
    
    Fixes: 8869477a49c3 ("security: protect from stack expansion into low vm addresses")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 120d66394f05ec50a018168850a8db6518ea2d9b
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Mon Jul 10 15:49:54 2017 -0700

    mm/mmap.c: expand_downwards: don't require the gap if !vm_prev
    
    commit 32e4e6d5cbb0c0e427391635991fe65e17797af8 upstream.
    
    expand_stack(vma) fails if address < stack_guard_gap even if there is no
    vma->vm_prev.  I don't think this makes sense, and we didn't do this
    before the recent commit 1be7107fbe18 ("mm: larger stack guard gap,
    between vmas").
    
    We do not need a gap in this case, any address is fine as long as
    security_mmap_addr() doesn't object.
    
    This also simplifies the code, we know that address >= prev->vm_end and
    thus underflow is not possible.
    
    Link: http://lkml.kernel.org/r/20170628175258.GA24881@redhat.com
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Larry Woodman <lwoodman@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2c716db6f80cef6159972be0dab86892c39de277
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Fri Feb 22 15:37:58 2019 +0800

    net: nfc: Fix NULL dereference on nfc_llcp_build_tlv fails
    
    commit 58bdd544e2933a21a51eecf17c3f5f94038261b5 upstream.
    
    KASAN report this:
    
    BUG: KASAN: null-ptr-deref in nfc_llcp_build_gb+0x37f/0x540 [nfc]
    Read of size 3 at addr 0000000000000000 by task syz-executor.0/5401
    
    CPU: 0 PID: 5401 Comm: syz-executor.0 Not tainted 5.0.0-rc7+ #45
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xfa/0x1ce lib/dump_stack.c:113
     kasan_report+0x171/0x18d mm/kasan/report.c:321
     memcpy+0x1f/0x50 mm/kasan/common.c:130
     nfc_llcp_build_gb+0x37f/0x540 [nfc]
     nfc_llcp_register_device+0x6eb/0xb50 [nfc]
     nfc_register_device+0x50/0x1d0 [nfc]
     nfcsim_device_new+0x394/0x67d [nfcsim]
     ? 0xffffffffc1080000
     nfcsim_init+0x6b/0x1000 [nfcsim]
     do_one_initcall+0xfa/0x5ca init/main.c:887
     do_init_module+0x204/0x5f6 kernel/module.c:3460
     load_module+0x66b2/0x8570 kernel/module.c:3808
     __do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
     do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x462e99
    Code: f7 d8 64 89 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f9cb79dcc58 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
    RAX: ffffffffffffffda RBX: 000000000073bf00 RCX: 0000000000462e99
    RDX: 0000000000000000 RSI: 0000000020000280 RDI: 0000000000000003
    RBP: 00007f9cb79dcc70 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f9cb79dd6bc
    R13: 00000000004bcefb R14: 00000000006f7030 R15: 0000000000000004
    
    nfc_llcp_build_tlv will return NULL on fails, caller should check it,
    otherwise will trigger a NULL dereference.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: eda21f16a5ed ("NFC: Set MIU and RW values from CONNECT and CC LLCP frames")
    Fixes: d646960f7986 ("NFC: Initial LLCP support")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 262e4737151992aa85187eb389f9beb84dd2a463
Author: Rajasingh Thavamani <T.Rajasingh@landisgyr.com>
Date:   Wed Feb 27 17:43:19 2019 +0530

    net: phy: Micrel KSZ8061: link failure after cable connect
    
    commit 232ba3a51cc224b339c7114888ed7f0d4d95695e upstream.
    
    With Micrel KSZ8061 PHY, the link may occasionally not come up after
    Ethernet cable connect. The vendor's (Microchip, former Micrel) errata
    sheet 80000688A.pdf descripes the problem and possible workarounds in
    detail, see below.
    The batch implements workaround 1, which permanently fixes the issue.
    
    DESCRIPTION
    Link-up may not occur properly when the Ethernet cable is initially
    connected. This issue occurs more commonly when the cable is connected
    slowly, but it may occur any time a cable is connected. This issue occurs
    in the auto-negotiation circuit, and will not occur if auto-negotiation
    is disabled (which requires that the two link partners be set to the
    same speed and duplex).
    
    END USER IMPLICATIONS
    When this issue occurs, link is not established. Subsequent cable
    plug/unplaug cycle will not correct the issue.
    
    WORk AROUND
    There are four approaches to work around this issue:
    1. This issue can be prevented by setting bit 15 in MMD device address 1,
       register 2, prior to connecting the cable or prior to setting the
       Restart Auto-negotiation bit in register 0h. The MMD registers are
       accessed via the indirect access registers Dh and Eh, or via the Micrel
       EthUtil utility as shown here:
       . if using the EthUtil utility (usually with a Micrel KSZ8061
         Evaluation Board), type the following commands:
         > address 1
         > mmd 1
         > iw 2 b61a
       . Alternatively, write the following registers to write to the
         indirect MMD register:
         Write register Dh, data 0001h
         Write register Eh, data 0002h
         Write register Dh, data 4001h
         Write register Eh, data B61Ah
    2. The issue can be avoided by disabling auto-negotiation in the KSZ8061,
       either by the strapping option, or by clearing bit 12 in register 0h.
       Care must be taken to ensure that the KSZ8061 and the link partner
       will link with the same speed and duplex. Note that the KSZ8061
       defaults to full-duplex when auto-negotiation is off, but other
       devices may default to half-duplex in the event of failed
       auto-negotiation.
    3. The issue can be avoided by connecting the cable prior to powering-up
       or resetting the KSZ8061, and leaving it plugged in thereafter.
    4. If the above measures are not taken and the problem occurs, link can
       be recovered by setting the Restart Auto-Negotiation bit in
       register 0h, or by resetting or power cycling the device. Reset may
       be either hardware reset or software reset (register 0h, bit 15).
    
    PLAN
    This errata will not be corrected in the future revision.
    
    Fixes: 7ab59dc15e2f ("drivers/net/phy/micrel_phy: Add support for new PHYs")
    Signed-off-by: Alexander Onnasch <alexander.onnasch@landisgyr.com>
    Signed-off-by: Rajasingh Thavamani <T.Rajasingh@landisgyr.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Include <linux/mdio.h> for register definition
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6a0614c5b8951b9e41ffe2d32533a41a472bddb9
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Fri Feb 22 22:35:32 2019 -0800

    tmpfs: fix uninitialized return value in shmem_link
    
    commit 29b00e609960ae0fcff382f4c7079dd0874a5311 upstream.
    
    When we made the shmem_reserve_inode call in shmem_link conditional, we
    forgot to update the declaration for ret so that it always has a known
    value.  Dan Carpenter pointed out this deficiency in the original patch.
    
    Fixes: 1062af920c07 ("tmpfs: fix link accounting when a tmpfile is linked in")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Cc: Matej Kupljen <matej.kupljen@gmail.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2a1a3f84bc27aedda6ae5528b9f2161e0254b245
Author: Andy Lutomirski <luto@kernel.org>
Date:   Fri Feb 22 17:17:04 2019 -0800

    x86/uaccess: Don't leak the AC flag into __put_user() value evaluation
    
    commit 2a418cf3f5f1caf911af288e978d61c9844b0695 upstream.
    
    When calling __put_user(foo(), ptr), the __put_user() macro would call
    foo() in between __uaccess_begin() and __uaccess_end().  If that code
    were buggy, then those bugs would be run without SMAP protection.
    
    Fortunately, there seem to be few instances of the problem in the
    kernel. Nevertheless, __put_user() should be fixed to avoid doing this.
    Therefore, evaluate __put_user()'s argument before setting AC.
    
    This issue was noticed when an objtool hack by Peter Zijlstra complained
    about genregs_get() and I compared the assembly output to the C source.
    
     [ bp: Massage commit message and fixed up whitespace. ]
    
    Fixes: 11f1a4b9755f ("x86: reorganize SMAP handling in user space accesses")
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Link: http://lkml.kernel.org/r/20190225125231.845656645@infradead.org
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 011870d83a808c8c99ebc5476a8a34e391a65ddb
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Mon Feb 18 20:45:40 2019 +0300

    mmc: tmio_mmc_core: don't claim spurious interrupts
    
    commit 5c27ff5db1491a947264d6d4e4cbe43ae6535bae upstream.
    
    I have encountered an interrupt storm during the eMMC chip probing (and
    the chip finally didn't get detected).  It turned out that U-Boot left
    the DMAC interrupts enabled while the Linux driver  didn't use those.
    The SDHI driver's interrupt handler somehow assumes that, even if an
    SDIO interrupt didn't happen, it should return IRQ_HANDLED.  I think
    that if none of the enabled interrupts happened and got handled, we
    should return IRQ_NONE -- that way the kernel IRQ code recoginizes
    a spurious interrupt and masks it off pretty quickly...
    
    Fixes: 7729c7a232a9 ("mmc: tmio: Provide separate interrupt handlers")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    [bwh: Backported to 3.16:
     - tmio_mmc_sdio_irq() can be used directly as an interrupt handler, so
       make it return IRQ_NONE for unhandled interrupts
     - Adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f188185b39121b464712e0ef5043b58853294ce7
Author: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Date:   Sun Feb 10 18:31:07 2019 +0100

    mmc: spi: Fix card detection during probe
    
    commit c9bd505dbd9d3dc80c496f88eafe70affdcf1ba6 upstream.
    
    When using the mmc_spi driver with a card-detect pin, I noticed that the
    card was not detected immediately after probe, but only after it was
    unplugged and plugged back in (and the CD IRQ fired).
    
    The call tree looks something like this:
    
    mmc_spi_probe
      mmc_add_host
        mmc_start_host
          _mmc_detect_change
            mmc_schedule_delayed_work(&host->detect, 0)
              mmc_rescan
                host->bus_ops->detect(host)
                  mmc_detect
                    _mmc_detect_card_removed
                      host->ops->get_cd(host)
                        mmc_gpio_get_cd -> -ENOSYS (ctx->cd_gpio not set)
      mmc_gpiod_request_cd
        ctx->cd_gpio = desc
    
    To fix this issue, call mmc_detect_change after the card-detect GPIO/IRQ
    is registered.
    
    Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7296871d76087dbbe55b42ec9a4cbd7913ad94bb
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Feb 23 13:24:59 2019 -0800

    net/x25: fix a race in x25_bind()
    
    commit 797a22bd5298c2674d927893f46cadf619dad11d upstream.
    
    syzbot was able to trigger another soft lockup [1]
    
    I first thought it was the O(N^2) issue I mentioned in my
    prior fix (f657d22ee1f "net/x25: do not hold the cpu
    too long in x25_new_lci()"), but I eventually found
    that x25_bind() was not checking SOCK_ZAPPED state under
    socket lock protection.
    
    This means that multiple threads can end up calling
    x25_insert_socket() for the same socket, and corrupt x25_list
    
    [1]
    watchdog: BUG: soft lockup - CPU#0 stuck for 123s! [syz-executor.2:10492]
    Modules linked in:
    irq event stamp: 27515
    hardirqs last  enabled at (27514): [<ffffffff81006673>] trace_hardirqs_on_thunk+0x1a/0x1c
    hardirqs last disabled at (27515): [<ffffffff8100668f>] trace_hardirqs_off_thunk+0x1a/0x1c
    softirqs last  enabled at (32): [<ffffffff8632ee73>] x25_get_neigh+0xa3/0xd0 net/x25/x25_link.c:336
    softirqs last disabled at (34): [<ffffffff86324bc3>] x25_find_socket+0x23/0x140 net/x25/af_x25.c:341
    CPU: 0 PID: 10492 Comm: syz-executor.2 Not tainted 5.0.0-rc7+ #88
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:__sanitizer_cov_trace_pc+0x4/0x50 kernel/kcov.c:97
    Code: f4 ff ff ff e8 11 9f ea ff 48 c7 05 12 fb e5 08 00 00 00 00 e9 c8 e9 ff ff 90 90 90 90 90 90 90 90 90 90 90 90 90 55 48 89 e5 <48> 8b 75 08 65 48 8b 04 25 40 ee 01 00 65 8b 15 38 0c 92 7e 81 e2
    RSP: 0018:ffff88806e94fc48 EFLAGS: 00000286 ORIG_RAX: ffffffffffffff13
    RAX: 1ffff1100d84dac5 RBX: 0000000000000001 RCX: ffffc90006197000
    RDX: 0000000000040000 RSI: ffffffff86324bf3 RDI: ffff88806c26d628
    RBP: ffff88806e94fc48 R08: ffff88806c1c6500 R09: fffffbfff1282561
    R10: fffffbfff1282560 R11: ffffffff89412b03 R12: ffff88806c26d628
    R13: ffff888090455200 R14: dffffc0000000000 R15: 0000000000000000
    FS:  00007f3a107e4700(0000) GS:ffff8880ae800000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f3a107e3db8 CR3: 00000000a5544000 CR4: 00000000001406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     __x25_find_socket net/x25/af_x25.c:327 [inline]
     x25_find_socket+0x7d/0x140 net/x25/af_x25.c:342
     x25_new_lci net/x25/af_x25.c:355 [inline]
     x25_connect+0x380/0xde0 net/x25/af_x25.c:784
     __sys_connect+0x266/0x330 net/socket.c:1662
     __do_sys_connect net/socket.c:1673 [inline]
     __se_sys_connect net/socket.c:1670 [inline]
     __x64_sys_connect+0x73/0xb0 net/socket.c:1670
     do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x457e29
    Code: ad b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 7b b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f3a107e3c78 EFLAGS: 00000246 ORIG_RAX: 000000000000002a
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 0000000000457e29
    RDX: 0000000000000012 RSI: 0000000020000200 RDI: 0000000000000005
    RBP: 000000000073c040 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f3a107e46d4
    R13: 00000000004be362 R14: 00000000004ceb98 R15: 00000000ffffffff
    Sending NMI from CPU 0 to CPUs 1:
    NMI backtrace for cpu 1
    CPU: 1 PID: 10493 Comm: syz-executor.3 Not tainted 5.0.0-rc7+ #88
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:__read_once_size include/linux/compiler.h:193 [inline]
    RIP: 0010:queued_write_lock_slowpath+0x143/0x290 kernel/locking/qrwlock.c:86
    Code: 4c 8d 2c 01 41 83 c7 03 41 0f b6 45 00 41 38 c7 7c 08 84 c0 0f 85 0c 01 00 00 8b 03 3d 00 01 00 00 74 1a f3 90 41 0f b6 55 00 <41> 38 d7 7c eb 84 d2 74 e7 48 89 df e8 cc aa 4e 00 eb dd be 04 00
    RSP: 0018:ffff888085c47bd8 EFLAGS: 00000206
    RAX: 0000000000000300 RBX: ffffffff89412b00 RCX: 1ffffffff1282560
    RDX: 0000000000000000 RSI: 0000000000000004 RDI: ffffffff89412b00
    RBP: ffff888085c47c70 R08: 1ffffffff1282560 R09: fffffbfff1282561
    R10: fffffbfff1282560 R11: ffffffff89412b03 R12: 00000000000000ff
    R13: fffffbfff1282560 R14: 1ffff11010b88f7d R15: 0000000000000003
    FS:  00007fdd04086700(0000) GS:ffff8880ae900000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fdd04064db8 CR3: 0000000090be0000 CR4: 00000000001406e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     queued_write_lock include/asm-generic/qrwlock.h:104 [inline]
     do_raw_write_lock+0x1d6/0x290 kernel/locking/spinlock_debug.c:203
     __raw_write_lock_bh include/linux/rwlock_api_smp.h:204 [inline]
     _raw_write_lock_bh+0x3b/0x50 kernel/locking/spinlock.c:312
     x25_insert_socket+0x21/0xe0 net/x25/af_x25.c:267
     x25_bind+0x273/0x340 net/x25/af_x25.c:703
     __sys_bind+0x23f/0x290 net/socket.c:1481
     __do_sys_bind net/socket.c:1492 [inline]
     __se_sys_bind net/socket.c:1490 [inline]
     __x64_sys_bind+0x73/0xb0 net/socket.c:1490
     do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x457e29
    
    Fixes: 90c27297a9bf ("X.25 remove bkl in bind")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: andrew hendry <andrew.hendry@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8a5e2f4be5d08d16964ce2adb8da6fc42052c6f1
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Thu Feb 21 22:42:01 2019 +0800

    mdio_bus: Fix use-after-free on device_register fails
    
    commit 6ff7b060535e87c2ae14dd8548512abfdda528fb upstream.
    
    KASAN has found use-after-free in fixed_mdio_bus_init,
    commit 0c692d07842a ("drivers/net/phy/mdio_bus.c: call
    put_device on device_register() failure") call put_device()
    while device_register() fails,give up the last reference
    to the device and allow mdiobus_release to be executed
    ,kfreeing the bus. However in most drives, mdiobus_free
    be called to free the bus while mdiobus_register fails.
    use-after-free occurs when access bus again, this patch
    revert it to let mdiobus_free free the bus.
    
    KASAN report details as below:
    
    BUG: KASAN: use-after-free in mdiobus_free+0x85/0x90 drivers/net/phy/mdio_bus.c:482
    Read of size 4 at addr ffff8881dc824d78 by task syz-executor.0/3524
    
    CPU: 1 PID: 3524 Comm: syz-executor.0 Not tainted 5.0.0-rc7+ #45
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xfa/0x1ce lib/dump_stack.c:113
     print_address_description+0x65/0x270 mm/kasan/report.c:187
     kasan_report+0x149/0x18d mm/kasan/report.c:317
     mdiobus_free+0x85/0x90 drivers/net/phy/mdio_bus.c:482
     fixed_mdio_bus_init+0x283/0x1000 [fixed_phy]
     ? 0xffffffffc0e40000
     ? 0xffffffffc0e40000
     ? 0xffffffffc0e40000
     do_one_initcall+0xfa/0x5ca init/main.c:887
     do_init_module+0x204/0x5f6 kernel/module.c:3460
     load_module+0x66b2/0x8570 kernel/module.c:3808
     __do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
     do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x462e99
    Code: f7 d8 64 89 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f6215c19c58 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
    RAX: ffffffffffffffda RBX: 000000000073bf00 RCX: 0000000000462e99
    RDX: 0000000000000000 RSI: 0000000020000080 RDI: 0000000000000003
    RBP: 00007f6215c19c70 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f6215c1a6bc
    R13: 00000000004bcefb R14: 00000000006f7030 R15: 0000000000000004
    
    Allocated by task 3524:
     set_track mm/kasan/common.c:85 [inline]
     __kasan_kmalloc.constprop.3+0xa0/0xd0 mm/kasan/common.c:496
     kmalloc include/linux/slab.h:545 [inline]
     kzalloc include/linux/slab.h:740 [inline]
     mdiobus_alloc_size+0x54/0x1b0 drivers/net/phy/mdio_bus.c:143
     fixed_mdio_bus_init+0x163/0x1000 [fixed_phy]
     do_one_initcall+0xfa/0x5ca init/main.c:887
     do_init_module+0x204/0x5f6 kernel/module.c:3460
     load_module+0x66b2/0x8570 kernel/module.c:3808
     __do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
     do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Freed by task 3524:
     set_track mm/kasan/common.c:85 [inline]
     __kasan_slab_free+0x130/0x180 mm/kasan/common.c:458
     slab_free_hook mm/slub.c:1409 [inline]
     slab_free_freelist_hook mm/slub.c:1436 [inline]
     slab_free mm/slub.c:2986 [inline]
     kfree+0xe1/0x270 mm/slub.c:3938
     device_release+0x78/0x200 drivers/base/core.c:919
     kobject_cleanup lib/kobject.c:662 [inline]
     kobject_release lib/kobject.c:691 [inline]
     kref_put include/linux/kref.h:67 [inline]
     kobject_put+0x146/0x240 lib/kobject.c:708
     put_device+0x1c/0x30 drivers/base/core.c:2060
     __mdiobus_register+0x483/0x560 drivers/net/phy/mdio_bus.c:382
     fixed_mdio_bus_init+0x26b/0x1000 [fixed_phy]
     do_one_initcall+0xfa/0x5ca init/main.c:887
     do_init_module+0x204/0x5f6 kernel/module.c:3460
     load_module+0x66b2/0x8570 kernel/module.c:3808
     __do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
     do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    The buggy address belongs to the object at ffff8881dc824c80
     which belongs to the cache kmalloc-2k of size 2048
    The buggy address is located 248 bytes inside of
     2048-byte region [ffff8881dc824c80, ffff8881dc825480)
    The buggy address belongs to the page:
    page:ffffea0007720800 count:1 mapcount:0 mapping:ffff8881f6c02800 index:0x0 compound_mapcount: 0
    flags: 0x2fffc0000010200(slab|head)
    raw: 02fffc0000010200 0000000000000000 0000000500000001 ffff8881f6c02800
    raw: 0000000000000000 00000000800f000f 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8881dc824c00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff8881dc824c80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff8881dc824d00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                                    ^
     ffff8881dc824d80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8881dc824e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    
    Fixes: 0c692d07842a ("drivers/net/phy/mdio_bus.c: call put_device on device_register() failure")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 696bfa8c3d86e000b4a01fd391020e71d4fc1a9b
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Feb 22 15:36:18 2019 +0000

    KEYS: always initialize keyring_index_key::desc_len
    
    commit ede0fa98a900e657d1fcd80b50920efc896c1a4c upstream.
    
    syzbot hit the 'BUG_ON(index_key->desc_len == 0);' in __key_link_begin()
    called from construct_alloc_key() during sys_request_key(), because the
    length of the key description was never calculated.
    
    The problem is that we rely on ->desc_len being initialized by
    search_process_keyrings(), specifically by search_nested_keyrings().
    But, if the process isn't subscribed to any keyrings that never happens.
    
    Fix it by always initializing keyring_index_key::desc_len as soon as the
    description is set, like we already do in some places.
    
    The following program reproduces the BUG_ON() when it's run as root and
    no session keyring has been installed.  If it doesn't work, try removing
    pam_keyinit.so from /etc/pam.d/login and rebooting.
    
        #include <stdlib.h>
        #include <unistd.h>
        #include <keyutils.h>
    
        int main(void)
        {
                int id = add_key("keyring", "syz", NULL, 0, KEY_SPEC_USER_KEYRING);
    
                keyctl_setperm(id, KEY_OTH_WRITE);
                setreuid(5000, 5000);
                request_key("user", "desc", "", id);
        }
    
    Reported-by: syzbot+ec24e95ea483de0a24da@syzkaller.appspotmail.com
    Fixes: b2a4df200d57 ("KEYS: Expand the capacity of a keyring")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: James Morris <james.morris@microsoft.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1a844ebde7e7de0970d028faca990507e4287104
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Sep 18 11:38:29 2017 -0700

    KEYS: restrict /proc/keys by credentials at open time
    
    commit 4aa68e07d845562561f5e73c04aa521376e95252 upstream.
    
    When checking for permission to view keys whilst reading from
    /proc/keys, we should use the credentials with which the /proc/keys file
    was opened.  This is because, in a classic type of exploit, it can be
    possible to bypass checks for the *current* credentials by passing the
    file descriptor to a suid program.
    
    Following commit 34dbbcdbf633 ("Make file credentials available to the
    seqfile interfaces") we can finally fix it.  So let's do it.
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 823f25c068f93f7800780f1648eeb59287cd5177
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Feb 20 13:32:11 2019 +0000

    KEYS: user: Align the payload buffer
    
    commit cc1780fc42c76c705dd07ea123f1143dc5057630 upstream.
    
    Align the payload of "user" and "logon" keys so that users of the
    keyrings service can access it as a struct that requires more than
    2-byte alignment.  fscrypt currently does this which results in the read
    of fscrypt_key::size being misaligned as it needs 4-byte alignment.
    
    Align to __alignof__(u64) rather than __alignof__(long) since in the
    future it's conceivable that people would use structs beginning with
    u64, which on some platforms would require more than 'long' alignment.
    
    Reported-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Fixes: 2aa349f6e37c ("[PATCH] Keys: Export user-defined keyring operations")
    Fixes: 88bd6ccdcdd6 ("ext4 crypto: add encryption key management facilities")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: James Morris <james.morris@microsoft.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4404926390d1d3104e4949a6f42717be3f30a23c
Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Date:   Thu Feb 14 18:07:44 2019 +0300

    ARC: U-boot: check arguments paranoidly
    
    commit a66f2e57bd566240d8b3884eedf503928fbbe557 upstream.
    
    Handle U-boot arguments paranoidly:
     * don't allow to pass unknown tag.
     * try to use external device tree blob only if corresponding tag
       (TAG_DTB) is set.
     * don't check uboot_tag if kernel build with no ARC_UBOOT_SUPPORT.
    
    NOTE:
    If U-boot args are invalid we skip them and try to use embedded device
    tree blob. We can't panic on invalid U-boot args as we really pass
    invalid args due to bug in U-boot code.
    This happens if we don't provide external DTB to U-boot and
    don't set 'bootargs' U-boot environment variable (which is default
    case at least for HSDK board) In that case we will pass
    {r0 = 1 (bootargs in r2); r1 = 0; r2 = 0;} to linux which is invalid.
    
    While I'm at it refactor U-boot arguments handling code.
    
    Tested-by: Corentin LABBE <clabbe@baylibre.com>
    Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 17b676ec70edf5cafdd2794c88f9d197a49fb30b
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Thu Feb 21 08:48:09 2019 -0800

    tmpfs: fix link accounting when a tmpfile is linked in
    
    commit 1062af920c07f5b54cf5060fde3339da6df0cf6b upstream.
    
    tmpfs has a peculiarity of accounting hard links as if they were
    separate inodes: so that when the number of inodes is limited, as it is
    by default, a user cannot soak up an unlimited amount of unreclaimable
    dcache memory just by repeatedly linking a file.
    
    But when v3.11 added O_TMPFILE, and the ability to use linkat() on the
    fd, we missed accommodating this new case in tmpfs: "df -i" shows that
    an extra "inode" remains accounted after the file is unlinked and the fd
    closed and the actual inode evicted.  If a user repeatedly links
    tmpfiles into a tmpfs, the limit will be hit (ENOSPC) even after they
    are deleted.
    
    Just skip the extra reservation from shmem_link() in this case: there's
    a sense in which this first link of a tmpfile is then cheaper than a
    hard link of another file, but the accounting works out, and there's
    still good limiting, so no need to do anything more complicated.
    
    Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1902182134370.7035@eggly.anvils
    Fixes: f4e0c30c191 ("allow the temp files created by open() to be linked to")
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Reported-by: Matej Kupljen <matej.kupljen@gmail.com>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7ad2ef373b164f143477c20de594ecdacc291e4d
Author: Jose Abreu <jose.abreu@synopsys.com>
Date:   Mon Feb 18 14:35:03 2019 +0100

    net: stmmac: Fix a race in EEE enable callback
    
    commit 8a7493e58ad688eb23b81e45461c5d314f4402f1 upstream.
    
    We are saving the status of EEE even before we try to enable it. This
    leads to a race with XMIT function that tries to arm EEE timer before we
    set it up.
    
    Fix this by only saving the EEE parameters after all operations are
    performed with success.
    
    Signed-off-by: Jose Abreu <joabreu@synopsys.com>
    Fixes: d765955d2ae0 ("stmmac: add the Energy Efficient Ethernet support")
    Cc: Joao Pinto <jpinto@synopsys.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
    Cc: Alexandre Torgue <alexandre.torgue@st.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cfc479edad62138a73afa42b51f533d1e5f2b96f
Author: Yan, Zheng <zyan@redhat.com>
Date:   Mon Feb 11 15:18:52 2019 +0800

    ceph: avoid repeatedly adding inode to mdsc->snap_flush_list
    
    commit 04242ff3ac0abbaa4362f97781dac268e6c3541a upstream.
    
    Otherwise, mdsc->snap_flush_list may get corrupted.
    
    Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
    Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d8fa70d55dbd45da76321d39139f5bdafc26284c
Author: John Garry <john.garry@huawei.com>
Date:   Fri Feb 15 00:37:57 2019 +0800

    scsi: libsas: Fix rphy phy_identifier for PHYs with end devices attached
    
    commit ffeafdd2bf0b280d67ec1a47ea6287910d271f3f upstream.
    
    The sysfs phy_identifier attribute for a sas_end_device comes from the rphy
    phy_identifier value.
    
    Currently this is not being set for rphys with an end device attached, so
    we see incorrect symlinks from systemd disk/by-path:
    
    root@localhost:~# ls -l /dev/disk/by-path/
    total 0
    lrwxrwxrwx 1 root root  9 Feb 13 12:26 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy0-lun-0 -> ../../sdb
    lrwxrwxrwx 1 root root 10 Feb 13 12:26 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy0-lun-0-part1 -> ../../sdb1
    lrwxrwxrwx 1 root root 10 Feb 13 12:26 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy0-lun-0-part2 -> ../../sdb2
    lrwxrwxrwx 1 root root 10 Feb 13 12:26 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy0-lun-0-part3 -> ../../sdc3
    
    Indeed, each sas_end_device phy_identifier value is 0:
    
    root@localhost:/# more sys/class/sas_device/end_device-0\:0\:2/phy_identifier
    0
    root@localhost:/# more sys/class/sas_device/end_device-0\:0\:10/phy_identifier
    0
    
    This patch fixes the discovery code to set the phy_identifier.  With this,
    we now get proper symlinks:
    
    root@localhost:~# ls -l /dev/disk/by-path/
    total 0
    lrwxrwxrwx 1 root root  9 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy10-lun-0 -> ../../sdg
    lrwxrwxrwx 1 root root  9 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy11-lun-0 -> ../../sdh
    lrwxrwxrwx 1 root root  9 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy2-lun-0 -> ../../sda
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy2-lun-0-part1 -> ../../sda1
    lrwxrwxrwx 1 root root  9 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy3-lun-0 -> ../../sdb
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy3-lun-0-part1 -> ../../sdb1
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy3-lun-0-part2 -> ../../sdb2
    lrwxrwxrwx 1 root root  9 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy4-lun-0 -> ../../sdc
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy4-lun-0-part1 -> ../../sdc1
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy4-lun-0-part2 -> ../../sdc2
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy4-lun-0-part3 -> ../../sdc3
    lrwxrwxrwx 1 root root  9 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy5-lun-0 -> ../../sdd
    lrwxrwxrwx 1 root root  9 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy7-lun-0 -> ../../sde
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy7-lun-0-part1 -> ../../sde1
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy7-lun-0-part2 -> ../../sde2
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy7-lun-0-part3 -> ../../sde3
    lrwxrwxrwx 1 root root  9 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy8-lun-0 -> ../../sdf
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy8-lun-0-part1 -> ../../sdf1
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy8-lun-0-part2 -> ../../sdf2
    lrwxrwxrwx 1 root root 10 Feb 13 11:53 platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy8-lun-0-part3 -> ../../sdf3
    
    Fixes: 2908d778ab3e ("[SCSI] aic94xx: new driver")
    Reported-by: dann frazier <dann.frazier@canonical.com>
    Signed-off-by: John Garry <john.garry@huawei.com>
    Reviewed-by: Jason Yan <yanaijie@huawei.com>
    Tested-by: dann frazier <dann.frazier@canonical.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6284ecd5a6d365e4a61ffa0af7ae1611ee366b49
Author: David Howells <dhowells@redhat.com>
Date:   Thu Feb 14 16:20:15 2019 +0000

    assoc_array: Fix shortcut creation
    
    commit bb2ba2d75a2d673e76ddaf13a9bd30d6a8b1bb08 upstream.
    
    Fix the creation of shortcuts for which the length of the index key value
    is an exact multiple of the machine word size.  The problem is that the
    code that blanks off the unused bits of the shortcut value malfunctions if
    the number of bits in the last word equals machine word size.  This is due
    to the "<<" operator being given a shift of zero in this case, and so the
    mask that should be all zeros is all ones instead.  This causes the
    subsequent masking operation to clear everything rather than clearing
    nothing.
    
    Ordinarily, the presence of the hash at the beginning of the tree index key
    makes the issue very hard to test for, but in this case, it was encountered
    due to a development mistake that caused the hash output to be either 0
    (keyring) or 1 (non-keyring) only.  This made it susceptible to the
    keyctl/unlink/valid test in the keyutils package.
    
    The fix is simply to skip the blanking if the shift would be 0.  For
    example, an index key that is 64 bits long would produce a 0 shift and thus
    a 'blank' of all 1s.  This would then be inverted and AND'd onto the
    index_key, incorrectly clearing the entire last word.
    
    Fixes: 3cb989501c26 ("Add a generic associative array implementation.")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: James Morris <james.morris@microsoft.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 980e41e1b9db1a32b382efdd08c4b7c70b5dbd24
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Feb 14 16:20:01 2019 +0000

    KEYS: allow reaching the keys quotas exactly
    
    commit a08bf91ce28ed3ae7b6fef35d843fef8dc8c2cd9 upstream.
    
    If the sysctl 'kernel.keys.maxkeys' is set to some number n, then
    actually users can only add up to 'n - 1' keys.  Likewise for
    'kernel.keys.maxbytes' and the root_* versions of these sysctls.  But
    these sysctls are apparently supposed to be *maximums*, as per their
    names and all documentation I could find -- the keyrings(7) man page,
    Documentation/security/keys/core.rst, and all the mentions of EDQUOT
    meaning that the key quota was *exceeded* (as opposed to reached).
    
    Thus, fix the code to allow reaching the quotas exactly.
    
    Fixes: 0b77f5bfb45c ("keys: make the keyring quotas controllable through /proc/sys")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: James Morris <james.morris@microsoft.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7b6680ca5482fe242e03afe4fde213055a9b7f90
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Fri Feb 15 12:50:24 2019 +0100

    netfilter: nf_tables: fix flush after rule deletion in the same batch
    
    commit 23b7ca4f745f21c2b9cfcb67fdd33733b3ae7e66 upstream.
    
    Flush after rule deletion bogusly hits -ENOENT. Skip rules that have
    been already from nft_delrule_by_chain() which is always called from the
    flush path.
    
    Fixes: cf9dc09d0949 ("netfilter: nf_tables: fix missing rules flushing per table")
    Reported-by: Phil Sutter <phil@nwl.cc>
    Acked-by: Phil Sutter <phil@nwl.cc>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    [bwh: Backported to 3.16:
     - Use nft_rule_is_active_next() instead of nft_is_active_next()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b147919cc864f2b68bf4d8f566c1b7127fc3252d
Author: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Date:   Tue Feb 5 16:42:53 2019 +0530

    i2c: cadence: Fix the hold bit setting
    
    commit d358def706880defa4c9e87381c5bf086a97d5f9 upstream.
    
    In case the hold bit is not needed we are carrying the old values.
    Fix the same by resetting the bit when not needed.
    
    Fixes the sporadic i2c bus lockups on National Instruments
    Zynq-based devices.
    
    Fixes: df8eb5691c48 ("i2c: Add driver for Cadence I2C controller")
    Reported-by: Kyle Roeschley <kyle.roeschley@ni.com>
    Acked-by: Michal Simek <michal.simek@xilinx.com>
    Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
    Tested-by: Kyle Roeschley <kyle.roeschley@ni.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fee3db23d809345a96ede3ef617a8c4fba1157cd
Author: Nikos Tsironis <ntsironis@arrikto.com>
Date:   Thu Feb 14 20:38:47 2019 +0200

    dm thin: fix bug where bio that overwrites thin block ignores FUA
    
    commit 4ae280b4ee3463fa57bbe6eede26b97daff8a0f1 upstream.
    
    When provisioning a new data block for a virtual block, either because
    the block was previously unallocated or because we are breaking sharing,
    if the whole block of data is being overwritten the bio that triggered
    the provisioning is issued immediately, skipping copying or zeroing of
    the data block.
    
    When this bio completes the new mapping is inserted in to the pool's
    metadata by process_prepared_mapping(), where the bio completion is
    signaled to the upper layers.
    
    This completion is signaled without first committing the metadata.  If
    the bio in question has the REQ_FUA flag set and the system crashes
    right after its completion and before the next metadata commit, then the
    write is lost despite the REQ_FUA flag requiring that I/O completion for
    this request must only be signaled after the data has been committed to
    non-volatile storage.
    
    Fix this by deferring the completion of overwrite bios, with the REQ_FUA
    flag set, until after the metadata has been committed.
    
    Signed-off-by: Nikos Tsironis <ntsironis@arrikto.com>
    Acked-by: Joe Thornber <ejt@redhat.com>
    Acked-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    [bwh: Backported to 3.16:
     - bio_endio() takes an error parameter
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6fcac737c4a97588d3d15ab61096dffb9a6fe3f8
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Wed Feb 13 13:03:53 2019 +0100

    netfilter: nft_compat: use-after-free when deleting targets
    
    commit 753c111f655e38bbd52fc01321266633f022ebe2 upstream.
    
    Fetch pointer to module before target object is released.
    
    Fixes: 29e3880109e3 ("netfilter: nf_tables: fix use-after-free when deleting compat expressions")
    Fixes: 0ca743a55991 ("netfilter: nf_tables: add compatibility layer for x_tables")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fc304a9779c050fefeee3a727997906130fc0367
Author: Florian Westphal <fw@strlen.de>
Date:   Wed May 2 14:07:42 2018 +0200

    netfilter: nf_tables: nft_compat: fix refcount leak on xt module
    
    commit b8e9dc1c75714ceb53615743e1036f76e00f5a17 upstream.
    
    Taehee Yoo reported following bug:
        iptables-compat -I OUTPUT -m cpu --cpu 0
        iptables-compat -F
        lsmod |grep xt_cpu
        xt_cpu                 16384  1
    
    Quote:
    "When above command is given, a netlink message has two expressions that
    are the cpu compat and the nft_counter.
    The nft_expr_type_get() in the nf_tables_expr_parse() successes
    first expression then, calls select_ops callback.
    (allocates memory and holds module)
    But, second nft_expr_type_get() in the nf_tables_expr_parse()
    returns -EAGAIN because of request_module().
    In that point, by the 'goto err1',
    the 'module_put(info[i].ops->type->owner)' is called.
    There is no release routine."
    
    The core problem is that unlike all other expression,
    nft_compat select_ops has side effects.
    
    1. it allocates dynamic memory which holds an nft ops struct.
       In all other expressions, ops has static storage duration.
    2. It grabs references to the xt module that it is supposed to
       invoke.
    
    Depending on where things go wrong, error unwinding doesn't
    always do the right thing.
    
    In the above scenario, a new nft_compat_expr is created and
    xt_cpu module gets loaded with a refcount of 1.
    
    Due to to -EAGAIN, the netlink messages get re-parsed.
    When that happens, nft_compat finds that xt_cpu is already present
    and increments module refcount again.
    
    This fixes the problem by making select_ops to have no visible
    side effects and removes all extra module_get/put.
    
    When select_ops creates a new nft_compat expression, the new
    expression has a refcount of 0, and the xt module gets its refcount
    incremented.
    
    When error happens, the next call finds existing entry, but will no
    longer increase the reference count -- the presence of existing
    nft_xt means we already hold a module reference.
    
    Because nft_xt_put is only called from nft_compat destroy hook,
    it will never see the initial zero reference count.
    ->destroy can only be called after ->init(), and that will increase the
    refcount.
    
    Lastly, we now free nft_xt struct with kfree_rcu.
    Else, we get use-after free in nf_tables_rule_destroy:
    
      while (expr != nft_expr_last(rule) && expr->ops) {
        nf_tables_expr_destroy(ctx, expr);
        expr = nft_expr_next(expr); // here
    
    nft_expr_next() dereferences expr->ops. This is safe
    for all users, as ops have static storage duration.
    In nft_compat case however, its ->destroy callback can
    free the memory that hold the ops structure.
    
    Tested-by: Taehee Yoo <ap420073@gmail.com>
    Reported-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4bdbf9b29256ae8ef7584b81a5e1913bee146b30
Author: Liping Zhang <liping.zhang@spreadtrum.com>
Date:   Sat Jul 23 16:00:32 2016 +0800

    netfilter: nft_compat: fix crash when related match/target module is removed
    
    commit 4b512e1c1f8de6b9ceb796ecef8658e0a083cab7 upstream.
    
    We "cache" the loaded match/target modules and reuse them, but when the
    modules are removed, we still point to them. Then we may end up with
    invalid memory references when using iptables-compat to add rules later.
    
    Input the following commands will reproduce the kernel crash:
      # iptables-compat -A INPUT -j LOG
      # iptables-compat -D INPUT -j LOG
      # rmmod xt_LOG
      # iptables-compat -A INPUT -j LOG
      BUG: unable to handle kernel paging request at ffffffffa05a9010
      IP: [<ffffffff813f783e>] strcmp+0xe/0x30
      Call Trace:
      [<ffffffffa05acc43>] nft_target_select_ops+0x83/0x1f0 [nft_compat]
      [<ffffffffa058a177>] nf_tables_expr_parse+0x147/0x1f0 [nf_tables]
      [<ffffffffa058e541>] nf_tables_newrule+0x301/0x810 [nf_tables]
      [<ffffffff8141ca00>] ? nla_parse+0x20/0x100
      [<ffffffffa057fa8f>] nfnetlink_rcv+0x33f/0x53d [nfnetlink]
      [<ffffffffa057f94b>] ? nfnetlink_rcv+0x1fb/0x53d [nfnetlink]
      [<ffffffff817116b8>] netlink_unicast+0x178/0x220
      [<ffffffff81711a5b>] netlink_sendmsg+0x2fb/0x3a0
      [<ffffffff816b7fc8>] sock_sendmsg+0x38/0x50
      [<ffffffff816b8a7e>] ___sys_sendmsg+0x28e/0x2a0
      [<ffffffff816bcb7e>] ? release_sock+0x1e/0xb0
      [<ffffffff81804ac5>] ? _raw_spin_unlock_bh+0x35/0x40
      [<ffffffff816bcbe2>] ? release_sock+0x82/0xb0
      [<ffffffff816b93d4>] __sys_sendmsg+0x54/0x90
      [<ffffffff816b9422>] SyS_sendmsg+0x12/0x20
      [<ffffffff81805172>] entry_SYSCALL_64_fastpath+0x1a/0xa9
    
    So when nobody use the related match/target module, there's no need to
    "cache" it. And nft_[match|target]_release are useless anymore, remove
    them.
    
    Signed-off-by: Liping Zhang <liping.zhang@spreadtrum.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 259987f3e4b2e51d3ddb2fcafb566cc45c8016b2
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Mon Feb 11 23:27:42 2019 -0600

    signal: Restore the stop PTRACE_EVENT_EXIT
    
    commit cf43a757fd49442bc38f76088b70c2299eed2c2f upstream.
    
    In the middle of do_exit() there is there is a call
    "ptrace_event(PTRACE_EVENT_EXIT, code);" That call places the process
    in TACKED_TRACED aka "(TASK_WAKEKILL | __TASK_TRACED)" and waits for
    for the debugger to release the task or SIGKILL to be delivered.
    
    Skipping past dequeue_signal when we know a fatal signal has already
    been delivered resulted in SIGKILL remaining pending and
    TIF_SIGPENDING remaining set.  This in turn caused the
    scheduler to not sleep in PTACE_EVENT_EXIT as it figured
    a fatal signal was pending.  This also caused ptrace_freeze_traced
    in ptrace_check_attach to fail because it left a per thread
    SIGKILL pending which is what fatal_signal_pending tests for.
    
    This difference in signal state caused strace to report
    strace: Exit of unknown pid NNNNN ignored
    
    Therefore update the signal handling state like dequeue_signal
    would when removing a per thread SIGKILL, by removing SIGKILL
    from the per thread signal mask and clearing TIF_SIGPENDING.
    
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Reported-by: Oleg Nesterov <oleg@redhat.com>
    Reported-by: Ivan Delalande <colona@arista.com>
    Fixes: 35634ffa1751 ("signal: Always notice exiting tasks")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ca255144b557c82ffa2e3ea9ecd5947c94d33cdc
Author: Borislav Petkov <bp@suse.de>
Date:   Tue Feb 12 14:28:03 2019 +0100

    x86/a.out: Clear the dump structure initially
    
    commit 10970e1b4be9c74fce8ab6e3c34a7d718f063f2c upstream.
    
    dump_thread32() in aout_core_dump() does not clear the user32 structure
    allocated on the stack as the first thing on function entry.
    
    As a result, the dump.u_comm, dump.u_ar0 and dump.signal which get
    assigned before the clearing, get overwritten.
    
    Rename that function to fill_dump() to make it clear what it does and
    call it first thing.
    
    This was caught while staring at a patch by Derek Robson
    <robsonde@gmail.com>.
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Derek Robson <robsonde@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Michael Matz <matz@suse.de>
    Cc: x86@kernel.org
    Link: https://lkml.kernel.org/r/20190202005512.3144-1-robsonde@gmail.com
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 86b3a39533827ba13210a148c856badcecbe3323
Author: Ingo Molnar <mingo@kernel.org>
Date:   Wed Feb 13 07:57:02 2019 +0100

    perf/core: Fix impossible ring-buffer sizes warning
    
    commit 528871b456026e6127d95b1b2bd8e3a003dc1614 upstream.
    
    The following commit:
    
      9dff0aa95a32 ("perf/core: Don't WARN() for impossible ring-buffer sizes")
    
    results in perf recording failures with larger mmap areas:
    
      root@skl:/tmp# perf record -g -a
      failed to mmap with 12 (Cannot allocate memory)
    
    The root cause is that the following condition is buggy:
    
            if (order_base_2(size) >= MAX_ORDER)
                    goto fail;
    
    The problem is that @size is in bytes and MAX_ORDER is in pages,
    so the right test is:
    
            if (order_base_2(size) >= PAGE_SHIFT+MAX_ORDER)
                    goto fail;
    
    Fix it.
    
    Reported-by: "Jin, Yao" <yao.jin@linux.intel.com>
    Bisected-by: Borislav Petkov <bp@alien8.de>
    Analyzed-by: Peter Zijlstra <peterz@infradead.org>
    Cc: Julien Thierry <julien.thierry@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Fixes: 9dff0aa95a32 ("perf/core: Don't WARN() for impossible ring-buffer sizes")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a13950191791dbc93406cc07c38abd3fe7a53673
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Mon Feb 11 21:59:51 2019 -0800

    team: avoid complex list operations in team_nl_cmd_options_set()
    
    commit 2fdeee2549231b1f989f011bb18191f5660d3745 upstream.
    
    The current opt_inst_list operations inside team_nl_cmd_options_set()
    is too complex to track:
    
        LIST_HEAD(opt_inst_list);
        nla_for_each_nested(...) {
            list_for_each_entry(opt_inst, &team->option_inst_list, list) {
                if (__team_option_inst_tmp_find(&opt_inst_list, opt_inst))
                    continue;
                list_add(&opt_inst->tmp_list, &opt_inst_list);
            }
        }
        team_nl_send_event_options_get(team, &opt_inst_list);
    
    as while we retrieve 'opt_inst' from team->option_inst_list, it could
    be added to the local 'opt_inst_list' for multiple times. The
    __team_option_inst_tmp_find() doesn't work, as the setter
    team_mode_option_set() still calls team->ops.exit() which uses
    ->tmp_list too in __team_options_change_check().
    
    Simplify the list operations by moving the 'opt_inst_list' and
    team_nl_send_event_options_get() into the nla_for_each_nested() loop so
    that it can be guranteed that we won't insert a same list entry for
    multiple times. Therefore, __team_option_inst_tmp_find() can be removed
    too.
    
    Fixes: 4fb0534fb7bb ("team: avoid adding twice the same option to the event list")
    Fixes: 2fcdb2c9e659 ("team: allow to send multiple set events in one message")
    Reported-by: syzbot+4d4af685432dc0e56c91@syzkaller.appspotmail.com
    Reported-by: syzbot+68ee510075cf64260cc4@syzkaller.appspotmail.com
    Cc: Jiri Pirko <jiri@resnulli.us>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Reviewed-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0ea051614ad77636064fccfa2a25d8047b8861a1
Author: Christoph Paasch <cpaasch@apple.com>
Date:   Mon Mar 18 23:14:52 2019 -0700

    net/packet: Set __GFP_NOWARN upon allocation in alloc_pg_vec
    
    commit 398f0132c14754fcd03c1c4f8e7176d001ce8ea1 upstream.
    
    Since commit fc62814d690c ("net/packet: fix 4gb buffer limit due to overflow check")
    one can now allocate packet ring buffers >= UINT_MAX. However, syzkaller
    found that that triggers a warning:
    
    [   21.100000] WARNING: CPU: 2 PID: 2075 at mm/page_alloc.c:4584 __alloc_pages_nod0
    [   21.101490] Modules linked in:
    [   21.101921] CPU: 2 PID: 2075 Comm: syz-executor.0 Not tainted 5.0.0 #146
    [   21.102784] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.5.1 01/01/2011
    [   21.103887] RIP: 0010:__alloc_pages_nodemask+0x2a0/0x630
    [   21.104640] Code: fe ff ff 65 48 8b 04 25 c0 de 01 00 48 05 90 0f 00 00 41 bd 01 00 00 00 48 89 44 24 48 e9 9c fe 3
    [   21.107121] RSP: 0018:ffff88805e1cf920 EFLAGS: 00010246
    [   21.107819] RAX: 0000000000000000 RBX: ffffffff85a488a0 RCX: 0000000000000000
    [   21.108753] RDX: 0000000000000000 RSI: dffffc0000000000 RDI: 0000000000000000
    [   21.109699] RBP: 1ffff1100bc39f28 R08: ffffed100bcefb67 R09: ffffed100bcefb67
    [   21.110646] R10: 0000000000000001 R11: ffffed100bcefb66 R12: 000000000000000d
    [   21.111623] R13: 0000000000000000 R14: ffff88805e77d888 R15: 000000000000000d
    [   21.112552] FS:  00007f7c7de05700(0000) GS:ffff88806d100000(0000) knlGS:0000000000000000
    [   21.113612] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   21.114405] CR2: 000000000065c000 CR3: 000000005e58e006 CR4: 00000000001606e0
    [   21.115367] Call Trace:
    [   21.115705]  ? __alloc_pages_slowpath+0x21c0/0x21c0
    [   21.116362]  alloc_pages_current+0xac/0x1e0
    [   21.116923]  kmalloc_order+0x18/0x70
    [   21.117393]  kmalloc_order_trace+0x18/0x110
    [   21.117949]  packet_set_ring+0x9d5/0x1770
    [   21.118524]  ? packet_rcv_spkt+0x440/0x440
    [   21.119094]  ? lock_downgrade+0x620/0x620
    [   21.119646]  ? __might_fault+0x177/0x1b0
    [   21.120177]  packet_setsockopt+0x981/0x2940
    [   21.120753]  ? __fget+0x2fb/0x4b0
    [   21.121209]  ? packet_release+0xab0/0xab0
    [   21.121740]  ? sock_has_perm+0x1cd/0x260
    [   21.122297]  ? selinux_secmark_relabel_packet+0xd0/0xd0
    [   21.123013]  ? __fget+0x324/0x4b0
    [   21.123451]  ? selinux_netlbl_socket_setsockopt+0x101/0x320
    [   21.124186]  ? selinux_netlbl_sock_rcv_skb+0x3a0/0x3a0
    [   21.124908]  ? __lock_acquire+0x529/0x3200
    [   21.125453]  ? selinux_socket_setsockopt+0x5d/0x70
    [   21.126075]  ? __sys_setsockopt+0x131/0x210
    [   21.126533]  ? packet_release+0xab0/0xab0
    [   21.127004]  __sys_setsockopt+0x131/0x210
    [   21.127449]  ? kernel_accept+0x2f0/0x2f0
    [   21.127911]  ? ret_from_fork+0x8/0x50
    [   21.128313]  ? do_raw_spin_lock+0x11b/0x280
    [   21.128800]  __x64_sys_setsockopt+0xba/0x150
    [   21.129271]  ? lockdep_hardirqs_on+0x37f/0x560
    [   21.129769]  do_syscall_64+0x9f/0x450
    [   21.130182]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    We should allocate with __GFP_NOWARN to handle this.
    
    Cc: Kal Conley <kal.conley@dectris.com>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Fixes: fc62814d690c ("net/packet: fix 4gb buffer limit due to overflow check")
    Signed-off-by: Christoph Paasch <cpaasch@apple.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 511a879ab55318d072c1634be71104069387b247
Author: Kal Conley <kal.conley@dectris.com>
Date:   Sun Feb 10 09:57:11 2019 +0100

    net/packet: fix 4gb buffer limit due to overflow check
    
    commit fc62814d690cf62189854464f4bd07457d5e9e50 upstream.
    
    When calculating rb->frames_per_block * req->tp_block_nr the result
    can overflow. Check it for overflow without limiting the total buffer
    size to UINT_MAX.
    
    This change fixes support for packet ring buffers >= UINT_MAX.
    
    Fixes: 8f8d28e4d6d8 ("net/packet: fix overflow in check for tp_frame_nr")
    Signed-off-by: Kal Conley <kal.conley@dectris.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4712aac722b7830d65ebca171dbd8f8647855c71
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Feb 11 14:41:22 2019 -0800

    batman-adv: fix uninit-value in batadv_interface_tx()
    
    commit 4ffcbfac60642f63ae3d80891f573ba7e94a265c upstream.
    
    KMSAN reported batadv_interface_tx() was possibly using a
    garbage value [1]
    
    batadv_get_vid() does have a pskb_may_pull() call
    but batadv_interface_tx() does not actually make sure
    this did not fail.
    
    [1]
    BUG: KMSAN: uninit-value in batadv_interface_tx+0x908/0x1e40 net/batman-adv/soft-interface.c:231
    CPU: 0 PID: 10006 Comm: syz-executor469 Not tainted 4.20.0-rc7+ #5
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x173/0x1d0 lib/dump_stack.c:113
     kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:613
     __msan_warning+0x82/0xf0 mm/kmsan/kmsan_instr.c:313
     batadv_interface_tx+0x908/0x1e40 net/batman-adv/soft-interface.c:231
     __netdev_start_xmit include/linux/netdevice.h:4356 [inline]
     netdev_start_xmit include/linux/netdevice.h:4365 [inline]
     xmit_one net/core/dev.c:3257 [inline]
     dev_hard_start_xmit+0x607/0xc40 net/core/dev.c:3273
     __dev_queue_xmit+0x2e42/0x3bc0 net/core/dev.c:3843
     dev_queue_xmit+0x4b/0x60 net/core/dev.c:3876
     packet_snd net/packet/af_packet.c:2928 [inline]
     packet_sendmsg+0x8306/0x8f30 net/packet/af_packet.c:2953
     sock_sendmsg_nosec net/socket.c:621 [inline]
     sock_sendmsg net/socket.c:631 [inline]
     __sys_sendto+0x8c4/0xac0 net/socket.c:1788
     __do_sys_sendto net/socket.c:1800 [inline]
     __se_sys_sendto+0x107/0x130 net/socket.c:1796
     __x64_sys_sendto+0x6e/0x90 net/socket.c:1796
     do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x63/0xe7
    RIP: 0033:0x441889
    Code: 18 89 d0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 bb 10 fc ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007ffdda6fd468 EFLAGS: 00000216 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 0000000000441889
    RDX: 000000000000000e RSI: 00000000200000c0 RDI: 0000000000000003
    RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000216 R12: 00007ffdda6fd4c0
    R13: 00007ffdda6fd4b0 R14: 0000000000000000 R15: 0000000000000000
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:204 [inline]
     kmsan_internal_poison_shadow+0x92/0x150 mm/kmsan/kmsan.c:158
     kmsan_kmalloc+0xa6/0x130 mm/kmsan/kmsan_hooks.c:176
     kmsan_slab_alloc+0xe/0x10 mm/kmsan/kmsan_hooks.c:185
     slab_post_alloc_hook mm/slab.h:446 [inline]
     slab_alloc_node mm/slub.c:2759 [inline]
     __kmalloc_node_track_caller+0xe18/0x1030 mm/slub.c:4383
     __kmalloc_reserve net/core/skbuff.c:137 [inline]
     __alloc_skb+0x309/0xa20 net/core/skbuff.c:205
     alloc_skb include/linux/skbuff.h:998 [inline]
     alloc_skb_with_frags+0x1c7/0xac0 net/core/skbuff.c:5220
     sock_alloc_send_pskb+0xafd/0x10e0 net/core/sock.c:2083
     packet_alloc_skb net/packet/af_packet.c:2781 [inline]
     packet_snd net/packet/af_packet.c:2872 [inline]
     packet_sendmsg+0x661a/0x8f30 net/packet/af_packet.c:2953
     sock_sendmsg_nosec net/socket.c:621 [inline]
     sock_sendmsg net/socket.c:631 [inline]
     __sys_sendto+0x8c4/0xac0 net/socket.c:1788
     __do_sys_sendto net/socket.c:1800 [inline]
     __se_sys_sendto+0x107/0x130 net/socket.c:1796
     __x64_sys_sendto+0x6e/0x90 net/socket.c:1796
     do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x63/0xe7
    
    Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc:     Marek Lindner <mareklindner@neomailbox.ch>
    Cc:     Simon Wunderlich <sw@simonwunderlich.de>
    Cc:     Antonio Quartulli <a@unstable.cc>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1cfda855ac290ebaf6f09393786b7a23ac5c89cf
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Thu Feb 7 11:42:14 2019 +0100

    x86/kvm/nVMX: read from MSR_IA32_VMX_PROCBASED_CTLS2 only when it is available
    
    commit 6b1971c694975e49af302229202c0043568b1791 upstream.
    
    SDM says MSR_IA32_VMX_PROCBASED_CTLS2 is only available "If
    (CPUID.01H:ECX.[5] && IA32_VMX_PROCBASED_CTLS[63])". It was found that
    some old cpus (namely "Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz (family: 0x6,
    model: 0xf, stepping: 0x6") don't have it. Add the missing check.
    
    Reported-by: Zdenek Kaspar <zkaspar82@gmail.com>
    Tested-by: Zdenek Kaspar <zkaspar82@gmail.com>
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [bwh: Backported to 3.16:
     - The MSR values are stored in static variables
     - Adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit da93eb476f54e0a3bc922ef4be62b51a720e915e
Author: Zhiqiang Liu <liuzhiqiang26@huawei.com>
Date:   Mon Feb 11 10:57:46 2019 +0800

    net: fix IPv6 prefix route residue
    
    commit e75913c93f7cd5f338ab373c34c93a655bd309cb upstream.
    
    Follow those steps:
     # ip addr add 2001:123::1/32 dev eth0
     # ip addr add 2001:123:456::2/64 dev eth0
     # ip addr del 2001:123::1/32 dev eth0
     # ip addr del 2001:123:456::2/64 dev eth0
    and then prefix route of 2001:123::1/32 will still exist.
    
    This is because ipv6_prefix_equal in check_cleanup_prefix_route
    func does not check whether two IPv6 addresses have the same
    prefix length. If the prefix of one address starts with another
    shorter address prefix, even though their prefix lengths are
    different, the return value of ipv6_prefix_equal is true.
    
    Here I add a check of whether two addresses have the same prefix
    to decide whether their prefixes are equal.
    
    Fixes: 5b84efecb7d9 ("ipv6 addrconf: don't cleanup prefix route for IFA_F_NOPREFIXROUTE")
    Signed-off-by: Zhiqiang Liu <liuzhiqiang26@huawei.com>
    Reported-by: Wenhao Zhang <zhangwenhao8@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 52faf09466e75f7e8812296e1cd47f6a67c87674
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Feb 7 12:27:38 2019 -0800

    vxlan: test dev->flags & IFF_UP before calling netif_rx()
    
    commit 4179cb5a4c924cd233eaadd081882425bc98f44e upstream.
    
    netif_rx() must be called under a strict contract.
    
    At device dismantle phase, core networking clears IFF_UP
    and flush_all_backlogs() is called after rcu grace period
    to make sure no incoming packet might be in a cpu backlog
    and still referencing the device.
    
    Most drivers call netif_rx() from their interrupt handler,
    and since the interrupts are disabled at device dismantle,
    netif_rx() does not have to check dev->flags & IFF_UP
    
    Virtual drivers do not have this guarantee, and must
    therefore make the check themselves.
    
    Otherwise we risk use-after-free and/or crashes.
    
    Note this patch also fixes a small issue that came
    with commit ce6502a8f957 ("vxlan: fix a use after free
    in vxlan_encap_bypass"), since the dev->stats.rx_dropped
    change was done on the wrong device.
    
    Fixes: d342894c5d2f ("vxlan: virtual extensible lan")
    Fixes: ce6502a8f957 ("vxlan: fix a use after free in vxlan_encap_bypass")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Petr Machata <petrm@mellanox.com>
    Cc: Ido Schimmel <idosch@mellanox.com>
    Cc: Roopa Prabhu <roopa@cumulusnetworks.com>
    Cc: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a55df84bd5b9fd442c0c3ffab3197d02d8800573
Author: Jiri Olsa <jolsa@redhat.com>
Date:   Mon Feb 4 13:35:32 2019 +0100

    perf/x86: Add check_period PMU callback
    
    commit 81ec3f3c4c4d78f2d3b6689c9816bfbdf7417dbb upstream.
    
    Vince (and later on Ravi) reported crashes in the BTS code during
    fuzzing with the following backtrace:
    
      general protection fault: 0000 [#1] SMP PTI
      ...
      RIP: 0010:perf_prepare_sample+0x8f/0x510
      ...
      Call Trace:
       <IRQ>
       ? intel_pmu_drain_bts_buffer+0x194/0x230
       intel_pmu_drain_bts_buffer+0x160/0x230
       ? tick_nohz_irq_exit+0x31/0x40
       ? smp_call_function_single_interrupt+0x48/0xe0
       ? call_function_single_interrupt+0xf/0x20
       ? call_function_single_interrupt+0xa/0x20
       ? x86_schedule_events+0x1a0/0x2f0
       ? x86_pmu_commit_txn+0xb4/0x100
       ? find_busiest_group+0x47/0x5d0
       ? perf_event_set_state.part.42+0x12/0x50
       ? perf_mux_hrtimer_restart+0x40/0xb0
       intel_pmu_disable_event+0xae/0x100
       ? intel_pmu_disable_event+0xae/0x100
       x86_pmu_stop+0x7a/0xb0
       x86_pmu_del+0x57/0x120
       event_sched_out.isra.101+0x83/0x180
       group_sched_out.part.103+0x57/0xe0
       ctx_sched_out+0x188/0x240
       ctx_resched+0xa8/0xd0
       __perf_event_enable+0x193/0x1e0
       event_function+0x8e/0xc0
       remote_function+0x41/0x50
       flush_smp_call_function_queue+0x68/0x100
       generic_smp_call_function_single_interrupt+0x13/0x30
       smp_call_function_single_interrupt+0x3e/0xe0
       call_function_single_interrupt+0xf/0x20
       </IRQ>
    
    The reason is that while event init code does several checks
    for BTS events and prevents several unwanted config bits for
    BTS event (like precise_ip), the PERF_EVENT_IOC_PERIOD allows
    to create BTS event without those checks being done.
    
    Following sequence will cause the crash:
    
    If we create an 'almost' BTS event with precise_ip and callchains,
    and it into a BTS event it will crash the perf_prepare_sample()
    function because precise_ip events are expected to come
    in with callchain data initialized, but that's not the
    case for intel_pmu_drain_bts_buffer() caller.
    
    Adding a check_period callback to be called before the period
    is changed via PERF_EVENT_IOC_PERIOD. It will deny the change
    if the event would become BTS. Plus adding also the limit_period
    check as well.
    
    Reported-by: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Acked-by: Peter Zijlstra <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20190204123532.GA4794@krava
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16:
     - Don't call limit_period operation, which doesn't exist and isn't needed here
     - Add the intel_pmu_has_bts() function, which didn't previously exist here
     - Adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1e84b671e936dd311913e2a499cb7b24dbf76760
Author: Sergei Trofimovich <slyfox@gentoo.org>
Date:   Mon Dec 31 11:53:55 2018 +0000

    alpha: fix page fault handling for r16-r18 targets
    
    commit 491af60ffb848b59e82f7c9145833222e0bf27a5 upstream.
    
    Fix page fault handling code to fixup r16-r18 registers.
    Before the patch code had off-by-two registers bug.
    This bug caused overwriting of ps,pc,gp registers instead
    of fixing intended r16,r17,r18 (see `struct pt_regs`).
    
    More details:
    
    Initially Dmitry noticed a kernel bug as a failure
    on strace test suite. Test passes unmapped userspace
    pointer to io_submit:
    
    ```c
        #include <err.h>
        #include <unistd.h>
        #include <sys/mman.h>
        #include <asm/unistd.h>
        int main(void)
        {
            unsigned long ctx = 0;
            if (syscall(__NR_io_setup, 1, &ctx))
                err(1, "io_setup");
            const size_t page_size = sysconf(_SC_PAGESIZE);
            const size_t size = page_size * 2;
            void *ptr = mmap(NULL, size, PROT_READ | PROT_WRITE,
                             MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
            if (MAP_FAILED == ptr)
                err(1, "mmap(%zu)", size);
            if (munmap(ptr, size))
                err(1, "munmap");
            syscall(__NR_io_submit, ctx, 1, ptr + page_size);
            syscall(__NR_io_destroy, ctx);
            return 0;
        }
    ```
    
    Running this test causes kernel to crash when handling page fault:
    
    ```
        Unable to handle kernel paging request at virtual address ffffffffffff9468
        CPU 3
        aio(26027): Oops 0
        pc = [<fffffc00004eddf8>]  ra = [<fffffc00004edd5c>]  ps = 0000    Not tainted
        pc is at sys_io_submit+0x108/0x200
        ra is at sys_io_submit+0x6c/0x200
        v0 = fffffc00c58e6300  t0 = fffffffffffffff2  t1 = 000002000025e000
        t2 = fffffc01f159fef8  t3 = fffffc0001009640  t4 = fffffc0000e0f6e0
        t5 = 0000020001002e9e  t6 = 4c41564e49452031  t7 = fffffc01f159c000
        s0 = 0000000000000002  s1 = 000002000025e000  s2 = 0000000000000000
        s3 = 0000000000000000  s4 = 0000000000000000  s5 = fffffffffffffff2
        s6 = fffffc00c58e6300
        a0 = fffffc00c58e6300  a1 = 0000000000000000  a2 = 000002000025e000
        a3 = 00000200001ac260  a4 = 00000200001ac1e8  a5 = 0000000000000001
        t8 = 0000000000000008  t9 = 000000011f8bce30  t10= 00000200001ac440
        t11= 0000000000000000  pv = fffffc00006fd320  at = 0000000000000000
        gp = 0000000000000000  sp = 00000000265fd174
        Disabling lock debugging due to kernel taint
        Trace:
        [<fffffc0000311404>] entSys+0xa4/0xc0
    ```
    
    Here `gp` has invalid value. `gp is s overwritten by a fixup for the
    following page fault handler in `io_submit` syscall handler:
    
    ```
        __se_sys_io_submit
        ...
            ldq     a1,0(t1)
            bne     t0,4280 <__se_sys_io_submit+0x180>
    ```
    
    After a page fault `t0` should contain -EFALUT and `a1` is 0.
    Instead `gp` was overwritten in place of `a1`.
    
    This happens due to a off-by-two bug in `dpf_reg()` for `r16-r18`
    (aka `a0-a2`).
    
    I think the bug went unnoticed for a long time as `gp` is one
    of scratch registers. Any kernel function call would re-calculate `gp`.
    
    Dmitry tracked down the bug origin back to 2.1.32 kernel version
    where trap_a{0,1,2} fields were inserted into struct pt_regs.
    And even before that `dpf_reg()` contained off-by-one error.
    
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: linux-alpha@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Reported-and-reviewed-by: "Dmitry V. Levin" <ldv@altlinux.org>
    Bug: https://bugs.gentoo.org/672040
    Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
    Signed-off-by: Matt Turner <mattst88@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 71c298c5d786f7d0462f4aaf0201c87ab70fc26a
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Feb 7 14:13:18 2019 +0100

    vsock: cope with memory allocation failure at socket creation time
    
    commit 225d9464268599a5b4d094d02ec17808e44c7553 upstream.
    
    In the unlikely event that the kmalloc call in vmci_transport_socket_init()
    fails, we end-up calling vmci_transport_destruct() with a NULL vmci_trans()
    and oopsing.
    
    This change addresses the above explicitly checking for zero vmci_trans()
    at destruction time.
    
    Reported-by: Xiumei Mu <xmu@redhat.com>
    Fixes: d021c344051a ("VSOCK: Introduce VM Sockets")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: Jorgen Hansen <jhansen@vmware.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1d68d8113e00708df56f7d5c49393ca2175e6296
Author: Matti Kurkela <Matti.Kurkela@iki.fi>
Date:   Thu Feb 7 23:49:23 2019 -0800

    Input: elantech - enable 3rd button support on Fujitsu CELSIUS H780
    
    commit e8b22d0a329f0fb5c7ef95406872d268f01ee3b1 upstream.
    
    Like Fujitsu CELSIUS H760, the H780 also has a three-button Elantech
    touchpad, but the driver needs to be told so to enable the middle touchpad
    button.
    
    The elantech_dmi_force_crc_enabled quirk was not necessary with the H780.
    
    Also document the fw_version and caps values detected for both H760 and
    H780 models.
    
    Signed-off-by: Matti Kurkela <Matti.Kurkela@iki.fi>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d35f8e4f0b6d47c7fd239a28dd40bf276dca833b
Author: Matti Kurkela <Matti.Kurkela@iki.fi>
Date:   Mon Oct 3 16:48:17 2016 -0700

    Input: elantech - force needed quirks on Fujitsu H760
    
    commit f9a703a54d16ba2470391c4b12236ee56591d50c upstream.
    
    Just like Fujitsu CELSIUS H730, the H760 also has an Elantech touchpad with
    the same quirks. Without this patch, the touchpad is useless out-of-the-box
    as the mouse pointer won't move.
    
    This patch makes the driver aware of both the crc_enabled=1 requirement and
    the middle button, making the touchpad fully functional out-of-the-box.
    
    Signed-off-by: Matti Kurkela <Matti.Kurkela@iki.fi>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d7dea1da68bfcf4b52fe33f0cc3e676c6c459f8f
Author: Manuel Reinhardt <manuel.rhdt@gmail.com>
Date:   Thu Jan 31 15:32:35 2019 +0100

    ALSA: usb-audio: Fix implicit fb endpoint setup by quirk
    
    commit 2bc16b9f3223d049b57202ee702fcb5b9b507019 upstream.
    
    The commit a60945fd08e4 ("ALSA: usb-audio: move implicit fb quirks to
    separate function") introduced an error in the handling of quirks for
    implicit feedback endpoints. This commit fixes this.
    
    If a quirk successfully sets up an implicit feedback endpoint, usb-audio
    no longer tries to find the implicit fb endpoint itself.
    
    Fixes: a60945fd08e4 ("ALSA: usb-audio: move implicit fb quirks to separate function")
    Signed-off-by: Manuel Reinhardt <manuel.rhdt@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 869b83cb1c076d804679e08065626743d0b91e9d
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Thu Feb 7 18:36:11 2019 +0800

    sit: check if IPv6 enabled before calling ip6_err_gen_icmpv6_unreach()
    
    commit 173656accaf583698bac3f9e269884ba60d51ef4 upstream.
    
    If we disabled IPv6 from the kernel command line (ipv6.disable=1), we should
    not call ip6_err_gen_icmpv6_unreach(). This:
    
      ip link add sit1 type sit local 192.0.2.1 remote 192.0.2.2 ttl 1
      ip link set sit1 up
      ip addr add 198.51.100.1/24 dev sit1
      ping 198.51.100.2
    
    if IPv6 is disabled at boot time, will crash the kernel.
    
    v2: there's no need to use in6_dev_get(), use __in6_dev_get() instead,
        as we only need to check that idev exists and we are under
        rcu_read_lock() (from netif_receive_skb_internal()).
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Fixes: ca15a078bd90 ("sit: generate icmpv6 error when receiving icmpv4 error")
    Cc: Oussama Ghorbel <ghorbel@pivasoftware.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1e29ce40e4f470233618e6e931e4d9be21ae6c8f
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Feb 6 17:51:47 2019 -0600

    signal: Better detection of synchronous signals
    
    commit 7146db3317c67b517258cb5e1b08af387da0618b upstream.
    
    Recently syzkaller was able to create unkillablle processes by
    creating a timer that is delivered as a thread local signal on SIGHUP,
    and receiving SIGHUP SA_NODEFERER.  Ultimately causing a loop failing
    to deliver SIGHUP but always trying.
    
    When the stack overflows delivery of SIGHUP fails and force_sigsegv is
    called.  Unfortunately because SIGSEGV is numerically higher than
    SIGHUP next_signal tries again to deliver a SIGHUP.
    
    From a quality of implementation standpoint attempting to deliver the
    timer SIGHUP signal is wrong.  We should attempt to deliver the
    synchronous SIGSEGV signal we just forced.
    
    We can make that happening in a fairly straight forward manner by
    instead of just looking at the signal number we also look at the
    si_code.  In particular for exceptions (aka synchronous signals) the
    si_code is always greater than 0.
    
    That still has the potential to pick up a number of asynchronous
    signals as in a few cases the same si_codes that are used
    for synchronous signals are also used for asynchronous signals,
    and SI_KERNEL is also included in the list of possible si_codes.
    
    Still the heuristic is much better and timer signals are definitely
    excluded.  Which is enough to prevent all known ways for someone
    sending a process signals fast enough to cause unexpected and
    arguably incorrect behavior.
    
    Fixes: a27341cd5fcb ("Prioritize synchronous signals over 'normal' signals")
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    [bwh: Backported to 3.16: s/kernel_siginfo_t/siginfo_t/]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a974e7702782b128fb090b3acfde202549023e6b
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Feb 6 18:39:40 2019 -0600

    signal: Always notice exiting tasks
    
    commit 35634ffa1751b6efd8cf75010b509dcb0263e29b upstream.
    
    Recently syzkaller was able to create unkillablle processes by
    creating a timer that is delivered as a thread local signal on SIGHUP,
    and receiving SIGHUP SA_NODEFERER.  Ultimately causing a loop
    failing to deliver SIGHUP but always trying.
    
    Upon examination it turns out part of the problem is actually most of
    the solution.  Since 2.5 signal delivery has found all fatal signals,
    marked the signal group for death, and queued SIGKILL in every threads
    thread queue relying on signal->group_exit_code to preserve the
    information of which was the actual fatal signal.
    
    The conversion of all fatal signals to SIGKILL results in the
    synchronous signal heuristic in next_signal kicking in and preferring
    SIGHUP to SIGKILL.  Which is especially problematic as all
    fatal signals have already been transformed into SIGKILL.
    
    Instead of dequeueing signals and depending upon SIGKILL to
    be the first signal dequeued, first test if the signal group
    has already been marked for death.  This guarantees that
    nothing in the signal queue can prevent a process that needs
    to exit from exiting.
    
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Ref: ebf5ebe31d2c ("[PATCH] signal-fixes-2.5.59-A4")
    History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3f525692356176053cc30c0a5174a7876cc14ac0
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 15:26:57 2013 +0200

    Rip out get_signal_to_deliver()
    
    commit 828b1f65d23cf8a68795739f6dd08fc8abd9ee64 upstream.
    
    Now we can turn get_signal() to the main function.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 11a40009fd54deb5cef6c878c3ece8473359a043
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Jul 13 13:36:04 2014 +0200

    Clean up signal_delivered()
    
    commit 10b1c7ac8bfed429cf3dcb0225482c8dc1485d8e upstream.
    
     - Pass a ksignal struct to it
     - Remove unused regs parameter
     - Make it private as it's nowhere outside of kernel/signal.c is used
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ed8ddf653ebd80d2beb6d74d2ba0b8c64c69414b
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 15:37:19 2013 +0200

    tracehook_signal_handler: Remove sig, info, ka and regs
    
    commit df5601f9c3d831b4c478b004a1ed90a18643adbe upstream.
    
    These parameters are nowhere used, so we can remove them.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ea3e39312dc447db0521d5104c2c112784ca71d1
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 15:09:23 2013 +0200

    xtensa: Use get_signal() signal_setup_done()
    
    commit 5bdb7611eb7987102f3c0fef1220dd64b6fbd9fd upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a67c63342aa61ccff2e56286673f140d7ef4f227
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sun Aug 31 11:14:26 2014 -0700

    unicore32: Fix build error
    
    commit ca98565a6182a960cd857d7546267a0775154eb8 upstream.
    
    unicore32 builds fail with
    
      arch/unicore32/kernel/signal.c: In function ‘setup_frame’:
      arch/unicore32/kernel/signal.c:257: error: ‘usig’ undeclared (first use in this function)
      arch/unicore32/kernel/signal.c:279: error: ‘usig’ undeclared (first use in this function)
      arch/unicore32/kernel/signal.c: In function ‘handle_signal’:
      arch/unicore32/kernel/signal.c:306: warning: unused variable ‘tsk’
      arch/unicore32/kernel/signal.c: In function ‘do_signal’:
      arch/unicore32/kernel/signal.c:376: error: implicit declaration of function ‘get_signsl’
      make[1]: *** [arch/unicore32/kernel/signal.o] Error 1
      make: *** [arch/unicore32/kernel/signal.o] Error 2
    
    Bisect points to commit 649671c90eaf ("unicore32: Use get_signal()
    signal_setup_done()").
    
    This code never even compiled.  Reverting the patch does not work, since
    previously used functions no longer exist, so try to fix it up.  Compile
    tested only.
    
    Fixes: 649671c90eaf ("unicore32: Use get_signal() signal_setup_done()")
    Cc: Richard Weinberger <richard@nod.at>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3844986d61f866ac3ec2df1f9b782f85a0990e1f
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 15:05:57 2013 +0200

    unicore32: Use get_signal() signal_setup_done()
    
    commit 649671c90eaf3cbbd0cd03460b6a92c0b674a32e upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a09807cb8b1e81e8cee28b08738252fc3546d307
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Oct 6 21:57:10 2013 +0200

    um: Use get_signal() signal_setup_done()
    
    commit 307627eebbb0bc41b21e74d78b932362a6c1b38d upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6d0e6b372c663cd43985d1215554db7e2ff5a9a0
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 15:01:08 2013 +0200

    tile: Use get_signal() signal_setup_done()
    
    commit b3707c7ed013d36752272ca2f9ed20dc8aed92e4 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Acked-by: Chris Metcalf <cmetcalf@tilera.com>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f8df4b45007f4345e11152299e5c1106fc48f019
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 14:51:14 2013 +0200

    sh: Use get_signal() signal_setup_done()
    
    commit b46e848768acc458ba94feef162b8901592dbb9c upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 205b9f77d440e592ca7fc2c1cbef2f5fd23b2e13
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 14:37:50 2013 +0200

    score: Use get_signal() signal_setup_done()
    
    commit 2bb12b773feb3e792145961e57ab356e6134d4a5 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Acked-by: Lennox Wu <lennox.wu@gmail.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b41a8b55ec3c24717c9b63b451e926d3c4d74508
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Jul 13 22:21:03 2014 +0200

    s390: Use get_signal() signal_setup_done()
    
    commit 067bf2d4d3a7aedc5982f6a58716054e5004b801 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 280b0eaedf3b8669f8bc70c7d2bf54f629a28d67
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date:   Thu Aug 31 21:55:57 2017 +0530

    powerpc/signal: Properly handle return value from uprobe_deny_signal()
    
    commit 46725b17f1c6c815a41429259b3f070c01e71bc1 upstream.
    
    When a uprobe is installed on an instruction that we currently do not
    emulate, we copy the instruction into a xol buffer and single step
    that instruction. If that instruction generates a fault, we abort the
    single stepping before invoking the signal handler. Once the signal
    handler is done, the uprobe trap is hit again since the instruction is
    retried and the process repeats.
    
    We use uprobe_deny_signal() to detect if the xol instruction triggered
    a signal. If so, we clear TIF_SIGPENDING and set TIF_UPROBE so that the
    signal is not handled until after the single stepping is aborted. In
    this case, uprobe_deny_signal() returns true and get_signal() ends up
    returning 0. However, in do_signal(), we are not looking at the return
    value, but depending on ksig.sig for further action, all with an
    uninitialized ksig that is not touched in this scenario. Fix the same
    by initializing ksig.sig to 0.
    
    Fixes: 129b69df9c90 ("powerpc: Use get_signal() signal_setup_done()")
    Reported-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9aea4b5a49d9c5aad0ae85ec2f013a3a8d30d783
Author: Richard Weinberger <richard@nod.at>
Date:   Wed Mar 5 16:25:55 2014 +0100

    powerpc: Use sigsp()
    
    commit 059ade650ae57cfd371af690fdba887af04aded8 upstream.
    
    Use sigsp() instead of the open coded variant.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9e2250d8e9c0ce36c5bd2fb00183252a688c0d3e
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Mar 2 14:46:11 2014 +0100

    powerpc: Use get_signal() signal_setup_done()
    
    commit 129b69df9c9074750245fca8aa92df5cc1a86ef4 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    This inverts also the return codes of setup_*frame() to follow the
    kernel convention.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3640fdce70b5ed7702c3bb5345699ccc7f0dfc75
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 14:34:10 2013 +0200

    parisc: Use get_signal() signal_setup_done()
    
    commit e4dc894b61776733629b24507031dd46f5ba5efc upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Acked-by: Helge Deller <deller@gmx.de>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 82255f713729df86dc08da81723e492d36f6ca2f
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 14:22:50 2013 +0200

    mn10300: Use get_signal() signal_setup_done()
    
    commit 8b166553a9aaf39774bc22f5e93c965584303929 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bf39bc9dc397097dc2b38b5c637daafc27a24b5f
Author: Richard Weinberger <richard@nod.at>
Date:   Wed Mar 5 15:35:41 2014 +0100

    mips: Use sigsp()
    
    commit 7c4f563507c33ca97dcfbd62dba1e9232575d499 upstream.
    
    Use sigsp() instead of the open coded variant.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 967b5e86b5a678cb5fa7bec7e4b6bc511ed7dafc
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Oct 6 22:25:42 2013 +0200

    mips: Use get_signal() signal_setup_done()
    
    commit 81d103bf80678669c56658185e758fc3f9845d71 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b36b9730d178530c3b9e8297fb6e1ced88aa6fbe
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 14:14:38 2013 +0200

    microblaze: Use get_signal() signal_setup_done()
    
    commit 9c53c7ec14a5738ae3117d7d71b7abf630526c9f upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ece20dd87eae8d8ae87fe8a35540b22ed8297d8b
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 22:55:48 2013 +0200

    m68k: Use get_signal() signal_setup_done()
    
    commit 0d97500d393012690f3579056629bea0369e6554 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3e950c412574a725fa62e46c5ab54577f4860bb6
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 13:54:22 2013 +0200

    m32r: Use get_signal() signal_setup_done()
    
    commit 0f5bef660a7c3b030eb60ceb29e3b2d89f894f56 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6062ad89ccca9e16339849ffd04f051eacd5e7a6
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 23:07:51 2013 +0200

    ia64: Use get_signal() signal_setup_done()
    
    commit 98c20309b97fc30001adf643cf876125f334fd8a upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    This inverts also the return codes of force_sigsegv_info()
    and setup_frame() to follow the kernel convention.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c4905f654af9323e2ca008f71ca69ad40bf0c333
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 13:50:08 2013 +0200

    hexagon: Use get_signal() signal_setup_done()
    
    commit ac443624490f7033aefd06713e7761aee5977de3 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Acked-by: Richard Kuo <rkuo@codeaurora.org>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3af7c40a44884c911e0b2fd4d6adbfe44f3e45b2
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 13:46:11 2013 +0200

    frv: Use get_signal() signal_setup_done()
    
    commit 720f36b983224ac52b6acdd8b646ce30f6b38763 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 18b58d6b03acac668543ce22633ab3a9d9535b6a
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Oct 7 12:56:24 2013 +0200

    cris: Use get_signal() signal_setup_done()
    
    commit fa0197722eb7559a6a9733881bbb8d9e76364f33 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0ebefadc9064efbf55f99c35b1aeff393599654b
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Oct 6 23:09:48 2013 +0200

    c6x: Use get_signal() signal_setup_done()
    
    commit e19c025bc9a184ed9c5daf06ffb89abc81d1696a upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Tested-by: Mark Salter <msalter@redhat.com>
    Acked-by: Mark Salter <msalter@redhat.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7f94bf3099024574b18759d956b3cec90efe1c50
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Oct 6 23:06:08 2013 +0200

    blackfin: Use get_signal() signal_setup_done()
    
    commit 1270cff147a39f7da5b25225dca6ca3132ca6130 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Acked-by: Steven Miao <realmz6@gmail.com>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1024e19f3b4fe28df196e69e3a2d98a5fa6db04f
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Oct 6 23:00:56 2013 +0200

    avr32: Use get_signal() signal_setup_done()
    
    commit d809709a8845954a95c2ac86c13bd0dfd549c1ae upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 57925c615b3b75d49507c30517c6969707276c6d
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Oct 6 22:52:44 2013 +0200

    arm64: Use get_signal() signal_setup_done()
    
    commit 00554fa4f80279db92f82c4f52c8ae72711f173e upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2bcb8d6c166361e946c278821860f074edd4ecc1
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Oct 6 22:42:38 2013 +0200

    arc: Use get_signal() signal_setup_done()
    
    commit f6dd2a3f1f8d8df640cfa2d60f85c0b818af1593 upstream.
    
    Use the more generic functions get_signal() signal_setup_done()
    for signal delivery.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Acked-by: Vineet Gupta <vgupta@synopsys.com>
    [bwh: Backported to 3.16 as dependency of commit 35634ffa1751
     "signal: Always notice exiting tasks"
     - Adjust to apply after "ARC: signal handling robustify"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e42fea037ce7f76d562f6490db458297e123fbdb
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Feb 3 10:02:07 2019 +0100

    libata: Add NOLPM quirk for SAMSUNG MZ7TE512HMHP-000L1 SSD
    
    commit dd957493baa586f1431490f97f9c7c45eaf8ab10 upstream.
    
    We've received a bugreport that using LPM with a SAMSUNG
    MZ7TE512HMHP-000L1 SSD leads to system instability, we already have
    a quirk for the MZ7TD256HAFV-000L9, which is also a Samsun EVO 840 /
    PM851 OEM model, so it seems some of these models have a LPM issue.
    
    This commits adds a NOLPM quirk for the model string from the new
    bugeport, to avoid the reported stability issues.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1571330
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ff62b559b40786f5e47732deeafa6f8742da586d
Author: Jonathan Bakker <xc-racer2@live.ca>
Date:   Wed Feb 6 10:45:37 2019 -0800

    Input: bma150 - register input device after setting private data
    
    commit 90cc55f067f6ca0e64e5e52883ece47d8af7b67b upstream.
    
    Otherwise we introduce a race condition where userspace can request input
    before we're ready leading to null pointer dereference such as
    
    input: bma150 as /devices/platform/i2c-gpio-2/i2c-5/5-0038/input/input3
    Unable to handle kernel NULL pointer dereference at virtual address 00000018
    pgd = (ptrval)
    [00000018] *pgd=55dac831, *pte=00000000, *ppte=00000000
    Internal error: Oops: 17 [#1] PREEMPT ARM
    Modules linked in: bma150 input_polldev [last unloaded: bma150]
    CPU: 0 PID: 2870 Comm: accelerometer Not tainted 5.0.0-rc3-dirty #46
    Hardware name: Samsung S5PC110/S5PV210-based board
    PC is at input_event+0x8/0x60
    LR is at bma150_report_xyz+0x9c/0xe0 [bma150]
    pc : [<80450f70>]    lr : [<7f0a614c>]    psr: 800d0013
    sp : a4c1fd78  ip : 00000081  fp : 00020000
    r10: 00000000  r9 : a5e2944c  r8 : a7455000
    r7 : 00000016  r6 : 00000101  r5 : a7617940  r4 : 80909048
    r3 : fffffff2  r2 : 00000000  r1 : 00000003  r0 : 00000000
    Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    Control: 10c5387d  Table: 54e34019  DAC: 00000051
    Process accelerometer (pid: 2870, stack limit = 0x(ptrval))
    Stackck: (0xa4c1fd78 to 0xa4c20000)
    fd60:                                                       fffffff3 fc813f6c
    fd80: 40410581 d7530ce3 a5e2817c a7617f00 a5e29404 a5e2817c 00000000 7f008324
    fda0: a5e28000 8044f59c a5fdd9d0 a5e2945c a46a4a00 a5e29668 a7455000 80454f10
    fdc0: 80909048 a5e29668 a5fdd9d0 a46a4a00 806316d0 00000000 a46a4a00 801df5f0
    fde0: 00000000 d7530ce3 a4c1fec0 a46a4a00 00000000 a5fdd9d0 a46a4a08 801df53c
    fe00: 00000000 801d74bc a4c1fec0 00000000 a4c1ff70 00000000 a7038da8 00000000
    fe20: a46a4a00 801e91fc a411bbe0 801f2e88 00000004 00000000 80909048 00000041
    fe40: 00000000 00020000 00000000 dead4ead a6a88da0 00000000 ffffe000 806fcae8
    fe60: a4c1fec8 00000000 80909048 00000002 a5fdd9d0 a7660110 a411bab0 00000001
    fe80: dead4ead ffffffff ffffffff a4c1fe8c a4c1fe8c d7530ce3 20000013 80909048
    fea0: 80909048 a4c1ff70 00000001 fffff000 a4c1e000 00000005 00026038 801eabd8
    fec0: a7660110 a411bab0 b9394901 00000006 a696201b 76fb3000 00000000 a7039720
    fee0: a5fdd9d0 00000101 00000002 00000096 00000000 00000000 00000000 a4c1ff00
    ff00: a6b310f4 805cb174 a6b310f4 00000010 00000fe0 00000010 a4c1e000 d7530ce3
    ff20: 00000003 a5f41400 a5f41424 00000000 a6962000 00000000 00000003 00000002
    ff40: ffffff9c 000a0000 80909048 d7530ce3 a6962000 00000003 80909048 ffffff9c
    ff60: a6962000 801d890c 00000000 00000000 00020000 a7590000 00000004 00000100
    ff80: 00000001 d7530ce3 000288b8 00026320 000288b8 00000005 80101204 a4c1e000
    ffa0: 00000005 80101000 000288b8 00026320 000288b8 000a0000 00000000 00000000
    ffc0: 000288b8 00026320 000288b8 00000005 7eef3bac 000264e8 00028ad8 00026038
    ffe0: 00000005 7eef3300 76f76e91 76f78546 800d0030 000288b8 00000000 00000000
    [<80450f70>] (input_event) from [<a5e2817c>] (0xa5e2817c)
    Code: e1a08148 eaffffa8 e351001f 812fff1e (e590c018)
    ---[ end trace 1c691ee85f2ff243 ]---
    
    Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
    Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 346d2dfe192155723f6ad08724d9443177fe755f
Author: Martin Kepplinger <martin.kepplinger@ginzinger.com>
Date:   Tue Feb 5 16:52:51 2019 +0100

    mtd: rawnand: gpmi: fix MX28 bus master lockup problem
    
    commit d5d27fd9826b59979b184ec288e4812abac0e988 upstream.
    
    Disable BCH soft reset according to MX23 erratum #2847 ("BCH soft
    reset may cause bus master lock up") for MX28 too. It has the same
    problem.
    
    Observed problem: once per 100,000+ MX28 reboots NAND read failed on
    DMA timeout errors:
    [    1.770823] UBI: attaching mtd3 to ubi0
    [    2.768088] gpmi_nand: DMA timeout, last DMA :1
    [    3.958087] gpmi_nand: BCH timeout, last DMA :1
    [    4.156033] gpmi_nand: Error in ECC-based read: -110
    [    4.161136] UBI warning: ubi_io_read: error -110 while reading 64
    bytes from PEB 0:0, read only 0 bytes, retry
    [    4.171283] step 1 error
    [    4.173846] gpmi_nand: Chip: 0, Error -1
    
    Without BCH soft reset we successfully executed 1,000,000 MX28 reboots.
    
    I have a quote from NXP regarding this problem, from July 18th 2016:
    
    "As the i.MX23 and i.MX28 are of the same generation, they share many
    characteristics. Unfortunately, also the erratas may be shared.
    In case of the documented erratas and the workarounds, you can also
    apply the workaround solution of one device on the other one. This have
    been reported, but I’m afraid that there are not an estimated date for
    updating the Errata documents.
    Please accept our apologies for any inconveniences this may cause."
    
    Fixes: 6f2a6a52560a ("mtd: nand: gpmi: reset BCH earlier, too, to avoid NAND startup problems")
    Signed-off-by: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
    Signed-off-by: Martin Kepplinger <martin.kepplinger@ginzinger.com>
    Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Acked-by: Han Xu <han.xu@nxp.com>
    Signed-off-by: Boris Brezillon <bbrezillon@kernel.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ab2e22208493f5ed41fa12f130e114e4dcf56788
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Tue Feb 5 16:29:40 2019 +0000

    ALSA: compress: Fix stop handling on compressed capture streams
    
    commit 4f2ab5e1d13d6aa77c55f4914659784efd776eb4 upstream.
    
    It is normal user behaviour to start, stop, then start a stream
    again without closing it. Currently this works for compressed
    playback streams but not capture ones.
    
    The states on a compressed capture stream go directly from OPEN to
    PREPARED, unlike a playback stream which moves to SETUP and waits
    for a write of data before moving to PREPARED. Currently however,
    when a stop is sent the state is set to SETUP for both types of
    streams. This leaves a capture stream in the situation where a new
    start can't be sent as that requires the state to be PREPARED and
    a new set_params can't be sent as that requires the state to be
    OPEN. The only option being to close the stream, and then reopen.
    
    Correct this issues by allowing snd_compr_drain_notify to set the
    state depending on the stream direction, as we already do in
    set_params.
    
    Fixes: 49bb6402f1aa ("ALSA: compress_core: Add support for capture streams")
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5d482d24437ff7f73cc35a36575bfdf2945226ff
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Mon Jan 28 10:31:33 2019 +0100

    drm/vmwgfx: Fix setting of dma masks
    
    commit 4cbfa1e6c09e98450aab3240e5119b0ab2c9795b upstream.
    
    Previously we set only the dma mask and not the coherent mask. Fix that.
    Also, for clarity, make sure both are initially set to 64 bits.
    
    Fixes: 0d00c488f3de: ("drm/vmwgfx: Fix the driver for large dma addresses")
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Deepak Rawat <drawat@vmware.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fa830f1991405cff90c5ad8cdd3cdb74e741b397
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Thu Jan 31 10:55:37 2019 +0100

    drm/vmwgfx: Return error code from vmw_execbuf_copy_fence_user
    
    commit 728354c005c36eaf44b6e5552372b67e60d17f56 upstream.
    
    The function was unconditionally returning 0, and a caller would have to
    rely on the returned fence pointer being NULL to detect errors. However,
    the function vmw_execbuf_copy_fence_user() would expect a non-zero error
    code in that case and would BUG otherwise.
    
    So make sure we return a proper non-zero error code if the fence pointer
    returned is NULL.
    
    Fixes: ae2a104058e2: ("vmwgfx: Implement fence objects")
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Deepak Rawat <drawat@vmware.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 17bbfb3a56bba622dd38ccdb60960f28ac13083f
Author: Rundong Ge <rdong.ge@gmail.com>
Date:   Sat Feb 2 14:29:35 2019 +0000

    net: dsa: slave: Don't propagate flag changes on down slave interfaces
    
    commit 17ab4f61b8cd6f9c38e9d0b935d86d73b5d0d2b5 upstream.
    
    The unbalance of master's promiscuity or allmulti will happen after ifdown
    and ifup a slave interface which is in a bridge.
    
    When we ifdown a slave interface , both the 'dsa_slave_close' and
    'dsa_slave_change_rx_flags' will clear the master's flags. The flags
    of master will be decrease twice.
    In the other hand, if we ifup the slave interface again, since the
    slave's flags were cleared the 'dsa_slave_open' won't set the master's
    flag, only 'dsa_slave_change_rx_flags' that triggered by 'br_add_if'
    will set the master's flags. The flags of master is increase once.
    
    Only propagating flag changes when a slave interface is up makes
    sure this does not happen. The 'vlan_dev_change_rx_flags' had the
    same problem and was fixed, and changes here follows that fix.
    
    Fixes: 91da11f870f0 ("net: Distributed Switch Architecture protocol support")
    Signed-off-by: Rundong Ge <rdong.ge@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8931fadeb9f881932864d0a662698ea6adb9ad3f
Author: Jun-Ru Chang <jrjang@realtek.com>
Date:   Tue Jan 29 11:56:07 2019 +0800

    MIPS: Remove function size check in get_frame_info()
    
    commit 2b424cfc69728224fcb5fad138ea7260728e0901 upstream.
    
    Patch (b6c7a324df37b "MIPS: Fix get_frame_info() handling of
    microMIPS function size.") introduces additional function size
    check for microMIPS by only checking insn between ip and ip + func_size.
    However, func_size in get_frame_info() is always 0 if KALLSYMS is not
    enabled. This causes get_frame_info() to return immediately without
    calculating correct frame_size, which in turn causes "Can't analyze
    schedule() prologue" warning messages at boot time.
    
    This patch removes func_size check, and let the frame_size check run
    up to 128 insns for both MIPS and microMIPS.
    
    Signed-off-by: Jun-Ru Chang <jrjang@realtek.com>
    Signed-off-by: Tony Wu <tonywu@realtek.com>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Fixes: b6c7a324df37b ("MIPS: Fix get_frame_info() handling of microMIPS function size.")
    Cc: <ralf@linux-mips.org>
    Cc: <jhogan@kernel.org>
    Cc: <macro@mips.com>
    Cc: <yamada.masahiro@socionext.com>
    Cc: <peterz@infradead.org>
    Cc: <mingo@kernel.org>
    Cc: <linux-mips@vger.kernel.org>
    Cc: <linux-kernel@vger.kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4bdd0b26261a16a93c5d83c4bb84d4b071ebb52f
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Mon Feb 4 17:40:09 2019 +0100

    s390/qeth: conclude all event processing before offlining a card
    
    commit c0a2e4d10d9366ada133a8ae4ff2f32397f8b15b upstream.
    
    Work for Bridgeport events is currently placed on a driver-wide
    workqueue. If the card is removed and freed while any such work is still
    active, this causes a use-after-free.
    So put the events on a per-card queue, where we can control their
    lifetime. As we also don't want stale events to last beyond an
    offline & online cycle, flush this queue when setting the card offline.
    
    Fixes: b4d72c08b358 ("qeth: bridgeport support - basic control")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Add gdev parameter to qeth_alloc_card(), as done upstream by commit
       121ca39aa558 "s390/qeth: uninstall IRQ handler on device removal"
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 84e4dff779d4cf87aa4219ccdd1e002f4f3fa817
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Mon Feb 4 17:40:08 2019 +0100

    s390/qeth: cancel close_dev work before removing a card
    
    commit c2780c1a3fb724560b1d44f7976e0de17bf153c7 upstream.
    
    A card's close_dev work is scheduled on a driver-wide workqueue. If the
    card is removed and freed while the work is still active, this causes a
    use-after-free.
    So make sure that the work is completed before freeing the card.
    
    Fixes: 0f54761d167f ("qeth: Support VEPA mode")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit faffccc0c136ed063913a1ce85ffb1c7998c0273
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Mon Feb 4 17:40:07 2019 +0100

    s390/qeth: fix use-after-free in error path
    
    commit afa0c5904ba16d59b0454f7ee4c807dae350f432 upstream.
    
    The error path in qeth_alloc_qdio_buffers() that takes care of
    cleaning up the Output Queues is buggy. It first frees the queue, but
    then calls qeth_clear_outq_buffers() with that very queue struct.
    
    Make the call to qeth_clear_outq_buffers() part of the free action
    (in the correct order), and while at it fix the naming of the helper.
    
    Fixes: 0da9581ddb0f ("qeth: exploit asynchronous delivery of storage blocks")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Reviewed-by: Alexandra Winter <wintera@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Add the qeth_free_output_queue() function, which didn't exist here
     - Keep using kfree() to free to free the qeth_qdio_out_q structure]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7cb105548916a212423bdda653e2e3c61b0b280a
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Tue Feb 19 16:36:39 2019 +0100

    perf test: Fix failure of 'evsel-tp-sched' test on s390
    
    commit 03d309711d687460d1345de8a0363f45b1c8cd11 upstream.
    
    Commit 489338a717a0 ("perf tests evsel-tp-sched: Fix bitwise operator")
    causes test case 14 "Parse sched tracepoints fields" to fail on s390.
    
    This test succeeds on x86.
    
    In fact this test now fails on all architectures with type char treated
    as type unsigned char.
    
    The root cause is the signed-ness of character arrays in the tracepoints
    sched_switch for structure members prev_comm and next_comm.
    
    On s390 the output of:
    
     [root@m35lp76 perf]# cat /sys/kernel/debug/tracing/events/sched/sched_switch/format
     name: sched_switch
     ID: 287
     format:
       field:unsigned short common_type; offset:0; size:2;  signed:0;
       ...
       field:char prev_comm[16]; offset:8; size:16; signed:0;
       ...
       field:char next_comm[16]; offset:40; size:16; signed:0;
    
    reveals the character arrays prev_comm and next_comm are per
    default unsigned char and have values in the range of 0..255.
    
    On x86 both fields are signed as this output shows:
     [root@f29]# cat /sys/kernel/debug/tracing/events/sched/sched_switch/format
     name: sched_switch
     ID: 287
     format:
       field:unsigned short common_type; offset:0; size:2;  signed:0;
       ...
       field:char prev_comm[16]; offset:8; size:16; signed:1;
       ...
       field:char next_comm[16]; offset:40; size:16; signed:1;
    
    and the character arrays prev_comm and next_comm are per default signed
    char and have values in the range of -1..127.  The implementation of
    type char is architecture specific.
    
    Since the character arrays in both tracepoints sched_switch and
    sched_wakeup should contain ascii characters, simply omit the check for
    signedness in the test case.
    
    Output before:
    
      [root@m35lp76 perf]# ./perf test -F 14
      14: Parse sched tracepoints fields                        :
      --- start ---
      sched:sched_switch: "prev_comm" signedness(0) is wrong, should be 1
      sched:sched_switch: "next_comm" signedness(0) is wrong, should be 1
      sched:sched_wakeup: "comm" signedness(0) is wrong, should be 1
      ---- end ----
      14: Parse sched tracepoints fields                        : FAILED!
      [root@m35lp76 perf]#
    
    Output after:
    
      [root@m35lp76 perf]# ./perf test -Fv 14
      14: Parse sched tracepoints fields                        :
      --- start ---
      ---- end ----
      Parse sched tracepoints fields: Ok
      [root@m35lp76 perf]#
    
    Fixes: 489338a717a0 ("perf tests evsel-tp-sched: Fix bitwise operator")
    
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Link: http://lkml.kernel.org/r/20190219153639.31267-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0f3a146d4a491c258ca7d41a83e5bcd95aa43659
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Jan 22 17:34:39 2019 -0600

    perf tests evsel-tp-sched: Fix bitwise operator
    
    commit 489338a717a0dfbbd5a3fabccf172b78f0ac9015 upstream.
    
    Notice that the use of the bitwise OR operator '|' always leads to true
    in this particular case, which seems a bit suspicious due to the context
    in which this expression is being used.
    
    Fix this by using bitwise AND operator '&' instead.
    
    This bug was detected with the help of Coccinelle.
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: 6a6cd11d4e57 ("perf test: Add test for the sched tracepoint format fields")
    Link: http://lkml.kernel.org/r/20190122233439.GA5868@embeddedor
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ede4f54078583ca9eb76794fedf5d52ae2b26939
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Jan 30 21:48:44 2019 +0200

    dmaengine: dmatest: Abort test in case of mapping error
    
    commit 6454368a804c4955ccd116236037536f81e5b1f1 upstream.
    
    In case of mapping error the DMA addresses are invalid and continuing
    will screw system memory or potentially something else.
    
    [  222.480310] dmatest: dma0chan7-copy0: summary 1 tests, 3 failures 6 iops 349 KB/s (0)
    ...
    [  240.912725] check: Corrupted low memory at 00000000c7c75ac9 (2940 phys) = 5656000000000000
    [  240.921998] check: Corrupted low memory at 000000005715a1cd (2948 phys) = 279f2aca5595ab2b
    [  240.931280] check: Corrupted low memory at 000000002f4024c0 (2950 phys) = 5e5624f349e793cf
    ...
    
    Abort any test if mapping failed.
    
    Fixes: 4076e755dbec ("dmatest: convert to dmaengine_unmap_data")
    Cc: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a093e4760b8da12f3906b4109f64bb56e88f1dab
Author: Alexandru Ardelean <alexandru.ardelean@analog.com>
Date:   Mon Oct 29 12:08:08 2018 +0200

    dmaengine: dmatest: unmap data on a single code-path when xfer done
    
    commit 0255200bd29afc320c6ea4c1adf8bdc13a9b3c15 upstream.
    
    After the DMA transfer is done, we don't need to call the un-mapping code
    in 3 places. One is enough.
    
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    [bwh: Backported to 3.16 as dependency of commit 6454368a804c
     "dmaengine: dmatest: Abort test in case of mapping error"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 25690127bc4845c60a266681d59c64fbdca7d115
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Thu Jan 10 14:27:45 2019 +0000

    perf/core: Don't WARN() for impossible ring-buffer sizes
    
    commit 9dff0aa95a324e262ffb03f425d00e4751f3294e upstream.
    
    The perf tool uses /proc/sys/kernel/perf_event_mlock_kb to determine how
    large its ringbuffer mmap should be. This can be configured to arbitrary
    values, which can be larger than the maximum possible allocation from
    kmalloc.
    
    When this is configured to a suitably large value (e.g. thanks to the
    perf fuzzer), attempting to use perf record triggers a WARN_ON_ONCE() in
    __alloc_pages_nodemask():
    
       WARNING: CPU: 2 PID: 5666 at mm/page_alloc.c:4511 __alloc_pages_nodemask+0x3f8/0xbc8
    
    Let's avoid this by checking that the requested allocation is possible
    before calling kzalloc.
    
    Reported-by: Julien Thierry <julien.thierry@arm.com>
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Julien Thierry <julien.thierry@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20190110142745.25495-1-mark.rutland@arm.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d8c1eaef1983b772e79beac75a5c00244a7e368e
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Sun Jan 27 06:53:14 2019 -0800

    perf/x86/intel/uncore: Add Node ID mask
    
    commit 9e63a7894fd302082cf3627fe90844421a6cbe7f upstream.
    
    Some PCI uncore PMUs cannot be registered on an 8-socket system (HPE
    Superdome Flex).
    
    To understand which Socket the PCI uncore PMUs belongs to, perf retrieves
    the local Node ID of the uncore device from CPUNODEID(0xC0) of the PCI
    configuration space, and the mapping between Socket ID and Node ID from
    GIDNIDMAP(0xD4). The Socket ID can be calculated accordingly.
    
    The local Node ID is only available at bit 2:0, but current code doesn't
    mask it. If a BIOS doesn't clear the rest of the bits, an incorrect Node ID
    will be fetched.
    
    Filter the Node ID by adding a mask.
    
    Reported-by: Song Liu <songliubraving@fb.com>
    Tested-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 7c94ee2e0917 ("perf/x86: Add Intel Nehalem and Sandy Bridge-EP uncore support")
    Link: https://lkml.kernel.org/r/1548600794-33162-1-git-send-email-kan.liang@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a6b0822d4dfaf20dc8be3e2b60b4fe797a7b08db
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed Jan 23 09:26:00 2019 +0100

    dmaengine: bcm2835: Fix abort of transactions
    
    commit 9e528c799d17a4ac37d788c81440b50377dd592d upstream.
    
    There are multiple issues with bcm2835_dma_abort() (which is called on
    termination of a transaction):
    
    * The algorithm to abort the transaction first pauses the channel by
      clearing the ACTIVE flag in the CS register, then waits for the PAUSED
      flag to clear.  Page 49 of the spec documents the latter as follows:
    
      "Indicates if the DMA is currently paused and not transferring data.
       This will occur if the active bit has been cleared [...]"
       https://www.raspberrypi.org/app/uploads/2012/02/BCM2835-ARM-Peripherals.pdf
    
      So the function is entering an infinite loop because it is waiting for
      PAUSED to clear which is always set due to the function having cleared
      the ACTIVE flag.  The only thing that's saving it from itself is the
      upper bound of 10000 loop iterations.
    
      The code comment says that the intention is to "wait for any current
      AXI transfer to complete", so the author probably wanted to check the
      WAITING_FOR_OUTSTANDING_WRITES flag instead.  Amend the function
      accordingly.
    
    * The CS register is only read at the beginning of the function.  It
      needs to be read again after pausing the channel and before checking
      for outstanding writes, otherwise writes which were issued between
      the register read at the beginning of the function and pausing the
      channel may not be waited for.
    
    * The function seeks to abort the transfer by writing 0 to the NEXTCONBK
      register and setting the ABORT and ACTIVE flags.  Thereby, the 0 in
      NEXTCONBK is sought to be loaded into the CONBLK_AD register.  However
      experimentation has shown this approach to not work:  The CONBLK_AD
      register remains the same as before and the CS register contains
      0x00000030 (PAUSED | DREQ_STOPS_DMA).  In other words, the control
      block is not aborted but merely paused and it will be resumed once the
      next DMA transaction is started.  That is absolutely not the desired
      behavior.
    
      A simpler approach is to set the channel's RESET flag instead.  This
      reliably zeroes the NEXTCONBK as well as the CS register.  It requires
      less code and only a single MMIO write.  This is also what popular
      user space DMA drivers do, e.g.:
      https://github.com/metachris/RPIO/blob/master/source/c_pwm/pwm.c
    
      Note that the spec is contradictory whether the NEXTCONBK register
      is writeable at all.  On the one hand, page 41 claims:
    
      "The value loaded into the NEXTCONBK register can be overwritten so
      that the linked list of Control Block data structures can be
      dynamically altered. However it is only safe to do this when the DMA
      is paused."
    
      On the other hand, page 40 specifies:
    
      "Only three registers in each channel's register set are directly
      writeable (CS, CONBLK_AD and DEBUG). The other registers (TI,
      SOURCE_AD, DEST_AD, TXFR_LEN, STRIDE & NEXTCONBK), are automatically
      loaded from a Control Block data structure held in external memory."
    
    Fixes: 96286b576690 ("dmaengine: Add support for BCM2835")
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Cc: Frank Pavlic <f.pavlic@kunbus.de>
    Cc: Martin Sperl <kernel@martin.sperl.org>
    Cc: Florian Meier <florian.meier@koalo.de>
    Cc: Clive Messer <clive.m.messer@gmail.com>
    Cc: Matthias Reichl <hias@horus.com>
    Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Acked-by: Florian Kauer <florian.kauer@koalo.de>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0f9571af8770f870319907e287160a5e01cb2739
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed Jan 23 09:26:00 2019 +0100

    dmaengine: bcm2835: Fix interrupt race on RT
    
    commit f7da7782aba92593f7b82f03d2409a1c5f4db91b upstream.
    
    If IRQ handlers are threaded (either because CONFIG_PREEMPT_RT_BASE is
    enabled or "threadirqs" was passed on the command line) and if system
    load is sufficiently high that wakeup latency of IRQ threads degrades,
    SPI DMA transactions on the BCM2835 occasionally break like this:
    
    ks8851 spi0.0: SPI transfer timed out
    bcm2835-dma 3f007000.dma: DMA transfer could not be terminated
    ks8851 spi0.0 eth2: ks8851_rdfifo: spi_sync() failed
    
    The root cause is an assumption made by the DMA driver which is
    documented in a code comment in bcm2835_dma_terminate_all():
    
    /*
     * Stop DMA activity: we assume the callback will not be called
     * after bcm_dma_abort() returns (even if it does, it will see
     * c->desc is NULL and exit.)
     */
    
    That assumption falls apart if the IRQ handler bcm2835_dma_callback() is
    threaded: A client may terminate a descriptor and issue a new one
    before the IRQ handler had a chance to run. In fact the IRQ handler may
    miss an *arbitrary* number of descriptors. The result is the following
    race condition:
    
    1. A descriptor finishes, its interrupt is deferred to the IRQ thread.
    2. A client calls dma_terminate_async() which sets channel->desc = NULL.
    3. The client issues a new descriptor. Because channel->desc is NULL,
       bcm2835_dma_issue_pending() immediately starts the descriptor.
    4. Finally the IRQ thread runs and writes BCM2835_DMA_INT to the CS
       register to acknowledge the interrupt. This clears the ACTIVE flag,
       so the newly issued descriptor is paused in the middle of the
       transaction. Because channel->desc is not NULL, the IRQ thread
       finalizes the descriptor and tries to start the next one.
    
    I see two possible solutions: The first is to call synchronize_irq()
    in bcm2835_dma_issue_pending() to wait until the IRQ thread has
    finished before issuing a new descriptor. The downside of this approach
    is unnecessary latency if clients desire rapidly terminating and
    re-issuing descriptors and don't have any use for an IRQ callback.
    (The SPI TX DMA channel is a case in point.)
    
    A better alternative is to make the IRQ thread recognize that it has
    missed descriptors and avoid finalizing the newly issued descriptor.
    So first of all, set the ACTIVE flag when acknowledging the interrupt.
    This keeps a newly issued descriptor running.
    
    If the descriptor was finished, the channel remains idle despite the
    ACTIVE flag being set. However the ACTIVE flag can then no longer be
    used to check whether the channel is idle, so instead check whether
    the register containing the current control block address is zero
    and finalize the current descriptor only if so.
    
    That way, there is no impact on latency and throughput if the client
    doesn't care for the interrupt: Only minimal additional overhead is
    introduced for non-cyclic descriptors as one further MMIO read is
    necessary per interrupt to check for idleness of the channel. Cyclic
    descriptors are sped up slightly by removing one MMIO write per
    interrupt.
    
    Fixes: 96286b576690 ("dmaengine: Add support for BCM2835")
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Cc: Frank Pavlic <f.pavlic@kunbus.de>
    Cc: Martin Sperl <kernel@martin.sperl.org>
    Cc: Florian Meier <florian.meier@koalo.de>
    Cc: Clive Messer <clive.m.messer@gmail.com>
    Cc: Matthias Reichl <hias@horus.com>
    Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Acked-by: Florian Kauer <florian.kauer@koalo.de>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a0f24dac6f41934c01903f00a9ed21a0572d0192
Author: Martin Sperl <kernel@martin.sperl.org>
Date:   Wed Mar 16 12:24:57 2016 -0700

    dmaengine: bcm2835: add additional defines for DMA-registers
    
    commit e42685d7a7d5afa6278561ffd85c475eae246be3 upstream.
    
    Add additional defines describing the DMA registers
    as well as adding some more documentation to those registers.
    
    Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    [bwh: Backported to 3.16 as dependency of commit 9e528c799d17
     "dmaengine: bcm2835: Fix abort of transactions"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 41602895d1302a23419d689476f863e4da8778f0
Author: Leonid Iziumtsev <leonid.iziumtsev@gmail.com>
Date:   Tue Jan 15 17:15:23 2019 +0000

    dmaengine: imx-dma: fix wrong callback invoke
    
    commit 341198eda723c8c1cddbb006a89ad9e362502ea2 upstream.
    
    Once the "ld_queue" list is not empty, next descriptor will migrate
    into "ld_active" list. The "desc" variable will be overwritten
    during that transition. And later the dmaengine_desc_get_callback_invoke()
    will use it as an argument. As result we invoke wrong callback.
    
    That behaviour was in place since:
    commit fcaaba6c7136 ("dmaengine: imx-dma: fix callback path in tasklet").
    But after commit 4cd13c21b207 ("softirq: Let ksoftirqd do its job")
    things got worse, since possible delay between tasklet_schedule()
    from DMA irq handler and actual tasklet function execution got bigger.
    And that gave more time for new DMA request to be submitted and
    to be put into "ld_queue" list.
    
    It has been noticed that DMA issue is causing problems for "mxc-mmc"
    driver. While stressing the system with heavy network traffic and
    writing/reading to/from sd card simultaneously the timeout may happen:
    
    10013000.sdhci: mxcmci_watchdog: read time out (status = 0x30004900)
    
    That often lead to file system corruption.
    
    Signed-off-by: Leonid Iziumtsev <leonid.iziumtsev@gmail.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 103d1a1c453c51d3c8cb0e7cba9ed40a5410b765
Author: David Hildenbrand <david@redhat.com>
Date:   Fri Feb 1 14:21:19 2019 -0800

    mm: migrate: don't rely on __PageMovable() of newpage after unlocking it
    
    commit e0a352fabce61f730341d119fbedf71ffdb8663f upstream.
    
    We had a race in the old balloon compaction code before b1123ea6d3b3
    ("mm: balloon: use general non-lru movable page feature") refactored it
    that became visible after backporting 195a8c43e93d ("virtio-balloon:
    deflate via a page list") without the refactoring.
    
    The bug existed from commit d6d86c0a7f8d ("mm/balloon_compaction:
    redesign ballooned pages management") till b1123ea6d3b3 ("mm: balloon:
    use general non-lru movable page feature").  d6d86c0a7f8d
    ("mm/balloon_compaction: redesign ballooned pages management") was
    backported to 3.12, so the broken kernels are stable kernels [3.12 -
    4.7].
    
    There was a subtle race between dropping the page lock of the newpage in
    __unmap_and_move() and checking for __is_movable_balloon_page(newpage).
    
    Just after dropping this page lock, virtio-balloon could go ahead and
    deflate the newpage, effectively dequeueing it and clearing PageBalloon,
    in turn making __is_movable_balloon_page(newpage) fail.
    
    This resulted in dropping the reference of the newpage via
    putback_lru_page(newpage) instead of put_page(newpage), leading to
    page->lru getting modified and a !LRU page ending up in the LRU lists.
    With 195a8c43e93d ("virtio-balloon: deflate via a page list")
    backported, one would suddenly get corrupted lists in
    release_pages_balloon():
    
    - WARNING: CPU: 13 PID: 6586 at lib/list_debug.c:59 __list_del_entry+0xa1/0xd0
    - list_del corruption. prev->next should be ffffe253961090a0, but was dead000000000100
    
    Nowadays this race is no longer possible, but it is hidden behind very
    ugly handling of __ClearPageMovable() and __PageMovable().
    
    __ClearPageMovable() will not make __PageMovable() fail, only
    PageMovable().  So the new check (__PageMovable(newpage)) will still
    hold even after newpage was dequeued by virtio-balloon.
    
    If anybody would ever change that special handling, the BUG would be
    introduced again.  So instead, make it explicit and use the information
    of the original isolated page before migration.
    
    This patch can be backported fairly easy to stable kernels (in contrast
    to the refactoring).
    
    Link: http://lkml.kernel.org/r/20190129233217.10747-1-david@redhat.com
    Fixes: d6d86c0a7f8d ("mm/balloon_compaction: redesign ballooned pages management")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Reported-by: Vratislav Bendel <vbendel@redhat.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Rafael Aquini <aquini@redhat.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Dominik Brodowski <linux@dominikbrodowski.net>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Vratislav Bendel <vbendel@redhat.com>
    Cc: Rafael Aquini <aquini@redhat.com>
    Cc: Konstantin Khlebnikov <k.khlebnikov@samsung.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16:
     - Add the is_lru flag variable to unmap_and_move()
     - Keep using __is_movable_balloon_page() instead of __PageMovable()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit df3256a2972eb75429255d1ce675abde1f843904
Author: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date:   Fri Feb 1 14:21:08 2019 -0800

    mm: hwpoison: use do_send_sig_info() instead of force_sig()
    
    commit 6376360ecbe525a9c17b3d081dfd88ba3e4ed65b upstream.
    
    Currently memory_failure() is racy against process's exiting, which
    results in kernel crash by null pointer dereference.
    
    The root cause is that memory_failure() uses force_sig() to forcibly
    kill asynchronous (meaning not in the current context) processes.  As
    discussed in thread https://lkml.org/lkml/2010/6/8/236 years ago for OOM
    fixes, this is not a right thing to do.  OOM solves this issue by using
    do_send_sig_info() as done in commit d2d393099de2 ("signal:
    oom_kill_task: use SEND_SIG_FORCED instead of force_sig()"), so this
    patch is suggesting to do the same for hwpoison.  do_send_sig_info()
    properly accesses to siglock with lock_task_sighand(), so is free from
    the reported race.
    
    I confirmed that the reported bug reproduces with inserting some delay
    in kill_procs(), and it never reproduces with this patch.
    
    Note that memory_failure() can send another type of signal using
    force_sig_mceerr(), and the reported race shouldn't happen on it because
    force_sig_mceerr() is called only for synchronous processes (i.e.
    BUS_MCEERR_AR happens only when some process accesses to the corrupted
    memory.)
    
    Link: http://lkml.kernel.org/r/20190116093046.GA29835@hori1.linux.bs1.fc.nec.co.jp
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Reported-by: Jane Chu <jane.chu@oracle.com>
    Reviewed-by: Dan Williams <dan.j.williams@intel.com>
    Reviewed-by: William Kucharski <william.kucharski@oracle.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4d6795e7c32b1701f6669bdfafd0d15534533bcc
Author: Shakeel Butt <shakeelb@google.com>
Date:   Fri Feb 1 14:20:54 2019 -0800

    mm, oom: fix use-after-free in oom_kill_process
    
    commit cefc7ef3c87d02fc9307835868ff721ea12cc597 upstream.
    
    Syzbot instance running on upstream kernel found a use-after-free bug in
    oom_kill_process.  On further inspection it seems like the process
    selected to be oom-killed has exited even before reaching
    read_lock(&tasklist_lock) in oom_kill_process().  More specifically the
    tsk->usage is 1 which is due to get_task_struct() in oom_evaluate_task()
    and the put_task_struct within for_each_thread() frees the tsk and
    for_each_thread() tries to access the tsk.  The easiest fix is to do
    get/put across the for_each_thread() on the selected task.
    
    Now the next question is should we continue with the oom-kill as the
    previously selected task has exited? However before adding more
    complexity and heuristics, let's answer why we even look at the children
    of oom-kill selected task? The select_bad_process() has already selected
    the worst process in the system/memcg.  Due to race, the selected
    process might not be the worst at the kill time but does that matter?
    The userspace can use the oom_score_adj interface to prefer children to
    be killed before the parent.  I looked at the history but it seems like
    this is there before git history.
    
    Link: http://lkml.kernel.org/r/20190121215850.221745-1-shakeelb@google.com
    Reported-by: syzbot+7fbbfa368521945f0e3d@syzkaller.appspotmail.com
    Fixes: 6b0c81b3be11 ("mm, oom: reduce dependency on tasklist_lock")
    Signed-off-by: Shakeel Butt <shakeelb@google.com>
    Reviewed-by: Roman Gushchin <guro@fb.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit df53da1c7c90d80f05bc85398867b1b518253cb8
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Feb 1 11:28:16 2019 +0300

    skge: potential memory corruption in skge_get_regs()
    
    commit 294c149a209c6196c2de85f512b52ef50f519949 upstream.
    
    The "p" buffer is 0x4000 bytes long.  B3_RI_WTO_R1 is 0x190.  The value
    of "regs->len" is in the 1-0x4000 range.  The bug here is that
    "regs->len - B3_RI_WTO_R1" can be a negative value which would lead to
    memory corruption and an abrupt crash.
    
    Fixes: c3f8be961808 ("[PATCH] skge: expand ethtool debug register dump")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b6706ab0540c4fbb5424cbaf7c0ce7c87f7a0ba7
Author: Felix Fietkau <nbd@nbd.name>
Date:   Tue Jan 29 11:10:57 2019 +0100

    mac80211: ensure that mgmt tx skbs have tailroom for encryption
    
    commit 9d0f50b80222dc273e67e4e14410fcfa4130a90c upstream.
    
    Some drivers use IEEE80211_KEY_FLAG_SW_MGMT_TX to indicate that management
    frames need to be software encrypted. Since normal data packets are still
    encrypted by the hardware, crypto_tx_tailroom_needed_cnt gets decremented
    after key upload to hw. This can lead to passing skbs to ccmp_encrypt_skb,
    which don't have the necessary tailroom for software encryption.
    
    Change the code to add tailroom for encrypted management packets, even if
    crypto_tx_tailroom_needed_cnt is 0.
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    [bwh: Backported to 3.16: we always expand cloned skbs here; don't change that]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4e938011d7529cc89a79e6077b8767b6c5ef0f48
Author: Jacob Wen <jian.w.wen@oracle.com>
Date:   Thu Jan 31 15:18:56 2019 +0800

    l2tp: copy 4 more bytes to linear part if necessary
    
    commit 91c524708de6207f59dd3512518d8a1c7b434ee3 upstream.
    
    The size of L2TPv2 header with all optional fields is 14 bytes.
    l2tp_udp_recv_core only moves 10 bytes to the linear part of a
    skb. This may lead to l2tp_recv_common read data outside of a skb.
    
    This patch make sure that there is at least 14 bytes in the linear
    part of a skb to meet the maximum need of l2tp_udp_recv_core and
    l2tp_recv_common. The minimum size of both PPP HDLC-like frame and
    Ethernet frame is larger than 14 bytes, so we are safe to do so.
    
    Also remove L2TP_HDR_SIZE_NOSEQ, it is unused now.
    
    Fixes: fd558d186df2 ("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
    Suggested-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: Jacob Wen <jian.w.wen@oracle.com>
    Acked-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ef1991f23a00e2f9a68cd6ac0c6858861697ec72
Author: Waiman Long <longman@redhat.com>
Date:   Wed Jan 30 13:52:36 2019 -0500

    fs/dcache: Fix incorrect nr_dentry_unused accounting in shrink_dcache_sb()
    
    commit 1dbd449c9943e3145148cc893c2461b72ba6fef0 upstream.
    
    The nr_dentry_unused per-cpu counter tracks dentries in both the LRU
    lists and the shrink lists where the DCACHE_LRU_LIST bit is set.
    
    The shrink_dcache_sb() function moves dentries from the LRU list to a
    shrink list and subtracts the dentry count from nr_dentry_unused.  This
    is incorrect as the nr_dentry_unused count will also be decremented in
    shrink_dentry_list() via d_shrink_del().
    
    To fix this double decrement, the decrement in the shrink_dcache_sb()
    function is taken out.
    
    Fixes: 4e717f5c1083 ("list_lru: remove special case function list_lru_dispose_all."
    Signed-off-by: Waiman Long <longman@redhat.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 94c3df3c4049a82169724cf9cd033bdd15968b8b
Author: Paul Elder <paul.elder@ideasonboard.com>
Date:   Wed Jan 30 08:13:21 2019 -0600

    usb: gadget: musb: fix short isoc packets with inventra dma
    
    commit c418fd6c01fbc5516a2cd1eaf1df1ec86869028a upstream.
    
    Handling short packets (length < max packet size) in the Inventra DMA
    engine in the MUSB driver causes the MUSB DMA controller to hang. An
    example of a problem that is caused by this problem is when streaming
    video out of a UVC gadget, only the first video frame is transferred.
    
    For short packets (mode-0 or mode-1 DMA), MUSB_TXCSR_TXPKTRDY must be
    set manually by the driver. This was previously done in musb_g_tx
    (musb_gadget.c), but incorrectly (all csr flags were cleared, and only
    MUSB_TXCSR_MODE and MUSB_TXCSR_TXPKTRDY were set). Fixing that problem
    allows some requests to be transferred correctly, but multiple requests
    were often put together in one USB packet, and caused problems if the
    packet size was not a multiple of 4. Instead, set MUSB_TXCSR_TXPKTRDY
    in dma_controller_irq (musbhsdma.c), just like host mode transfers.
    
    This topic was originally tackled by Nicolas Boichat [0] [1] and is
    discussed further at [2] as part of his GSoC project [3].
    
    [0] https://groups.google.com/forum/?hl=en#!topic/beagleboard-gsoc/k8Azwfp75CU
    [1] https://gitorious.org/beagleboard-usbsniffer/beagleboard-usbsniffer-kernel/commit/b0be3b6cc195ba732189b04f1d43ec843c3e54c9?p=beagleboard-usbsniffer:beagleboard-usbsniffer-kernel.git;a=patch;h=b0be3b6cc195ba732189b04f1d43ec843c3e54c9
    [2] http://beagleboard-usbsniffer.blogspot.com/2010/07/musb-isochronous-transfers-fixed.html
    [3] http://elinux.org/BeagleBoard/GSoC/USBSniffer
    
    Fixes: 550a7375fe72 ("USB: Add MUSB and TUSB support")
    Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16:
     - Fold in the earlier commit fb91cddc54e7 "usb: musb: Remove DMA ifdef
       for musb_gadget.c short_packet"
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d4038659275b6d7672bcc67365000bed9c4666d2
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Fri Jan 25 20:10:15 2019 +0000

    ARM: iop32x/n2100: fix PCI IRQ mapping
    
    commit db4090920ba2d61a5827a23e441447926a02ffee upstream.
    
    Booting 4.20 on a TheCUS N2100 results in a kernel oops while probing
    PCI, due to n2100_pci_map_irq() having been discarded during boot.
    
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5cdc9c037ceb9e89464d48f7f3423fbff4d86b99
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Fri Jan 18 15:54:34 2019 -0800

    CIFS: Do not consider -ENODATA as stat failure for reads
    
    commit 082aaa8700415f6471ec9c5ef0c8307ca214989a upstream.
    
    When doing reads beyound the end of a file the server returns
    error STATUS_END_OF_FILE error which is mapped to -ENODATA.
    Currently we report it as a failure which confuses read stats.
    Change it to not consider -ENODATA as failure for stat purposes.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 10113f160c0d99795a65c65bc04cac6924bd4145
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Sat Jan 26 12:21:32 2019 -0800

    CIFS: Do not count -ENODATA as failure for query directory
    
    commit 8e6e72aeceaaed5aeeb1cb43d3085de7ceb14f79 upstream.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3cb991aed82a9a6b1ddbaf53adc9d0af987a5042
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Jan 27 23:28:33 2019 +0200

    MIPS: OCTEON: don't set octeon_dma_bar_type if PCI is disabled
    
    commit dcf300a69ac307053dfb35c2e33972e754a98bce upstream.
    
    Don't set octeon_dma_bar_type if PCI is disabled. This avoids creation
    of the MSI irqchip later on, and saves a bit of memory.
    
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Fixes: a214720cbf50 ("Disable MSI also when pcie-octeon.pcie_disable on")
    Cc: linux-mips@vger.kernel.org
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d447bea8bd8de7015f05fb1be44d460ab39ac887
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Jan 24 13:29:40 2019 +0300

    scsi: bnx2fc: Fix error handling in probe()
    
    commit b2d3492fc591b1fb46b81d79ca1fc44cac6ae0ae upstream.
    
    There are two issues here.  First if cmgr->hba is not set early enough then
    it leads to a NULL dereference.  Second if we don't completely initialize
    cmgr->io_bdt_pool[] then we end up dereferencing uninitialized pointers.
    
    Fixes: 853e2bd2103a ("[SCSI] bnx2fc: Broadcom FCoE offload driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [bwh: Backorted to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 15eb93c406cd4fc0139514c8f75a70c9e3c424cf
Author: Stefan Haberland <sth@linux.ibm.com>
Date:   Wed Nov 21 12:39:47 2018 +0100

    s390/dasd: fix using offset into zero size array error
    
    commit 4a8ef6999bce998fa5813023a9a6b56eea329dba upstream.
    
    Dan Carpenter reported the following:
    
    The patch 52898025cf7d: "[S390] dasd: security and PSF update patch
    for EMC CKD ioctl" from Mar 8, 2010, leads to the following static
    checker warning:
    
            drivers/s390/block/dasd_eckd.c:4486 dasd_symm_io()
            error: using offset into zero size array 'psf_data[]'
    
    drivers/s390/block/dasd_eckd.c
      4458          /* Copy parms from caller */
      4459          rc = -EFAULT;
      4460          if (copy_from_user(&usrparm, argp, sizeof(usrparm)))
                                        ^^^^^^^
    The user can specify any "usrparm.psf_data_len".  They choose zero by
    mistake.
    
      4461                  goto out;
      4462          if (is_compat_task()) {
      4463                  /* Make sure pointers are sane even on 31 bit. */
      4464                  rc = -EINVAL;
      4465                  if ((usrparm.psf_data >> 32) != 0)
      4466                          goto out;
      4467                  if ((usrparm.rssd_result >> 32) != 0)
      4468                          goto out;
      4469                  usrparm.psf_data &= 0x7fffffffULL;
      4470                  usrparm.rssd_result &= 0x7fffffffULL;
      4471          }
      4472          /* alloc I/O data area */
      4473          psf_data = kzalloc(usrparm.psf_data_len, GFP_KERNEL
                                                             | GFP_DMA);
      4474          rssd_result = kzalloc(usrparm.rssd_result_len, GFP_KERNEL
                                                                   | GFP_DMA);
      4475          if (!psf_data || !rssd_result) {
    
    kzalloc() returns a ZERO_SIZE_PTR (0x16).
    
      4476                  rc = -ENOMEM;
      4477                  goto out_free;
      4478          }
      4479
      4480          /* get syscall header from user space */
      4481          rc = -EFAULT;
      4482          if (copy_from_user(psf_data,
      4483                             (void __user *)(unsigned long)
                                                             usrparm.psf_data,
      4484                             usrparm.psf_data_len))
    
    That all works great.
    
      4485                  goto out_free;
      4486          psf0 = psf_data[0];
      4487          psf1 = psf_data[1];
    
    But now we're assuming that "->psf_data_len" was at least 2 bytes.
    
    Fix this by checking the user specified length psf_data_len.
    
    Fixes: 52898025cf7d ("[S390] dasd: security and PSF update patch for EMC CKD ioctl")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6b9d219dbbc963fd1d168981f548ff90b1d1e157
Author: Bin Liu <b-liu@ti.com>
Date:   Wed Jan 16 11:54:07 2019 -0600

    usb: phy: am335x: fix race condition in _probe
    
    commit a53469a68eb886e84dd8b69a1458a623d3591793 upstream.
    
    power off the phy should be done before populate the phy. Otherwise,
    am335x_init() could be called by the phy owner to power on the phy first,
    then am335x_phy_probe() turns off the phy again without the caller knowing
    it.
    
    Fixes: 2fc711d76352 ("usb: phy: am335x: Enable USB remote wakeup using PHY wakeup")
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 93e3910ef1609b089686cbc1b63ccbc60e8342e5
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Jan 22 15:28:08 2019 -0600

    usb: gadget: udc: net2272: Fix bitwise and boolean operations
    
    commit 07c69f1148da7de3978686d3af9263325d9d60bd upstream.
    
    (!x & y) strikes again.
    
    Fix bitwise and boolean operations by enclosing the expression:
    
            intcsr & (1 << NET2272_PCI_IRQ)
    
    in parentheses, before applying the boolean operator '!'.
    
    Notice that this code has been there since 2011. So, it would
    be helpful if someone can double-check this.
    
    This issue was detected with the help of Coccinelle.
    
    Fixes: ceb80363b2ec ("USB: net2272: driver for PLX NET2272 USB device controller")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2471851d39ac8c6e6eafab81dcdceefaec6ffe1f
Author: Eugene Loh <eugene.loh@oracle.com>
Date:   Thu Jan 17 14:46:00 2019 -0800

    kallsyms: Handle too long symbols in kallsyms.c
    
    commit 6db2983cd8064808141ccefd75218f5b4345ffae upstream.
    
    When checking for symbols with excessively long names,
    account for null terminating character.
    
    Fixes: f3462aa952cf ("Kbuild: Handle longer symbols in kallsyms.c")
    Signed-off-by: Eugene Loh <eugene.loh@oracle.com>
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ee05d9a573c65a91e357997b11ca76d942de46d1
Author: Feras Daoud <ferasda@mellanox.com>
Date:   Thu Jan 24 14:33:19 2019 +0200

    IB/ipoib: Fix for use-after-free in ipoib_cm_tx_start
    
    commit 6ab4aba00f811a5265acc4d3eb1863bb3ca60562 upstream.
    
    The following BUG was reported by kasan:
    
     BUG: KASAN: use-after-free in ipoib_cm_tx_start+0x430/0x1390 [ib_ipoib]
     Read of size 80 at addr ffff88034c30bcd0 by task kworker/u16:1/24020
    
     Workqueue: ipoib_wq ipoib_cm_tx_start [ib_ipoib]
     Call Trace:
      dump_stack+0x9a/0xeb
      print_address_description+0xe3/0x2e0
      kasan_report+0x18a/0x2e0
      ? ipoib_cm_tx_start+0x430/0x1390 [ib_ipoib]
      memcpy+0x1f/0x50
      ipoib_cm_tx_start+0x430/0x1390 [ib_ipoib]
      ? kvm_clock_read+0x1f/0x30
      ? ipoib_cm_skb_reap+0x610/0x610 [ib_ipoib]
      ? __lock_is_held+0xc2/0x170
      ? process_one_work+0x880/0x1960
      ? process_one_work+0x912/0x1960
      process_one_work+0x912/0x1960
      ? wq_pool_ids_show+0x310/0x310
      ? lock_acquire+0x145/0x440
      worker_thread+0x87/0xbb0
      ? process_one_work+0x1960/0x1960
      kthread+0x314/0x3d0
      ? kthread_create_worker_on_cpu+0xc0/0xc0
      ret_from_fork+0x3a/0x50
    
     Allocated by task 0:
      kasan_kmalloc+0xa0/0xd0
      kmem_cache_alloc_trace+0x168/0x3e0
      path_rec_create+0xa2/0x1f0 [ib_ipoib]
      ipoib_start_xmit+0xa98/0x19e0 [ib_ipoib]
      dev_hard_start_xmit+0x159/0x8d0
      sch_direct_xmit+0x226/0xb40
      __dev_queue_xmit+0x1d63/0x2950
      neigh_update+0x889/0x1770
      arp_process+0xc47/0x21f0
      arp_rcv+0x462/0x760
      __netif_receive_skb_core+0x1546/0x2da0
      netif_receive_skb_internal+0xf2/0x590
      napi_gro_receive+0x28e/0x390
      ipoib_ib_handle_rx_wc_rss+0x873/0x1b60 [ib_ipoib]
      ipoib_rx_poll_rss+0x17d/0x320 [ib_ipoib]
      net_rx_action+0x427/0xe30
      __do_softirq+0x28e/0xc42
    
     Freed by task 26680:
      __kasan_slab_free+0x11d/0x160
      kfree+0xf5/0x360
      ipoib_flush_paths+0x532/0x9d0 [ib_ipoib]
      ipoib_set_mode_rss+0x1ad/0x560 [ib_ipoib]
      set_mode+0xc8/0x150 [ib_ipoib]
      kernfs_fop_write+0x279/0x440
      __vfs_write+0xd8/0x5c0
      vfs_write+0x15e/0x470
      ksys_write+0xb8/0x180
      do_syscall_64+0x9b/0x420
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
     The buggy address belongs to the object at ffff88034c30bcc8
                    which belongs to the cache kmalloc-512 of size 512
     The buggy address is located 8 bytes inside of
                    512-byte region [ffff88034c30bcc8, ffff88034c30bec8)
     The buggy address belongs to the page:
    
    The following race between change mode and xmit flow is the reason for
    this use-after-free:
    
    Change mode     Send packet 1 to GID XX      Send packet 2 to GID XX
         |                    |                             |
       start                  |                             |
         |                    |                             |
         |                    |                             |
         |         Create new path for GID XX               |
         |           and update neigh path                  |
         |                    |                             |
         |                    |                             |
         |                    |                             |
     flush_paths              |                             |
                              |                             |
                   queue_work(cm.start_task)                |
                              |                 Path for GID XX not found
                              |                      create new path
                              |
                              |
                   start_task runs with old
                        released path
    
    There is no locking to protect the lifetime of the path through the
    ipoib_cm_tx struct, so delete it entirely and always use the newly looked
    up path under the priv->lock.
    
    Fixes: 546481c2816e ("IB/ipoib: Fix memory corruption in ipoib cm mode connect flow")
    Signed-off-by: Feras Daoud <ferasda@mellanox.com>
    Reviewed-by: Erez Shitrit <erezsh@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3a006b552b8ee86f9f1a69f5cec165e1dc3650e2
Author: Alexander Popov <alex.popov@linux.com>
Date:   Mon Jan 21 15:48:40 2019 +0300

    KVM: x86: Fix single-step debugging
    
    commit 5cc244a20b86090c087073c124284381cdf47234 upstream.
    
    The single-step debugging of KVM guests on x86 is broken: if we run
    gdb 'stepi' command at the breakpoint when the guest interrupts are
    enabled, RIP always jumps to native_apic_mem_write(). Then other
    nasty effects follow.
    
    Long investigation showed that on Jun 7, 2017 the
    commit c8401dda2f0a00cd25c0 ("KVM: x86: fix singlestepping over syscall")
    introduced the kvm_run.debug corruption: kvm_vcpu_do_singlestep() can
    be called without X86_EFLAGS_TF set.
    
    Let's fix it. Please consider that for -stable.
    
    Signed-off-by: Alexander Popov <alex.popov@linux.com>
    Fixes: c8401dda2f0a00cd25c0 ("KVM: x86: fix singlestepping over syscall")
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a2cb3de3961bb84687dd4f6c2108e2bc92a3f499
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jan 23 11:27:02 2019 +0100

    debugfs: fix debugfs_rename parameter checking
    
    commit d88c93f090f708c18195553b352b9f205e65418f upstream.
    
    debugfs_rename() needs to check that the dentries passed into it really
    are valid, as sometimes they are not (i.e. if the return value of
    another debugfs call is passed into this one.)  So fix this up by
    properly checking if the two parent directories are errors (they are
    allowed to be NULL), and if the dentry to rename is not NULL or an
    error.
    
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5cd34b292e1391b1745ad43b4f4a36ec66af0fcd
Author: Aya Levin <ayal@mellanox.com>
Date:   Tue Jan 22 15:19:44 2019 +0200

    net/mlx4_core: Add masking for a few queries on HCA caps
    
    commit a40ded6043658444ee4dd6ee374119e4e98b33fc upstream.
    
    Driver reads the query HCA capabilities without the corresponding masks.
    Without the correct masks, the base addresses of the queues are
    unaligned.  In addition some reserved bits were wrongly read.  Using the
    correct masks, ensures alignment of the base addresses and allows future
    firmware versions safe use of the reserved bits.
    
    Fixes: ab9c17a009ee ("mlx4_core: Modify driver initialization flow to accommodate SRIOV for Ethernet")
    Fixes: 0ff1fb654bec ("{NET, IB}/mlx4: Add device managed flow steering firmware API")
    Signed-off-by: Aya Levin <ayal@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - There are no num_sys_eqs or dmfs_high_steer_mode parameters
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 49e6f5166303618e09e4e4da47537a53fb14e6a6
Author: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Date:   Thu Jan 24 04:16:45 2019 +0000

    iommu/amd: Fix IOMMU page flush when detach device from a domain
    
    commit 9825bd94e3a2baae1f4874767ae3a7d4c049720e upstream.
    
    When a VM is terminated, the VFIO driver detaches all pass-through
    devices from VFIO domain by clearing domain id and page table root
    pointer from each device table entry (DTE), and then invalidates
    the DTE. Then, the VFIO driver unmap pages and invalidate IOMMU pages.
    
    Currently, the IOMMU driver keeps track of which IOMMU and how many
    devices are attached to the domain. When invalidate IOMMU pages,
    the driver checks if the IOMMU is still attached to the domain before
    issuing the invalidate page command.
    
    However, since VFIO has already detached all devices from the domain,
    the subsequent INVALIDATE_IOMMU_PAGES commands are being skipped as
    there is no IOMMU attached to the domain. This results in data
    corruption and could cause the PCI device to end up in indeterministic
    state.
    
    Fix this by invalidate IOMMU pages when detach a device, and
    before decrementing the per-domain device reference counts.
    
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Suggested-by: Joerg Roedel <joro@8bytes.org>
    Co-developed-by: Brijesh Singh <brijesh.singh@amd.com>
    Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
    Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
    Fixes: 6de8ad9b9ee0 ('x86/amd-iommu: Make iommu_flush_pages aware of multiple IOMMUs')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cd6480f06acfcdb181d26488b4eeb098790c8b93
Author: Tina Zhang <tina.zhang@intel.com>
Date:   Wed Jan 23 15:28:59 2019 +0800

    drm/modes: Prevent division by zero htotal
    
    commit a2fcd5c84f7a7825e028381b10182439067aa90d upstream.
    
    This patch prevents division by zero htotal.
    
    In a follow-up mail Tina writes:
    
    > > How did you manage to get here with htotal == 0? This needs backtraces (or if
    > > this is just about static checkers, a mention of that).
    > > -Daniel
    >
    > In GVT-g, we are trying to enable a virtual display w/o setting timings for a pipe
    > (a.k.a htotal=0), then we met the following kernel panic:
    >
    > [   32.832048] divide error: 0000 [#1] SMP PTI
    > [   32.833614] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.18.0-rc4-sriov+ #33
    > [   32.834438] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.10.1-0-g8891697-dirty-20180511_165818-tinazhang-linux-1 04/01/2014
    > [   32.835901] RIP: 0010:drm_mode_hsync+0x1e/0x40
    > [   32.836004] Code: 31 c0 c3 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 8b 87 d8 00 00 00 85 c0 75 22 8b 4f 68 85 c9 78 1b 69 47 58 e8 03 00 00 99 <f7> f9 b9 d3 4d 62 10 05 f4 01 00 00 f7 e1 89 d0 c1 e8 06 f3 c3 66
    > [   32.836004] RSP: 0000:ffffc900000ebb90 EFLAGS: 00010206
    > [   32.836004] RAX: 0000000000000000 RBX: ffff88001c67c8a0 RCX: 0000000000000000
    > [   32.836004] RDX: 0000000000000000 RSI: ffff88001c67c000 RDI: ffff88001c67c8a0
    > [   32.836004] RBP: ffff88001c7d03a0 R08: ffff88001c67c8a0 R09: ffff88001c7d0330
    > [   32.836004] R10: ffffffff822c3a98 R11: 0000000000000001 R12: ffff88001c67c000
    > [   32.836004] R13: ffff88001c7d0370 R14: ffffffff8207eb78 R15: ffff88001c67c800
    > [   32.836004] FS:  0000000000000000(0000) GS:ffff88001da00000(0000) knlGS:0000000000000000
    > [   32.836004] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    > [   32.836004] CR2: 0000000000000000 CR3: 000000000220a000 CR4: 00000000000006f0
    > [   32.836004] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    > [   32.836004] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    > [   32.836004] Call Trace:
    > [   32.836004]  intel_mode_from_pipe_config+0x72/0x90
    > [   32.836004]  intel_modeset_setup_hw_state+0x569/0xf90
    > [   32.836004]  intel_modeset_init+0x905/0x1db0
    > [   32.836004]  i915_driver_load+0xb8c/0x1120
    > [   32.836004]  i915_pci_probe+0x4d/0xb0
    > [   32.836004]  local_pci_probe+0x44/0xa0
    > [   32.836004]  ? pci_assign_irq+0x27/0x130
    > [   32.836004]  pci_device_probe+0x102/0x1c0
    > [   32.836004]  driver_probe_device+0x2b8/0x480
    > [   32.836004]  __driver_attach+0x109/0x110
    > [   32.836004]  ? driver_probe_device+0x480/0x480
    > [   32.836004]  bus_for_each_dev+0x67/0xc0
    > [   32.836004]  ? klist_add_tail+0x3b/0x70
    > [   32.836004]  bus_add_driver+0x1e8/0x260
    > [   32.836004]  driver_register+0x5b/0xe0
    > [   32.836004]  ? mipi_dsi_bus_init+0x11/0x11
    > [   32.836004]  do_one_initcall+0x4d/0x1eb
    > [   32.836004]  kernel_init_freeable+0x197/0x237
    > [   32.836004]  ? rest_init+0xd0/0xd0
    > [   32.836004]  kernel_init+0xa/0x110
    > [   32.836004]  ret_from_fork+0x35/0x40
    > [   32.836004] Modules linked in:
    > [   32.859183] ---[ end trace 525608b0ed0e8665 ]---
    > [   32.859722] RIP: 0010:drm_mode_hsync+0x1e/0x40
    > [   32.860287] Code: 31 c0 c3 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 8b 87 d8 00 00 00 85 c0 75 22 8b 4f 68 85 c9 78 1b 69 47 58 e8 03 00 00 99 <f7> f9 b9 d3 4d 62 10 05 f4 01 00 00 f7 e1 89 d0 c1 e8 06 f3 c3 66
    > [   32.862680] RSP: 0000:ffffc900000ebb90 EFLAGS: 00010206
    > [   32.863309] RAX: 0000000000000000 RBX: ffff88001c67c8a0 RCX: 0000000000000000
    > [   32.864182] RDX: 0000000000000000 RSI: ffff88001c67c000 RDI: ffff88001c67c8a0
    > [   32.865206] RBP: ffff88001c7d03a0 R08: ffff88001c67c8a0 R09: ffff88001c7d0330
    > [   32.866359] R10: ffffffff822c3a98 R11: 0000000000000001 R12: ffff88001c67c000
    > [   32.867213] R13: ffff88001c7d0370 R14: ffffffff8207eb78 R15: ffff88001c67c800
    > [   32.868075] FS:  0000000000000000(0000) GS:ffff88001da00000(0000) knlGS:0000000000000000
    > [   32.868983] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    > [   32.869659] CR2: 0000000000000000 CR3: 000000000220a000 CR4: 00000000000006f0
    > [   32.870599] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    > [   32.871598] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    > [   32.872549] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
    >
    > Since drm_mode_hsync() has the logic to check mode->htotal, I just extend it to cover the case htotal==0.
    
    Signed-off-by: Tina Zhang <tina.zhang@intel.com>
    Cc: Adam Jackson <ajax@redhat.com>
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    [danvet: Add additional explanations + cc: stable.]
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/1548228539-3061-1-git-send-email-tina.zhang@intel.com
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cc87778fb843f933bc2494003e9df5547b546dbf
Author: Peng Hao <peng.hao2@zte.com.cn>
Date:   Sat Dec 29 13:10:06 2018 +0800

    ARM: pxa: ssp: unneeded to free devm_ allocated data
    
    commit ba16adeb346387eb2d1ada69003588be96f098fa upstream.
    
    devm_ allocated data will be automatically freed. The free
    of devm_ allocated data is invalid.
    
    Fixes: 1c459de1e645 ("ARM: pxa: ssp: use devm_ functions")
    Signed-off-by: Peng Hao <peng.hao2@zte.com.cn>
    [title's prefix changed]
    Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6b6f0a9095e955bab5a2091dd995f3779ed87378
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Wed Jan 9 17:39:06 2019 -0600

    ipmi: msghandler: Fix potential Spectre v1 vulnerabilities
    
    commit a7102c7461794a5bb31af24b08e9e0f50038897a upstream.
    
    channel and addr->channel are indirectly controlled by user-space,
    hence leading to a potential exploitation of the Spectre variant 1
    vulnerability.
    
    These issues were detected with the help of Smatch:
    
    drivers/char/ipmi/ipmi_msghandler.c:1381 ipmi_set_my_address() warn: potential spectre issue 'user->intf->addrinfo' [w] (local cap)
    drivers/char/ipmi/ipmi_msghandler.c:1401 ipmi_get_my_address() warn: potential spectre issue 'user->intf->addrinfo' [r] (local cap)
    drivers/char/ipmi/ipmi_msghandler.c:1421 ipmi_set_my_LUN() warn: potential spectre issue 'user->intf->addrinfo' [w] (local cap)
    drivers/char/ipmi/ipmi_msghandler.c:1441 ipmi_get_my_LUN() warn: potential spectre issue 'user->intf->addrinfo' [r] (local cap)
    drivers/char/ipmi/ipmi_msghandler.c:2260 check_addr() warn: potential spectre issue 'intf->addrinfo' [r] (local cap)
    
    Fix this by sanitizing channel and addr->channel before using them to
    index user->intf->addrinfo and intf->addrinfo, correspondingly.
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://lore.kernel.org/lkml/20180423164740.GY17484@dhcp22.suse.cz/
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 974d401c372efc58ae8f68add0c7752b81f4c000
Author: Oliver Hartkopp <socketcan@hartkopp.net>
Date:   Sun Jan 13 19:31:43 2019 +0100

    can: bcm: check timer values before ktime conversion
    
    commit 93171ba6f1deffd82f381d36cb13177872d023f6 upstream.
    
    Kyungtae Kim detected a potential integer overflow in bcm_[rx|tx]_setup()
    when the conversion into ktime multiplies the given value with NSEC_PER_USEC
    (1000).
    
    Reference: https://marc.info/?l=linux-can&m=154732118819828&w=2
    
    Add a check for the given tv_usec, so that the value stays below one second.
    Additionally limit the tv_sec value to a reasonable value for CAN related
    use-cases of 400 days and ensure all values to be positive.
    
    Reported-by: Kyungtae Kim <kt0755@gmail.com>
    Tested-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Tested-by: Kyungtae Kim <kt0755@gmail.com>
    Acked-by: Andre Naujoks <nautsch2@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d34ea495d452540fab2ecee501846177c99c60c2
Author: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
Date:   Wed Dec 19 19:39:58 2018 +0100

    can: dev: __can_get_echo_skb(): fix bogous check for non-existing skb by removing it
    
    commit 7b12c8189a3dc50638e7d53714c88007268d47ef upstream.
    
    This patch revert commit 7da11ba5c506
    ("can: dev: __can_get_echo_skb(): print error message, if trying to echo non existing skb")
    
    After introduction of this change we encountered following new error
    message on various i.MX plattforms (flexcan):
    
    | flexcan 53fc8000.can can0: __can_get_echo_skb: BUG! Trying to echo non
    | existing skb: can_priv::echo_skb[0]
    
    The introduction of the message was a mistake because
    priv->echo_skb[idx] = NULL is a perfectly valid in following case: If
    CAN_RAW_LOOPBACK is disabled (setsockopt) in applications, the pkt_type
    of the tx skb's given to can_put_echo_skb is set to PACKET_LOOPBACK. In
    this case can_put_echo_skb will not set priv->echo_skb[idx]. It is
    therefore kept NULL.
    
    As additional argument for revert: The order of check and usage of idx
    was changed. idx is used to access an array element before checking it's
    boundaries.
    
    Signed-off-by: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
    Fixes: 7da11ba5c506 ("can: dev: __can_get_echo_skb(): print error message, if trying to echo non existing skb")
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 68f4fc9960a72d6481f3e760934458d8e6064f9f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Jan 20 10:46:58 2019 +0100

    tty: Handle problem if line discipline does not have receive_buf
    
    commit 27cfb3a53be46a54ec5e0bd04e51995b74c90343 upstream.
    
    Some tty line disciplines do not have a receive buf callback, so
    properly check for that before calling it.  If they do not have this
    callback, just eat the character quietly, as we can't fail this call.
    
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ce375927344df835854dbcf4f0ba6618f348f45c
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Wed Jan 9 13:02:36 2019 -0600

    char/mwave: fix potential Spectre v1 vulnerability
    
    commit 701956d4018e5d5438570e39e8bda47edd32c489 upstream.
    
    ipcnum is indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    drivers/char/mwave/mwavedd.c:299 mwave_ioctl() warn: potential spectre issue 'pDrvData->IPCs' [w] (local cap)
    
    Fix this by sanitizing ipcnum before using it to index pDrvData->IPCs.
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 678767958a8133c168df41e08b73687e182dcbd5
Author: Nicolas Pitre <nicolas.pitre@linaro.org>
Date:   Tue Jan 8 22:55:01 2019 -0500

    vt: invoke notifier on screen size change
    
    commit 0c9b1965faddad7534b6974b5b36c4ad37998f8e upstream.
    
    User space using poll() on /dev/vcs devices are not awaken when a
    screen size change occurs. Let's fix that.
    
    Signed-off-by: Nicolas Pitre <nico@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1bff709b8fb3c80b065922c5ab4c84de34d932d3
Author: Nicolas Pitre <nicolas.pitre@linaro.org>
Date:   Tue Jan 8 22:55:00 2019 -0500

    vt: always call notifier with the console lock held
    
    commit 7e1d226345f89ad5d0216a9092c81386c89b4983 upstream.
    
    Every invocation of notify_write() and notify_update() is performed
    under the console lock, except for one case. Let's fix that.
    
    Signed-off-by: Nicolas Pitre <nico@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ef6b5f2dffba5edc9e61d18dec2c6b98453d8e31
Author: Paul Fulghum <paulkf@microgate.com>
Date:   Tue Jan 1 12:28:53 2019 -0800

    tty/n_hdlc: fix __might_sleep warning
    
    commit fc01d8c61ce02c034e67378cd3e645734bc18c8c upstream.
    
    Fix __might_sleep warning[1] in tty/n_hdlc.c read due to copy_to_user
    call while current is TASK_INTERRUPTIBLE.  This is a false positive
    since the code path does not depend on current state remaining
    TASK_INTERRUPTIBLE.  The loop breaks out and sets TASK_RUNNING after
    calling copy_to_user.
    
    This patch supresses the warning by setting TASK_RUNNING before calling
    copy_to_user.
    
    [1] https://syzkaller.appspot.com/bug?id=17d5de7f1fcab794cb8c40032f893f52de899324
    
    Signed-off-by: Paul Fulghum <paulkf@microgate.com>
    Reported-by: syzbot <syzbot+c244af085a0159d22879@syzkaller.appspotmail.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 70e2dab6a1e716ae8a75c3a6e60958ecdcd17961
Author: Samir Virmani <samir@embedur.com>
Date:   Wed Jan 16 10:28:07 2019 -0800

    uart: Fix crash in uart_write and uart_put_char
    
    commit aff9cf5955185d1f183227e46c5f8673fa483813 upstream.
    
    We were experiencing a crash similar to the one reported as part of
    commit:a5ba1d95e46e ("uart: fix race between uart_put_char() and
    uart_shutdown()") in our testbed as well. We continue to observe the same
    crash after integrating the commit a5ba1d95e46e ("uart: fix race between
    uart_put_char() and uart_shutdown()")
    
    On reviewing the change, the port lock should be taken prior to checking for
    if (!circ->buf) in fn. __uart_put_char and other fns. that update the buffer
    uart_state->xmit.
    
    Traceback:
    
    [11/27/2018 06:24:32.4870] Unable to handle kernel NULL pointer dereference
                               at virtual address 0000003b
    
    [11/27/2018 06:24:32.4950] PC is at memcpy+0x48/0x180
    [11/27/2018 06:24:32.4950] LR is at uart_write+0x74/0x120
    [11/27/2018 06:24:32.4950] pc : [<ffffffc0002e6808>]
                               lr : [<ffffffc0003747cc>] pstate: 000001c5
    [11/27/2018 06:24:32.4950] sp : ffffffc076433d30
    [11/27/2018 06:24:32.4950] x29: ffffffc076433d30 x28: 0000000000000140
    [11/27/2018 06:24:32.4950] x27: ffffffc0009b9d5e x26: ffffffc07ce36580
    [11/27/2018 06:24:32.4950] x25: 0000000000000000 x24: 0000000000000140
    [11/27/2018 06:24:32.4950] x23: ffffffc000891200 x22: ffffffc01fc34000
    [11/27/2018 06:24:32.4950] x21: 0000000000000fff x20: 0000000000000076
    [11/27/2018 06:24:32.4950] x19: 0000000000000076 x18: 0000000000000000
    [11/27/2018 06:24:32.4950] x17: 000000000047cf08 x16: ffffffc000099e68
    [11/27/2018 06:24:32.4950] x15: 0000000000000018 x14: 776d726966205948
    [11/27/2018 06:24:32.4950] x13: 50203a6c6974755f x12: 74647075205d3333
    [11/27/2018 06:24:32.4950] x11: 3a35323a36203831 x10: 30322f37322f3131
    [11/27/2018 06:24:32.4950] x9 : 5b205d303638342e x8 : 746164206f742070
    [11/27/2018 06:24:32.4950] x7 : 7520736920657261 x6 : 000000000000003b
    [11/27/2018 06:24:32.4950] x5 : 000000000000817a x4 : 0000000000000008
    [11/27/2018 06:24:32.4950] x3 : 2f37322f31312a5b x2 : 000000000000006e
    [11/27/2018 06:24:32.4950] x1 : ffffffc0009b9cf0 x0 : 000000000000003b
    
    [11/27/2018 06:24:32.4950] CPU2: stopping
    [11/27/2018 06:24:32.4950] CPU: 2 PID: 0 Comm: swapper/2 Tainted: P      D    O    4.1.51 #3
    [11/27/2018 06:24:32.4950] Hardware name: Broadcom-v8A (DT)
    [11/27/2018 06:24:32.4950] Call trace:
    [11/27/2018 06:24:32.4950] [<ffffffc0000883b8>] dump_backtrace+0x0/0x150
    [11/27/2018 06:24:32.4950] [<ffffffc00008851c>] show_stack+0x14/0x20
    [11/27/2018 06:24:32.4950] [<ffffffc0005ee810>] dump_stack+0x90/0xb0
    [11/27/2018 06:24:32.4950] [<ffffffc00008e844>] handle_IPI+0x18c/0x1a0
    [11/27/2018 06:24:32.4950] [<ffffffc000080c68>] gic_handle_irq+0x88/0x90
    
    Fixes: a5ba1d95e46e ("uart: fix race between uart_put_char() and uart_shutdown()")
    Signed-off-by: Samir Virmani <samir@embedur.com>
    Acked-by: Tycho Andersen <tycho@tycho.ws>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16:
     - Keep open-coding uart_port_lock()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 037cdae7624824a14f850d6fccd7b082907be72a
Author: Yunjian Wang <wangyunjian@huawei.com>
Date:   Thu Jan 17 09:46:41 2019 +0800

    net: bridge: Fix ethernet header pointer before check skb forwardable
    
    commit 28c1382fa28f2e2d9d0d6f25ae879b5af2ecbd03 upstream.
    
    The skb header should be set to ethernet header before using
    is_skb_forwardable. Because the ethernet header length has been
    considered in is_skb_forwardable(including dev->hard_header_len
    length).
    
    To reproduce the issue:
    1, add 2 ports on linux bridge br using following commands:
    $ brctl addbr br
    $ brctl addif br eth0
    $ brctl addif br eth1
    2, the MTU of eth0 and eth1 is 1500
    3, send a packet(Data 1480, UDP 8, IP 20, Ethernet 14, VLAN 4)
    from eth0 to eth1
    
    So the expect result is packet larger than 1500 cannot pass through
    eth0 and eth1. But currently, the packet passes through success, it
    means eth1's MTU limit doesn't take effect.
    
    Fixes: f6367b4660dd ("bridge: use is_skb_forwardable in forward path")
    Cc: bridge@lists.linux-foundation.org
    Cc: Nkolay Aleksandrov <nikolay@cumulusnetworks.com>
    Cc: Roopa Prabhu <roopa@cumulusnetworks.com>
    Cc: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - br_dev_queue_push_xmit() has to call nf_bridge_maybe_copy_header()
       before pushing the Ethernet header
     - adjust context, indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e2e7127ec7c20a55bc8e153fdfba887d36cff6f5
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Mon Dec 10 16:56:45 2018 -0800

    ARC: mm: do_page_fault fixes #1: relinquish mmap_sem if signal arrives while handle_mm_fault
    
    commit 4d447455e73b47c43dd35fcc38ed823d3182a474 upstream.
    
    do_page_fault() forgot to relinquish mmap_sem if a signal came while
    handling handle_mm_fault() - due to say a ctl+c or oom etc.
    This would later cause a deadlock by acquiring it twice.
    
    This came to light when running libc testsuite tst-tls3-malloc test but
    is likely also the cause for prior seen LTP failures. Using lockdep
    clearly showed what the issue was.
    
    | # while true; do ./tst-tls3-malloc ; done
    | Didn't expect signal from child: got `Segmentation fault'
    | ^C
    | ============================================
    | WARNING: possible recursive locking detected
    | 4.17.0+ #25 Not tainted
    | --------------------------------------------
    | tst-tls3-malloc/510 is trying to acquire lock:
    | 606c7728 (&mm->mmap_sem){++++}, at: __might_fault+0x28/0x5c
    |
    |but task is already holding lock:
    |606c7728 (&mm->mmap_sem){++++}, at: do_page_fault+0x9c/0x2a0
    |
    | other info that might help us debug this:
    |  Possible unsafe locking scenario:
    |
    |       CPU0
    |       ----
    |  lock(&mm->mmap_sem);
    |  lock(&mm->mmap_sem);
    |
    | *** DEADLOCK ***
    |
    
    ------------------------------------------------------------
    What the change does is not obvious (note to myself)
    
    prior code was
    
    | do_page_fault
    |
    |   down_read()         <-- lock taken
    |   handle_mm_fault     <-- signal pending as this runs
    |   if fatal_signal_pending
    |       if VM_FAULT_ERROR
    |           up_read
    |       if user_mode
    |          return       <-- lock still held, this was the BUG
    
    New code
    
    | do_page_fault
    |
    |   down_read()         <-- lock taken
    |   handle_mm_fault     <-- signal pending as this runs
    |   if fatal_signal_pending
    |       if VM_FAULT_RETRY
    |          return       <-- not same case as above, but still OK since
    |                           core mm already relinq lock for FAULT_RETRY
    |    ...
    |
    |   < Now falls through for bug case above >
    |
    |   up_read()           <-- lock relinquished
    
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a744a2068e359af0818452e1eed8ff61baee9da2
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Mon Dec 17 14:11:19 2018 -0800

    ARC: show_regs: lockdep: avoid page allocator...
    
    commit ab6c03676cb190156603cf4c5ecf97aa406c9c53 upstream.
    
    and use smaller/on-stack buffer instead
    
    The motivation for this change was lockdep splat like below.
    
    | potentially unexpected fatal signal 11.
    | BUG: sleeping function called from invalid context at ../mm/page_alloc.c:4317
    | in_atomic(): 1, irqs_disabled(): 0, pid: 57, name: segv
    | no locks held by segv/57.
    | Preemption disabled at:
    | [<8182f17e>] get_signal+0x4a6/0x7c4
    | CPU: 0 PID: 57 Comm: segv Not tainted 4.17.0+ #23
    |
    | Stack Trace:
    |  arc_unwind_core.constprop.1+0xd0/0xf4
    |  __might_sleep+0x1f6/0x234
    |  __get_free_pages+0x174/0xca0
    |  show_regs+0x22/0x330
    |  get_signal+0x4ac/0x7c4     # print_fatal_signals() -> preempt_disable()
    |  do_signal+0x30/0x224
    |  resume_user_mode_begin+0x90/0xd8
    
    So signal handling core calls show_regs() with preemption disabled but
    an ensuing GFP_KERNEL page allocator call is flagged by lockdep.
    
    We could have switched to GFP_NOWAIT, but turns out that is not enough
    anways and eliding page allocator call leads to less code and
    instruction traces to sift thru when debugging pesky crashes.
    
    FWIW, this patch doesn't cure the lockdep splat (which next patch does).
    
    Reviewed-by: William Kucharski <william.kucharski@oracle.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1652b06917d7ed6fcdf9a705afa7f8788060bedd
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Thu Apr 16 12:48:40 2015 -0700

    arc: do not export symbols in troubleshoot.c
    
    commit be2a7fce397d82b7dc3fdbc61fb0bdab118e65ca upstream.
    
    print_task_path_n_nm() is local to this file, its only user being
    show_regs().  Mark the function static and avoid the EXPORT_SYMBOL.
    
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Acked-by: Vineet Gupta <vgupta@synoipsys.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16 as dependency of commit ab6c03676cb1
     "ARC: show_regs: lockdep: avoid page allocator..."]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8bd5ee2816e8661ea286746242c0098d50d27f52
Author: Charles Yeh <charlesyeh522@gmail.com>
Date:   Tue Jan 15 23:13:56 2019 +0800

    USB: serial: pl2303: add new PID to support PL2303TB
    
    commit 4dcf9ddc9ad5ab649abafa98c5a4d54b1a33dabb upstream.
    
    Add new PID to support PL2303TB (TYPE_HX)
    
    Signed-off-by: Charles Yeh <charlesyeh522@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0c8a56a6fa056db65e66873a1b597c51559049b2
Author: Kees Cook <keescook@chromium.org>
Date:   Wed Jan 16 10:31:09 2019 -0800

    Yama: Check for pid death before checking ancestry
    
    commit 9474f4e7cd71a633fa1ef93b7daefd44bbdfd482 upstream.
    
    It's possible that a pid has died before we take the rcu lock, in which
    case we can't walk the ancestry list as it may be detached. Instead, check
    for death first before doing the walk.
    
    Reported-by: syzbot+a9ac39bf55329e206219@syzkaller.appspotmail.com
    Fixes: 2d514487faf1 ("security: Yama LSM")
    Suggested-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: James Morris <james.morris@microsoft.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 32ef76c716e5b45bc4207ce24e78dfe146226af3
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Thu Jan 10 09:24:26 2019 -0500

    media: v4l: ioctl: Validate num_planes for debug messages
    
    commit 7fe9f01c04c2673bd6662c35b664f0f91888b96f upstream.
    
    The num_planes field in struct v4l2_pix_format_mplane is used in a loop
    before validating it. As the use is printing a debug message in this case,
    just cap the value to the maximum allowed.
    
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Reviewed-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f2ac052bad4f182c082a3e25f0b0e8387acb4cfd
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Wed Jan 16 10:27:59 2019 +0100

    fuse: decrement NR_WRITEBACK_TEMP on the right page
    
    commit a2ebba824106dabe79937a9f29a875f837e1b6d4 upstream.
    
    NR_WRITEBACK_TEMP is accounted on the temporary page in the request, not
    the page cache page.
    
    Fixes: 8b284dc47291 ("fuse: writepages: handle same page rewrites")
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7e39bb8f23f62b37f8f843b61648c8bfe494908c
Author: Jann Horn <jannh@google.com>
Date:   Sat Jan 12 02:39:05 2019 +0100

    fuse: call pipe_buf_release() under pipe lock
    
    commit 9509941e9c534920ccc4771ae70bd6cbbe79df1c upstream.
    
    Some of the pipe_buf_release() handlers seem to assume that the pipe is
    locked - in particular, anon_pipe_buf_release() accesses pipe->tmp_page
    without taking any extra locks. From a glance through the callers of
    pipe_buf_release(), it looks like FUSE is the only one that calls
    pipe_buf_release() without having the pipe locked.
    
    This bug should only lead to a memory leak, nothing terrible.
    
    Fixes: dd3bb14f44a6 ("fuse: support splice() writing to fuse device")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2e1f7654f16212bffab18033f9bf95cdca1764e5
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Wed Jan 16 10:27:59 2019 +0100

    fuse: handle zero sized retrieve correctly
    
    commit 97e1532ef81acb31c30f9e75bf00306c33a77812 upstream.
    
    Dereferencing req->page_descs[0] will Oops if req->max_pages is zero.
    
    Reported-by: syzbot+c1e36d30ee3416289cc0@syzkaller.appspotmail.com
    Tested-by: syzbot+c1e36d30ee3416289cc0@syzkaller.appspotmail.com
    Fixes: b2430d7567a3 ("fuse: add per-page descriptor <offset, length> to fuse_req")
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 90451cdfd921c1e550fa25c155279427510db063
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Jan 10 20:22:26 2019 +0100

    net: phy: micrel: set soft_reset callback to genphy_soft_reset for KSZ9031
    
    commit 1d16073a326891c2a964e4cb95bc18fbcafb5f74 upstream.
    
    So far genphy_soft_reset was used automatically if the PHY driver
    didn't implement the soft_reset callback. This changed with the
    mentioned commit and broke KSZ9031. To fix this configure the
    KSZ9031 PHY driver to use genphy_soft_reset.
    
    Fixes: 6e2d85ec0559 ("net: phy: Stop with excessive soft reset")
    Reported-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Tested-by: Tony Lindgren <tony@atomide.com>
    Tested-by: Sekhar Nori <nsekhar@ti.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0c5d14ec12ebb0fc78eb116d752d56c399652b45
Author: Grygorii Strashko <grygorii.strashko@ti.com>
Date:   Wed Dec 20 18:45:10 2017 -0600

    net: phy: micrel: ksz9031: reconfigure autoneg after phy autoneg workaround
    
    commit c1a8d0a3accf64a014d605e6806ce05d1c17adf1 upstream.
    
    Under some circumstances driver will perform PHY reset in
    ksz9031_read_status() to fix autoneg failure case (idle error count =
    0xFF). When this happens ksz9031 will not detect link status change any
    more when connecting to Netgear 1G switch (link can be recovered sometimes by
    restarting netdevice "ifconfig down up"). Reproduced with TI am572x board
    equipped with ksz9031 PHY while connecting to Netgear 1G switch.
    
    Fix the issue by reconfiguring autonegotiation after PHY reset in
    ksz9031_read_status().
    
    Fixes: d2fd719bcb0e ("net/phy: micrel: Add workaround for bad autoneg")
    Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bea8177992c5cced33696b7b918132ba440e8516
Author: Zach Brown <zach.brown@ni.com>
Date:   Tue Jun 20 12:48:11 2017 -0500

    net/phy: micrel: configure intterupts after autoneg workaround
    
    commit b866203d872d5deeafcecd25ea429d6748b5bd56 upstream.
    
    The commit ("net/phy: micrel: Add workaround for bad autoneg") fixes an
    autoneg failure case by resetting the hardware. This turns off
    intterupts. Things will work themselves out if the phy polls, as it will
    figure out it's state during a poll. However if the phy uses only
    intterupts, the phy will stall, since interrupts are off. This patch
    fixes the issue by calling config_intr after resetting the phy.
    
    Fixes: d2fd719bcb0e ("net/phy: micrel: Add workaround for bad autoneg ")
    Signed-off-by: Zach Brown <zach.brown@ni.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 088557d56ba39f09c07c10cfb1696b6257344a6c
Author: Nathan Sullivan <nathan.sullivan@ni.com>
Date:   Wed Oct 21 14:17:04 2015 -0500

    net/phy: micrel: Add workaround for bad autoneg
    
    commit d2fd719bcb0e83cb39cfee22ee800f98a56eceb3 upstream.
    
    Very rarely, the KSZ9031 will appear to complete autonegotiation, but
    will drop all traffic afterwards.  When this happens, the idle error
    count will read 0xFF after autonegotiation completes.  Reset the PHY
    when in that state.
    
    Signed-off-by: Nathan Sullivan <nathan.sullivan@ni.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16 as dependency of commit 1d16073a3268
     "net: phy: micrel: set soft_reset callback to genphy_soft_reset for KSZ9031"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bcbfeefb59c4bfafa6bf97b5ded5992df2fa03b0
Author: Michael Straube <straube.linux@gmail.com>
Date:   Mon Jan 7 18:28:58 2019 +0100

    staging: rtl8188eu: Add device code for D-Link DWA-121 rev B1
    
    commit 5f74a8cbb38d10615ed46bc3e37d9a4c9af8045a upstream.
    
    This device was added to the stand-alone driver on github.
    Add it to the staging driver as well.
    
    Link: https://github.com/lwfinger/rtl8188eu/commit/a0619a07cd1e
    Signed-off-by: Michael Straube <straube.linux@gmail.com>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit defd94d177cef4cac1e31b0d97107ecbec0fab1b
Author: Daniel Drake <drake@endlessm.com>
Date:   Mon Jan 7 11:40:24 2019 +0800

    x86/kaslr: Fix incorrect i8254 outb() parameters
    
    commit 7e6fc2f50a3197d0e82d1c0e86282976c9e6c8a4 upstream.
    
    The outb() function takes parameters value and port, in that order.  Fix
    the parameters used in the kalsr i8254 fallback code.
    
    Fixes: 5bfce5ef55cb ("x86, kaslr: Provide randomness functions")
    Signed-off-by: Daniel Drake <drake@endlessm.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: linux@endlessm.com
    Link: https://lkml.kernel.org/r/20190107034024.15005-1-drake@endlessm.com
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6beb5579501fdda398c6b08f9af5771e72afc967
Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Date:   Wed Jan 9 13:00:03 2019 +0100

    s390/smp: fix CPU hotplug deadlock with CPU rescan
    
    commit b7cb707c373094ce4008d4a6ac9b6b366ec52da5 upstream.
    
    smp_rescan_cpus() is called without the device_hotplug_lock, which can lead
    to a dedlock when a new CPU is found and immediately set online by a udev
    rule.
    
    This was observed on an older kernel version, where the cpu_hotplug_begin()
    loop was still present, and it resulted in hanging chcpu and systemd-udev
    processes. This specific deadlock will not show on current kernels. However,
    there may be other possible deadlocks, and since smp_rescan_cpus() can still
    trigger a CPU hotplug operation, the device_hotplug_lock should be held.
    
    For reference, this was the deadlock with the old cpu_hotplug_begin() loop:
    
            chcpu (rescan)                       systemd-udevd
    
     echo 1 > /sys/../rescan
     -> smp_rescan_cpus()
     -> (*) get_online_cpus()
        (increases refcount)
     -> smp_add_present_cpu()
        (new CPU found)
     -> register_cpu()
     -> device_add()
     -> udev "add" event triggered -----------> udev rule sets CPU online
                                             -> echo 1 > /sys/.../online
                                             -> lock_device_hotplug_sysfs()
                                                (this is missing in rescan path)
                                             -> device_online()
                                             -> (**) device_lock(new CPU dev)
                                             -> cpu_up()
                                             -> cpu_hotplug_begin()
                                                (loops until refcount == 0)
                                                -> deadlock with (*)
     -> bus_probe_device()
     -> device_attach()
     -> device_lock(new CPU dev)
        -> deadlock with (**)
    
    Fix this by taking the device_hotplug_lock in the CPU rescan path.
    
    Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9795d6139af775e68daf955d7e3d96b4aeb24d0b
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Tue Jan 8 12:44:57 2019 +0100

    s390/mm: always force a load of the primary ASCE on context switch
    
    commit a38662084c8bdb829ff486468c7ea801c13fcc34 upstream.
    
    The ASCE of an mm_struct can be modified after a task has been created,
    e.g. via crst_table_downgrade for a compat process. The active_mm logic
    to avoid the switch_mm call if the next task is a kernel thread can
    lead to a situation where switch_mm is called where 'prev == next' is
    true but 'prev->context.asce == next->context.asce' is not.
    
    This can lead to a situation where a CPU uses the outdated ASCE to run
    a task. The result can be a crash, endless loops and really subtle
    problem due to TLBs being created with an invalid ASCE.
    
    Fixes: 53e857f30867 ("s390/mm,tlb: race of lazy TLB flush vs. recreation")
    Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    [bwh: Backported to 3.16:
     - Keep the updates of mm_context_t::attach_count conditional on prev != next
     - Keep the update of mm_context_t::cpu_attach_mask conditional on both
       MACHINE_HAS_TLB_LC and prev != next
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7804d76c3675b4b1e442e3a89834665bcac45645
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Fri Nov 9 09:21:47 2018 +0100

    s390/early: improve machine detection
    
    commit 03aa047ef2db4985e444af6ee1c1dd084ad9fb4c upstream.
    
    Right now the early machine detection code check stsi 3.2.2 for "KVM"
    and set MACHINE_IS_VM if this is different. As the console detection
    uses diagnose 8 if MACHINE_IS_VM returns true this will crash Linux
    early for any non z/VM system that sets a different value than KVM.
    So instead of assuming z/VM, do not set any of MACHINE_IS_LPAR,
    MACHINE_IS_VM, or MACHINE_IS_KVM.
    
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cce7cb83976e0413f0b1e77f70e1d0aa508e7d20
Author: Vlad Tsyrklevich <vlad@tsyrklevich.net>
Date:   Fri Jan 11 14:34:38 2019 +0100

    omap2fb: Fix stack memory disclosure
    
    commit a01421e4484327fe44f8e126793ed5a48a221e24 upstream.
    
    Using [1] for static analysis I found that the OMAPFB_QUERY_PLANE,
    OMAPFB_GET_COLOR_KEY, OMAPFB_GET_DISPLAY_INFO, and OMAPFB_GET_VRAM_INFO
    cases could all leak uninitialized stack memory--either due to
    uninitialized padding or 'reserved' fields.
    
    Fix them by clearing the shared union used to store copied out data.
    
    [1] https://github.com/vlad902/kernel-uninitialized-memory-checker
    
    Signed-off-by: Vlad Tsyrklevich <vlad@tsyrklevich.net>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Fixes: b39a982ddecf ("OMAP: DSS2: omapfb driver")
    Cc: security@kernel.org
    [b.zolnierkie: prefix patch subject with "omap2fb: "]
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 570287c261aee05bf4c1f482ecfe27e8cfe99068
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Tue Jan 8 18:30:57 2019 +0000

    cifs: Fix potential OOB access of lock element array
    
    commit b9a74cde94957d82003fb9f7ab4777938ca851cd upstream.
    
    If maxBuf is small but non-zero, it could result in a zero sized lock
    element array which we would then try and access OOB.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bcf0ba6df54e6c376ab898082858b56088a2e4eb
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Thu Jan 10 11:27:28 2019 -0800

    CIFS: Do not hide EINTR after sending network packets
    
    commit ee13919c2e8d1f904e035ad4b4239029a8994131 upstream.
    
    Currently we hide EINTR code returned from sock_sendmsg()
    and return 0 instead. This makes a caller think that we
    successfully completed the network operation which is not
    true. Fix this by properly returning EINTR to callers.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3163a50fb5a49839bb26b7702723b8b532fa3599
Author: Yi Zeng <yizeng@asrmicro.com>
Date:   Wed Jan 9 15:33:07 2019 +0800

    i2c: dev: prevent adapter retries and timeout being set as minus value
    
    commit 6ebec961d59bccf65d08b13fc1ad4e6272a89338 upstream.
    
    If adapter->retries is set to a minus value from user space via ioctl,
    it will make __i2c_transfer and __i2c_smbus_xfer skip the calling to
    adapter->algo->master_xfer and adapter->algo->smbus_xfer that is
    registered by the underlying bus drivers, and return value 0 to all the
    callers. The bus driver will never be accessed anymore by all users,
    besides, the users may still get successful return value without any
    error or information log print out.
    
    If adapter->timeout is set to minus value from user space via ioctl,
    it will make the retrying loop in __i2c_transfer and __i2c_smbus_xfer
    always break after the the first try, due to the time_after always
    returns true.
    
    Signed-off-by: Yi Zeng <yizeng@asrmicro.com>
    [wsa: minor grammar updates to commit message]
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 59be1b5ad9879f4a61d53a0cf13da273cdeecb1d
Author: YunQiang Su <ysu@wavecomp.com>
Date:   Tue Jan 8 13:45:10 2019 +0800

    Disable MSI also when pcie-octeon.pcie_disable on
    
    commit a214720cbf50cd8c3f76bbb9c3f5c283910e9d33 upstream.
    
    Octeon has an boot-time option to disable pcie.
    
    Since MSI depends on PCI-E, we should also disable MSI also with
    this option is on in order to avoid inadvertently accessing PCIe
    registers.
    
    Signed-off-by: YunQiang Su <ysu@wavecomp.com>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Cc: pburton@wavecomp.com
    Cc: linux-mips@vger.kernel.org
    Cc: aaro.koskinen@iki.fi
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ccd67cd15b3e3b2f3d1b03fd4336ea7ab5d35211
Author: Eric Biggers <ebiggers@google.com>
Date:   Sun Dec 16 23:23:22 2018 -0800

    crypto: authenc - fix parsing key with misaligned rta_len
    
    commit 8f9c469348487844328e162db57112f7d347c49f upstream.
    
    Keys for "authenc" AEADs are formatted as an rtattr containing a 4-byte
    'enckeylen', followed by an authentication key and an encryption key.
    crypto_authenc_extractkeys() parses the key to find the inner keys.
    
    However, it fails to consider the case where the rtattr's payload is
    longer than 4 bytes but not 4-byte aligned, and where the key ends
    before the next 4-byte aligned boundary.  In this case, 'keylen -=
    RTA_ALIGN(rta->rta_len);' underflows to a value near UINT_MAX.  This
    causes a buffer overread and crash during crypto_ahash_setkey().
    
    Fix it by restricting the rtattr payload to the expected size.
    
    Reproducer using AF_ALG:
    
            #include <linux/if_alg.h>
            #include <linux/rtnetlink.h>
            #include <sys/socket.h>
    
            int main()
            {
                    int fd;
                    struct sockaddr_alg addr = {
                            .salg_type = "aead",
                            .salg_name = "authenc(hmac(sha256),cbc(aes))",
                    };
                    struct {
                            struct rtattr attr;
                            __be32 enckeylen;
                            char keys[1];
                    } __attribute__((packed)) key = {
                            .attr.rta_len = sizeof(key),
                            .attr.rta_type = 1 /* CRYPTO_AUTHENC_KEYA_PARAM */,
                    };
    
                    fd = socket(AF_ALG, SOCK_SEQPACKET, 0);
                    bind(fd, (void *)&addr, sizeof(addr));
                    setsockopt(fd, SOL_ALG, ALG_SET_KEY, &key, sizeof(key));
            }
    
    It caused:
    
            BUG: unable to handle kernel paging request at ffff88007ffdc000
            PGD 2e01067 P4D 2e01067 PUD 2e04067 PMD 2e05067 PTE 0
            Oops: 0000 [#1] SMP
            CPU: 0 PID: 883 Comm: authenc Not tainted 4.20.0-rc1-00108-g00c9fe37a7f27 #13
            Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-20181126_142135-anatol 04/01/2014
            RIP: 0010:sha256_ni_transform+0xb3/0x330 arch/x86/crypto/sha256_ni_asm.S:155
            [...]
            Call Trace:
             sha256_ni_finup+0x10/0x20 arch/x86/crypto/sha256_ssse3_glue.c:321
             crypto_shash_finup+0x1a/0x30 crypto/shash.c:178
             shash_digest_unaligned+0x45/0x60 crypto/shash.c:186
             crypto_shash_digest+0x24/0x40 crypto/shash.c:202
             hmac_setkey+0x135/0x1e0 crypto/hmac.c:66
             crypto_shash_setkey+0x2b/0xb0 crypto/shash.c:66
             shash_async_setkey+0x10/0x20 crypto/shash.c:223
             crypto_ahash_setkey+0x2d/0xa0 crypto/ahash.c:202
             crypto_authenc_setkey+0x68/0x100 crypto/authenc.c:96
             crypto_aead_setkey+0x2a/0xc0 crypto/aead.c:62
             aead_setkey+0xc/0x10 crypto/algif_aead.c:526
             alg_setkey crypto/af_alg.c:223 [inline]
             alg_setsockopt+0xfe/0x130 crypto/af_alg.c:256
             __sys_setsockopt+0x6d/0xd0 net/socket.c:1902
             __do_sys_setsockopt net/socket.c:1913 [inline]
             __se_sys_setsockopt net/socket.c:1910 [inline]
             __x64_sys_setsockopt+0x1f/0x30 net/socket.c:1910
             do_syscall_64+0x4a/0x180 arch/x86/entry/common.c:290
             entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: e236d4a89a2f ("[CRYPTO] authenc: Move enckeylen into key itself")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2a04467f95fe5017be44769e677de1dfe0c0731f
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Tue Jan 8 00:08:18 2019 +0100

    ARM: dts: kirkwood: Fix polarity of GPIO fan lines
    
    commit b5f034845e70916fd33e172fad5ad530a29c10ab upstream.
    
    These two lines are active high, not active low. The bug was
    found when we changed the kernel to respect the polarity defined
    in the device tree.
    
    Fixes: 1b90e06b1429 ("ARM: kirkwood: Use devicetree to define DNS-32[05] fan")
    Cc: Jamie Lentin <jm@lentin.co.uk>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Cc: Andrew Lunn <andrew@lunn.ch>
    Cc: Gregory Clement <gregory.clement@bootlin.com>
    Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
    Cc: Julien D'Ascenzio <jdascenzio@posteo.net>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Tested-by: Jamie Lentin <jm@lentin.co.uk>
    Reported-by: Julien D'Ascenzio <jdascenzio@posteo.net>
    Tested-by: Julien D'Ascenzio <jdascenzio@posteo.net>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e7254cb5da9aee39e160870499f816f782e28019
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Tue Jan 8 19:47:38 2019 +0100

    rbd: don't return 0 on unmap if RBD_DEV_FLAG_REMOVING is set
    
    commit 85f5a4d666fd9be73856ed16bb36c5af5b406b29 upstream.
    
    There is a window between when RBD_DEV_FLAG_REMOVING is set and when
    the device is removed from rbd_dev_list.  During this window, we set
    "already" and return 0.
    
    Returning 0 from write(2) can confuse userspace tools because
    0 indicates that nothing was written.  In particular, "rbd unmap"
    will retry the write multiple times a second:
    
      10:28:05.463299 write(4, "0", 1)        = 0
      10:28:05.463509 write(4, "0", 1)        = 0
      10:28:05.463720 write(4, "0", 1)        = 0
      10:28:05.463942 write(4, "0", 1)        = 0
      10:28:05.464155 write(4, "0", 1)        = 0
    
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Tested-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6a33ea25c57c27065d8244fc8174164f92897f8e
Author: Ivan Mironov <mironov.ivan@gmail.com>
Date:   Tue Jan 8 12:23:53 2019 +0500

    drm/fb-helper: Ignore the value of fb_var_screeninfo.pixclock
    
    commit 66a8d5bfb518f9f12d47e1d2dce1732279f9451e upstream.
    
    Strict requirement of pixclock to be zero breaks support of SDL 1.2
    which contains hardcoded table of supported video modes with non-zero
    pixclock values[1].
    
    To better understand which pixclock values are considered valid and how
    driver should handle these values, I briefly examined few existing fbdev
    drivers and documentation in Documentation/fb/. And it looks like there
    are no strict rules on that and actual behaviour varies:
    
            * some drivers treat (pixclock == 0) as "use defaults" (uvesafb.c);
            * some treat (pixclock == 0) as invalid value which leads to
              -EINVAL (clps711x-fb.c);
            * some pass converted pixclock value to hardware (uvesafb.c);
            * some are trying to find nearest value from predefined table
              (vga16fb.c, video_gx.c).
    
    Given this, I believe that it should be safe to just ignore this value if
    changing is not supported. It seems that any portable fbdev application
    which was not written only for one specific device working under one
    specific kernel version should not rely on any particular behaviour of
    pixclock anyway.
    
    However, while enabling SDL1 applications to work out of the box when
    there is no /etc/fb.modes with valid settings, this change affects the
    video mode choosing logic in SDL. Depending on current screen
    resolution, contents of /etc/fb.modes and resolution requested by
    application, this may lead to user-visible difference (not always):
    image will be displayed in a right way, but it will be aligned to the
    left instead of center. There is no "right behaviour" here as well, as
    emulated fbdev, opposing to old fbdev drivers, simply ignores any
    requsts of video mode changes with resolutions smaller than current.
    
    The easiest way to reproduce this problem is to install sdl-sopwith[2],
    remove /etc/fb.modes file if it exists, and then try to run sopwith
    from console without X. At least in Fedora 29, sopwith may be simply
    installed from standard repositories.
    
    [1] SDL 1.2.15 source code, src/video/fbcon/SDL_fbvideo.c, vesa_timings
    [2] http://sdl-sopwith.sourceforge.net/
    
    Signed-off-by: Ivan Mironov <mironov.ivan@gmail.com>
    Fixes: 79e539453b34e ("DRM: i915: add mode setting support")
    Fixes: 771fe6b912fca ("drm/radeon: introduce kernel modesetting for radeon hardware")
    Fixes: 785b93ef8c309 ("drm/kms: move driver specific fb common code to helper functions (v2)")
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190108072353.28078-3-mironov.ivan@gmail.com
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 77a915102263c104c93442ca9712538dbffe66d5
Author: Ivan Mironov <mironov.ivan@gmail.com>
Date:   Tue Jan 8 12:23:52 2019 +0500

    drm/fb-helper: Partially bring back workaround for bugs of SDL 1.2
    
    commit 62d85b3bf9d978ed4b6b2aeef5cf0ccf1423906e upstream.
    
    SDL 1.2 sets all fields related to the pixel format to zero in some
    cases[1]. Prior to commit db05c48197759 ("drm: fb-helper: Reject all
    pixel format changing requests"), there was an unintentional workaround
    for this that existed for more than a decade. First in device-specific DRM
    drivers, then here in drm_fb_helper.c.
    
    Previous code containing this workaround just ignores pixel format fields
    from userspace code. Not a good thing either, as this way, driver may
    silently use pixel format different from what client actually requested,
    and this in turn will lead to displaying garbage on the screen. I think
    that returning EINVAL to userspace in this particular case is the right
    option, so I decided to left code from problematic commit untouched
    instead of just reverting it entirely.
    
    Here is the steps required to reproduce this problem exactly:
            1) Compile fceux[2] with SDL 1.2.15 and without GTK or OpenGL
               support. SDL should be compiled with fbdev support (which is
               on by default).
            2) Create /etc/fb.modes with following contents (values seems
               not used, and just required to trigger problematic code in
               SDL):
    
                    mode "test"
                        geometry 1 1 1 1 1
                        timings 1 1 1 1 1 1 1
                    endmode
    
            3) Create ~/.fceux/fceux.cfg with following contents:
    
                    SDL.Hotkeys.Quit = 27
                    SDL.DoubleBuffering = 1
    
            4) Ensure that screen resolution is at least 1280x960 (e.g.
               append "video=Virtual-1:1280x960-32" to the kernel cmdline
               for qemu/QXL).
    
            5) Try to run fceux on VT with some ROM file[3]:
    
                    # ./fceux color_test.nes
    
    [1] SDL 1.2.15 source code, src/video/fbcon/SDL_fbvideo.c,
        FB_SetVideoMode()
    [2] http://www.fceux.com
    [3] Example ROM: https://github.com/bokuweb/rustynes/blob/master/roms/color_test.nes
    
    Reported-by: saahriktu <mail@saahriktu.org>
    Suggested-by: saahriktu <mail@saahriktu.org>
    Fixes: db05c48197759 ("drm: fb-helper: Reject all pixel format changing requests")
    Signed-off-by: Ivan Mironov <mironov.ivan@gmail.com>
    [danvet: Delete misleading comment.]
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190108072353.28078-2-mironov.ivan@gmail.com
    Link: https://patchwork.freedesktop.org/patch/msgid/20190108072353.28078-2-mironov.ivan@gmail.com
    [bwh: Backported to 3.16:
     - Use fb->depth instead of fb->format->depth
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c8d92394ed8c445f85691261ecc8f1cef325a9fa
Author: Dexuan Cui <decui@microsoft.com>
Date:   Mon Dec 17 20:16:09 2018 +0000

    Drivers: hv: vmbus: Check for ring when getting debug info
    
    commit ba50bf1ce9a51fc97db58b96d01306aa70bc3979 upstream.
    
    fc96df16a1ce is good and can already fix the "return stack garbage" issue,
    but let's also improve hv_ringbuffer_get_debuginfo(), which would silently
    return stack garbage, if people forget to check channel->state or
    ring_info->ring_buffer, when using the function in the future.
    
    Having an error check in the function would eliminate the potential risk.
    
    Add a Fixes tag to indicate the patch depdendency.
    
    Fixes: fc96df16a1ce ("Drivers: hv: vmbus: Return -EINVAL for the sys files for unopened channels")
    Cc: K. Y. Srinivasan <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bd8e989ecd70a05cca059892fefe1170bc661191
Author: Logan Gunthorpe <logang@deltatee.com>
Date:   Tue Jan 8 13:50:43 2019 -0700

    scsi: isci: initialize shost fully before calling scsi_add_host()
    
    commit cc29a1b0a3f2597ce887d339222fa85b9307706d upstream.
    
    scsi_mq_setup_tags(), which is called by scsi_add_host(), calculates the
    command size to allocate based on the prot_capabilities. In the isci
    driver, scsi_host_set_prot() is called after scsi_add_host() so the command
    size gets calculated to be smaller than it needs to be.  Eventually,
    scsi_mq_init_request() locates the 'prot_sdb' after the command assuming it
    was sized correctly and a buffer overrun may occur.
    
    However, seeing blk_mq_alloc_rqs() rounds up to the nearest cache line
    size, the mistake can go unnoticed.
    
    The bug was noticed after the struct request size was reduced by commit
    9d037ad707ed ("block: remove req->timeout_list")
    
    Which likely reduced the allocated space for the request by an entire cache
    line, enough that the overflow could be hit and it caused a panic, on boot,
    at:
    
      RIP: 0010:t10_pi_complete+0x77/0x1c0
      Call Trace:
        <IRQ>
        sd_done+0xf5/0x340
        scsi_finish_command+0xc3/0x120
        blk_done_softirq+0x83/0xb0
        __do_softirq+0xa1/0x2e6
        irq_exit+0xbc/0xd0
        call_function_single_interrupt+0xf/0x20
        </IRQ>
    
    sd_done() would call scsi_prot_sg_count() which reads the number of
    entities in 'prot_sdb', but seeing 'prot_sdb' is located after the end of
    the allocated space it reads a garbage number and erroneously calls
    t10_pi_complete().
    
    To prevent this, the calls to scsi_host_set_prot() are moved into
    isci_host_alloc() before the call to scsi_add_host(). Out of caution, also
    move the similar call to scsi_host_set_guard().
    
    Fixes: 3d2d75254915 ("[SCSI] isci: T10 DIF support")
    Link: http://lkml.kernel.org/r/da851333-eadd-163a-8c78-e1f4ec5ec857@deltatee.com
    Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
    Cc: Intel SCU Linux support <intel-linux-scu@intel.com>
    Cc: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
    Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
    Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Jeff Moyer <jmoyer@redhat.com>
    Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
    Reviewed-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 990de13531531239c2c0833b38afc215e2973e39
Author: Ivan Mironov <mironov.ivan@gmail.com>
Date:   Sun Dec 23 12:41:58 2018 +0500

    scsi: sd: Fix cache_type_store()
    
    commit 44759979a49bfd2d20d789add7fa81a21eb1a4ab upstream.
    
    Changing of caching mode via /sys/devices/.../scsi_disk/.../cache_type may
    fail if device responds to MODE SENSE command with DPOFUA flag set, and
    then checks this flag to be not set on MODE SELECT command.
    
    In this scenario, when trying to change cache_type, write always fails:
    
            # echo "none" >cache_type
            bash: echo: write error: Invalid argument
    
    And following appears in dmesg:
    
            [13007.865745] sd 1:0:1:0: [sda] Sense Key : Illegal Request [current]
            [13007.865753] sd 1:0:1:0: [sda] Add. Sense: Invalid field in parameter list
    
    From SBC-4 r15, 6.5.1 "Mode pages overview", description of DEVICE-SPECIFIC
    PARAMETER field in the mode parameter header:
            ...
            The write protect (WP) bit for mode data sent with a MODE SELECT
            command shall be ignored by the device server.
            ...
            The DPOFUA bit is reserved for mode data sent with a MODE SELECT
            command.
            ...
    
    The remaining bits in the DEVICE-SPECIFIC PARAMETER byte are also reserved
    and shall be set to zero.
    
    [mkp: shuffled commentary to commit description]
    
    Signed-off-by: Ivan Mironov <mironov.ivan@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d435350eb11d9c120f7f0dac9a8492a03b8c4412
Author: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
Date:   Fri Oct 30 16:04:43 2015 -0200

    sd: Clear PS bit before Mode Select.
    
    commit 2c5d16d6a9e7218e57b716e4fd9d77c776d21471 upstream.
    
    According to SPC-4, in a Mode Select, the PS bit in Mode Pages is
    reserved and must be set to 0 by the driver.  In the sd implementation,
    function cache_type_store does a Mode Sense, which might set the PS bit
    on the read buffer, followed by a Mode Select, which receives the same
    buffer, without explicitly clearing the PS bit.  So, in cases where
    target supports saving the Mode Page to a non-volatile location, we end
    up doing a Mode Select with the PS bit set, which could cause an illegal
    request error if the target is checking this.
    
    This was observed on a new firmware change, which was subsequently
    reverted, but this changes sd.c to be more compliant with SPC-4.
    
    This patch clears the PS bit in the buffer returned by Mode Select,
    right before it is used in the Mode Select command.
    
    Signed-off-by: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1953f96c0d5e5b93eec20c0a47aacf34ac71676e
Author: Jason Gunthorpe <jgg@mellanox.com>
Date:   Tue Jan 8 23:27:06 2019 +0000

    packet: Do not leak dev refcounts on error exit
    
    commit d972f3dce8d161e2142da0ab1ef25df00e2f21a9 upstream.
    
    'dev' is non NULL when the addr_len check triggers so it must goto a label
    that does the dev_put otherwise dev will have a leaked refcount.
    
    This bug causes the ib_ipoib module to become unloadable when using
    systemd-network as it triggers this check on InfiniBand links.
    
    Fixes: 99137b7888f4 ("packet: validate address length")
    Reported-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1241f9720c2b11664c34ff7d411358121b6201b9
Author: Willem de Bruijn <willemb@google.com>
Date:   Sat Dec 22 16:53:45 2018 -0500

    packet: validate address length if non-zero
    
    commit 6b8d95f1795c42161dc0984b6863e95d6acf24ed upstream.
    
    Validate packet socket address length if a length is given. Zero
    length is equivalent to not setting an address.
    
    Fixes: 99137b7888f4 ("packet: validate address length")
    Reported-by: Ido Schimmel <idosch@idosch.org>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 876acb510c5eb430a1fd73fc525c6aee21eb237b
Author: Willem de Bruijn <willemb@google.com>
Date:   Fri Dec 21 12:06:59 2018 -0500

    packet: validate address length
    
    commit 99137b7888f4058087895d035d81c6b2d31015c5 upstream.
    
    Packet sockets with SOCK_DGRAM may pass an address for use in
    dev_hard_header. Ensure that it is of sufficient length.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 555aa74fa8dff59d03f3e73535d31fcfd9bf2d6a
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Jan 8 10:43:30 2019 +0300

    ALSA: cs46xx: Potential NULL dereference in probe
    
    commit 1524f4e47f90b27a3ac84efbdd94c63172246a6f upstream.
    
    The "chip->dsp_spos_instance" can be NULL on some of the ealier error
    paths in snd_cs46xx_create().
    
    Reported-by: "Yavuz, Tuba" <tuba@ece.ufl.edu>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 35a0151943e72a57e0ad9ee7c98f7a8f7cd29f4f
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Tue Dec 25 20:29:48 2018 -0600

    ASoC: atom: fix a missing check of snd_pcm_lib_malloc_pages
    
    commit 44fabd8cdaaa3acb80ad2bb3b5c61ae2136af661 upstream.
    
    snd_pcm_lib_malloc_pages() may fail, so let's check its status and
    return its error code upstream.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bf9acddc04762d7bf308a3c34bcb29c7d376044f
Author: b-ak <anur.bhargav@gmail.com>
Date:   Mon Jan 7 22:30:22 2019 +0530

    ASoC: tlv320aic32x4: Kernel OOPS while entering DAPM standby mode
    
    commit 667e9334fa64da2273e36ce131b05ac9e47c5769 upstream.
    
    During the bootup of the kernel, the DAPM bias level is in the OFF
    state. As soon as the DAPM framework kicks in it pushes the codec
    into STANDBY state.
    
    The probe function doesn't prepare the clock, and STANDBY state
    does a clk_disable_unprepare() without checking the previous state.
    This leads to an OOPS.
    
    Not transitioning from an OFF state to the STANDBY state fixes the
    problem.
    
    Signed-off-by: b-ak <anur.bhargav@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    [bwh: Backported to 3.16:
     - Open-code snd_soc_component_get_bias_level()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1a429f7526f1e7391b6c046daa1877666b659759
Author: Jack Stocker <jackstocker.93@gmail.com>
Date:   Thu Jan 3 21:56:53 2019 +0000

    USB: Add USB_QUIRK_DELAY_CTRL_MSG quirk for Corsair K70 RGB
    
    commit 3483254b89438e60f719937376c5e0ce2bc46761 upstream.
    
    To match the Corsair Strafe RGB, the Corsair K70 RGB also requires
    USB_QUIRK_DELAY_CTRL_MSG to completely resolve boot connection issues
    discussed here: https://github.com/ckb-next/ckb-next/issues/42.
    Otherwise roughly 1 in 10 boots the keyboard will fail to be detected.
    
    Patch that applied delay control quirk for Corsair Strafe RGB:
    cb88a0588717 ("usb: quirks: add control message delay for 1b1c:1b20")
    
    Previous K70 RGB patch to add delay-init quirk:
    7a1646d92257 ("Add delay-init quirk for Corsair K70 RGB keyboards")
    
    Signed-off-by: Jack Stocker <jackstocker.93@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ff00acdf96ccfa28bb45bfb9546480a874ca58c9
Author: Icenowy Zheng <icenowy@aosc.io>
Date:   Thu Jan 3 11:26:18 2019 +0800

    USB: storage: add quirk for SMI SM3350
    
    commit 0a99cc4b8ee83885ab9f097a3737d1ab28455ac0 upstream.
    
    The SMI SM3350 USB-UFS bridge controller cannot handle long sense request
    correctly and will make the chip refuse to do read/write when requested
    long sense.
    
    Add a bad sense quirk for it.
    
    Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7cf51c32103c64db1d47aacf4ce9198128384496
Author: Icenowy Zheng <icenowy@aosc.io>
Date:   Thu Jan 3 11:26:17 2019 +0800

    USB: storage: don't insert sane sense for SPC3+ when bad sense specified
    
    commit c5603d2fdb424849360fe7e3f8c1befc97571b8c upstream.
    
    Currently the code will set US_FL_SANE_SENSE flag unconditionally if
    device claims SPC3+, however we should allow US_FL_BAD_SENSE flag to
    prevent this behavior, because SMI SM3350 UFS-USB bridge controller,
    which claims SPC4, will show strange behavior with 96-byte sense
    (put the chip into a wrong state that cannot read/write anything).
    
    Check the presence of US_FL_BAD_SENSE when assuming US_FL_SANE_SENSE on
    SPC4+ devices.
    
    Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 30da1606a49bce07aa79eaf5f59253ba7e82d426
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Fri Dec 28 16:15:41 2018 +0100

    usb: cdc-acm: send ZLP for Telit 3G Intel based modems
    
    commit 34aabf918717dd14e05051896aaecd3b16b53d95 upstream.
    
    Telit 3G Intel based modems require zero packet to be sent if
    out data size is equal to the endpoint max packet size.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f2e39fa4414f7b6116bdb6efbe085cddf89cd261
Author: Max Schulze <max.schulze@posteo.de>
Date:   Mon Jan 7 08:31:49 2019 +0100

    USB: serial: simple: add Motorola Tetra TPG2200 device id
    
    commit b81c2c33eab79dfd3650293b2227ee5c6036585c upstream.
    
    Add new Motorola Tetra device id for Motorola Solutions TETRA PEI device
    
    T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=0cad ProdID=9016 Rev=24.16
    S:  Manufacturer=Motorola Solutions, Inc.
    S:  Product=TETRA PEI interface
    C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usb_serial_simple
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usb_serial_simple
    
    Signed-off-by: Max Schulze <max.schulze@posteo.de>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit de4c8e323421a8a097e10379477e11fa096d4acb
Author: Hui Peng <benquike@163.com>
Date:   Tue Dec 25 18:11:52 2018 -0500

    ALSA: usb-audio: Fix an out-of-bound read in create_composite_quirks
    
    commit cbb2ebf70daf7f7d97d3811a2ff8e39655b8c184 upstream.
    
    In `create_composite_quirk`, the terminating condition of for loops is
    `quirk->ifnum < 0`. So any composite quirks should end with `struct
    snd_usb_audio_quirk` object with ifnum < 0.
    
        for (quirk = quirk_comp->data; quirk->ifnum >= 0; ++quirk) {
    
            .....
        }
    
    the data field of Bower's & Wilkins PX headphones usb device device quirks
    do not end with {.ifnum = -1}, wihch may result in out-of-bound read.
    
    This Patch fix the bug by adding an ending quirk object.
    
    Fixes: 240a8af929c7 ("ALSA: usb-audio: Add a quirck for B&W PX headphones")
    Signed-off-by: Hui Peng <benquike@163.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8a6e14da42224e72cef6d354ae06ba3056f7661e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 2 17:12:21 2019 +0100

    ALSA: usb-audio: Always check descriptor sizes in parser code
    
    commit 3e96d7280f16e2f787307f695a31296b9e4a1cd7 upstream.
    
    There are a few places where we access the data without checking the
    actual object size from the USB audio descriptor.  This may result in
    OOB access, as recently reported.
    
    This patch addresses these missing checks.  Most of added codes are
    simple bLength checks in the caller side.  For the input and output
    terminal parsers, we put the length check in the parser functions.
    For the input terminal, a new argument is added to distinguish between
    UAC1 and the rest, as they treat different objects.
    
    Reported-by: Mathias Payer <mathias.payer@nebelwelt.net>
    Reported-by: Hui Peng <benquike@163.com>
    Tested-by: Hui Peng <benquike@163.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16:
     - Drop changes in parse_audio_input_terminal() and UAC3 handling
     - Adjust context, indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cacb39e5e4b7de790939b174165503bbe8c82208
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Dec 19 12:36:27 2018 +0100

    ALSA: usb-audio: Avoid access before bLength check in build_audio_procunit()
    
    commit f4351a199cc120ff9d59e06d02e8657d08e6cc46 upstream.
    
    The parser for the processing unit reads bNrInPins field before the
    bLength sanity check, which may lead to an out-of-bound access when a
    malformed descriptor is given.  Fix it by assignment after the bLength
    check.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b1c840e32de6ee663645dcb76e43e06de51bd598
Author: Jonathan Hunter <jonathanh@nvidia.com>
Date:   Tue Nov 13 08:56:31 2018 +0000

    mfd: tps6586x: Handle interrupts on suspend
    
    commit ac4ca4b9f4623ba5e1ea7a582f286567c611e027 upstream.
    
    The tps6586x driver creates an irqchip that is used by its various child
    devices for managing interrupts. The tps6586x-rtc device is one of its
    children that uses the tps6586x irqchip. When using the tps6586x-rtc as
    a wake-up device from suspend, the following is seen:
    
     PM: Syncing filesystems ... done.
     Freezing user space processes ... (elapsed 0.001 seconds) done.
     OOM killer disabled.
     Freezing remaining freezable tasks ... (elapsed 0.000 seconds) done.
     Disabling non-boot CPUs ...
     Entering suspend state LP1
     Enabling non-boot CPUs ...
     CPU1 is up
     tps6586x 3-0034: failed to read interrupt status
     tps6586x 3-0034: failed to read interrupt status
    
    The reason why the tps6586x interrupt status cannot be read is because
    the tps6586x interrupt is not masked during suspend and when the
    tps6586x-rtc interrupt occurs, to wake-up the device, the interrupt is
    seen before the i2c controller has been resumed in order to read the
    tps6586x interrupt status.
    
    The tps6586x-rtc driver sets it's interrupt as a wake-up source during
    suspend, which gets propagated to the parent tps6586x interrupt.
    However, the tps6586x-rtc driver cannot disable it's interrupt during
    suspend otherwise we would never be woken up and so the tps6586x must
    disable it's interrupt instead.
    
    Prevent the tps6586x interrupt handler from executing on exiting suspend
    before the i2c controller has been resumed by disabling the tps6586x
    interrupt on entering suspend and re-enabling it on resuming from
    suspend.
    
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
    Tested-by: Dmitry Osipenko <digetx@gmail.com>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a7a46eeccda2af066f1aa10f42da6a08a98084b5
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Oct 25 15:43:44 2018 +0300

    mfd: ab8500-core: Return zero in get_register_interruptible()
    
    commit 10628e3ecf544fa2e4e24f8e112d95c37884dc98 upstream.
    
    This function is supposed to return zero on success or negative error
    codes on error.  Unfortunately, there is a bug so it sometimes returns
    non-zero, positive numbers on success.
    
    I noticed this bug during review and I can't test it.  It does appear
    that the return is sometimes propogated back to _regmap_read() where all
    non-zero returns are treated as failure so this may affect run time.
    
    Fixes: 47c1697508f2 ("mfd: Align ab8500 with the abx500 interface")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit db7d8a82d1e8be8bf2e9acaf4d543e33d7da5d70
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Dec 30 18:25:00 2018 +0100

    ACPI: power: Skip duplicate power resource references in _PRx
    
    commit 7d7b467cb95bf29597b417d4990160d4ea6d69b9 upstream.
    
    Some ACPI tables contain duplicate power resource references like this:
    
            Name (_PR0, Package (0x04)  // _PR0: Power Resources for D0
            {
                P28P,
                P18P,
                P18P,
                CLK4
            })
    
    This causes a WARN_ON in sysfs_add_link_to_group() because we end up
    adding a link to the same acpi_device twice:
    
    sysfs: cannot create duplicate filename '/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:00/OVTI2680:00/power_resources_D0/LNXPOWER:0a'
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.19.12-301.fc29.x86_64 #1
    Hardware name: Insyde CherryTrail/Type2 - Board Product Name, BIOS jumperx.T87.KFBNEEA02 04/13/2016
    Call Trace:
     dump_stack+0x5c/0x80
     sysfs_warn_dup.cold.3+0x17/0x2a
     sysfs_do_create_link_sd.isra.2+0xa9/0xb0
     sysfs_add_link_to_group+0x30/0x50
     acpi_power_expose_list+0x74/0xa0
     acpi_power_add_remove_device+0x50/0xa0
     acpi_add_single_object+0x26b/0x5f0
     acpi_bus_check_add+0xc4/0x250
     ...
    
    To address this issue, make acpi_extract_power_resources() check for
    duplicates and simply skip them when found.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    [ rjw: Subject & changelog, comments ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fb76bb612212c6602bb9f378da3b79081c938744
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Dec 31 22:31:01 2018 +0100

    batman-adv: Force mac header to start of data on xmit
    
    commit 9114daa825fc3f335f9bea3313ce667090187280 upstream.
    
    The caller of ndo_start_xmit may not already have called
    skb_reset_mac_header. The returned value of skb_mac_header/eth_hdr
    therefore can be in the wrong position and even outside the current skbuff.
    This for example happens when the user binds to the device using a
    PF_PACKET-SOCK_RAW with enabled qdisc-bypass:
    
      int opt = 4;
      setsockopt(sock, SOL_PACKET, PACKET_QDISC_BYPASS, &opt, sizeof(opt));
    
    Since eth_hdr is used all over the codebase, the batadv_interface_tx
    function must always take care of resetting it.
    
    Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
    Reported-by: syzbot+9d7405c7faa390e60b4e@syzkaller.appspotmail.com
    Reported-by: syzbot+7d20bc3f1ddddc0f9079@syzkaller.appspotmail.com
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c8338da68e222dc192c18cb9bd4d88007f04c3d4
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sun Dec 30 12:46:01 2018 +0100

    batman-adv: Avoid WARN on net_device without parent in netns
    
    commit 955d3411a17f590364238bd0d3329b61f20c1cd2 upstream.
    
    It is not allowed to use WARN* helpers on potential incorrect input from
    the user or transient problems because systems configured as panic_on_warn
    will reboot due to such a problem.
    
    A NULL return value of __dev_get_by_index can be caused by various problems
    which can either be related to the system configuration or problems
    (incorrectly returned network namespaces) in other (virtual) net_device
    drivers. batman-adv should not cause a (harmful) WARN in this situation and
    instead only report it via a simple message.
    
    Fixes: b7eddd0b3950 ("batman-adv: prevent using any virtual device created on batman-adv as hard-interface")
    Reported-by: syzbot+c764de0fcfadca9a8595@syzkaller.appspotmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>