commit 19bb613acb9ad8e57593cad5118acaee117cc303
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Apr 27 09:36:41 2019 +0200

    Linux 4.19.37

commit cdd369fe0f98c29d01b310f7ee1c89e43eecbd8c
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 ac54bc121e1f491b70d71ac234b8e0f76f79d7ad
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Apr 25 10:00:43 2019 +0200

    Revert "locking/lockdep: Add debug_locks check in __lock_downgrade()"
    
    This reverts commit 0e0f7b30721233ce610bde2395a8e58ff7771475 which was
    commit 71492580571467fb7177aade19c18ce7486267f5 upstream.
    
    Tetsuo rightly points out that the backport here is incorrect, as it
    touches the __lock_set_class function instead of the intended
    __lock_downgrade function.
    
    Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Cc: Waiman Long <longman@redhat.com>
    Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c1862566176250bae343a5cee617a5ce41efa54
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sat Oct 27 09:10:48 2018 -0700

    i2c-hid: properly terminate i2c_hid_dmi_desc_override_table[] array
    
    commit b59dfdaef173677b0b7e10f375226c0a1114fd20 upstream.
    
    Commit 9ee3e06610fd ("HID: i2c-hid: override HID descriptors for certain
    devices") added a new dmi_system_id quirk table to override certain HID
    report descriptors for some systems that lack them.
    
    But the table wasn't properly terminated, causing the dmi matching to
    walk off into la-la-land, and starting to treat random data as dmi
    descriptor pointers, causing boot-time oopses if you were at all
    unlucky.
    
    Terminate the array.
    
    We really should have some way to just statically check that arrays that
    should be terminated by an empty entry actually are so.  But the HID
    people really should have caught this themselves, rather than have me
    deal with an oops during the merge window.  Tssk, tssk.
    
    Cc: Julian Sax <jsbc@gmx.de>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Ambrož Bizjak <abizjak.pro@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52dde1160f17c42bca85f1365227a69b2c6aa9e8
Author: Katsuhiro Suzuki <katsuhiro@katsuster.net>
Date:   Tue Sep 11 01:39:32 2018 +0900

    ASoC: rockchip: add missing INTERLEAVED PCM attribute
    
    commit 24d6638302b48328a58c13439276d4531af4ca7d upstream.
    
    This patch adds SNDRV_PCM_INFO_INTERLEAVED into PCM hardware info.
    
    Signed-off-by: Katsuhiro Suzuki <katsuhiro@katsuster.net>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a782f8475715d6dc61f892127d4fb8e5f0775ac4
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Sep 25 10:55:59 2018 -0300

    tools include: Adopt linux/bits.h
    
    commit ba4aa02b417f08a0bee5e7b8ed70cac788a7c854 upstream.
    
    So that we reduce the difference of tools/include/linux/bitops.h to the
    original kernel file, include/linux/bitops.h, trying to remove the need
    to define BITS_PER_LONG, to avoid clashes with asm/bitsperlong.h.
    
    And the things removed from tools/include/linux/bitops.h are really in
    linux/bits.h, so that we can have a copy and then
    tools/perf/check_headers.sh will tell us when new stuff gets added to
    linux/bits.h so that we can check if it is useful and if any adjustment
    needs to be done to the tools/{include,arch}/ copies.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-y1sqyydvfzo0bjjoj4zsl562@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6580376fe81093d3a796b7e8b8c3c0f9e620f89c
Author: Matteo Croce <mcroce@redhat.com>
Date:   Mon Mar 18 02:32:36 2019 +0100

    percpu: stop printing kernel addresses
    
    commit 00206a69ee32f03e6f40837684dcbe475ea02266 upstream.
    
    Since commit ad67b74d2469d9b8 ("printk: hash addresses printed with %p"),
    at boot "____ptrval____" is printed instead of actual addresses:
    
        percpu: Embedded 38 pages/cpu @(____ptrval____) s124376 r0 d31272 u524288
    
    Instead of changing the print to "%px", and leaking kernel addresses,
    just remove the print completely, cfr. e.g. commit 071929dbdd865f77
    ("arm64: Stop printing the virtual memory layout").
    
    Signed-off-by: Matteo Croce <mcroce@redhat.com>
    Signed-off-by: Dennis Zhou <dennis@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a6f2ea0c3dd3de75cc344fe8d216457287a2ab2
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 16 15:25:00 2019 +0200

    ALSA: info: Fix racy addition/deletion of nodes
    
    commit 8c2f870890fd28e023b0fcf49dcee333f2c8bad7 upstream.
    
    The ALSA proc helper manages the child nodes in a linked list, but its
    addition and deletion is done without any lock.  This leads to a
    corruption if they are operated concurrently.  Usually this isn't a
    problem because the proc entries are added sequentially in the driver
    probe procedure itself.  But the card registrations are done often
    asynchronously, and the crash could be actually reproduced with
    syzkaller.
    
    This patch papers over it by protecting the link addition and deletion
    with the parent's mutex.  There is "access" mutex that is used for the
    file access, and this can be reused for this purpose as well.
    
    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 1343fd8f9629ef1e040bdb84626ae69382272741
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Thu Apr 18 17:50:20 2019 -0700

    mm/vmstat.c: fix /proc/vmstat format for CONFIG_DEBUG_TLBFLUSH=y CONFIG_SMP=n
    
    commit e8277b3b52240ec1caad8e6df278863e4bf42eac upstream.
    
    Commit 58bc4c34d249 ("mm/vmstat.c: skip NR_TLB_REMOTE_FLUSH* properly")
    depends on skipping vmstat entries with empty name introduced in
    7aaf77272358 ("mm: don't show nr_indirectly_reclaimable in
    /proc/vmstat") but reverted in b29940c1abd7 ("mm: rename and change
    semantics of nr_indirectly_reclaimable_bytes").
    
    So skipping no longer works and /proc/vmstat has misformatted lines " 0".
    
    This patch simply shows debug counters "nr_tlb_remote_*" for UP.
    
    Link: http://lkml.kernel.org/r/155481488468.467.4295519102880913454.stgit@buzz
    Fixes: 58bc4c34d249 ("mm/vmstat.c: skip NR_TLB_REMOTE_FLUSH* properly")
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Roman Gushchin <guro@fb.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 628c99a836dde71a4e415859359b7ebecdb3d363
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 c3edd427d5389ca46734c343662cdba1b3048f12
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 c21bcc2352e954202798588c41cd76c43073d207
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Tue Apr 23 12:04:23 2019 -0700

    Revert "kbuild: use -Oz instead of -Os when using clang"
    
    commit a75bb4eb9e565b9f5115e2e8c07377ce32cbe69a upstream.
    
    The clang option -Oz enables *aggressive* optimization for size,
    which doesn't necessarily result in smaller images, but can have
    negative impact on performance. Switch back to the less aggressive
    -Os.
    
    This reverts commit 6748cb3c299de1ffbe56733647b01dbcc398c419.
    
    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c36862e8be8e45094024e7384a7b441779f34cb
Author: Yue Haibing <yuehaibing@huawei.com>
Date:   Tue Apr 23 16:05:18 2019 +0300

    tpm: Fix the type of the return value in calc_tpm2_event_size()
    
    commit b9d0a85d6b2e76630cfd4c475ee3af4109bfd87a upstream
    
    calc_tpm2_event_size() has an invalid signature because
    it returns a 'size_t' where as its signature says that
    it returns 'int'.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 4d23cc323cdb ("tpm: add securityfs support for TPM 2.0 firmware event log")
    Suggested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Yue Haibing <yuehaibing@huawei.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: James Morris <james.morris@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 18af9b7b91380825ac398ff3b94fac4e0621c5cc
Author: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date:   Fri Feb 8 18:30:59 2019 +0200

    tpm/tpm_i2c_atmel: Return -E2BIG when the transfer is incomplete
    
    [ Upstream commit 442601e87a4769a8daba4976ec3afa5222ca211d ]
    
    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 7de43cb71116ab13adaf1f57a72edb6757ca57d0
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Thu Nov 22 13:28:42 2018 +0900

    modpost: file2alias: check prototype of handler
    
    [ Upstream commit f880eea68fe593342fa6e09be9bb661f3c297aec ]
    
    Use specific prototype instead of an opaque pointer so that the
    compiler can catch function prototype mismatch.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Reviewed-by: Mathieu Malaterre <malat@debian.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aa0e8cc9d7a89bb0c23435ec1b62eac46b1f4984
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Thu Nov 22 13:28:41 2018 +0900

    modpost: file2alias: go back to simple devtable lookup
    
    [ Upstream commit ec91e78d378cc5d4b43805a1227d8e04e5dfa17d ]
    
    Commit e49ce14150c6 ("modpost: use linker section to generate table.")
    was not so cool as we had expected first; it ended up with ugly section
    hacks when commit dd2a3acaecd7 ("mod/file2alias: make modpost compile
    on darwin again") came in.
    
    Given a certain degree of unknowledge about the link stage of host
    programs, I really want to see simple, stupid table lookup so that
    this works in the same way regardless of the underlying executable
    format.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Acked-by: Mathieu Malaterre <malat@debian.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 87eadc0b8c2a574c3e48aa0d15e1318a6a24f654
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu Nov 15 15:53:43 2018 +0200

    mmc: sdhci: Handle auto-command errors
    
    [ Upstream commit af849c86109d79222e549826068bbf4e7f9a2472 ]
    
    If the host controller supports auto-commands then enable the auto-command
    error interrupt and handle it. In the case of auto-CMD23, the error is
    treated the same as manual CMD23 error. In the case of auto-CMD12,
    commands-during-transfer are not permitted, so the error handling is
    treated the same as a data error.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ba8a6c055677ef22c43fd31b6ac0b27998be36f9
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu Nov 15 15:53:42 2018 +0200

    mmc: sdhci: Rename SDHCI_ACMD12_ERR and SDHCI_INT_ACMD12ERR
    
    [ Upstream commit 869f8a69bb3a4aec4eb914a330d4ba53a9eed495 ]
    
    The SDHCI_ACMD12_ERR register is used for auto-CMD23 and auto-CMD12
    errors, as is the SDHCI_INT_ACMD12ERR interrupt bit. Rename them to
    SDHCI_AUTO_CMD_STATUS and SDHCI_INT_AUTO_CMD_ERR respectively.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2be40b73b29921e5c7f2e3a11ceaa31c508326c
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu Nov 15 15:53:41 2018 +0200

    mmc: sdhci: Fix data command CRC error handling
    
    [ Upstream commit 4bf780996669280171c9cd58196512849b93434e ]
    
    Existing data command CRC error handling is non-standard and does not work
    with some Intel host controllers. Specifically, the assumption that the host
    controller will continue operating normally after the error interrupt,
    is not valid. Change the driver to handle the error in the same manner
    as a data CRC error, taking care to ensure that the data line reset is
    done for single or multi-block transfers, and it is done before
    unmapping DMA.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit be608583d9c4910877d7553d4240e998818c2d70
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Apr 22 16:08:26 2019 -0700

    nfit/ars: Avoid stale ARS results
    
    commit 78153dd45e7e0596ba32b15d02bda08e1513111e upstream.
    
    Gate ARS result consumption on whether the OS issued start-ARS since the
    previous consumption. The BIOS may only clear its result buffers after a
    successful start-ARS.
    
    Fixes: 0caeef63e6d2 ("libnvdimm: Add a poison list and export badblocks")
    Cc: <stable@vger.kernel.org>
    Reported-by: Krzysztof Rusocki <krzysztof.rusocki@intel.com>
    Reported-by: Vishal Verma <vishal.l.verma@intel.com>
    Reviewed-by: Toshi Kani <toshi.kani@hpe.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 40221d56ae28eb0b3e86a482063b0e303903e397
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Apr 22 16:08:21 2019 -0700

    nfit/ars: Allow root to busy-poll the ARS state machine
    
    commit 5479b2757f26fe9908fc341d105b2097fe820b6f upstream.
    
    The ARS implementation implements exponential back-off on the poll
    interval to prevent high-frequency access to the DIMM / platform
    interface. Depending on when the ARS completes the poll interval may
    exceed the completion event by minutes. Allow root to reset the timeout
    each time it probes the status. A one-second timeout is still enforced,
    but root can otherwise can control the poll interval.
    
    Fixes: bc6ba8085842 ("nfit, address-range-scrub: rework and simplify ARS...")
    Cc: <stable@vger.kernel.org>
    Reported-by: Erwin Tsaur <erwin.tsaur@oracle.com>
    Reviewed-by: Toshi Kani <toshi.kani@hpe.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc18c2593635364f0c71f76f8fc395bee33954ab
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Apr 22 16:08:16 2019 -0700

    nfit/ars: Introduce scrub_flags
    
    commit e34b8252a3d2893ca55c82dbfcdaa302fa03d400 upstream.
    
    In preparation for introducing new flags to gate whether ARS results are
    stale, or poll the completion state, convert the existing flags to an
    unsigned long with enumerated values. This conversion allows the flags
    to be atomically updated outside of ->init_mutex.
    
    Reviewed-by: Toshi Kani <toshi.kani@hpe.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 82a13a006ed5412fd817419e60113b7c922b21ff
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Apr 22 16:08:10 2019 -0700

    nfit/ars: Remove ars_start_flags
    
    commit 317a992ab9266b86b774b9f6b0f87eb4f59879a1 upstream.
    
    The ars_start_flags property of 'struct acpi_nfit_desc' is no longer
    used since ARS_REQ_SHORT and ARS_REQ_LONG were added.
    
    Reviewed-by: Toshi Kani <toshi.kani@hpe.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd37fd46b4857a787571c3153bfa64d0ae28a407
Author: Chang-An Chen <chang-an.chen@mediatek.com>
Date:   Fri Mar 29 10:59:09 2019 +0800

    timers/sched_clock: Prevent generic sched_clock wrap caused by tick_freeze()
    
    commit 3f2552f7e9c5abef2775c53f7af66532f8bf65bc upstream.
    
    tick_freeze() introduced by suspend-to-idle in commit 124cf9117c5f ("PM /
    sleep: Make it possible to quiesce timers during suspend-to-idle") uses
    timekeeping_suspend() instead of syscore_suspend() during
    suspend-to-idle. As a consequence generic sched_clock will keep going
    because sched_clock_suspend() and sched_clock_resume() are not invoked
    during suspend-to-idle which can result in a generic sched_clock wrap.
    
    On a ARM system with suspend-to-idle enabled, sched_clock is registered
    as "56 bits at 13MHz, resolution 76ns, wraps every 4398046511101ns", which
    means the real wrapping duration is 8796093022202ns.
    
    [  134.551779] suspend-to-idle suspend (timekeeping_suspend())
    [ 1204.912239] suspend-to-idle resume (timekeeping_resume())
    ......
    [ 1206.912239] suspend-to-idle suspend (timekeeping_suspend())
    [ 5880.502807] suspend-to-idle resume (timekeeping_resume())
    ......
    [ 6000.403724] suspend-to-idle suspend (timekeeping_suspend())
    [ 8035.753167] suspend-to-idle resume  (timekeeping_resume())
    ......
    [ 8795.786684] (2)[321:charger_thread]......
    [ 8795.788387] (2)[321:charger_thread]......
    [    0.057226] (0)[0:swapper/0]......
    [    0.061447] (2)[0:swapper/2]......
    
    sched_clock was not stopped during suspend-to-idle, and sched_clock_poll
    hrtimer was not expired because timekeeping_suspend() was invoked during
    suspend-to-idle. It makes sched_clock wrap at kernel time 8796s.
    
    To prevent this, invoke sched_clock_suspend() and sched_clock_resume() in
    tick_freeze() together with timekeeping_suspend() and timekeeping_resume().
    
    Fixes: 124cf9117c5f (PM / sleep: Make it possible to quiesce timers during suspend-to-idle)
    Signed-off-by: Chang-An Chen <chang-an.chen@mediatek.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Matthias Brugger <matthias.bgg@gmail.com>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Corey Minyard <cminyard@mvista.com>
    Cc: <linux-mediatek@lists.infradead.org>
    Cc: <linux-arm-kernel@lists.infradead.org>
    Cc: Stanley Chu <stanley.chu@mediatek.com>
    Cc: <kuohong.wang@mediatek.com>
    Cc: <freddy.hsin@mediatek.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1553828349-8914-1-git-send-email-chang-an.chen@mediatek.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5680b0635cdab1a1afb4f2078226584e008008b0
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sun Apr 14 19:51:06 2019 +0200

    x86/speculation: Prevent deadlock on ssb_state::lock
    
    commit 2f5fb19341883bb6e37da351bc3700489d8506a7 upstream.
    
    Mikhail reported a lockdep splat related to the AMD specific ssb_state
    lock:
    
      CPU0                       CPU1
      lock(&st->lock);
                                 local_irq_disable();
                                 lock(&(&sighand->siglock)->rlock);
                                 lock(&st->lock);
      <Interrupt>
         lock(&(&sighand->siglock)->rlock);
    
      *** DEADLOCK ***
    
    The connection between sighand->siglock and st->lock comes through seccomp,
    which takes st->lock while holding sighand->siglock.
    
    Make sure interrupts are disabled when __speculation_ctrl_update() is
    invoked via prctl() -> speculation_ctrl_update(). Add a lockdep assert to
    catch future offenders.
    
    Fixes: 1f50ddb4f418 ("x86/speculation: Handle HT correctly on AMD")
    Reported-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
    Cc: Thomas Lendacky <thomas.lendacky@amd.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/alpine.DEB.2.21.1904141948200.4917@nanos.tec.linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90e17512f1e43a67008082d0380bdc8a689c6c9b
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Tue Apr 2 12:44:58 2019 -0700

    perf/x86: Fix incorrect PEBS_REGS
    
    commit 9d5dcc93a6ddfc78124f006ccd3637ce070ef2fc upstream.
    
    PEBS_REGS used as mask for the supported registers for large PEBS.
    However, the mask cannot filter the sample_regs_user/sample_regs_intr
    correctly.
    
    (1ULL << PERF_REG_X86_*) should be used to replace PERF_REG_X86_*, which
    is only the index.
    
    Rename PEBS_REGS to PEBS_GP_REGS, because the mask is only for general
    purpose registers.
    
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@vger.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: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: acme@kernel.org
    Cc: jolsa@kernel.org
    Fixes: 2fe1bc1f501d ("perf/x86: Enable free running PEBS for REGS_USER/INTR")
    Link: https://lkml.kernel.org/r/20190402194509.2832-2-kan.liang@linux.intel.com
    [ Renamed it to PEBS_GP_REGS - as 'GPRS' is used elsewhere ;-) ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 293926b37013c0b9204d110eaaad9a4a5467d24b
Author: Andi Kleen <ak@linux.intel.com>
Date:   Fri Mar 29 17:47:43 2019 -0700

    x86/cpu/bugs: Use __initconst for 'const' init data
    
    commit 1de7edbb59c8f1b46071f66c5c97b8a59569eb51 upstream.
    
    Some of the recently added const tables use __initdata which causes section
    attribute conflicts.
    
    Use __initconst instead.
    
    Fixes: fa1202ef2243 ("x86/speculation: Add command line control")
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190330004743.29541-9-andi@firstfloor.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f45829e6250a84350e38402cc4dc2b5e3a9ea82e
Author: Kim Phillips <kim.phillips@amd.com>
Date:   Thu Mar 21 21:15:22 2019 +0000

    perf/x86/amd: Add event map for AMD Family 17h
    
    commit 3fe3331bb285700ab2253dbb07f8e478fcea2f1b upstream.
    
    Family 17h differs from prior families by:
    
     - Does not support an L2 cache miss event
     - It has re-enumerated PMC counters for:
       - L2 cache references
       - front & back end stalled cycles
    
    So we add a new amd_f17h_perfmon_event_map[] so that the generic
    perf event names will resolve to the correct h/w events on
    family 17h and above processors.
    
    Reference sections 2.1.13.3.3 (stalls) and 2.1.13.3.6 (L2):
    
      https://www.amd.com/system/files/TechDocs/54945_PPR_Family_17h_Models_00h-0Fh.pdf
    
    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    Cc: <stable@vger.kernel.org> # v4.9+
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Janakarajan Natarajan <Janakarajan.Natarajan@amd.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Martin Liška <mliska@suse.cz>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Pu Wen <puwen@hygon.cn>
    Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Fixes: e40ed1542dd7 ("perf/x86: Add perf support for AMD family-17h processors")
    [ Improved the formatting a bit. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba407222f563af8cfc69c5ae5607899a039f8be2
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu Apr 11 14:54:40 2019 -0500

    drm/amdgpu/gmc9: fix VM_L2_CNTL3 programming
    
    commit 1925e7d3d4677e681cc2e878c2bdbeaee988c8e2 upstream.
    
    Got accidently dropped when 2+1 level support was added.
    
    Fixes: 6a42fd6fbf534096 ("drm/amdgpu: implement 2+1 PD support for Raven v3")
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39cad03c4360b72d4d4adda4be1b718c24d0af44
Author: Felix Fietkau <nbd@nbd.name>
Date:   Fri Mar 1 14:48:37 2019 +0100

    mac80211: do not call driver wake_tx_queue op during reconfig
    
    commit 4856bfd230985e43e84c26473c91028ff0a533bd upstream.
    
    There are several scenarios in which mac80211 can call drv_wake_tx_queue
    after ieee80211_restart_hw has been called and has not yet completed.
    Driver private structs are considered uninitialized until mac80211 has
    uploaded the vifs, stations and keys again, so using private tx queue
    data during that time is not safe.
    
    The driver can also not rely on drv_reconfig_complete to figure out when
    it is safe to accept drv_wake_tx_queue calls again, because it is only
    called after all tx queues are woken again.
    
    To fix this, bail out early in drv_wake_tx_queue if local->in_reconfig
    is set.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 852de0d53d1443404b00c6e7dc6f15adc68aec1d
Author: Vijayakumar Durai <vijayakumar.durai1@vivint.com>
Date:   Wed Mar 27 11:03:17 2019 +0100

    rt2x00: do not increment sequence number while re-transmitting
    
    commit 746ba11f170603bf1eaade817553a6c2e9135bbe upstream.
    
    Currently rt2x00 devices retransmit the management frames with
    incremented sequence number if hardware is assigning the sequence.
    
    This is HW bug fixed already for non-QOS data frames, but it should
    be fixed for management frames except beacon.
    
    Without fix retransmitted frames have wrong SN:
    
     AlphaNet_e8:fb:36 Vivotek_52:31:51 Authentication, SN=1648, FN=0, Flags=........C Frame is not being retransmitted 1648 1
     AlphaNet_e8:fb:36 Vivotek_52:31:51 Authentication, SN=1649, FN=0, Flags=....R...C Frame is being retransmitted 1649 1
     AlphaNet_e8:fb:36 Vivotek_52:31:51 Authentication, SN=1650, FN=0, Flags=....R...C Frame is being retransmitted 1650 1
    
    With the fix SN stays correctly the same:
    
     88:6a:e3:e8:f9:a2 8c:f5:a3:88:76:87 Authentication, SN=1450, FN=0, Flags=........C
     88:6a:e3:e8:f9:a2 8c:f5:a3:88:76:87 Authentication, SN=1450, FN=0, Flags=....R...C
     88:6a:e3:e8:f9:a2 8c:f5:a3:88:76:87 Authentication, SN=1450, FN=0, Flags=....R...C
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Vijayakumar Durai <vijayakumar.durai1@vivint.com>
    [sgruszka: simplify code, change comments and changelog]
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23a926e5edd940b7311e0c511caa4b45eaf6b59f
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 426e2a8024c23b3a664250b46e2ab0604c0a0a09
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sun Feb 24 01:50:20 2019 +0900

    kprobes: Mark ftrace mcount handler functions nokprobe
    
    commit fabe38ab6b2bd9418350284c63825f13b8a6abba upstream.
    
    Mark ftrace mcount handler functions nokprobe since
    probing on these functions with kretprobe pushes
    return address incorrectly on kretprobe shadow stack.
    
    Reported-by: Francis Deslauriers <francis.deslauriers@efficios.com>
    Tested-by: Andrea Righi <righi.andrea@gmail.com>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Acked-by: Steven Rostedt <rostedt@goodmis.org>
    Acked-by: Steven Rostedt (VMware) <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/155094062044.6137.6419622920568680640.stgit@devbox
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fab567a270b8fb2f2b80c00b5c8c8106d377be8
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 5105fc758bdc4f7bb330248f1e2d2ea3b704421d
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 96800ba9e565ab752774cd88328f96aed28a1436
Author: Christian König <christian.koenig@amd.com>
Date:   Tue Apr 2 09:26:52 2019 +0200

    drm/ttm: fix out-of-bounds read in ttm_put_pages() v2
    
    commit a66477b0efe511d98dde3e4aaeb189790e6f0a39 upstream.
    
    When ttm_put_pages() tries to figure out whether it's dealing with
    transparent hugepages, it just reads past the bounds of the pages array
    without a check.
    
    v2: simplify the test if enough pages are left in the array (Christian).
    
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Fixes: 5c42c64f7d54 ("drm/ttm: fix the fix for huge compound pages")
    Cc: stable@vger.kernel.org
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
    Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
    Reviewed-by: Huang Rui <ray.huang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbe5cff932295f2468524bf6ffe109a9d0849178
Author: Eric Biggers <ebiggers@google.com>
Date:   Sun Mar 31 13:04:11 2019 -0700

    crypto: x86/poly1305 - fix overflow during partial reduction
    
    commit 678cce4019d746da6c680c48ba9e6d417803e127 upstream.
    
    The x86_64 implementation of Poly1305 produces the wrong result on some
    inputs because poly1305_4block_avx2() incorrectly assumes that when
    partially reducing the accumulator, the bits carried from limb 'd4' to
    limb 'h0' fit in a 32-bit integer.  This is true for poly1305-generic
    which processes only one block at a time.  However, it's not true for
    the AVX2 implementation, which processes 4 blocks at a time and
    therefore can produce intermediate limbs about 4x larger.
    
    Fix it by making the relevant calculations use 64-bit arithmetic rather
    than 32-bit.  Note that most of the carries already used 64-bit
    arithmetic, but the d4 -> h0 carry was different for some reason.
    
    To be safe I also made the same change to the corresponding SSE2 code,
    though that only operates on 1 or 2 blocks at a time.  I don't think
    it's really needed for poly1305_block_sse2(), but it doesn't hurt
    because it's already x86_64 code.  It *might* be needed for
    poly1305_2block_sse2(), but overflows aren't easy to reproduce there.
    
    This bug was originally detected by my patches that improve testmgr to
    fuzz algorithms against their generic implementation.  But also add a
    test vector which reproduces it directly (in the AVX2 case).
    
    Fixes: b1ccc8f4b631 ("crypto: poly1305 - Add a four block AVX2 variant for x86_64")
    Fixes: c70f4abef07a ("crypto: poly1305 - Add a SSE2 SIMD variant for x86_64")
    Cc: <stable@vger.kernel.org> # v4.3+
    Cc: Martin Willi <martin@strongswan.org>
    Cc: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Reviewed-by: Martin Willi <martin@strongswan.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dacdbc115d23f1e4dbc091440bd5cdcdc01173b6
Author: Corey Minyard <cminyard@mvista.com>
Date:   Wed Apr 3 15:58:16 2019 -0500

    ipmi: fix sleep-in-atomic in free_user at cleanup SRCU user->release_barrier
    
    commit 3b9a907223d7f6b9d1dadea29436842ae9bcd76d upstream.
    
    free_user() could be called in atomic context.
    
    This patch pushed the free operation off into a workqueue.
    
    Example:
    
     BUG: sleeping function called from invalid context at kernel/workqueue.c:2856
     in_atomic(): 1, irqs_disabled(): 0, pid: 177, name: ksoftirqd/27
     CPU: 27 PID: 177 Comm: ksoftirqd/27 Not tainted 4.19.25-3 #1
     Hardware name: AIC 1S-HV26-08/MB-DPSB04-06, BIOS IVYBV060 10/21/2015
     Call Trace:
      dump_stack+0x5c/0x7b
      ___might_sleep+0xec/0x110
      __flush_work+0x48/0x1f0
      ? try_to_del_timer_sync+0x4d/0x80
      _cleanup_srcu_struct+0x104/0x140
      free_user+0x18/0x30 [ipmi_msghandler]
      ipmi_free_recv_msg+0x3a/0x50 [ipmi_msghandler]
      deliver_response+0xbd/0xd0 [ipmi_msghandler]
      deliver_local_response+0xe/0x30 [ipmi_msghandler]
      handle_one_recv_msg+0x163/0xc80 [ipmi_msghandler]
      ? dequeue_entity+0xa0/0x960
      handle_new_recv_msgs+0x15c/0x1f0 [ipmi_msghandler]
      tasklet_action_common.isra.22+0x103/0x120
      __do_softirq+0xf8/0x2d7
      run_ksoftirqd+0x26/0x50
      smpboot_thread_fn+0x11d/0x1e0
      kthread+0x103/0x140
      ? sort_range+0x20/0x20
      ? kthread_destroy_worker+0x40/0x40
      ret_from_fork+0x1f/0x40
    
    Fixes: 77f8269606bf ("ipmi: fix use-after-free of user->release_barrier.rda")
    
    Reported-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Cc: stable@vger.kernel.org # 5.0
    Cc: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 3e1b3e4d3c83a925e9c6fcd5aeed8713225b4a37
Author: Suthikulpanit, Suravee <Suravee.Suthikulpanit@amd.com>
Date:   Wed Mar 20 08:12:28 2019 +0000

    Revert "svm: Fix AVIC incomplete IPI emulation"
    
    commit 4a58038b9e420276157785afa0a0bbb4b9bc2265 upstream.
    
    This reverts commit bb218fbcfaaa3b115d4cd7a43c0ca164f3a96e57.
    
    As Oren Twaig pointed out the old discussion:
    
      https://patchwork.kernel.org/patch/8292231/
    
    that the change coud potentially cause an extra IPI to be sent to
    the destination vcpu because the AVIC hardware already set the IRR bit
    before the incomplete IPI #VMEXIT with id=1 (target vcpu is not running).
    Since writting to ICR and ICR2 will also set the IRR. If something triggers
    the destination vcpu to get scheduled before the emulation finishes, then
    this could result in an additional IPI.
    
    Also, the issue mentioned in the commit bb218fbcfaaa was misdiagnosed.
    
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Reported-by: Oren Twaig <oren@scalemp.com>
    Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee4b8e266229b061ff8d03f0ed8764ac5f8098b6
Author: Saurav Kashyap <skashyap@marvell.com>
Date:   Thu Apr 18 03:40:12 2019 -0700

    Revert "scsi: fcoe: clear FC_RP_STARTED flags when receiving a LOGO"
    
    commit 0228034d8e5915b98c33db35a98f5e909e848ae9 upstream.
    
    This patch clears FC_RP_STARTED flag during logoff, because of this
    re-login(flogi) didn't happen to the switch.
    
    This reverts commit 1550ec458e0cf1a40a170ab1f4c46e3f52860f65.
    
    Fixes: 1550ec458e0c ("scsi: fcoe: clear FC_RP_STARTED flags when receiving a LOGO")
    Cc: <stable@vger.kernel.org> # v4.18+
    Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
    Reviewed-by: Hannes Reinecke <hare@#suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1aa2682d0a98bb025f8dd29df11f978a249a81ba
Author: Jaesoo Lee <jalee@purestorage.com>
Date:   Tue Apr 9 17:02:22 2019 -0700

    scsi: core: set result when the command cannot be dispatched
    
    commit be549d49115422f846b6d96ee8fd7173a5f7ceb0 upstream.
    
    When SCSI blk-mq is enabled, there is a bug in handling errors in
    scsi_queue_rq.  Specifically, the bug is not setting result field of
    scsi_request correctly when the dispatch of the command has been
    failed. Since the upper layer code including the sg_io ioctl expects to
    receive any error status from result field of scsi_request, the error is
    silently ignored and this could cause data corruptions for some
    applications.
    
    Fixes: d285203cf647 ("scsi: add support for a blk-mq based I/O path.")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jaesoo Lee <jalee@purestorage.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f2ef0e8f9670f83b3fe7e620eb7ae98910ff627
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Thu Apr 4 20:53:28 2019 -0400

    vt: fix cursor when clearing the screen
    
    commit b2ecf00631362a83744e5ec249947620db5e240c upstream.
    
    The patch a6dbe4427559 ("vt: perform safe console erase in the right
    order") introduced a bug. The conditional do_update_region() was
    replaced by a call to update_region() that does contain the conditional
    already, but with unwanted extra side effects such as restoring the cursor
    drawing.
    
    In order to reproduce the bug:
    - use framebuffer console with the AMDGPU driver
    - type "links" to start the console www browser
    - press 'q' and space to exit links
    
    Now the cursor will be permanently visible in the center of the
    screen. It will stay there until something overwrites it.
    
    The bug goes away if we change update_region() back to the conditional
    do_update_region().
    
    [ nico: reworded changelog ]
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Reviewed-by: Nicolas Pitre <nico@fluxnic.net>
    Cc: stable@vger.kernel.org
    Fixes: a6dbe4427559 ("vt: perform safe console erase in the right order")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38b7f09a9e83da3d8d786429520aace041e1d29e
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Apr 1 13:25:10 2019 +0200

    serial: sh-sci: Fix HSCIF RX sampling point calculation
    
    commit ace965696da2611af759f0284e26342b7b6cec89 upstream.
    
    There are several issues with the formula used for calculating the
    deviation from the intended rate:
      1. While min_err and last_stop are signed, srr and baud are unsigned.
         Hence the signed values are promoted to unsigned, which will lead
         to a bogus value of deviation if min_err is negative,
      2. Srr is the register field value, which is one less than the actual
         sampling rate factor,
      3. The divisions do not use rounding.
    
    Fix this by casting unsigned variables to int, adding one to srr, and
    using a single DIV_ROUND_CLOSEST().
    
    Fixes: 63ba1e00f178a448 ("serial: sh-sci: Support for HSCIF RX sampling point adjustment")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Ulrich Hecht <uli+renesas@fpond.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de6d6b8902fb2d26a46d266841364c3bfa70dc41
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri Mar 29 10:10:26 2019 +0100

    serial: sh-sci: Fix HSCIF RX sampling point adjustment
    
    commit 6b87784b53592a90d21576be8eff688b56d93cce upstream.
    
    The calculation of the sampling point has min() and max() exchanged.
    Fix this by using the clamp() helper instead.
    
    Fixes: 63ba1e00f178a448 ("serial: sh-sci: Support for HSCIF RX sampling point adjustment")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Ulrich Hecht <uli+renesas@fpond.eu>
    Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Acked-by: Dirk Behme <dirk.behme@de.bosch.com>
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec96f65e121459eda46de186750a7e9646306288
Author: KT Liao <kt.liao@emc.com.tw>
Date:   Tue Mar 26 17:28:32 2019 -0700

    Input: elan_i2c - add hardware ID for multiple Lenovo laptops
    
    commit 738c06d0e4562e0acf9f2c7438a22b2d5afc67aa upstream.
    
    There are many Lenovo laptops which need elan_i2c support, this patch adds
    relevant IDs to the Elan driver so that touchpads are recognized.
    
    Signed-off-by: KT Liao <kt.liao@emc.com.tw>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b50e435df2d8b9a1d3e956e1c767dfc7e30a441b
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 4171b6ee932828ad2c8258f4a0a84a2d1c05c896
Author: Hui Wang <hui.wang@canonical.com>
Date:   Wed Apr 17 16:10:32 2019 +0800

    ALSA: hda/realtek - add two more pin configuration sets to quirk table
    
    commit b26e36b7ef36a8a3a147b1609b2505f8a4ecf511 upstream.
    
    We have two Dell laptops which have the codec 10ec0236 and 10ec0256
    respectively, the headset mic on them can't work, need to apply the
    quirk of ALC255_FIXUP_DELL1_MIC_NO_PRESENCE. So adding their pin
    configurations in the pin quirk table.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e78a1fb8d1d0948aafac07465779e821d9dda2e
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 09f9bacae11874c6abe368fab7b093dd33ef11ea
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Mon Apr 15 12:43:01 2019 +0100

    staging: comedi: ni_usb6501: Fix use of uninitialized mutex
    
    commit 660cf4ce9d0f3497cc7456eaa6d74c8b71d6282c upstream.
    
    If `ni6501_auto_attach()` returns an error, the core comedi module code
    will call `ni6501_detach()` to clean up.  If `ni6501_auto_attach()`
    successfully allocated the comedi device private data, `ni6501_detach()`
    assumes that a `struct mutex mut` contained in the private data has been
    initialized and uses it.  Unfortunately, there are a couple of places
    where `ni6501_auto_attach()` can return an error after allocating the
    device private data but before initializing the mutex, so this
    assumption is invalid.  Fix it by initializing the mutex just after
    allocating the private data in `ni6501_auto_attach()` before any other
    errors can be retturned.  Also move the call to `usb_set_intfdata()`
    just to keep the code a bit neater (either position for the call is
    fine).
    
    I believe this was the cause of the following syzbot crash report
    <https://syzkaller.appspot.com/bug?extid=cf4f2b6c24aff0a3edf6>:
    
    usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    usb 1-1: config 0 descriptor??
    usb 1-1: string descriptor 0 read error: -71
    comedi comedi0: Wrong number of endpoints
    ni6501 1-1:0.233: driver 'ni6501' 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: 585 Comm: kworker/0:3 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
     __mutex_lock_common kernel/locking/mutex.c:925 [inline]
     __mutex_lock+0xfe/0x12b0 kernel/locking/mutex.c:1072
     ni6501_detach+0x5b/0x110 drivers/staging/comedi/drivers/ni_usb6501.c:567
     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+cf4f2b6c24aff0a3edf6@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 edf2f548baa959e90f1a2f0fce737e18701070d5
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 1f01a970b8c2de057c7c1cf3afce3d116fb6645b
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 a1da981f66432d1d38c91cff0b19490b3bf7aace
Author: Christian Gromm <christian.gromm@microchip.com>
Date:   Tue Apr 2 13:39:57 2019 +0200

    staging: most: core: use device description as name
    
    commit 131ac62253dba79daf4a6d83ab12293d2b9863d3 upstream.
    
    This patch uses the device description to clearly identity a device
    attached to the bus. It is needed as the currently useed mdevX
    notation is not sufficiant in case more than one network
    interface controller is being used at the same time.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b007c64d860f55db1064e4e7a56cbbabe87d1cc9
Author: he, bo <bo.he@intel.com>
Date:   Wed Mar 6 10:32:20 2019 +0800

    io: accel: kxcjk1013: restore the range after resume.
    
    commit fe2d3df639a7940a125a33d6460529b9689c5406 upstream.
    
    On some laptops, kxcjk1013 is powered off when system enters S3. We need
    restore the range regiter during resume. Otherwise, the sensor doesn't
    work properly after S3.
    
    Signed-off-by: he, bo <bo.he@intel.com>
    Signed-off-by: Chen, Hu <hu1.chen@intel.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.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 bbe0bed4647ccc135a31c378b1257e9af6f9c4e9
Author: Fabrice Gasnier <fabrice.gasnier@st.com>
Date:   Mon Mar 25 14:01:23 2019 +0100

    iio: core: fix a possible circular locking dependency
    
    commit 7f75591fc5a123929a29636834d1bcb8b5c9fee3 upstream.
    
    This fixes a possible circular locking dependency detected warning seen
    with:
    - CONFIG_PROVE_LOCKING=y
    - consumer/provider IIO devices (ex: "voltage-divider" consumer of "adc")
    
    When using the IIO consumer interface, e.g. iio_channel_get(), the consumer
    device will likely call iio_read_channel_raw() or similar that rely on
    'info_exist_lock' mutex.
    
    typically:
    ...
            mutex_lock(&chan->indio_dev->info_exist_lock);
            if (chan->indio_dev->info == NULL) {
                    ret = -ENODEV;
                    goto err_unlock;
            }
            ret = do_some_ops()
    err_unlock:
            mutex_unlock(&chan->indio_dev->info_exist_lock);
            return ret;
    ...
    
    Same mutex is also hold in iio_device_unregister().
    
    The following deadlock warning happens when:
    - the consumer device has called an API like iio_read_channel_raw()
      at least once.
    - the consumer driver is unregistered, removed (unbind from sysfs)
    
    ======================================================
    WARNING: possible circular locking dependency detected
    4.19.24 #577 Not tainted
    ------------------------------------------------------
    sh/372 is trying to acquire lock:
    (kn->count#30){++++}, at: kernfs_remove_by_name_ns+0x3c/0x84
    
    but task is already holding lock:
    (&dev->info_exist_lock){+.+.}, at: iio_device_unregister+0x18/0x60
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #1 (&dev->info_exist_lock){+.+.}:
           __mutex_lock+0x70/0xa3c
           mutex_lock_nested+0x1c/0x24
           iio_read_channel_raw+0x1c/0x60
           iio_read_channel_info+0xa8/0xb0
           dev_attr_show+0x1c/0x48
           sysfs_kf_seq_show+0x84/0xec
           seq_read+0x154/0x528
           __vfs_read+0x2c/0x15c
           vfs_read+0x8c/0x110
           ksys_read+0x4c/0xac
           ret_fast_syscall+0x0/0x28
           0xbedefb60
    
    -> #0 (kn->count#30){++++}:
           lock_acquire+0xd8/0x268
           __kernfs_remove+0x288/0x374
           kernfs_remove_by_name_ns+0x3c/0x84
           remove_files+0x34/0x78
           sysfs_remove_group+0x40/0x9c
           sysfs_remove_groups+0x24/0x34
           device_remove_attrs+0x38/0x64
           device_del+0x11c/0x360
           cdev_device_del+0x14/0x2c
           iio_device_unregister+0x24/0x60
           release_nodes+0x1bc/0x200
           device_release_driver_internal+0x1a0/0x230
           unbind_store+0x80/0x130
           kernfs_fop_write+0x100/0x1e4
           __vfs_write+0x2c/0x160
           vfs_write+0xa4/0x17c
           ksys_write+0x4c/0xac
           ret_fast_syscall+0x0/0x28
           0xbe906840
    
    other info that might help us debug this:
    
     Possible unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(&dev->info_exist_lock);
                                   lock(kn->count#30);
                                   lock(&dev->info_exist_lock);
      lock(kn->count#30);
    
     *** DEADLOCK ***
    ...
    
    cdev_device_del() can be called without holding the lock. It should be safe
    as info_exist_lock prevents kernelspace consumers to use the exported
    routines during/after provider removal. cdev_device_del() is for userspace.
    
    Help to reproduce:
    See example: Documentation/devicetree/bindings/iio/afe/voltage-divider.txt
    sysv {
            compatible = "voltage-divider";
            io-channels = <&adc 0>;
            output-ohms = <22>;
            full-ohms = <222>;
    };
    
    First, go to iio:deviceX for the "voltage-divider", do one read:
    $ cd /sys/bus/iio/devices/iio:deviceX
    $ cat in_voltage0_raw
    
    Then, unbind the consumer driver. It triggers above deadlock warning.
    $ cd /sys/bus/platform/drivers/iio-rescale/
    $ echo sysv > unbind
    
    Note I don't actually expect stable will pick this up all the
    way back into IIO being in staging, but if's probably valid that
    far back.
    
    Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
    Fixes: ac917a81117c ("staging:iio:core set the iio_dev.info pointer to null on unregister")
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98171e1947b6ce06fb7a439c0d8c599e0c090fcd
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 36971130bb2f815fddae17cfe02ae5fed9b3ff56
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Wed Feb 20 17:11:32 2019 +0200

    iio: Fix scan mask selection
    
    commit 20ea39ef9f2f911bd01c69519e7d69cfec79fde3 upstream.
    
    The trialmask is expected to have all bits set to 0 after allocation.
    Currently kmalloc_array() is used which does not zero the memory and so
    random bits are set. This results in random channels being enabled when
    they shouldn't. Replace kmalloc_array() with kcalloc() which has the same
    interface but zeros the memory.
    
    Note the fix is actually required earlier than the below fixes tag, but
    will require a manual backport due to move from kmalloc to kmalloc_array.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Fixes commit 057ac1acdfc4 ("iio: Use kmalloc_array() in iio_scan_mask_set()").
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e47edde91325efde88e937e1ccc5883c32b5a31
Author: Jean-Francois Dagenais <jeff.dagenais@gmail.com>
Date:   Wed Mar 6 15:56:06 2019 -0500

    iio: dac: mcp4725: add missing powerdown bits in store eeprom
    
    commit 06003531502d06bc89d32528f6ec96bf978790f9 upstream.
    
    When issuing the write DAC register and write eeprom command, the two
    powerdown bits (PD0 and PD1) are assumed by the chip to be present in
    the bytes sent. Leaving them at 0 implies "powerdown disabled" which is
    a different state that the current one. By adding the current state of
    the powerdown in the i2c write, the chip will correctly power-on exactly
    like as it is at the moment of store_eeprom call.
    
    This is documented in MCP4725's datasheet, FIGURE 6-2: "Write Commands
    for DAC Input Register and EEPROM" and MCP4726's datasheet, FIGURE 6-3:
    "Write All Memory Command".
    
    Signed-off-by: Jean-Francois Dagenais <jeff.dagenais@gmail.com>
    Acked-by: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ad173ea6c3a906c80c9e1afb3960c859d9ab037
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 42eae0cff22a75823abfe198fce4418461b7cc6b
Author: Gwendal Grignou <gwendal@chromium.org>
Date:   Wed Mar 13 12:40:02 2019 +0100

    iio: cros_ec: Fix the maths for gyro scale calculation
    
    commit 3d02d7082e5823598090530c3988a35f69689943 upstream.
    
    Calculation did not use IIO_DEGREE_TO_RAD and implemented a variant to
    avoid precision loss as we aim a nano value. The offset added to avoid
    rounding error, though, doesn't give us a close result to the expected
    value. E.g.
    
    For 1000dps, the result should be:
    
        (1000 * pi ) / 180 >> 15 ~= 0.000532632218
    
    But with current calculation we get
    
        $ cat scale
        0.000547890
    
    Fix the calculation by just doing the maths involved for a nano value
    
       val * pi * 10e12 / (180 * 2^15)
    
    so we get a closer result.
    
        $ cat scale
        0.000532632
    
    Fixes: c14dca07a31d ("iio: cros_ec_sensors: add ChromeOS EC Contiguous Sensors driver")
    Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
    Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.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 adfb0f0b17a3b1bdef44a5249def720534d7ac33
Author: Mike Looijmans <mike.looijmans@topic.nl>
Date:   Wed Mar 6 08:31:48 2019 +0100

    iio:chemical:bme680: Fix SPI read interface
    
    commit 73f3bc6da506711302bb67572440eb84b1ec4a2c upstream.
    
    The SPI interface implementation was completely broken.
    
    When using the SPI interface, there are only 7 address bits, the upper bit
    is controlled by a page select register. The core needs access to both
    ranges, so implement register read/write for both regions. The regmap
    paging functionality didn't agree with a register that needs to be read
    and modified, so I implemented a custom paging algorithm.
    
    This fixes that the device wouldn't even probe in SPI mode.
    
    The SPI interface then isn't different from I2C, merged them into the core,
    and the I2C/SPI named registers are no longer needed.
    
    Implemented register value caching for the registers to reduce the I2C/SPI
    data transfers considerably.
    
    The calibration set reads as all zeroes until some undefined point in time,
    and I couldn't determine what makes it valid. The datasheet mentions these
    registers but does not provide any hints on when they become valid, and they
    aren't even enumerated in the memory map. So check the calibration and
    retry reading it from the device after each measurement until it provides
    something valid.
    
    Despite the size this is suitable for a stable backport given that
    it seems the SPI support never worked.
    
    Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
    Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor");
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3117576a73f6b2df88d96fb6ae0402bba0c24b3
Author: Mike Looijmans <mike.looijmans@topic.nl>
Date:   Wed Mar 6 08:31:47 2019 +0100

    iio:chemical:bme680: Fix, report temperature in millidegrees
    
    commit 9436f45dd53595e21566a8c6627411077dfdb776 upstream.
    
    The standard unit for temperature is millidegrees Celcius. Adapt the
    driver to report in millidegrees instead of degrees.
    
    Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
    Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor");
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7ee6890caa59f71c4af92814afd4b4cb7dafcc9
Author: Mike Looijmans <mike.looijmans@topic.nl>
Date:   Wed Feb 13 08:41:47 2019 +0100

    iio/gyro/bmg160: Use millidegrees for temperature scale
    
    commit 40a7198a4a01037003c7ca714f0d048a61e729ac upstream.
    
    Standard unit for temperature is millidegrees Celcius, whereas this driver
    was reporting in degrees. Fix the scale factor in the driver.
    
    Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bd3fd46ec23375740e7f29bafce4a11f6cff1d2
Author: Sergey Larin <cerg2010cerg2010@mail.ru>
Date:   Sat Mar 2 19:54:55 2019 +0300

    iio: gyro: mpu3050: fix chip ID reading
    
    commit 409a51e0a4a5f908763191fae2c29008632eb712 upstream.
    
    According to the datasheet, the last bit of CHIP_ID register controls
    I2C bus, and the first one is unused. Handle this correctly.
    
    Note that there are chips out there that have a value such that
    the id check currently fails.
    
    Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f3e66b155f02dd90a30c9307f4900256eafa3f1
Author: Mircea Caprioru <mircea.caprioru@analog.com>
Date:   Wed Feb 20 13:08:20 2019 +0200

    staging: iio: ad7192: Fix ad7193 channel address
    
    commit 7ce0f216221856a17fc4934b39284678a5fef2e9 upstream.
    
    This patch fixes the differential channels addresses for the ad7193.
    
    Signed-off-by: Mircea Caprioru <mircea.caprioru@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 c54d1258c637ac4318cab995be0965b866cb8e3b
Author: Leonard Pollak <leonardp@tr-host.de>
Date:   Wed Feb 13 11:19:52 2019 +0100

    Staging: iio: meter: fixed typo
    
    commit 0a8a29be499cbb67df79370aaf5109085509feb8 upstream.
    
    This patch fixes an obvious typo, which will cause erroneously returning the Peak
    Voltage instead of the Peak Current.
    
    Signed-off-by: Leonard Pollak <leonardp@tr-host.de>
    Cc: <Stable@vger.kernel.org>
    Acked-by: Michael Hennerich <michael.hennerich@analog.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9e34935a3514d083cc2787f874fee786c775c6c
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Wed Apr 3 16:06:42 2019 +0200

    KVM: x86: svm: make sure NMI is injected after nmi_singlestep
    
    commit 99c221796a810055974b54c02e8f53297e48d146 upstream.
    
    I noticed that apic test from kvm-unit-tests always hangs on my EPYC 7401P,
    the hanging test nmi-after-sti is trying to deliver 30000 NMIs and tracing
    shows that we're sometimes able to deliver a few but never all.
    
    When we're trying to inject an NMI we may fail to do so immediately for
    various reasons, however, we still need to inject it so enable_nmi_window()
    arms nmi_singlestep mode. #DB occurs as expected, but we're not checking
    for pending NMIs before entering the guest and unless there's a different
    event to process, the NMI will never get delivered.
    
    Make KVM_REQ_EVENT request on the vCPU from db_interception() to make sure
    pending NMIs are checked and possibly injected.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18cf09a817714d7702f4dfa0956abefd4b4e2f63
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Tue Apr 2 08:10:47 2019 -0700

    KVM: x86: Don't clear EFER during SMM transitions for 32-bit vCPU
    
    commit 8f4dc2e77cdfaf7e644ef29693fa229db29ee1de upstream.
    
    Neither AMD nor Intel CPUs have an EFER field in the legacy SMRAM save
    state area, i.e. don't save/restore EFER across SMM transitions.  KVM
    somewhat models this, e.g. doesn't clear EFER on entry to SMM if the
    guest doesn't support long mode.  But during RSM, KVM unconditionally
    clears EFER so that it can get back to pure 32-bit mode in order to
    start loading CRs with their actual non-SMM values.
    
    Clear EFER only when it will be written when loading the non-SMM state
    so as to preserve bits that can theoretically be set on 32-bit vCPUs,
    e.g. KVM always emulates EFER_SCE.
    
    And because CR4.PAE is cleared only to play nice with EFER, wrap that
    code in the long mode check as well.  Note, this may result in a
    compiler warning about cr4 being consumed uninitialized.  Re-read CR4
    even though it's technically unnecessary, as doing so allows for more
    readable code and RSM emulation is not a performance critical path.
    
    Fixes: 660a5d517aaab ("KVM: x86: save/load state on SMM switch")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2fcee5eaae6ee1c2ccbe629ffd46c6674a98824c
Author: Ronnie Sahlberg <lsahlber@redhat.com>
Date:   Wed Apr 10 07:47:22 2019 +1000

    cifs: fix handle leak in smb2_query_symlink()
    
    commit e6d0fb7b34f264f72c33053558a360a6a734905e upstream.
    
    If we enter smb2_query_symlink() for something that is not a symlink
    and where the SMB2_open() would succeed we would never end up
    closing this handle and would thus leak a handle on the server.
    
    Fix this by immediately calling SMB2_close() on successfull open.
    
    Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c69330a855ab4342d304f67f8c1e7d1fa2686bec
Author: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
Date:   Sat Apr 6 15:47:39 2019 +0800

    cifs: Fix use-after-free in SMB2_read
    
    commit 088aaf17aa79300cab14dbee2569c58cfafd7d6e upstream.
    
    There is a KASAN use-after-free:
    BUG: KASAN: use-after-free in SMB2_read+0x1136/0x1190
    Read of size 8 at addr ffff8880b4e45e50 by task ln/1009
    
    Should not release the 'req' because it will use in the trace.
    
    Fixes: eccb4422cf97 ("smb3: Add ftrace tracepoints for improved SMB3 debugging")
    
    Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org> 4.18+
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fb89b43b65fcd35f15d982712904b96fc64c68a
Author: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
Date:   Sat Apr 6 15:47:38 2019 +0800

    cifs: Fix use-after-free in SMB2_write
    
    commit 6a3eb3360667170988f8a6477f6686242061488a upstream.
    
    There is a KASAN use-after-free:
    BUG: KASAN: use-after-free in SMB2_write+0x1342/0x1580
    Read of size 8 at addr ffff8880b6a8e450 by task ln/4196
    
    Should not release the 'req' because it will use in the trace.
    
    Fixes: eccb4422cf97 ("smb3: Add ftrace tracepoints for improved SMB3 debugging")
    
    Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org> 4.18+
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8092ecc306d81186a64cda42411121f4d35aaff4
Author: Aurelien Aptel <aaptel@suse.com>
Date:   Fri Mar 29 10:49:12 2019 +0100

    CIFS: keep FileInfo handle live during oplock break
    
    commit b98749cac4a695f084a5ff076f4510b23e353ecd upstream.
    
    In the oplock break handler, writing pending changes from pages puts
    the FileInfo handle. If the refcount reaches zero it closes the handle
    and waits for any oplock break handler to return, thus causing a deadlock.
    
    To prevent this situation:
    
    * We add a wait flag to cifsFileInfo_put() to decide whether we should
      wait for running/pending oplock break handlers
    
    * We keep an additionnal reference of the SMB FileInfo handle so that
      for the rest of the handler putting the handle won't close it.
      - The ref is bumped everytime we queue the handler via the
        cifs_queue_oplock_break() helper.
      - The ref is decremented at the end of the handler
    
    This bug was triggered by xfstest 464.
    
    Also important fix to address the various reports of
    oops in smb2_push_mandatory_locks
    
    Signed-off-by: Aurelien Aptel <aaptel@suse.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e2081f29392f878aa9e1bd19b976c7c8b82bad3
Author: Peter Oskolkov <posk@google.com>
Date:   Tue Apr 23 10:25:33 2019 -0700

    net: IP6 defrag: use rbtrees in nf_conntrack_reasm.c
    
    [ Upstream commit 997dd96471641e147cb2c33ad54284000d0f5e35 ]
    
    Currently, IPv6 defragmentation code drops non-last fragments that
    are smaller than 1280 bytes: see
    commit 0ed4229b08c1 ("ipv6: defrag: drop non-last frags smaller than min mtu")
    
    This behavior is not specified in IPv6 RFCs and appears to break
    compatibility with some IPv6 implemenations, as reported here:
    https://www.spinics.net/lists/netdev/msg543846.html
    
    This patch re-uses common IP defragmentation queueing and reassembly
    code in IP6 defragmentation in nf_conntrack, removing the 1280 byte
    restriction.
    
    Signed-off-by: Peter Oskolkov <posk@google.com>
    Reported-by: Tom Herbert <tom@herbertland.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Florian Westphal <fw@strlen.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 684685326ab0cf8d71ae83ff614c748876f24938
Author: Peter Oskolkov <posk@google.com>
Date:   Tue Apr 23 10:25:32 2019 -0700

    net: IP6 defrag: use rbtrees for IPv6 defrag
    
    [ Upstream commit d4289fcc9b16b89619ee1c54f829e05e56de8b9a ]
    
    Currently, IPv6 defragmentation code drops non-last fragments that
    are smaller than 1280 bytes: see
    commit 0ed4229b08c1 ("ipv6: defrag: drop non-last frags smaller than min mtu")
    
    This behavior is not specified in IPv6 RFCs and appears to break
    compatibility with some IPv6 implemenations, as reported here:
    https://www.spinics.net/lists/netdev/msg543846.html
    
    This patch re-uses common IP defragmentation queueing and reassembly
    code in IPv6, removing the 1280 byte restriction.
    
    v2: change handling of overlaps to match that of upstream.
    
    Signed-off-by: Peter Oskolkov <posk@google.com>
    Reported-by: Tom Herbert <tom@herbertland.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Florian Westphal <fw@strlen.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 702ddf862d9d74e670849df659b8706fd6878205
Author: Peter Oskolkov <posk@google.com>
Date:   Tue Apr 23 10:25:31 2019 -0700

    net: IP defrag: encapsulate rbtree defrag code into callable functions
    
    [ Upstream commit c23f35d19db3b36ffb9e04b08f1d91565d15f84f ]
    
    This is a refactoring patch: without changing runtime behavior,
    it moves rbtree-related code from IPv4-specific files/functions
    into .h/.c defrag files shared with IPv6 defragmentation code.
    
    v2: make handling of overlapping packets match upstream.
    
    Signed-off-by: Peter Oskolkov <posk@google.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Florian Westphal <fw@strlen.de>
    Cc: Tom Herbert <tom@herbertland.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e24be8e38cd7fcc85174595690b20d153f8e204d
Author: Toke Høiland-Jørgensen <toke@redhat.com>
Date:   Fri Apr 5 15:01:59 2019 +0200

    sch_cake: Simplify logic in cake_select_tin()
    
    [ Upstream commit 4976e3c683f328bc6f2edef555a4ffee6524486f ]
    
    The logic in cake_select_tin() was getting a bit hairy, and it turns out we
    can simplify it quite a bit. This also allows us to get rid of one of the
    two diffserv parsing functions, which has the added benefit that
    already-zeroed DSCP fields won't get re-written.
    
    Suggested-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d9051a4680abf7316b440278fe52b9437503e90
Author: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
Date:   Mon Apr 1 19:36:34 2019 -0700

    nfp: flower: remove vlan CFI bit from push vlan action
    
    [ Upstream commit 42cd5484a22f1a1b947e21e2af65fa7dab09d017 ]
    
    We no longer set CFI when pushing vlan tags, therefore we remove
    the CFI bit from push vlan.
    
    Fixes: 1a1e586f54bf ("nfp: add basic action capabilities to flower offloads")
    Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
    Signed-off-by: Louis Peens <louis.peens@netronome.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06f7d2182f9d850e762a8870633d10e99cfc10a8
Author: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
Date:   Mon Apr 1 19:36:33 2019 -0700

    nfp: flower: replace CFI with vlan present
    
    [ Upstream commit f7ee799a51ddbcc205ef615fe424fb5084e9e0aa ]
    
    Replace vlan CFI bit with a vlan present bit that indicates the
    presence of a vlan tag. Previously the driver incorrectly assumed
    that an vlan id of 0 is not matchable, therefore we indicate vlan
    presence with a vlan present bit.
    
    Fixes: 5571e8c9f241 ("nfp: extend flower matching capabilities")
    Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
    Signed-off-by: Louis Peens <louis.peens@netronome.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbce0413f783a5a9d49005a2187201df8eb15a38
Author: Toke Høiland-Jørgensen <toke@redhat.com>
Date:   Thu Apr 4 15:01:33 2019 +0200

    sch_cake: Make sure we can write the IP header before changing DSCP bits
    
    [ Upstream commit c87b4ecdbe8db27867a7b7f840291cd843406bd7 ]
    
    There is not actually any guarantee that the IP headers are valid before we
    access the DSCP bits of the packets. Fix this using the same approach taken
    in sch_dsmark.
    
    Reported-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 490532225e20f2c3ef763c7da2c4e090ac42318a
Author: Toke Høiland-Jørgensen <toke@redhat.com>
Date:   Thu Apr 4 15:01:33 2019 +0200

    sch_cake: Use tc_skb_protocol() helper for getting packet protocol
    
    [ Upstream commit b2100cc56fca8c51d28aa42a9f1fbcb2cf351996 ]
    
    We shouldn't be using skb->protocol directly as that will miss cases with
    hardware-accelerated VLAN tags. Use the helper instead to get the right
    protocol number.
    
    Reported-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f72cb2ab51d242158b6b963365d70f88844b983
Author: Jonathan Lemon <jonathan.lemon@gmail.com>
Date:   Sun Apr 14 14:21:29 2019 -0700

    route: Avoid crash from dereferencing NULL rt->from
    
    [ Upstream commit 9c69a13205151c0d801de9f9d83a818e6e8f60ec ]
    
    When __ip6_rt_update_pmtu() is called, rt->from is RCU dereferenced, but is
    never checked for null - rt6_flush_exceptions() may have removed the entry.
    
    [ 1913.989004] RIP: 0010:ip6_rt_cache_alloc+0x13/0x170
    [ 1914.209410] Call Trace:
    [ 1914.214798]  <IRQ>
    [ 1914.219226]  __ip6_rt_update_pmtu+0xb0/0x190
    [ 1914.228649]  ip6_tnl_xmit+0x2c2/0x970 [ip6_tunnel]
    [ 1914.239223]  ? ip6_tnl_parse_tlv_enc_lim+0x32/0x1a0 [ip6_tunnel]
    [ 1914.252489]  ? __gre6_xmit+0x148/0x530 [ip6_gre]
    [ 1914.262678]  ip6gre_tunnel_xmit+0x17e/0x3c7 [ip6_gre]
    [ 1914.273831]  dev_hard_start_xmit+0x8d/0x1f0
    [ 1914.283061]  sch_direct_xmit+0xfa/0x230
    [ 1914.291521]  __qdisc_run+0x154/0x4b0
    [ 1914.299407]  net_tx_action+0x10e/0x1f0
    [ 1914.307678]  __do_softirq+0xca/0x297
    [ 1914.315567]  irq_exit+0x96/0xa0
    [ 1914.322494]  smp_apic_timer_interrupt+0x68/0x130
    [ 1914.332683]  apic_timer_interrupt+0xf/0x20
    [ 1914.341721]  </IRQ>
    
    Fixes: a68886a69180 ("net/ipv6: Make from in rt6_info rcu protected")
    Signed-off-by: Jonathan Lemon <jonathan.lemon@gmail.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Reviewed-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d2499b0860024c7cd973a8dee375105ffd34156
Author: Saeed Mahameed <saeedm@mellanox.com>
Date:   Tue Mar 19 01:05:41 2019 -0700

    net/mlx5: FPGA, tls, idr remove on flow delete
    
    [ Upstream commit df3a8344d404a810b4aadbf19b08c8232fbaa715 ]
    
    Flow is kfreed on mlx5_fpga_tls_del_flow but kept in the idr data
    structure, this is risky and can cause use-after-free, since the
    idr_remove is delayed until tls_send_teardown_cmd completion.
    
    Instead of delaying idr_remove, in this patch we do it on
    mlx5_fpga_tls_del_flow, before actually kfree(flow).
    
    Added synchronize_rcu before kfree(flow)
    
    Fixes: ab412e1dd7db ("net/mlx5: Accel, add TLS rx offload routines")
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 785833b9eee027c0d31dfe96225e243f13110939
Author: Jakub Kicinski <jakub.kicinski@netronome.com>
Date:   Mon Apr 8 17:59:50 2019 -0700

    net/tls: prevent bad memory access in tls_is_sk_tx_device_offloaded()
    
    [ Upstream commit b4f47f3848eb70986f75d06112af7b48b7f5f462 ]
    
    Unlike '&&' operator, the '&' does not have short-circuit
    evaluation semantics.  IOW both sides of the operator always
    get evaluated.  Fix the wrong operator in
    tls_is_sk_tx_device_offloaded(), which would lead to
    out-of-bounds access for for non-full sockets.
    
    Fixes: 4799ac81e52a ("tls: Add rx inline crypto offload")
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
    Reviewed-by: Simon Horman <simon.horman@netronome.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7cfddb81a81727362e0e4d3aea03af7d7d96d73f
Author: Saeed Mahameed <saeedm@mellanox.com>
Date:   Tue Mar 19 22:09:05 2019 -0700

    net/mlx5: FPGA, tls, hold rcu read lock a bit longer
    
    [ Upstream commit 31634bf5dcc418b5b2cacd954394c0c4620db6a2 ]
    
    To avoid use-after-free, hold the rcu read lock until we are done copying
    flow data into the command buffer.
    
    Fixes: ab412e1dd7db ("net/mlx5: Accel, add TLS rx offload routines")
    Reported-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1785bea2f3419507827b009b483a53fde80b928
Author: Matteo Croce <mcroce@redhat.com>
Date:   Thu Apr 11 12:26:33 2019 +0200

    net: thunderx: don't allow jumbo frames with XDP
    
    [ Upstream commit 1f227d16083b2e280b7dde4ca78883d75593f2fd ]
    
    The thunderx driver forbids to load an eBPF program if the MTU is too high,
    but this can be circumvented by loading the eBPF, then raising the MTU.
    
    Fix this by limiting the MTU if an eBPF program is already loaded.
    
    Fixes: 05c773f52b96e ("net: thunderx: Add basic XDP support")
    Signed-off-by: Matteo Croce <mcroce@redhat.com>
    Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9de22b997fe40a0f783db73df5574d20242c6f09
Author: Matteo Croce <mcroce@redhat.com>
Date:   Thu Apr 11 12:26:32 2019 +0200

    net: thunderx: raise XDP MTU to 1508
    
    [ Upstream commit 5ee15c101f29e0093ffb5448773ccbc786eb313b ]
    
    The thunderx driver splits frames bigger than 1530 bytes to multiple
    pages, making impossible to run an eBPF program on it.
    This leads to a maximum MTU of 1508 if QinQ is in use.
    
    The thunderx driver forbids to load an eBPF program if the MTU is higher
    than 1500 bytes. Raise the limit to 1508 so it is possible to use L2
    protocols which need some more headroom.
    
    Fixes: 05c773f52b96e ("net: thunderx: Add basic XDP support")
    Signed-off-by: Matteo Croce <mcroce@redhat.com>
    Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ba5ec69e1a7ecfc662050b55e77078208dea9cc
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 8a430e56a6485267a1b2d3747209d26c54d1a34b
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 b82df42059fb90862505eb071dd0dd225a2791df
Author: Jason Wang <jasowang@redhat.com>
Date:   Tue Apr 9 12:10:25 2019 +0800

    vhost: reject zero size iova range
    
    [ Upstream commit 813dbeb656d6c90266f251d8bd2b02d445afa63f ]
    
    We used to accept zero size iova range which will lead a infinite loop
    in translate_desc(). Fixing this by failing the request in this case.
    
    Reported-by: syzbot+d21e6e297322a900c128@syzkaller.appspotmail.com
    Fixes: 6b1e6cc7 ("vhost: new device IOTLB API")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 242e5746cb477bdb4c59d0f2d3c5a3e1c0a10629
Author: Hoang Le <hoang.h.le@dektech.com.au>
Date:   Tue Apr 9 14:59:24 2019 +0700

    tipc: missing entries in name table of publications
    
    [ Upstream commit d1841533e54876f152a30ac398a34f47ad6590b1 ]
    
    When binding multiple services with specific type 1Ki, 2Ki..,
    this leads to some entries in the name table of publications
    missing when listed out via 'tipc name show'.
    
    The problem is at identify zero last_type conditional provided
    via netlink. The first is initial 'type' when starting name table
    dummping. The second is continuously with zero type (node state
    service type). Then, lookup function failure to finding node state
    service type in next iteration.
    
    To solve this, adding more conditional to marked as dirty type and
    lookup correct service type for the next iteration instead of select
    the first service as initial 'type' zero.
    
    Acked-by: Jon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: Hoang Le <hoang.h.le@dektech.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a60a47206a31b92af27ca65b66089b21c5b66d78
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Mon Apr 8 16:45:17 2019 +0800

    team: set slave to promisc if team is already in promisc mode
    
    [ Upstream commit 43c2adb9df7ddd6560fd3546d925b42cef92daa0 ]
    
    After adding a team interface to bridge, the team interface will enter
    promisc mode. Then if we add a new slave to team0, the slave will keep
    promisc off. Fix it by setting slave to promisc on if team master is
    already in promisc mode, also do the same for allmulti.
    
    v2: add promisc and allmulti checking when delete ports
    
    Fixes: 3d249d4ca7d0 ("net: introduce ethernet teaming device")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6728c6174a47b8a04ceec89aca9e1195dee7ff6b
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 1cd8788368226016b70af2c1e7d46c1bdb4756c6
Author: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Date:   Tue Apr 9 11:47:20 2019 +0200

    net: fou: do not use guehdr after iptunnel_pull_offloads in gue_udp_recv
    
    [ Upstream commit 988dc4a9a3b66be75b30405a5494faf0dc7cffb6 ]
    
    gue tunnels run iptunnel_pull_offloads on received skbs. This can
    determine a possible use-after-free accessing guehdr pointer since
    the packet will be 'uncloned' running pskb_expand_head if it is a
    cloned gso skb (e.g if the packet has been sent though a veth device)
    
    Fixes: a09a4c8dd1ec ("tunnels: Remove encapsulation offloads on decap")
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2804598764f984a8c5cdee377a73e0bf86dc5dd4
Author: Yuya Kusakabe <yuya.kusakabe@gmail.com>
Date:   Tue Apr 16 10:22:28 2019 +0900

    net: Fix missing meta data in skb with vlan packet
    
    [ Upstream commit d85e8be2a5a02869f815dd0ac2d743deb4cd7957 ]
    
    skb_reorder_vlan_header() should move XDP meta data with ethernet header
    if XDP meta data exists.
    
    Fixes: de8f3a83b0a0 ("bpf: add meta pointer for direct access")
    Signed-off-by: Yuya Kusakabe <yuya.kusakabe@gmail.com>
    Signed-off-by: Takeru Hayasaka <taketarou2@gmail.com>
    Co-developed-by: Takeru Hayasaka <taketarou2@gmail.com>
    Reviewed-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 97fd88e04c8d724301839129b63ef663e9397a65
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 08b0b4f28008ae81fa8fdf06d679a9edd6005d88
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Thu Apr 11 13:56:39 2019 +0300

    net: bridge: fix per-port af_packet sockets
    
    [ Upstream commit 3b2e2904deb314cc77a2192f506f2fd44e3d10d0 ]
    
    When the commit below was introduced it changed two visible things:
     - the skb was no longer passed through the protocol handlers with the
       original device
     - the skb was passed up the stack with skb->dev = bridge
    
    The first change broke af_packet sockets on bridge ports. For example we
    use them for hostapd which listens for ETH_P_PAE packets on the ports.
    We discussed two possible fixes:
     - create a clone and pass it through NF_HOOK(), act on the original skb
       based on the result
     - somehow signal to the caller from the okfn() that it was called,
       meaning the skb is ok to be passed, which this patch is trying to
       implement via returning 1 from the bridge link-local okfn()
    
    Note that we rely on the fact that NF_QUEUE/STOLEN would return 0 and
    drop/error would return < 0 thus the okfn() is called only when the
    return was 1, so we signal to the caller that it was called by preserving
    the return value from nf_hook().
    
    Fixes: 8626c56c8279 ("bridge: fix potential use-after-free when hook returns QUEUE or STOLEN verdict")
    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 bcb964012d1b17544f80a096bb4d6f8cfd32357b
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Mon Apr 15 15:57:23 2019 -0500

    net: atm: Fix potential Spectre v1 vulnerabilities
    
    [ Upstream commit 899537b73557aafbdd11050b501cf54b4f5c45af ]
    
    arg is controlled by user-space, hence leading to a potential
    exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    net/atm/lec.c:715 lec_mcast_attach() warn: potential spectre issue 'dev_lec' [r] (local cap)
    
    Fix this by sanitizing arg before using it to index dev_lec.
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://lore.kernel.org/lkml/20180423164740.GY17484@dhcp22.suse.cz/
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fae6053d761122b272bdd5bca81561d7da306812
Author: Si-Wei Liu <si-wei.liu@oracle.com>
Date:   Mon Apr 8 19:45:27 2019 -0400

    failover: allow name change on IFF_UP slave interfaces
    
    [ Upstream commit 8065a779f17e94536a1c4dcee4f9d88011672f97 ]
    
    When a netdev appears through hot plug then gets enslaved by a failover
    master that is already up and running, the slave will be opened
    right away after getting enslaved. Today there's a race that userspace
    (udev) may fail to rename the slave if the kernel (net_failover)
    opens the slave earlier than when the userspace rename happens.
    Unlike bond or team, the primary slave of failover can't be renamed by
    userspace ahead of time, since the kernel initiated auto-enslavement is
    unable to, or rather, is never meant to be synchronized with the rename
    request from userspace.
    
    As the failover slave interfaces are not designed to be operated
    directly by userspace apps: IP configuration, filter rules with
    regard to network traffic passing and etc., should all be done on master
    interface. In general, userspace apps only care about the
    name of master interface, while slave names are less important as long
    as admin users can see reliable names that may carry
    other information describing the netdev. For e.g., they can infer that
    "ens3nsby" is a standby slave of "ens3", while for a
    name like "eth0" they can't tell which master it belongs to.
    
    Historically the name of IFF_UP interface can't be changed because
    there might be admin script or management software that is already
    relying on such behavior and assumes that the slave name can't be
    changed once UP. But failover is special: with the in-kernel
    auto-enslavement mechanism, the userspace expectation for device
    enumeration and bring-up order is already broken. Previously initramfs
    and various userspace config tools were modified to bypass failover
    slaves because of auto-enslavement and duplicate MAC address. Similarly,
    in case that users care about seeing reliable slave name, the new type
    of failover slaves needs to be taken care of specifically in userspace
    anyway.
    
    It's less risky to lift up the rename restriction on failover slave
    which is already UP. Although it's possible this change may potentially
    break userspace component (most likely configuration scripts or
    management software) that assumes slave name can't be changed while
    UP, it's relatively a limited and controllable set among all userspace
    components, which can be fixed specifically to listen for the rename
    events on failover slaves. Userspace component interacting with slaves
    is expected to be changed to operate on failover master interface
    instead, as the failover slave is dynamic in nature which may come and
    go at any point.  The goal is to make the role of failover slaves less
    relevant, and userspace components should only deal with failover master
    in the long run.
    
    Fixes: 30c8bd5aa8b2 ("net: Introduce generic failover module")
    Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
    Reviewed-by: Liran Alon <liran.alon@oracle.com>
    Acked-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a458eddc4c270a435c26f0d22c46da36cbf00d2
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>