commit aec8e72ebde913a205f5c466d718bd5fe14ab440
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Mar 28 18:40:17 2018 +0200

    Linux 4.4.125

commit b3ca20cba49a9cc656f70b6ffbea4b5098f90aa2
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 c9ea2f8af67399904fe9c72ab5192a0c0ae7f2bf
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 cbb5420a2fc021a8827bdf06ec38828bf1b43dc8
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 0de8df2e32c33e1b1d3a8ac2e5781f271c3f6206
Author: Nadav Amit <namit@vmware.com>
Date:   Tue Sep 5 20:25:25 2017 +0000

    staging: lustre: ptlrpc: kfree used instead of kvfree
    
    commit c3eec59659cf25916647d2178c541302bb4822ad upstream.
    
    rq_reqbuf is allocated using kvmalloc() but released in one occasion
    using kfree() instead of kvfree().
    
    The issue was found using grep based on a similar bug.
    
    Fixes: d7e09d0397e8 ("add Lustre file system client support")
    Fixes: ee0ec1946ec2 ("lustre: ptlrpc: Replace uses of OBD_{ALLOC,FREE}_LARGE")
    
    Cc: Peng Tao <bergwolf@gmail.com>
    Cc: Oleg Drokin <oleg.drokin@intel.com>
    Cc: James Simmons <jsimmons@infradead.org>
    
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95cdf6bdceddcbefeba6a15b488d816aab4ac203
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 c6fe55e30bb6d431ee56cd4bbb582e30766c5e0e
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 b18864167de00eb04820d1f7c6fa04bacbba43e7
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 073bb7ddd35ca8f17a170258dacbe384935a43c8
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 5e4e65a940c91b61bfaf8d6e4448522577beb5ef
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 a0a00395f4f29c0bb52450d800d91d713294944c
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 651ac6ccf0616b56eee5b3c8e05bb27e5e245f4d
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 2347221a6174ece34e161545c76f6f29991b5c83
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 e41a696498abaf4001ca42ce1dbc585b8ecdd96a
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 badf74b65fc27112f5fee871c7ade9199c74b2e1
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 97acf77bc1743233920239ac9658fe6d525f9d00
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 79eb32ec31ae572934361619be980c601ce0d1eb
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 52226763072f1a2b9b4a1b00380401391ca0ab38
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 1e0b98b438715596ea68b1e1cc7832be4591242d
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 8f4fb489b775398373e8caa44c4e97b91a4a1be2
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 224eaa8a8e644e0d3df35fe232b08fd8fead8864
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 20b74f2b70b0909709d03c36f78afd9b9c7ce4e6
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 9c6c892ed8e50f22341d654e1faa6ef570c9207d
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 0972e0f0ea83874181c803936dfed55afb525f89
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 31895cfd79564111cdd5a9f48c5d491ae26a238e
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>
    [ tweak arm64 portion to rely on CONFIG_ARCH_HAVE_HUGE_VMAP - gregkh]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc0d81cf45b3d8215c1d10079ee73365d79b5555
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 e32afd336f726144375d5763949004514ae1cb10
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 4c1c7a8283e6e8c2d1dc6f434dcdcf20e570209a
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 f2e5f241e3396d3a638cbe980a5c781ed64f50dd
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 6ebd126d886d2f584c989769551ae0f2b6f2e087
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 2b69573ceefabd7c20d72ade03fb89b49f994543
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 5442db31a2b3efd6897d7ccb6be7dd772137dd8c
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 e80ce18ad70635adf5d9ae02df6af16e7f5f0621
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 b5533179e758b63161159086dce94a5710ff76c8
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 0ff603268b01f27cb31d58738c5b33dfdcd1d923
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 e298da755cdf4d2e08b27c4c8cc06ad360aa0fff
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 494644c5c334b52a2931ddfa0afa4f5766ba5d49
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 aaf6dfbd400003397509933c02228da1920e22ca
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 ae5b14170ef12f5013f6dcee7710197baf9a7bc8
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 5e6d308ff7789933d7b4003bc250de402ea311b4
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 eba92f154208004eacaa4fb7f83009766571f142
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 87eccc3cd1e0c3da222e047f0ce0ede65638f1fd
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 8e1f1062d9f9b564cef3b2c36a6e86568c27b86e
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 f56bf442fbc1aa43e24846c3bd322b6e3c79d57b
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>