commit dc3e913edf94d54de5678e726cf95b38327e5d09
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Apr 27 09:30:31 2019 +0200

    Linux 3.18.139

commit 55383294bf608b4f142e93fbc0c411c73f6901fa
Author: Will Deacon <will.deacon@arm.com>
Date:   Fri Apr 5 18:39:38 2019 -0700

    kernel/sysctl.c: fix out-of-bounds access when setting file-max
    
    commit 9002b21465fa4d829edfc94a5a441005cffaa972 upstream.
    
    Commit 32a5ad9c2285 ("sysctl: handle overflow for file-max") hooked up
    min/max values for the file-max sysctl parameter via the .extra1 and
    .extra2 fields in the corresponding struct ctl_table entry.
    
    Unfortunately, the minimum value points at the global 'zero' variable,
    which is an int.  This results in a KASAN splat when accessed as a long
    by proc_doulongvec_minmax on 64-bit architectures:
    
      | BUG: KASAN: global-out-of-bounds in __do_proc_doulongvec_minmax+0x5d8/0x6a0
      | Read of size 8 at addr ffff2000133d1c20 by task systemd/1
      |
      | CPU: 0 PID: 1 Comm: systemd Not tainted 5.1.0-rc3-00012-g40b114779944 #2
      | Hardware name: linux,dummy-virt (DT)
      | Call trace:
      |  dump_backtrace+0x0/0x228
      |  show_stack+0x14/0x20
      |  dump_stack+0xe8/0x124
      |  print_address_description+0x60/0x258
      |  kasan_report+0x140/0x1a0
      |  __asan_report_load8_noabort+0x18/0x20
      |  __do_proc_doulongvec_minmax+0x5d8/0x6a0
      |  proc_doulongvec_minmax+0x4c/0x78
      |  proc_sys_call_handler.isra.19+0x144/0x1d8
      |  proc_sys_write+0x34/0x58
      |  __vfs_write+0x54/0xe8
      |  vfs_write+0x124/0x3c0
      |  ksys_write+0xbc/0x168
      |  __arm64_sys_write+0x68/0x98
      |  el0_svc_common+0x100/0x258
      |  el0_svc_handler+0x48/0xc0
      |  el0_svc+0x8/0xc
      |
      | The buggy address belongs to the variable:
      |  zero+0x0/0x40
      |
      | Memory state around the buggy address:
      |  ffff2000133d1b00: 00 00 00 00 00 00 00 00 fa fa fa fa 04 fa fa fa
      |  ffff2000133d1b80: fa fa fa fa 04 fa fa fa fa fa fa fa 04 fa fa fa
      | >ffff2000133d1c00: fa fa fa fa 04 fa fa fa fa fa fa fa 00 00 00 00
      |                                ^
      |  ffff2000133d1c80: fa fa fa fa 00 fa fa fa fa fa fa fa 00 00 00 00
      |  ffff2000133d1d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    
    Fix the splat by introducing a unsigned long 'zero_ul' and using that
    instead.
    
    Link: http://lkml.kernel.org/r/20190403153409.17307-1-will.deacon@arm.com
    Fixes: 32a5ad9c2285 ("sysctl: handle overflow for file-max")
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Acked-by: Christian Brauner <christian@brauner.io>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Matteo Croce <mcroce@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d3eb3b2333ff0ee194ba86111270260b8aef027
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Wed Apr 17 00:21:21 2019 -0700

    arm64: futex: Restore oldval initialization to work around buggy compilers
    
    commit ff8acf929014b7f87315588e0daf8597c8aa9d1c upstream.
    
    Commit 045afc24124d ("arm64: futex: Fix FUTEX_WAKE_OP atomic ops with
    non-zero result value") removed oldval's zero initialization in
    arch_futex_atomic_op_inuser because it is not necessary. Unfortunately,
    Android's arm64 GCC 4.9.4 [1] does not agree:
    
    ../kernel/futex.c: In function 'do_futex':
    ../kernel/futex.c:1658:17: warning: 'oldval' may be used uninitialized
    in this function [-Wmaybe-uninitialized]
       return oldval == cmparg;
                     ^
    In file included from ../kernel/futex.c:73:0:
    ../arch/arm64/include/asm/futex.h:53:6: note: 'oldval' was declared here
      int oldval, ret, tmp;
          ^
    
    GCC fails to follow that when ret is non-zero, futex_atomic_op_inuser
    returns right away, avoiding the uninitialized use that it claims.
    Restoring the zero initialization works around this issue.
    
    [1]: https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/
    
    Cc: stable@vger.kernel.org
    Fixes: 045afc24124d ("arm64: futex: Fix FUTEX_WAKE_OP atomic ops with non-zero result value")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73d117dcbb1d7d128f2389b2649698c7424e1e78
Author: Jann Horn <jannh@google.com>
Date:   Tue Mar 19 02:36:59 2019 +0100

    device_cgroup: fix RCU imbalance in error case
    
    commit 0fcc4c8c044e117ac126ab6df4138ea9a67fa2a9 upstream.
    
    When dev_exception_add() returns an error (due to a failed memory
    allocation), make sure that we move the RCU preemption count back to where
    it was before we were called. We dropped the RCU read lock inside the loop
    body, so we can't just "break".
    
    sparse complains about this, too:
    
    $ make -s C=2 security/device_cgroup.o
    ./include/linux/rcupdate.h:647:9: warning: context imbalance in
    'propagate_exception' - unexpected unlock
    
    Fixes: d591fb56618f ("device_cgroup: simplify cgroup tree walk in propagate_exception()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jann Horn <jannh@google.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bd860d65dff11a8339bd37b96b4905b182ecb1b0
Author: Phil Auld <pauld@redhat.com>
Date:   Tue Apr 23 19:51:06 2019 -0400

    sched/fair: Limit sched_cfs_period_timer() loop to avoid hard lockup
    
    [ Upstream commit 2e8e19226398db8265a8e675fcc0118b9e80c9e8 ]
    
    With extremely short cfs_period_us setting on a parent task group with a large
    number of children the for loop in sched_cfs_period_timer() can run until the
    watchdog fires. There is no guarantee that the call to hrtimer_forward_now()
    will ever return 0.  The large number of children can make
    do_sched_cfs_period_timer() take longer than the period.
    
     NMI watchdog: Watchdog detected hard LOCKUP on cpu 24
     RIP: 0010:tg_nop+0x0/0x10
      <IRQ>
      walk_tg_tree_from+0x29/0xb0
      unthrottle_cfs_rq+0xe0/0x1a0
      distribute_cfs_runtime+0xd3/0xf0
      sched_cfs_period_timer+0xcb/0x160
      ? sched_cfs_slack_timer+0xd0/0xd0
      __hrtimer_run_queues+0xfb/0x270
      hrtimer_interrupt+0x122/0x270
      smp_apic_timer_interrupt+0x6a/0x140
      apic_timer_interrupt+0xf/0x20
      </IRQ>
    
    To prevent this we add protection to the loop that detects when the loop has run
    too many times and scales the period and quota up, proportionally, so that the timer
    can complete before then next period expires.  This preserves the relative runtime
    quota while preventing the hard lockup.
    
    A warning is issued reporting this state and the new values.
    
    Signed-off-by: Phil Auld <pauld@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@vger.kernel.org>
    Cc: Anton Blanchard <anton@ozlabs.org>
    Cc: Ben Segall <bsegall@google.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20190319130005.25492-1-pauld@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 89c254ec33654255e7653c6dbadfd03a18bf3bae
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Mon Apr 15 15:01:25 2019 +0900

    kprobes: Fix error check when reusing optimized probes
    
    commit 5f843ed415581cfad4ef8fefe31c138a8346ca8a upstream.
    
    The following commit introduced a bug in one of our error paths:
    
      819319fc9346 ("kprobes: Return error if we fail to reuse kprobe instead of BUG_ON()")
    
    it missed to handle the return value of kprobe_optready() as
    error-value. In reality, the kprobe_optready() returns a bool
    result, so "true" case must be passed instead of 0.
    
    This causes some errors on kprobe boot-time selftests on ARM:
    
     [   ] Beginning kprobe tests...
     [   ] Probe ARM code
     [   ]     kprobe
     [   ]     kretprobe
     [   ] ARM instruction simulation
     [   ]     Check decoding tables
     [   ]     Run test cases
     [   ] FAIL: test_case_handler not run
     [   ] FAIL: Test andge r10, r11, r14, asr r7
     [   ] FAIL: Scenario 11
     ...
     [   ] FAIL: Scenario 7
     [   ] Total instruction simulation tests=1631, pass=1433 fail=198
     [   ] kprobe tests failed
    
    This can happen if an optimized probe is unregistered and next
    kprobe is registered on same address until the previous probe
    is not reclaimed.
    
    If this happens, a hidden aggregated probe may be kept in memory,
    and no new kprobe can probe same address. Also, in that case
    register_kprobe() will return "1" instead of minus error value,
    which can mislead caller logic.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    Cc: David S . Miller <davem@davemloft.net>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Naveen N . Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org # v5.0+
    Fixes: 819319fc9346 ("kprobes: Return error if we fail to reuse kprobe instead of BUG_ON()")
    Link: http://lkml.kernel.org/r/155530808559.32517.539898325433642204.stgit@devnote2
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71dc273de2d243657584fb206cd090150bb66a0d
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sun Feb 24 01:49:52 2019 +0900

    x86/kprobes: Verify stack frame on kretprobe
    
    commit 3ff9c075cc767b3060bdac12da72fc94dd7da1b8 upstream.
    
    Verify the stack frame pointer on kretprobe trampoline handler,
    If the stack frame pointer does not match, it skips the wrong
    entry and tries to find correct one.
    
    This can happen if user puts the kretprobe on the function
    which can be used in the path of ftrace user-function call.
    Such functions should not be probed, so this adds a warning
    message that reports which function should be blacklisted.
    
    Tested-by: Andrea Righi <righi.andrea@gmail.com>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Acked-by: Steven Rostedt <rostedt@goodmis.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/155094059185.6137.15527904013362842072.stgit@devbox
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ad4179e47f711549de33f991dfb8e129ed1175e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 16 17:06:33 2019 +0200

    ALSA: core: Fix card races between register and disconnect
    
    commit 2a3f7221acddfe1caa9ff09b3a8158c39b2fdeac upstream.
    
    There is a small race window in the card disconnection code that
    allows the registration of another card with the very same card id.
    This leads to a warning in procfs creation as caught by syzkaller.
    
    The problem is that we delete snd_cards and snd_cards_lock entries at
    the very beginning of the disconnection procedure.  This makes the
    slot available to be assigned for another card object while the
    disconnection procedure is being processed.  Then it becomes possible
    to issue a procfs registration with the existing file name although we
    check the conflict beforehand.
    
    The fix is simply to move the snd_cards and snd_cards_lock clearances
    at the end of the disconnection procedure.  The references to these
    entries are merely either from the global proc files like
    /proc/asound/cards or from the card registration / disconnection, so
    it should be fine to shift at the very end.
    
    Reported-by: syzbot+48df349490c36f9f54ab@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38b45533b64ffd093423c4ef288b1a6b8d020f9c
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Apr 15 12:43:02 2019 +0100

    staging: comedi: ni_usb6501: Fix possible double-free of ->usb_rx_buf
    
    commit af4b54a2e5ba18259ff9aac445bf546dd60d037e upstream.
    
    `ni6501_alloc_usb_buffers()` is called from `ni6501_auto_attach()` to
    allocate RX and TX buffers for USB transfers.  It allocates
    `devpriv->usb_rx_buf` followed by `devpriv->usb_tx_buf`.  If the
    allocation of `devpriv->usb_tx_buf` fails, it frees
    `devpriv->usb_rx_buf`, leaving the pointer set dangling, and returns an
    error.  Later, `ni6501_detach()` will be called from the core comedi
    module code to clean up.  `ni6501_detach()` also frees both
    `devpriv->usb_rx_buf` and `devpriv->usb_tx_buf`, but
    `devpriv->usb_rx_buf` may have already beed freed, leading to a
    double-free error.  Fix it bu removing the call to
    `kfree(devpriv->usb_rx_buf)` from `ni6501_alloc_usb_buffers()`, relying
    on `ni6501_detach()` to free the memory.
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 911176ad4df2a523102aa8dd156716e4342f2560
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Apr 15 12:52:30 2019 +0100

    staging: comedi: vmk80xx: Fix possible double-free of ->usb_rx_buf
    
    commit 663d294b4768bfd89e529e069bffa544a830b5bf upstream.
    
    `vmk80xx_alloc_usb_buffers()` is called from `vmk80xx_auto_attach()` to
    allocate RX and TX buffers for USB transfers.  It allocates
    `devpriv->usb_rx_buf` followed by `devpriv->usb_tx_buf`.  If the
    allocation of `devpriv->usb_tx_buf` fails, it frees
    `devpriv->usb_rx_buf`,  leaving the pointer set dangling, and returns an
    error.  Later, `vmk80xx_detach()` will be called from the core comedi
    module code to clean up.  `vmk80xx_detach()` also frees both
    `devpriv->usb_rx_buf` and `devpriv->usb_tx_buf`, but
    `devpriv->usb_rx_buf` may have already been freed, leading to a
    double-free error.  Fix it by removing the call to
    `kfree(devpriv->usb_rx_buf)` from `vmk80xx_alloc_usb_buffers()`, relying
    on `vmk80xx_detach()` to free the memory.
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit afb7cd602189da55dce400cb44d8bd42044e6894
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Apr 15 12:10:14 2019 +0100

    staging: comedi: vmk80xx: Fix use of uninitialized semaphore
    
    commit 08b7c2f9208f0e2a32159e4e7a4831b7adb10a3e upstream.
    
    If `vmk80xx_auto_attach()` returns an error, the core comedi module code
    will call `vmk80xx_detach()` to clean up.  If `vmk80xx_auto_attach()`
    successfully allocated the comedi device private data,
    `vmk80xx_detach()` assumes that a `struct semaphore limit_sem` contained
    in the private data has been initialized and uses it.  Unfortunately,
    there are a couple of places where `vmk80xx_auto_attach()` can return an
    error after allocating the device private data but before initializing
    the semaphore, so this assumption is invalid.  Fix it by initializing
    the semaphore just after allocating the private data in
    `vmk80xx_auto_attach()` before any other errors can be returned.
    
    I believe this was the cause of the following syzbot crash report
    <https://syzkaller.appspot.com/bug?extid=54c2f58f15fe6876b6ad>:
    
    usb 1-1: config 0 has no interface number 0
    usb 1-1: New USB device found, idVendor=10cf, idProduct=8068, bcdDevice=e6.8d
    usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    usb 1-1: config 0 descriptor??
    vmk80xx 1-1:0.117: driver 'vmk80xx' failed to auto-configure device.
    INFO: trying to register non-static key.
    the code is fine but needs lockdep annotation.
    turning off the locking correctness validator.
    CPU: 0 PID: 12 Comm: kworker/0:1 Not tainted 5.1.0-rc4-319354-g9a33b36 #3
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: usb_hub_wq hub_event
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xe8/0x16e lib/dump_stack.c:113
     assign_lock_key kernel/locking/lockdep.c:786 [inline]
     register_lock_class+0x11b8/0x1250 kernel/locking/lockdep.c:1095
     __lock_acquire+0xfb/0x37c0 kernel/locking/lockdep.c:3582
     lock_acquire+0x10d/0x2f0 kernel/locking/lockdep.c:4211
     __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
     _raw_spin_lock_irqsave+0x44/0x60 kernel/locking/spinlock.c:152
     down+0x12/0x80 kernel/locking/semaphore.c:58
     vmk80xx_detach+0x59/0x100 drivers/staging/comedi/drivers/vmk80xx.c:829
     comedi_device_detach+0xed/0x800 drivers/staging/comedi/drivers.c:204
     comedi_device_cleanup.part.0+0x68/0x140 drivers/staging/comedi/comedi_fops.c:156
     comedi_device_cleanup drivers/staging/comedi/comedi_fops.c:187 [inline]
     comedi_free_board_dev.part.0+0x16/0x90 drivers/staging/comedi/comedi_fops.c:190
     comedi_free_board_dev drivers/staging/comedi/comedi_fops.c:189 [inline]
     comedi_release_hardware_device+0x111/0x140 drivers/staging/comedi/comedi_fops.c:2880
     comedi_auto_config.cold+0x124/0x1b0 drivers/staging/comedi/drivers.c:1068
     usb_probe_interface+0x31d/0x820 drivers/usb/core/driver.c:361
     really_probe+0x2da/0xb10 drivers/base/dd.c:509
     driver_probe_device+0x21d/0x350 drivers/base/dd.c:671
     __device_attach_driver+0x1d8/0x290 drivers/base/dd.c:778
     bus_for_each_drv+0x163/0x1e0 drivers/base/bus.c:454
     __device_attach+0x223/0x3a0 drivers/base/dd.c:844
     bus_probe_device+0x1f1/0x2a0 drivers/base/bus.c:514
     device_add+0xad2/0x16e0 drivers/base/core.c:2106
     usb_set_configuration+0xdf7/0x1740 drivers/usb/core/message.c:2021
     generic_probe+0xa2/0xda drivers/usb/core/generic.c:210
     usb_probe_device+0xc0/0x150 drivers/usb/core/driver.c:266
     really_probe+0x2da/0xb10 drivers/base/dd.c:509
     driver_probe_device+0x21d/0x350 drivers/base/dd.c:671
     __device_attach_driver+0x1d8/0x290 drivers/base/dd.c:778
     bus_for_each_drv+0x163/0x1e0 drivers/base/bus.c:454
     __device_attach+0x223/0x3a0 drivers/base/dd.c:844
     bus_probe_device+0x1f1/0x2a0 drivers/base/bus.c:514
     device_add+0xad2/0x16e0 drivers/base/core.c:2106
     usb_new_device.cold+0x537/0xccf drivers/usb/core/hub.c:2534
     hub_port_connect drivers/usb/core/hub.c:5089 [inline]
     hub_port_connect_change drivers/usb/core/hub.c:5204 [inline]
     port_event drivers/usb/core/hub.c:5350 [inline]
     hub_event+0x138e/0x3b00 drivers/usb/core/hub.c:5432
     process_one_work+0x90f/0x1580 kernel/workqueue.c:2269
     worker_thread+0x9b/0xe20 kernel/workqueue.c:2415
     kthread+0x313/0x420 kernel/kthread.c:253
     ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352
    
    Reported-by: syzbot+54c2f58f15fe6876b6ad@syzkaller.appspotmail.com
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd10344b7c0a572d895456506bf8d9d5caa0ecf5
Author: Georg Ottinger <g.ottinger@abatec.at>
Date:   Wed Jan 30 14:42:02 2019 +0100

    iio: adc: at91: disable adc channel interrupt in timeout case
    
    commit 09c6bdee51183a575bf7546890c8c137a75a2b44 upstream.
    
    Having a brief look at at91_adc_read_raw() it is obvious that in the case
    of a timeout the setting of AT91_ADC_CHDR and AT91_ADC_IDR registers is
    omitted. If 2 different channels are queried we can end up with a
    situation where two interrupts are enabled, but only one interrupt is
    cleared in the interrupt handler. Resulting in a interrupt loop and a
    system hang.
    
    Signed-off-by: Georg Ottinger <g.ottinger@abatec.at>
    Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d4f298b95e4a5fd550fc258834b846af64815c1
Author: Dragos Bogdan <dragos.bogdan@analog.com>
Date:   Tue Mar 19 12:47:00 2019 +0200

    iio: ad_sigma_delta: select channel when reading register
    
    commit fccfb9ce70ed4ea7a145f77b86de62e38178517f upstream.
    
    The desired channel has to be selected in order to correctly fill the
    buffer with the corresponding data.
    The `ad_sd_write_reg()` already does this, but for the
    `ad_sd_read_reg_raw()` this was omitted.
    
    Fixes: af3008485ea03 ("iio:adc: Add common code for ADI Sigma Delta devices")
    Signed-off-by: Dragos Bogdan <dragos.bogdan@analog.com>
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55b4957dcc74722ebea24a12a33e5c5c03b8495f
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Apr 16 10:55:20 2019 -0700

    tcp: tcp_grow_window() needs to respect tcp_space()
    
    [ Upstream commit 50ce163a72d817a99e8974222dcf2886d5deb1ae ]
    
    For some reason, tcp_grow_window() correctly tests if enough room
    is present before attempting to increase tp->rcv_ssthresh,
    but does not prevent it to grow past tcp_space()
    
    This is causing hard to debug issues, like failing
    the (__tcp_select_window(sk) >= tp->rcv_wnd) test
    in __tcp_ack_snd_check(), causing ACK delays and possibly
    slow flows.
    
    Depending on tcp_rmem[2], MTU, skb->len/skb->truesize ratio,
    we can see the problem happening on "netperf -t TCP_RR -- -r 2000,2000"
    after about 60 round trips, when the active side no longer sends
    immediate acks.
    
    This bug predates git history.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Wei Wang <weiwan@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f769967110b692bd9d7cd1ad3d9fbc7c3eee72d9
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 13 17:32:21 2019 -0700

    ipv4: ensure rcu_read_lock() in ipv4_link_failure()
    
    [ Upstream commit c543cb4a5f07e09237ec0fc2c60c9f131b2c79ad ]
    
    fib_compute_spec_dst() needs to be called under rcu protection.
    
    syzbot reported :
    
    WARNING: suspicious RCU usage
    5.1.0-rc4+ #165 Not tainted
    include/linux/inetdevice.h:220 suspicious rcu_dereference_check() usage!
    
    other info that might help us debug this:
    
    rcu_scheduler_active = 2, debug_locks = 1
    1 lock held by swapper/0/0:
     #0: 0000000051b67925 ((&n->timer)){+.-.}, at: lockdep_copy_map include/linux/lockdep.h:170 [inline]
     #0: 0000000051b67925 ((&n->timer)){+.-.}, at: call_timer_fn+0xda/0x720 kernel/time/timer.c:1315
    
    stack backtrace:
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.1.0-rc4+ #165
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x172/0x1f0 lib/dump_stack.c:113
     lockdep_rcu_suspicious+0x153/0x15d kernel/locking/lockdep.c:5162
     __in_dev_get_rcu include/linux/inetdevice.h:220 [inline]
     fib_compute_spec_dst+0xbbd/0x1030 net/ipv4/fib_frontend.c:294
     spec_dst_fill net/ipv4/ip_options.c:245 [inline]
     __ip_options_compile+0x15a7/0x1a10 net/ipv4/ip_options.c:343
     ipv4_link_failure+0x172/0x400 net/ipv4/route.c:1195
     dst_link_failure include/net/dst.h:427 [inline]
     arp_error_report+0xd1/0x1c0 net/ipv4/arp.c:297
     neigh_invalidate+0x24b/0x570 net/core/neighbour.c:995
     neigh_timer_handler+0xc35/0xf30 net/core/neighbour.c:1081
     call_timer_fn+0x190/0x720 kernel/time/timer.c:1325
     expire_timers kernel/time/timer.c:1362 [inline]
     __run_timers kernel/time/timer.c:1681 [inline]
     __run_timers kernel/time/timer.c:1649 [inline]
     run_timer_softirq+0x652/0x1700 kernel/time/timer.c:1694
     __do_softirq+0x266/0x95a kernel/softirq.c:293
     invoke_softirq kernel/softirq.c:374 [inline]
     irq_exit+0x180/0x1d0 kernel/softirq.c:414
     exiting_irq arch/x86/include/asm/apic.h:536 [inline]
     smp_apic_timer_interrupt+0x14a/0x570 arch/x86/kernel/apic/apic.c:1062
     apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:807
    
    Fixes: ed0de45a1008 ("ipv4: recompile ip options in ipv4_link_failure")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Stephen Suryaputra <ssuryaextr@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c2fa855d8178699706b1192db2f1f8102b0ba1e
Author: Stephen Suryaputra <ssuryaextr@gmail.com>
Date:   Fri Apr 12 16:19:27 2019 -0400

    ipv4: recompile ip options in ipv4_link_failure
    
    [ Upstream commit ed0de45a1008991fdaa27a0152befcb74d126a8b ]
    
    Recompile IP options since IPCB may not be valid anymore when
    ipv4_link_failure is called from arp_error_report.
    
    Refer to the commit 3da1ed7ac398 ("net: avoid use IPCB in cipso_v4_error")
    and the commit before that (9ef6b42ad6fd) for a similar issue.
    
    Signed-off-by: Stephen Suryaputra <ssuryaextr@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c63dcecbc234de4e80d1f788cd3c8ef60024f75b
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Thu Apr 11 15:08:25 2019 +0300

    net: bridge: multicast: use rcu to access port list from br_multicast_start_querier
    
    [ Upstream commit c5b493ce192bd7a4e7bd073b5685aad121eeef82 ]
    
    br_multicast_start_querier() walks over the port list but it can be
    called from a timer with only multicast_lock held which doesn't protect
    the port list, so use RCU to walk over it.
    
    Fixes: c83b8fab06fc ("bridge: Restart queries when last querier expires")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd70ca6724cb19c7a7464d3c7d83b0ad2a464409
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Fri Apr 12 15:04:10 2019 +0200

    bonding: fix event handling for stacked bonds
    
    [ Upstream commit 92480b3977fd3884649d404cbbaf839b70035699 ]
    
    When a bond is enslaved to another bond, bond_netdev_event() only
    handles the event as if the bond is a master, and skips treating the
    bond as a slave.
    
    This leads to a refcount leak on the slave, since we don't remove the
    adjacency to its master and the master holds a reference on the slave.
    
    Reproducer:
      ip link add bondL type bond
      ip link add bondU type bond
      ip link set bondL master bondU
      ip link del bondL
    
    No "Fixes:" tag, this code is older than git history.
    
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e6fdf586a39c870dc2dba8f624009340328bd41
Author: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date:   Tue Apr 23 15:46:59 2019 +0300

    tpm/tpm_i2c_atmel: Return -E2BIG when the transfer is incomplete
    
    commit 442601e87a4769a8daba4976ec3afa5222ca211d upstream
    
    Return -E2BIG when the transfer is incomplete. The upper layer does
    not retry, so not doing that is incorrect behaviour.
    
    Cc: stable@vger.kernel.org
    Fixes: a2871c62e186 ("tpm: Add support for Atmel I2C TPMs")
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
    Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f777415bb9459aa2f1923037331368ef242c0090
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Thu Apr 19 18:41:55 2018 +0200

    crypto: crypto4xx - properly set IV after de- and encrypt
    
    [ Upstream commit fc340115ffb8235c1bbd200c28855e6373d0dd1a ]
    
    This patch fixes cts(cbc(aes)) test when cbc-aes-ppc4xx is used.
    alg: skcipher: Test 1 failed (invalid result) on encryption for cts(cbc-aes-ppc4xx)
    00000000: 4b 10 75 fc 2f 14 1b 6a 27 35 37 33 d1 b7 70 05
    00000010: 97
    alg: skcipher: Failed to load transform for cts(cbc(aes)): -2
    
    The CTS cipher mode expect the IV (req->iv) of skcipher_request
    to contain the last ciphertext block after the {en,de}crypt
    operation is complete.
    
    Fix this issue for the AMCC Crypto4xx hardware engine.
    The tcrypt test case for cts(cbc(aes)) is now correctly passed.
    
    name         : cts(cbc(aes))
    driver       : cts(cbc-aes-ppc4xx)
    module       : cts
    priority     : 300
    refcnt       : 1
    selftest     : passed
    internal     : no
    type         : skcipher
    async        : yes
    blocksize    : 16
    min keysize  : 16
    max keysize  : 32
    ivsize       : 16
    chunksize    : 16
    walksize     : 16
    
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 27c72725a63a1b0b1c16878e61501ed0d1e0691e
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Mar 6 11:52:36 2019 +0100

    appletalk: Fix compile regression
    
    [ Upstream commit 27da0d2ef998e222a876c0cec72aa7829a626266 ]
    
    A bugfix just broke compilation of appletalk when CONFIG_SYSCTL
    is disabled:
    
    In file included from net/appletalk/ddp.c:65:
    net/appletalk/ddp.c: In function 'atalk_init':
    include/linux/atalk.h:164:34: error: expected expression before 'do'
     #define atalk_register_sysctl()  do { } while(0)
                                      ^~
    net/appletalk/ddp.c:1934:7: note: in expansion of macro 'atalk_register_sysctl'
      rc = atalk_register_sysctl();
    
    This is easier to avoid by using conventional inline functions
    as stubs rather than macros. The header already has inline
    functions for other purposes, so I'm changing over all the
    macros for consistency.
    
    Fixes: 6377f787aeb9 ("appletalk: Fix use-after-free in atalk_proc_exit")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55f0fc7a02de8f12757f4937143d8d5091b2e40b
Author: Amit Klein <aksecurity@gmail.com>
Date:   Thu Apr 18 21:07:11 2019 +0000

    inet: update the IP ID generation algorithm to higher standards.
    
    Commit 355b98553789 ("netns: provide pure entropy for net_hash_mix()")
    makes net_hash_mix() return a true 32 bits of entropy.  When used in the
    IP ID generation algorithm, this has the effect of extending the IP ID
    generation key from 32 bits to 64 bits.
    
    However, net_hash_mix() is only used for IP ID generation starting with
    kernel version 4.1.  Therefore, earlier kernels remain with 32-bit key
    no matter what the net_hash_mix() return value is.
    
    This change addresses the issue by explicitly extending the key to 64
    bits for kernels older than 4.1.
    
    Signed-off-by: Amit Klein <aksecurity@gmail.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8620392634e75cd4b08af3c070af87814593125e
Author: Pi-Hsun Shih <pihsun@chromium.org>
Date:   Wed Mar 13 11:44:33 2019 -0700

    include/linux/swap.h: use offsetof() instead of custom __swapoffset macro
    
    [ Upstream commit a4046c06be50a4f01d435aa7fe57514818e6cc82 ]
    
    Use offsetof() to calculate offset of a field to take advantage of
    compiler built-in version when possible, and avoid UBSAN warning when
    compiling with Clang:
    
      UBSAN: Undefined behaviour in mm/swapfile.c:3010:38
      member access within null pointer of type 'union swap_header'
      CPU: 6 PID: 1833 Comm: swapon Tainted: G S                4.19.23 #43
      Call trace:
       dump_backtrace+0x0/0x194
       show_stack+0x20/0x2c
       __dump_stack+0x20/0x28
       dump_stack+0x70/0x94
       ubsan_epilogue+0x14/0x44
       ubsan_type_mismatch_common+0xf4/0xfc
       __ubsan_handle_type_mismatch_v1+0x34/0x54
       __se_sys_swapon+0x654/0x1084
       __arm64_sys_swapon+0x1c/0x24
       el0_svc_common+0xa8/0x150
       el0_svc_compat_handler+0x2c/0x38
       el0_svc_compat+0x8/0x18
    
    Link: http://lkml.kernel.org/r/20190312081902.223764-1-pihsun@chromium.org
    Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08e137dc700efe2db1160088f348442fd0337fd7
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Thu Mar 7 16:28:18 2019 -0800

    lib/div64.c: off by one in shift
    
    [ Upstream commit cdc94a37493135e355dfc0b0e086d84e3eadb50d ]
    
    fls counts bits starting from 1 to 32 (returns 0 for zero argument).  If
    we add 1 we shift right one bit more and loose precision from divisor,
    what cause function incorect results with some numbers.
    
    Corrected code was tested in user-space, see bugzilla:
       https://bugzilla.kernel.org/show_bug.cgi?id=202391
    
    Link: http://lkml.kernel.org/r/1548686944-11891-1-git-send-email-sgruszka@redhat.com
    Fixes: 658716d19f8f ("div64_u64(): improve precision on 32bit platforms")
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Reported-by: Siarhei Volkau <lis8215@gmail.com>
    Tested-by: Siarhei Volkau <lis8215@gmail.com>
    Acked-by: 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: Sasha Levin <sashal@kernel.org>

commit ab885986b6308c902364b4a91d73fae3003da9fe
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Fri Mar 1 10:57:57 2019 +0800

    appletalk: Fix use-after-free in atalk_proc_exit
    
    [ Upstream commit 6377f787aeb945cae7abbb6474798de129e1f3ac ]
    
    KASAN report this:
    
    BUG: KASAN: use-after-free in pde_subdir_find+0x12d/0x150 fs/proc/generic.c:71
    Read of size 8 at addr ffff8881f41fe5b0 by task syz-executor.0/2806
    
    CPU: 0 PID: 2806 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
     pde_subdir_find+0x12d/0x150 fs/proc/generic.c:71
     remove_proc_entry+0xe8/0x420 fs/proc/generic.c:667
     atalk_proc_exit+0x18/0x820 [appletalk]
     atalk_exit+0xf/0x5a [appletalk]
     __do_sys_delete_module kernel/module.c:1018 [inline]
     __se_sys_delete_module kernel/module.c:961 [inline]
     __x64_sys_delete_module+0x3dc/0x5e0 kernel/module.c:961
     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:00007fb2de6b9c58 EFLAGS: 00000246 ORIG_RAX: 00000000000000b0
    RAX: ffffffffffffffda RBX: 000000000073bf00 RCX: 0000000000462e99
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00000000200001c0
    RBP: 0000000000000002 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007fb2de6ba6bc
    R13: 00000000004bccaa R14: 00000000006f6bc8 R15: 00000000ffffffff
    
    Allocated by task 2806:
     set_track mm/kasan/common.c:85 [inline]
     __kasan_kmalloc.constprop.3+0xa0/0xd0 mm/kasan/common.c:496
     slab_post_alloc_hook mm/slab.h:444 [inline]
     slab_alloc_node mm/slub.c:2739 [inline]
     slab_alloc mm/slub.c:2747 [inline]
     kmem_cache_alloc+0xcf/0x250 mm/slub.c:2752
     kmem_cache_zalloc include/linux/slab.h:730 [inline]
     __proc_create+0x30f/0xa20 fs/proc/generic.c:408
     proc_mkdir_data+0x47/0x190 fs/proc/generic.c:469
     0xffffffffc10c01bb
     0xffffffffc10c0166
     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 2806:
     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]
     kmem_cache_free+0xa6/0x2a0 mm/slub.c:3002
     pde_put+0x6e/0x80 fs/proc/generic.c:647
     remove_proc_entry+0x1d3/0x420 fs/proc/generic.c:684
     0xffffffffc10c031c
     0xffffffffc10c0166
     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 ffff8881f41fe500
     which belongs to the cache proc_dir_entry of size 256
    The buggy address is located 176 bytes inside of
     256-byte region [ffff8881f41fe500, ffff8881f41fe600)
    The buggy address belongs to the page:
    page:ffffea0007d07f80 count:1 mapcount:0 mapping:ffff8881f6e69a00 index:0x0
    flags: 0x2fffc0000000200(slab)
    raw: 02fffc0000000200 dead000000000100 dead000000000200 ffff8881f6e69a00
    raw: 0000000000000000 00000000800c000c 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8881f41fe480: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
     ffff8881f41fe500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff8881f41fe580: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                         ^
     ffff8881f41fe600: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
     ffff8881f41fe680: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    
    It should check the return value of atalk_proc_init fails,
    otherwise atalk_exit will trgger use-after-free in pde_subdir_find
    while unload the module.This patch fix error cleanup path of atalk_init
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 88f8bbd24dfeb87442fb5be6aa9dad575021a5f4
Author: Julia Cartwright <julia@ni.com>
Date:   Wed Feb 20 16:46:31 2019 +0000

    iommu/dmar: Fix buffer overflow during PCI bus notification
    
    [ Upstream commit cffaaf0c816238c45cd2d06913476c83eb50f682 ]
    
    Commit 57384592c433 ("iommu/vt-d: Store bus information in RMRR PCI
    device path") changed the type of the path data, however, the change in
    path type was not reflected in size calculations.  Update to use the
    correct type and prevent a buffer overflow.
    
    This bug manifests in systems with deep PCI hierarchies, and can lead to
    an overflow of the static allocated buffer (dmar_pci_notify_info_buf),
    or can lead to overflow of slab-allocated data.
    
       BUG: KASAN: global-out-of-bounds in dmar_alloc_pci_notify_info+0x1d5/0x2e0
       Write of size 1 at addr ffffffff90445d80 by task swapper/0/1
       CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W       4.14.87-rt49-02406-gd0a0e96 #1
       Call Trace:
        ? dump_stack+0x46/0x59
        ? print_address_description+0x1df/0x290
        ? dmar_alloc_pci_notify_info+0x1d5/0x2e0
        ? kasan_report+0x256/0x340
        ? dmar_alloc_pci_notify_info+0x1d5/0x2e0
        ? e820__memblock_setup+0xb0/0xb0
        ? dmar_dev_scope_init+0x424/0x48f
        ? __down_write_common+0x1ec/0x230
        ? dmar_dev_scope_init+0x48f/0x48f
        ? dmar_free_unused_resources+0x109/0x109
        ? cpumask_next+0x16/0x20
        ? __kmem_cache_create+0x392/0x430
        ? kmem_cache_create+0x135/0x2f0
        ? e820__memblock_setup+0xb0/0xb0
        ? intel_iommu_init+0x170/0x1848
        ? _raw_spin_unlock_irqrestore+0x32/0x60
        ? migrate_enable+0x27a/0x5b0
        ? sched_setattr+0x20/0x20
        ? migrate_disable+0x1fc/0x380
        ? task_rq_lock+0x170/0x170
        ? try_to_run_init_process+0x40/0x40
        ? locks_remove_file+0x85/0x2f0
        ? dev_prepare_static_identity_mapping+0x78/0x78
        ? rt_spin_unlock+0x39/0x50
        ? lockref_put_or_lock+0x2a/0x40
        ? dput+0x128/0x2f0
        ? __rcu_read_unlock+0x66/0x80
        ? __fput+0x250/0x300
        ? __rcu_read_lock+0x1b/0x30
        ? mntput_no_expire+0x38/0x290
        ? e820__memblock_setup+0xb0/0xb0
        ? pci_iommu_init+0x25/0x63
        ? pci_iommu_init+0x25/0x63
        ? do_one_initcall+0x7e/0x1c0
        ? initcall_blacklisted+0x120/0x120
        ? kernel_init_freeable+0x27b/0x307
        ? rest_init+0xd0/0xd0
        ? kernel_init+0xf/0x120
        ? rest_init+0xd0/0xd0
        ? ret_from_fork+0x1f/0x40
       The buggy address belongs to the variable:
        dmar_pci_notify_info_buf+0x40/0x60
    
    Fixes: 57384592c433 ("iommu/vt-d: Store bus information in RMRR PCI device path")
    Signed-off-by: Julia Cartwright <julia@ni.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 51758f1b9ec7316c94a3f3aeea51382f523657d6
Author: Ronald Tschalär <ronald@innovation.ch>
Date:   Sun Sep 30 19:52:51 2018 -0700

    ACPI / SBS: Fix GPE storm on recent MacBookPro's
    
    [ Upstream commit ca1721c5bee77105829cbd7baab8ee0eab85b06d ]
    
    On Apple machines, plugging-in or unplugging the power triggers a GPE
    for the EC. Since these machines expose an SBS device, this GPE ends
    up triggering the acpi_sbs_callback(). This in turn tries to get the
    status of the SBS charger. However, on MBP13,* and MBP14,* machines,
    performing the smbus-read operation to get the charger's status triggers
    the EC's GPE again. The result is an endless re-triggering and handling
    of that GPE, consuming significant CPU resources (> 50% in irq).
    
    In the end this is quite similar to commit 3031cddea633 (ACPI / SBS:
    Don't assume the existence of an SBS charger), except that on the above
    machines a status of all 1's is returned. And like there, we just want
    ignore the charger here.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=198169
    Signed-off-by: Ronald Tschalär <ronald@innovation.ch>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6a701889a8f9138018e34b45feacc53a37a6ab58
Author: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Date:   Fri Sep 28 15:32:46 2018 +0200

    ARM: samsung: Limit SAMSUNG_PM_CHECK config option to non-Exynos platforms
    
    [ Upstream commit 6862fdf2201ab67cd962dbf0643d37db909f4860 ]
    
    "S3C2410 PM Suspend Memory CRC" feature (controlled by
    SAMSUNG_PM_CHECK config option) is incompatible with highmem
    (uses phys_to_virt() instead of proper mapping) which is used by
    the majority of Exynos boards. The issue manifests itself in OOPS
    on affected boards, i.e. on Odroid-U3 I got the following one:
    
    Unable to handle kernel paging request at virtual address f0000000
    pgd = 1c0f9bb4
    [f0000000] *pgd=00000000
    Internal error: Oops: 5 [#1] PREEMPT SMP ARM
    [<c0458034>] (crc32_le) from [<c0121f8c>] (s3c_pm_makecheck+0x34/0x54)
    [<c0121f8c>] (s3c_pm_makecheck) from [<c0121efc>] (s3c_pm_run_res+0x74/0x8c)
    [<c0121efc>] (s3c_pm_run_res) from [<c0121ecc>] (s3c_pm_run_res+0x44/0x8c)
    [<c0121ecc>] (s3c_pm_run_res) from [<c01210b8>] (exynos_suspend_enter+0x64/0x148)
    [<c01210b8>] (exynos_suspend_enter) from [<c018893c>] (suspend_devices_and_enter+0x9ec/0xe74)
    [<c018893c>] (suspend_devices_and_enter) from [<c0189534>] (pm_suspend+0x770/0xc04)
    [<c0189534>] (pm_suspend) from [<c0186ce8>] (state_store+0x6c/0xcc)
    [<c0186ce8>] (state_store) from [<c09db434>] (kobj_attr_store+0x14/0x20)
    [<c09db434>] (kobj_attr_store) from [<c02fa63c>] (sysfs_kf_write+0x4c/0x50)
    [<c02fa63c>] (sysfs_kf_write) from [<c02f97a4>] (kernfs_fop_write+0xfc/0x1e4)
    [<c02f97a4>] (kernfs_fop_write) from [<c027b198>] (__vfs_write+0x2c/0x140)
    [<c027b198>] (__vfs_write) from [<c027b418>] (vfs_write+0xa4/0x160)
    [<c027b418>] (vfs_write) from [<c027b5d8>] (ksys_write+0x40/0x8c)
    [<c027b5d8>] (ksys_write) from [<c0101000>] (ret_fast_syscall+0x0/0x28)
    
    Add PLAT_S3C24XX, ARCH_S3C64XX and ARCH_S5PV210 dependencies to
    SAMSUNG_PM_CHECK config option to hide it on Exynos platforms.
    
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8672b3c86907297481658730367022ede2c9dfe
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Mon Sep 3 15:10:49 2018 +0200

    serial: uartps: console_setup() can't be placed to init section
    
    [ Upstream commit 4bb1ce2350a598502b23088b169e16b43d4bc639 ]
    
    When console device is rebinded, console_setup() is called again.
    But marking it as __init means that function will be clear after boot is
    complete. If console device is binded again console_setup() is not found
    and error "Unable to handle kernel paging request at virtual address"
    is reported.
    
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ee6acb13285bc61bbfa2a61e7d021ae9fd2e6c5a
Author: Dinu-Razvan Chis-Serban <justcsdr@gmail.com>
Date:   Wed Sep 5 16:44:12 2018 +0900

    9p locks: add mount option for lock retry interval
    
    [ Upstream commit 5e172f75e51e3de1b4274146d9b990f803cb5c2a ]
    
    The default P9_LOCK_TIMEOUT can be too long for some users exporting
    a local file system to a guest VM (30s), make this configurable at
    mount time.
    
    Link: http://lkml.kernel.org/r/1536295827-3181-1-git-send-email-asmadeus@codewreck.org
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=195727
    Signed-off-by: Dinu-Razvan Chis-Serban <justcsdr@gmail.com>
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db8207b7ac30bb65907ab183e8e27b7576187627
Author: Gertjan Halkes <gertjan@google.com>
Date:   Wed Sep 5 15:41:29 2018 +0900

    9p: do not trust pdu content for stat item size
    
    [ Upstream commit 2803cf4379ed252894f046cb8812a48db35294e3 ]
    
    v9fs_dir_readdir() could deadloop if a struct was sent with a size set
    to -2
    
    Link: http://lkml.kernel.org/r/1536134432-11997-1-git-send-email-asmadeus@codewreck.org
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=88021
    Signed-off-by: Gertjan Halkes <gertjan@google.com>
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d8f70ad66032363e3edceee81a7be2aaccb2d7f5
Author: Siva Rebbagondla <siva.rebbagondla@redpinesignals.com>
Date:   Mon Aug 27 17:05:15 2018 +0530

    rsi: improve kernel thread handling to fix kernel panic
    
    [ Upstream commit 4c62764d0fc21a34ffc44eec1210038c3a2e4473 ]
    
    While running regressions, observed below kernel panic when sdio disconnect
    called. This is because of, kthread_stop() is taking care of
    wait_for_completion() by default. When wait_for_completion triggered
    in kthread_stop and as it was done already, giving kernel panic.
    Hence, removing redundant wait_for_completion() from rsi_kill_thread().
    
    ... skipping ...
    BUG: unable to handle kernel NULL pointer dereference at           (null)
    IP: [<ffffffff810a63df>] exit_creds+0x1f/0x50
    PGD 0
    Oops: 0002 [#1] SMP
    CPU: 0 PID: 6502 Comm: rmmod Tainted: G  OE   4.15.9-Generic #154-Ubuntu
    Hardware name: Dell Inc. Edge Gateway 3003/ , BIOS 01.00.00 04/17/2017
    Stack:
    ffff88007392e600 ffff880075847dc0 ffffffff8108160a 0000000000000000
    ffff88007392e600 ffff880075847de8 ffffffff810a484b ffff880076127000
    ffff88003cd3a800 ffff880074f12a00 ffff880075847e28 ffffffffc09bed15
    Call Trace:
    [<ffffffff8108160a>] __put_task_struct+0x5a/0x140
    [<ffffffff810a484b>] kthread_stop+0x10b/0x110
    [<ffffffffc09bed15>] rsi_disconnect+0x2f5/0x300 [ven_rsi_sdio]
    [<ffffffff81578bcb>] ? __pm_runtime_resume+0x5b/0x80
    [<ffffffff816f0918>] sdio_bus_remove+0x38/0x100
    [<ffffffff8156cc64>] __device_release_driver+0xa4/0x150
    [<ffffffff8156d7a5>] driver_detach+0xb5/0xc0
    [<ffffffff8156c6c5>] bus_remove_driver+0x55/0xd0
    [<ffffffff8156dfbc>] driver_unregister+0x2c/0x50
    [<ffffffff816f0b8a>] sdio_unregister_driver+0x1a/0x20
    [<ffffffffc09bf0f5>] rsi_module_exit+0x15/0x30 [ven_rsi_sdio]
    [<ffffffff8110cad8>] SyS_delete_module+0x1b8/0x210
    [<ffffffff81851dc8>] entry_SYSCALL_64_fastpath+0x1c/0xbb
    
    Signed-off-by: Siva Rebbagondla <siva.rebbagondla@redpinesignals.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 15863a0dfa9dad1f421c0e037221f1ad2f63b945
Author: Steve French <stfrench@microsoft.com>
Date:   Sun Mar 17 15:58:38 2019 -0500

    fix incorrect error code mapping for OBJECTID_NOT_FOUND
    
    [ Upstream commit 85f9987b236cf46e06ffdb5c225cf1f3c0acb789 ]
    
    It was mapped to EIO which can be confusing when user space
    queries for an object GUID for an object for which the server
    file system doesn't support (or hasn't saved one).
    
    As Amir Goldstein suggested this is similar to ENOATTR
    (equivalently ENODATA in Linux errno definitions) so
    changing NT STATUS code mapping for OBJECTID_NOT_FOUND
    to ENODATA.
    
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 13ad4729e6865cbb088f13e5b4cc4e5f0e8f1ad0
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Wed Mar 20 09:58:33 2019 +0800

    iommu/vt-d: Check capability before disabling protected memory
    
    [ Upstream commit 5bb71fc790a88d063507dc5d445ab8b14e845591 ]
    
    The spec states in 10.4.16 that the Protected Memory Enable
    Register should be treated as read-only for implementations
    not supporting protected memory regions (PLMR and PHMR fields
    reported as Clear in the Capability register).
    
    Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
    Cc: mark gross <mgross@intel.com>
    Suggested-by: Ashok Raj <ashok.raj@intel.com>
    Fixes: f8bab73515ca5 ("intel-iommu: PMEN support")
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d7201786ea98befea83f0e54e43ea76f4f10c3e6
Author: Matthew Whitehead <tedheadster@gmail.com>
Date:   Thu Mar 14 16:46:00 2019 -0400

    x86/cpu/cyrix: Use correct macros for Cyrix calls on Geode processors
    
    [ Upstream commit 18fb053f9b827bd98cfc64f2a35df8ab19745a1d ]
    
    There are comments in processor-cyrix.h advising you to _not_ make calls
    using the deprecated macros in this style:
    
      setCx86_old(CX86_CCR4, getCx86_old(CX86_CCR4) | 0x80);
    
    This is because it expands the macro into a non-functioning calling
    sequence. The calling order must be:
    
      outb(CX86_CCR2, 0x22);
      inb(0x23);
    
    From the comments:
    
     * When using the old macros a line like
     *   setCx86(CX86_CCR2, getCx86(CX86_CCR2) | 0x88);
     * gets expanded to:
     *  do {
     *    outb((CX86_CCR2), 0x22);
     *    outb((({
     *        outb((CX86_CCR2), 0x22);
     *        inb(0x23);
     *    }) | 0x88), 0x23);
     *  } while (0);
    
    The new macros fix this problem, so use them instead. Tested on an
    actual Geode processor.
    
    Signed-off-by: Matthew Whitehead <tedheadster@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: luto@kernel.org
    Link: https://lkml.kernel.org/r/1552596361-8967-2-git-send-email-tedheadster@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f57149631d43174684b106126870198958d89982
Author: Aditya Pakki <pakki001@umn.edu>
Date:   Mon Mar 18 21:19:56 2019 -0500

    x86/hpet: Prevent potential NULL pointer dereference
    
    [ Upstream commit 2e84f116afca3719c9d0a1a78b47b48f75fd5724 ]
    
    hpet_virt_address may be NULL when ioremap_nocache fail, but the code lacks
    a check.
    
    Add a check to prevent NULL pointer dereference.
    
    Signed-off-by: Aditya Pakki <pakki001@umn.edu>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: kjlu@umn.edu
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Joe Perches <joe@perches.com>
    Cc: Nicolai Stange <nstange@suse.de>
    Cc: Roland Dreier <roland@purestorage.com>
    Link: https://lkml.kernel.org/r/20190319021958.17275-1-pakki001@umn.edu
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 72cee3afd885c13966c0eece5bb980688538ff1c
Author: Changbin Du <changbin.du@gmail.com>
Date:   Sat Mar 16 16:05:56 2019 +0800

    perf tests: Fix a memory leak in test__perf_evsel__tp_sched_test()
    
    [ Upstream commit d982b33133284fa7efa0e52ae06b88f9be3ea764 ]
    
      =================================================================
      ==20875==ERROR: LeakSanitizer: detected memory leaks
    
      Direct leak of 1160 byte(s) in 1 object(s) allocated from:
          #0 0x7f1b6fc84138 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xee138)
          #1 0x55bd50005599 in zalloc util/util.h:23
          #2 0x55bd500068f5 in perf_evsel__newtp_idx util/evsel.c:327
          #3 0x55bd4ff810fc in perf_evsel__newtp /home/work/linux/tools/perf/util/evsel.h:216
          #4 0x55bd4ff81608 in test__perf_evsel__tp_sched_test tests/evsel-tp-sched.c:69
          #5 0x55bd4ff528e6 in run_test tests/builtin-test.c:358
          #6 0x55bd4ff52baf in test_and_print tests/builtin-test.c:388
          #7 0x55bd4ff543fe in __cmd_test tests/builtin-test.c:583
          #8 0x55bd4ff5572f in cmd_test tests/builtin-test.c:722
          #9 0x55bd4ffc4087 in run_builtin /home/changbin/work/linux/tools/perf/perf.c:302
          #10 0x55bd4ffc45c6 in handle_internal_command /home/changbin/work/linux/tools/perf/perf.c:354
          #11 0x55bd4ffc49ca in run_argv /home/changbin/work/linux/tools/perf/perf.c:398
          #12 0x55bd4ffc5138 in main /home/changbin/work/linux/tools/perf/perf.c:520
          #13 0x7f1b6e34809a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
    
      Indirect leak of 19 byte(s) in 1 object(s) allocated from:
          #0 0x7f1b6fc83f30 in __interceptor_malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xedf30)
          #1 0x7f1b6e3ac30f in vasprintf (/lib/x86_64-linux-gnu/libc.so.6+0x8830f)
    
    Signed-off-by: Changbin Du <changbin.du@gmail.com>
    Reviewed-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Fixes: 6a6cd11d4e57 ("perf test: Add test for the sched tracepoint format fields")
    Link: http://lkml.kernel.org/r/20190316080556.3075-17-changbin.du@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 43eaf04034224613e4653a9c2bf2e10bbb3103a2
Author: Changbin Du <changbin.du@gmail.com>
Date:   Sat Mar 16 16:05:48 2019 +0800

    perf top: Fix error handling in cmd_top()
    
    [ Upstream commit 70c819e4bf1c5f492768b399d898d458ccdad2b6 ]
    
    We should go to the cleanup path, to avoid leaks, detected using gcc's
    ASan.
    
    Signed-off-by: Changbin Du <changbin.du@gmail.com>
    Reviewed-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Link: http://lkml.kernel.org/r/20190316080556.3075-9-changbin.du@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 742007f6898ab0167e99af95ced014a0fc0aa417
Author: David Arcari <darcari@redhat.com>
Date:   Tue Feb 12 09:34:39 2019 -0500

    tools/power turbostat: return the exit status of a command
    
    [ Upstream commit 2a95496634a017c19641f26f00907af75b962f01 ]
    
    turbostat failed to return a non-zero exit status even though the
    supplied command (turbostat <command>) failed.  Currently when turbostat
    forks a command it returns zero instead of the actual exit status of the
    command.  Modify the code to return the exit status.
    
    Signed-off-by: David Arcari <darcari@redhat.com>
    Acked-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b91640967bb4ca2656baee1d8429ef74e172dca4
Author: Matthew Garrett <matthewgarrett@google.com>
Date:   Wed Oct 10 01:30:07 2018 -0700

    thermal/int340x_thermal: fix mode setting
    
    [ Upstream commit 396ee4d0cd52c13b3f6421b8d324d65da5e7e409 ]
    
    int3400 only pushes the UUID into the firmware when the mode is flipped
    to "enable". The current code only exposes the mode flag if the firmware
    supports the PASSIVE_1 UUID, which not all machines do. Remove the
    restriction.
    
    Signed-off-by: Matthew Garrett <mjg59@google.com>
    Signed-off-by: Zhang Rui <rui.zhang@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 80d182c2af80eaae729f158d766e422015a18d0a
Author: Colin Ian King <colin.king@canonical.com>
Date:   Sun Mar 17 23:21:24 2019 +0000

    ALSA: opl3: fix mismatch between snd_opl3_drum_switch definition and declaration
    
    [ Upstream commit b4748e7ab731e436cf5db4786358ada5dd2db6dd ]
    
    The function snd_opl3_drum_switch declaration in the header file
    has the order of the two arguments on_off and vel swapped when
    compared to the definition arguments of vel and on_off.  Fix this
    by swapping them around to match the definition.
    
    This error predates the git history, so no idea when this error
    was introduced.
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55a440ee396eaa7eac1c3631cca9ca1a0b062373
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Mar 7 11:10:11 2019 +0100

    mmc: davinci: remove extraneous __init annotation
    
    [ Upstream commit 9ce58dd7d9da3ca0d7cb8c9568f1c6f4746da65a ]
    
    Building with clang finds a mistaken __init tag:
    
    WARNING: vmlinux.o(.text+0x5e4250): Section mismatch in reference from the function davinci_mmcsd_probe() to the function .init.text:init_mmcsd_host()
    The function davinci_mmcsd_probe() references
    the function __init init_mmcsd_host().
    This is often because davinci_mmcsd_probe lacks a __init
    annotation or the annotation of init_mmcsd_host is wrong.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Wolfram Sang <wsa@the-dreams.de>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 24d4c2b9ce12dbc78a8db3f2fa0ea270472ee19d
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Wed Mar 6 19:17:56 2019 +0200

    IB/mlx4: Fix race condition between catas error reset and aliasguid flows
    
    [ Upstream commit 587443e7773e150ae29e643ee8f41a1eed226565 ]
    
    Code review revealed a race condition which could allow the catas error
    flow to interrupt the alias guid query post mechanism at random points.
    Thiis is fixed by doing cancel_delayed_work_sync() instead of
    cancel_delayed_work() during the alias guid mechanism destroy flow.
    
    Fixes: a0c64a17aba8 ("mlx4: Add alias_guid mechanism")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3de185c7f2ff8ab4114152569bd4e9c20f3e314
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Thu Mar 14 23:04:14 2019 -0500

    ALSA: sb8: add a check for request_region
    
    [ Upstream commit dcd0feac9bab901d5739de51b3f69840851f8919 ]
    
    In case request_region fails, the fix returns an error code to
    avoid NULL pointer dereference.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 77eed592753f0e97998636a18af823926126ab9e
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Thu Mar 14 22:58:29 2019 -0500

    ALSA: echoaudio: add a check for ioremap_nocache
    
    [ Upstream commit 6ade657d6125ec3ec07f95fa51e28138aef6208f ]
    
    In case ioremap_nocache fails, the fix releases chip and returns
    an error code upstream to avoid NULL pointer dereference.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 006aaba6a666af0c96311c6a130bbc23a83e2f49
Author: Lukas Czerner <lczerner@redhat.com>
Date:   Fri Mar 15 00:22:28 2019 -0400

    ext4: report real fs size after failed resize
    
    [ Upstream commit 6c7328400e0488f7d49e19e02290ba343b6811b2 ]
    
    Currently when the file system resize using ext4_resize_fs() fails it
    will report into log that "resized filesystem to <requested block
    count>".  However this may not be true in the case of failure.  Use the
    current block count as returned by ext4_blocks_count() to report the
    block count.
    
    Additionally, report a warning that "error occurred during file system
    resize"
    
    Signed-off-by: Lukas Czerner <lczerner@redhat.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d251e36ed70ef41ccb2247a5fdf041add2ce0f14
Author: Stephane Eranian <eranian@google.com>
Date:   Thu Mar 7 10:52:33 2019 -0800

    perf/core: Restore mmap record type correctly
    
    [ Upstream commit d9c1bb2f6a2157b38e8eb63af437cb22701d31ee ]
    
    On mmap(), perf_events generates a RECORD_MMAP record and then checks
    which events are interested in this record. There are currently 2
    versions of mmap records: RECORD_MMAP and RECORD_MMAP2. MMAP2 is larger.
    The event configuration controls which version the user level tool
    accepts.
    
    If the event->attr.mmap2=1 field then MMAP2 record is returned.  The
    perf_event_mmap_output() takes care of this. It checks attr->mmap2 and
    corrects the record fields before putting it in the sampling buffer of
    the event.  At the end the function restores the modified MMAP record
    fields.
    
    The problem is that the function restores the size but not the type.
    Thus, if a subsequent event only accepts MMAP type, then it would
    instead receive an MMAP2 record with a size of MMAP record.
    
    This patch fixes the problem by restoring the record type on exit.
    
    Signed-off-by: Stephane Eranian <eranian@google.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Fixes: 13d7a2410fa6 ("perf: Add attr->mmap2 attribute to an event")
    Link: http://lkml.kernel.org/r/20190307185233.225521-1-eranian@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3107d24b7bb8e2588f4d54bb33357c8da9a475ec
Author: Tejun Heo <tj@kernel.org>
Date:   Tue Jan 9 07:21:15 2018 -0800

    string: drop __must_check from strscpy() and restore strscpy() usages in cgroup
    
    commit 08a77676f9c5fc69a681ccd2cd8140e65dcb26c7 upstream.
    
    e7fd37ba1217 ("cgroup: avoid copying strings longer than the buffers")
    converted possibly unsafe strncpy() usages in cgroup to strscpy().
    However, although the callsites are completely fine with truncated
    copied, because strscpy() is marked __must_check, it led to the
    following warnings.
    
      kernel/cgroup/cgroup.c: In function ‘cgroup_file_name’:
      kernel/cgroup/cgroup.c:1400:10: warning: ignoring return value of ‘strscpy’, declared with attribute warn_unused_result [-Wunused-result]
         strscpy(buf, cft->name, CGROUP_FILE_NAME_MAX);
                   ^
    
    To avoid the warnings, 50034ed49645 ("cgroup: use strlcpy() instead of
    strscpy() to avoid spurious warning") switched them to strlcpy().
    
    strlcpy() is worse than strlcpy() because it unconditionally runs
    strlen() on the source string, and the only reason we switched to
    strlcpy() here was because it was lacking __must_check, which doesn't
    reflect any material differences between the two function.  It's just
    that someone added __must_check to strscpy() and not to strlcpy().
    
    These basic string copy operations are used in variety of ways, and
    one of not-so-uncommon use cases is safely handling truncated copies,
    where the caller naturally doesn't care about the return value.  The
    __must_check doesn't match the actual use cases and forces users to
    opt for inferior variants which lack __must_check by happenstance or
    spread ugly (void) casts.
    
    Remove __must_check from strscpy() and restore strscpy() usages in
    cgroup.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Ma Shimiao <mashimiao.fnst@cn.fujitsu.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Chris Metcalf <cmetcalf@ezchip.com>
    [backport only the string.h portion to remove build warnings starting to show up - gregkh]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef04853210b0dcc2c90788218f5e2076ca51b2e3
Author: Andre Przywara <andre.przywara@arm.com>
Date:   Fri Apr 5 16:20:47 2019 +0100

    PCI: Add function 1 DMA alias quirk for Marvell 9170 SATA controller
    
    commit 9cde402a59770a0669d895399c13407f63d7d209 upstream.
    
    There is a Marvell 88SE9170 PCIe SATA controller I found on a board here.
    Some quick testing with the ARM SMMU enabled reveals that it suffers from
    the same requester ID mixup problems as the other Marvell chips listed
    already.
    
    Add the PCI vendor/device ID to the list of chips which need the
    workaround.
    
    Signed-off-by: Andre Przywara <andre.przywara@arm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7073b8698e384862e41a7020ef2d39266f9647bd
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Thu Apr 4 11:08:40 2019 -0700

    xtensa: fix return_address
    
    commit ada770b1e74a77fff2d5f539bf6c42c25f4784db upstream.
    
    return_address returns the address that is one level higher in the call
    stack than requested in its argument, because level 0 corresponds to its
    caller's return address. Use requested level as the number of stack
    frames to skip.
    
    This fixes the address reported by might_sleep and friends.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6c4c3e7d303405068424d2e85e1242be6d7a0d6
Author: Mel Gorman <mgorman@techsingularity.net>
Date:   Tue Mar 19 12:36:10 2019 +0000

    sched/fair: Do not re-read ->h_load_next during hierarchical load calculation
    
    commit 0e9f02450da07fc7b1346c8c32c771555173e397 upstream.
    
    A NULL pointer dereference bug was reported on a distribution kernel but
    the same issue should be present on mainline kernel. It occured on s390
    but should not be arch-specific.  A partial oops looks like:
    
      Unable to handle kernel pointer dereference in virtual kernel address space
      ...
      Call Trace:
        ...
        try_to_wake_up+0xfc/0x450
        vhost_poll_wakeup+0x3a/0x50 [vhost]
        __wake_up_common+0xbc/0x178
        __wake_up_common_lock+0x9e/0x160
        __wake_up_sync_key+0x4e/0x60
        sock_def_readable+0x5e/0x98
    
    The bug hits any time between 1 hour to 3 days. The dereference occurs
    in update_cfs_rq_h_load when accumulating h_load. The problem is that
    cfq_rq->h_load_next is not protected by any locking and can be updated
    by parallel calls to task_h_load. Depending on the compiler, code may be
    generated that re-reads cfq_rq->h_load_next after the check for NULL and
    then oops when reading se->avg.load_avg. The dissassembly showed that it
    was possible to reread h_load_next after the check for NULL.
    
    While this does not appear to be an issue for later compilers, it's still
    an accident if the correct code is generated. Full locking in this path
    would have high overhead so this patch uses READ_ONCE to read h_load_next
    only once and check for NULL before dereferencing. It was confirmed that
    there were no further oops after 10 days of testing.
    
    As Peter pointed out, it is also necessary to use WRITE_ONCE() to avoid any
    potential problems with store tearing.
    
    Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: <stable@vger.kernel.org>
    Fixes: 685207963be9 ("sched: Move h_load calculation to task_h_load()")
    Link: https://lkml.kernel.org/r/20190319123610.nsivgf3mjbjjesxb@techsingularity.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cfa402909d9cf80d6526f2d54b39c3b8cbd5fff5
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Apr 4 18:12:17 2019 +0300

    xen: Prevent buffer overflow in privcmd ioctl
    
    commit 42d8644bd77dd2d747e004e367cb0c895a606f39 upstream.
    
    The "call" variable comes from the user in privcmd_ioctl_hypercall().
    It's an offset into the hypercall_page[] which has (PAGE_SIZE / 32)
    elements.  We need to put an upper bound on it to prevent an out of
    bounds access.
    
    Cc: stable@vger.kernel.org
    Fixes: 1246ae0bb992 ("xen: add variable hypercall caller")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab6ce574b2c97b09a2e5d2ba091f155f97a67b81
Author: Will Deacon <will.deacon@arm.com>
Date:   Mon Apr 8 12:45:09 2019 +0100

    arm64: futex: Fix FUTEX_WAKE_OP atomic ops with non-zero result value
    
    commit 045afc24124d80c6998d9c770844c67912083506 upstream.
    
    Rather embarrassingly, our futex() FUTEX_WAKE_OP implementation doesn't
    explicitly set the return value on the non-faulting path and instead
    leaves it holding the result of the underlying atomic operation. This
    means that any FUTEX_WAKE_OP atomic operation which computes a non-zero
    value will be reported as having failed. Regrettably, I wrote the buggy
    code back in 2011 and it was upstreamed as part of the initial arm64
    support in 2012.
    
    The reasons we appear to get away with this are:
    
      1. FUTEX_WAKE_OP is rarely used and therefore doesn't appear to get
         exercised by futex() test applications
    
      2. If the result of the atomic operation is zero, the system call
         behaves correctly
    
      3. Prior to version 2.25, the only operation used by GLIBC set the
         futex to zero, and therefore worked as expected. From 2.25 onwards,
         FUTEX_WAKE_OP is not used by GLIBC at all.
    
    Fix the implementation by ensuring that the return value is either 0
    to indicate that the atomic operation completed successfully, or -EFAULT
    if we encountered a fault when accessing the user mapping.
    
    Cc: <stable@kernel.org>
    Fixes: 6170a97460db ("arm64: Atomic operations")
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa3ce990acc9414b5f64f758292267ccb64c5a68
Author: Jérôme Glisse <jglisse@redhat.com>
Date:   Wed Apr 10 16:27:51 2019 -0400

    block: do not leak memory in bio_copy_user_iov()
    
    commit a3761c3c91209b58b6f33bf69dd8bb8ec0c9d925 upstream.
    
    When bio_add_pc_page() fails in bio_copy_user_iov() we should free
    the page we just allocated otherwise we are leaking it.
    
    Cc: linux-block@vger.kernel.org
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: stable@vger.kernel.org
    Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6040571bec16b2410f5576b4907c9c1706c6c2fa
Author: S.j. Wang <shengjiu.wang@nxp.com>
Date:   Wed Feb 27 06:31:12 2019 +0000

    ASoC: fsl_esai: fix channel swap issue when stream starts
    
    commit 0ff4e8c61b794a4bf6c854ab071a1abaaa80f358 upstream.
    
    There is very low possibility ( < 0.1% ) that channel swap happened
    in beginning when multi output/input pin is enabled. The issue is
    that hardware can't send data to correct pin in the beginning with
    the normal enable flow.
    
    This is hardware issue, but there is no errata, the workaround flow
    is that: Each time playback/recording, firstly clear the xSMA/xSMB,
    then enable TE/RE, then enable xSMB and xSMA (xSMB must be enabled
    before xSMA). Which is to use the xSMA as the trigger start register,
    previously the xCR_TE or xCR_RE is the bit for starting.
    
    Fixes commit 43d24e76b698 ("ASoC: fsl_esai: Add ESAI CPU DAI driver")
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96d59a75b37b40a7e3f8b839b3cb871236b3b098
Author: Zubin Mithra <zsm@chromium.org>
Date:   Thu Apr 4 14:33:55 2019 -0700

    ALSA: seq: Fix OOB-reads from strlcpy
    
    commit 212ac181c158c09038c474ba68068be49caecebb upstream.
    
    When ioctl calls are made with non-null-terminated userspace strings,
    strlcpy causes an OOB-read from within strlen. Fix by changing to use
    strscpy instead.
    
    Signed-off-by: Zubin Mithra <zsm@chromium.org>
    Reviewed-by: Guenter Roeck <groeck@chromium.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eab63566720f2a78d9aba43bfe21babd2daf980e
Author: Sheena Mira-ato <sheena.mira-ato@alliedtelesis.co.nz>
Date:   Mon Apr 1 13:04:42 2019 +1300

    ip6_tunnel: Match to ARPHRD_TUNNEL6 for dev type
    
    [ Upstream commit b2e54b09a3d29c4db883b920274ca8dca4d9f04d ]
    
    The device type for ip6 tunnels is set to
    ARPHRD_TUNNEL6. However, the ip4ip6_err function
    is expecting the device type of the tunnel to be
    ARPHRD_TUNNEL.  Since the device types do not
    match, the function exits and the ICMP error
    packet is not sent to the originating host. Note
    that the device type for IPv4 tunnels is set to
    ARPHRD_TUNNEL.
    
    Fix is to expect a tunnel device type of
    ARPHRD_TUNNEL6 instead.  Now the tunnel device
    type matches and the ICMP error packet is sent
    to the originating host.
    
    Signed-off-by: Sheena Mira-ato <sheena.mira-ato@alliedtelesis.co.nz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c20f5d00dc422b9463fc5643c137c4d95f486b98
Author: Li RongQing <lirongqing@baidu.com>
Date:   Fri Mar 29 09:18:02 2019 +0800

    net: ethtool: not call vzalloc for zero sized memory request
    
    [ Upstream commit 3d8830266ffc28c16032b859e38a0252e014b631 ]
    
    NULL or ZERO_SIZE_PTR will be returned for zero sized memory
    request, and derefencing them will lead to a segfault
    
    so it is unnecessory to call vzalloc for zero sized memory
    request and not call functions which maybe derefence the
    NULL allocated memory
    
    this also fixes a possible memory leak if phy_ethtool_get_stats
    returns error, memory should be freed before exit
    
    Signed-off-by: Li RongQing <lirongqing@baidu.com>
    Reviewed-by: Wang Li <wangli39@baidu.com>
    Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2bca92ba948f3def1f99f6b429ec39e07354dc2
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Mar 27 08:21:30 2019 -0700

    netns: provide pure entropy for net_hash_mix()
    
    [ Upstream commit 355b98553789b646ed97ad801a619ff898471b92 ]
    
    net_hash_mix() currently uses kernel address of a struct net,
    and is used in many places that could be used to reveal this
    address to a patient attacker, thus defeating KASLR, for
    the typical case (initial net namespace, &init_net is
    not dynamically allocated)
    
    I believe the original implementation tried to avoid spending
    too many cycles in this function, but security comes first.
    
    Also provide entropy regardless of CONFIG_NET_NS.
    
    Fixes: 0b4419162aa6 ("netns: introduce the net_hash_mix "salt" for hashes")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Amit Klein <aksecurity@gmail.com>
    Reported-by: Benny Pinkas <benny@pinkas.net>
    Cc: Pavel Emelyanov <xemul@openvz.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01418a991494514347949baf6655ce147c566c95
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Mar 31 16:58:15 2019 +0800

    sctp: initialize _pad of sockaddr_in before copying to user memory
    
    [ Upstream commit 09279e615c81ce55e04835970601ae286e3facbe ]
    
    Syzbot report a kernel-infoleak:
    
      BUG: KMSAN: kernel-infoleak in _copy_to_user+0x16b/0x1f0 lib/usercopy.c:32
      Call Trace:
        _copy_to_user+0x16b/0x1f0 lib/usercopy.c:32
        copy_to_user include/linux/uaccess.h:174 [inline]
        sctp_getsockopt_peer_addrs net/sctp/socket.c:5911 [inline]
        sctp_getsockopt+0x1668e/0x17f70 net/sctp/socket.c:7562
        ...
      Uninit was stored to memory at:
        sctp_transport_init net/sctp/transport.c:61 [inline]
        sctp_transport_new+0x16d/0x9a0 net/sctp/transport.c:115
        sctp_assoc_add_peer+0x532/0x1f70 net/sctp/associola.c:637
        sctp_process_param net/sctp/sm_make_chunk.c:2548 [inline]
        sctp_process_init+0x1a1b/0x3ed0 net/sctp/sm_make_chunk.c:2361
        ...
      Bytes 8-15 of 16 are uninitialized
    
    It was caused by that th _pad field (the 8-15 bytes) of a v4 addr (saved in
    struct sockaddr_in) wasn't initialized, but directly copied to user memory
    in sctp_getsockopt_peer_addrs().
    
    So fix it by calling memset(addr->v4.sin_zero, 0, 8) to initialize _pad of
    sockaddr_in before copying it to user memory in sctp_v4_addr_to_user(), as
    sctp_v6_addr_to_user() does.
    
    Reported-by: syzbot+86b5c7c236a22616a72f@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Tested-by: Alexander Potapenko <glider@google.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41805942734cd4d7b2711b14811060ba0de306d0
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed Mar 27 15:26:01 2019 +0100

    qmi_wwan: add Olicard 600
    
    [ Upstream commit 6289d0facd9ebce4cc83e5da39e15643ee998dc5 ]
    
    This is a Qualcomm based device with a QMI function on interface 4.
    It is mode switched from 2020:2030 using a standard eject message.
    
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  6 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2020 ProdID=2031 Rev= 2.32
    S:  Manufacturer=Mobile Connect
    S:  Product=Mobile Connect
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=89(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=(none)
    E:  Ad=8a(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
    
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad4895026b439bb2f26810bfc30c6c865a2ef118
Author: Andrea Righi <andrea.righi@canonical.com>
Date:   Thu Mar 28 07:36:00 2019 +0100

    openvswitch: fix flow actions reallocation
    
    [ Upstream commit f28cd2af22a0c134e4aa1c64a70f70d815d473fb ]
    
    The flow action buffer can be resized if it's not big enough to contain
    all the requested flow actions. However, this resize doesn't take into
    account the new requested size, the buffer is only increased by a factor
    of 2x. This might be not enough to contain the new data, causing a
    buffer overflow, for example:
    
    [   42.044472] =============================================================================
    [   42.045608] BUG kmalloc-96 (Not tainted): Redzone overwritten
    [   42.046415] -----------------------------------------------------------------------------
    
    [   42.047715] Disabling lock debugging due to kernel taint
    [   42.047716] INFO: 0x8bf2c4a5-0x720c0928. First byte 0x0 instead of 0xcc
    [   42.048677] INFO: Slab 0xbc6d2040 objects=29 used=18 fp=0xdc07dec4 flags=0x2808101
    [   42.049743] INFO: Object 0xd53a3464 @offset=2528 fp=0xccdcdebb
    
    [   42.050747] Redzone 76f1b237: cc cc cc cc cc cc cc cc                          ........
    [   42.051839] Object d53a3464: 6b 6b 6b 6b 6b 6b 6b 6b 0c 00 00 00 6c 00 00 00  kkkkkkkk....l...
    [   42.053015] Object f49a30cc: 6c 00 0c 00 00 00 00 00 00 00 00 03 78 a3 15 f6  l...........x...
    [   42.054203] Object acfe4220: 20 00 02 00 ff ff ff ff 00 00 00 00 00 00 00 00   ...............
    [   42.055370] Object 21024e91: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    [   42.056541] Object 070e04c3: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    [   42.057797] Object 948a777a: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    [   42.059061] Redzone 8bf2c4a5: 00 00 00 00                                      ....
    [   42.060189] Padding a681b46e: 5a 5a 5a 5a 5a 5a 5a 5a                          ZZZZZZZZ
    
    Fix by making sure the new buffer is properly resized to contain all the
    requested data.
    
    BugLink: https://bugs.launchpad.net/bugs/1813244
    Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
    Acked-by: Pravin B Shelar <pshelar@ovn.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d8a182051badd36dfced100f8b42b5b83faea1b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Jan 21 17:26:42 2019 +0100

    tty: ldisc: add sysctl to prevent autoloading of ldiscs
    
    commit 7c0cca7c847e6e019d67b7d793efbbe3b947d004 upstream.
    
    By default, the kernel will automatically load the module of any line
    dicipline that is asked for.  As this sometimes isn't the safest thing
    to do, provide a sysctl to disable this feature.
    
    By default, we set this to 'y' as that is the historical way that Linux
    has worked, and we do not want to break working systems.  But in the
    future, perhaps this can default to 'n' to prevent this functionality.
    
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20d4e7627b1451e68ddde913b5a289664716c318
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>

commit 8a34ae9b87f04204d32bf5e431761716a9045dfc
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Fri Apr 5 18:38:45 2019 -0700

    lib/string.c: implement a basic bcmp
    
    [ Upstream commit 5f074f3e192f10c9fade898b9b3b8812e3d83342 ]
    
    A recent optimization in Clang (r355672) lowers comparisons of the
    return value of memcmp against zero to comparisons of the return value
    of bcmp against zero.  This helps some platforms that implement bcmp
    more efficiently than memcmp.  glibc simply aliases bcmp to memcmp, but
    an optimized implementation is in the works.
    
    This results in linkage failures for all targets with Clang due to the
    undefined symbol.  For now, just implement bcmp as a tailcail to memcmp
    to unbreak the build.  This routine can be further optimized in the
    future.
    
    Other ideas discussed:
    
     * A weak alias was discussed, but breaks for architectures that define
       their own implementations of memcmp since aliases to declarations are
       not permitted (only definitions). Arch-specific memcmp
       implementations typically declare memcmp in C headers, but implement
       them in assembly.
    
     * -ffreestanding also is used sporadically throughout the kernel.
    
     * -fno-builtin-bcmp doesn't work when doing LTO.
    
    Link: https://bugs.llvm.org/show_bug.cgi?id=41035
    Link: https://code.woboq.org/userspace/glibc/string/memcmp.c.html#bcmp
    Link: https://github.com/llvm/llvm-project/commit/8e16d73346f8091461319a7dfc4ddd18eedcff13
    Link: https://github.com/ClangBuiltLinux/linux/issues/416
    Link: http://lkml.kernel.org/r/20190313211335.165605-1-ndesaulniers@google.com
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Reported-by: Nathan Chancellor <natechancellor@gmail.com>
    Reported-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
    Suggested-by: Arnd Bergmann <arnd@arndb.de>
    Suggested-by: James Y Knight <jyknight@google.com>
    Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Suggested-by: Nathan Chancellor <natechancellor@gmail.com>
    Suggested-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: David Laight <David.Laight@ACULAB.COM>
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 119b8e38491b9bc21efe06ed3f5a1b3d879c4998
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>
    Cc: Federico Manuel Bento <up201407890@fc.up.pt>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 33016f5f792bfd0ea69ded7c95e3aa6c18d9c92c
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Fri Sep 28 21:03:59 2018 +0300

    drm/dp/mst: Configure no_stop_bit correctly for remote i2c xfers
    
    [ Upstream commit c978ae9bde582e82a04c63a4071701691dd8b35c ]
    
    We aren't supposed to force a stop+start between every i2c msg
    when performing multi message transfers. This should eg. cause
    the DDC segment address to be reset back to 0 between writing
    the segment address and reading the actual EDID extension block.
    
    To quote the E-DDC spec:
    "... this standard requires that the segment pointer be
     reset to 00h when a NO ACK or a STOP condition is received."
    
    Since we're going to touch this might as well consult the
    I2C_M_STOP flag to determine whether we want to force the stop
    or not.
    
    Cc: Brian Vincent <brainn@gmail.com>
    References: https://bugs.freedesktop.org/show_bug.cgi?id=108081
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180928180403.22499-1-ville.syrjala@linux.intel.com
    Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 76b3afa0fdfa44ab172c8fbaf950125292ad6d04
Author: Ben Dooks <ben.dooks@codethink.co.uk>
Date:   Wed Nov 21 16:13:19 2018 +0000

    dmaengine: tegra: avoid overflow of byte tracking
    
    [ Upstream commit e486df39305864604b7e25f2a95d51039517ac57 ]
    
    The dma_desc->bytes_transferred counter tracks the number of bytes
    moved by the DMA channel. This is then used to calculate the information
    passed back in the in the tegra_dma_tx_status callback, which is usually
    fine.
    
    When the DMA channel is configured as continous, then the bytes_transferred
    counter will increase over time and eventually overflow to become negative
    so the residue count will become invalid and the ALSA sound-dma code will
    report invalid hardware pointer values to the application. This results in
    some users becoming confused about the playout position and putting audio
    data in the wrong place.
    
    To fix this issue, always ensure the bytes_transferred field is modulo the
    size of the request. We only do this for the case of the cyclic transfer
    done ISR as anyone attempting to move 2GiB of DMA data in one transfer
    is unlikely.
    
    Note, we don't fix the issue that we should /never/ transfer a negative
    number of bytes so we could make those fields unsigned.
    
    Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
    Acked-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ce302656f6a59ae0f7c9151084d6e88f56e3772
Author: Rafael Ávila de Espíndola <rafael@espindo.la>
Date:   Wed Dec 19 11:01:43 2018 -0800

    x86/build: Mark per-CPU symbols as absolute explicitly for LLD
    
    [ Upstream commit d071ae09a4a1414c1433d5ae9908959a7325b0ad ]
    
    Accessing per-CPU variables is done by finding the offset of the
    variable in the per-CPU block and adding it to the address of the
    respective CPU's block.
    
    Section 3.10.8 of ld.bfd's documentation states:
    
      For expressions involving numbers, relative addresses and absolute
      addresses, ld follows these rules to evaluate terms:
    
      Other binary operations, that is, between two relative addresses
      not in the same section, or between a relative address and an
      absolute address, first convert any non-absolute term to an
      absolute address before applying the operator."
    
    Note that LLVM's linker does not adhere to the GNU ld's implementation
    and as such requires implicitly-absolute terms to be explicitly marked
    as absolute in the linker script. If not, it fails currently with:
    
      ld.lld: error: ./arch/x86/kernel/vmlinux.lds:153: at least one side of the expression must be absolute
      ld.lld: error: ./arch/x86/kernel/vmlinux.lds:154: at least one side of the expression must be absolute
      Makefile:1040: recipe for target 'vmlinux' failed
    
    This is not a functional change for ld.bfd which converts the term to an
    absolute symbol anyways as specified above.
    
    Based on a previous submission by Tri Vo <trong@android.com>.
    
    Reported-by: Dmitry Golovin <dima@golovin.in>
    Signed-off-by: Rafael Ávila de Espíndola <rafael@espindo.la>
    [ Update commit message per Boris' and Michael's suggestions. ]
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    [ Massage commit message more, fix typos. ]
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Tested-by: Dmitry Golovin <dima@golovin.in>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Brijesh Singh <brijesh.singh@amd.com>
    Cc: Cao Jin <caoj.fnst@cn.fujitsu.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tri Vo <trong@android.com>
    Cc: dima@golovin.in
    Cc: morbo@google.com
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20181219190145.252035-1-ndesaulniers@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e740644056d9c247ff3d5365ce5cd5b98da6aa1
Author: Zumeng Chen <zumeng.chen@gmail.com>
Date:   Wed Dec 19 15:50:29 2018 +0800

    wlcore: Fix memory leak in case wl12xx_fetch_firmware failure
    
    [ Upstream commit ba2ffc96321c8433606ceeb85c9e722b8113e5a7 ]
    
    Release fw_status, raw_fw_status, and tx_res_if when wl12xx_fetch_firmware
    failed instead of meaningless goto out to avoid the following memory leak
    reports(Only the last one listed):
    
    unreferenced object 0xc28a9a00 (size 512):
      comm "kworker/0:4", pid 31298, jiffies 2783204 (age 203.290s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
      backtrace:
        [<6624adab>] kmemleak_alloc+0x40/0x74
        [<500ddb31>] kmem_cache_alloc_trace+0x1ac/0x270
        [<db4d731d>] wl12xx_chip_wakeup+0xc4/0x1fc [wlcore]
        [<76c5db53>] wl1271_op_add_interface+0x4a4/0x8f4 [wlcore]
        [<cbf30777>] drv_add_interface+0xa4/0x1a0 [mac80211]
        [<65bac325>] ieee80211_reconfig+0x9c0/0x1644 [mac80211]
        [<2817c80e>] ieee80211_restart_work+0x90/0xc8 [mac80211]
        [<7e1d425a>] process_one_work+0x284/0x42c
        [<55f9432e>] worker_thread+0x2fc/0x48c
        [<abb582c6>] kthread+0x148/0x160
        [<63144b13>] ret_from_fork+0x14/0x2c
        [< (null)>] (null)
        [<1f6e7715>] 0xffffffff
    
    Signed-off-by: Zumeng Chen <zumeng.chen@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a8fb4d20d099c8fc35cf26ab594b3f7a8fe9037
Author: Pawe? Chmiel <pawel.mikolaj.chmiel@gmail.com>
Date:   Sat Dec 29 10:46:01 2018 -0500

    media: s5p-jpeg: Check for fmt_ver_flag when doing fmt enumeration
    
    [ Upstream commit 49710c32cd9d6626a77c9f5f978a5f58cb536b35 ]
    
    Previously when doing format enumeration, it was returning all
     formats supported by driver, even if they're not supported by hw.
    Add missing check for fmt_ver_flag, so it'll be fixed and only those
     supported by hw will be returned. Similar thing is already done
     in s5p_jpeg_find_format.
    
    It was found by using v4l2-compliance tool and checking result
     of VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS test
    and using v4l2-ctl to get list of all supported formats.
    
    Tested on s5pv210-galaxys (Samsung i9000 phone).
    
    Fixes: bb677f3ac434 ("[media] Exynos4 JPEG codec v4l2 driver")
    
    Signed-off-by: Pawe? Chmiel <pawel.mikolaj.chmiel@gmail.com>
    Reviewed-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    [hverkuil-cisco@xs4all.nl: fix a few alignment issues]
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90fa452d6e8b23b4a8873526a6bc75015fb697dc
Author: Anders Roxell <anders.roxell@linaro.org>
Date:   Thu Jan 10 12:15:35 2019 +0100

    dmaengine: imx-dma: fix warning comparison of distinct pointer types
    
    [ Upstream commit 9227ab5643cb8350449502dd9e3168a873ab0e3b ]
    
    The warning got introduced by commit 930507c18304 ("arm64: add basic
    Kconfig symbols for i.MX8"). Since it got enabled for arm64. The warning
    haven't been seen before since size_t was 'unsigned int' when built on
    arm32.
    
    ../drivers/dma/imx-dma.c: In function ‘imxdma_sg_next’:
    ../include/linux/kernel.h:846:29: warning: comparison of distinct pointer types lacks a cast
       (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
                                 ^~
    ../include/linux/kernel.h:860:4: note: in expansion of macro ‘__typecheck’
       (__typecheck(x, y) && __no_side_effects(x, y))
        ^~~~~~~~~~~
    ../include/linux/kernel.h:870:24: note: in expansion of macro ‘__safe_cmp’
      __builtin_choose_expr(__safe_cmp(x, y), \
                            ^~~~~~~~~~
    ../include/linux/kernel.h:879:19: note: in expansion of macro ‘__careful_cmp’
     #define min(x, y) __careful_cmp(x, y, <)
                       ^~~~~~~~~~~~~
    ../drivers/dma/imx-dma.c:288:8: note: in expansion of macro ‘min’
      now = min(d->len, sg_dma_len(sg));
            ^~~
    
    Rework so that we use min_t and pass in the size_t that returns the
    minimum of two values, using the specified type.
    
    Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
    Acked-by: Olof Johansson <olof@lixom.net>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 57e5f1a704658ea0319f5c066af9db32c5105dd0
Author: Buland Singh <bsingh@redhat.com>
Date:   Thu Dec 20 17:35:24 2018 +0530

    hpet: Fix missing '=' character in the __setup() code of hpet_mmap_enable
    
    [ Upstream commit 24d48a61f2666630da130cc2ec2e526eacf229e3 ]
    
    Commit '3d035f580699 ("drivers/char/hpet.c: allow user controlled mmap for
    user processes")' introduced a new kernel command line parameter hpet_mmap,
    that is required to expose the memory map of the HPET registers to
    user-space. Unfortunately the kernel command line parameter 'hpet_mmap' is
    broken and never takes effect due to missing '=' character in the __setup()
    code of hpet_mmap_enable.
    
    Before this patch:
    
    dmesg output with the kernel command line parameter hpet_mmap=1
    
    [    0.204152] HPET mmap disabled
    
    dmesg output with the kernel command line parameter hpet_mmap=0
    
    [    0.204192] HPET mmap disabled
    
    After this patch:
    
    dmesg output with the kernel command line parameter hpet_mmap=1
    
    [    0.203945] HPET mmap enabled
    
    dmesg output with the kernel command line parameter hpet_mmap=0
    
    [    0.204652] HPET mmap disabled
    
    Fixes: 3d035f580699 ("drivers/char/hpet.c: allow user controlled mmap for user processes")
    Signed-off-by: Buland Singh <bsingh@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d55c5d7c88741d48c2e6fb4d9f8dbc8e957fe501
Author: David Tolnay <dtolnay@gmail.com>
Date:   Mon Jan 7 14:36:11 2019 -0800

    hwrng: virtio - Avoid repeated init of completion
    
    [ Upstream commit aef027db48da56b6f25d0e54c07c8401ada6ce21 ]
    
    The virtio-rng driver uses a completion called have_data to wait for a
    virtio read to be fulfilled by the hypervisor. The completion is reset
    before placing a buffer on the virtio queue and completed by the virtio
    callback once data has been written into the buffer.
    
    Prior to this commit, the driver called init_completion on this
    completion both during probe as well as when registering virtio buffers
    as part of a hwrng read operation. The second of these init_completion
    calls should instead be reinit_completion because the have_data
    completion has already been inited by probe. As described in
    Documentation/scheduler/completion.txt, "Calling init_completion() twice
    on the same completion object is most likely a bug".
    
    This bug was present in the initial implementation of virtio-rng in
    f7f510ec1957 ("virtio: An entropy device, as suggested by hpa"). Back
    then the have_data completion was a single static completion rather than
    a member of one of potentially multiple virtrng_info structs as
    implemented later by 08e53fbdb85c ("virtio-rng: support multiple
    virtio-rng devices"). The original driver incorrectly used
    init_completion rather than INIT_COMPLETION to reset have_data during
    read.
    
    Tested by running `head -c48 /dev/random | hexdump` within crosvm, the
    Chrome OS virtual machine monitor, and confirming that the virtio-rng
    driver successfully produces random bytes from the host.
    
    Signed-off-by: David Tolnay <dtolnay@gmail.com>
    Tested-by: David Tolnay <dtolnay@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit efb2fec63a93da07789419e1edca93739906cc5f
Author: Akinobu Mita <akinobu.mita@gmail.com>
Date:   Tue Jan 15 12:05:41 2019 -0200

    media: mt9m111: set initial frame size other than 0x0
    
    [ Upstream commit 29856308137de1c21eda89411695f4fc6e9780ff ]
    
    This driver sets initial frame width and height to 0x0, which is invalid.
    So set it to selection rectangle bounds instead.
    
    This is detected by v4l2-compliance detected.
    
    Cc: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
    Cc: Michael Grzeschik <m.grzeschik@pengutronix.de>
    Cc: Marco Felsch <m.felsch@pengutronix.de>
    Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit becaaec31075659a9b7fe2e391e15f9d12c1a0ab
Author: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
Date:   Mon Jan 28 19:01:10 2019 +0100

    tty: increase the default flip buffer limit to 2*640K
    
    [ Upstream commit 7ab57b76ebf632bf2231ccabe26bea33868118c6 ]
    
    We increase the default limit for buffer memory allocation by a factor of
    10 to 640K to prevent data loss when using fast serial interfaces.
    
    For example when using RS485 without flow-control at speeds of 1Mbit/s
    an upwards we've run into problems such as applications being too slow
    to read out this buffer (on embedded devices based on imx53 or imx6).
    
    If you want to write transmitted data to a slow SD card and thus have
    realtime requirements, this limit can become a problem.
    
    That shouldn't be the case and 640K buffers fix such problems for us.
    
    This value is a maximum limit for allocation only. It has no effect
    on systems that currently run fine. When transmission is slow enough
    applications and hardware can keep up and increasing this limit
    doesn't change anything.
    
    It only _allows_ to allocate more than 2*64K in cases we currently fail to
    allocate memory despite having some.
    
    Signed-off-by: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
    Signed-off-by: Martin Kepplinger <martin.kepplinger@ginzinger.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f21094c240a33eb60a967617806842010798f55b
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Wed Feb 6 21:13:49 2019 -0800

    cdrom: Fix race condition in cdrom_sysctl_register
    
    [ Upstream commit f25191bb322dec8fa2979ecb8235643aa42470e1 ]
    
    The following traceback is sometimes seen when booting an image in qemu:
    
    [   54.608293] cdrom: Uniform CD-ROM driver Revision: 3.20
    [   54.611085] Fusion MPT base driver 3.04.20
    [   54.611877] Copyright (c) 1999-2008 LSI Corporation
    [   54.616234] Fusion MPT SAS Host driver 3.04.20
    [   54.635139] sysctl duplicate entry: /dev/cdrom//info
    [   54.639578] CPU: 0 PID: 266 Comm: kworker/u4:5 Not tainted 5.0.0-rc5 #1
    [   54.639578] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
    [   54.641273] Workqueue: events_unbound async_run_entry_fn
    [   54.641273] Call Trace:
    [   54.641273]  dump_stack+0x67/0x90
    [   54.641273]  __register_sysctl_table+0x50b/0x570
    [   54.641273]  ? rcu_read_lock_sched_held+0x6f/0x80
    [   54.641273]  ? kmem_cache_alloc_trace+0x1c7/0x1f0
    [   54.646814]  __register_sysctl_paths+0x1c8/0x1f0
    [   54.646814]  cdrom_sysctl_register.part.7+0xc/0x5f
    [   54.646814]  register_cdrom.cold.24+0x2a/0x33
    [   54.646814]  sr_probe+0x4bd/0x580
    [   54.646814]  ? __driver_attach+0xd0/0xd0
    [   54.646814]  really_probe+0xd6/0x260
    [   54.646814]  ? __driver_attach+0xd0/0xd0
    [   54.646814]  driver_probe_device+0x4a/0xb0
    [   54.646814]  ? __driver_attach+0xd0/0xd0
    [   54.646814]  bus_for_each_drv+0x73/0xc0
    [   54.646814]  __device_attach+0xd6/0x130
    [   54.646814]  bus_probe_device+0x9a/0xb0
    [   54.646814]  device_add+0x40c/0x670
    [   54.646814]  ? __pm_runtime_resume+0x4f/0x80
    [   54.646814]  scsi_sysfs_add_sdev+0x81/0x290
    [   54.646814]  scsi_probe_and_add_lun+0x888/0xc00
    [   54.646814]  ? scsi_autopm_get_host+0x21/0x40
    [   54.646814]  __scsi_add_device+0x116/0x130
    [   54.646814]  ata_scsi_scan_host+0x93/0x1c0
    [   54.646814]  async_run_entry_fn+0x34/0x100
    [   54.646814]  process_one_work+0x237/0x5e0
    [   54.646814]  worker_thread+0x37/0x380
    [   54.646814]  ? rescuer_thread+0x360/0x360
    [   54.646814]  kthread+0x118/0x130
    [   54.646814]  ? kthread_create_on_node+0x60/0x60
    [   54.646814]  ret_from_fork+0x3a/0x50
    
    The only sensible explanation is that cdrom_sysctl_register() is called
    twice, once from the module init function and once from register_cdrom().
    cdrom_sysctl_register() is not mutex protected and may happily execute
    twice if the second call is made before the first call is complete.
    
    Use a static atomic to ensure that the function is executed exactly once.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f8782c2a1476cd437fc9f07755607c2e20e7f47
Author: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
Date:   Fri Feb 8 19:24:47 2019 +0100

    fbdev: fbmem: fix memory access if logo is bigger than the screen
    
    [ Upstream commit a5399db139cb3ad9b8502d8b1bd02da9ce0b9df0 ]
    
    There is no clipping on the x or y axis for logos larger that the framebuffer
    size. Therefore: a logo bigger than screen size leads to invalid memory access:
    
    [    1.254664] Backtrace:
    [    1.254728] [<c02714e0>] (cfb_imageblit) from [<c026184c>] (fb_show_logo+0x620/0x684)
    [    1.254763]  r10:00000003 r9:00027fd8 r8:c6a40000 r7:c6a36e50 r6:00000000 r5:c06b81e4
    [    1.254774]  r4:c6a3e800
    [    1.254810] [<c026122c>] (fb_show_logo) from [<c026c1e4>] (fbcon_switch+0x3fc/0x46c)
    [    1.254842]  r10:c6a3e824 r9:c6a3e800 r8:00000000 r7:c6a0c000 r6:c070b014 r5:c6a3e800
    [    1.254852]  r4:c6808c00
    [    1.254889] [<c026bde8>] (fbcon_switch) from [<c029c8f8>] (redraw_screen+0xf0/0x1e8)
    [    1.254918]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:c070d5a0 r5:00000080
    [    1.254928]  r4:c6808c00
    [    1.254961] [<c029c808>] (redraw_screen) from [<c029d264>] (do_bind_con_driver+0x194/0x2e4)
    [    1.254991]  r9:00000000 r8:00000000 r7:00000014 r6:c070d5a0 r5:c070d5a0 r4:c070d5a0
    
    So prevent displaying a logo bigger than screen size and avoid invalid
    memory access.
    
    Signed-off-by: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
    Signed-off-by: Martin Kepplinger <martin.kepplinger@ginzinger.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 956f1121b7a08b10d118e265305b45b4e0210381
Author: Coly Li <colyli@suse.de>
Date:   Sat Feb 9 12:52:59 2019 +0800

    bcache: improve sysfs_strtoul_clamp()
    
    [ Upstream commit 596b5a5dd1bc2fa019fdaaae522ef331deef927f ]
    
    Currently sysfs_strtoul_clamp() is defined as,
     82 #define sysfs_strtoul_clamp(file, var, min, max)                   \
     83 do {                                                               \
     84         if (attr == &sysfs_ ## file)                               \
     85                 return strtoul_safe_clamp(buf, var, min, max)      \
     86                         ?: (ssize_t) size;                         \
     87 } while (0)
    
    The problem is, if bit width of var is less then unsigned long, min and
    max may not protect var from integer overflow, because overflow happens
    in strtoul_safe_clamp() before checking min and max.
    
    To fix such overflow in sysfs_strtoul_clamp(), to make min and max take
    effect, this patch adds an unsigned long variable, and uses it to macro
    strtoul_safe_clamp() to convert an unsigned long value in range defined
    by [min, max]. Then assign this value to var. By this method, if bit
    width of var is less than unsigned long, integer overflow won't happen
    before min and max are checking.
    
    Now sysfs_strtoul_clamp() can properly handle smaller data type like
    unsigned int, of cause min and max should be defined in range of
    unsigned int too.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d10e79327e632104c2f10a65900b81a6d70e412
Author: Coly Li <colyli@suse.de>
Date:   Sat Feb 9 12:53:01 2019 +0800

    bcache: fix input overflow to sequential_cutoff
    
    [ Upstream commit 8c27a3953e92eb0b22dbb03d599f543a05f9574e ]
    
    People may set sequential_cutoff of a cached device via sysfs file,
    but current code does not check input value overflow. E.g. if value
    4294967295 (UINT_MAX) is written to file sequential_cutoff, its value
    is 4GB, but if 4294967296 (UINT_MAX + 1) is written into, its value
    will be 0. This is an unexpected behavior.
    
    This patch replaces d_strtoi_h() by sysfs_strtoul_clamp() to convert
    input string to unsigned integer value, and limit its range in
    [0, UINT_MAX]. Then the input overflow can be fixed.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 794d02435dca81ea51ed3cca24c41040b37185ba
Author: Coly Li <colyli@suse.de>
Date:   Sat Feb 9 12:53:10 2019 +0800

    bcache: fix input overflow to cache set sysfs file io_error_halflife
    
    [ Upstream commit a91fbda49f746119828f7e8ad0f0aa2ab0578f65 ]
    
    Cache set sysfs entry io_error_halflife is used to set c->error_decay.
    c->error_decay is in type unsigned int, and it is converted by
    strtoul_or_return(), therefore overflow to c->error_decay is possible
    for a large input value.
    
    This patch fixes the overflow by using strtoul_safe_clamp() to convert
    input string to an unsigned long value in range [0, UINT_MAX], then
    divides by 88 and set it to c->error_decay.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 674bb02c0fdf16ec313c9303ffd08c187a92b3cb
Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Date:   Fri Feb 8 17:29:53 2019 -0600

    ALSA: PCM: check if ops are defined before suspending PCM
    
    [ Upstream commit d9c0b2afe820fa3b3f8258a659daee2cc71ca3ef ]
    
    BE dai links only have internal PCM's and their substream ops may
    not be set. Suspending these PCM's will result in their
     ops->trigger() being invoked and cause a kernel oops.
    So skip suspending PCM's if their ops are NULL.
    
    [ NOTE: this change is required now for following the recent PCM core
      change to get rid of snd_pcm_suspend() call.  Since DPCM BE takes
      the runtime carried from FE while keeping NULL ops, it can hit this
      bug.  See details at:
         https://github.com/thesofproject/linux/pull/582
      -- tiwai ]
    
    Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bbe1b801e389d536b58946488a8504d72c747715
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Sat Feb 2 03:34:36 2019 +0100

    ARM: 8833/1: Ensure that NEON code always compiles with Clang
    
    [ Upstream commit de9c0d49d85dc563549972edc5589d195cd5e859 ]
    
    While building arm32 allyesconfig, I ran into the following errors:
    
      arch/arm/lib/xor-neon.c:17:2: error: You should compile this file with
      '-mfloat-abi=softfp -mfpu=neon'
    
      In file included from lib/raid6/neon1.c:27:
      /home/nathan/cbl/prebuilt/lib/clang/8.0.0/include/arm_neon.h:28:2:
      error: "NEON support not enabled"
    
    Building V=1 showed NEON_FLAGS getting passed along to Clang but
    __ARM_NEON__ was not getting defined. Ultimately, it boils down to Clang
    only defining __ARM_NEON__ when targeting armv7, rather than armv6k,
    which is the '-march' value for allyesconfig.
    
    >From lib/Basic/Targets/ARM.cpp in the Clang source:
    
      // This only gets set when Neon instructions are actually available, unlike
      // the VFP define, hence the soft float and arch check. This is subtly
      // different from gcc, we follow the intent which was that it should be set
      // when Neon instructions are actually available.
      if ((FPU & NeonFPU) && !SoftFloat && ArchVersion >= 7) {
        Builder.defineMacro("__ARM_NEON", "1");
        Builder.defineMacro("__ARM_NEON__");
        // current AArch32 NEON implementations do not support double-precision
        // floating-point even when it is present in VFP.
        Builder.defineMacro("__ARM_NEON_FP",
                            "0x" + Twine::utohexstr(HW_FP & ~HW_FP_DP));
      }
    
    Ard Biesheuvel recommended explicitly adding '-march=armv7-a' at the
    beginning of the NEON_FLAGS definitions so that __ARM_NEON__ always gets
    definined by Clang. This doesn't functionally change anything because
    that code will only run where NEON is supported, which is implicitly
    armv7.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/287
    
    Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Acked-by: Nicolas Pitre <nico@linaro.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9bac786e36abc14f3d1a2a32b53a37b6ecfe0bc6
Author: Andrea Righi <righi.andrea@gmail.com>
Date:   Wed Feb 13 01:15:34 2019 +0900

    kprobes: Prohibit probing on bsearch()
    
    [ Upstream commit 02106f883cd745523f7766d90a739f983f19e650 ]
    
    Since kprobe breakpoing handler is using bsearch(), probing on this
    routine can cause recursive breakpoint problem.
    
    int3
     ->do_int3()
       ->ftrace_int3_handler()
         ->ftrace_location()
           ->ftrace_location_range()
             ->bsearch() -> int3
    
    Prohibit probing on bsearch().
    
    Signed-off-by: Andrea Righi <righi.andrea@gmail.com>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.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: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/154998813406.31052.8791425358974650922.stgit@devbox
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3c81153bc6daa5ffd30cd32ba7a6151e197911fe
Author: Michal Kazior <michal@plume.com>
Date:   Mon Feb 11 10:29:27 2019 +0100

    leds: lp55xx: fix null deref on firmware load failure
    
    [ Upstream commit 5ddb0869bfc1bca6cfc592c74c64a026f936638c ]
    
    I've stumbled upon a kernel crash and the logs
    pointed me towards the lp5562 driver:
    
    > <4>[306013.841294] lp5562 0-0030: Direct firmware load for lp5562 failed with error -2
    > <4>[306013.894990] lp5562 0-0030: Falling back to user helper
    > ...
    > <3>[306073.924886] lp5562 0-0030: firmware request failed
    > <1>[306073.939456] Unable to handle kernel NULL pointer dereference at virtual address 00000000
    > <4>[306074.251011] PC is at _raw_spin_lock+0x1c/0x58
    > <4>[306074.255539] LR is at release_firmware+0x6c/0x138
    > ...
    
    After taking a look I noticed firmware_release()
    could be called with either NULL or a dangling
    pointer.
    
    Fixes: 10c06d178df11 ("leds-lp55xx: support firmware interface")
    Signed-off-by: Michal Kazior <michal@plume.com>
    Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 51cc117b7b0ca5110db76a648d42cd5b0278dfc8
Author: Wen Yang <yellowriver2010@hotmail.com>
Date:   Mon Feb 18 15:13:47 2019 +0000

    SoC: imx-sgtl5000: add missing put_device()
    
    [ Upstream commit 8fa857da9744f513036df1c43ab57f338941ae7d ]
    
    The of_find_device_by_node() takes a reference to the underlying device
    structure, we should release that reference.
    
    Detected by coccinelle with the following warnings:
    ./sound/soc/fsl/imx-sgtl5000.c:169:1-7: ERROR: missing put_device;
    call of_find_device_by_node on line 105, but without a corresponding
    object release within this function.
    ./sound/soc/fsl/imx-sgtl5000.c:177:1-7: ERROR: missing put_device;
    call of_find_device_by_node on line 105, but without a corresponding
    object release within this function.
    
    Signed-off-by: Wen Yang <yellowriver2010@hotmail.com>
    Cc: Timur Tabi <timur@kernel.org>
    Cc: Nicolin Chen <nicoleotsuka@gmail.com>
    Cc: Xiubo Li <Xiubo.Lee@gmail.com>
    Cc: Fabio Estevam <festevam@gmail.com>
    Cc: Liam Girdwood <lgirdwood@gmail.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Jaroslav Kysela <perex@perex.cz>
    Cc: Takashi Iwai <tiwai@suse.com>
    Cc: Shawn Guo <shawnguo@kernel.org>
    Cc: Sascha Hauer <s.hauer@pengutronix.de>
    Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
    Cc: NXP Linux Team <linux-imx@nxp.com>
    Cc: alsa-devel@alsa-project.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9670c4d542aa2fac5dfa7f95f6e79c25dd1e11f0
Author: Jason Yan <yanaijie@huawei.com>
Date:   Fri Feb 15 19:50:27 2019 +0800

    scsi: megaraid_sas: return error when create DMA pool failed
    
    [ Upstream commit bcf3b67d16a4c8ffae0aa79de5853435e683945c ]
    
    when create DMA pool for cmd frames failed, we should return -ENOMEM,
    instead of 0.
    In some case in:
    
        megasas_init_adapter_fusion()
    
        -->megasas_alloc_cmds()
           -->megasas_create_frame_pool
              create DMA pool failed,
            --> megasas_free_cmds() [1]
    
        -->megasas_alloc_cmds_fusion()
           failed, then goto fail_alloc_cmds.
        -->megasas_free_cmds() [2]
    
    we will call megasas_free_cmds twice, [1] will kfree cmd_list,
    [2] will use cmd_list.it will cause a problem:
    
    Unable to handle kernel NULL pointer dereference at virtual address
    00000000
    pgd = ffffffc000f70000
    [00000000] *pgd=0000001fbf893003, *pud=0000001fbf893003,
    *pmd=0000001fbf894003, *pte=006000006d000707
    Internal error: Oops: 96000005 [#1] SMP
     Modules linked in:
     CPU: 18 PID: 1 Comm: swapper/0 Not tainted
     task: ffffffdfb9290000 ti: ffffffdfb923c000 task.ti: ffffffdfb923c000
     PC is at megasas_free_cmds+0x30/0x70
     LR is at megasas_free_cmds+0x24/0x70
     ...
     Call trace:
     [<ffffffc0005b779c>] megasas_free_cmds+0x30/0x70
     [<ffffffc0005bca74>] megasas_init_adapter_fusion+0x2f4/0x4d8
     [<ffffffc0005b926c>] megasas_init_fw+0x2dc/0x760
     [<ffffffc0005b9ab0>] megasas_probe_one+0x3c0/0xcd8
     [<ffffffc0004a5abc>] local_pci_probe+0x4c/0xb4
     [<ffffffc0004a5c40>] pci_device_probe+0x11c/0x14c
     [<ffffffc00053a5e4>] driver_probe_device+0x1ec/0x430
     [<ffffffc00053a92c>] __driver_attach+0xa8/0xb0
     [<ffffffc000538178>] bus_for_each_dev+0x74/0xc8
      [<ffffffc000539e88>] driver_attach+0x28/0x34
     [<ffffffc000539a18>] bus_add_driver+0x16c/0x248
     [<ffffffc00053b234>] driver_register+0x6c/0x138
     [<ffffffc0004a5350>] __pci_register_driver+0x5c/0x6c
     [<ffffffc000ce3868>] megasas_init+0xc0/0x1a8
     [<ffffffc000082a58>] do_one_initcall+0xe8/0x1ec
     [<ffffffc000ca7be8>] kernel_init_freeable+0x1c8/0x284
     [<ffffffc0008d90b8>] kernel_init+0x1c/0xe4
    
    Signed-off-by: Jason Yan <yanaijie@huawei.com>
    Acked-by: Sumit Saxena <sumit.saxena@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e63fbce08bb9b311900a9b9acfc1e8497baf741a
Author: HÃ¥kon Bugge <haakon.bugge@oracle.com>
Date:   Sun Feb 17 15:45:12 2019 +0100

    IB/mlx4: Increase the timeout for CM cache
    
    [ Upstream commit 2612d723aadcf8281f9bf8305657129bd9f3cd57 ]
    
    Using CX-3 virtual functions, either from a bare-metal machine or
    pass-through from a VM, MAD packets are proxied through the PF driver.
    
    Since the VF drivers have separate name spaces for MAD Transaction Ids
    (TIDs), the PF driver has to re-map the TIDs and keep the book keeping
    in a cache.
    
    Following the RDMA Connection Manager (CM) protocol, it is clear when
    an entry has to evicted form the cache. But life is not perfect,
    remote peers may die or be rebooted. Hence, it's a timeout to wipe out
    a cache entry, when the PF driver assumes the remote peer has gone.
    
    During workloads where a high number of QPs are destroyed concurrently,
    excessive amount of CM DREQ retries has been observed
    
    The problem can be demonstrated in a bare-metal environment, where two
    nodes have instantiated 8 VFs each. This using dual ported HCAs, so we
    have 16 vPorts per physical server.
    
    64 processes are associated with each vPort and creates and destroys
    one QP for each of the remote 64 processes. That is, 1024 QPs per
    vPort, all in all 16K QPs. The QPs are created/destroyed using the
    CM.
    
    When tearing down these 16K QPs, excessive CM DREQ retries (and
    duplicates) are observed. With some cat/paste/awk wizardry on the
    infiniband_cm sysfs, we observe as sum of the 16 vPorts on one of the
    nodes:
    
    cm_rx_duplicates:
          dreq  2102
    cm_rx_msgs:
          drep  1989
          dreq  6195
           rep  3968
           req  4224
           rtu  4224
    cm_tx_msgs:
          drep  4093
          dreq 27568
           rep  4224
           req  3968
           rtu  3968
    cm_tx_retries:
          dreq 23469
    
    Note that the active/passive side is equally distributed between the
    two nodes.
    
    Enabling pr_debug in cm.c gives tons of:
    
    [171778.814239] <mlx4_ib> mlx4_ib_multiplex_cm_handler: id{slave:
    1,sl_cm_id: 0xd393089f} is NULL!
    
    By increasing the CM_CLEANUP_CACHE_TIMEOUT from 5 to 30 seconds, the
    tear-down phase of the application is reduced from approximately 90 to
    50 seconds. Retries/duplicates are also significantly reduced:
    
    cm_rx_duplicates:
          dreq  2460
    []
    cm_tx_retries:
          dreq  3010
           req    47
    
    Increasing the timeout further didn't help, as these duplicates and
    retries stems from a too short CMA timeout, which was 20 (~4 seconds)
    on the systems. By increasing the CMA timeout to 22 (~17 seconds), the
    numbers fell down to about 10 for both of them.
    
    Adjustment of the CMA timeout is not part of this commit.
    
    Signed-off-by: HÃ¥kon Bugge <haakon.bugge@oracle.com>
    Acked-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2edeb33e013c5b63bb34e56924f952d8ed15e7dc
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Feb 21 20:09:28 2019 -0800

    e1000e: Fix -Wformat-truncation warnings
    
    [ Upstream commit 135e7245479addc6b1f5d031e3d7e2ddb3d2b109 ]
    
    Provide precision hints to snprintf() since we know the destination
    buffer size of the RX/TX ring names are IFNAMSIZ + 5 - 1. This fixes the
    following warnings:
    
    drivers/net/ethernet/intel/e1000e/netdev.c: In function
    'e1000_request_msix':
    drivers/net/ethernet/intel/e1000e/netdev.c:2109:13: warning: 'snprintf'
    output may be truncated before the last format character
    [-Wformat-truncation=]
         "%s-rx-0", netdev->name);
                 ^
    drivers/net/ethernet/intel/e1000e/netdev.c:2107:3: note: 'snprintf'
    output between 6 and 21 bytes into a destination of size 20
       snprintf(adapter->rx_ring->name,
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         sizeof(adapter->rx_ring->name) - 1,
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         "%s-rx-0", netdev->name);
         ~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/net/ethernet/intel/e1000e/netdev.c:2125:13: warning: 'snprintf'
    output may be truncated before the last format character
    [-Wformat-truncation=]
         "%s-tx-0", netdev->name);
                 ^
    drivers/net/ethernet/intel/e1000e/netdev.c:2123:3: note: 'snprintf'
    output between 6 and 21 bytes into a destination of size 20
       snprintf(adapter->tx_ring->name,
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         sizeof(adapter->tx_ring->name) - 1,
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         "%s-tx-0", netdev->name);
         ~~~~~~~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3d2d028d77f68487a60264d58d76a712647c5617
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Feb 3 00:14:33 2019 +0200

    mmc: omap: fix the maximum timeout setting
    
    [ Upstream commit a6327b5e57fdc679c842588c3be046c0b39cc127 ]
    
    When running OMAP1 kernel on QEMU, MMC access is annoyingly noisy:
    
            MMC: CTO of 0xff and 0xfe cannot be used!
            MMC: CTO of 0xff and 0xfe cannot be used!
            MMC: CTO of 0xff and 0xfe cannot be used!
            [ad inf.]
    
    Emulator warnings appear to be valid. The TI document SPRU680 [1]
    ("OMAP5910 Dual-Core Processor MultiMedia Card/Secure Data Memory Card
    (MMC/SD) Reference Guide") page 36 states that the maximum timeout is 253
    cycles and "0xff and 0xfe cannot be used".
    
    Fix by using 0xfd as the maximum timeout.
    
    Tested using QEMU 2.5 (Siemens SX1 machine, OMAP310), and also checked on
    real hardware using Palm TE (OMAP310), Nokia 770 (OMAP1710) and Nokia N810
    (OMAP2420) that MMC works as before.
    
    [1] http://www.ti.com/lit/ug/spru680/spru680.pdf
    
    Fixes: 730c9b7e6630f ("[MMC] Add OMAP MMC host driver")
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 61c4d9023651d8a0a2f636285a9af44bd072d519
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Wed Feb 13 17:14:42 2019 +0100

    ARM: 8840/1: use a raw_spinlock_t in unwind
    
    [ Upstream commit 74ffe79ae538283bbf7c155e62339f1e5c87b55a ]
    
    Mostly unwind is done with irqs enabled however SLUB may call it with
    irqs disabled while creating a new SLUB cache.
    
    I had system freeze while loading a module which called
    kmem_cache_create() on init. That means SLUB's __slab_alloc() disabled
    interrupts and then
    
    ->new_slab_objects()
     ->new_slab()
      ->setup_object()
       ->setup_object_debug()
        ->init_tracking()
         ->set_track()
          ->save_stack_trace()
           ->save_stack_trace_tsk()
            ->walk_stackframe()
             ->unwind_frame()
              ->unwind_find_idx()
               =>spin_lock_irqsave(&unwind_lock);
    
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c63d1968079379112d2623f0aea05b07a99da230
Author: Benjamin Block <bblock@linux.ibm.com>
Date:   Thu Feb 21 10:18:00 2019 +0100

    scsi: core: replace GFP_ATOMIC with GFP_KERNEL in scsi_scan.c
    
    [ Upstream commit 1749ef00f7312679f76d5e9104c5d1e22a829038 ]
    
    We had a test-report where, under memory pressure, adding LUNs to the
    systems would fail (the tests add LUNs strictly in sequence):
    
    [ 5525.853432] scsi 0:0:1:1088045124: Direct-Access     IBM      2107900          .148 PQ: 0 ANSI: 5
    [ 5525.853826] scsi 0:0:1:1088045124: alua: supports implicit TPGS
    [ 5525.853830] scsi 0:0:1:1088045124: alua: device naa.6005076303ffd32700000000000044da port group 0 rel port 43
    [ 5525.853931] sd 0:0:1:1088045124: Attached scsi generic sg10 type 0
    [ 5525.854075] sd 0:0:1:1088045124: [sdk] Disabling DIF Type 1 protection
    [ 5525.855495] sd 0:0:1:1088045124: [sdk] 2097152 512-byte logical blocks: (1.07 GB/1.00 GiB)
    [ 5525.855606] sd 0:0:1:1088045124: [sdk] Write Protect is off
    [ 5525.855609] sd 0:0:1:1088045124: [sdk] Mode Sense: ed 00 00 08
    [ 5525.855795] sd 0:0:1:1088045124: [sdk] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
    [ 5525.857838]  sdk: sdk1
    [ 5525.859468] sd 0:0:1:1088045124: [sdk] Attached SCSI disk
    [ 5525.865073] sd 0:0:1:1088045124: alua: transition timeout set to 60 seconds
    [ 5525.865078] sd 0:0:1:1088045124: alua: port group 00 state A preferred supports tolusnA
    [ 5526.015070] sd 0:0:1:1088045124: alua: port group 00 state A preferred supports tolusnA
    [ 5526.015213] sd 0:0:1:1088045124: alua: port group 00 state A preferred supports tolusnA
    [ 5526.587439] scsi_alloc_sdev: Allocation failure during SCSI scanning, some SCSI devices might not be configured
    [ 5526.588562] scsi_alloc_sdev: Allocation failure during SCSI scanning, some SCSI devices might not be configured
    
    Looking at the code of scsi_alloc_sdev(), and all the calling contexts,
    there seems to be no reason to use GFP_ATMOIC here. All the different
    call-contexts use a mutex at some point, and nothing in between that
    requires no sleeping, as far as I could see. Additionally, the code that
    later allocates the block queue for the device (scsi_mq_alloc_queue())
    already uses GFP_KERNEL.
    
    There are similar allocations in two other functions:
    scsi_probe_and_add_lun(), and scsi_add_lun(),; that can also be done with
    GFP_KERNEL.
    
    Here is the contexts for the three functions so far:
    
        scsi_alloc_sdev()
            scsi_probe_and_add_lun()
                scsi_sequential_lun_scan()
                    __scsi_scan_target()
                        scsi_scan_target()
                            mutex_lock()
                        scsi_scan_channel()
                            scsi_scan_host_selected()
                                mutex_lock()
                scsi_report_lun_scan()
                    __scsi_scan_target()
                        ...
                __scsi_add_device()
                    mutex_lock()
                __scsi_scan_target()
                    ...
            scsi_report_lun_scan()
                ...
            scsi_get_host_dev()
                mutex_lock()
    
        scsi_probe_and_add_lun()
            ...
    
        scsi_add_lun()
            scsi_probe_and_add_lun()
                ...
    
    So replace all these, and give them a bit of a better chance to succeed,
    with more chances of reclaim.
    
    Signed-off-by: Benjamin Block <bblock@linux.ibm.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e70758e06ee208f3be54642da8330bac6cbe28f2
Author: Tony Jones <tonyj@suse.de>
Date:   Wed Feb 27 17:55:32 2019 -0800

    tools lib traceevent: Fix buffer overflow in arg_eval
    
    [ Upstream commit 7c5b019e3a638a5a290b0ec020f6ca83d2ec2aaa ]
    
    Fix buffer overflow observed when running perf test.
    
    The overflow is when trying to evaluate "1ULL << (64 - 1)" which is
    resulting in -9223372036854775808 which overflows the 20 character
    buffer.
    
    If is possible this bug has been reported before but I still don't see
    any fix checked in:
    
    See: https://www.spinics.net/lists/linux-perf-users/msg07714.html
    
    Reported-by: Michael Sartain <mikesart@fastmail.com>
    Reported-by: Mathias Krause <minipli@googlemail.com>
    Signed-off-by: Tony Jones <tonyj@suse.de>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Fixes: f7d82350e597 ("tools/events: Add files to create libtraceevent.a")
    Link: http://lkml.kernel.org/r/20190228015532.8941-1-tonyj@suse.de
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 43c51c42cdce6878bad494baa97ddd20099bf288
Author: Carlos Maiolino <cmaiolino@redhat.com>
Date:   Tue Feb 26 11:51:50 2019 +0100

    fs: fix guard_bio_eod to check for real EOD errors
    
    [ Upstream commit dce30ca9e3b676fb288c33c1f4725a0621361185 ]
    
    guard_bio_eod() can truncate a segment in bio to allow it to do IO on
    odd last sectors of a device.
    
    It already checks if the IO starts past EOD, but it does not consider
    the possibility of an IO request starting within device boundaries can
    contain more than one segment past EOD.
    
    In such cases, truncated_bytes can be bigger than PAGE_SIZE, and will
    underflow bvec->bv_len.
    
    Fix this by checking if truncated_bytes is lower than PAGE_SIZE.
    
    This situation has been found on filesystems such as isofs and vfat,
    which doesn't check the device size before mount, if the device is
    smaller than the filesystem itself, a readahead on such filesystem,
    which spans EOD, can trigger this situation, leading a call to
    zero_user() with a wrong size possibly corrupting memory.
    
    I didn't see any crash, or didn't let the system run long enough to
    check if memory corruption will be hit somewhere, but adding
    instrumentation to guard_bio_end() to check truncated_bytes size, was
    enough to see the error.
    
    The following script can trigger the error.
    
    MNT=/mnt
    IMG=./DISK.img
    DEV=/dev/loop0
    
    mkfs.vfat $IMG
    mount $IMG $MNT
    cp -R /etc $MNT &> /dev/null
    umount $MNT
    
    losetup -D
    
    losetup --find --show --sizelimit 16247280 $IMG
    mount $DEV $MNT
    
    find $MNT -type f -exec cat {} + >/dev/null
    
    Kudos to Eric Sandeen for coming up with the reproducer above
    
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5213ffd0b6fc8012f099468991510447977eaa03
Author: Yao Liu <yotta.liu@ucloud.cn>
Date:   Mon Jan 28 19:47:28 2019 +0800

    cifs: Fix NULL pointer dereference of devname
    
    [ Upstream commit 68e2672f8fbd1e04982b8d2798dd318bf2515dd2 ]
    
    There is a NULL pointer dereference of devname in strspn()
    
    The oops looks something like:
    
      CIFS: Attempting to mount (null)
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
      ...
      RIP: 0010:strspn+0x0/0x50
      ...
      Call Trace:
       ? cifs_parse_mount_options+0x222/0x1710 [cifs]
       ? cifs_get_volume_info+0x2f/0x80 [cifs]
       cifs_setup_volume_info+0x20/0x190 [cifs]
       cifs_get_volume_info+0x50/0x80 [cifs]
       cifs_smb3_do_mount+0x59/0x630 [cifs]
       ? ida_alloc_range+0x34b/0x3d0
       cifs_do_mount+0x11/0x20 [cifs]
       mount_fs+0x52/0x170
       vfs_kern_mount+0x6b/0x170
       do_mount+0x216/0xdc0
       ksys_mount+0x83/0xd0
       __x64_sys_mount+0x25/0x30
       do_syscall_64+0x65/0x220
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fix this by adding a NULL check on devname in cifs_parse_devname()
    
    Signed-off-by: Yao Liu <yotta.liu@ucloud.cn>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03bb19bec59c8fba1fd5e7677771d8f942585583
Author: Jason Cai (Xiang Feng) <jason.cai.kern@gmail.com>
Date:   Sun Jan 20 22:39:13 2019 +0800

    dm thin: add sanity checks to thin-pool and external snapshot creation
    
    [ Upstream commit 70de2cbda8a5d788284469e755f8b097d339c240 ]
    
    Invoking dm_get_device() twice on the same device path with different
    modes is dangerous.  Because in that case, upgrade_mode() will alloc a
    new 'dm_dev' and free the old one, which may be referenced by a previous
    caller.  Dereferencing the dangling pointer will trigger kernel NULL
    pointer dereference.
    
    The following two cases can reproduce this issue.  Actually, they are
    invalid setups that must be disallowed, e.g.:
    
    1. Creating a thin-pool with read_only mode, and the same device as
    both metadata and data.
    
    dmsetup create thinp --table \
        "0 41943040 thin-pool /dev/vdb /dev/vdb 128 0 1 read_only"
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000080
    ...
    Call Trace:
     new_read+0xfb/0x110 [dm_bufio]
     dm_bm_read_lock+0x43/0x190 [dm_persistent_data]
     ? kmem_cache_alloc_trace+0x15c/0x1e0
     __create_persistent_data_objects+0x65/0x3e0 [dm_thin_pool]
     dm_pool_metadata_open+0x8c/0xf0 [dm_thin_pool]
     pool_ctr.cold.79+0x213/0x913 [dm_thin_pool]
     ? realloc_argv+0x50/0x70 [dm_mod]
     dm_table_add_target+0x14e/0x330 [dm_mod]
     table_load+0x122/0x2e0 [dm_mod]
     ? dev_status+0x40/0x40 [dm_mod]
     ctl_ioctl+0x1aa/0x3e0 [dm_mod]
     dm_ctl_ioctl+0xa/0x10 [dm_mod]
     do_vfs_ioctl+0xa2/0x600
     ? handle_mm_fault+0xda/0x200
     ? __do_page_fault+0x26c/0x4f0
     ksys_ioctl+0x60/0x90
     __x64_sys_ioctl+0x16/0x20
     do_syscall_64+0x55/0x150
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    2. Creating a external snapshot using the same thin-pool device.
    
    dmsetup create thinp --table \
        "0 41943040 thin-pool /dev/vdc /dev/vdb 128 0 2 ignore_discard"
    dmsetup message /dev/mapper/thinp 0 "create_thin 0"
    dmsetup create snap --table \
                "0 204800 thin /dev/mapper/thinp 0 /dev/mapper/thinp"
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
    ...
    Call Trace:
    ? __alloc_pages_nodemask+0x13c/0x2e0
    retrieve_status+0xa5/0x1f0 [dm_mod]
    ? dm_get_live_or_inactive_table.isra.7+0x20/0x20 [dm_mod]
     table_status+0x61/0xa0 [dm_mod]
     ctl_ioctl+0x1aa/0x3e0 [dm_mod]
     dm_ctl_ioctl+0xa/0x10 [dm_mod]
     do_vfs_ioctl+0xa2/0x600
     ksys_ioctl+0x60/0x90
     ? ksys_write+0x4f/0xb0
     __x64_sys_ioctl+0x16/0x20
     do_syscall_64+0x55/0x150
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Signed-off-by: Jason Cai (Xiang Feng) <jason.cai@linux.alibaba.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 712516d97ee0a2ec35194c903b63716d06181480
Author: Louis Taylor <louis@kragniz.eu>
Date:   Wed Feb 27 22:25:15 2019 +0000

    cifs: use correct format characters
    
    [ Upstream commit 259594bea574e515a148171b5cd84ce5cbdc028a ]
    
    When compiling with -Wformat, clang emits the following warnings:
    
    fs/cifs/smb1ops.c:312:20: warning: format specifies type 'unsigned
    short' but the argument has type 'unsigned int' [-Wformat]
                             tgt_total_cnt, total_in_tgt);
                                            ^~~~~~~~~~~~
    
    fs/cifs/cifs_dfs_ref.c:289:4: warning: format specifies type 'short'
    but the argument has type 'int' [-Wformat]
                     ref->flags, ref->server_type);
                     ^~~~~~~~~~
    
    fs/cifs/cifs_dfs_ref.c:289:16: warning: format specifies type 'short'
    but the argument has type 'int' [-Wformat]
                     ref->flags, ref->server_type);
                                 ^~~~~~~~~~~~~~~~
    
    fs/cifs/cifs_dfs_ref.c:291:4: warning: format specifies type 'short'
    but the argument has type 'int' [-Wformat]
                     ref->ref_flag, ref->path_consumed);
                     ^~~~~~~~~~~~~
    
    fs/cifs/cifs_dfs_ref.c:291:19: warning: format specifies type 'short'
    but the argument has type 'int' [-Wformat]
                     ref->ref_flag, ref->path_consumed);
                                    ^~~~~~~~~~~~~~~~~~
    The types of these arguments are unconditionally defined, so this patch
    updates the format character to the correct ones for ints and unsigned
    ints.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/378
    
    Signed-off-by: Louis Taylor <louis@kragniz.eu>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 281b1be2c6912431c7687ec49424ae43c7452e86
Author: Jia Guo <guojia12@huawei.com>
Date:   Tue Mar 5 15:41:41 2019 -0800

    ocfs2: fix a panic problem caused by o2cb_ctl
    
    [ Upstream commit cc725ef3cb202ef2019a3c67c8913efa05c3cce6 ]
    
    In the process of creating a node, it will cause NULL pointer
    dereference in kernel if o2cb_ctl failed in the interval (mkdir,
    o2cb_set_node_attribute(node_num)] in function o2cb_add_node.
    
    The node num is initialized to 0 in function o2nm_node_group_make_item,
    o2nm_node_group_drop_item will mistake the node number 0 for a valid
    node number when we delete the node before the node number is set
    correctly.  If the local node number of the current host happens to be
    0, cluster->cl_local_node will be set to O2NM_INVALID_NODE_NUM while
    o2hb_thread still running.  The panic stack is generated as follows:
    
      o2hb_thread
          \-o2hb_do_disk_heartbeat
              \-o2hb_check_own_slot
                  |-slot = &reg->hr_slots[o2nm_this_node()];
                  //o2nm_this_node() return O2NM_INVALID_NODE_NUM
    
    We need to check whether the node number is set when we delete the node.
    
    Link: http://lkml.kernel.org/r/133d8045-72cc-863e-8eae-5013f9f6bc51@huawei.com
    Signed-off-by: Jia Guo <guojia12@huawei.com>
    Reviewed-by: Joseph Qi <jiangqi903@gmail.com>
    Acked-by: Jun Piao <piaojun@huawei.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <ge.changwei@h3c.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c090f4c8a0d937f6b59e5a31c42f51d33c6803ef
Author: Qian Cai <cai@lca.pw>
Date:   Tue Mar 5 15:42:03 2019 -0800

    mm/slab.c: kmemleak no scan alien caches
    
    [ Upstream commit 92d1d07daad65c300c7d0b68bbef8867e9895d54 ]
    
    Kmemleak throws endless warnings during boot due to in
    __alloc_alien_cache(),
    
        alc = kmalloc_node(memsize, gfp, node);
        init_arraycache(&alc->ac, entries, batch);
        kmemleak_no_scan(ac);
    
    Kmemleak does not track the array cache (alc->ac) but the alien cache
    (alc) instead, so let it track the latter by lifting kmemleak_no_scan()
    out of init_arraycache().
    
    There is another place that calls init_arraycache(), but
    alloc_kmem_cache_cpus() uses the percpu allocation where will never be
    considered as a leak.
    
      kmemleak: Found object by alias at 0xffff8007b9aa7e38
      CPU: 190 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc2+ #2
      Call trace:
       dump_backtrace+0x0/0x168
       show_stack+0x24/0x30
       dump_stack+0x88/0xb0
       lookup_object+0x84/0xac
       find_and_get_object+0x84/0xe4
       kmemleak_no_scan+0x74/0xf4
       setup_kmem_cache_node+0x2b4/0x35c
       __do_tune_cpucache+0x250/0x2d4
       do_tune_cpucache+0x4c/0xe4
       enable_cpucache+0xc8/0x110
       setup_cpu_cache+0x40/0x1b8
       __kmem_cache_create+0x240/0x358
       create_cache+0xc0/0x198
       kmem_cache_create_usercopy+0x158/0x20c
       kmem_cache_create+0x50/0x64
       fsnotify_init+0x58/0x6c
       do_one_initcall+0x194/0x388
       kernel_init_freeable+0x668/0x688
       kernel_init+0x18/0x124
       ret_from_fork+0x10/0x18
      kmemleak: Object 0xffff8007b9aa7e00 (size 256):
      kmemleak:   comm "swapper/0", pid 1, jiffies 4294697137
      kmemleak:   min_count = 1
      kmemleak:   count = 0
      kmemleak:   flags = 0x1
      kmemleak:   checksum = 0
      kmemleak:   backtrace:
           kmemleak_alloc+0x84/0xb8
           kmem_cache_alloc_node_trace+0x31c/0x3a0
           __kmalloc_node+0x58/0x78
           setup_kmem_cache_node+0x26c/0x35c
           __do_tune_cpucache+0x250/0x2d4
           do_tune_cpucache+0x4c/0xe4
           enable_cpucache+0xc8/0x110
           setup_cpu_cache+0x40/0x1b8
           __kmem_cache_create+0x240/0x358
           create_cache+0xc0/0x198
           kmem_cache_create_usercopy+0x158/0x20c
           kmem_cache_create+0x50/0x64
           fsnotify_init+0x58/0x6c
           do_one_initcall+0x194/0x388
           kernel_init_freeable+0x668/0x688
           kernel_init+0x18/0x124
      kmemleak: Not scanning unknown object at 0xffff8007b9aa7e38
      CPU: 190 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc2+ #2
      Call trace:
       dump_backtrace+0x0/0x168
       show_stack+0x24/0x30
       dump_stack+0x88/0xb0
       kmemleak_no_scan+0x90/0xf4
       setup_kmem_cache_node+0x2b4/0x35c
       __do_tune_cpucache+0x250/0x2d4
       do_tune_cpucache+0x4c/0xe4
       enable_cpucache+0xc8/0x110
       setup_cpu_cache+0x40/0x1b8
       __kmem_cache_create+0x240/0x358
       create_cache+0xc0/0x198
       kmem_cache_create_usercopy+0x158/0x20c
       kmem_cache_create+0x50/0x64
       fsnotify_init+0x58/0x6c
       do_one_initcall+0x194/0x388
       kernel_init_freeable+0x668/0x688
       kernel_init+0x18/0x124
       ret_from_fork+0x10/0x18
    
    Link: http://lkml.kernel.org/r/20190129184518.39808-1-cai@lca.pw
    Fixes: 1fe00d50a9e8 ("slab: factor out initialization of array cache")
    Signed-off-by: Qian Cai <cai@lca.pw>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9dc553ad1d6782cae81ddd4b1d56669db5b83b74
Author: Uladzislau Rezki (Sony) <urezki@gmail.com>
Date:   Tue Mar 5 15:45:59 2019 -0800

    mm/vmalloc.c: fix kernel BUG at mm/vmalloc.c:512!
    
    [ Upstream commit afd07389d3f4933c7f7817a92fb5e053d59a3182 ]
    
    One of the vmalloc stress test case triggers the kernel BUG():
    
      <snip>
      [60.562151] ------------[ cut here ]------------
      [60.562154] kernel BUG at mm/vmalloc.c:512!
      [60.562206] invalid opcode: 0000 [#1] PREEMPT SMP PTI
      [60.562247] CPU: 0 PID: 430 Comm: vmalloc_test/0 Not tainted 4.20.0+ #161
      [60.562293] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
      [60.562351] RIP: 0010:alloc_vmap_area+0x36f/0x390
      <snip>
    
    it can happen due to big align request resulting in overflowing of
    calculated address, i.e.  it becomes 0 after ALIGN()'s fixup.
    
    Fix it by checking if calculated address is within vstart/vend range.
    
    Link: http://lkml.kernel.org/r/20190124115648.9433-2-urezki@gmail.com
    Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Joel Fernandes <joelaf@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Thomas Garnier <thgarnie@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d87d326145ef7df602d00d479ff3d71ab4b8a15c
Author: Peng Fan <peng.fan@nxp.com>
Date:   Tue Mar 5 15:49:50 2019 -0800

    mm/cma.c: cma_declare_contiguous: correct err handling
    
    [ Upstream commit 0d3bd18a5efd66097ef58622b898d3139790aa9d ]
    
    In case cma_init_reserved_mem failed, need to free the memblock
    allocated by memblock_reserve or memblock_alloc_range.
    
    Quote Catalin's comments:
      https://lkml.org/lkml/2019/2/26/482
    
    Kmemleak is supposed to work with the memblock_{alloc,free} pair and it
    ignores the memblock_reserve() as a memblock_alloc() implementation
    detail. It is, however, tolerant to memblock_free() being called on
    a sub-range or just a different range from a previous memblock_alloc().
    So the original patch looks fine to me. FWIW:
    
    Link: http://lkml.kernel.org/r/20190227144631.16708-1-peng.fan@nxp.com
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Laura Abbott <labbott@redhat.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c882239931a9690af9350ecd7187cddf50a0bfc9
Author: Christian Brauner <christian@brauner.io>
Date:   Thu Mar 7 16:29:43 2019 -0800

    sysctl: handle overflow for file-max
    
    [ Upstream commit 32a5ad9c22852e6bd9e74bdec5934ef9d1480bc5 ]
    
    Currently, when writing
    
      echo 18446744073709551616 > /proc/sys/fs/file-max
    
    /proc/sys/fs/file-max will overflow and be set to 0.  That quickly
    crashes the system.
    
    This commit sets the max and min value for file-max.  The max value is
    set to long int.  Any higher value cannot currently be used as the
    percpu counters are long ints and not unsigned integers.
    
    Note that the file-max value is ultimately parsed via
    __do_proc_doulongvec_minmax().  This function does not report error when
    min or max are exceeded.  Which means if a value largen that long int is
    written userspace will not receive an error instead the old value will be
    kept.  There is an argument to be made that this should be changed and
    __do_proc_doulongvec_minmax() should return an error when a dedicated min
    or max value are exceeded.  However this has the potential to break
    userspace so let's defer this to an RFC patch.
    
    Link: http://lkml.kernel.org/r/20190107222700.15954-3-christian@brauner.io
    Signed-off-by: Christian Brauner <christian@brauner.io>
    Acked-by: Kees Cook <keescook@chromium.org>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Dominik Brodowski <linux@dominikbrodowski.net>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Joe Lawrence <joe.lawrence@redhat.com>
    Cc: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Waiman Long <longman@redhat.com>
    [christian@brauner.io: v4]
      Link: http://lkml.kernel.org/r/20190210203943.8227-3-christian@brauner.io
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 33da87e946befcbd68fb948aa874130f06fdfcd2
Author: Douglas Anderson <dianders@chromium.org>
Date:   Fri Mar 8 11:32:04 2019 -0800

    tracing: kdb: Fix ftdump to not sleep
    
    [ Upstream commit 31b265b3baaf55f209229888b7ffea523ddab366 ]
    
    As reported back in 2016-11 [1], the "ftdump" kdb command triggers a
    BUG for "sleeping function called from invalid context".
    
    kdb's "ftdump" command wants to call ring_buffer_read_prepare() in
    atomic context.  A very simple solution for this is to add allocation
    flags to ring_buffer_read_prepare() so kdb can call it without
    triggering the allocation error.  This patch does that.
    
    Note that in the original email thread about this, it was suggested
    that perhaps the solution for kdb was to either preallocate the buffer
    ahead of time or create our own iterator.  I'm hoping that this
    alternative of adding allocation flags to ring_buffer_read_prepare()
    can be considered since it means I don't need to duplicate more of the
    core trace code into "trace_kdb.c" (for either creating my own
    iterator or re-preparing a ring allocator whose memory was already
    allocated).
    
    NOTE: another option for kdb is to actually figure out how to make it
    reuse the existing ftrace_dump() function and totally eliminate the
    duplication.  This sounds very appealing and actually works (the "sr
    z" command can be seen to properly dump the ftrace buffer).  The
    downside here is that ftrace_dump() fully consumes the trace buffer.
    Unless that is changed I'd rather not use it because it means "ftdump
    | grep xyz" won't be very useful to search the ftrace buffer since it
    will throw away the whole trace on the first grep.  A future patch to
    dump only the last few lines of the buffer will also be hard to
    implement.
    
    [1] https://lkml.kernel.org/r/20161117191605.GA21459@google.com
    
    Link: http://lkml.kernel.org/r/20190308193205.213659-1-dianders@chromium.org
    
    Reported-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e045c806436d3202e497051d3d63a23db8e16169
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Nov 15 12:31:44 2017 -0700

    i2c: core-smbus: prevent stack corruption on read I2C_BLOCK_DATA
    
    commit 89c6efa61f5709327ecfa24bff18e57a4e80c7fa upstream.
    
    On a I2C_SMBUS_I2C_BLOCK_DATA read request, if data->block[0] is
    greater than I2C_SMBUS_BLOCK_MAX + 1, the underlying I2C driver writes
    data out of the msgbuf1 array boundary.
    
    It is possible from a user application to run into that issue by
    calling the I2C_SMBUS ioctl with data.block[0] greater than
    I2C_SMBUS_BLOCK_MAX + 1.
    
    This patch makes the code compliant with
    Documentation/i2c/dev-interface by raising an error when the requested
    size is larger than 32 bytes.
    
    Call Trace:
     [<ffffffff8139f695>] dump_stack+0x67/0x92
     [<ffffffff811802a4>] panic+0xc5/0x1eb
     [<ffffffff810ecb5f>] ? vprintk_default+0x1f/0x30
     [<ffffffff817456d3>] ? i2cdev_ioctl_smbus+0x303/0x320
     [<ffffffff8109a68b>] __stack_chk_fail+0x1b/0x20
     [<ffffffff817456d3>] i2cdev_ioctl_smbus+0x303/0x320
     [<ffffffff81745aed>] i2cdev_ioctl+0x4d/0x1e0
     [<ffffffff811f761a>] do_vfs_ioctl+0x2ba/0x490
     [<ffffffff81336e43>] ? security_file_ioctl+0x43/0x60
     [<ffffffff811f7869>] SyS_ioctl+0x79/0x90
     [<ffffffff81a22e97>] entry_SYSCALL_64_fastpath+0x12/0x6a
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Cc: stable@kernel.org
    [connoro@google.com: 4.9 backport: adjust filename]
    Signed-off-by: Connor O'Brien <connoro@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1084676c5849526ca38c1ee0f9a01d73242903ae
Author: zhangyi (F) <yi.zhang@huawei.com>
Date:   Sat Mar 23 11:56:01 2019 -0400

    ext4: cleanup bh release code in ext4_ind_remove_space()
    
    commit 5e86bdda41534e17621d5a071b294943cae4376e upstream.
    
    Currently, we are releasing the indirect buffer where we are done with
    it in ext4_ind_remove_space(), so we can see the brelse() and
    BUFFER_TRACE() everywhere.  It seems fragile and hard to read, and we
    may probably forget to release the buffer some day.  This patch cleans
    up the code by putting of the code which releases the buffers to the
    end of the function.
    
    Signed-off-by: zhangyi (F) <yi.zhang@huawei.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: Jari Ruusu <jari.ruusu@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>