commit 60a8261b1257b6ef226f572b34cffc7b5cb359c7
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Sep 13 14:04:00 2017 -0700

    Linux 3.18.71

commit b766f0849a52e235268f362b7d8ec8bc36cdc7f0
Author: Richard Wareing <rwareing@fb.com>
Date:   Wed Sep 13 09:09:35 2017 +1000

    xfs: XFS_IS_REALTIME_INODE() should be false if no rt device present
    
    commit b31ff3cdf540110da4572e3e29bd172087af65cc upstream.
    
    If using a kernel with CONFIG_XFS_RT=y and we set the RHINHERIT flag on
    a directory in a filesystem that does not have a realtime device and
    create a new file in that directory, it gets marked as a real time file.
    When data is written and a fsync is issued, the filesystem attempts to
    flush a non-existent rt device during the fsync process.
    
    This results in a crash dereferencing a null buftarg pointer in
    xfs_blkdev_issue_flush():
    
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
      IP: xfs_blkdev_issue_flush+0xd/0x20
      .....
      Call Trace:
        xfs_file_fsync+0x188/0x1c0
        vfs_fsync_range+0x3b/0xa0
        do_fsync+0x3d/0x70
        SyS_fsync+0x10/0x20
        do_syscall_64+0x4d/0xb0
        entry_SYSCALL64_slow_path+0x25/0x25
    
    Setting RT inode flags does not require special privileges so any
    unprivileged user can cause this oops to occur.  To reproduce, confirm
    kernel is compiled with CONFIG_XFS_RT=y and run:
    
      # mkfs.xfs -f /dev/pmem0
      # mount /dev/pmem0 /mnt/test
      # mkdir /mnt/test/foo
      # xfs_io -c 'chattr +t' /mnt/test/foo
      # xfs_io -f -c 'pwrite 0 5m' -c fsync /mnt/test/foo/bar
    
    Or just run xfstests with MKFS_OPTIONS="-d rtinherit=1" and wait.
    
    Kernels built with CONFIG_XFS_RT=n are not exposed to this bug.
    
    Fixes: f538d4da8d52 ("[XFS] write barrier support")
    Signed-off-by: Richard Wareing <rwareing@fb.com>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43d51814b7b3d57fbf7bac41f1f495adca6cd7f9
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Tue Aug 22 11:36:17 2017 +0100

    ARM: 8692/1: mm: abort uaccess retries upon fatal signal
    
    commit 746a272e44141af24a02f6c9b0f65f4c4598ed42 upstream.
    
    When there's a fatal signal pending, arm's do_page_fault()
    implementation returns 0. The intent is that we'll return to the
    faulting userspace instruction, delivering the signal on the way.
    
    However, if we take a fatal signal during fixing up a uaccess, this
    results in a return to the faulting kernel instruction, which will be
    instantly retried, resulting in the same fault being taken forever. As
    the task never reaches userspace, the signal is not delivered, and the
    task is left unkillable. While the task is stuck in this state, it can
    inhibit the forward progress of the system.
    
    To avoid this, we must ensure that when a fatal signal is pending, we
    apply any necessary fixup for a faulting kernel instruction. Thus we
    will return to an error path, and it is up to that code to make forward
    progress towards delivering the fatal signal.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Reviewed-by: Steve Capper <steve.capper@arm.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 090aa4651522ec35776896abe31c0a221689a14f
Author: Ben Seri <ben@armis.com>
Date:   Sat Sep 9 23:15:59 2017 +0200

    Bluetooth: Properly check L2CAP config option output buffer length
    
    commit e860d2c904d1a9f38a24eb44c9f34b8f915a6ea3 upstream.
    
    Validate the output buffer length for L2CAP config requests and responses
    to avoid overflowing the stack buffer used for building the option blocks.
    
    Signed-off-by: Ben Seri <ben@armis.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bceac1033cd99ff5d2aaa69c700367f866bf6f04
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Jul 6 12:34:40 2017 +0200

    ALSA: msnd: Optimize / harden DSP and MIDI loops
    
    commit 20e2b791796bd68816fa115f12be5320de2b8021 upstream.
    
    The ISA msnd drivers have loops fetching the ring-buffer head, tail
    and size values inside the loops.  Such codes are inefficient and
    fragile.
    
    This patch optimizes it, and also adds the sanity check to avoid the
    endless loops.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=196131
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=196133
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: grygorii tertychnyi <gtertych@cisco.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e7e643a6c6d565568a1634c61572d8f96e7f030
Author: Yang Shi <yang.shi@linaro.org>
Date:   Thu Nov 10 13:06:39 2016 -0800

    locktorture: Fix potential memory leak with rw lock test
    
    commit f4dbba591945dc301c302672adefba9e2ec08dc5 upstream.
    
    When running locktorture module with the below commands with kmemleak enabled:
    
    $ modprobe locktorture torture_type=rw_lock_irq
    $ rmmod locktorture
    
    The below kmemleak got caught:
    
    root@10:~# echo scan > /sys/kernel/debug/kmemleak
    [  323.197029] kmemleak: 2 new suspected memory leaks (see /sys/kernel/debug/kmemleak)
    root@10:~# cat /sys/kernel/debug/kmemleak
    unreferenced object 0xffffffc07592d500 (size 128):
      comm "modprobe", pid 368, jiffies 4294924118 (age 205.824s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 c3 7b 02 00 00 00 00 00  .........{......
        00 00 00 00 00 00 00 00 d7 9b 02 00 00 00 00 00  ................
      backtrace:
        [<ffffff80081e5a88>] create_object+0x110/0x288
        [<ffffff80086c6078>] kmemleak_alloc+0x58/0xa0
        [<ffffff80081d5acc>] __kmalloc+0x234/0x318
        [<ffffff80006fa130>] 0xffffff80006fa130
        [<ffffff8008083ae4>] do_one_initcall+0x44/0x138
        [<ffffff800817e28c>] do_init_module+0x68/0x1cc
        [<ffffff800811c848>] load_module+0x1a68/0x22e0
        [<ffffff800811d340>] SyS_finit_module+0xe0/0xf0
        [<ffffff80080836f0>] el0_svc_naked+0x24/0x28
        [<ffffffffffffffff>] 0xffffffffffffffff
    unreferenced object 0xffffffc07592d480 (size 128):
      comm "modprobe", pid 368, jiffies 4294924118 (age 205.824s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 3b 6f 01 00 00 00 00 00  ........;o......
        00 00 00 00 00 00 00 00 23 6a 01 00 00 00 00 00  ........#j......
      backtrace:
        [<ffffff80081e5a88>] create_object+0x110/0x288
        [<ffffff80086c6078>] kmemleak_alloc+0x58/0xa0
        [<ffffff80081d5acc>] __kmalloc+0x234/0x318
        [<ffffff80006fa22c>] 0xffffff80006fa22c
        [<ffffff8008083ae4>] do_one_initcall+0x44/0x138
        [<ffffff800817e28c>] do_init_module+0x68/0x1cc
        [<ffffff800811c848>] load_module+0x1a68/0x22e0
        [<ffffff800811d340>] SyS_finit_module+0xe0/0xf0
        [<ffffff80080836f0>] el0_svc_naked+0x24/0x28
        [<ffffffffffffffff>] 0xffffffffffffffff
    
    It is because cxt.lwsa and cxt.lrsa don't get freed in module_exit, so free
    them in lock_torture_cleanup() and free writer_tasks if reader_tasks is
    failed at memory allocation.
    
    Signed-off-by: Yang Shi <yang.shi@linaro.org>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Reviewed-by: Josh Triplett <josh@joshtriplett.org>
    Cc: 石洋 <yang.s@alibaba-inc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b66950d5233bd4f4fce13e270b873bd893af7fe9
Author: Aleksa Sarai <asarai@suse.de>
Date:   Tue Jul 4 21:49:06 2017 +1000

    btrfs: resume qgroup rescan on rw remount
    
    commit 6c6b5a39c4bf3dbd8cf629c9f5450e983c19dbb9 upstream.
    
    Several distributions mount the "proper root" as ro during initrd and
    then remount it as rw before pivot_root(2). Thus, if a rescan had been
    aborted by a previous shutdown, the rescan would never be resumed.
    
    This issue would manifest itself as several btrfs ioctl(2)s causing the
    entire machine to hang when btrfs_qgroup_wait_for_completion was hit
    (due to the fs_info->qgroup_rescan_running flag being set but the rescan
    itself not being resumed). Notably, Docker's btrfs storage driver makes
    regular use of BTRFS_QUOTA_CTL_DISABLE and BTRFS_IOC_QUOTA_RESCAN_WAIT
    (causing this problem to be manifested on boot for some machines).
    
    Cc: Jeff Mahoney <jeffm@suse.com>
    Fixes: b382a324b60f ("Btrfs: fix qgroup rescan resume on mount")
    Signed-off-by: Aleksa Sarai <asarai@suse.de>
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Tested-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19011e6ac194ef3feb014f9f61bc1123b1eeab7d
Author: Todd Poynor <toddpoynor@google.com>
Date:   Tue Aug 15 21:48:43 2017 -0700

    scsi: sg: recheck MMAP_IO request length with lock held
    
    commit 8d26f491116feaa0b16de370b6a7ba40a40fa0b4 upstream.
    
    Commit 1bc0eb044615 ("scsi: sg: protect accesses to 'reserved' page
    array") adds needed concurrency protection for the "reserve" buffer.
    Some checks that are initially made outside the lock are replicated once
    the lock is taken to ensure the checks and resulting decisions are made
    using consistent state.
    
    The check that a request with flag SG_FLAG_MMAP_IO set fits in the
    reserve buffer also needs to be performed again under the lock to ensure
    the reserve buffer length compared against matches the value in effect
    when the request is linked to the reserve buffer.  An -ENOMEM should be
    returned in this case, instead of switching over to an indirect buffer
    as for non-MMAP_IO requests.
    
    Signed-off-by: Todd Poynor <toddpoynor@google.com>
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57923c952ce8c71880309bb063c607485c0a41b8
Author: Todd Poynor <toddpoynor@google.com>
Date:   Tue Aug 15 22:41:08 2017 -0700

    scsi: sg: protect against races between mmap() and SG_SET_RESERVED_SIZE
    
    commit 6a8dadcca81fceff9976e8828cceb072873b7bd5 upstream.
    
    Take f_mutex around mmap() processing to protect against races with the
    SG_SET_RESERVED_SIZE ioctl.  Ensure the reserve buffer length remains
    consistent during the mapping operation, and set the "mmap called" flag
    to prevent further changes to the reserved buffer size as an atomic
    operation with the mapping.
    
    [mkp: fixed whitespace]
    
    Signed-off-by: Todd Poynor <toddpoynor@google.com>
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61b491f57cbd0ab166df84e2ef7972938b2823c1
Author: Andrey Korolyov <andrey@xdel.ru>
Date:   Thu Aug 10 13:21:14 2017 +0300

    cs5536: add support for IDE controller variant
    
    commit 591b6bb605785c12a21e8b07a08a277065b655a5 upstream.
    
    Several legacy devices such as Geode-based Cisco ASA appliances
    and DB800 development board do possess CS5536 IDE controller
    with different PCI id than existing one. Using pata_generic is
    not always feasible as at least DB800 requires MSR quirk from
    pata_cs5536 to be used with vendor firmware.
    
    Signed-off-by: Andrey Korolyov <andrey@xdel.ru>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18f9ff5c8ad53a70aff203d79dc76fada3829101
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sun Sep 3 01:18:41 2017 +0100

    workqueue: Fix flag collision
    
    commit fbf1c41fc0f4d3574ac2377245efd666c1fa3075 upstream.
    
    Commit 0a94efb5acbb ("workqueue: implicit ordered attribute should be
    overridable") introduced a __WQ_ORDERED_EXPLICIT flag but gave it the
    same value as __WQ_LEGACY.  I don't believe these were intended to
    mean the same thing, so renumber __WQ_ORDERED_EXPLICIT.
    
    Fixes: 0a94efb5acbb ("workqueue: implicit ordered attribute should be ...")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7023d138bb0edf64ee36aa7a7d1dc124cfdacdd
Author: Doug Berger <opendmb@gmail.com>
Date:   Mon Jul 10 15:49:44 2017 -0700

    cma: fix calculation of aligned offset
    
    commit e048cb32f69038aa1c8f11e5c1b331be4181659d upstream.
    
    The align_offset parameter is used by bitmap_find_next_zero_area_off()
    to represent the offset of map's base from the previous alignment
    boundary; the function ensures that the returned index, plus the
    align_offset, honors the specified align_mask.
    
    The logic introduced by commit b5be83e308f7 ("mm: cma: align to physical
    address, not CMA region position") has the cma driver calculate the
    offset to the *next* alignment boundary.  In most cases, the base
    alignment is greater than that specified when making allocations,
    resulting in a zero offset whether we align up or down.  In the example
    given with the commit, the base alignment (8MB) was half the requested
    alignment (16MB) so the math also happened to work since the offset is
    8MB in both directions.  However, when requesting allocations with an
    alignment greater than twice that of the base, the returned index would
    not be correctly aligned.
    
    Also, the align_order arguments of cma_bitmap_aligned_mask() and
    cma_bitmap_aligned_offset() should not be negative so the argument type
    was made unsigned.
    
    Fixes: b5be83e308f7 ("mm: cma: align to physical address, not CMA region position")
    Link: http://lkml.kernel.org/r/20170628170742.2895-1-opendmb@gmail.com
    Signed-off-by: Angus Clark <angus@angusclark.org>
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Acked-by: Gregory Fong <gregory.0xf0@gmail.com>
    Cc: Doug Berger <opendmb@gmail.com>
    Cc: Angus Clark <angus@angusclark.org>
    Cc: Laura Abbott <labbott@redhat.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Lucas Stach <l.stach@pengutronix.de>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Shiraz Hashim <shashim@codeaurora.org>
    Cc: Jaewon Kim <jaewon31.kim@samsung.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fcd5675c40abe117d6fac182ac655ac3817f2b18
Author: Edwin Török <edvin.torok@citrix.com>
Date:   Thu Aug 3 10:30:06 2017 +0100

    dlm: avoid double-free on error path in dlm_device_{register,unregister}
    
    commit 55acdd926f6b21a5cdba23da98a48aedf19ac9c3 upstream.
    
    Can be reproduced when running dlm_controld (tested on 4.4.x, 4.12.4):
     # seq 1 100 | xargs -P0 -n1 dlm_tool join
     # seq 1 100 | xargs -P0 -n1 dlm_tool leave
    
    misc_register fails due to duplicate sysfs entry, which causes
    dlm_device_register to free ls->ls_device.name.
    In dlm_device_deregister the name was freed again, causing memory
    corruption.
    
    According to the comment in dlm_device_deregister the name should've been
    set to NULL when registration fails,
    so this patch does that.
    
    sysfs: cannot create duplicate filename '/dev/char/10:1'
    ------------[ cut here ]------------
    warning: cpu: 1 pid: 4450 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x56/0x70
    modules linked in: msr rfcomm dlm ccm bnep dm_crypt uvcvideo
    videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_core videodev
    btusb media btrtl btbcm btintel bluetooth ecdh_generic intel_rapl
    x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm
    snd_hda_codec_hdmi irqbypass crct10dif_pclmul crc32_pclmul
    ghash_clmulni_intel thinkpad_acpi pcbc nvram snd_seq_midi
    snd_seq_midi_event aesni_intel snd_hda_codec_realtek snd_hda_codec_generic
    snd_rawmidi aes_x86_64 crypto_simd glue_helper snd_hda_intel snd_hda_codec
    cryptd intel_cstate arc4 snd_hda_core snd_seq snd_seq_device snd_hwdep
    iwldvm intel_rapl_perf mac80211 joydev input_leds iwlwifi serio_raw
    cfg80211 snd_pcm shpchp snd_timer snd mac_hid mei_me lpc_ich mei soundcore
    sunrpc parport_pc ppdev lp parport autofs4 i915 psmouse
     e1000e ahci libahci i2c_algo_bit sdhci_pci ptp drm_kms_helper sdhci
    pps_core syscopyarea sysfillrect sysimgblt fb_sys_fops drm wmi video
    cpu: 1 pid: 4450 comm: dlm_test.exe not tainted 4.12.4-041204-generic
    hardware name: lenovo 232425u/232425u, bios g2et82ww (2.02 ) 09/11/2012
    task: ffff96b0cbabe140 task.stack: ffffb199027d0000
    rip: 0010:sysfs_warn_dup+0x56/0x70
    rsp: 0018:ffffb199027d3c58 eflags: 00010282
    rax: 0000000000000038 rbx: ffff96b0e2c49158 rcx: 0000000000000006
    rdx: 0000000000000000 rsi: 0000000000000086 rdi: ffff96b15e24dcc0
    rbp: ffffb199027d3c70 r08: 0000000000000001 r09: 0000000000000721
    r10: ffffb199027d3c00 r11: 0000000000000721 r12: ffffb199027d3cd1
    r13: ffff96b1592088f0 r14: 0000000000000001 r15: ffffffffffffffef
    fs:  00007f78069c0700(0000) gs:ffff96b15e240000(0000)
    knlgs:0000000000000000
    cs:  0010 ds: 0000 es: 0000 cr0: 0000000080050033
    cr2: 000000178625ed28 cr3: 0000000091d3e000 cr4: 00000000001406e0
    call trace:
     sysfs_do_create_link_sd.isra.2+0x9e/0xb0
     sysfs_create_link+0x25/0x40
     device_add+0x5a9/0x640
     device_create_groups_vargs+0xe0/0xf0
     device_create_with_groups+0x3f/0x60
     ? snprintf+0x45/0x70
     misc_register+0x140/0x180
     device_write+0x6a8/0x790 [dlm]
     __vfs_write+0x37/0x160
     ? apparmor_file_permission+0x1a/0x20
     ? security_file_permission+0x3b/0xc0
     vfs_write+0xb5/0x1a0
     sys_write+0x55/0xc0
     ? sys_fcntl+0x5d/0xb0
     entry_syscall_64_fastpath+0x1e/0xa9
    rip: 0033:0x7f78083454bd
    rsp: 002b:00007f78069bbd30 eflags: 00000293 orig_rax: 0000000000000001
    rax: ffffffffffffffda rbx: 0000000000000006 rcx: 00007f78083454bd
    rdx: 000000000000009c rsi: 00007f78069bee00 rdi: 0000000000000005
    rbp: 00007f77f8000a20 r08: 000000000000fcf0 r09: 0000000000000032
    r10: 0000000000000024 r11: 0000000000000293 r12: 00007f78069bde00
    r13: 00007f78069bee00 r14: 000000000000000a r15: 00007f78069bbd70
    code: 85 c0 48 89 c3 74 12 b9 00 10 00 00 48 89 c2 31 f6 4c 89 ef e8 2c c8
    ff ff 4c 89 e2 48 89 de 48 c7 c7 b0 8e 0c a8 e8 41 e8 ed ff <0f> ff 48 89
    df e8 00 d5 f4 ff 5b 41 5c 41 5d 5d c3 66 0f 1f 84
    ---[ end trace 40412246357cc9e0 ]---
    
    dlm: 59f24629-ae39-44e2-9030-397ebc2eda26: leaving the lockspace group...
    bug: unable to handle kernel null pointer dereference at 0000000000000001
    ip: [<ffffffff811a3b4a>] kmem_cache_alloc+0x7a/0x140
    pgd 0
    oops: 0000 [#1] smp
    modules linked in: dlm 8021q garp mrp stp llc openvswitch nf_defrag_ipv6
    nf_conntrack libcrc32c iptable_filter dm_multipath crc32_pclmul dm_mod
    aesni_intel psmouse aes_x86_64 sg ablk_helper cryptd lrw gf128mul
    glue_helper i2c_piix4 nls_utf8 tpm_tis tpm isofs nfsd auth_rpcgss
    oid_registry nfs_acl lockd grace sunrpc xen_wdt ip_tables x_tables autofs4
    hid_generic usbhid hid sr_mod cdrom sd_mod ata_generic pata_acpi 8139too
    serio_raw ata_piix 8139cp mii uhci_hcd ehci_pci ehci_hcd libata
    scsi_dh_rdac scsi_dh_hp_sw scsi_dh_emc scsi_dh_alua scsi_mod ipv6
    cpu: 0 pid: 394 comm: systemd-udevd tainted: g w 4.4.0+0 #1
    hardware name: xen hvm domu, bios 4.7.2-2.2 05/11/2017
    task: ffff880002410000 ti: ffff88000243c000 task.ti: ffff88000243c000
    rip: e030:[<ffffffff811a3b4a>] [<ffffffff811a3b4a>]
    kmem_cache_alloc+0x7a/0x140
    rsp: e02b:ffff88000243fd90 eflags: 00010202
    rax: 0000000000000000 rbx: ffff8800029864d0 rcx: 000000000007b36c
    rdx: 000000000007b36b rsi: 00000000024000c0 rdi: ffff880036801c00
    rbp: ffff88000243fdc0 r08: 0000000000018880 r09: 0000000000000054
    r10: 000000000000004a r11: ffff880034ace6c0 r12: 00000000024000c0
    r13: ffff880036801c00 r14: 0000000000000001 r15: ffffffff8118dcc2
    fs: 00007f0ab77548c0(0000) gs:ffff880036e00000(0000) knlgs:0000000000000000
    cs: e033 ds: 0000 es: 0000 cr0: 0000000080050033
    cr2: 0000000000000001 cr3: 000000000332d000 cr4: 0000000000040660
    stack:
    ffffffff8118dc90 ffff8800029864d0 0000000000000000 ffff88003430b0b0
    ffff880034b78320 ffff88003430b0b0 ffff88000243fdf8 ffffffff8118dcc2
    ffff8800349c6700 ffff8800029864d0 000000000000000b 00007f0ab7754b90
    call trace:
    [<ffffffff8118dc90>] ? anon_vma_fork+0x60/0x140
    [<ffffffff8118dcc2>] anon_vma_fork+0x92/0x140
    [<ffffffff8107033e>] copy_process+0xcae/0x1a80
    [<ffffffff8107128b>] _do_fork+0x8b/0x2d0
    [<ffffffff81071579>] sys_clone+0x19/0x20
    [<ffffffff815a30ae>] entry_syscall_64_fastpath+0x12/0x71
    ] code: f6 75 1c 4c 89 fa 44 89 e6 4c 89 ef e8 a7 e4 00 00 41 f7 c4 00 80
    00 00 49 89 c6 74 47 eb 32 49 63 45 20 48 8d 4a 01 4d 8b 45 00 <49> 8b 1c
    06 4c 89 f0 65 49 0f c7 08 0f 94 c0 84 c0 74 ac 49 63
    rip [<ffffffff811a3b4a>] kmem_cache_alloc+0x7a/0x140
    rsp <ffff88000243fd90>
    cr2: 0000000000000001
    --[ end trace 70cb9fd1b164a0e8 ]--
    
    Signed-off-by: Edwin Török <edvin.torok@citrix.com>
    Signed-off-by: David Teigland <teigland@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 524386e8e90a729f53cb248cda0dc59ff917cc4e
Author: Oscar Campos <oscar.campos@member.fsf.org>
Date:   Tue Jul 18 17:20:36 2017 -0700

    Input: trackpoint - assume 3 buttons when buttons detection fails
    
    commit 293b915fd9bebf33cdc906516fb28d54649a25ac upstream.
    
    Trackpoint buttons detection fails on ThinkPad 570 and 470 series,
    this makes the middle button of the trackpoint to not being recogized.
    As I don't believe there is any trackpoint with less than 3 buttons this
    patch just assumes three buttons when the extended button information
    read fails.
    
    Signed-off-by: Oscar Campos <oscar.campos@member.fsf.org>
    Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c97bb69c0d097340981be9232f5ef3bf76bc147
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Tue Aug 29 21:23:49 2017 +0200

    driver core: bus: Fix a potential double free
    
    commit 0f9b011d3321ca1079c7a46c18cb1956fbdb7bcb upstream.
    
    The .release function of driver_ktype is 'driver_release()'.
    This function frees the container_of this kobject.
    
    So, this memory must not be freed explicitly in the error handling path of
    'bus_add_driver()'. Otherwise a double free will occur.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 158333ad9be61dd5fa75e5566665dc0eee892a2e
Author: Colin Ian King <colin.king@canonical.com>
Date:   Fri Aug 18 14:34:16 2017 +0100

    staging/rts5208: fix incorrect shift to extract upper nybble
    
    commit 34ff1bf4920471cff66775dc39537b15c5f0feff upstream.
    
    The mask of sns_key_info1 suggests the upper nybble is being extracted
    however the following shift of 8 bits is too large and always results in
    0.  Fix this by shifting only by 4 bits to correctly get the upper nybble.
    
    Detected by CoverityScan, CID#142891 ("Operands don't affect result")
    
    Fixes: fa590c222fba ("staging: rts5208: add support for rts5208 and rts5288")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d512a57678a695275bda7f218d4efccd4f89948c
Author: Douglas Anderson <dianders@chromium.org>
Date:   Thu Aug 10 15:42:22 2017 -0700

    USB: core: Avoid race of async_completed() w/ usbdev_release()
    
    commit ed62ca2f4f51c17841ea39d98c0c409cb53a3e10 upstream.
    
    While running reboot tests w/ a specific set of USB devices (and
    slub_debug enabled), I found that once every few hours my device would
    be crashed with a stack that looked like this:
    
    [   14.012445] BUG: spinlock bad magic on CPU#0, modprobe/2091
    [   14.012460]  lock: 0xffffffc0cb055978, .magic: ffffffc0, .owner: cryption contexts: %lu/%lu
    [   14.012460] /1025536097, .owner_cpu: 0
    [   14.012466] CPU: 0 PID: 2091 Comm: modprobe Not tainted 4.4.79 #352
    [   14.012468] Hardware name: Google Kevin (DT)
    [   14.012471] Call trace:
    [   14.012483] [<....>] dump_backtrace+0x0/0x160
    [   14.012487] [<....>] show_stack+0x20/0x28
    [   14.012494] [<....>] dump_stack+0xb4/0xf0
    [   14.012500] [<....>] spin_dump+0x8c/0x98
    [   14.012504] [<....>] spin_bug+0x30/0x3c
    [   14.012508] [<....>] do_raw_spin_lock+0x40/0x164
    [   14.012515] [<....>] _raw_spin_lock_irqsave+0x64/0x74
    [   14.012521] [<....>] __wake_up+0x2c/0x60
    [   14.012528] [<....>] async_completed+0x2d0/0x300
    [   14.012534] [<....>] __usb_hcd_giveback_urb+0xc4/0x138
    [   14.012538] [<....>] usb_hcd_giveback_urb+0x54/0xf0
    [   14.012544] [<....>] xhci_irq+0x1314/0x1348
    [   14.012548] [<....>] usb_hcd_irq+0x40/0x50
    [   14.012553] [<....>] handle_irq_event_percpu+0x1b4/0x3f0
    [   14.012556] [<....>] handle_irq_event+0x4c/0x7c
    [   14.012561] [<....>] handle_fasteoi_irq+0x158/0x1c8
    [   14.012564] [<....>] generic_handle_irq+0x30/0x44
    [   14.012568] [<....>] __handle_domain_irq+0x90/0xbc
    [   14.012572] [<....>] gic_handle_irq+0xcc/0x18c
    
    Investigation using kgdb() found that the wait queue that was passed
    into wake_up() had been freed (it was filled with slub_debug poison).
    
    I analyzed and instrumented the code and reproduced.  My current
    belief is that this is happening:
    
    1. async_completed() is called (from IRQ).  Moves "as" onto the
       completed list.
    2. On another CPU, proc_reapurbnonblock_compat() calls
       async_getcompleted().  Blocks on spinlock.
    3. async_completed() releases the lock; keeps running; gets blocked
       midway through wake_up().
    4. proc_reapurbnonblock_compat() => async_getcompleted() gets the
       lock; removes "as" from completed list and frees it.
    5. usbdev_release() is called.  Frees "ps".
    6. async_completed() finally continues running wake_up().  ...but
       wake_up() has a pointer to the freed "ps".
    
    The instrumentation that led me to believe this was based on adding
    some trace_printk() calls in a select few functions and then using
    kdb's "ftdump" at crash time.  The trace follows (NOTE: in the trace
    below I cheated a little bit and added a udelay(1000) in
    async_completed() after releasing the spinlock because I wanted it to
    trigger quicker):
    
    <...>-2104   0d.h2 13759034us!: async_completed at start: as=ffffffc0cc638200
    mtpd-2055    3.... 13759356us : async_getcompleted before spin_lock_irqsave
    mtpd-2055    3d..1 13759362us : async_getcompleted after list_del_init: as=ffffffc0cc638200
    mtpd-2055    3.... 13759371us+: proc_reapurbnonblock_compat: free_async(ffffffc0cc638200)
    mtpd-2055    3.... 13759422us+: async_getcompleted before spin_lock_irqsave
    mtpd-2055    3.... 13759479us : usbdev_release at start: ps=ffffffc0cc042080
    mtpd-2055    3.... 13759487us : async_getcompleted before spin_lock_irqsave
    mtpd-2055    3.... 13759497us!: usbdev_release after kfree(ps): ps=ffffffc0cc042080
    <...>-2104   0d.h2 13760294us : async_completed before wake_up(): as=ffffffc0cc638200
    
    To fix this problem we can just move the wake_up() under the ps->lock.
    There should be no issues there that I'm aware of.
    
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d68769591b6530056305b597f1de377f89878f8
Author: Sandeep Singh <sandeep.singh@amd.com>
Date:   Thu Aug 24 09:57:15 2017 +0530

    usb:xhci:Fix regression when ATI chipsets detected
    
    commit e6b422b88b46353cf596e0db6dc0e39d50d90d6e upstream.
    
    The following commit cause a regression on ATI chipsets.
    'commit e788787ef4f9 ("usb:xhci:Add quirk for Certain
    failing HP keyboard on reset after resume")'
    
    This causes pinfo->smbus_dev to be wrongly set to NULL on
    systems with the ATI chipset that this function checks for first.
    
    Added conditional check for AMD chipsets to avoid the overwriting
    pinfo->smbus_dev.
    
    Reported-by: Ben Hutchings <ben@decadent.org.uk>
    Fixes: e788787ef4f9 ("usb:xhci:Add quirk for Certain
    failing HP keyboard on reset after resume")
    cc: Nehal Shah <Nehal-bakulchandra.Shah@amd.com>
    Signed-off-by: Sandeep Singh <Sandeep.Singh@amd.com>
    Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f638d313156065264fa8d6a8e67cabaa19c6443d
Author: Dmitry Fleytman <dmitry@daynix.com>
Date:   Fri Aug 25 10:38:35 2017 +0300

    usb: Add device quirk for Logitech HD Pro Webcam C920-C
    
    commit a1279ef74eeeb5f627f091c71d80dd7ac766c99d upstream.
    
    Commit e0429362ab15
    ("usb: Add device quirk for Logitech HD Pro Webcams C920 and C930e")
    introduced quirk to workaround an issue with some Logitech webcams.
    
    Apparently model C920-C has the same issue so applying
    the same quirk as well.
    
    See aforementioned commit message for detailed explanation of the problem.
    
    Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f396fe577f513e19384266595037499cec9a59bd
Author: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Date:   Tue Aug 29 21:50:03 2017 +0200

    USB: serial: option: add support for D-Link DWM-157 C1
    
    commit 169e86546f5712179709de23cd64bbb15f199fab upstream.
    
    This commit adds support (an ID, really) for D-Link DWM-157 hardware
    version C1 USB modem to option driver.
    
    According to manufacturer-provided Windows INF file the device has four
    serial ports:
    "D-Link HSPA+DataCard Diagnostics Interface" (interface 2; modem port),
    "D-Link HSPA+DataCard NMEA Device" (interface 3),
    "D-Link HSPA+DataCard Speech Port" (interface 4),
    "D-Link HSPA+DataCard Debug Port" (interface 5).
    
    usb-devices output:
    T:  Bus=05 Lev=01 Prnt=01 Port=04 Cnt=01 Dev#=  3 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=2001 ProdID=7d0e Rev=03.00
    S:  Manufacturer=D-Link,Inc
    S:  Product=D-Link DWM-157
    C:  #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=02 Prot=01 Driver=option
    I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 6 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
    
    Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d70662e5a2e171af0dd7f0f210673ca9a7617e50
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Wed Aug 16 10:53:20 2017 +0800

    usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard
    
    commit de3af5bf259d7a0bfaac70441c8568ab5998d80c upstream.
    
    Corsair Strafe RGB keyboard has trouble to initialize:
    
    [ 1.679455] usb 3-6: new full-speed USB device number 4 using xhci_hcd
    [ 6.871136] usb 3-6: unable to read config index 0 descriptor/all
    [ 6.871138] usb 3-6: can't read configurations, error -110
    [ 6.991019] usb 3-6: new full-speed USB device number 5 using xhci_hcd
    [ 12.246642] usb 3-6: unable to read config index 0 descriptor/all
    [ 12.246644] usb 3-6: can't read configurations, error -110
    [ 12.366555] usb 3-6: new full-speed USB device number 6 using xhci_hcd
    [ 17.622145] usb 3-6: unable to read config index 0 descriptor/all
    [ 17.622147] usb 3-6: can't read configurations, error -110
    [ 17.742093] usb 3-6: new full-speed USB device number 7 using xhci_hcd
    [ 22.997715] usb 3-6: unable to read config index 0 descriptor/all
    [ 22.997716] usb 3-6: can't read configurations, error -110
    
    Although it may work after several times unpluging/pluging:
    
    [ 68.195240] usb 3-6: new full-speed USB device number 11 using xhci_hcd
    [ 68.337459] usb 3-6: New USB device found, idVendor=1b1c, idProduct=1b20
    [ 68.337463] usb 3-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [ 68.337466] usb 3-6: Product: Corsair STRAFE RGB Gaming Keyboard
    [ 68.337468] usb 3-6: Manufacturer: Corsair
    [ 68.337470] usb 3-6: SerialNumber: 0F013021AEB8046755A93ED3F5001941
    
    Tried three quirks: USB_QUIRK_DELAY_INIT, USB_QUIRK_NO_LPM and
    USB_QUIRK_DEVICE_QUALIFIER, user confirmed that USB_QUIRK_DELAY_INIT alone
    can workaround this issue. Hence add the quirk for Corsair Strafe RGB.
    
    BugLink: https://bugs.launchpad.net/bugs/1678477
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>