commit 0ba3b3aac901aeee3ad638108cc353e396aafb0a
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Mar 28 18:23:05 2018 +0200

    Linux 4.15.14

commit 9c5ee9934c9032f384863aebae126b85c9af3119
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Wed Mar 7 22:10:01 2018 +0100

    bpf, x64: increase number of passes
    
    commit 6007b080d2e2adb7af22bf29165f0594ea12b34c upstream.
    
    In Cilium some of the main programs we run today are hitting 9 passes
    on x64's JIT compiler, and we've had cases already where we surpassed
    the limit where the JIT then punts the program to the interpreter
    instead, leading to insertion failures due to CONFIG_BPF_JIT_ALWAYS_ON
    or insertion failures due to the prog array owner being JITed but the
    program to insert not (both must have the same JITed/non-JITed property).
    
    One concrete case the program image shrunk from 12,767 bytes down to
    10,288 bytes where the image converged after 16 steps. I've measured
    that this took 340us in the JIT until it converges on my i7-6600U. Thus,
    increase the original limit we had from day one where the JIT covered
    cBPF only back then before we run into the case (as similar with the
    complexity limit) where we trip over this and hit program rejections.
    Also add a cond_resched() into the compilation loop, the JIT process
    runs without any locks and may sleep anyway.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18a9e4d888d61d204aa7b8baa6b95a28ddf9c19c
Author: Chenbo Feng <fengc@google.com>
Date:   Mon Mar 19 17:57:27 2018 -0700

    bpf: skip unnecessary capability check
    
    commit 0fa4fe85f4724fff89b09741c437cbee9cf8b008 upstream.
    
    The current check statement in BPF syscall will do a capability check
    for CAP_SYS_ADMIN before checking sysctl_unprivileged_bpf_disabled. This
    code path will trigger unnecessary security hooks on capability checking
    and cause false alarms on unprivileged process trying to get CAP_SYS_ADMIN
    access. This can be resolved by simply switch the order of the statement
    and CAP_SYS_ADMIN is not required anyway if unprivileged bpf syscall is
    allowed.
    
    Signed-off-by: Chenbo Feng <fengc@google.com>
    Acked-by: Lorenzo Colitti <lorenzo@google.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 700082a541656bbe73ad780e6edf3467893a0f3f
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Wed Mar 21 01:18:24 2018 +0100

    kbuild: disable clang's default use of -fmerge-all-constants
    
    commit 87e0d4f0f37fb0c8c4aeeac46fff5e957738df79 upstream.
    
    Prasad reported that he has seen crashes in BPF subsystem with netd
    on Android with arm64 in the form of (note, the taint is unrelated):
    
      [ 4134.721483] Unable to handle kernel paging request at virtual address 800000001
      [ 4134.820925] Mem abort info:
      [ 4134.901283]   Exception class = DABT (current EL), IL = 32 bits
      [ 4135.016736]   SET = 0, FnV = 0
      [ 4135.119820]   EA = 0, S1PTW = 0
      [ 4135.201431] Data abort info:
      [ 4135.301388]   ISV = 0, ISS = 0x00000021
      [ 4135.359599]   CM = 0, WnR = 0
      [ 4135.470873] user pgtable: 4k pages, 39-bit VAs, pgd = ffffffe39b946000
      [ 4135.499757] [0000000800000001] *pgd=0000000000000000, *pud=0000000000000000
      [ 4135.660725] Internal error: Oops: 96000021 [#1] PREEMPT SMP
      [ 4135.674610] Modules linked in:
      [ 4135.682883] CPU: 5 PID: 1260 Comm: netd Tainted: G S      W       4.14.19+ #1
      [ 4135.716188] task: ffffffe39f4aa380 task.stack: ffffff801d4e0000
      [ 4135.731599] PC is at bpf_prog_add+0x20/0x68
      [ 4135.741746] LR is at bpf_prog_inc+0x20/0x2c
      [ 4135.751788] pc : [<ffffff94ab7ad584>] lr : [<ffffff94ab7ad638>] pstate: 60400145
      [ 4135.769062] sp : ffffff801d4e3ce0
      [...]
      [ 4136.258315] Process netd (pid: 1260, stack limit = 0xffffff801d4e0000)
      [ 4136.273746] Call trace:
      [...]
      [ 4136.442494] 3ca0: ffffff94ab7ad584 0000000060400145 ffffffe3a01bf8f8 0000000000000006
      [ 4136.460936] 3cc0: 0000008000000000 ffffff94ab844204 ffffff801d4e3cf0 ffffff94ab7ad584
      [ 4136.479241] [<ffffff94ab7ad584>] bpf_prog_add+0x20/0x68
      [ 4136.491767] [<ffffff94ab7ad638>] bpf_prog_inc+0x20/0x2c
      [ 4136.504536] [<ffffff94ab7b5d08>] bpf_obj_get_user+0x204/0x22c
      [ 4136.518746] [<ffffff94ab7ade68>] SyS_bpf+0x5a8/0x1a88
    
    Android's netd was basically pinning the uid cookie BPF map in BPF
    fs (/sys/fs/bpf/traffic_cookie_uid_map) and later on retrieving it
    again resulting in above panic. Issue is that the map was wrongly
    identified as a prog! Above kernel was compiled with clang 4.0,
    and it turns out that clang decided to merge the bpf_prog_iops and
    bpf_map_iops into a single memory location, such that the two i_ops
    could then not be distinguished anymore.
    
    Reason for this miscompilation is that clang has the more aggressive
    -fmerge-all-constants enabled by default. In fact, clang source code
    has a comment about it in lib/AST/ExprConstant.cpp on why it is okay
    to do so:
    
      Pointers with different bases cannot represent the same object.
      (Note that clang defaults to -fmerge-all-constants, which can
      lead to inconsistent results for comparisons involving the address
      of a constant; this generally doesn't matter in practice.)
    
    The issue never appeared with gcc however, since gcc does not enable
    -fmerge-all-constants by default and even *explicitly* states in
    it's option description that using this flag results in non-conforming
    behavior, quote from man gcc:
    
      Languages like C or C++ require each variable, including multiple
      instances of the same variable in recursive calls, to have distinct
      locations, so using this option results in non-conforming behavior.
    
    There are also various clang bug reports open on that matter [1],
    where clang developers acknowledge the non-conforming behavior,
    and refer to disabling it with -fno-merge-all-constants. But even
    if this gets fixed in clang today, there are already users out there
    that triggered this. Thus, fix this issue by explicitly adding
    -fno-merge-all-constants to the kernel's Makefile to generically
    disable this optimization, since potentially other places in the
    kernel could subtly break as well.
    
    Note, there is also a flag called -fmerge-constants (not supported
    by clang), which is more conservative and only applies to strings
    and it's enabled in gcc's -O/-O2/-O3/-Os optimization levels. In
    gcc's code, the two flags -fmerge-{all-,}constants share the same
    variable internally, so when disabling it via -fno-merge-all-constants,
    then we really don't merge any const data (e.g. strings), and text
    size increases with gcc (14,927,214 -> 14,942,646 for vmlinux.o).
    
      $ gcc -fverbose-asm -O2 foo.c -S -o foo.S
        -> foo.S lists -fmerge-constants under options enabled
      $ gcc -fverbose-asm -O2 -fno-merge-all-constants foo.c -S -o foo.S
        -> foo.S doesn't list -fmerge-constants under options enabled
      $ gcc -fverbose-asm -O2 -fno-merge-all-constants -fmerge-constants foo.c -S -o foo.S
        -> foo.S lists -fmerge-constants under options enabled
    
    Thus, as a workaround we need to set both -fno-merge-all-constants
    *and* -fmerge-constants in the Makefile in order for text size to
    stay as is.
    
      [1] https://bugs.llvm.org/show_bug.cgi?id=18538
    
    Reported-by: Prasad Sodagudi <psodagud@codeaurora.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Chenbo Feng <fengc@google.com>
    Cc: Richard Smith <richard-llvm@metafoo.co.uk>
    Cc: Chandler Carruth <chandlerc@gmail.com>
    Cc: linux-kernel@vger.kernel.org
    Tested-by: Prasad Sodagudi <psodagud@codeaurora.org>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7674a71bc3848ee604bd714b0ab0a51c3ba76c4
Author: Liam Mark <lmark@codeaurora.org>
Date:   Fri Jan 26 09:48:18 2018 -0800

    staging: android: ion: Zero CMA allocated memory
    
    commit 6d79bd5bb6c79a9dba4842040c9adf39e7806330 upstream.
    
    Since commit 204f672255c2 ("staging: android: ion: Use CMA APIs directly")
    the CMA API is now used directly and therefore the allocated memory is no
    longer automatically zeroed.
    
    Explicitly zero CMA allocated memory to ensure that no data is exposed to
    userspace.
    
    Fixes: 204f672255c2 ("staging: android: ion: Use CMA APIs directly")
    Signed-off-by: Liam Mark <lmark@codeaurora.org>
    Acked-by: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8689b8bbae997a4afb22aabcfca7f864d4c820d
Author: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Date:   Mon Jan 1 19:54:43 2018 +0100

    iio: imu: st_lsm6dsx: introduce conf_lock mutex
    
    commit 335eaedce461c9092e133ce0c6247f5a0b0baf69 upstream.
    
    Add conf_lock mutex to prevent concurrent FIFO configuration update
    
    Fixes: 290a6ce11d93 (iio: imu: add support to lsm6dsx driver)
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0757dce219138ec69fd1df7a763715dbab7ee6c0
Author: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Date:   Mon Jan 1 19:54:42 2018 +0100

    iio: imu: st_lsm6dsx: fix endianness in st_lsm6dsx_read_oneshot()
    
    commit 7b9ebe428266fb7e0a6d769bb3ff3fcb6044b15e upstream.
    
    Apply le16_to_cpu() to data read from the sensor in order to take into
    account architecture endianness
    
    Fixes: 290a6ce11d93 (iio: imu: add support to lsm6dsx driver)
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7a6e26b331dddb926b04efb642514eafb9104da
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Tue Dec 5 11:57:27 2017 +0100

    iio: ABI: Fix name of timestamp sysfs file
    
    commit b9a3589332c2a25fb7edad25a26fcaada3209126 upstream.
    
    The name of the file is "current_timetamp_clock" not
    "timestamp_clock".
    
    Fixes: bc2b7dab629a ("iio:core: timestamping clock selection support")
    Cc: Gregor Boirie <gregor.boirie@parrot.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b844443b8e89ed27599ef94b869315ecdac8a3ed
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Tue Mar 13 11:51:34 2018 -0700

    perf/x86/intel/uncore: Fix multi-domain PCI CHA enumeration bug on Skylake servers
    
    commit 320b0651f32b830add6497fcdcfdcb6ae8c7b8a0 upstream.
    
    The number of CHAs is miscalculated on multi-domain PCI Skylake server systems,
    resulting in an uncore driver initialization error.
    
    Gary Kroening explains:
    
     "For systems with a single PCI segment, it is sufficient to look for the
      bus number to change in order to determine that all of the CHa's have
      been counted for a single socket.
    
      However, for multi PCI segment systems, each socket is given a new
      segment and the bus number does NOT change.  So looking only for the
      bus number to change ends up counting all of the CHa's on all sockets
      in the system.  This leads to writing CPU MSRs beyond a valid range and
      causes an error in ivbep_uncore_msr_init_box()."
    
    To fix this bug, query the number of CHAs from the CAPID6 register:
    it should read bits 27:0 in the CAPID6 register located at
    Device 30, Function 3, Offset 0x9C. These 28 bits form a bit vector
    of available LLC slices and the CHAs that manage those slices.
    
    Reported-by: Kroening, Gary <gary.kroening@hpe.com>
    Tested-by: Kroening, Gary <gary.kroening@hpe.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: 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: abanman@hpe.com
    Cc: dimitri.sivanich@hpe.com
    Cc: hpa@zytor.com
    Cc: mike.travis@hpe.com
    Cc: russ.anderson@hpe.com
    Fixes: cd34cd97b7b4 ("perf/x86/intel/uncore: Add Skylake server uncore support")
    Link: http://lkml.kernel.org/r/1520967094-13219-1-git-send-email-kan.liang@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 190e67640d2057926c1ea2a8b39f4189eda23c2d
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Sat Mar 17 14:52:16 2018 +0300

    perf/x86/intel: Don't accidentally clear high bits in bdw_limit_period()
    
    commit e5ea9b54a055619160bbfe527ebb7d7191823d66 upstream.
    
    We intended to clear the lowest 6 bits but because of a type bug we
    clear the high 32 bits as well.  Andi says that periods are rarely more
    than U32_MAX so this bug probably doesn't have a huge runtime impact.
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: 294fe0f52a44 ("perf/x86/intel: Add INST_RETIRED.ALL workarounds")
    Link: http://lkml.kernel.org/r/20180317115216.GB4035@mwanda
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a002966e849bde1ff9ae9e2748ce97389440df08
Author: Yonghong Song <yhs@fb.com>
Date:   Tue Mar 20 11:19:17 2018 -0700

    trace/bpf: remove helper bpf_perf_prog_read_value from tracepoint type programs
    
    commit f005afede992e265bb98534b86912bb669ccd0d2 upstream.
    
    Commit 4bebdc7a85aa ("bpf: add helper bpf_perf_prog_read_value")
    added helper bpf_perf_prog_read_value so that perf_event type program
    can read event counter and enabled/running time.
    This commit, however, introduced a bug which allows this helper
    for tracepoint type programs. This is incorrect as bpf_perf_prog_read_value
    needs to access perf_event through its bpf_perf_event_data_kern type context,
    which is not available for tracepoint type program.
    
    This patch fixed the issue by separating bpf_func_proto between tracepoint
    and perf_event type programs and removed bpf_perf_prog_read_value
    from tracepoint func prototype.
    
    Fixes: 4bebdc7a85aa ("bpf: add helper bpf_perf_prog_read_value")
    Reported-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Yonghong Song <yhs@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e623ff1aceff90e262c697201bb9739da611fe3c
Author: Song Liu <songliubraving@fb.com>
Date:   Mon Mar 5 21:55:04 2018 -0800

    perf/core: Fix ctx_event_type in ctx_resched()
    
    commit bd903afeb504db5655a45bb4cf86f38be5b1bf62 upstream.
    
    In ctx_resched(), EVENT_FLEXIBLE should be sched_out when EVENT_PINNED is
    added. However, ctx_resched() calculates ctx_event_type before checking
    this condition. As a result, pinned events will NOT get higher priority
    than flexible events.
    
    The following shows this issue on an Intel CPU (where ref-cycles can
    only use one hardware counter).
    
      1. First start:
           perf stat -C 0 -e ref-cycles  -I 1000
      2. Then, in the second console, run:
           perf stat -C 0 -e ref-cycles:D -I 1000
    
    The second perf uses pinned events, which is expected to have higher
    priority. However, because it failed in ctx_resched(). It is never
    run.
    
    This patch fixes this by calculating ctx_event_type after re-evaluating
    event_type.
    
    Reported-by: Ephraim Park <ephiepark@fb.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <jolsa@redhat.com>
    Cc: <kernel-team@fb.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: 487f05e18aa4 ("perf/core: Optimize event rescheduling on active contexts")
    Link: http://lkml.kernel.org/r/20180306055504.3283731-1-songliubraving@fb.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f736f6560e0469c2dfb55d2d76178c4072f6bd66
Author: Ilya Pronin <ipronin@twitter.com>
Date:   Mon Mar 5 22:43:53 2018 -0800

    perf stat: Fix CVS output format for non-supported counters
    
    commit 40c21898ba5372c14ef71717040529794a91ccc2 upstream.
    
    When printing stats in CSV mode, 'perf stat' appends extra separators
    when a counter is not supported:
    
    <not supported>,,L1-dcache-store-misses,mesos/bd442f34-2b4a-47df-b966-9b281f9f56fc,0,100.00,,,,
    
    Which causes a failure when parsing fields. The numbers of separators
    should be the same for each line, no matter if the counter is or not
    supported.
    
    Signed-off-by: Ilya Pronin <ipronin@twitter.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Link: http://lkml.kernel.org/r/20180306064353.31930-1-xiyou.wangcong@gmail.com
    Fixes: 92a61f6412d3 ("perf stat: Implement CSV metrics output")
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b42e3e5219999af44a8b54840d9ec2f3c812e85e
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Fri Mar 2 07:22:30 2018 -0800

    perf/x86/intel/uncore: Fix Skylake UPI event format
    
    commit 317660940fd9dddd3201c2f92e25c27902c753fa upstream.
    
    There is no event extension (bit 21) for SKX UPI, so
    use 'event' instead of 'event_ext'.
    
    Reported-by: Stephane Eranian <eranian@google.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: cd34cd97b7b4 ("perf/x86/intel/uncore: Add Skylake server uncore support")
    Link: http://lkml.kernel.org/r/1520004150-4855-1-git-send-email-kan.liang@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d4e27d30070dc70152fe241be05c791fab3d1b8
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Fri Jan 19 06:38:03 2018 -0800

    hwmon: (k10temp) Add temperature offset for Ryzen 1900X
    
    commit 6509614fdd2d05c6926d50901a45d5dfb852b715 upstream.
    
    Like the other CPUs from the same series, the 1900X has a
    temperature offset of 27 degrees C.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a0d6102cd024c2166e118d050a60157ba5a22f8
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Wed Feb 7 17:49:39 2018 -0800

    hwmon: (k10temp) Only apply temperature offset if result is positive
    
    commit aef17ca1271948ee57cc39b2493d31110cc42625 upstream.
    
    A user reports a really bad temperature on Ryzen 1950X.
    
    k10temp-pci-00cb
    Adapter: PCI adapter
    temp1: +4294948.3°C (high = +70.0°C)
    
    This will happen if the temperature reported by the chip is lower than
    the offset temperature. This has been seen in the field if "Sense MI Skew"
    and/or "Sense MI Offset" BIOS parameters were set to unexpected values.
    Let's report a temperature of 0 degrees C in that case.
    
    Fixes: 1b50b776355f ("hwmon: (k10temp) Add support for temperature offsets")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 591b6ad1ddbc2a91811f4d852ebee09f1ea6fa48
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Mar 19 14:08:11 2018 -0700

    x86/boot/64: Verify alignment of the LOAD segment
    
    commit c55b8550fa57ba4f5e507be406ff9fc2845713e8 upstream.
    
    Since the x86-64 kernel must be aligned to 2MB, refuse to boot the
    kernel if the alignment of the LOAD segment isn't a multiple of 2MB.
    
    Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
    Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: Eric Biederman <ebiederm@xmission.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/CAMe9rOrR7xSJgUfiCoZLuqWUwymRxXPoGBW38%2BpN%3D9g%2ByKNhZw@mail.gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3d1a5bc0e473b8a43d3afa521d70250e042596c
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Mar 19 13:57:46 2018 -0700

    x86/build/64: Force the linker to use 2MB page size
    
    commit e3d03598e8ae7d195af5d3d049596dec336f569f upstream.
    
    Binutils 2.31 will enable -z separate-code by default for x86 to avoid
    mixing code pages with data to improve cache performance as well as
    security.  To reduce x86-64 executable and shared object sizes, the
    maximum page size is reduced from 2MB to 4KB.  But x86-64 kernel must
    be aligned to 2MB.  Pass -z max-page-size=0x200000 to linker to force
    2MB page size regardless of the default page size used by linker.
    
    Tested with Linux kernel 4.15.6 on x86-64.
    
    Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
    Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: Eric Biederman <ebiederm@xmission.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/CAMe9rOp4_%3D_8twdpTyAP2DhONOCeaTOsniJLoppzhoNptL8xzA@mail.gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c42170a40fb42726cae09f901b61d17ab56a465
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Mar 20 12:16:59 2018 -0700

    kvm/x86: fix icebp instruction handling
    
    commit 32d43cd391bacb5f0814c2624399a5dad3501d09 upstream.
    
    The undocumented 'icebp' instruction (aka 'int1') works pretty much like
    'int3' in the absense of in-circuit probing equipment (except,
    obviously, that it raises #DB instead of raising #BP), and is used by
    some validation test-suites as such.
    
    But Andy Lutomirski noticed that his test suite acted differently in kvm
    than on bare hardware.
    
    The reason is that kvm used an inexact test for the icebp instruction:
    it just assumed that an all-zero VM exit qualification value meant that
    the VM exit was due to icebp.
    
    That is not unlike the guess that do_debug() does for the actual
    exception handling case, but it's purely a heuristic, not an absolute
    rule.  do_debug() does it because it wants to ascribe _some_ reasons to
    the #DB that happened, and an empty %dr6 value means that 'icebp' is the
    most likely casue and we have no better information.
    
    But kvm can just do it right, because unlike the do_debug() case, kvm
    actually sees the real reason for the #DB in the VM-exit interruption
    information field.
    
    So instead of relying on an inexact heuristic, just use the actual VM
    exit information that says "it was 'icebp'".
    
    Right now the 'icebp' instruction isn't technically documented by Intel,
    but that will hopefully change.  The special "privileged software
    exception" information _is_ actually mentioned in the Intel SDM, even
    though the cause of it isn't enumerated.
    
    Reported-by: Andy Lutomirski <luto@kernel.org>
    Tested-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab26ea17a6dc16c9c2c817a041442f736d786db4
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Feb 15 17:21:55 2018 +0100

    posix-timers: Protect posix clock array access against speculation
    
    commit 19b558db12f9f4e45a22012bae7b4783e62224da upstream.
    
    The clockid argument of clockid_to_kclock() comes straight from user space
    via various syscalls and is used as index into the posix_clocks array.
    
    Protect it against spectre v1 array out of bounds speculation. Remove the
    redundant check for !posix_clock[id] as this is another source for
    speculation and does not provide any advantage over the return
    posix_clock[id] path which returns NULL in that case anyway.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Dan Williams <dan.j.williams@intel.com>
    Cc: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: stable@vger.kernel.org
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: David Woodhouse <dwmw@amazon.co.uk>
    Link: https://lkml.kernel.org/r/alpine.DEB.2.21.1802151718320.1296@nanos.tec.linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd7abf600406b9ae101aed8df652d757ad62e808
Author: Waiman Long <longman@redhat.com>
Date:   Thu Mar 22 15:18:53 2018 -0400

    x86/efi: Free efi_pgd with free_pages()
    
    commit 06ace26f4e6fcf747e890a39193be811777a048a upstream.
    
    The efi_pgd is allocated as PGD_ALLOCATION_ORDER pages and therefore must
    also be freed as PGD_ALLOCATION_ORDER pages with free_pages().
    
    Fixes: d9e9a6418065 ("x86/mm/pti: Allocate a separate user PGD")
    Signed-off-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1521746333-19593-1-git-send-email-longman@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 279ebed98bb26c3182c10a4c9340808008fbf318
Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Date:   Mon Mar 19 10:31:54 2018 -0400

    x86/vsyscall/64: Use proper accessor to update P4D entry
    
    commit 31ad7f8e7dc94d3b85ccf9b6141ce6dfd35a1781 upstream.
    
    Writing to it directly does not work for Xen PV guests.
    
    Fixes: 49275fef986a ("x86/vsyscall/64: Explicitly set _PAGE_USER in the pagetable hierarchy")
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Acked-by: Andy Lutomirski <luto@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180319143154.3742-1-boris.ostrovsky@oracle.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e4ed1727e2a13f108037add6b08e2872125d19f
Author: Andy Lutomirski <luto@kernel.org>
Date:   Sat Mar 17 08:25:07 2018 -0700

    selftests/x86/ptrace_syscall: Fix for yet more glibc interference
    
    commit 4b0b37d4cc54b21a6ecad7271cbc850555869c62 upstream.
    
    glibc keeps getting cleverer, and my version now turns raise() into
    more than one syscall.  Since the test relies on ptrace seeing an
    exact set of syscalls, this breaks the test.  Replace raise(SIGSTOP)
    with syscall(SYS_tgkill, ...) to force glibc to get out of our way.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kselftest@vger.kernel.org
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/bc80338b453afa187bc5f895bd8e2c8d6e264da2.1521300271.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69a71b6b418c0052614e8325ca4e91ca4a3d6eef
Author: Andy Lutomirski <luto@kernel.org>
Date:   Thu Jul 23 15:37:48 2015 -0700

    x86/entry/64: Don't use IST entry for #BP stack
    
    commit d8ba61ba58c88d5207c1ba2f7d9a2280e7d03be9 upstream.
    
    There's nothing IST-worthy about #BP/int3.  We don't allow kprobes
    in the small handful of places in the kernel that run at CPL0 with
    an invalid stack, and 32-bit kernels have used normal interrupt
    gates for #BP forever.
    
    Furthermore, we don't allow kprobes in places that have usergs while
    in kernel mode, so "paranoid" is also unnecessary.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64c98ba6ddb51372a541e4a290bb1c50257d33bb
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sat Mar 24 10:43:26 2018 +0100

    tty: vt: fix up tabstops properly
    
    commit f1869a890cdedb92a3fab969db5d0fd982850273 upstream.
    
    Tabs on a console with long lines do not wrap properly, so correctly
    account for the line length when computing the tab placement location.
    
    Reported-by: James Holderness <j4_james@hotmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfde88160d7bdd9576c3a3a07c55b7927d167b34
Author: Andri Yngvason <andri.yngvason@marel.com>
Date:   Thu Mar 15 18:23:17 2018 +0000

    can: cc770: Fix use after free in cc770_tx_interrupt()
    
    commit 9ffd7503944ec7c0ef41c3245d1306c221aef2be upstream.
    
    This fixes use after free introduced by the last cc770 patch.
    
    Signed-off-by: Andri Yngvason <andri.yngvason@marel.com>
    Fixes: 746201235b3f ("can: cc770: Fix queue stall & dropped RTR reply")
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89fc6c01aae9b9969525f862d4fb5cf625ee4bb3
Author: Andri Yngvason <andri.yngvason@marel.com>
Date:   Wed Mar 14 11:52:57 2018 +0000

    can: cc770: Fix queue stall & dropped RTR reply
    
    commit 746201235b3f876792099079f4c6fea941d76183 upstream.
    
    While waiting for the TX object to send an RTR, an external message with a
    matching id can overwrite the TX data. In this case we must call the rx
    routine and then try transmitting the message that was overwritten again.
    
    The queue was being stalled because the RX event did not generate an
    interrupt to wake up the queue again and the TX event did not happen
    because the TXRQST flag is reset by the chip when new data is received.
    
    According to the CC770 datasheet the id of a message object should not be
    changed while the MSGVAL bit is set. This has been fixed by resetting the
    MSGVAL bit before modifying the object in the transmit function and setting
    it after. It is not enough to set & reset CPUUPD.
    
    It is important to keep the MSGVAL bit reset while the message object is
    being modified. Otherwise, during RTR transmission, a frame with matching
    id could trigger an rx-interrupt, which would cause a race condition
    between the interrupt routine and the transmit function.
    
    Signed-off-by: Andri Yngvason <andri.yngvason@marel.com>
    Tested-by: Richard Weinberger <richard@nod.at>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f543d85120e108f448441ea51966d4577be5d90d
Author: Andri Yngvason <andri.yngvason@marel.com>
Date:   Wed Mar 14 11:52:56 2018 +0000

    can: cc770: Fix stalls on rt-linux, remove redundant IRQ ack
    
    commit f4353daf4905c0099fd25fa742e2ffd4a4bab26a upstream.
    
    This has been reported to cause stalls on rt-linux.
    
    Suggested-by: Richard Weinberger <richard@nod.at>
    Tested-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Andri Yngvason <andri.yngvason@marel.com>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f29397c91e054538aae2ffe47728e21b3dc35afc
Author: Marek Vasut <marex@denx.de>
Date:   Mon Mar 5 21:29:52 2018 +0100

    can: ifi: Check core revision upon probe
    
    commit 591d65d5b15496af8d05e252bc1da611c66c0b79 upstream.
    
    Older versions of the core are not compatible with the driver due
    to various intrusive fixes of the core. Read out the VER register,
    check the core revision bitfield and verify if the core in use is
    new enough (rev 2.1 or newer) to work correctly with this driver.
    
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Heiko Schocher <hs@denx.de>
    Cc: Markus Marb <markus@marb.org>
    Cc: Marc Kleine-Budde <mkl@pengutronix.de>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 717885b66fb81d3ff4103eb6dab2cfbe48439c55
Author: Marek Vasut <marex@denx.de>
Date:   Thu Mar 1 19:34:00 2018 +0100

    can: ifi: Repair the error handling
    
    commit 880dd464b4304583c557c4e5f5ecebfd55d232b1 upstream.
    
    The new version of the IFI CANFD core has significantly less complex
    error state indication logic. In particular, the warning/error state
    bits are no longer all over the place, but are all present in the
    STATUS register. Moreover, there is a new IRQ register bit indicating
    transition between error states (active/warning/passive/busoff).
    
    This patch makes use of this bit to weed out the obscure selective
    INTERRUPT register clearing, which was used to carry over the error
    state indication into the poll function. While at it, this patch
    fixes the handling of the ACTIVE state, since the hardware provides
    indication of the core being in ACTIVE state and that in turn fixes
    the state transition indication toward userspace. Finally, register
    reads in the poll function are moved to the matching subfunctions
    since those are also no longer needed in the poll function.
    
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Heiko Schocher <hs@denx.de>
    Cc: Markus Marb <markus@marb.org>
    Cc: Marc Kleine-Budde <mkl@pengutronix.de>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f39b4fd443c30e6c5482e6b8925f72b2b9dbf18
Author: Stephane Grosjean <s.grosjean@peak-system.com>
Date:   Thu Mar 8 09:30:29 2018 +0100

    can: peak/pcie_fd: remove useless code when interface starts
    
    commit ffd137f7043cb30067e1bff6fe62a073ae190b23 upstream.
    
    When an interface starts, the echo_skb array is empty and the network
    queue should be started only. This patch replaces useless code and locks
    when the internal RX_BARRIER message is received from the IP core, telling
    the driver that tx may start.
    
    Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 054317e751c708757666caa08ba51bd4597cff90
Author: Stephane Grosjean <s.grosjean@peak-system.com>
Date:   Thu Mar 8 09:30:28 2018 +0100

    can: peak/pcie_fd: fix echo_skb is occupied! bug
    
    commit e6048a00cfd0863d32f53b226e0b9a3633fc3332 upstream.
    
    This patch makes atomic the handling of the linux-can echo_skb array and
    the network tx queue. This prevents from the "BUG! echo_skb is occupied!"
    message to be printed by the linux-can core, in SMP environments.
    
    Reported-by: Diana Burgess <diana@peloton-tech.com>
    Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a6730ae707b16b038f3731f93f67aa0bd08017f
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Mar 19 14:07:45 2018 +0300

    staging: ncpfs: memory corruption in ncp_read_kernel()
    
    commit 4c41aa24baa4ed338241d05494f2c595c885af8f upstream.
    
    If the server is malicious then *bytes_read could be larger than the
    size of the "target" buffer.  It would lead to memory corruption when we
    do the memcpy().
    
    Reported-by: Dr Silvio Cesare of InfoSect <Silvio Cesare <silvio.cesare@gmail.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b6f657ad598b5dd561a7309290082a4b9f0dfb9
Author: Jagdish Gediya <jagdish.gediya@nxp.com>
Date:   Thu Mar 22 01:08:10 2018 +0530

    mtd: nand: fsl_ifc: Read ECCSTAT0 and ECCSTAT1 registers for IFC 2.0
    
    commit 6b00c35138b404be98b85f4a703be594cbed501c upstream.
    
    Due to missing information in Hardware manual, current
    implementation doesn't read ECCSTAT0 and ECCSTAT1 registers
    for IFC 2.0.
    
    Add support to read ECCSTAT0 and ECCSTAT1 registers during
    ecccheck for IFC 2.0.
    
    Fixes: 656441478ed5 ("mtd: nand: ifc: Fix location of eccstat registers for IFC V1.0")
    Cc: stable@vger.kernel.org # v3.18+
    Signed-off-by: Jagdish Gediya <jagdish.gediya@nxp.com>
    Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7cc7ee831a356a9b208ff0e0d10ea132fa021423
Author: Jagdish Gediya <jagdish.gediya@nxp.com>
Date:   Wed Mar 21 05:51:46 2018 +0530

    mtd: nand: fsl_ifc: Fix eccstat array overflow for IFC ver >= 2.0.0
    
    commit 843c3a59997f18060848b8632607dd04781b52d1 upstream.
    
    Number of ECC status registers i.e. (ECCSTATx) has been increased in IFC
    version 2.0.0 due to increase in SRAM size. This is causing eccstat
    array to over flow.
    
    So, replace eccstat array with u32 variable to make it fail-safe and
    independent of number of ECC status registers or SRAM size.
    
    Fixes: bccb06c353af ("mtd: nand: ifc: update bufnum mask for ver >= 2.0.0")
    Cc: stable@vger.kernel.org # 3.18+
    Signed-off-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
    Signed-off-by: Jagdish Gediya <jagdish.gediya@nxp.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d65c538a1e190c96ac73dee587a7ce9b41513ba
Author: Jagdish Gediya <jagdish.gediya@nxp.com>
Date:   Wed Mar 21 04:31:36 2018 +0530

    mtd: nand: fsl_ifc: Fix nand waitfunc return value
    
    commit fa8e6d58c5bc260f4369c6699683d69695daed0a upstream.
    
    As per the IFC hardware manual, Most significant 2 bytes in
    nand_fsr register are the outcome of NAND READ STATUS command.
    
    So status value need to be shifted and aligned as per the nand
    framework requirement.
    
    Fixes: 82771882d960 ("NAND Machine support for Integrated Flash Controller")
    Cc: stable@vger.kernel.org # v3.18+
    Signed-off-by: Jagdish Gediya <jagdish.gediya@nxp.com>
    Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a49c7c336348e6592a98d6048a358932745c7dd2
Author: OuYang ZhiZhong <ouyzz@yealink.com>
Date:   Sun Mar 11 15:59:07 2018 +0800

    mtdchar: fix usage of mtd_ooblayout_ecc()
    
    commit 6de564939e14327148e31ddcf769e34105176447 upstream.
    
    Section was not properly computed. The value of OOB region definition is
    always ECC section 0 information in the OOB area, but we want to get all
    the ECC bytes information, so we should call
    mtd_ooblayout_ecc(mtd, section++, &oobregion) until it returns -ERANGE.
    
    Fixes: c2b78452a9db ("mtd: use mtd_ooblayout_xxx() helpers where appropriate")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: OuYang ZhiZhong <ouyzz@yealink.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b474cd0749d87fa58e8ee46231ae128787cdacb
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sat Mar 17 21:38:10 2018 +0900

    tracing: probeevent: Fix to support minus offset from symbol
    
    commit c5d343b6b7badd1f5fe0873eff2e8d63a193e732 upstream.
    
    In Documentation/trace/kprobetrace.txt, it says
    
     @SYM[+|-offs] : Fetch memory at SYM +|- offs (SYM should be a data symbol)
    
    However, the parser doesn't parse minus offset correctly, since
    commit 2fba0c8867af ("tracing/kprobes: Fix probe offset to be
    unsigned") drops minus ("-") offset support for kprobe probe
    address usage.
    
    This fixes the traceprobe_split_symbol_offset() to parse minus
    offset again with checking the offset range, and add a minus
    offset check in kprobe probe address usage.
    
    Link: http://lkml.kernel.org/r/152129028983.31874.13419301530285775521.stgit@devbox
    
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Tom Zanussi <tom.zanussi@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Cc: stable@vger.kernel.org
    Fixes: 2fba0c8867af ("tracing/kprobes: Fix probe offset to be unsigned")
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2e051d5d636a9d9e22583ec3079d1c134442514
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Thu Feb 22 14:28:59 2018 -0600

    rtlwifi: rtl8723be: Fix loss of signal
    
    commit 78dc897b7ee67205423dbbc6b56be49fb18d15b5 upstream.
    
    In commit c713fb071edc ("rtlwifi: rtl8821ae: Fix connection lost problem
    correctly") a problem in rtl8821ae that caused loss of signal was fixed.
    That same problem has now been reported for rtl8723be. Accordingly,
    the ASPM L1 latency has been increased from 0 to 7 to fix the instability.
    
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: Stable <stable@vger.kernel.org>
    Tested-by: James Cameron <quozl@laptop.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c210a84ed369783185b4fff5b11dccd5c2b01c0
Author: Arend Van Spriel <arend.vanspriel@broadcom.com>
Date:   Wed Feb 28 21:15:20 2018 +0100

    brcmfmac: fix P2P_DEVICE ethernet address generation
    
    commit 455f3e76cfc0d893585a5f358b9ddbe9c1e1e53b upstream.
    
    The firmware has a requirement that the P2P_DEVICE address should
    be different from the address of the primary interface. When not
    specified by user-space, the driver generates the MAC address for
    the P2P_DEVICE interface using the MAC address of the primary
    interface and setting the locally administered bit. However, the MAC
    address of the primary interface may already have that bit set causing
    the creation of the P2P_DEVICE interface to fail with -EBUSY. Fix this
    by using a random address instead to determine the P2P_DEVICE address.
    
    Cc: stable@vger.kernel.org # 3.10.y
    Reported-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Reviewed-by: Franky Lin <franky.lin@broadcom.com>
    Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b7ece4accf1e66877403881c510c88fd904f3f4
Author: Vishal Verma <vishal.l.verma@intel.com>
Date:   Mon Mar 5 16:56:13 2018 -0700

    libnvdimm, {btt, blk}: do integrity setup before add_disk()
    
    commit 3ffb0ba9b567a8efb9a04ed3d1ec15ff333ada22 upstream.
    
    Prior to 25520d55cdb6 ("block: Inline blk_integrity in struct gendisk")
    we needed to temporarily add a zero-capacity disk before registering for
    blk-integrity. But adding a zero-capacity disk caused the partition
    table scanning to bail early, and this resulted in partitions not coming
    up after a probe of the BTT or blk namespaces.
    
    We can now register for integrity before the disk has been added, and
    this fixes the rescan problems.
    
    Fixes: 25520d55cdb6 ("block: Inline blk_integrity in struct gendisk")
    Reported-by: Dariusz Dokupil <dariusz.dokupil@intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cb158fadfd550ecd65ae86e300af781d858d071
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Mar 19 14:51:49 2018 +0100

    ACPI / watchdog: Fix off-by-one error at resource assignment
    
    commit b1abf6fc49829d89660c961fafe3f90f3d843c55 upstream.
    
    The resource allocation in WDAT watchdog has off-one-by error, it sets
    one byte more than the actual end address.  This may eventually lead
    to unexpected resource conflicts.
    
    Fixes: 058dfc767008 (ACPI / watchdog: Add support for WDAT hardware watchdog)
    Cc: 4.9+ <stable@vger.kernel.org> # 4.9+
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Acked-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0b2d4f74b7259701d74a3dd62244b4475070a5f
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Thu Mar 15 19:49:14 2018 -0700

    acpi, numa: fix pxm to online numa node associations
    
    commit dc9e0a9347e932e3fd3cd03e7ff241022ed6ea8a upstream.
    
    Commit 99759869faf1 "acpi: Add acpi_map_pxm_to_online_node()" added
    support for mapping a given proximity to its nearest, by SLIT distance,
    online node. However, it sometimes returns unexpected results due to the
    fact that it switches from comparing the PXM node to the last node that
    was closer than the current max.
    
        for_each_online_node(n) {
                dist = node_distance(node, n);
                if (dist < min_dist) {
                        min_dist = dist;
                        node = n;   <---- from this point we're using the
                                          wrong node for node_distance()
    
    
    Fixes: 99759869faf1 ("acpi: Add acpi_map_pxm_to_online_node()")
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Toshi Kani <toshi.kani@hp.com>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 517f745e5e64471e06eee98b9fe6fc2b0841abcb
Author: Leon Yu <chianglungyu@gmail.com>
Date:   Tue Mar 6 23:16:24 2018 +0800

    module: propagate error in modules_open()
    
    commit 3f553b308bb004eb730da8e00a28150c157c7724 upstream.
    
    otherwise kernel can oops later in seq_release() due to dereferencing null
    file->private_data which is only set if seq_open() succeeds.
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
    IP: seq_release+0xc/0x30
    Call Trace:
     close_pdeo+0x37/0xd0
     proc_reg_release+0x5d/0x60
     __fput+0x9d/0x1d0
     ____fput+0x9/0x10
     task_work_run+0x75/0x90
     do_exit+0x252/0xa00
     do_group_exit+0x36/0xb0
     SyS_exit_group+0xf/0x10
    
    Fixes: 516fb7f2e73d ("/proc/module: use the same logic as /proc/kallsyms for address exposure")
    Cc: Jessica Yu <jeyu@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: stable@vger.kernel.org # 4.15+
    Signed-off-by: Leon Yu <chianglungyu@gmail.com>
    Signed-off-by: Jessica Yu <jeyu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8f7955b5493a6176360c7acab3dbb4ed77cb703
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Thu Mar 22 16:17:42 2018 -0700

    mm/vmscan: wake up flushers for legacy cgroups too
    
    commit 1c610d5f93c709df56787f50b3576704ac271826 upstream.
    
    Commit 726d061fbd36 ("mm: vmscan: kick flushers when we encounter dirty
    pages on the LRU") added flusher invocation to shrink_inactive_list()
    when many dirty pages on the LRU are encountered.
    
    However, shrink_inactive_list() doesn't wake up flushers for legacy
    cgroup reclaim, so the next commit bbef938429f5 ("mm: vmscan: remove old
    flusher wakeup from direct reclaim path") removed the only source of
    flusher's wake up in legacy mem cgroup reclaim path.
    
    This leads to premature OOM if there is too many dirty pages in cgroup:
        # mkdir /sys/fs/cgroup/memory/test
        # echo $$ > /sys/fs/cgroup/memory/test/tasks
        # echo 50M > /sys/fs/cgroup/memory/test/memory.limit_in_bytes
        # dd if=/dev/zero of=tmp_file bs=1M count=100
        Killed
    
        dd invoked oom-killer: gfp_mask=0x14000c0(GFP_KERNEL), nodemask=(null), order=0, oom_score_adj=0
    
        Call Trace:
         dump_stack+0x46/0x65
         dump_header+0x6b/0x2ac
         oom_kill_process+0x21c/0x4a0
         out_of_memory+0x2a5/0x4b0
         mem_cgroup_out_of_memory+0x3b/0x60
         mem_cgroup_oom_synchronize+0x2ed/0x330
         pagefault_out_of_memory+0x24/0x54
         __do_page_fault+0x521/0x540
         page_fault+0x45/0x50
    
        Task in /test killed as a result of limit of /test
        memory: usage 51200kB, limit 51200kB, failcnt 73
        memory+swap: usage 51200kB, limit 9007199254740988kB, failcnt 0
        kmem: usage 296kB, limit 9007199254740988kB, failcnt 0
        Memory cgroup stats for /test: cache:49632KB rss:1056KB rss_huge:0KB shmem:0KB
                mapped_file:0KB dirty:49500KB writeback:0KB swap:0KB inactive_anon:0KB
                active_anon:1168KB inactive_file:24760KB active_file:24960KB unevictable:0KB
        Memory cgroup out of memory: Kill process 3861 (bash) score 88 or sacrifice child
        Killed process 3876 (dd) total-vm:8484kB, anon-rss:1052kB, file-rss:1720kB, shmem-rss:0kB
        oom_reaper: reaped process 3876 (dd), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
    
    Wake up flushers in legacy cgroup reclaim too.
    
    Link: http://lkml.kernel.org/r/20180315164553.17856-1-aryabinin@virtuozzo.com
    Fixes: bbef938429f5 ("mm: vmscan: remove old flusher wakeup from direct reclaim path")
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Tested-by: Shakeel Butt <shakeelb@google.com>
    Acked-by: Michal Hocko <mhocko@suse.cz>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01592437b0ec953300acf8be765721a62e0786b7
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Mar 21 16:45:53 2018 +0100

    drm: udl: Properly check framebuffer mmap offsets
    
    commit 3b82a4db8eaccce735dffd50b4d4e1578099b8e8 upstream.
    
    The memmap options sent to the udl framebuffer driver were not being
    checked for all sets of possible crazy values.  Fix this up by properly
    bounding the allowed values.
    
    Reported-by: Eyal Itkin <eyalit@checkpoint.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180321154553.GA18454@kroah.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1554edbbb723218abc57bafb24a0c32102a1ba89
Author: Daniel Stone <daniels@collabora.com>
Date:   Tue Mar 20 22:58:39 2018 +0000

    drm: Reject getfb for multi-plane framebuffers
    
    commit b24791fe00f8b089d5b10cb7bcc4e1ae88b4831b upstream.
    
    getfb can only return a single plane, so reject attempts to use it with
    multi-plane framebuffers.
    
    Signed-off-by: Daniel Stone <daniels@collabora.com>
    Reported-by: Daniel van Vugt <daniel.van.vugt@canonical.com>
    Reviewed-by: Rob Clark <robdclark@gmail.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Fixes: 308e5bcbdb10 ("drm: add an fb creation ioctl that takes a pixel format v5")
    Cc: stable@vger.kernel.org # v3.3+
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105518
    Link: https://patchwork.freedesktop.org/patch/msgid/20180320225839.30905-1-daniels@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6b53a429e65b5a68a20001d339cd5d1a14230a8
Author: Harry Wentland <harry.wentland@amd.com>
Date:   Wed Mar 7 13:45:33 2018 -0500

    drm/amd/display: Add one to EDID's audio channel count when passing to DC
    
    commit 731a373698c9675d5aed8a30d8c9861bea9c41a2 upstream.
    
    DC takes channel count to mean the actual count. cea_sad's channels
    represent it as number of channels - 1.
    
    Signed-off-by: Harry Wentland <harry.wentland@amd.com>
    Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
    Acked-by: Harry Wentland <harry.wentland@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 fa81f6281879fec83badfd3e18919ba90d82b23e
Author: Harry Wentland <harry.wentland@amd.com>
Date:   Tue Mar 6 11:14:12 2018 -0500

    drm/amd/display: We shouldn't set format_default on plane as atomic driver
    
    commit 509648fcf0ce8650184649b43ad039f78dde155f upstream.
    
    This is still a leftover from early atomic brinup days.
    
    Signed-off-by: Harry Wentland <harry.wentland@amd.com>
    Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
    Acked-by: Harry Wentland <harry.wentland@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 19f2fd88d999c6faff3000129ffd3e4b9a318305
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Wed Mar 14 18:14:04 2018 +0100

    drm/radeon: Don't turn off DP sink when disconnected
    
    commit 2681bc79eeb640562c932007bfebbbdc55bf6a7d upstream.
    
    Turning off the sink in this case causes various issues, because
    userspace expects it to stay on until it turns it off explicitly.
    
    Instead, turn the sink off and back on when a display is connected
    again. This dance seems necessary for link training to work correctly.
    
    Bugzilla: https://bugs.freedesktop.org/105308
    Cc: stable@vger.kernel.org
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5001c04d08bb52893725aa469015c76a02025f23
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Wed Mar 21 10:18:38 2018 +0100

    drm/vmwgfx: Fix a destoy-while-held mutex problem.
    
    commit 73a88250b70954a8f27c2444e1c2411bba3c29d9 upstream.
    
    When validating legacy surfaces, the backup bo might be destroyed at
    surface validate time. However, the kms resource validation code may have
    the bo reserved, so we will destroy a locked mutex. While there shouldn't
    be any other users of that mutex when it is destroyed, it causes a lock
    leak and thus throws a lockdep error.
    
    Fix this by having the kms resource validation code hold a reference to
    the bo while we have it reserved. We do this by introducing a validation
    context which might come in handy when the kms code is extended to validate
    multiple resources or buffers.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Brian Paul <brianp@vmware.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7c3cc858b025161d838170d1327cf953efad7b6
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Thu Mar 8 10:07:37 2018 +0100

    drm/vmwgfx: Fix black screen and device errors when running without fbdev
    
    commit 140bcaa23a1c37b694910424075a15e009120dbe upstream.
    
    When we are running without fbdev, transitioning from the login screen to
    X or gnome-shell/wayland will cause a vt switch and the driver will disable
    svga mode, losing all modesetting resources. However, the kms atomic state
    does not reflect that and may think that a crtc is still turned on, which
    will cause device errors when we try to bind an fb to the crtc, and the
    screen will remain black.
    
    Fix this by turning off all kms resources before disabling svga mode.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f981611c4ae34db8595b1bea8cbdbb2b70ed8227
Author: Daniel Vacek <neelx@redhat.com>
Date:   Thu Mar 22 16:17:38 2018 -0700

    Revert "mm: page_alloc: skip over regions of invalid pfns where possible"
    
    commit f59f1caf72ba00d519c793c3deb32cd3be32edc2 upstream.
    
    This reverts commit b92df1de5d28 ("mm: page_alloc: skip over regions of
    invalid pfns where possible").  The commit is meant to be a boot init
    speed up skipping the loop in memmap_init_zone() for invalid pfns.
    
    But given some specific memory mapping on x86_64 (or more generally
    theoretically anywhere but on arm with CONFIG_HAVE_ARCH_PFN_VALID) the
    implementation also skips valid pfns which is plain wrong and causes
    'kernel BUG at mm/page_alloc.c:1389!'
    
      crash> log | grep -e BUG -e RIP -e Call.Trace -e move_freepages_block -e rmqueue -e freelist -A1
      kernel BUG at mm/page_alloc.c:1389!
      invalid opcode: 0000 [#1] SMP
      --
      RIP: 0010: move_freepages+0x15e/0x160
      --
      Call Trace:
        move_freepages_block+0x73/0x80
        __rmqueue+0x263/0x460
        get_page_from_freelist+0x7e1/0x9e0
        __alloc_pages_nodemask+0x176/0x420
      --
    
      crash> page_init_bug -v | grep RAM
      <struct resource 0xffff88067fffd2f8>          1000 -        9bfff       System RAM (620.00 KiB)
      <struct resource 0xffff88067fffd3a0>        100000 -     430bffff       System RAM (  1.05 GiB = 1071.75 MiB = 1097472.00 KiB)
      <struct resource 0xffff88067fffd410>      4b0c8000 -     4bf9cfff       System RAM ( 14.83 MiB = 15188.00 KiB)
      <struct resource 0xffff88067fffd480>      4bfac000 -     646b1fff       System RAM (391.02 MiB = 400408.00 KiB)
      <struct resource 0xffff88067fffd560>      7b788000 -     7b7fffff       System RAM (480.00 KiB)
      <struct resource 0xffff88067fffd640>     100000000 -    67fffffff       System RAM ( 22.00 GiB)
    
      crash> page_init_bug | head -6
      <struct resource 0xffff88067fffd560>      7b788000 -     7b7fffff       System RAM (480.00 KiB)
      <struct page 0xffffea0001ede200>   1fffff00000000  0 <struct pglist_data 0xffff88047ffd9000> 1 <struct zone 0xffff88047ffd9800> DMA32          4096    1048575
      <struct page 0xffffea0001ede200>       505736 505344 <struct page 0xffffea0001ed8000> 505855 <struct page 0xffffea0001edffc0>
      <struct page 0xffffea0001ed8000>                0  0 <struct pglist_data 0xffff88047ffd9000> 0 <struct zone 0xffff88047ffd9000> DMA               1       4095
      <struct page 0xffffea0001edffc0>   1fffff00000400  0 <struct pglist_data 0xffff88047ffd9000> 1 <struct zone 0xffff88047ffd9800> DMA32          4096    1048575
      BUG, zones differ!
    
      crash> kmem -p 77fff000 78000000 7b5ff000 7b600000 7b787000 7b788000
            PAGE        PHYSICAL      MAPPING       INDEX CNT FLAGS
      ffffea0001e00000  78000000                0        0  0 0
      ffffea0001ed7fc0  7b5ff000                0        0  0 0
      ffffea0001ed8000  7b600000                0        0  0 0       <<<<
      ffffea0001ede1c0  7b787000                0        0  0 0
      ffffea0001ede200  7b788000                0        0  1 1fffff00000000
    
    Link: http://lkml.kernel.org/r/20180316143855.29838-1-neelx@redhat.com
    Fixes: b92df1de5d28 ("mm: page_alloc: skip over regions of invalid pfns where possible")
    Signed-off-by: Daniel Vacek <neelx@redhat.com>
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Pavel Tatashin <pasha.tatashin@oracle.com>
    Cc: Paul Burton <paul.burton@imgtec.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 d3d155da63b99cd6dcb8bf0a46d6eae3a456b546
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Thu Mar 22 16:17:35 2018 -0700

    mm/shmem: do not wait for lock_page() in shmem_unused_huge_shrink()
    
    commit b3cd54b257ad95d344d121dc563d943ca39b0921 upstream.
    
    shmem_unused_huge_shrink() gets called from reclaim path.  Waiting for
    page lock may lead to deadlock there.
    
    There was a bug report that may be attributed to this:
    
      http://lkml.kernel.org/r/alpine.LRH.2.11.1801242349220.30642@mail.ewheeler.net
    
    Replace lock_page() with trylock_page() and skip the page if we failed
    to lock it.  We will get to the page on the next scan.
    
    We can test for the PageTransHuge() outside the page lock as we only
    need protection against splitting the page under us.  Holding pin oni
    the page is enough for this.
    
    Link: http://lkml.kernel.org/r/20180316210830.43738-1-kirill.shutemov@linux.intel.com
    Fixes: 779750d20b93 ("shmem: split huge pages beyond i_size under memory pressure")
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reported-by: Eric Wheeler <linux-mm@lists.ewheeler.net>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: <stable@vger.kernel.org>    [4.8+]
    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 29c11d86b74ff6b4795ed715d23211e89c209425
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Thu Mar 22 16:17:31 2018 -0700

    mm/thp: do not wait for lock_page() in deferred_split_scan()
    
    commit fa41b900c30b45fab03783724932dc30cd46a6be upstream.
    
    deferred_split_scan() gets called from reclaim path.  Waiting for page
    lock may lead to deadlock there.
    
    Replace lock_page() with trylock_page() and skip the page if we failed
    to lock it.  We will get to the page on the next scan.
    
    Link: http://lkml.kernel.org/r/20180315150747.31945-1-kirill.shutemov@linux.intel.com
    Fixes: 9a982250f773 ("thp: introduce deferred_split_huge_page()")
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.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 babe10f62b6bf7cc30ae85cb2f1e382c210219fd
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Thu Mar 22 16:17:28 2018 -0700

    mm/khugepaged.c: convert VM_BUG_ON() to collapse fail
    
    commit fece2029a9e65b9a990831afe2a2b83290cbbe26 upstream.
    
    khugepaged is not yet able to convert PTE-mapped huge pages back to PMD
    mapped.  We do not collapse such pages.  See check
    khugepaged_scan_pmd().
    
    But if between khugepaged_scan_pmd() and __collapse_huge_page_isolate()
    somebody managed to instantiate THP in the range and then split the PMD
    back to PTEs we would have a problem --
    VM_BUG_ON_PAGE(PageCompound(page)) will get triggered.
    
    It's possible since we drop mmap_sem during collapse to re-take for
    write.
    
    Replace the VM_BUG_ON() with graceful collapse fail.
    
    Link: http://lkml.kernel.org/r/20180315152353.27989-1-kirill.shutemov@linux.intel.com
    Fixes: b1caa957ae6d ("khugepaged: ignore pmd tables with THP mapped with ptes")
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Laura Abbott <labbott@redhat.com>
    Cc: Jerome Marchand <jmarchan@redhat.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    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 63da3be586bb001b8fbbc7aa01d9a402fc3142e0
Author: Toshi Kani <toshi.kani@hpe.com>
Date:   Thu Mar 22 16:17:24 2018 -0700

    x86/mm: implement free pmd/pte page interfaces
    
    commit 28ee90fe6048fa7b7ceaeb8831c0e4e454a4cf89 upstream.
    
    Implement pud_free_pmd_page() and pmd_free_pte_page() on x86, which
    clear a given pud/pmd entry and free up lower level page table(s).
    
    The address range associated with the pud/pmd entry must have been
    purged by INVLPG.
    
    Link: http://lkml.kernel.org/r/20180314180155.19492-3-toshi.kani@hpe.com
    Fixes: e61ce6ade404e ("mm: change ioremap to set up huge I/O mappings")
    Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
    Reported-by: Lei Li <lious.lilei@hisilicon.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0454e2fad9306961540ee7e84da47a8e345b7d22
Author: Toshi Kani <toshi.kani@hpe.com>
Date:   Thu Mar 22 16:17:20 2018 -0700

    mm/vmalloc: add interfaces to free unmapped page table
    
    commit b6bdb7517c3d3f41f20e5c2948d6bc3f8897394e upstream.
    
    On architectures with CONFIG_HAVE_ARCH_HUGE_VMAP set, ioremap() may
    create pud/pmd mappings.  A kernel panic was observed on arm64 systems
    with Cortex-A75 in the following steps as described by Hanjun Guo.
    
     1. ioremap a 4K size, valid page table will build,
     2. iounmap it, pte0 will set to 0;
     3. ioremap the same address with 2M size, pgd/pmd is unchanged,
        then set the a new value for pmd;
     4. pte0 is leaked;
     5. CPU may meet exception because the old pmd is still in TLB,
        which will lead to kernel panic.
    
    This panic is not reproducible on x86.  INVLPG, called from iounmap,
    purges all levels of entries associated with purged address on x86.  x86
    still has memory leak.
    
    The patch changes the ioremap path to free unmapped page table(s) since
    doing so in the unmap path has the following issues:
    
     - The iounmap() path is shared with vunmap(). Since vmap() only
       supports pte mappings, making vunmap() to free a pte page is an
       overhead for regular vmap users as they do not need a pte page freed
       up.
    
     - Checking if all entries in a pte page are cleared in the unmap path
       is racy, and serializing this check is expensive.
    
     - The unmap path calls free_vmap_area_noflush() to do lazy TLB purges.
       Clearing a pud/pmd entry before the lazy TLB purges needs extra TLB
       purge.
    
    Add two interfaces, pud_free_pmd_page() and pmd_free_pte_page(), which
    clear a given pud/pmd entry and free up a page for the lower level
    entries.
    
    This patch implements their stub functions on x86 and arm64, which work
    as workaround.
    
    [akpm@linux-foundation.org: fix typo in pmd_free_pte_page() stub]
    Link: http://lkml.kernel.org/r/20180314180155.19492-2-toshi.kani@hpe.com
    Fixes: e61ce6ade404e ("mm: change ioremap to set up huge I/O mappings")
    Reported-by: Lei Li <lious.lilei@hisilicon.com>
    Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Wang Xuefeng <wxf.wang@hisilicon.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Hanjun Guo <guohanjun@huawei.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Chintan Pandya <cpandya@codeaurora.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6104f7df1e2228e94cfa590b4b1bb49800c6cab0
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Mar 22 16:17:17 2018 -0700

    h8300: remove extraneous __BIG_ENDIAN definition
    
    commit 1705f7c534163594f8b05e060cb49fbea86ca70b upstream.
    
    A bugfix I did earlier caused a build regression on h8300, which defines
    the __BIG_ENDIAN macro in a slightly different way than the generic
    code:
    
      arch/h8300/include/asm/byteorder.h:5:0: warning: "__BIG_ENDIAN" redefined
    
    We don't need to define it here, as the same macro is already provided
    by the linux/byteorder/big_endian.h, and that version does not conflict.
    
    While this is a v4.16 regression, my earlier patch also got backported
    to the 4.14 and 4.15 stable kernels, so we need the fixup there as well.
    
    Link: http://lkml.kernel.org/r/20180313120752.2645129-1-arnd@arndb.de
    Fixes: 101110f6271c ("Kbuild: always define endianess in kconfig.h")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    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 e0fdb5385c4bf26b4be60c0042344c315c039aeb
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Thu Mar 22 16:17:13 2018 -0700

    hugetlbfs: check for pgoff value overflow
    
    commit 63489f8e821144000e0bdca7e65a8d1cc23a7ee7 upstream.
    
    A vma with vm_pgoff large enough to overflow a loff_t type when
    converted to a byte offset can be passed via the remap_file_pages system
    call.  The hugetlbfs mmap routine uses the byte offset to calculate
    reservations and file size.
    
    A sequence such as:
    
      mmap(0x20a00000, 0x600000, 0, 0x66033, -1, 0);
      remap_file_pages(0x20a00000, 0x600000, 0, 0x20000000000000, 0);
    
    will result in the following when task exits/file closed,
    
      kernel BUG at mm/hugetlb.c:749!
      Call Trace:
        hugetlbfs_evict_inode+0x2f/0x40
        evict+0xcb/0x190
        __dentry_kill+0xcb/0x150
        __fput+0x164/0x1e0
        task_work_run+0x84/0xa0
        exit_to_usermode_loop+0x7d/0x80
        do_syscall_64+0x18b/0x190
        entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    The overflowed pgoff value causes hugetlbfs to try to set up a mapping
    with a negative range (end < start) that leaves invalid state which
    causes the BUG.
    
    The previous overflow fix to this code was incomplete and did not take
    the remap_file_pages system call into account.
    
    [mike.kravetz@oracle.com: v3]
      Link: http://lkml.kernel.org/r/20180309002726.7248-1-mike.kravetz@oracle.com
    [akpm@linux-foundation.org: include mmdebug.h]
    [akpm@linux-foundation.org: fix -ve left shift count on sh]
    Link: http://lkml.kernel.org/r/20180308210502.15952-1-mike.kravetz@oracle.com
    Fixes: 045c7a3f53d9 ("hugetlbfs: fix offset overflow in hugetlbfs mmap")
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Reported-by: Nic Losby <blurbdust@gmail.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: "Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Yisheng Xie <xieyisheng1@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2800f9c188c7a96067f468b66e400aab406fdb0a
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Wed Feb 28 05:47:07 2018 -0500

    media: tegra-cec: reset rx_buf_cnt when start bit detected
    
    commit e113d65ae417ae6d9be229649b81d404c47ade79 upstream.
    
    If a start bit is detected, then reset the receive buffer counter to 0.
    
    This ensures that no stale data is in the buffer if a message is
    broken off midstream due to e.g. a Low Drive condition and then
    retransmitted.
    
    The only Rx interrupts we need to listen to are RX_REGISTER_FULL (i.e.
    a valid byte was received) and RX_START_BIT_DETECTED (i.e. a new
    message starts and we need to reset the counter).
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Cc: <stable@vger.kernel.org>      # for v4.15 and up
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f44e9da465ea259b6c9f31a627f3c50a16e1679
Author: Jeff Layton <jlayton@redhat.com>
Date:   Fri Mar 16 11:32:02 2018 -0400

    nfsd: remove blocked locks on client teardown
    
    commit 68ef3bc3166468678d5e1fdd216628c35bd1186f upstream.
    
    We had some reports of panics in nfsd4_lm_notify, and that showed a
    nfs4_lockowner that had outlived its so_client.
    
    Ensure that we walk any leftover lockowners after tearing down all of
    the stateids, and remove any blocked locks that they hold.
    
    With this change, we also don't need to walk the nbl_lru on nfsd_net
    shutdown, as that will happen naturally when we tear down the clients.
    
    Fixes: 76d348fadff5 (nfsd: have nfsd4_lock use blocking locks for v4.1+ locks)
    Reported-by: Frank Sorenson <fsorenso@redhat.com>
    Signed-off-by: Jeff Layton <jlayton@redhat.com>
    Cc: stable@vger.kernel.org # 4.9
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 401c02d7c9b550c5bc8c9ed21b9522dbdb93746d
Author: Tejun Heo <tj@kernel.org>
Date:   Wed Feb 21 11:39:22 2018 -0800

    cgroup: fix rule checking for threaded mode switching
    
    commit d1897c9538edafd4ae6bbd03cc075962ddde2c21 upstream.
    
    A domain cgroup isn't allowed to be turned threaded if its subtree is
    populated or domain controllers are enabled.  cgroup_enable_threaded()
    depended on cgroup_can_be_thread_root() test to enforce this rule.  A
    parent which has populated domain descendants or have domain
    controllers enabled can't become a thread root, so the above rules are
    enforced automatically.
    
    However, for the root cgroup which can host mixed domain and threaded
    children, cgroup_can_be_thread_root() doesn't check any of those
    conditions and thus first level cgroups ends up escaping those rules.
    
    This patch fixes the bug by adding explicit checks for those rules in
    cgroup_enable_threaded().
    
    Reported-by: Michael Kerrisk (man-pages) <mtk.manpages@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 8cfd8147df67 ("cgroup: implement cgroup v2 thread support")
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6823e0efcb013d09d7c350ebf7aa3dcd7733eab7
Author: Tejun Heo <tj@kernel.org>
Date:   Mon Jan 22 11:26:18 2018 -0800

    sched, cgroup: Don't reject lower cpu.max on ancestors
    
    commit c53593e5cb693d59d9e8b64fb3a79436bf99c3b3 upstream.
    
    While adding cgroup2 interface for the cpu controller, 0d5936344f30
    ("sched: Implement interface for cgroup unified hierarchy") forgot to
    update input validation and left it to reject cpu.max config if any
    descendant has set a higher value.
    
    cgroup2 officially supports delegation and a descendant must not be
    able to restrict what its ancestors can configure.  For absolute
    limits such as cpu.max and memory.max, this means that the config at
    each level should only act as the upper limit at that level and
    shouldn't interfere with what other cgroups can configure.
    
    This patch updates config validation on cgroup2 so that the cpu
    controller follows the same convention.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 0d5936344f30 ("sched: Implement interface for cgroup unified hierarchy")
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org # v4.15+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa0832d01611bfce9305f84e18173beb64532d4d
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Mar 19 16:34:00 2018 +0100

    libata: Modify quirks for MX100 to limit NCQ_TRIM quirk to MU01 version
    
    commit d418ff56b8f2d2b296daafa8da151fe27689b757 upstream.
    
    When commit 9c7be59fc519af ("libata: Apply NOLPM quirk to Crucial MX100
    512GB SSDs") was added it inherited the ATA_HORKAGE_NO_NCQ_TRIM quirk
    from the existing "Crucial_CT*MX100*" entry, but that entry sets model_rev
    to "MU01", where as the entry adding the NOLPM quirk sets it to NULL.
    
    This means that after this commit we no apply the NO_NCQ_TRIM quirk to
    all "Crucial_CT512MX100*" SSDs even if they have the fixed "MU02"
    firmware. This commit splits the "Crucial_CT512MX100*" quirk into 2
    quirks, one for the "MU01" firmware and one for all other firmware
    versions, so that we once again only apply the NO_NCQ_TRIM quirk to the
    "MU01" firmware version.
    
    Fixes: 9c7be59fc519af ("libata: Apply NOLPM quirk to ... MX100 512GB SSDs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85fd780b26aa0cc3eb150e6c193068ec4e77a8d9
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Mar 19 16:33:59 2018 +0100

    libata: Make Crucial BX100 500GB LPM quirk apply to all firmware versions
    
    commit 3bf7b5d6d017c27e0d3b160aafb35a8e7cfeda1f upstream.
    
    Commit b17e5729a630 ("libata: disable LPM for Crucial BX100 SSD 500GB
    drive"), introduced a ATA_HORKAGE_NOLPM quirk for Crucial BX100 500GB SSDs
    but limited this to the MU02 firmware version, according to:
    http://www.crucial.com/usa/en/support-ssd-firmware
    
    MU02 is the last version, so there are no newer possibly fixed versions
    and if the MU02 version has broken LPM then the MU01 almost certainly
    also has broken LPM, so this commit changes the quirk to apply to all
    firmware versions.
    
    Fixes: b17e5729a630 ("libata: disable LPM for Crucial BX100 SSD 500GB...")
    Cc: stable@vger.kernel.org
    Cc: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3121f28e584c161f0d9f0f8f9e309bc13f46b7c
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Mar 19 16:33:58 2018 +0100

    libata: Apply NOLPM quirk to Crucial M500 480 and 960GB SSDs
    
    commit 62ac3f7305470e3f52f159de448bc1a771717e88 upstream.
    
    There have been reports of the Crucial M500 480GB model not working
    with LPM set to min_power / med_power_with_dipm level.
    
    It has not been tested with medium_power, but that typically has no
    measurable power-savings.
    
    Note the reporters Crucial_CT480M500SSD3 has a firmware version of MU03
    and there is a MU05 update available, but that update does not mention any
    LPM fixes in its changelog, so the quirk matches all firmware versions.
    
    In my experience the LPM problems with (older) Crucial SSDs seem to be
    limited to higher capacity versions of the SSDs (different firmware?),
    so this commit adds a NOLPM quirk for the 480 and 960GB versions of the
    M500, to avoid LPM causing issues with these SSDs.
    
    Cc: stable@vger.kernel.org
    Reported-and-tested-by: Martin Steigerwald <martin@lichtvoll.de>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a51206d6a1c3ac04b623cce855300f249e80ceb0
Author: Ju Hyung Park <qkrwngud825@gmail.com>
Date:   Sun Mar 11 02:28:35 2018 +0900

    libata: Enable queued TRIM for Samsung SSD 860
    
    commit ca6bfcb2f6d9deab3924bf901e73622a94900473 upstream.
    
    Samsung explicitly states that queued TRIM is supported for Linux with
    860 PRO and 860 EVO.
    
    Make the previous blacklist to cover only 840 and 850 series.
    
    Signed-off-by: Park Ju Hyung <qkrwngud825@gmail.com>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2cd5b672744b14c895b3c80dee6f6dea236202fe
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Sun Feb 18 22:17:09 2018 +0800

    libata: disable LPM for Crucial BX100 SSD 500GB drive
    
    commit b17e5729a630d8326a48ec34ef02e6b4464a6aef upstream.
    
    After Laptop Mode Tools starts to use min_power for LPM, a user found
    out Crucial BX100 SSD can't get mounted.
    
    Crucial BX100 SSD 500GB drive don't work well with min_power. This also
    happens to med_power_with_dipm.
    
    So let's disable LPM for Crucial BX100 SSD 500GB drive.
    
    BugLink: https://bugs.launchpad.net/bugs/1726930
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c23829899da287d12c330daa0143f27650c3576
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Feb 16 10:48:20 2018 +0100

    libata: Apply NOLPM quirk to Crucial MX100 512GB SSDs
    
    commit 9c7be59fc519af9081c46c48f06f2b8fadf55ad8 upstream.
    
    Various people have reported the Crucial MX100 512GB model not working
    with LPM set to min_power. I've now received a report that it also does
    not work with the new med_power_with_dipm level.
    
    It does work with medium_power, but that has no measurable power-savings
    and given the amount of people being bitten by the other levels not
    working, this commit just disables LPM altogether.
    
    Note all reporters of this have either the 512GB model (max capacity), or
    are not specifying their SSD's size. So for now this quirk assumes this is
    a problem with the 512GB model only.
    
    Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=89261
    Buglink: https://github.com/linrunner/TLP/issues/84
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f849a36c2c33e89fa74b705aa18b291182bdd30
Author: Eric Biggers <ebiggers@google.com>
Date:   Sat Feb 3 20:33:51 2018 -0800

    libata: don't try to pass through NCQ commands to non-NCQ devices
    
    commit 2c1ec6fda2d07044cda922ee25337cf5d4b429b3 upstream.
    
    syzkaller hit a WARN() in ata_bmdma_qc_issue() when writing to /dev/sg0.
    This happened because it issued an ATA pass-through command (ATA_16)
    where the protocol field indicated that NCQ should be used -- but the
    device did not support NCQ.
    
    We could just remove the WARN() from libata-sff.c, but the real problem
    seems to be that the SCSI -> ATA translation code passes through NCQ
    commands without verifying that the device actually supports NCQ.
    
    Fix this by adding the appropriate check to ata_scsi_pass_thru().
    
    Here's reproducer that works in QEMU when /dev/sg0 refers to a disk of
    the default type ("82371SB PIIX3 IDE"):
    
        #include <fcntl.h>
        #include <unistd.h>
    
        int main()
        {
                char buf[53] = { 0 };
    
                buf[36] = 0x85;             /* ATA_16 */
                buf[37] = (12 << 1);        /* FPDMA */
                buf[38] = 0x1;              /* Has data */
                buf[51] = 0xC8;             /* ATA_CMD_READ */
                write(open("/dev/sg0", O_RDWR), buf, sizeof(buf));
        }
    
    Fixes: ee7fb331c3ac ("libata: add support for NCQ commands for SG interface")
    Reported-by: syzbot+2f69ca28df61bdfc77cd36af2e789850355a221e@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org> # v4.4+
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25af1a9219d621ef0a5fac2e2125c14e1cd2d0d7
Author: Eric Biggers <ebiggers@google.com>
Date:   Sat Feb 3 20:33:27 2018 -0800

    libata: remove WARN() for DMA or PIO command without data
    
    commit 9173e5e80729c8434b8d27531527c5245f4a5594 upstream.
    
    syzkaller hit a WARN() in ata_qc_issue() when writing to /dev/sg0.  This
    happened because it issued a READ_6 command with no data buffer.
    
    Just remove the WARN(), as it doesn't appear indicate a kernel bug.  The
    expected behavior is to fail the command, which the code does.
    
    Here's a reproducer that works in QEMU when /dev/sg0 refers to a disk of
    the default type ("82371SB PIIX3 IDE"):
    
        #include <fcntl.h>
        #include <unistd.h>
    
        int main()
        {
                char buf[42] = { [36] = 0x8 /* READ_6 */ };
    
                write(open("/dev/sg0", O_RDWR), buf, sizeof(buf));
        }
    
    Fixes: f92a26365a72 ("libata: change ATA_QCFLAG_DMAMAP semantics")
    Reported-by: syzbot+f7b556d1766502a69d85071d2ff08bd87be53d0f@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org> # v2.6.25+
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b679d0e7d68540ba6dfa26ef7c965f18f38c37f8
Author: Eric Biggers <ebiggers@google.com>
Date:   Sat Feb 3 20:30:56 2018 -0800

    libata: fix length validation of ATAPI-relayed SCSI commands
    
    commit 058f58e235cbe03e923b30ea7c49995a46a8725f upstream.
    
    syzkaller reported a crash in ata_bmdma_fill_sg() when writing to
    /dev/sg1.  The immediate cause was that the ATA command's scatterlist
    was not DMA-mapped, which causes 'pi - 1' to underflow, resulting in a
    write to 'qc->ap->bmdma_prd[0xffffffff]'.
    
    Strangely though, the flag ATA_QCFLAG_DMAMAP was set in qc->flags.  The
    root cause is that when __ata_scsi_queuecmd() is preparing to relay a
    SCSI command to an ATAPI device, it doesn't correctly validate the CDB
    length before copying it into the 16-byte buffer 'cdb' in 'struct
    ata_queued_cmd'.  Namely, it validates the fixed CDB length expected
    based on the SCSI opcode but not the actual CDB length, which can be
    larger due to the use of the SG_NEXT_CMD_LEN ioctl.  Since 'flags' is
    the next member in ata_queued_cmd, a buffer overflow corrupts it.
    
    Fix it by requiring that the actual CDB length be <= 16 (ATAPI_CDB_LEN).
    
    [Really it seems the length should be required to be <= dev->cdb_len,
    but the current behavior seems to have been intentionally introduced by
    commit 607126c2a21c ("libata-scsi: be tolerant of 12-byte ATAPI commands
    in 16-byte CDBs") to work around a userspace bug in mplayer.  Probably
    the workaround is no longer needed (mplayer was fixed in 2007), but
    continuing to allow lengths to up 16 appears harmless for now.]
    
    Here's a reproducer that works in QEMU when /dev/sg1 refers to the
    CD-ROM drive that qemu-system-x86_64 creates by default:
    
        #include <fcntl.h>
        #include <sys/ioctl.h>
        #include <unistd.h>
    
        #define SG_NEXT_CMD_LEN 0x2283
    
        int main()
        {
                char buf[53] = { [36] = 0x7e, [52] = 0x02 };
                int fd = open("/dev/sg1", O_RDWR);
                ioctl(fd, SG_NEXT_CMD_LEN, &(int){ 17 });
                write(fd, buf, sizeof(buf));
        }
    
    The crash was:
    
        BUG: unable to handle kernel paging request at ffff8cb97db37ffc
        IP: ata_bmdma_fill_sg drivers/ata/libata-sff.c:2623 [inline]
        IP: ata_bmdma_qc_prep+0xa4/0xc0 drivers/ata/libata-sff.c:2727
        PGD fb6c067 P4D fb6c067 PUD 0
        Oops: 0002 [#1] SMP
        CPU: 1 PID: 150 Comm: syz_ata_bmdma_q Not tainted 4.15.0-next-20180202 #99
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.0-20171110_100015-anatol 04/01/2014
        [...]
        Call Trace:
         ata_qc_issue+0x100/0x1d0 drivers/ata/libata-core.c:5421
         ata_scsi_translate+0xc9/0x1a0 drivers/ata/libata-scsi.c:2024
         __ata_scsi_queuecmd drivers/ata/libata-scsi.c:4326 [inline]
         ata_scsi_queuecmd+0x8c/0x210 drivers/ata/libata-scsi.c:4375
         scsi_dispatch_cmd+0xa2/0xe0 drivers/scsi/scsi_lib.c:1727
         scsi_request_fn+0x24c/0x530 drivers/scsi/scsi_lib.c:1865
         __blk_run_queue_uncond block/blk-core.c:412 [inline]
         __blk_run_queue+0x3a/0x60 block/blk-core.c:432
         blk_execute_rq_nowait+0x93/0xc0 block/blk-exec.c:78
         sg_common_write.isra.7+0x272/0x5a0 drivers/scsi/sg.c:806
         sg_write+0x1ef/0x340 drivers/scsi/sg.c:677
         __vfs_write+0x31/0x160 fs/read_write.c:480
         vfs_write+0xa7/0x160 fs/read_write.c:544
         SYSC_write fs/read_write.c:589 [inline]
         SyS_write+0x4d/0xc0 fs/read_write.c:581
         do_syscall_64+0x5e/0x110 arch/x86/entry/common.c:287
         entry_SYSCALL_64_after_hwframe+0x21/0x86
    
    Fixes: 607126c2a21c ("libata-scsi: be tolerant of 12-byte ATAPI commands in 16-byte CDBs")
    Reported-by: syzbot+1ff6f9fcc3c35f1c72a95e26528c8e7e3276e4da@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org> # v2.6.24+
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ec32f585fefd7c154453aa29ccf8fa2a11cc865
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Mar 15 17:02:34 2018 +0100

    Bluetooth: btusb: Fix quirk for Atheros 1525/QCA6174
    
    commit f44cb4b19ed40b655c2d422c9021ab2c2625adb6 upstream.
    
    The Atheros 1525/QCA6174 BT doesn't seem working properly on the
    recent kernels, as it tries to load a wrong firmware
    ar3k/AthrBT_0x00000200.dfu and it fails.
    
    This seems to have been a problem for some time, and the known
    workaround is to apply BTUSB_QCA_ROM quirk instead of BTUSB_ATH3012.
    
    The device in question is:
    
    T: Bus=01 Lev=01 Prnt=01 Port=09 Cnt=03 Dev#=  4 Spd=12   MxCh= 0
    D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P: Vendor=0cf3 ProdID=3004 Rev= 0.01
    C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
    E: Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E: Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E: Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E: Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E: Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E: Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E: Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E: Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E: Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    
    Bugzilla: http://bugzilla.opensuse.org/show_bug.cgi?id=1082504
    Reported-by: Ivan Levshin <ivan.levshin@microfocus.com>
    Tested-by: Ivan Levshin <ivan.levshin@microfocus.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7f0ce743bfe5ef616948104a9429e9fda0391a2
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Thu Mar 1 13:42:52 2018 +0800

    Bluetooth: btusb: Add Dell OptiPlex 3060 to btusb_needs_reset_resume_table
    
    commit 0c6e526646c04ce31d4aaa280ed2237dd1cd774c upstream.
    
    The issue can be reproduced before commit fd865802c66b ("Bluetooth:
    btusb: fix QCA Rome suspend/resume") gets introduced, so the reset
    resume quirk is still needed for this system.
    
    T:  Bus=01 Lev=01 Prnt=01 Port=13 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
    D:  Ver= 2.01 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0cf3 ProdID=e007 Rev=00.01
    C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    Cc: stable@vger.kernel.org
    Cc: Brian Norris <briannorris@chromium.org>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee1195515988b22dda861a22b26862a9b03aaff7
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed Feb 28 11:57:50 2018 +0100

    Bluetooth: btusb: Remove Yoga 920 from the btusb_needs_reset_resume_table
    
    commit f0e8c61110c2c85903b136ba070daf643a8b6842 upstream.
    
    Commit 1fdb92697469 ("Bluetooth: btusb: Use DMI matching for QCA
    reset_resume quirking"), added the Lenovo Yoga 920 to the
    btusb_needs_reset_resume_table.
    
    Testing has shown that this is a false positive and the problems where
    caused by issues with the initial fix: commit fd865802c66b ("Bluetooth:
    btusb: fix QCA Rome suspend/resume"), which has already been reverted.
    
    So the QCA Rome BT in the Yoga 920 does not need a reset-resume quirk at
    all and this commit removes it from the btusb_needs_reset_resume_table.
    
    Note that after this commit the btusb_needs_reset_resume_table is now
    empty. It is kept around on purpose, since this whole series of commits
    started for a reason and there are actually broken platforms around,
    which need to be added to it.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1514836
    Fixes: 1fdb92697469 ("Bluetooth: btusb: Use DMI matching for QCA ...")
    Cc: stable@vger.kernel.org
    Cc: Brian Norris <briannorris@chromium.org>
    Cc: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Tested-by: Kevin Fenzi <kevin@scrye.com>
    Suggested-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c927e37a8579b8c8503004ccf6714cbee30161b
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Tue Feb 20 19:17:51 2018 +0100

    pinctrl: samsung: Validate alias coming from DT
    
    commit 93b0beae721b3344923b4b8317e9d83b542f4ca6 upstream.
    
    Driver uses alias from Device Tree as an index of pin controller data
    array.  In case of a wrong DTB or an out-of-tree DTB, the alias could be
    outside of this data array leading to out-of-bounds access.
    
    Depending on binary and memory layout, this could be handled properly
    (showing error like "samsung-pinctrl 3860000.pinctrl: driver data not
    available") or could lead to exceptions.
    
    Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: <stable@vger.kernel.org>
    Fixes: 30574f0db1b1 ("pinctrl: add samsung pinctrl and gpiolib driver")
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: Tomasz Figa <tomasz.figa@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98bb0e40fa7f62a45312ebc72e6d60040af41ed6
Author: Michael Kelley <mhkelley@outlook.com>
Date:   Sun Mar 4 22:24:08 2018 -0700

    Drivers: hv: vmbus: Fix ring buffer signaling
    
    commit 655296c8bbeffcf020558c4455305d597a73bde1 upstream.
    
    Fix bugs in signaling the Hyper-V host when freeing space in the
    host->guest ring buffer:
    
    1. The interrupt_mask must not be used to determine whether to signal
       on the host->guest ring buffer
    2. The ring buffer write_index must be read (via hv_get_bytes_to_write)
       *after* pending_send_sz is read in order to avoid a race condition
    3. Comparisons with pending_send_sz must treat the "equals" case as
       not-enough-space
    4. Don't signal if the pending_send_sz feature is not present. Older
       versions of Hyper-V that don't implement this feature will poll.
    
    Fixes: 03bad714a161 ("vmbus: more host signalling avoidance")
    
    Cc: Stable <stable@vger.kernel.org> # 4.14 and above
    Signed-off-by: Michael Kelley <mhkelley@outlook.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fe98b2177a90be4978d21d1dabdba3288b00e1f
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Mon Mar 12 21:26:37 2018 +0200

    RDMA/mlx5: Fix crash while accessing garbage pointer and freed memory
    
    commit f3f134f5260ae9ee1f5a4d0a8cc625c6c77655b4 upstream.
    
    The failure in rereg_mr flow caused to set garbage value (error value)
    into mr->umem pointer. This pointer is accessed at the release stage
    and it causes to the following crash.
    
    There is not enough to simply change umem to point to NULL, because the
    MR struct is needed to be accessed during MR deregistration phase, so
    delay kfree too.
    
    [    6.237617] BUG: unable to handle kernel NULL pointer dereference a 0000000000000228
    [    6.238756] IP: ib_dereg_mr+0xd/0x30
    [    6.239264] PGD 80000000167eb067 P4D 80000000167eb067 PUD 167f9067 PMD 0
    [    6.240320] Oops: 0000 [#1] SMP PTI
    [    6.240782] CPU: 0 PID: 367 Comm: dereg Not tainted 4.16.0-rc1-00029-gc198fafe0453 #183
    [    6.242120] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
    [    6.244504] RIP: 0010:ib_dereg_mr+0xd/0x30
    [    6.245253] RSP: 0018:ffffaf5d001d7d68 EFLAGS: 00010246
    [    6.246100] RAX: 0000000000000000 RBX: ffff95d4172daf00 RCX: 0000000000000000
    [    6.247414] RDX: 00000000ffffffff RSI: 0000000000000001 RDI: ffff95d41a317600
    [    6.248591] RBP: 0000000000000001 R08: 0000000000000000 R09: 0000000000000000
    [    6.249810] R10: ffff95d417033c10 R11: 0000000000000000 R12: ffff95d4172c3a80
    [    6.251121] R13: ffff95d4172c3720 R14: ffff95d4172c3a98 R15: 00000000ffffffff
    [    6.252437] FS:  0000000000000000(0000) GS:ffff95d41fc00000(0000) knlGS:0000000000000000
    [    6.253887] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [    6.254814] CR2: 0000000000000228 CR3: 00000000172b4000 CR4: 00000000000006b0
    [    6.255943] Call Trace:
    [    6.256368]  remove_commit_idr_uobject+0x1b/0x80
    [    6.257118]  uverbs_cleanup_ucontext+0xe4/0x190
    [    6.257855]  ib_uverbs_cleanup_ucontext.constprop.14+0x19/0x40
    [    6.258857]  ib_uverbs_close+0x2a/0x100
    [    6.259494]  __fput+0xca/0x1c0
    [    6.259938]  task_work_run+0x84/0xa0
    [    6.260519]  do_exit+0x312/0xb40
    [    6.261023]  ? __do_page_fault+0x24d/0x490
    [    6.261707]  do_group_exit+0x3a/0xa0
    [    6.262267]  SyS_exit_group+0x10/0x10
    [    6.262802]  do_syscall_64+0x75/0x180
    [    6.263391]  entry_SYSCALL_64_after_hwframe+0x21/0x86
    [    6.264253] RIP: 0033:0x7f1b39c49488
    [    6.264827] RSP: 002b:00007ffe2de05b68 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
    [    6.266049] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f1b39c49488
    [    6.267187] RDX: 0000000000000000 RSI: 000000000000003c RDI: 0000000000000000
    [    6.268377] RBP: 00007f1b39f258e0 R08: 00000000000000e7 R09: ffffffffffffff98
    [    6.269640] R10: 00007f1b3a147260 R11: 0000000000000246 R12: 00007f1b39f258e0
    [    6.270783] R13: 00007f1b39f2ac20 R14: 0000000000000000 R15: 0000000000000000
    [    6.271943] Code: 74 07 31 d2 e9 25 d8 6c 00 b8 da ff ff ff c3 0f 1f
    44 00 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 8b 07 53 48 8b
    5f 08 <48> 8b 80 28 02 00 00 e8 f7 d7 6c 00 85 c0 75 04 3e ff 4b 18 5b
    [    6.274927] RIP: ib_dereg_mr+0xd/0x30 RSP: ffffaf5d001d7d68
    [    6.275760] CR2: 0000000000000228
    [    6.276200] ---[ end trace a35641f1c474bd20 ]---
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Cc: syzkaller <syzkaller@googlegroups.com>
    Cc: <stable@vger.kernel.org>
    Reported-by: Noa Osherovich <noaos@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 808176cd9eebc1914044f255126f6f35fbb4ea2d
Author: Chen-Yu Tsai <wens@csie.org>
Date:   Sat Feb 17 21:05:04 2018 +0800

    clk: sunxi-ng: a31: Fix CLK_OUT_* clock ops
    
    commit 5682e268350f9eccdbb04006605c1b7068a7b323 upstream.
    
    When support for the A31/A31s CCU was first added, the clock ops for
    the CLK_OUT_* clocks was set to the wrong type. The clocks are MP-type,
    but the ops was set for div (M) clocks. This went unnoticed until now.
    This was because while they are different clocks, their data structures
    aligned in a way that ccu_div_ops would access the second ccu_div_internal
    and ccu_mux_internal structures, which were valid, if not incorrect.
    
    Furthermore, the use of these CLK_OUT_* was for feeding a precise 32.768
    kHz clock signal to the WiFi chip. This was achievable by using the parent
    with the same clock rate and no divider. So the incorrect divider setting
    did not affect this usage.
    
    Commit 946797aa3f08 ("clk: sunxi-ng: Support fixed post-dividers on MP
    style clocks") added a new field to the ccu_mp structure, which broke
    the aforementioned alignment. Now the system crashes as div_ops tries
    to look up a nonexistent table.
    
    Reported-by: Philipp Rossak <embed3d@gmail.com>
    Tested-by: Philipp Rossak <embed3d@gmail.com>
    Fixes: c6e6c96d8fa6 ("clk: sunxi-ng: Add A31/A31s clocks")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3c66b380218939b32b2335571a5c54013de4fab
Author: Boris Brezillon <boris.brezillon@bootlin.com>
Date:   Thu Feb 8 14:43:36 2018 +0100

    clk: bcm2835: Protect sections updating shared registers
    
    commit 7997f3b2df751aab0b8e60149b226a32966c41ac upstream.
    
    CM_PLLx and A2W_XOSC_CTRL registers are accessed by different clock
    handlers and must be accessed with ->regs_lock held.
    Update the sections where this protection is missing.
    
    Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31807899541066dc98ee595bf1c03aeb133e4364
Author: Boris Brezillon <boris.brezillon@bootlin.com>
Date:   Thu Feb 8 14:43:35 2018 +0100

    clk: bcm2835: Fix ana->maskX definitions
    
    commit 49012d1bf5f78782d398adb984a080a88ba42965 upstream.
    
    ana->maskX values are already '~'-ed in bcm2835_pll_set_rate(). Remove
    the '~' in the definition to fix ANA setup.
    
    Note that this commit fixes a long standing bug preventing one from
    using an HDMI display if it's plugged after the FW has booted Linux.
    This is because PLLH is used by the HDMI encoder to generate the pixel
    clock.
    
    Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb5cfed66ebcd8a1ad004e86a61e22c231aa00e4
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Thu Mar 22 16:17:10 2018 -0700

    lockdep: fix fs_reclaim warning
    
    commit 2e517d681632326ed98399cb4dd99519efe3e32c upstream.
    
    Dave Jones reported fs_reclaim lockdep warnings.
    
      ============================================
      WARNING: possible recursive locking detected
      4.15.0-rc9-backup-debug+ #1 Not tainted
      --------------------------------------------
      sshd/24800 is trying to acquire lock:
       (fs_reclaim){+.+.}, at: [<0000000084f438c2>] fs_reclaim_acquire.part.102+0x5/0x30
    
      but task is already holding lock:
       (fs_reclaim){+.+.}, at: [<0000000084f438c2>] fs_reclaim_acquire.part.102+0x5/0x30
    
      other info that might help us debug this:
       Possible unsafe locking scenario:
    
             CPU0
             ----
        lock(fs_reclaim);
        lock(fs_reclaim);
    
       *** DEADLOCK ***
    
       May be due to missing lock nesting notation
    
      2 locks held by sshd/24800:
       #0:  (sk_lock-AF_INET6){+.+.}, at: [<000000001a069652>] tcp_sendmsg+0x19/0x40
       #1:  (fs_reclaim){+.+.}, at: [<0000000084f438c2>] fs_reclaim_acquire.part.102+0x5/0x30
    
      stack backtrace:
      CPU: 3 PID: 24800 Comm: sshd Not tainted 4.15.0-rc9-backup-debug+ #1
      Call Trace:
       dump_stack+0xbc/0x13f
       __lock_acquire+0xa09/0x2040
       lock_acquire+0x12e/0x350
       fs_reclaim_acquire.part.102+0x29/0x30
       kmem_cache_alloc+0x3d/0x2c0
       alloc_extent_state+0xa7/0x410
       __clear_extent_bit+0x3ea/0x570
       try_release_extent_mapping+0x21a/0x260
       __btrfs_releasepage+0xb0/0x1c0
       btrfs_releasepage+0x161/0x170
       try_to_release_page+0x162/0x1c0
       shrink_page_list+0x1d5a/0x2fb0
       shrink_inactive_list+0x451/0x940
       shrink_node_memcg.constprop.88+0x4c9/0x5e0
       shrink_node+0x12d/0x260
       try_to_free_pages+0x418/0xaf0
       __alloc_pages_slowpath+0x976/0x1790
       __alloc_pages_nodemask+0x52c/0x5c0
       new_slab+0x374/0x3f0
       ___slab_alloc.constprop.81+0x47e/0x5a0
       __slab_alloc.constprop.80+0x32/0x60
       __kmalloc_track_caller+0x267/0x310
       __kmalloc_reserve.isra.40+0x29/0x80
       __alloc_skb+0xee/0x390
       sk_stream_alloc_skb+0xb8/0x340
       tcp_sendmsg_locked+0x8e6/0x1d30
       tcp_sendmsg+0x27/0x40
       inet_sendmsg+0xd0/0x310
       sock_write_iter+0x17a/0x240
       __vfs_write+0x2ab/0x380
       vfs_write+0xfb/0x260
       SyS_write+0xb6/0x140
       do_syscall_64+0x1e5/0xc05
       entry_SYSCALL64_slow_path+0x25/0x25
    
    This warning is caused by commit d92a8cfcb37e ("locking/lockdep:
    Rework FS_RECLAIM annotation") which replaced the use of
    lockdep_{set,clear}_current_reclaim_state() in __perform_reclaim()
    and lockdep_trace_alloc() in slab_pre_alloc_hook() with
    fs_reclaim_acquire()/ fs_reclaim_release().
    
    Since __kmalloc_reserve() from __alloc_skb() adds __GFP_NOMEMALLOC |
    __GFP_NOWARN to gfp_mask, and all reclaim path simply propagates
    __GFP_NOMEMALLOC, fs_reclaim_acquire() in slab_pre_alloc_hook() is
    trying to grab the 'fake' lock again when __perform_reclaim() already
    grabbed the 'fake' lock.
    
    The
    
      /* this guy won't enter reclaim */
      if ((current->flags & PF_MEMALLOC) && !(gfp_mask & __GFP_NOMEMALLOC))
              return false;
    
    test which causes slab_pre_alloc_hook() to try to grab the 'fake' lock
    was added by commit cf40bd16fdad ("lockdep: annotate reclaim context
    (__GFP_NOFS)").  But that test is outdated because PF_MEMALLOC thread
    won't enter reclaim regardless of __GFP_NOMEMALLOC after commit
    341ce06f69ab ("page allocator: calculate the alloc_flags for allocation
    only once") added the PF_MEMALLOC safeguard (
    
      /* Avoid recursion of direct reclaim */
      if (p->flags & PF_MEMALLOC)
              goto nopage;
    
    in __alloc_pages_slowpath()).
    
    Thus, let's fix outdated test by removing __GFP_NOMEMALLOC test and
    allow __need_fs_reclaim() to return false.
    
    Link: http://lkml.kernel.org/r/201802280650.FJC73911.FOSOMLJVFFQtHO@I-love.SAKURA.ne.jp
    Fixes: d92a8cfcb37ecd13 ("locking/lockdep: Rework FS_RECLAIM annotation")
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reported-by: Dave Jones <davej@codemonkey.org.uk>
    Tested-by: Dave Jones <davej@codemonkey.org.uk>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Nick Piggin <npiggin@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Nikolay Borisov <nborisov@suse.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: <stable@vger.kernel.org>    [4.14+]
    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 b5f2a5c3c09c397cd5d415994996d0045a37e903
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Mar 2 11:36:32 2018 +0100

    ahci: Add PCI-id for the Highpoint Rocketraid 644L card
    
    commit 28b2182dad43f6f8fcbd167539a26714fd12bd64 upstream.
    
    Like the Highpoint Rocketraid 642L and cards using a Marvel 88SE9235
    controller in general, this RAID card also supports AHCI mode and short
    of a custom driver, this is the only way to make it work under Linux.
    
    Note that even though the card is called to 644L, it has a product-id
    of 0x0645.
    
    Cc: stable@vger.kernel.org
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1534106
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23a6254a4ddfac222b15ef3eff363045c99c56dc
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Mar 2 11:36:33 2018 +0100

    PCI: Add function 1 DMA alias quirk for Highpoint RocketRAID 644L
    
    commit 1903be8222b7c278ca897c129ce477c1dd6403a8 upstream.
    
    The Highpoint RocketRAID 644L uses a Marvel 88SE9235 controller, as with
    other Marvel controllers this needs a function 1 DMA alias quirk.
    
    Note the RocketRAID 642L uses the same Marvel 88SE9235 controller and
    already is listed with a function 1 DMA alias quirk.
    
    Cc: stable@vger.kernel.org
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1534106
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b863a4deb8b76175717873ce329b43670e4b68d
Author: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
Date:   Wed Mar 14 22:30:51 2018 +0300

    mmc: dw_mmc: fix falling from idmac to PIO mode when dw_mci_reset occurs
    
    commit 47b7de2f6c18f75d1f2716efe752cba43f32a626 upstream.
    
    It was found that in IDMAC mode after soft-reset driver switches
    to PIO mode.
    
    That's what happens in case of DTO timeout overflow calculation failure:
    1. soft-reset is called
    2. driver restarts dma
    3. descriptors states are checked, one of descriptor is owned by the IDMAC.
    4. driver can't use DMA and then switches to PIO mode.
    
    Failure was already fixed in:
    https://www.spinics.net/lists/linux-mmc/msg48125.html.
    
    Behaviour while soft-reset is not something we except or
    even want to happen. So we switch from dw_mci_idmac_reset
    to dw_mci_idmac_init, so descriptors are cleaned before starting dma.
    
    And while at it explicitly zero des0 which otherwise might
    contain garbage as being allocated by dmam_alloc_coherent().
    
    Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
    Cc: Jaehoon Chung <jh80.chung@samsung.com>
    Cc: Ulf Hansson <ulf.hansson@linaro.org>
    Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
    Cc: Shawn Lin <shawn.lin@rock-chips.com>
    Cc: Alexey Brodkin <abrodkin@synopsys.com>
    Cc: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Cc: linux-snps-arc@lists.infradead.org
    Cc: <stable@vger.kernel.org> # 4.4+
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8049c2c413da2fed46a49d367d8dd4ac819b4a92
Author: Jaehoon Chung <jh80.chung@samsung.com>
Date:   Fri Mar 9 15:10:21 2018 +0900

    mmc: dw_mmc: exynos: fix the suspend/resume issue for exynos5433
    
    commit e22842dd64bf86753d3f2b6ea474d73fc1e6ca24 upstream.
    
    Before enabling the clock, dwmmc exynos driver is trying to access the
    register. Then the kernel panic can be occurred.
    
    Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
    Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
    Tested-by: Chanwoo Choi <cw00.choi@samsung.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4a2de90aeb6e56f81526cb3d7f87d16fc5788c8
Author: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
Date:   Wed Feb 28 14:53:18 2018 +0300

    mmc: dw_mmc: Fix the DTO/CTO timeout overflow calculation for 32-bit systems
    
    commit c7151602255a36ba07c84fe2baeef846fdb988b8 upstream.
    
    The commit 9d9491a7da2a ("mmc: dw_mmc: Fix the DTO timeout calculation")
    and commit 4c2357f57dd5 ("mmc: dw_mmc: Fix the CTO timeout calculation")
    made changes, which cause multiply overflow for 32-bit systems. The broken
    timeout calculations leads to unexpected ETIMEDOUT errors and causes
    stacktrace splat (such as below) during normal data exchange with SD-card.
    
    | Running :  4M-check-reassembly-tcp-cmykw2-rotatew2.out -v0 -w1
    | -  Info: Finished target initialization.
    | mmcblk0: error -110 transferring data, sector 320544, nr 2048, cmd
    | response 0x900, card status 0x0
    
    DIV_ROUND_UP_ULL helps to escape usage of __udivdi3() from libgcc and so
    code gets compiled on all 32-bit platforms as opposed to usage of
    DIV_ROUND_UP when we may only compile stuff on a very few arches.
    
    Lets cast this multiply to u64 type to prevent the overflow.
    
    Fixes: 9d9491a7da2a ("mmc: dw_mmc: Fix the DTO timeout calculation")
    Fixes: 4c2357f57dd5 ("mmc: dw_mmc: Fix the CTO timeout calculation")
    Tested-by: Vineet Gupta <Vineet.Gupta1@synopsys.com>
    Reported-by: Vineet Gupta <Vineet.Gupta1@synopsys.com> # ARC STAR 9001306872 HSDK, sdio: board crashes when copying big files
    Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
    Cc: <stable@vger.kernel.org> # 4.14
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
    Reviewed-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
    Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40888f31f9cf3b0dee0299533f50539c4953e5e2
Author: Bastian Stender <bst@pengutronix.de>
Date:   Thu Mar 8 15:08:11 2018 +0100

    mmc: block: fix updating ext_csd caches on ioctl call
    
    commit e74ef2194b41ba5e511fab29fe5ff00e72d2f42a upstream.
    
    PARTITION_CONFIG is cached in mmc_card->ext_csd.part_config and the
    currently active partition in mmc_blk_data->part_curr. These caches do
    not always reflect changes if the ioctl call modifies the
    PARTITION_CONFIG registers, e.g. by changing BOOT_PARTITION_ENABLE.
    
    Write the PARTITION_CONFIG value extracted from the ioctl call to the
    cache and update the currently active partition accordingly. This
    ensures that the user space cannot change the values behind the
    kernel's back. The next call to mmc_blk_part_switch() will operate on
    the data set by the ioctl and reflect the changes appropriately.
    
    Signed-off-by: Bastian Stender <bst@pengutronix.de>
    Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 836b7527a839b4fa4b2140550526738f4d9c26f2
Author: Dirk Behme <dirk.behme@de.bosch.com>
Date:   Wed Mar 14 14:50:09 2018 +0000

    mmc: core: Disable HPI for certain Micron (Numonyx) eMMC cards
    
    commit dbe7dc6b9b28f5b012b0bedc372aa0c52521f3e4 upstream.
    
    Certain Micron eMMC v4.5 cards might get broken when HPI feature is used
    and hence this patch disables the HPI feature for such buggy cards.
    
    In U-Boot, these cards are reported as
    
    Manufacturer: Micron (ID: 0xFE)
    OEM: 0x4E
    Name: MMC32G
    Revision: 19 (0x13)
    Serial: 959241022  Manufact. date: 8/2015 (0x82)  CRC: 0x00
    Tran Speed: 52000000
    Rd Block Len: 512
    MMC version 4.5
    High Capacity: Yes
    Capacity: 29.1 GiB
    Boot Partition Size: 16 MiB
    Bus Width: 8-bit
    
    According to JEDEC JEP106 manufacturer 0xFE is Numonyx, which was bought by
    Micron.
    
    Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com>
    Signed-off-by: Mark Craske <Mark_Craske@mentor.com>
    Cc: <stable@vger.kernel.org> # 4.8+
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e0ca4f53915694612c340c79568ed825e787b1f
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu Mar 15 11:22:28 2018 +0200

    mmc: core: Fix tracepoint print of blk_addr and blksz
    
    commit c658dc58c7eaa8569ceb0edd1ddbdfda84fe8aa5 upstream.
    
    Swap the positions of blk_addr and blksz in the tracepoint print arguments
    so that they match the print format.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Fixes: d2f82254e4e8 ("mmc: core: Add members to mmc_request and mmc_data for CQE's")
    Cc: <stable@vger.kernel.org> # 4.14+
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b49428a00020eb8f4584aa40e9caa073935a5863
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Mar 17 22:40:18 2018 +0100

    ALSA: hda/realtek - Always immediately update mute LED with pin VREF
    
    commit e40bdb03d3cd7da66bd0bc1e40cbcfb49351265c upstream.
    
    Some HP laptops have a mute mute LED controlled by a pin VREF.  The
    Realtek codec driver updates the VREF via vmaster hook by calling
    snd_hda_set_pin_ctl_cache().
    
    This works fine as long as the driver is running in a normal mode.
    However, when the VREF change happens during the codec being in
    runtime PM suspend, the regmap access will skip and postpone the
    actual register change.  This ends up with the unchanged LED status
    until the next runtime PM resume even if you change the Master mute
    switch.  (Interestingly, the machine keeps the LED status even after
    the codec goes into D3 -- but it's another story.)
    
    For improving this usability, let the driver temporarily powering up /
    down only during the pin VREF change.  This can be achieved easily by
    wrapping the call with snd_hda_power_up_pm() / *_down_pm().
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199073
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 291bebca94a0bfb752db5c9ca4a3ec3c8207cc33
Author: Kailang Yang <kailang@realtek.com>
Date:   Fri Mar 16 11:46:08 2018 +0800

    ALSA: hda/realtek - Fix Dell headset Mic can't record
    
    commit f0ba9d699e5ca2bcd07f70185d18720c4f1b597c upstream.
    
    This platform was hardware fixed type for CTIA type for headset port.
    Assigned 0x19 verb will fix can't record issue.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 953434bdd33e474e49d462c706e6f2e560215e6c
Author: Kailang Yang <kailang@realtek.com>
Date:   Wed Mar 14 16:08:57 2018 +0800

    ALSA: hda/realtek - Fix speaker no sound after system resume
    
    commit 88d42b2b45d7208cc872c2c9dec0b1ae6c6008d7 upstream.
    
    It will have a chance speaker no sound after system resume.
    To toggle NID 0x53 index 0x2 bit 15 will solve this issue.
    This usage will also suitable with ALC256.
    
    Fixes: 4a219ef8f370 ("ALSA: hda/realtek - Add ALC256 HP depop function")
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1082b81751dd6a4df80082ecd8809ba0205c0957
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Mar 21 10:06:13 2018 +0100

    ALSA: hda - Force polling mode on CFL for fixing codec communication
    
    commit a8d7bde23e7130686b76624b099f3e22dd38aef7 upstream.
    
    We've observed too long probe time with Coffee Lake (CFL) machines,
    and the likely cause is some communication problem between the
    HD-audio controller and the codec chips.  While the controller expects
    an IRQ wakeup for each codec response, it seems sometimes missing, and
    it takes one second for the controller driver to time out and read the
    response in the polling mode.
    
    Although we aren't sure about the real culprit yet, in this patch, we
    put a workaround by forcing the polling mode as default for CFL
    machines; the polling mode itself isn't too heavy, and much better
    than other workarounds initially suggested (e.g. disabling
    power-save), at least.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199007
    Fixes: e79b0006c45c ("ALSA: hda - Add Coffelake PCI ID")
    Reported-and-tested-by: Hui Wang <hui.wang@canonical.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 33cc51d03b60bb64c17b0bf5e9b0556a61f1889e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Mar 22 10:40:27 2018 +0100

    ALSA: aloop: Fix access to not-yet-ready substream via cable
    
    commit 8e6b1a72a75bb5067ccb6b56d8ca4aa3a300a64e upstream.
    
    In loopback_open() and loopback_close(), we assign and release the
    substream object to the corresponding cable in a racy way.  It's
    neither locked nor done in the right position.  The open callback
    assigns the substream before its preparation finishes, hence the other
    side of the cable may pick it up, which may lead to the invalid memory
    access.
    
    This patch addresses these: move the assignment to the end of the open
    callback, and wrap with cable->lock for avoiding concurrent accesses.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66ef51a5c40236c12c22c736369b05e5882cfd26
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Mar 22 08:56:06 2018 +0100

    ALSA: aloop: Sync stale timer before release
    
    commit 67a01afaf3d34893cf7d2ea19b34555d6abb7cb0 upstream.
    
    The aloop driver tries to stop the pending timer via timer_del() in
    the trigger callback and in the close callback.  The former is
    correct, as it's an atomic operation, while the latter expects that
    the timer gets really removed and proceeds the resource releases after
    that.  But timer_del() doesn't synchronize, hence the running timer
    may still access the released resources.
    
    A similar situation can be also seen in the prepare callback after
    trigger(STOP) where the prepare tries to re-initialize the things
    while a timer is still running.
    
    The problems like the above are seen indirectly in some syzkaller
    reports (although it's not 100% clear whether this is the only cause,
    as the race condition is quite narrow and not always easy to
    trigger).
    
    For addressing these issues, this patch adds the explicit alls of
    timer_del_sync() in some places, so that the pending timer is properly
    killed / synced.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 771782b6fb94aa49dc915fe3d3f547bc9d8abb8b
Author: Kirill Marinushkin <k.marinushkin@gmail.com>
Date:   Mon Mar 19 07:11:08 2018 +0100

    ALSA: usb-audio: Fix parsing descriptor of UAC2 processing unit
    
    commit a6618f4aedb2b60932d766bd82ae7ce866e842aa upstream.
    
    Currently, the offsets in the UAC2 processing unit descriptor are
    calculated incorrectly. It causes an issue when connecting the device which
    provides such a feature:
    
    ~~~~
    [84126.724420] usb 1-1.3.1: invalid Processing Unit descriptor (id 18)
    ~~~~
    
    After this patch is applied, the UAC2 processing unit inits w/o this error.
    
    Fixes: 23caaf19b11e ("ALSA: usb-mixer: Add support for Audio Class v2.0")
    Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32e6d1ee98ab05f0288a66f66febbe28c81a297d
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Mar 8 12:31:53 2018 +0300

    iio: adc: meson-saradc: unlock on error in meson_sar_adc_lock()
    
    commit 3c3e4b3a708a9d6451052e348981f37d2b3e92b0 upstream.
    
    The meson_sar_adc_lock() function is not supposed to hold the
    "indio_dev->mlock" on the error path.
    
    Fixes: 3adbf3427330 ("iio: adc: add a driver for the SAR ADC found in Amlogic Meson SoCs")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.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 e1db7d19c6faa48fc653220f3580d7c7a8e79a15
Author: Michael Nosthoff <committed@heine.so>
Date:   Fri Mar 9 10:02:45 2018 +0100

    iio: st_pressure: st_accel: pass correct platform data to init
    
    commit 8b438686a001db64c21782d04ef68111e53c45d9 upstream.
    
    Commit 7383d44b added a pointer pdata which get set to the default
    platform_data when non was defined in the device. But it did not
    pass this pointer to the st_sensors_init_sensor call but still
    used the maybe uninitialized platform_data from dev.
    
    This breaks initialization when no platform_data is given and
    the optional st,drdy-int-pin devicetree option is not set.
    
    This commit fixes this.
    
    Cc: stable@vger.kernel.org
    Fixes: 7383d44b ("iio: st_pressure: st_accel: Initialise sensor platform data properly")
    Signed-off-by: Michael Nosthoff <committed@heine.so>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 805a995cb8a37a6ed908cd7888782dddd70619f7
Author: Richard Lai <richard@richardman.com>
Date:   Sat Feb 17 16:28:24 2018 +0000

    iio: chemical: ccs811: Corrected firmware boot/application mode transition
    
    commit b91e146c38b003c899710ede6d05fc824675e386 upstream.
    
    CCS811 has different I2C register maps in boot and application mode. When
    CCS811 is in boot mode, register APP_START (0xF4) is used to transit the
    firmware state from boot to application mode. However, APP_START is not a
    valid register location when CCS811 is in application mode (refer to
    "CCS811 Bootloader Register Map" and "CCS811 Application Register Map" in
    CCS811 datasheet). The driver should not attempt to perform a write to
    APP_START while CCS811 is in application mode, as this is not a valid or
    documented register location.
    
    When prob function is being called, the driver assumes the CCS811 sensor
    is in boot mode, and attempts to perform a write to APP_START. Although
    CCS811 powers-up in boot mode, it may have already been transited to
    application mode by previous instances, e.g. unload and reload device
    driver by the system, or explicitly by user. Depending on the system
    design, CCS811 sensor may be permanently connected to system power source
    rather than power controlled by GPIO, hence it is possible that the sensor
    is never power reset, thus the firmware could be in either boot or
    application mode at any given time when driver prob function is being
    called.
    
    This patch checks the STATUS register before attempting to send a write to
    APP_START. Only if the firmware is not in application mode and has valid
    firmware application loaded, then it will continue to start transiting the
    firmware boot to application mode.
    
    Signed-off-by: Richard Lai <richard@richardman.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 f047d3d7f86dfac0ec4894ebd328f608cfe9d021
Author: Mathias Kresin <dev@kresin.me>
Date:   Fri Mar 16 21:27:30 2018 +0100

    MIPS: lantiq: ase: Enable MFD_SYSCON
    
    commit a821328c2f3003b908880792d71b2781b44fa53c upstream.
    
    Enable syscon to use it for the RCU MFD on Amazon SE as well.
    
    The Amazon SE also has similar reset controller system as Danube and
    XWAY and use their drivers mostly. As these drivers now need syscon also
    activate the syscon subsystem for for Amazon SE.
    
    Fixes: 2b6639d4c794 ("MIPS: lantiq: Enable MFD_SYSCON to be able to use it for the RCU MFD")
    Signed-off-by: Mathias Kresin <dev@kresin.me>
    Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
    Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: John Crispin <john@phrozen.org>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 4.14+
    Patchwork: https://patchwork.linux-mips.org/patch/18817/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea8cbb7cc71b2e6dc848ba33fe3a281443b78d5b
Author: Mathias Kresin <dev@kresin.me>
Date:   Fri Mar 16 21:27:29 2018 +0100

    MIPS: lantiq: Enable AHB Bus for USB
    
    commit 3223a5a7d3a606dcb7d9190a788b9544a45441ee upstream.
    
    On Danube and AR9 the USB core is connected though a AHB bus to the main
    system cross bar, hence we need to enable the gating clock of the AHB
    Bus as well to make the USB controller work.
    
    Fixes: dea54fbad332 ("phy: Add an USB PHY driver for the Lantiq SoCs using the RCU module")
    Signed-off-by: Mathias Kresin <dev@kresin.me>
    Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
    Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: John Crispin <john@phrozen.org>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 4.14+
    Patchwork: https://patchwork.linux-mips.org/patch/18814/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b26df69463235f7519ea3cb7bca7015b3012cd3
Author: Mathias Kresin <dev@kresin.me>
Date:   Fri Mar 16 21:27:28 2018 +0100

    MIPS: lantiq: Fix Danube USB clock
    
    commit 214cbc14734958fe533916fdb4194f5983ad4bc4 upstream.
    
    On Danube the USB0 controller registers are at 1e101000 and the USB0 PHY
    register is at 1f203018 similar to all other lantiq SoCs. Activate the
    USB controller gating clock thorough the USB controller driver and not
    the PHY.
    
    This fixes a problem introduced in a previous commit.
    
    Fixes: dea54fbad332 ("phy: Add an USB PHY driver for the Lantiq SoCs using the RCU module")
    Signed-off-by: Mathias Kresin <dev@kresin.me>
    Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
    Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: John Crispin <john@phrozen.org>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 4.14+
    Patchwork: https://patchwork.linux-mips.org/patch/18816/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2dcbf520510c3c18fa156c6de58c87a1349e7efb
Author: NeilBrown <neil@brown.name>
Date:   Wed Mar 21 14:02:10 2018 +1100

    MIPS: ralink: Fix booting on MT7621
    
    commit a63d706ea719190a79a6c769e898f70680044d3e upstream.
    
    Since commit 3af5a67c86a3 ("MIPS: Fix early CM probing") the MT7621 has
    not been able to boot.
    
    This commit caused mips_cm_probe() to be called before
    mt7621.c::proc_soc_init().
    
    prom_soc_init() has a comment explaining that mips_cm_probe() "wipes out
    the bootloader config" and means that configuration registers are no
    longer available. It has some code to re-enable this config.
    
    Before this re-enable code is run, the sysc register cannot be read, so
    when SYSC_REG_CHIP_NAME0 is read, a garbage value is returned and
    panic() is called.
    
    If we move the config-repair code to the top of prom_soc_init(), the
    registers can be read and boot can proceed.
    
    Very occasionally, the first register read after the reconfiguration
    returns garbage, so add a call to __sync().
    
    Fixes: 3af5a67c86a3 ("MIPS: Fix early CM probing")
    Signed-off-by: NeilBrown <neil@brown.name>
    Reviewed-by: Matt Redfearn <matt.redfearn@mips.com>
    Cc: John Crispin <john@phrozen.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 4.5+
    Patchwork: https://patchwork.linux-mips.org/patch/18859/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb43da3ac012cd4aea0f1a0ca17b9b634a8198f4
Author: NeilBrown <neil@brown.name>
Date:   Tue Mar 20 19:29:51 2018 +1100

    MIPS: ralink: Remove ralink_halt()
    
    commit 891731f6a5dbe508d12443175a7e166a2fba616a upstream.
    
    ralink_halt() does nothing that machine_halt() doesn't already do, so it
    adds no value.
    
    It actually causes incorrect behaviour due to the "unreachable()" at the
    end. This tells the compiler that the end of the function will never be
    reached, which isn't true. The compiler responds by not adding a
    'return' instruction, so control simply moves on to whatever bytes come
    afterwards in memory. In my tested, that was the ralink_restart()
    function. This means that an attempt to 'halt' the machine would
    actually cause a reboot.
    
    So remove ralink_halt() so that a 'halt' really does halt.
    
    Fixes: c06e836ada59 ("MIPS: ralink: adds reset code")
    Signed-off-by: NeilBrown <neil@brown.name>
    Cc: John Crispin <john@phrozen.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 3.9+
    Patchwork: https://patchwork.linux-mips.org/patch/18851/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>