commit 43a69271f55a952895915b69f6c50c90c4abdbcd
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Feb 28 10:16:18 2018 +0100

    Linux 3.18.97

commit 8f4007a46b309d127b29e0b330b2febc9ade6875
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Feb 26 10:43:09 2018 -0800

    ASN.1: fix out-of-bounds read when parsing indefinite length item
    
    commit e0058f3a874ebb48b25be7ff79bc3b4e59929f90 upstream.
    
    In asn1_ber_decoder(), indefinitely-sized ASN.1 items were being passed
    to the action functions before their lengths had been computed, using
    the bogus length of 0x80 (ASN1_INDEFINITE_LENGTH).  This resulted in
    reading data past the end of the input buffer, when given a specially
    crafted message.
    
    Fix it by rearranging the code so that the indefinite length is resolved
    before the action is called.
    
    This bug was originally found by fuzzing the X.509 parser in userspace
    using libFuzzer from the LLVM project.
    
    KASAN report (cleaned up slightly):
    
        BUG: KASAN: slab-out-of-bounds in memcpy ./include/linux/string.h:341 [inline]
        BUG: KASAN: slab-out-of-bounds in x509_fabricate_name.constprop.1+0x1a4/0x940 crypto/asymmetric_keys/x509_cert_parser.c:366
        Read of size 128 at addr ffff880035dd9eaf by task keyctl/195
    
        CPU: 1 PID: 195 Comm: keyctl Not tainted 4.14.0-09238-g1d3b78bbc6e9 #26
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.0-20171110_100015-anatol 04/01/2014
        Call Trace:
         __dump_stack lib/dump_stack.c:17 [inline]
         dump_stack+0xd1/0x175 lib/dump_stack.c:53
         print_address_description+0x78/0x260 mm/kasan/report.c:252
         kasan_report_error mm/kasan/report.c:351 [inline]
         kasan_report+0x23f/0x350 mm/kasan/report.c:409
         memcpy+0x1f/0x50 mm/kasan/kasan.c:302
         memcpy ./include/linux/string.h:341 [inline]
         x509_fabricate_name.constprop.1+0x1a4/0x940 crypto/asymmetric_keys/x509_cert_parser.c:366
         asn1_ber_decoder+0xb4a/0x1fd0 lib/asn1_decoder.c:447
         x509_cert_parse+0x1c7/0x620 crypto/asymmetric_keys/x509_cert_parser.c:89
         x509_key_preparse+0x61/0x750 crypto/asymmetric_keys/x509_public_key.c:174
         asymmetric_key_preparse+0xa4/0x150 crypto/asymmetric_keys/asymmetric_type.c:388
         key_create_or_update+0x4d4/0x10a0 security/keys/key.c:850
         SYSC_add_key security/keys/keyctl.c:122 [inline]
         SyS_add_key+0xe8/0x290 security/keys/keyctl.c:62
         entry_SYSCALL_64_fastpath+0x1f/0x96
    
        Allocated by task 195:
         __do_kmalloc_node mm/slab.c:3675 [inline]
         __kmalloc_node+0x47/0x60 mm/slab.c:3682
         kvmalloc ./include/linux/mm.h:540 [inline]
         SYSC_add_key security/keys/keyctl.c:104 [inline]
         SyS_add_key+0x19e/0x290 security/keys/keyctl.c:62
         entry_SYSCALL_64_fastpath+0x1f/0x96
    
    Fixes: 42d5ec27f873 ("X.509: Add an ASN.1 decoder")
    Reported-by: Alexander Potapenko <glider@google.com>
    Cc: <stable@vger.kernel.org> # v3.7+
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5873f621b20035f96d9c2ea983be920c642997b6
Author: Jack Pham <jackp@codeaurora.org>
Date:   Wed Jan 24 00:11:53 2018 -0800

    usb: gadget: f_fs: Process all descriptors during bind
    
    commit 6cf439e0d37463e42784271179c8a308fd7493c6 upstream.
    
    During _ffs_func_bind(), the received descriptors are evaluated
    to prepare for binding with the gadget in order to allocate
    endpoints and optionally set up OS descriptors. However, the
    high- and super-speed descriptors are only parsed based on
    whether the gadget_is_dualspeed() and gadget_is_superspeed()
    calls are true, respectively.
    
    This is a problem in case a userspace program always provides
    all of the {full,high,super,OS} descriptors when configuring a
    function. Then, for example if a gadget device is not capable
    of SuperSpeed, the call to ffs_do_descs() for the SS descriptors
    is skipped, resulting in an incorrect offset calculation for
    the vla_ptr when moving on to the OS descriptors that follow.
    This causes ffs_do_os_descs() to fail as it is now looking at
    the SS descriptors' offset within the raw_descs buffer instead.
    
    _ffs_func_bind() should evaluate the descriptors unconditionally,
    so remove the checks for gadget speed.
    
    Fixes: f0175ab51993 ("usb: gadget: f_fs: OS descriptors support")
    Cc: stable@vger.kernel.org
    Co-Developed-by: Mayank Rana <mrana@codeaurora.org>
    Signed-off-by: Mayank Rana <mrana@codeaurora.org>
    Signed-off-by: Jack Pham <jackp@codeaurora.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b10a48805f9ac1dd745fc09aecb966dd81e6a08
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Fri Jan 12 18:18:05 2018 -0800

    usb: dwc3: gadget: Set maxpacket size for ep0 IN
    
    commit 6180026341e852a250e1f97ebdcf71684a3c81b9 upstream.
    
    There are 2 control endpoint structures for DWC3. However, the driver
    only updates the OUT direction control endpoint structure during
    ConnectDone event. DWC3 driver needs to update the endpoint max packet
    size for control IN endpoint as well. If the max packet size is not
    properly set, then the driver will incorrectly calculate the data
    transfer size and fail to send ZLP for HS/FS 3-stage control read
    transfer.
    
    The fix is simply to update the max packet size for the ep0 IN direction
    during ConnectDone event.
    
    Cc: stable@vger.kernel.org
    Fixes: 72246da40f37 ("usb: Introduce DesignWare USB3 DRD Driver")
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e3e6fe2e8b501df5c80043dcf71d5ff7bf9b34b
Author: Michael Weiser <michael.weiser@gmx.de>
Date:   Thu Feb 1 23:13:38 2018 +0100

    arm64: Disable unhandled signal log messages by default
    
    commit 5ee39a71fd89ab7240c5339d04161c44a8e03269 upstream.
    
    aarch64 unhandled signal kernel messages are very verbose, suggesting
    them to be more of a debugging aid:
    
    sigsegv[33]: unhandled level 2 translation fault (11) at 0x00000000, esr
    0x92000046, in sigsegv[400000+71000]
    CPU: 1 PID: 33 Comm: sigsegv Tainted: G        W        4.15.0-rc3+ #3
    Hardware name: linux,dummy-virt (DT)
    pstate: 60000000 (nZCv daif -PAN -UAO)
    pc : 0x4003f4
    lr : 0x4006bc
    sp : 0000fffffe94a060
    x29: 0000fffffe94a070 x28: 0000000000000000
    x27: 0000000000000000 x26: 0000000000000000
    x25: 0000000000000000 x24: 00000000004001b0
    x23: 0000000000486ac8 x22: 00000000004001c8
    x21: 0000000000000000 x20: 0000000000400be8
    x19: 0000000000400b30 x18: 0000000000484728
    x17: 000000000865ffc8 x16: 000000000000270f
    x15: 00000000000000b0 x14: 0000000000000002
    x13: 0000000000000001 x12: 0000000000000000
    x11: 0000000000000000 x10: 0008000020008008
    x9 : 000000000000000f x8 : ffffffffffffffff
    x7 : 0004000000000000 x6 : ffffffffffffffff
    x5 : 0000000000000000 x4 : 0000000000000000
    x3 : 00000000004003e4 x2 : 0000fffffe94a1e8
    x1 : 000000000000000a x0 : 0000000000000000
    
    Disable them by default, so they can be enabled using
    /proc/sys/debug/exception-trace.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 698d39dc3272a6344ab6cd1b440045acf35d2829
Author: Shanker Donthineni <shankerd@codeaurora.org>
Date:   Wed Jan 31 18:03:42 2018 -0600

    irqchip/gic-v3: Use wmb() instead of smb_wmb() in gic_raise_softirq()
    
    commit 21ec30c0ef5234fb1039cc7c7737d885bf875a9e upstream.
    
    A DMB instruction can be used to ensure the relative order of only
    memory accesses before and after the barrier. Since writes to system
    registers are not memory operations, barrier DMB is not sufficient
    for observability of memory accesses that occur before ICC_SGI1R_EL1
    writes.
    
    A DSB instruction ensures that no instructions that appear in program
    order after the DSB instruction, can execute until the DSB instruction
    has completed.
    
    Cc: stable@vger.kernel.org
    Acked-by: Will Deacon <will.deacon@arm.com>,
    Signed-off-by: Shanker Donthineni <shankerd@codeaurora.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 871950f437a93465560b2f38af16c42e9f8b9c60
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Feb 20 21:58:21 2018 +0100

    x86/oprofile: Fix bogus GCC-8 warning in nmi_setup()
    
    commit 85c615eb52222bc5fab6c7190d146bc59fac289e upstream.
    
    GCC-8 shows a warning for the x86 oprofile code that copies per-CPU
    data from CPU 0 to all other CPUs, which when building a non-SMP
    kernel turns into a memcpy() with identical source and destination
    pointers:
    
     arch/x86/oprofile/nmi_int.c: In function 'mux_clone':
     arch/x86/oprofile/nmi_int.c:285:2: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
       memcpy(per_cpu(cpu_msrs, cpu).multiplex,
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              per_cpu(cpu_msrs, 0).multiplex,
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              sizeof(struct op_msr) * model->num_virt_counters);
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     arch/x86/oprofile/nmi_int.c: In function 'nmi_setup':
     arch/x86/oprofile/nmi_int.c:466:3: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
     arch/x86/oprofile/nmi_int.c:470:3: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
    
    I have analyzed a number of such warnings now: some are valid and the
    GCC warning is welcome. Others turned out to be false-positives, and
    GCC was changed to not warn about those any more. This is a corner case
    that is a false-positive but the GCC developers feel it's better to keep
    warning about it.
    
    In this case, it seems best to work around it by telling GCC
    a little more clearly that this code path is never hit with
    an IS_ENABLED() configuration check.
    
    Cc:stable as we also want old kernels to build cleanly with GCC-8.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Cc: Jessica Yu <jeyu@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Martin Sebor <msebor@gcc.gnu.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Robert Richter <rric@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: oprofile-list@lists.sf.net
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20180220205826.2008875-1-arnd@arndb.de
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84095
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 007436bff749ec6c204ff8232abe4903537bca56
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Wed Feb 14 15:43:00 2018 +0100

    iio: adis_lib: Initialize trigger before requesting interrupt
    
    commit f027e0b3a774e10302207e91d304bbf99e3a8b36 upstream.
    
    The adis_probe_trigger() creates a new IIO trigger and requests an
    interrupt associated with the trigger. The interrupt uses the generic
    iio_trigger_generic_data_rdy_poll() function as its interrupt handler.
    
    Currently the driver initializes some fields of the trigger structure after
    the interrupt has been requested. But an interrupt can fire as soon as it
    has been requested. This opens up a race condition.
    
    iio_trigger_generic_data_rdy_poll() will access the trigger data structure
    and dereference the ops field. If the ops field is not yet initialized this
    will result in a NULL pointer deref.
    
    It is not expected that the device generates an interrupt at this point, so
    typically this issue did not surface unless e.g. due to a hardware
    misconfiguration (wrong interrupt number, wrong polarity, etc.).
    
    But some newer devices from the ADIS family start to generate periodic
    interrupts in their power-on reset configuration and unfortunately the
    interrupt can not be masked in the device.  This makes the race condition
    much more visible and the following crash has been observed occasionally
    when booting a system using the ADIS16460.
    
            Unable to handle kernel NULL pointer dereference at virtual address 00000008
            pgd = c0004000
            [00000008] *pgd=00000000
            Internal error: Oops: 5 [#1] PREEMPT SMP ARM
            Modules linked in:
            CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.0-04126-gf9739f0-dirty #257
            Hardware name: Xilinx Zynq Platform
            task: ef04f640 task.stack: ef050000
            PC is at iio_trigger_notify_done+0x30/0x68
            LR is at iio_trigger_generic_data_rdy_poll+0x18/0x20
            pc : [<c042d868>]    lr : [<c042d924>]    psr: 60000193
            sp : ef051bb8  ip : 00000000  fp : ef106400
            r10: c081d80a  r9 : ef3bfa00  r8 : 00000087
            r7 : ef051bec  r6 : 00000000  r5 : ef3bfa00  r4 : ee92ab00
            r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : ee97e400
            Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment none
            Control: 18c5387d  Table: 0000404a  DAC: 00000051
            Process swapper/0 (pid: 1, stack limit = 0xef050210)
            [<c042d868>] (iio_trigger_notify_done) from [<c0065b10>] (__handle_irq_event_percpu+0x88/0x118)
            [<c0065b10>] (__handle_irq_event_percpu) from [<c0065bbc>] (handle_irq_event_percpu+0x1c/0x58)
            [<c0065bbc>] (handle_irq_event_percpu) from [<c0065c30>] (handle_irq_event+0x38/0x5c)
            [<c0065c30>] (handle_irq_event) from [<c0068e28>] (handle_level_irq+0xa4/0x130)
            [<c0068e28>] (handle_level_irq) from [<c0064e74>] (generic_handle_irq+0x24/0x34)
            [<c0064e74>] (generic_handle_irq) from [<c021ab7c>] (zynq_gpio_irqhandler+0xb8/0x13c)
            [<c021ab7c>] (zynq_gpio_irqhandler) from [<c0064e74>] (generic_handle_irq+0x24/0x34)
            [<c0064e74>] (generic_handle_irq) from [<c0065370>] (__handle_domain_irq+0x5c/0xb4)
            [<c0065370>] (__handle_domain_irq) from [<c000940c>] (gic_handle_irq+0x48/0x8c)
            [<c000940c>] (gic_handle_irq) from [<c0013e8c>] (__irq_svc+0x6c/0xa8)
    
    To fix this make sure that the trigger is fully initialized before
    requesting the interrupt.
    
    Fixes: ccd2b52f4ac6 ("staging:iio: Add common ADIS library")
    Reported-by: Robin Getz <Robin.Getz@analog.com>
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2433724adee7eac0f461d17afeb84f06c9b48973
Author: Stefan Windfeldt-Prytz <stefan.windfeldt@axis.com>
Date:   Thu Feb 15 15:02:53 2018 +0100

    iio: buffer: check if a buffer has been set up when poll is called
    
    commit 4cd140bda6494543f1c1b0ccceceaa44b676eef6 upstream.
    
    If no iio buffer has been set up and poll is called return 0.
    Without this check there will be a null pointer dereference when
    calling poll on a iio driver without an iio buffer.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Stefan Windfeldt-Prytz <stefan.windfeldt@axis.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8db7b0d70256505acedc6fe072cfcbf6116545d
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Feb 2 16:31:23 2018 +0100

    cfg80211: fix cfg80211_beacon_dup
    
    commit bee92d06157fc39d5d7836a061c7d41289a55797 upstream.
    
    gcc-8 warns about some obviously incorrect code:
    
    net/mac80211/cfg.c: In function 'cfg80211_beacon_dup':
    net/mac80211/cfg.c:2896:3: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
    
    From the context, I conclude that we want to copy from beacon into
    new_beacon, as we do in the rest of the function.
    
    Cc: stable@vger.kernel.org
    Fixes: 73da7d5bab79 ("mac80211: add channel switch command and beacon callbacks")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d31ba11742c8d99dd30b257e68d3f20e31062b8
Author: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Date:   Tue Jan 23 20:11:32 2018 -0600

    scsi: ibmvfc: fix misdefined reserved field in ibmvfc_fcp_rsp_info
    
    commit c39813652700f3df552b6557530f1e5f782dbe2f upstream.
    
    The fcp_rsp_info structure as defined in the FC spec has an initial 3
    bytes reserved field. The ibmvfc driver mistakenly defined this field as
    4 bytes resulting in the rsp_code field being defined in what should be
    the start of the second reserved field and thus always being reported as
    zero by the driver.
    
    Ideally, we should wire ibmvfc up with libfc for the sake of code
    deduplication, and ease of maintaining standardized structures in a
    single place. However, for now simply fixup the definition in ibmvfc for
    backporting to distros on older kernels. Wiring up with libfc will be
    done in a followup patch.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95cfcdfb93a4f0ac1cf6bdccf28fa0f273b0672b
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Nov 17 14:38:31 2017 +0100

    PCI: keystone: Fix interrupt-controller-node lookup
    
    commit eac56aa3bc8af3d9b9850345d0f2da9d83529134 upstream.
    
    Fix child-node lookup during initialisation which was using the wrong
    OF-helper and ended up searching the whole device tree depth-first
    starting at the parent rather than just matching on its children.
    
    To make things worse, the parent pci node could end up being prematurely
    freed as of_find_node_by_name() drops a reference to its first argument.
    Any matching child interrupt-controller node was also leaked.
    
    Fixes: 0c4ffcfe1fbc ("PCI: keystone: Add TI Keystone PCIe driver")
    Cc: stable <stable@vger.kernel.org>     # 3.18
    Acked-by: Murali Karicheri <m-karicheri2@ti.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [lorenzo.pieralisi@arm.com: updated commit subject]
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    [johan: backport to 4.4]
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6265f8b11f6a72e3b5a8f2da2b172e9dfa542793
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Feb 8 12:19:00 2018 +0100

    netfilter: drop outermost socket lock in getsockopt()
    
    commit 01ea306f2ac2baff98d472da719193e738759d93 upstream.
    
    The Syzbot reported a possible deadlock in the netfilter area caused by
    rtnl lock, xt lock and socket lock being acquired with a different order
    on different code paths, leading to the following backtrace:
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    
    ======================================================
    WARNING: possible circular locking dependency detected
    4.15.0+ #301 Not tainted
    ------------------------------------------------------
    syzkaller233489/4179 is trying to acquire lock:
      (rtnl_mutex){+.+.}, at: [<0000000048e996fd>] rtnl_lock+0x17/0x20
    net/core/rtnetlink.c:74
    
    but task is already holding lock:
      (&xt[i].mutex){+.+.}, at: [<00000000328553a2>]
    xt_find_table_lock+0x3e/0x3e0 net/netfilter/x_tables.c:1041
    
    which lock already depends on the new lock.
    ===
    
    Since commit 3f34cfae1230 ("netfilter: on sockopt() acquire sock lock
    only in the required scope"), we already acquire the socket lock in
    the innermost scope, where needed. In such commit I forgot to remove
    the outer-most socket lock from the getsockopt() path, this commit
    addresses the issues dropping it now.
    
    v1 -> v2: fix bad subj, added relavant 'fixes' tag
    
    Fixes: 22265a5c3c10 ("netfilter: xt_TEE: resolve oif using netdevice notifiers")
    Fixes: 202f59afd441 ("netfilter: ipt_CLUSTERIP: do not hold dev")
    Fixes: 3f34cfae1230 ("netfilter: on sockopt() acquire sock lock only in the required scope")
    Reported-by: syzbot+ddde1c7b7ff7442d7f2d@syzkaller.appspotmail.com
    Suggested-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Tested-by: Krzysztof Piotr Oledzki <ole@ans.pl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>