commit 527a3db363a3bd7e6ae0a77da809e01847a9931c
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Jul 14 08:01:15 2019 +0200

    Linux 5.2.1

commit 090ce9c93e0b9733068829df85576289b3cee296
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Jun 28 14:37:48 2019 +0200

    staging: rtl8712: reduce stack usage, again
    
    commit fbd6b25009ac76b2034168cd21d5e01f8c2d83d1 upstream.
    
    An earlier patch I sent reduced the stack usage enough to get
    below the warning limit, and I could show this was safe, but with
    GCC_PLUGIN_STRUCTLEAK_BYREF_ALL, it gets worse again because large stack
    variables in the same function no longer overlap:
    
    drivers/staging/rtl8712/rtl871x_ioctl_linux.c: In function 'translate_scan.isra.2':
    drivers/staging/rtl8712/rtl871x_ioctl_linux.c:322:1: error: the frame size of 1200 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]
    
    Split out the largest two blocks in the affected function into two
    separate functions and mark those noinline_for_stack.
    
    Fixes: 8c5af16f7953 ("staging: rtl8712: reduce stack usage")
    Fixes: 81a56f6dcd20 ("gcc-plugins: structleak: Generalize to all variable types")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa7314b8450f15ae448044594916506793cd7cd3
Author: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date:   Sat Jun 29 14:48:23 2019 +0200

    staging: bcm2835-camera: Handle empty EOS buffers whilst streaming
    
    commit a26be06d6d96c10a9ab005e99d93fbb5d3babd98 upstream.
    
    The change to mapping V4L2 to MMAL buffers 1:1 didn't handle
    the condition we get with raw pixel buffers (eg YUV and RGB)
    direct from the camera's stills port. That sends the pixel buffer
    and then an empty buffer with the EOS flag set. The EOS buffer
    wasn't handled and returned an error up the stack.
    
    Handle the condition correctly by returning it to the component
    if streaming, or returning with an error if stopping streaming.
    
    Fixes: 938416707071 ("staging: bcm2835-camera: Remove V4L2/MMAL buffer remapping")
    Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
    Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
    Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Acked-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc545258185e66cc5fa240aecf2833d64d648cd8
Author: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date:   Sat Jun 29 14:13:30 2019 +0200

    staging: bcm2835-camera: Remove check of the number of buffers supplied
    
    commit bb8e97006d701ae725a177f8f322e5a75fa761b7 upstream.
    
    Before commit "staging: bcm2835-camera: Remove V4L2/MMAL buffer remapping"
    there was a need to ensure that there were sufficient buffers supplied from
    the user to cover those being sent to the VPU (always 1).
    
    Now the buffers are linked 1:1 between MMAL and V4L2,
    therefore there is no need for that check, and indeed it is wrong
    as there is no need to submit all the buffers before starting streaming.
    
    Fixes: 938416707071 ("staging: bcm2835-camera: Remove V4L2/MMAL buffer remapping")
    Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
    Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
    Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Acked-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b28ea4170726aa5a92fab87553cb53909f07841
Author: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date:   Sat Jun 29 14:13:29 2019 +0200

    staging: bcm2835-camera: Ensure all buffers are returned on disable
    
    commit 70ec64ccdaac5d8f634338e33b016c1c99831499 upstream.
    
    With the recent change to match MMAL and V4L2 buffers there
    is a need to wait for all MMAL buffers to be returned during
    stop_streaming.
    
    Fixes: 938416707071 ("staging: bcm2835-camera: Remove V4L2/MMAL buffer remapping")
    Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
    Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
    Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Acked-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd84f7f7b8524435289027eb08468f74b7ca2971
Author: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date:   Sat Jun 29 14:13:17 2019 +0200

    staging: bcm2835-camera: Replace spinlock protecting context_map with mutex
    
    commit 8dedab2903f152aa3cee9ae3d57c828dea0d356e upstream.
    
    The commit "staging: bcm2835-camera: Replace open-coded idr with a struct idr."
    replaced an internal implementation of an idr with the standard functions
    and a spinlock. idr_alloc(GFP_KERNEL) can sleep whilst calling kmem_cache_alloc
    to allocate the new node, but this is not valid whilst in an atomic context
    due to the spinlock.
    
    There is no need for this to be a spinlock as a standard mutex is
    sufficient.
    
    Fixes: 950fd867c635 ("staging: bcm2835-camera: Replace open-coded idr with a struct idr.")
    Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
    Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
    Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Acked-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67665643091aace6b966c9e5dbb526a6a42f32f2
Author: Colin Ian King <colin.king@canonical.com>
Date:   Sat Jun 8 12:50:31 2019 +0100

    staging: fsl-dpaa2/ethsw: fix memory leak of switchdev_work
    
    commit 5555ebbbac822b4fa28db2be15aaf98b3c21af26 upstream.
    
    In the default event case switchdev_work is being leaked because
    nothing is queued for work. Fix this by kfree'ing switchdev_work
    before returning NOTIFY_DONE.
    
    Addresses-Coverity: ("Resource leak")
    Fixes: 44baaa43d7cc ("staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7fc7b746828b9d0baf836fe8e027a31df6ce5eb4
Author: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Date:   Thu May 9 16:31:34 2019 +0200

    staging: vchiq: revert "switch to wait_for_completion_killable"
    
    commit 086efbabdc04563268372aaef4d66039d85ee76c upstream.
    
    The killable version of wait_for_completion() is meant to be used on
    situations where it should not fail at all costs, but still have the
    convenience of being able to kill it if really necessary. VCHIQ doesn't
    fit this criteria, as it's mainly used as an interface to V4L2 and ALSA
    devices.
    
    Fixes: a772f116702e ("staging: vchiq: switch to wait_for_completion_killable")
    Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
    Acked-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec1ce3a6d2402cf3a70a5283925a56724737fc4f
Author: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Date:   Thu May 9 16:31:35 2019 +0200

    staging: vchiq: make wait events interruptible
    
    commit 77cf3f5dcf35c8f547f075213dbc15146d44cc76 upstream.
    
    The killable version of wait_event() is meant to be used on situations
    where it should not fail at all costs, but still have the convenience of
    being able to kill it if really necessary. Wait events in VCHIQ doesn't
    fit this criteria, as it's mainly used as an interface to V4L2 and ALSA
    devices.
    
    Fixes: 852b2876a8a8 ("staging: vchiq: rework remove_event handling")
    Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
    Acked-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e5cde24770c1426e366cd018b8b3dc0b548ebe2
Author: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Date:   Thu May 9 16:31:33 2019 +0200

    staging: vchiq_2835_arm: revert "quit using custom down_interruptible()"
    
    commit 061ca1401f96c254e7f179bf97a1fc5c7f47e1e1 upstream.
    
    The killable version of down() is meant to be used on situations where
    it should not fail at all costs, but still have the convenience of being
    able to kill it if really necessary. VCHIQ doesn't fit this criteria, as
    it's mainly used as an interface to V4L2 and ALSA devices.
    
    Fixes: ff5979ad8636 ("staging: vchiq_2835_arm: quit using custom down_interruptible()")
    Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
    Acked-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89fda9ad58ccf560d577efdecae400f7b2b629fd
Author: Vishnu DASA <vdasa@vmware.com>
Date:   Fri May 24 15:13:10 2019 +0000

    VMCI: Fix integer overflow in VMCI handle arrays
    
    commit 1c2eb5b2853c9f513690ba6b71072d8eb65da16a upstream.
    
    The VMCI handle array has an integer overflow in
    vmci_handle_arr_append_entry when it tries to expand the array. This can be
    triggered from a guest, since the doorbell link hypercall doesn't impose a
    limit on the number of doorbell handles that a VM can create in the
    hypervisor, and these handles are stored in a handle array.
    
    In this change, we introduce a mandatory max capacity for handle
    arrays/lists to avoid excessive memory usage.
    
    Signed-off-by: Vishnu Dasa <vdasa@vmware.com>
    Reviewed-by: Adit Ranadive <aditr@vmware.com>
    Reviewed-by: Jorgen Hansen <jhansen@vmware.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ce6dfc897ac018c6370370dff1cd03c330c4815
Author: Ross Zwisler <zwisler@chromium.org>
Date:   Mon Jul 1 09:52:08 2019 -0600

    Revert "x86/build: Move _etext to actual end of .text"
    
    commit 013c66edf207ddb78422b8b636f56c87939c9e34 upstream.
    
    This reverts commit 392bef709659abea614abfe53cf228e7a59876a4.
    
    Per the discussion here:
    
      https://lkml.kernel.org/r/201906201042.3BF5CD6@keescook
    
    the above referenced commit breaks kernel compilation with old GCC
    toolchains as well as current versions of the Gold linker.
    
    Revert it to fix the regression and to keep the ability to compile the
    kernel with these tools.
    
    Signed-off-by: Ross Zwisler <zwisler@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Guenter Roeck <groeck@chromium.org>
    Cc: <stable@vger.kernel.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Johannes Hirte <johannes.hirte@datenkhaos.de>
    Cc: Klaus Kusche <klaus.kusche@computerix.info>
    Cc: samitolvanen@google.com
    Cc: Guenter Roeck <groeck@google.com>
    Link: https://lkml.kernel.org/r/20190701155208.211815-1-zwisler@google.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a53ab05d4c316d91fcc5b8b64a9e2de18175ae7
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Sat Jun 8 16:49:47 2019 +0200

    carl9170: fix misuse of device driver API
    
    commit feb09b2933275a70917a869989ea2823e7356be8 upstream.
    
    This patch follows Alan Stern's recent patch:
    "p54: Fix race between disconnect and firmware loading"
    
    that overhauled carl9170 buggy firmware loading and driver
    unbinding procedures.
    
    Since the carl9170 code was adapted from p54 it uses the
    same functions and is likely to have the same problem, but
    it's just that the syzbot hasn't reproduce them (yet).
    
    a summary from the changes (copied from the p54 patch):
     * Call usb_driver_release_interface() rather than
       device_release_driver().
    
     * Lock udev (the interface's parent) before unbinding the
       driver instead of locking udev->parent.
    
     * During the firmware loading process, take a reference
       to the USB interface instead of the USB device.
    
     * Don't take an unnecessary reference to the device during
       probe (and then don't drop it during disconnect).
    
    and
    
     * Make sure to prevent use-after-free bugs by explicitly
       setting the driver context to NULL after signaling the
       completion.
    
    Cc: <stable@vger.kernel.org>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb0ce48ae8b4c5c22eb1c9f17ce51ed6f04c527c
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Thu Jun 20 16:12:35 2019 -0600

    coresight: tmc-etf: Do not call smp_processor_id from preemptible
    
    commit 024c1fd9dbcc1d8a847f1311f999d35783921b7f upstream.
    
    During a perf session we try to allocate buffers on the "node" associated
    with the CPU the event is bound to. If it is not bound to a CPU, we
    use the current CPU node, using smp_processor_id(). However this is unsafe
    in a pre-emptible context and could generate the splats as below :
    
     BUG: using smp_processor_id() in preemptible [00000000] code: perf/2544
     caller is tmc_alloc_etf_buffer+0x5c/0x60
     CPU: 2 PID: 2544 Comm: perf Not tainted 5.1.0-rc6-147786-g116841e #344
     Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform, BIOS EDK II Feb  1 2019
     Call trace:
      dump_backtrace+0x0/0x150
      show_stack+0x14/0x20
      dump_stack+0x9c/0xc4
      debug_smp_processor_id+0x10c/0x110
      tmc_alloc_etf_buffer+0x5c/0x60
      etm_setup_aux+0x1c4/0x230
      rb_alloc_aux+0x1b8/0x2b8
      perf_mmap+0x35c/0x478
      mmap_region+0x34c/0x4f0
      do_mmap+0x2d8/0x418
      vm_mmap_pgoff+0xd0/0xf8
      ksys_mmap_pgoff+0x88/0xf8
      __arm64_sys_mmap+0x28/0x38
      el0_svc_handler+0xd8/0x138
      el0_svc+0x8/0xc
    
    Use NUMA_NO_NODE hint instead of using the current node for events
    not bound to CPUs.
    
    Fixes: 2e499bbc1a929ac ("coresight: tmc: implementing TMC-ETF AUX space API")
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Cc: stable <stable@vger.kernel.org> # 4.7+
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Link: https://lore.kernel.org/r/20190620221237.3536-4-mathieu.poirier@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0927f641fb6304341f999276d8a4b7e85dd845f4
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Thu Jun 20 16:12:34 2019 -0600

    coresight: tmc-etr: alloc_perf_buf: Do not call smp_processor_id from preemptible
    
    commit 3a8710392db2c70f74aed6f06b16e8bec0f05a35 upstream.
    
    During a perf session we try to allocate buffers on the "node" associated
    with the CPU the event is bound to. If it is not bound to a CPU, we
    use the current CPU node, using smp_processor_id(). However this is unsafe
    in a pre-emptible context and could generate the splats as below :
    
     BUG: using smp_processor_id() in preemptible [00000000] code: perf/1743
     caller is tmc_alloc_etr_buffer+0x1bc/0x1f0
     CPU: 1 PID: 1743 Comm: perf Not tainted 5.1.0-rc6-147786-g116841e #344
     Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform, BIOS EDK II Feb  1 2019
     Call trace:
      dump_backtrace+0x0/0x150
      show_stack+0x14/0x20
      dump_stack+0x9c/0xc4
      debug_smp_processor_id+0x10c/0x110
      tmc_alloc_etr_buffer+0x1bc/0x1f0
      etm_setup_aux+0x1c4/0x230
      rb_alloc_aux+0x1b8/0x2b8
      perf_mmap+0x35c/0x478
      mmap_region+0x34c/0x4f0
      do_mmap+0x2d8/0x418
      vm_mmap_pgoff+0xd0/0xf8
      ksys_mmap_pgoff+0x88/0xf8
      __arm64_sys_mmap+0x28/0x38
      el0_svc_handler+0xd8/0x138
      el0_svc+0x8/0xc
    
    Use NUMA_NO_NODE hint instead of using the current node for events
    not bound to CPUs.
    
    Fixes: 22f429f19c4135d51e9 ("coresight: etm-perf: Add support for ETR backend")
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Cc: stable <stable@vger.kernel.org> # 4.20+
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Link: https://lore.kernel.org/r/20190620221237.3536-3-mathieu.poirier@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8548724a7ef98661c6af7eddfc976a0fbb6b833
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Thu Jun 20 16:12:33 2019 -0600

    coresight: tmc-etr: Do not call smp_processor_id() from preemptible
    
    commit 3ff44563dbb02456a33f2a42000f04db4ef19a8f upstream.
    
    During a perf session we try to allocate buffers on the "node" associated
    with the CPU the event is bound to. If it's not bound to a CPU, we use
    the current CPU node, using smp_processor_id(). However this is unsafe
    in a pre-emptible context and could generate the splats as below :
    
     BUG: using smp_processor_id() in preemptible [00000000] code: perf/1743
     caller is alloc_etr_buf.isra.6+0x80/0xa0
     CPU: 1 PID: 1743 Comm: perf Not tainted 5.1.0-rc6-147786-g116841e #344
     Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform, BIOS EDK II Feb  1 2019
      Call trace:
       dump_backtrace+0x0/0x150
       show_stack+0x14/0x20
       dump_stack+0x9c/0xc4
       debug_smp_processor_id+0x10c/0x110
       alloc_etr_buf.isra.6+0x80/0xa0
       tmc_alloc_etr_buffer+0x12c/0x1f0
       etm_setup_aux+0x1c4/0x230
       rb_alloc_aux+0x1b8/0x2b8
       perf_mmap+0x35c/0x478
       mmap_region+0x34c/0x4f0
       do_mmap+0x2d8/0x418
       vm_mmap_pgoff+0xd0/0xf8
       ksys_mmap_pgoff+0x88/0xf8
       __arm64_sys_mmap+0x28/0x38
       el0_svc_handler+0xd8/0x138
       el0_svc+0x8/0xc
    
    Use NUMA_NO_NODE hint instead of using the current node for events
    not bound to CPUs.
    
    Fixes: 855ab61c16bf70b646 ("coresight: tmc-etr: Refactor function tmc_etr_setup_perf_buf()")
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190620221237.3536-2-mathieu.poirier@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d881f632902d58fb24b060ff86a8887089aa2180
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Thu Jun 20 16:12:36 2019 -0600

    coresight: etb10: Do not call smp_processor_id from preemptible
    
    commit 730766bae3280a25d40ea76a53dc6342e84e6513 upstream.
    
    During a perf session we try to allocate buffers on the "node" associated
    with the CPU the event is bound to. If it is not bound to a CPU, we
    use the current CPU node, using smp_processor_id(). However this is unsafe
    in a pre-emptible context and could generate the splats as below :
    
     BUG: using smp_processor_id() in preemptible [00000000] code: perf/2544
    
    Use NUMA_NO_NODE hint instead of using the current node for events
    not bound to CPUs.
    
    Fixes: 2997aa4063d97fdb39 ("coresight: etb10: implementing AUX API")
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Cc: stable <stable@vger.kernel.org> # 4.6+
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Link: https://lore.kernel.org/r/20190620221237.3536-5-mathieu.poirier@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3204bd0c8b982f2d60bce8ef0943ae7a830f5a4e
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Jun 20 16:12:37 2019 -0600

    coresight: Potential uninitialized variable in probe()
    
    commit 0530ef6b41e80c5cc979e0e50682302161edb6b7 upstream.
    
    The "drvdata->atclk" clock is optional, but if it gets set to an error
    pointer then we're accidentally return an uninitialized variable instead
    of success.
    
    Fixes: 78e6427b4e7b ("coresight: funnel: Support static funnel")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190620221237.3536-6-mathieu.poirier@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26a202b539837cb948345f4a5f1d7000cbd9c2cd
Author: Fabrice Gasnier <fabrice.gasnier@st.com>
Date:   Wed Jun 19 14:29:55 2019 +0200

    iio: adc: stm32-adc: add missing vdda-supply
    
    commit 7685010fca2ba0284f31fd1380df3cffc96d847e upstream.
    
    Add missing vdda-supply, analog power supply, to STM32 ADC. When vdda is
    an independent supply, it needs to be properly turned on or off to supply
    the ADC.
    
    Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
    Fixes: 1add69880240 ("iio: adc: Add support for STM32 ADC core").
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f18e68e69f73c3dac07a535235a200dbaa3f8707
Author: Todd Kjos <tkjos@android.com>
Date:   Fri Jun 28 09:50:12 2019 -0700

    binder: return errors from buffer copy functions
    
    commit bb4a2e48d5100ed3ff614df158a636bca3c6bf9f upstream.
    
    The buffer copy functions assumed the caller would ensure
    correct alignment and that the memory to be copied was
    completely within the binder buffer. There have been
    a few cases discovered by syzkallar where a malformed
    transaction created by a user could violated the
    assumptions and resulted in a BUG_ON.
    
    The fix is to remove the BUG_ON and always return the
    error to be handled appropriately by the caller.
    
    Acked-by: Martijn Coenen <maco@android.com>
    Reported-by: syzbot+3ae18325f96190606754@syzkaller.appspotmail.com
    Fixes: bde4a19fc04f ("binder: use userspace pointer as base of buffer space")
    Suggested-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f4a26947c3b55b015a8d6ba464bfdf20ff7be6a
Author: Todd Kjos <tkjos@android.com>
Date:   Fri Jun 21 10:54:15 2019 -0700

    binder: fix memory leak in error path
    
    commit 1909a671dbc3606685b1daf8b22a16f65ea7edda upstream.
    
    syzkallar found a 32-byte memory leak in a rarely executed error
    case. The transaction complete work item was not freed if put_user()
    failed when writing the BR_TRANSACTION_COMPLETE to the user command
    buffer. Fixed by freeing it before put_user() is called.
    
    Reported-by: syzbot+182ce46596c3f2e1eb24@syzkaller.appspotmail.com
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d003726ebb9f5c86b9141b98dcac664360ef56c9
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Wed May 15 11:24:41 2019 -0700

    lkdtm: support llvm-objcopy
    
    commit e9e08a07385e08f1a7f85c5d1e345c21c9564963 upstream.
    
    With CONFIG_LKDTM=y and make OBJCOPY=llvm-objcopy, llvm-objcopy errors:
    llvm-objcopy: error: --set-section-flags=.text conflicts with
    --rename-section=.text=.rodata
    
    Rather than support setting flags then renaming sections vs renaming
    then setting flags, it's simpler to just change both at the same time
    via --rename-section. Adding the load flag is required for GNU objcopy
    to mark .rodata Type as PROGBITS after the rename.
    
    This can be verified with:
    $ readelf -S drivers/misc/lkdtm/rodata_objcopy.o
    ...
    Section Headers:
      [Nr] Name              Type             Address           Offset
           Size              EntSize          Flags  Link  Info  Align
    ...
      [ 1] .rodata           PROGBITS         0000000000000000  00000040
           0000000000000004  0000000000000000   A       0     0     4
    ...
    
    Which shows that .text is now renamed .rodata, the alloc flag A is set,
    the type is PROGBITS, and the section is not flagged as writeable W.
    
    Cc: stable@vger.kernel.org
    Link: https://sourceware.org/bugzilla/show_bug.cgi?id=24554
    Link: https://github.com/ClangBuiltLinux/linux/issues/448
    Reported-by: Nathan Chancellor <natechancellor@gmail.com>
    Suggested-by: Alan Modra <amodra@gmail.com>
    Suggested-by: Jordan Rupprect <rupprecht@google.com>
    Suggested-by: Kees Cook <keescook@chromium.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f49855f4fabfac1cfc0ce8fc17e97ed1b36fb4eb
Author: Sebastian Parschauer <s.parschauer@gmx.de>
Date:   Mon Jul 1 07:48:17 2019 +0200

    HID: Add another Primax PIXART OEM mouse quirk
    
    commit 4c12954965fdf33d8ae3883c1931fc29ca023cfb upstream.
    
    The PixArt OEM mice are known for disconnecting every minute in
    runlevel 1 or 3 if they are not always polled. So add quirk
    ALWAYS_POLL for this Alienware branded Primax mouse as well.
    
    Daniel Schepler (@dschepler) reported and tested the quirk.
    Reference: https://github.com/sriemer/fix-linux-mouse/issues/15
    
    Signed-off-by: Sebastian Parschauer <s.parschauer@gmx.de>
    CC: stable@vger.kernel.org
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ce8bd802dc9e2f2d6bfe4d92f9460f84f85b3c2
Author: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Date:   Wed Jun 26 14:43:18 2019 +0200

    staging: mt7621-pci: fix PCIE_FTS_NUM_LO macro
    
    commit 0ae0cf509d28d8539b88b5f7f24558f5bfe57cdf upstream.
    
    Add missing parenthesis to PCIE_FTS_NUM_LO macro to do the
    same it was being done in original code.
    
    Fixes: a4b2eb912bb1 ("staging: mt7621-pci: rewrite RC FTS configuration")
    Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0f909a19b69abfe4cab7ddc5882f8c192806920
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Wed Jun 26 14:17:39 2019 +0100

    staging: comedi: amplc_pci230: fix null pointer deref on interrupt
    
    commit 7379e6baeddf580d01feca650ec1ad508b6ea8ee upstream.
    
    The interrupt handler `pci230_interrupt()` causes a null pointer
    dereference for a PCI260 card.  There is no analog output subdevice for
    a PCI260.  The `dev->write_subdev` subdevice pointer and therefore the
    `s_ao` subdevice pointer variable will be `NULL` for a PCI260.  The
    following call near the end of the interrupt handler results in the null
    pointer dereference for a PCI260:
    
            comedi_handle_events(dev, s_ao);
    
    Fix it by only calling the above function if `s_ao` is valid.
    
    Note that the other uses of `s_ao` in the calls
    `pci230_handle_ao_nofifo(dev, s_ao);` and `pci230_handle_ao_fifo(dev,
    s_ao);` will never be reached for a PCI260, so they are safe.
    
    Fixes: 39064f23284c ("staging: comedi: amplc_pci230: use comedi_handle_events()")
    Cc: <stable@vger.kernel.org> # v3.19+
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e937d42fb0ce864004aa93fc6672ae8d4ac50bea
Author: Stefan Wahren <wahrenst@gmx.net>
Date:   Wed Jun 26 17:48:11 2019 +0200

    staging: bcm2835-camera: Restore return behavior of ctrl_set_bitrate()
    
    commit f816db1dc17b99b059325f41ed5a78f85d15368c upstream.
    
    The commit 52c4dfcead49 ("Staging: vc04_services: Cleanup in
    ctrl_set_bitrate()") changed the return behavior of ctrl_set_bitrate().
    We cannot do this because of a bug in the firmware, which breaks probing
    of bcm2835-camera:
    
        bcm2835-v4l2: mmal_init: failed to set all camera controls: -3
        Cleanup: Destroy video encoder
        Cleanup: Destroy image encoder
        Cleanup: Destroy video render
        Cleanup: Destroy camera
        bcm2835-v4l2: bcm2835_mmal_probe: mmal init failed: -3
        bcm2835-camera: probe of bcm2835-camera failed with error -3
    
    So restore the old behavior, add an explaining comment and a debug message
    to verify that the bug has been fixed in firmware.
    
    Fixes: 52c4dfcead49 ("Staging: vc04_services: Cleanup in ctrl_set_bitrate()")
    Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df73c9370e26cec21dfdad0045038fbcb2693a6f
Author: Ajay Singh <ajay.kathat@microchip.com>
Date:   Wed Jun 26 12:40:48 2019 +0000

    staging: wilc1000: fix error path cleanup in wilc_wlan_initialize()
    
    commit 6419f818ababebc1116fb2d0e220bd4fe835d0e3 upstream.
    
    For the error path in wilc_wlan_initialize(), the resources are not
    cleanup in the correct order. Reverted the previous changes and use the
    correct order to free during error condition.
    
    Fixes: b46d68825c2d ("staging: wilc1000: remove COMPLEMENT_BOOT")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99e5f88e3e2dcbcc6efa23e301e9c0c48ce988f7
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Wed Jun 26 14:18:04 2019 +0100

    staging: comedi: dt282x: fix a null pointer deref on interrupt
    
    commit b8336be66dec06bef518030a0df9847122053ec5 upstream.
    
    The interrupt handler `dt282x_interrupt()` causes a null pointer
    dereference for those supported boards that have no analog output
    support.  For these boards, `dev->write_subdev` will be `NULL` and
    therefore the `s_ao` subdevice pointer variable will be `NULL`.  In that
    case, the following call near the end of the interrupt handler results
    in a null pointer dereference:
    
            comedi_handle_events(dev, s_ao);
    
    Fix it by only calling the above function if `s_ao` is valid.
    
    (There are other uses of `s_ao` by the interrupt handler that may or may
    not be reached depending on values of hardware registers.  Trust that
    they are reliable for now.)
    
    Note:
    commit 4f6f009b204f ("staging: comedi: dt282x: use comedi_handle_events()")
    propagates an earlier error from
    commit f21c74fa4cfe ("staging: comedi: dt282x: use cfc_handle_events()").
    
    Fixes: 4f6f009b204f ("staging: comedi: dt282x: use comedi_handle_events()")
    Cc: <stable@vger.kernel.org> # v3.19+
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2306902921dbede17f985dcff89c1e3fd35d2f0f
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Sat May 18 22:05:48 2019 +0200

    p54: fix crash during initialization
    
    commit 1645ab931998b39aed5761f095956f0b10a6362f upstream.
    
    This patch fixes a crash that got introduced when the
    mentioned patch replaced  the direct list_head access
    with skb_peek_tail(). When the device is starting up,
    there are  no entries in  the queue, so previously to
    "Use skb_peek_tail() instead..." the target_skb would
    end up as the  tail and head pointer which then could
    be used by __skb_queue_after to fill the empty queue.
    
    With skb_peek_tail() in its place will instead just
    return NULL which then causes a crash in the
    __skb_queue_after().
    
    | BUG: unable to handle kernel NULL pointer dereference at 000000
    | #PF error: [normal kernel read fault]
    | PGD 0 P4D 0
    | Oops: 0000 [#1] SMP PTI
    | CPU: 0 PID: 12 Comm: kworker/0:1 Tainted: GO   5.1.0-rc7-wt+ #218
    | Hardware name: MSI MS-7816/Z87-G43 (MS-7816), BIOS V1.11 05/09/2015
    | Workqueue: events request_firmware_work_func
    | RIP: 0010:p54_tx_pending+0x10f/0x1b0 [p54common]
    | Code: 78 06 80 78 28 00 74 6d <48> 8b 07 49 89 7c 24 08 49 89 04 24 4
    | RSP: 0018:ffffa81c81927d90 EFLAGS: 00010086
    | RAX: ffff9bbaaf131048 RBX: 0000000000020670 RCX: 0000000000020264
    | RDX: ffff9bbaa976d660 RSI: 0000000000000202 RDI: 0000000000000000
    | RBP: ffff9bbaa976d620 R08: 00000000000006c0 R09: ffff9bbaa976d660
    | R10: 0000000000000000 R11: ffffe8480dbc5900 R12: ffff9bbb45e87700
    | R13: ffff9bbaa976d648 R14: ffff9bbaa976d674 R15: ffff9bbaaf131048
    | FS:  0000000000000000(0000) GS:ffff9bbb5ec00000(0000) knlGS:00000
    | CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    | CR2: 0000000000000000 CR3: 00000003695fc003 CR4: 00000000001606f0
    | Call Trace:
    |  p54_download_eeprom+0xbe/0x120 [p54common]
    |  p54_read_eeprom+0x7f/0xc0 [p54common]
    |  p54u_load_firmware_cb+0xe0/0x160 [p54usb]
    |  request_firmware_work_func+0x42/0x80
    |  process_one_work+0x1f5/0x3f0
    |  worker_thread+0x28/0x3c0
    
    Cc: stable@vger.kernel.org
    Fixes: e3554197fc8f ("p54: Use skb_peek_tail() instead of direct head pointer accesses.")
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99189d80bb9ad7fabbf5ee322b5a0f4cc250b878
Author: Nikolaus Voss <nikolaus.voss@loewensteinmedical.de>
Date:   Fri Jun 28 11:01:09 2019 +0200

    drivers/usb/typec/tps6598x.c: fix 4CC cmd write
    
    commit 2681795b5e7a5bf336537661010072f4c22cea31 upstream.
    
    Writing 4CC commands with tps6598x_write_4cc() already has
    a pointer arg, don't reference it when using as arg to
    tps6598x_block_write(). Correcting this enforces the constness
    of the pointer to propagate to tps6598x_block_write(), so add
    the const qualifier there to avoid the warning.
    
    Fixes: 0a4c005bd171 ("usb: typec: driver for TI TPS6598x USB Power Delivery controllers")
    Signed-off-by: Nikolaus Voss <nikolaus.voss@loewensteinmedical.de>
    Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 582aa3acf081cf5ab49c4f4a5dfa4a14e4dfebc1
Author: Nikolaus Voss <nikolaus.voss@loewensteinmedical.de>
Date:   Fri Jun 28 11:01:08 2019 +0200

    drivers/usb/typec/tps6598x.c: fix portinfo width
    
    commit 05da75fc651138e51ff74ace97174349910463f5 upstream.
    
    Portinfo bit field is 3 bits wide, not 2 bits. This led to
    a wrong driver configuration for some tps6598x configurations.
    
    Fixes: 0a4c005bd171 ("usb: typec: driver for TI TPS6598x USB Power Delivery controllers")
    Signed-off-by: Nikolaus Voss <nikolaus.voss@loewensteinmedical.de>
    Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df850cc6f22f88904d14c238038f89689936343d
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Jun 26 22:06:33 2019 +0900

    usb: renesas_usbhs: add a workaround for a race condition of workqueue
    
    commit b2357839c56ab7d06bcd4e866ebc2d0e2b7997f3 upstream.
    
    The old commit 6e4b74e4690d ("usb: renesas: fix scheduling in atomic
    context bug") fixed an atomic issue by using workqueue for the shdmac
    dmaengine driver. However, this has a potential race condition issue
    between the work pending and usbhsg_ep_free_request() in gadget mode.
    When usbhsg_ep_free_request() is called while pending the queue,
    since the work_struct will be freed and then the work handler is
    called, kernel panic happens on process_one_work().
    
    To fix the issue, if we could call cancel_work_sync() at somewhere
    before the free request, it could be easy. However,
    the usbhsg_ep_free_request() is called on atomic (e.g. f_ncm driver
    calls free request via gether_disconnect()).
    
    For now, almost all users are having "USB-DMAC" and the DMAengine
    driver can be used on atomic. So, this patch adds a workaround for
    a race condition to call the DMAengine APIs without the workqueue.
    
    This means we still have TODO on shdmac environment (SH7724), but
    since it doesn't have SMP, the race condition might not happen.
    
    Fixes: ab330cf3888d ("usb: renesas_usbhs: add support for USB-DMAC")
    Cc: <stable@vger.kernel.org> # v4.1+
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 302b3d594c583a9452e359596321c063039ce25b
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Thu Jun 20 19:50:22 2019 +0200

    usb: dwc2: use a longer AHB idle timeout in dwc2_core_reset()
    
    commit dfc4fdebc5d62ac4e2fe5428e59b273675515fb2 upstream.
    
    Use a 10000us AHB idle timeout in dwc2_core_reset() and make it
    consistent with the other "wait for AHB master IDLE state" ocurrences.
    
    This fixes a problem for me where dwc2 would not want to initialize when
    updating to 4.19 on a MIPS Lantiq VRX200 SoC. dwc2 worked fine with
    4.14.
    Testing on my board shows that it takes 180us until AHB master IDLE
    state is signalled. The very old vendor driver for this SoC (ifxhcd)
    used a 1 second timeout.
    Use the same timeout that is used everywhere when polling for
    GRSTCTL_AHBIDLE instead of using a timeout that "works for one board"
    (180us in my case) to have consistent behavior across the dwc2 driver.
    
    Cc: linux-stable <stable@vger.kernel.org> # 4.19+
    Acked-by: Minas Harutyunyan <hminas@synopsys.com>
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b0bb09062404538800c27ec60442e8fa7c2a0c4
Author: Kiruthika Varadarajan <Kiruthika.Varadarajan@harman.com>
Date:   Tue Jun 18 08:39:06 2019 +0000

    usb: gadget: ether: Fix race between gether_disconnect and rx_submit
    
    commit d29fcf7078bc8be2b6366cbd4418265b53c94fac upstream.
    
    On spin lock release in rx_submit, gether_disconnect get a chance to
    run, it makes port_usb NULL, rx_submit access NULL port USB, hence null
    pointer crash.
    
    Fixed by releasing the lock in rx_submit after port_usb is used.
    
    Fixes: 2b3d942c4878 ("usb ethernet gadget: split out network core")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Kiruthika Varadarajan <Kiruthika.Varadarajan@harman.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 065700301d513d276cc1612a8993d98475c78aa8
Author: Fei Yang <fei.yang@intel.com>
Date:   Wed Jun 12 15:13:26 2019 -0700

    usb: gadget: f_fs: data_len used before properly set
    
    commit 4833a94eb383f5b22775077ff92ddaae90440921 upstream.
    
    The following line of code in function ffs_epfile_io is trying to set
    flag io_data->use_sg in case buffer required is larger than one page.
    
        io_data->use_sg = gadget->sg_supported && data_len > PAGE_SIZE;
    
    However at this point of time the variable data_len has not been set
    to the proper buffer size yet. The consequence is that io_data->use_sg
    is always set regardless what buffer size really is, because the condition
    (data_len > PAGE_SIZE) is effectively an unsigned comparison between
    -EINVAL and PAGE_SIZE which would always result in TRUE.
    
    Fixes: 772a7a724f69 ("usb: gadget: f_fs: Allow scatter-gather buffers")
    Signed-off-by: Fei Yang <fei.yang@intel.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9baa5b4925da756e7a47444514bc88a6818d300f
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon May 20 10:44:21 2019 -0400

    p54usb: Fix race between disconnect and firmware loading
    
    commit 6e41e2257f1094acc37618bf6c856115374c6922 upstream.
    
    The syzbot fuzzer found a bug in the p54 USB wireless driver.  The
    issue involves a race between disconnect and the firmware-loader
    callback routine, and it has several aspects.
    
    One big problem is that when the firmware can't be loaded, the
    callback routine tries to unbind the driver from the USB _device_ (by
    calling device_release_driver) instead of from the USB _interface_ to
    which it is actually bound (by calling usb_driver_release_interface).
    
    The race involves access to the private data structure.  The driver's
    disconnect handler waits for a completion that is signalled by the
    firmware-loader callback routine.  As soon as the completion is
    signalled, you have to assume that the private data structure may have
    been deallocated by the disconnect handler -- even if the firmware was
    loaded without errors.  However, the callback routine does access the
    private data several times after that point.
    
    Another problem is that, in order to ensure that the USB device
    structure hasn't been freed when the callback routine runs, the driver
    takes a reference to it.  This isn't good enough any more, because now
    that the callback routine calls usb_driver_release_interface, it has
    to ensure that the interface structure hasn't been freed.
    
    Finally, the driver takes an unnecessary reference to the USB device
    structure in the probe function and drops the reference in the
    disconnect handler.  This extra reference doesn't accomplish anything,
    because the USB core already guarantees that a device structure won't
    be deallocated while a driver is still bound to any of its interfaces.
    
    To fix these problems, this patch makes the following changes:
    
            Call usb_driver_release_interface() rather than
            device_release_driver().
    
            Don't signal the completion until after the important
            information has been copied out of the private data structure,
            and don't refer to the private data at all thereafter.
    
            Lock udev (the interface's parent) before unbinding the driver
            instead of locking udev->parent.
    
            During the firmware loading process, take a reference to the
            USB interface instead of the USB device.
    
            Don't take an unnecessary reference to the device during probe
            (and then don't drop it during disconnect).
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: syzbot+200d4bb11b23d929335f@syzkaller.appspotmail.com
    CC: <stable@vger.kernel.org>
    Acked-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a5097cfb0d2689ead3ecf055b58924848e5411e
Author: Oliver Barta <o.barta89@gmail.com>
Date:   Wed Jun 19 10:16:39 2019 +0200

    Revert "serial: 8250: Don't service RX FIFO if interrupts are disabled"
    
    commit 3f2640ed7be838c3f05c0d2b0f7c7508e7431e48 upstream.
    
    This reverts commit 2e9fe539108320820016f78ca7704a7342788380.
    
    Reading LSR unconditionally but processing the error flags only if
    UART_IIR_RDI bit was set before in IIR may lead to a loss of transmission
    error information on UARTs where the transmission error flags are cleared
    by a read of LSR. Information are lost in case an error is detected right
    before the read of LSR while processing e.g. an UART_IIR_THRI interrupt.
    
    Signed-off-by: Oliver Barta <o.barta89@gmail.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Fixes: 2e9fe5391083 ("serial: 8250: Don't service RX FIFO if interrupts are disabled")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6517295171086f6f6409090f07d81d233b1bc626
Author: Jörgen Storvist <jorgen.storvist@gmail.com>
Date:   Wed Jun 19 00:30:19 2019 +0200

    USB: serial: option: add support for GosunCn ME3630 RNDIS mode
    
    commit aed2a26283528fb69c38e414f649411aa48fb391 upstream.
    
    Added USB IDs for GosunCn ME3630 cellular module in RNDIS mode.
    
    T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=03 Dev#= 18 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=19d2 ProdID=0601 Rev=03.18
    S:  Manufacturer=Android
    S:  Product=Android
    S:  SerialNumber=b950269c
    C:  #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#=0x0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
    I:  If#=0x1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    I:  If#=0x2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I:  If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    
    Signed-off-by: Jörgen Storvist <jorgen.storvist@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3377dc6fc4c32b9235b36603b577b85079e97725
Author: Andreas Fritiofson <andreas.fritiofson@unjo.com>
Date:   Fri Jun 28 15:08:34 2019 +0200

    USB: serial: ftdi_sio: add ID for isodebug v1
    
    commit f8377eff548170e8ea8022c067a1fbdf9e1c46a8 upstream.
    
    This adds the vid:pid of the isodebug v1 isolated JTAG/SWD+UART. Only the
    second channel is available for use as a serial port.
    
    Signed-off-by: Andreas Fritiofson <andreas.fritiofson@unjo.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94ae2c68c466af0603e2d451f1e822df34494a7a
Author: Brian Norris <briannorris@chromium.org>
Date:   Fri Jun 14 17:13:20 2019 -0700

    mwifiex: Don't abort on small, spec-compliant vendor IEs
    
    commit 63d7ef36103d26f20325a921ecc96a3288560146 upstream.
    
    Per the 802.11 specification, vendor IEs are (at minimum) only required
    to contain an OUI. A type field is also included in ieee80211.h (struct
    ieee80211_vendor_ie) but doesn't appear in the specification. The
    remaining fields (subtype, version) are a convention used in WMM
    headers.
    
    Thus, we should not reject vendor-specific IEs that have only the
    minimum length (3 bytes) -- we should skip over them (since we only want
    to match longer IEs, that match either WMM or WPA formats). We can
    reject elements that don't have the minimum-required 3 byte OUI.
    
    While we're at it, move the non-standard subtype and version fields into
    the WMM structs, to avoid this confusion in the future about generic
    "vendor header" attributes.
    
    Fixes: 685c9b7750bf ("mwifiex: Abort at too short BSS descriptor element")
    Cc: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9dfd26354b28bb245cb4157bbd1d91720e3dca77
Author: Andy Lutomirski <luto@kernel.org>
Date:   Wed Jun 26 21:45:02 2019 -0700

    Documentation/admin: Remove the vsyscall=native documentation
    
    commit d974ffcfb7447db5f29a4b662a3eaf99a4e1109e upstream.
    
    The vsyscall=native feature is gone -- remove the docs.
    
    Fixes: 076ca272a14c ("x86/vsyscall/64: Drop "native" vsyscalls")
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Kees Cook <keescook@chromium.org>
    Cc: Florian Weimer <fweimer@redhat.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: stable@vger.kernel.org
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Kernel Hardening <kernel-hardening@lists.openwall.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/d77c7105eb4c57c1a95a95b6a5b8ba194a18e764.1561610354.git.luto@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2833a74b378a4376798486875672ecb6cd9ae0d1
Author: Tim Chen <tim.c.chen@linux.intel.com>
Date:   Thu Jun 20 16:10:50 2019 -0700

    Documentation: Add section about CPU vulnerabilities for Spectre
    
    commit 6e88559470f581741bcd0f2794f9054814ac9740 upstream.
    
    Add documentation for Spectre vulnerability and the mitigation mechanisms:
    
    - Explain the problem and risks
    - Document the mitigation mechanisms
    - Document the command line controls
    - Document the sysfs files
    
    Co-developed-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Co-developed-by: Tim Chen <tim.c.chen@linux.intel.com>
    Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
    Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b73121a7fe86776ccd7ffdfd3675b8a2868f936
Author: Dianzhang Chen <dianzhangchen0@gmail.com>
Date:   Wed Jun 26 12:50:30 2019 +0800

    x86/tls: Fix possible spectre-v1 in do_get_thread_area()
    
    commit 993773d11d45c90cb1c6481c2638c3d9f092ea5b upstream.
    
    The index to access the threads tls array is controlled by userspace
    via syscall: sys_ptrace(), hence leading to a potential exploitation
    of the Spectre variant 1 vulnerability.
    
    The index can be controlled from:
            ptrace -> arch_ptrace -> do_get_thread_area.
    
    Fix this by sanitizing the user supplied index before using it to access
    the p->thread.tls_array.
    
    Signed-off-by: Dianzhang Chen <dianzhangchen0@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1561524630-3642-1-git-send-email-dianzhangchen0@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1ba61ae4be5e5a5727e303c827591517b6188bb
Author: Dianzhang Chen <dianzhangchen0@gmail.com>
Date:   Tue Jun 25 23:30:17 2019 +0800

    x86/ptrace: Fix possible spectre-v1 in ptrace_get_debugreg()
    
    commit 31a2fbb390fee4231281b939e1979e810f945415 upstream.
    
    The index to access the threads ptrace_bps is controlled by userspace via
    syscall: sys_ptrace(), hence leading to a potential exploitation of the
    Spectre variant 1 vulnerability.
    
    The index can be controlled from:
        ptrace -> arch_ptrace -> ptrace_get_debugreg.
    
    Fix this by sanitizing the user supplied index before using it access
    thread->ptrace_bps.
    
    Signed-off-by: Dianzhang Chen <dianzhangchen0@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1561476617-3759-1-git-send-email-dianzhangchen0@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 635d4fb7ea3a33b1e0cc1b8f0434dc343f7587bc
Author: Song Liu <songliubraving@fb.com>
Date:   Wed Jun 19 18:04:53 2019 -0700

    perf header: Assign proper ff->ph in perf_event__synthesize_features()
    
    commit c952b35f4b15dd1b83e952718dec3307256383ef upstream.
    
    bpf/btf write_* functions need ff->ph->env.
    
    With this missing, pipe-mode (perf record -o -)  would crash like:
    
    Program terminated with signal SIGSEGV, Segmentation fault.
    
    This patch assign proper ph value to ff.
    
    Committer testing:
    
      (gdb) run record -o -
      Starting program: /root/bin/perf record -o -
      PERFILE2
      <SNIP start of perf.data headers>
      Thread 1 "perf" received signal SIGSEGV, Segmentation fault.
      __do_write_buf (size=4, buf=0x160, ff=0x7fffffff8f80) at util/header.c:126
      126           memcpy(ff->buf + ff->offset, buf, size);
      (gdb) bt
      #0  __do_write_buf (size=4, buf=0x160, ff=0x7fffffff8f80) at util/header.c:126
      #1  do_write (ff=ff@entry=0x7fffffff8f80, buf=buf@entry=0x160, size=4) at util/header.c:137
      #2  0x00000000004eddba in write_bpf_prog_info (ff=0x7fffffff8f80, evlist=<optimized out>) at util/header.c:912
      #3  0x00000000004f69d7 in perf_event__synthesize_features (tool=tool@entry=0x97cc00 <record>, session=session@entry=0x7fffe9c6d010,
          evlist=0x7fffe9cae010, process=process@entry=0x4435d0 <process_synthesized_event>) at util/header.c:3695
      #4  0x0000000000443c79 in record__synthesize (tail=tail@entry=false, rec=0x97cc00 <record>) at builtin-record.c:1214
      #5  0x0000000000444ec9 in __cmd_record (rec=0x97cc00 <record>, argv=<optimized out>, argc=0) at builtin-record.c:1435
      #6  cmd_record (argc=0, argv=<optimized out>) at builtin-record.c:2450
      #7  0x00000000004ae3e9 in run_builtin (p=p@entry=0x98e058 <commands+216>, argc=argc@entry=3, argv=0x7fffffffd670) at perf.c:304
      #8  0x000000000042eded in handle_internal_command (argv=<optimized out>, argc=<optimized out>) at perf.c:356
      #9  run_argv (argcp=<optimized out>, argv=<optimized out>) at perf.c:400
      #10 main (argc=3, argv=<optimized out>) at perf.c:522
      (gdb)
    
    After the patch the SEGSEGV is gone.
    
    Reported-by: David Carrillo Cisneros <davidca@fb.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: kernel-team@fb.com
    Cc: stable@vger.kernel.org # v5.1+
    Fixes: 606f972b1361 ("perf bpf: Save bpf_prog_info information as headers to perf.data")
    Link: http://lkml.kernel.org/r/20190620010453.4118689-1-songliubraving@fb.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af31a530e760736df39e1758446b0d2fc394e684
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Wed Jun 19 09:44:28 2019 +0300

    perf thread-stack: Fix thread stack return from kernel for kernel-only case
    
    commit 97860b483c5597663a174ff7405be957b4838391 upstream.
    
    Commit f08046cb3082 ("perf thread-stack: Represent jmps to the start of a
    different symbol") had the side-effect of introducing more stack entries
    before return from kernel space.
    
    When user space is also traced, those entries are popped before entry to
    user space, but when user space is not traced, they get stuck at the
    bottom of the stack, making the stack grow progressively larger.
    
    Fix by detecting a return-from-kernel branch type, and popping kernel
    addresses from the stack then.
    
    Note, the problem and fix affect the exported Call Graph / Tree but not
    the callindent option used by "perf script --call-trace".
    
    Example:
    
      perf-with-kcore record example -e intel_pt//k -- ls
      perf-with-kcore script example --itrace=bep -s ~/libexec/perf-core/scripts/python/export-to-sqlite.py example.db branches calls
      ~/libexec/perf-core/scripts/python/exported-sql-viewer.py example.db
    
      Menu option: Reports -> Context-Sensitive Call Graph
    
      Before: (showing Call Path column only)
    
        Call Path
        ▶ perf
        ▼ ls
          ▼ 12111:12111
            ▶ setup_new_exec
            ▶ __task_pid_nr_ns
            ▶ perf_event_pid_type
            ▶ perf_event_comm_output
            ▶ perf_iterate_ctx
            ▶ perf_iterate_sb
            ▶ perf_event_comm
            ▶ __set_task_comm
            ▶ load_elf_binary
            ▶ search_binary_handler
            ▶ __do_execve_file.isra.41
            ▶ __x64_sys_execve
            ▶ do_syscall_64
            ▼ entry_SYSCALL_64_after_hwframe
              ▼ swapgs_restore_regs_and_return_to_usermode
                ▼ native_iret
                  ▶ error_entry
                  ▶ do_page_fault
                  ▼ error_exit
                    ▼ retint_user
                      ▶ prepare_exit_to_usermode
                      ▼ native_iret
                        ▶ error_entry
                        ▶ do_page_fault
                        ▼ error_exit
                          ▼ retint_user
                            ▶ prepare_exit_to_usermode
                            ▼ native_iret
                              ▶ error_entry
                              ▶ do_page_fault
                              ▼ error_exit
                                ▼ retint_user
                                  ▶ prepare_exit_to_usermode
                                  ▶ native_iret
    
      After: (showing Call Path column only)
    
        Call Path
        ▶ perf
        ▼ ls
          ▼ 12111:12111
            ▶ setup_new_exec
            ▶ __task_pid_nr_ns
            ▶ perf_event_pid_type
            ▶ perf_event_comm_output
            ▶ perf_iterate_ctx
            ▶ perf_iterate_sb
            ▶ perf_event_comm
            ▶ __set_task_comm
            ▶ load_elf_binary
            ▶ search_binary_handler
            ▶ __do_execve_file.isra.41
            ▶ __x64_sys_execve
            ▶ do_syscall_64
            ▶ entry_SYSCALL_64_after_hwframe
            ▶ page_fault
            ▼ entry_SYSCALL_64
              ▼ do_syscall_64
                ▶ __x64_sys_brk
                ▶ __x64_sys_access
                ▶ __x64_sys_openat
                ▶ __x64_sys_newfstat
                ▶ __x64_sys_mmap
                ▶ __x64_sys_close
                ▶ __x64_sys_read
                ▶ __x64_sys_mprotect
                ▶ __x64_sys_arch_prctl
                ▶ __x64_sys_munmap
                ▶ exit_to_usermode_loop
                ▶ __x64_sys_set_tid_address
                ▶ __x64_sys_set_robust_list
                ▶ __x64_sys_rt_sigaction
                ▶ __x64_sys_rt_sigprocmask
                ▶ __x64_sys_prlimit64
                ▶ __x64_sys_statfs
                ▶ __x64_sys_ioctl
                ▶ __x64_sys_getdents64
                ▶ __x64_sys_write
                ▶ __x64_sys_exit_group
    
    Committer notes:
    
    The first arg to the perf-with-kcore needs to be the same for the
    'record' and 'script' lines, otherwise we'll record the perf.data file
    and kcore_dir/ files in one directory ('example') to then try to use it
    from the 'bep' directory, fix the instructions above it so that both use
    'example'.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: f08046cb3082 ("perf thread-stack: Represent jmps to the start of a different symbol")
    Link: http://lkml.kernel.org/r/20190619064429.14940-2-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a3e679c537e4dc7e79818f7c4353ab6fc64b65f
Author: John Garry <john.garry@huawei.com>
Date:   Fri Jun 14 22:07:59 2019 +0800

    perf pmu: Fix uncore PMU alias list for ARM64
    
    commit 599ee18f0740d7661b8711249096db94c09bc508 upstream.
    
    In commit 292c34c10249 ("perf pmu: Fix core PMU alias list for X86
    platform"), we fixed the issue of CPU events being aliased to uncore
    events.
    
    Fix this same issue for ARM64, since the said commit left the (broken)
    behaviour untouched for ARM64.
    
    Signed-off-by: John Garry <john.garry@huawei.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Cc: Hendrik Brueckner <brueckner@linux.ibm.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linuxarm@huawei.com
    Cc: stable@vger.kernel.org
    Fixes: 292c34c10249 ("perf pmu: Fix core PMU alias list for X86 platform")
    Link: http://lkml.kernel.org/r/1560521283-73314-2-git-send-email-john.garry@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66562fc1a2fbaf4549e32be4257c0d2055a1e0f4
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon May 20 14:37:09 2019 +0300

    perf intel-pt: Fix itrace defaults for perf script intel-pt documentation
    
    commit a2d8a1585e35444789c1c8cf7e2e51fb15589880 upstream.
    
    Fix intel-pt documentation to reflect the change of itrace defaults for
    perf script.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 4eb068157121 ("perf script: Make itrace script default to all calls")
    Link: http://lkml.kernel.org/r/20190520113728.14389-4-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dacc61d9aaa81b09f0dfe8e09c40d7e1aef69589
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon May 20 14:37:08 2019 +0300

    perf auxtrace: Fix itrace defaults for perf script
    
    commit 355200e0f6a9ce14771625014aa469f5ecbd8977 upstream.
    
    Commit 4eb068157121 ("perf script: Make itrace script default to all
    calls") does not work for the case when '--itrace' only is used, because
    default_no_sample is not being passed.
    
    Example:
    
     Before:
    
      $ perf record -e intel_pt/cyc/u ls
      $ perf script --itrace > cmp1.txt
      $ perf script --itrace=cepwx > cmp2.txt
      $ diff -sq cmp1.txt cmp2.txt
      Files cmp1.txt and cmp2.txt differ
    
     After:
    
      $ perf script --itrace > cmp1.txt
      $ perf script --itrace=cepwx > cmp2.txt
      $ diff -sq cmp1.txt cmp2.txt
      Files cmp1.txt and cmp2.txt are identical
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 4eb068157121 ("perf script: Make itrace script default to all calls")
    Link: http://lkml.kernel.org/r/20190520113728.14389-3-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fe0dffdbd034906647f60f2cef28018feec1a66
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon May 20 14:37:07 2019 +0300

    perf intel-pt: Fix itrace defaults for perf script
    
    commit 26f19c2eb7e54015564ff133b91983a74e84541b upstream.
    
    Commit 4eb068157121 ("perf script: Make itrace script default to all
    calls") does not work because 'use_browser' is being used to determine
    whether to default to periodic sampling (i.e. better for perf report).
    The result is that nothing but CBR events display for perf script when
    no --itrace option is specified.
    
    Fix by using 'default_no_sample' and 'inject' instead.
    
    Example:
    
     Before:
    
      $ perf record -e intel_pt/cyc/u ls
      $ perf script > cmp1.txt
      $ perf script --itrace=cepwx > cmp2.txt
      $ diff -sq cmp1.txt cmp2.txt
      Files cmp1.txt and cmp2.txt differ
    
     After:
    
      $ perf script > cmp1.txt
      $ perf script --itrace=cepwx > cmp2.txt
      $ diff -sq cmp1.txt cmp2.txt
      Files cmp1.txt and cmp2.txt are identical
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v4.20+
    Fixes: 90e457f7be08 ("perf tools: Add Intel PT support")
    Link: http://lkml.kernel.org/r/20190520113728.14389-2-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6975db181317ca217f0a72642eed706050507a3a
Author: Douglas Anderson <dianders@chromium.org>
Date:   Thu Jun 27 21:44:09 2019 -0700

    block, bfq: NULL out the bic when it's no longer valid
    
    commit dbc3117d4ca9e17819ac73501e914b8422686750 upstream.
    
    In reboot tests on several devices we were seeing a "use after free"
    when slub_debug or KASAN was enabled.  The kernel complained about:
    
      Unable to handle kernel paging request at virtual address 6b6b6c2b
    
    ...which is a classic sign of use after free under slub_debug.  The
    stack crawl in kgdb looked like:
    
     0  test_bit (addr=<optimized out>, nr=<optimized out>)
     1  bfq_bfqq_busy (bfqq=<optimized out>)
     2  bfq_select_queue (bfqd=<optimized out>)
     3  __bfq_dispatch_request (hctx=<optimized out>)
     4  bfq_dispatch_request (hctx=<optimized out>)
     5  0xc056ef00 in blk_mq_do_dispatch_sched (hctx=0xed249440)
     6  0xc056f728 in blk_mq_sched_dispatch_requests (hctx=0xed249440)
     7  0xc0568d24 in __blk_mq_run_hw_queue (hctx=0xed249440)
     8  0xc0568d94 in blk_mq_run_work_fn (work=<optimized out>)
     9  0xc024c5c4 in process_one_work (worker=0xec6d4640, work=0xed249480)
     10 0xc024cff4 in worker_thread (__worker=0xec6d4640)
    
    Digging in kgdb, it could be found that, though bfqq looked fine,
    bfqq->bic had been freed.
    
    Through further digging, I postulated that perhaps it is illegal to
    access a "bic" (AKA an "icq") after bfq_exit_icq() had been called
    because the "bic" can be freed at some point in time after this call
    is made.  I confirmed that there certainly were cases where the exact
    crashing code path would access the "bic" after bfq_exit_icq() had
    been called.  Sspecifically I set the "bfqq->bic" to (void *)0x7 and
    saw that the bic was 0x7 at the time of the crash.
    
    To understand a bit more about why this crash was fairly uncommon (I
    saw it only once in a few hundred reboots), you can see that much of
    the time bfq_exit_icq_fbqq() fully frees the bfqq and thus it can't
    access the ->bic anymore.  The only case it doesn't is if
    bfq_put_queue() sees a reference still held.
    
    However, even in the case when bfqq isn't freed, the crash is still
    rare.  Why?  I tracked what happened to the "bic" after the exit
    routine.  It doesn't get freed right away.  Rather,
    put_io_context_active() eventually called put_io_context() which
    queued up freeing on a workqueue.  The freeing then actually happened
    later than that through call_rcu().  Despite all these delays, some
    extra debugging showed that all the hoops could be jumped through in
    time and the memory could be freed causing the original crash.  Phew!
    
    To make a long story short, assuming it truly is illegal to access an
    icq after the "exit_icq" callback is finished, this patch is needed.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Paolo Valente <paolo.valente@unimore.it>
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c785529bebceeaf38db8ebf9b50ff3a173fb18c6
Author: Ming Lei <ming.lei@redhat.com>
Date:   Mon Jul 1 15:14:46 2019 +0800

    block: fix .bi_size overflow
    
    commit 79d08f89bb1b5c2c1ff90d9bb95497ab9e8aa7e0 upstream.
    
    'bio->bi_iter.bi_size' is 'unsigned int', which at most hold 4G - 1
    bytes.
    
    Before 07173c3ec276 ("block: enable multipage bvecs"), one bio can
    include very limited pages, and usually at most 256, so the fs bio
    size won't be bigger than 1M bytes most of times.
    
    Since we support multi-page bvec, in theory one fs bio really can
    be added > 1M pages, especially in case of hugepage, or big writeback
    with too many dirty pages. Then there is chance in which .bi_size
    is overflowed.
    
    Fixes this issue by using bio_full() to check if the added segment may
    overflow .bi_size.
    
    Cc: Liu Yiding <liuyd.fnst@cn.fujitsu.com>
    Cc: kernel test robot <rong.a.chen@intel.com>
    Cc: "Darrick J. Wong" <darrick.wong@oracle.com>
    Cc: linux-xfs@vger.kernel.org
    Cc: linux-fsdevel@vger.kernel.org
    Cc: stable@vger.kernel.org
    Fixes: 07173c3ec276 ("block: enable multipage bvecs")
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6d278658745fa72fe810394759f9f786993cd33
Author: Vadim Sukhomlinov <sukhomlinov@google.com>
Date:   Mon Jun 10 15:01:18 2019 -0700

    tpm: Fix TPM 1.2 Shutdown sequence to prevent future TPM operations
    
    commit db4d8cb9c9f2af71c4d087817160d866ed572cc9 upstream.
    
    TPM 2.0 Shutdown involve sending TPM2_Shutdown to TPM chip and disabling
    future TPM operations. TPM 1.2 behavior was different, future TPM
    operations weren't disabled, causing rare issues. This patch ensures
    that future TPM operations are disabled.
    
    Fixes: d1bd4a792d39 ("tpm: Issue a TPM2_Shutdown for TPM2 devices.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Vadim Sukhomlinov <sukhomlinov@google.com>
    [dianders: resolved merge conflicts with mainline]
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4cce48ae9e870d53846b2f88b81d9c601c51c29c
Author: Kees Cook <keescook@chromium.org>
Date:   Mon Apr 1 12:06:07 2019 -0700

    tpm: Actually fail on TPM errors during "get random"
    
    commit 782779b60faa2fc7ff609ac8ef938260fd792c0f upstream.
    
    A "get random" may fail with a TPM error, but those codes were returned
    as-is to the caller, which assumed the result was the number of bytes
    that had been written to the target buffer, which could lead to a kernel
    heap memory exposure and over-read.
    
    This fixes tpm1_get_random() to mask positive TPM errors into -EIO, as
    before.
    
    [   18.092103] tpm tpm0: A TPM error (379) occurred attempting get random
    [   18.092106] usercopy: Kernel memory exposure attempt detected from SLUB object 'kmalloc-64' (offset 0, size 379)!
    
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=1650989
    Reported-by: Phil Baker <baker1tex@gmail.com>
    Reported-by: Craig Robson <craig@zhatt.com>
    Fixes: 7aee9c52d7ac ("tpm: tpm1: rewrite tpm1_get_random() using tpm_buf structure")
    Cc: Laura Abbott <labbott@redhat.com>
    Cc: Tomas Winkler <tomas.winkler@intel.com>
    Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Tomas Winkler <tomas.winkler@intel.com>
    Tested-by: Bartosz Szczepanek <bsz@semihalf.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eaf775f75af2aadcad4b7b94c6b4f9c3b27afc5b
Author: Kailang Yang <kailang@realtek.com>
Date:   Thu Jul 4 16:02:10 2019 +0800

    ALSA: hda/realtek - Headphone Mic can't record after S3
    
    commit d07a9a4f66e944fcc900812cbc2f6817bde6a43d upstream.
    
    Dell headset mode platform with ALC236.
    It doesn't recording after system resume from S3.
    S3 mode was deep. s2idle was not has this issue.
    S3 deep will cut of codec power. So, the register will back to default
    after resume back.
    This patch will solve this issue.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b0ab7d35d71eff03d147f84297a513cc9850bc7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Jul 4 16:31:12 2019 +0200

    ALSA: usb-audio: Fix parse of UAC2 Extension Units
    
    commit ca95c7bf3d29716916baccdc77c3c2284b703069 upstream.
    
    Extension Unit (XU) is used to have a compatible layout with
    Processing Unit (PU) on UAC1, and the usb-audio driver code assumed it
    for parsing the descriptors.  Meanwhile, on UAC2, XU became slightly
    incompatible with PU; namely, XU has a one-byte bmControls bitmap
    while PU has two bytes bmControls bitmap.  This incompatibility
    results in the read of a wrong address for the last iExtension field,
    which ended up with an incorrect string for the mixer element name, as
    recently reported for Focusrite Scarlett 18i20 device.
    
    This patch corrects this misalignment by introducing a couple of new
    macros and calling them depending on the descriptor type.
    
    Fixes: 23caaf19b11e ("ALSA: usb-mixer: Add support for Audio Class v2.0")
    Reported-by: Stefan Sauer <ensonic@hora-obscura.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8b4e545d12e5683f05e4257d32651c332217383
Author: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Date:   Tue Jun 25 06:45:20 2019 -0400

    media: stv0297: fix frequency range limit
    
    commit b09a2ab2baeb36bf7ef7780405ad172281741c7c upstream.
    
    There was a typo at the lower frequency limit for a DVB-C
    card, causing the driver to fail while tuning channels at the
    VHF range.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=202083
    
    Fixes: f1b1eabff0eb ("media: dvb: represent min/max/step/tolerance freqs in Hz")
    Reported-by: Ari Kohtamäki <ari.kohtamaki@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56a3c35cd188b67ee0d0d8326f0ac0ffe75a1064
Author: Steven J. Magnani <steve.magnani@digidescorp.com>
Date:   Sun Jun 30 21:39:35 2019 -0500

    udf: Fix incorrect final NOT_ALLOCATED (hole) extent length
    
    commit fa33cdbf3eceb0206a4f844fe91aeebcf6ff2b7a upstream.
    
    In some cases, using the 'truncate' command to extend a UDF file results
    in a mismatch between the length of the file's extents (specifically, due
    to incorrect length of the final NOT_ALLOCATED extent) and the information
    (file) length. The discrepancy can prevent other operating systems
    (i.e., Windows 10) from opening the file.
    
    Two particular errors have been observed when extending a file:
    
    1. The final extent is larger than it should be, having been rounded up
       to a multiple of the block size.
    
    B. The final extent is not shorter than it should be, due to not having
       been updated when the file's information length was increased.
    
    [JK: simplified udf_do_extend_final_block(), fixed up some types]
    
    Fixes: 2c948b3f86e5 ("udf: Avoid IO in udf_clear_inode")
    CC: stable@vger.kernel.org
    Signed-off-by: Steven J. Magnani <steve@digidescorp.com>
    Link: https://lore.kernel.org/r/1561948775-5878-1-git-send-email-steve@digidescorp.com
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 787716e568c72c9e632cd3b4175ddd2f3868f79f
Author: Hongjie Fang <hongjiefang@asrmicro.com>
Date:   Wed May 22 10:02:53 2019 +0800

    fscrypt: don't set policy for a dead directory
    
    commit 5858bdad4d0d0fc18bf29f34c3ac836e0b59441f upstream.
    
    The directory may have been removed when entering
    fscrypt_ioctl_set_policy().  If so, the empty_dir() check will return
    error for ext4 file system.
    
    ext4_rmdir() sets i_size = 0, then ext4_empty_dir() reports an error
    because 'inode->i_size < EXT4_DIR_REC_LEN(1) + EXT4_DIR_REC_LEN(2)'.  If
    the fs is mounted with errors=panic, it will trigger a panic issue.
    
    Add the check IS_DEADDIR() to fix this problem.
    
    Fixes: 9bd8212f981e ("ext4 crypto: add encryption policy and password salt support")
    Cc: <stable@vger.kernel.org> # v4.1+
    Signed-off-by: Hongjie Fang <hongjiefang@asrmicro.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 587c49c7c488ef1f1a9eded09871f690264b7c4d
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue May 21 13:34:08 2019 +0000

    crypto: talitos - rename alternative AEAD algos.
    
    commit a1a42f84011fae6ff08441a91aefeb7febc984fc upstream.
    
    The talitos driver has two ways to perform AEAD depending on the
    HW capability. Some HW support both. It is needed to give them
    different names to distingish which one it is for instance when
    a test fails.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 7405c8d7ff97 ("crypto: talitos - templates for AEAD using HMAC_SNOOP_NO_AFEU")
    Cc: stable@vger.kernel.org
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eff1b6abd9a065180968175a5e93f1ef644b7ab5
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu May 30 10:53:08 2019 -0700

    crypto: lrw - use correct alignmask
    
    commit 20a0f9761343fba9b25ea46bd3a3e5e533d974f8 upstream.
    
    Commit c778f96bf347 ("crypto: lrw - Optimize tweak computation")
    incorrectly reduced the alignmask of LRW instances from
    '__alignof__(u64) - 1' to '__alignof__(__be32) - 1'.
    
    However, xor_tweak() and setkey() assume that the data and key,
    respectively, are aligned to 'be128', which has u64 alignment.
    
    Fix the alignmask to be at least '__alignof__(be128) - 1'.
    
    Fixes: c778f96bf347 ("crypto: lrw - Optimize tweak computation")
    Cc: <stable@vger.kernel.org> # v4.20+
    Cc: Ondrej Mosnacek <omosnace@redhat.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>