commit 3e50cd97ed730bb0abfcdbc8c1a18871c2750c33
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Mar 3 15:52:38 2018 +0000

    Linux 3.16.55

commit 964551125099d3dcf9934b2b36f52d692eba1865
Author: James Hogan <jhogan@kernel.org>
Date:   Fri Feb 2 14:36:40 2018 +0000

    MIPS: CPS: Fix MIPS_ISA_LEVEL_RAW fallout
    
    commit 8dbc1864b74f5dea5a3f7c30ca8fd358a675132f upstream.
    
    Commit 17278a91e04f ("MIPS: CPS: Fix r1 .set mt assembler warning")
    added .set MIPS_ISA_LEVEL_RAW to silence warnings about .set mt on r1,
    however this can result in a MOVE being encoded as a 64-bit DADDU
    instruction on certain version of binutils (e.g. 2.22), and reserved
    instruction exceptions at runtime on 32-bit hardware.
    
    Reduce the sizes of the push/pop sections to include only instructions
    that are part of the MT ASE or which won't convert to 64-bit
    instructions after .set mips64r2/mips64r6.
    
    Reported-by: Greg Ungerer <gerg@linux-m68k.org>
    Fixes: 17278a91e04f ("MIPS: CPS: Fix r1 .set mt assembler warning")
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: linux-mips@linux-mips.org
    Tested-by: Greg Ungerer <gerg@linux-m68k.org>
    Patchwork: https://patchwork.linux-mips.org/patch/18578/
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b11db6eff5183b9e67006995a95699a43d84101b
Author: Yang Shunyong <shunyong.yang@hxt-semitech.com>
Date:   Mon Jan 29 14:40:11 2018 +0800

    dmaengine: dmatest: fix container_of member in dmatest_callback
    
    commit 66b3bd2356e0a1531c71a3dcf96944621e25c17c upstream.
    
    The type of arg passed to dmatest_callback is struct dmatest_done.
    It refers to test_done in struct dmatest_thread, not done_wait.
    
    Fixes: 6f6a23a213be ("dmaengine: dmatest: move callback wait ...")
    Signed-off-by: Yang Shunyong <shunyong.yang@hxt-semitech.com>
    Acked-by: Adam Wallis <awallis@codeaurora.org>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 39961200584fe03d2915886ac49e7ec7a8b5a4ae
Author: Håkon Bugge <Haakon.Bugge@oracle.com>
Date:   Wed Dec 6 17:18:28 2017 +0100

    rds: Fix NULL pointer dereference in __rds_rdma_map
    
    commit f3069c6d33f6ae63a1668737bc78aaaa51bff7ca upstream.
    
    This is a fix for syzkaller719569, where memory registration was
    attempted without any underlying transport being loaded.
    
    Analysis of the case reveals that it is the setsockopt() RDS_GET_MR
    (2) and RDS_GET_MR_FOR_DEST (7) that are vulnerable.
    
    Here is an example stack trace when the bug is hit:
    
    BUG: unable to handle kernel NULL pointer dereference at 00000000000000c0
    IP: __rds_rdma_map+0x36/0x440 [rds]
    PGD 2f93d03067 P4D 2f93d03067 PUD 2f93d02067 PMD 0
    Oops: 0000 [#1] SMP
    Modules linked in: bridge stp llc tun rpcsec_gss_krb5 nfsv4
    dns_resolver nfs fscache rds binfmt_misc sb_edac intel_powerclamp
    coretemp kvm_intel kvm irqbypass crct10dif_pclmul c rc32_pclmul
    ghash_clmulni_intel pcbc aesni_intel crypto_simd glue_helper cryptd
    iTCO_wdt mei_me sg iTCO_vendor_support ipmi_si mei ipmi_devintf nfsd
    shpchp pcspkr i2c_i801 ioatd ma ipmi_msghandler wmi lpc_ich mfd_core
    auth_rpcgss nfs_acl lockd grace sunrpc ip_tables ext4 mbcache jbd2
    mgag200 i2c_algo_bit drm_kms_helper ixgbe syscopyarea ahci sysfillrect
    sysimgblt libahci mdio fb_sys_fops ttm ptp libata sd_mod mlx4_core drm
    crc32c_intel pps_core megaraid_sas i2c_core dca dm_mirror
    dm_region_hash dm_log dm_mod
    CPU: 48 PID: 45787 Comm: repro_set2 Not tainted 4.14.2-3.el7uek.x86_64 #2
    Hardware name: Oracle Corporation ORACLE SERVER X5-2L/ASM,MOBO TRAY,2U, BIOS 31110000 03/03/2017
    task: ffff882f9190db00 task.stack: ffffc9002b994000
    RIP: 0010:__rds_rdma_map+0x36/0x440 [rds]
    RSP: 0018:ffffc9002b997df0 EFLAGS: 00010202
    RAX: 0000000000000000 RBX: ffff882fa2182580 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: ffffc9002b997e40 RDI: ffff882fa2182580
    RBP: ffffc9002b997e30 R08: 0000000000000000 R09: 0000000000000002
    R10: ffff885fb29e3838 R11: 0000000000000000 R12: ffff882fa2182580
    R13: ffff882fa2182580 R14: 0000000000000002 R15: 0000000020000ffc
    FS:  00007fbffa20b700(0000) GS:ffff882fbfb80000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000000000c0 CR3: 0000002f98a66006 CR4: 00000000001606e0
    Call Trace:
     rds_get_mr+0x56/0x80 [rds]
     rds_setsockopt+0x172/0x340 [rds]
     ? __fget_light+0x25/0x60
     ? __fdget+0x13/0x20
     SyS_setsockopt+0x80/0xe0
     do_syscall_64+0x67/0x1b0
     entry_SYSCALL64_slow_path+0x25/0x25
    RIP: 0033:0x7fbff9b117f9
    RSP: 002b:00007fbffa20aed8 EFLAGS: 00000293 ORIG_RAX: 0000000000000036
    RAX: ffffffffffffffda RBX: 00000000000c84a4 RCX: 00007fbff9b117f9
    RDX: 0000000000000002 RSI: 0000400000000114 RDI: 000000000000109b
    RBP: 00007fbffa20af10 R08: 0000000000000020 R09: 00007fbff9dd7860
    R10: 0000000020000ffc R11: 0000000000000293 R12: 0000000000000000
    R13: 00007fbffa20b9c0 R14: 00007fbffa20b700 R15: 0000000000000021
    
    Code: 41 56 41 55 49 89 fd 41 54 53 48 83 ec 18 8b 87 f0 02 00 00 48
    89 55 d0 48 89 4d c8 85 c0 0f 84 2d 03 00 00 48 8b 87 00 03 00 00 <48>
    83 b8 c0 00 00 00 00 0f 84 25 03 00 0 0 48 8b 06 48 8b 56 08
    
    The fix is to check the existence of an underlying transport in
    __rds_rdma_map().
    
    Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0c2575631cae6894ed82e4883ecb6d097157a063
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Jan 19 10:06:03 2018 +0100

    ACPI: sbshc: remove raw pointer from printk() message
    
    commit 43cdd1b716b26f6af16da4e145b6578f98798bf6 upstream.
    
    There's no need to be printing a raw kernel pointer to the kernel log at
    every boot.  So just remove it, and change the whole message to use the
    correct dev_info() call at the same time.
    
    Reported-by: Wang Qize <wang_qize@venustech.com.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a0b6b57818eef2eade5e1cb79d0517e84d23ef87
Author: Daniel Mentz <danielmentz@google.com>
Date:   Wed Feb 14 12:59:38 2018 +0100

    media: v4l2-compat-ioctl32.c: refactor compat ioctl32 logic
    
    commit a1dfb4c48cc1e64eeb7800a27c66a6f7e88d075a upstream.
    
    The 32-bit compat v4l2 ioctl handling is implemented based on its 64-bit
    equivalent. It converts 32-bit data structures into its 64-bit
    equivalents and needs to provide the data to the 64-bit ioctl in user
    space memory which is commonly allocated using
    compat_alloc_user_space().
    
    However, due to how that function is implemented, it can only be called
    a single time for every syscall invocation.
    
    Supposedly to avoid this limitation, the existing code uses a mix of
    memory from the kernel stack and memory allocated through
    compat_alloc_user_space().
    
    Under normal circumstances, this would not work, because the 64-bit
    ioctl expects all pointers to point to user space memory. As a
    workaround, set_fs(KERNEL_DS) is called to temporarily disable this
    extra safety check and allow kernel pointers. However, this might
    introduce a security vulnerability: The result of the 32-bit to 64-bit
    conversion is writeable by user space because the output buffer has been
    allocated via compat_alloc_user_space(). A malicious user space process
    could then manipulate pointers inside this output buffer, and due to the
    previous set_fs(KERNEL_DS) call, functions like get_user() or put_user()
    no longer prevent kernel memory access.
    
    The new approach is to pre-calculate the total amount of user space
    memory that is needed, allocate it using compat_alloc_user_space() and
    then divide up the allocated memory to accommodate all data structures
    that need to be converted.
    
    An alternative approach would have been to retain the union type karg
    that they allocated on the kernel stack in do_video_ioctl(), copy all
    data from user space into karg and then back to user space. However, we
    decided against this approach because it does not align with other
    compat syscall implementations. Instead, we tried to replicate the
    get_user/put_user pairs as found in other places in the kernel:
    
        if (get_user(clipcount, &up->clipcount) ||
            put_user(clipcount, &kp->clipcount)) return -EFAULT;
    
    Notes from hans.verkuil@cisco.com:
    
    This patch was taken from:
        https://github.com/LineageOS/android_kernel_samsung_apq8084/commit/97b733953c06e4f0398ade18850f0817778255f7
    
    Clearly nobody could be bothered to upstream this patch or at minimum
    tell us :-( We only heard about this a week ago.
    
    This patch was rebased and cleaned up. Compared to the original I
    also swapped the order of the convert_in_user arguments so that they
    matched copy_in_user. It was hard to review otherwise. I also replaced
    the ALLOC_USER_SPACE/ALLOC_AND_GET by a normal function.
    
    Fixes: 6b5a9492ca ("v4l: introduce string control support.")
    
    Signed-off-by: Daniel Mentz <danielmentz@google.com>
    Co-developed-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Rebased on top of some earlier fixes]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8c04a4f02fd01de088c5db944985c3dcf12007fd
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Wed Feb 14 12:59:37 2018 +0100

    media: v4l2-compat-ioctl32.c: don't copy back the result for certain errors
    
    commit d83a8243aaefe62ace433e4384a4f077bed86acb upstream.
    
    Some ioctls need to copy back the result even if the ioctl returned
    an error. However, don't do this for the error code -ENOTTY.
    It makes no sense in that cases.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3b764d652e5a3a875c3692973e166ca5edf86fe1
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Wed Feb 14 12:59:36 2018 +0100

    media: v4l2-compat-ioctl32.c: drop pr_info for unknown buffer type
    
    commit 169f24ca68bf0f247d111aef07af00dd3a02ae88 upstream.
    
    There is nothing wrong with using an unknown buffer type. So
    stop spamming the kernel log whenever this happens. The kernel
    will just return -EINVAL to signal this.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e05a2d30da79ed168b672da11d0141187b9960e9
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Wed Feb 14 12:59:35 2018 +0100

    media: v4l2-compat-ioctl32.c: copy clip list in put_v4l2_window32
    
    commit a751be5b142ef6bcbbb96d9899516f4d9c8d0ef4 upstream.
    
    put_v4l2_window32() didn't copy back the clip list to userspace.
    Drivers can update the clip rectangles, so this should be done.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 79bd14392b0688295e6517212beeeea0ac3b98a7
Author: Daniel Mentz <danielmentz@google.com>
Date:   Wed Feb 14 12:59:34 2018 +0100

    media: v4l2-compat-ioctl32: Copy v4l2_window->global_alpha
    
    commit 025a26fa14f8fd55d50ab284a30c016a5be953d0 upstream.
    
    Commit b2787845fb91 ("V4L/DVB (5289): Add support for video output
    overlays.") added the field global_alpha to struct v4l2_window but did
    not update the compat layer accordingly. This change adds global_alpha
    to struct v4l2_window32 and copies the value for global_alpha back and
    forth.
    
    Signed-off-by: Daniel Mentz <danielmentz@google.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 606ae3b1286539f9c0fa33110fec536d93360384
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Wed Feb 14 12:59:33 2018 +0100

    media: v4l2-compat-ioctl32.c: fix ctrl_is_pointer
    
    commit b8c601e8af2d08f733d74defa8465303391bb930 upstream.
    
    ctrl_is_pointer just hardcoded two known string controls, but that
    caused problems when using e.g. custom controls that use a pointer
    for the payload.
    
    Reimplement this function: it now finds the v4l2_ctrl (if the driver
    uses the control framework) or it calls vidioc_query_ext_ctrl (if the
    driver implements that directly).
    
    In both cases it can now check if the control is a pointer control
    or not.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Rebased on top of some earlier fixes]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e8b350414ef8d502e354c55161529bb8d52848ff
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Wed Feb 14 12:59:32 2018 +0100

    media: v4l2-compat-ioctl32.c: copy m.userptr in put_v4l2_plane32
    
    commit 8ed5a59dcb47a6f76034ee760b36e089f3e82529 upstream.
    
    The struct v4l2_plane32 should set m.userptr as well. The same
    happens in v4l2_buffer32 and v4l2-compliance tests for this.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e601a9a8ca229b1bd06e5e64864284135ef3c055
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Wed Feb 14 12:59:31 2018 +0100

    media: v4l2-compat-ioctl32.c: avoid sizeof(type)
    
    commit 333b1e9f96ce05f7498b581509bb30cde03018bf upstream.
    
    Instead of doing sizeof(struct foo) use sizeof(*up). There even were
    cases where 4 * sizeof(__u32) was used instead of sizeof(kp->reserved),
    which is very dangerous when the size of the reserved array changes.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Rebased on top of some earlier fixes]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f64f7bd54eca5210397b060ca0a9aab8e633c772
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Wed Feb 14 12:59:30 2018 +0100

    media: v4l2-compat-ioctl32.c: move 'helper' functions to __get/put_v4l2_format32
    
    commit 486c521510c44a04cd756a9267e7d1e271c8a4ba upstream.
    
    These helper functions do not really help. Move the code to the
    __get/put_v4l2_format32 functions.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Rebased on top of some earlier fixes]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 846e214562b1fd6d49ec2dd334bc5fe1ab1707f3
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Wed Feb 14 12:59:29 2018 +0100

    media: v4l2-compat-ioctl32.c: fix the indentation
    
    commit b7b957d429f601d6d1942122b339474f31191d75 upstream.
    
    The indentation of this source is all over the place. Fix this.
    This patch only changes whitespace.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Rebased on top of some earlier fixes]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 182f3143bcbc783ee18c1b8af52734929813541e
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Wed Feb 14 12:59:28 2018 +0100

    media: v4l2-compat-ioctl32.c: add missing VIDIOC_PREPARE_BUF
    
    commit 3ee6d040719ae09110e5cdf24d5386abe5d1b776 upstream.
    
    The result of the VIDIOC_PREPARE_BUF ioctl was never copied back
    to userspace since it was missing in the switch.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a1cdbb82ff493ff0ced756c04d04c1cc0128ad74
Author: Ricardo Ribalda <ricardo.ribalda@gmail.com>
Date:   Wed Feb 14 12:59:27 2018 +0100

    vb2: V4L2_BUF_FLAG_DONE is set after DQBUF
    
    commit 3171cc2b4eb9831ab4df1d80d0410a945b8bc84e upstream.
    
    According to the doc, V4L2_BUF_FLAG_DONE is cleared after DQBUF:
    
    V4L2_BUF_FLAG_DONE 0x00000004  ... After calling the VIDIOC_QBUF or
    VIDIOC_DQBUF it is always cleared ...
    
    Unfortunately, it seems that videobuf2 keeps it set after DQBUF. This
    can be tested with vivid and dev_debug:
    
    [257604.338082] video1: VIDIOC_DQBUF: 71:33:25.00260479 index=3,
    type=vid-cap, flags=0x00002004, field=none, sequence=163,
    memory=userptr, bytesused=460800, offset/userptr=0x344b000,
    length=460800
    
    This patch forces FLAG_DONE to 0 after calling DQBUF.
    
    Reported-by: Dimitrios Katsaros <patcherwork@gmail.com>
    Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5e5747642716c7a5ee61b8eb42f6b5d32136b150
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Wed Feb 14 12:59:26 2018 +0100

    media: v4l2-ioctl.c: don't copy back the result for -ENOTTY
    
    commit 181a4a2d5a0a7b43cab08a70710d727e7764ccdd upstream.
    
    If the ioctl returned -ENOTTY, then don't bother copying
    back the result as there is no point.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 98dc7e90f52c11fdde561e5496b6fb8c4ff596aa
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Wed Feb 14 12:59:25 2018 +0100

    adv7604: use correct drive strength defines
    
    The prefix is ADV7604_, not ADV76XX.
    
    Fixes: f31b62e14a ("adv7604: add hdmi driver strength adjustment")
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f9b33d1fd082c781326557d6be38ae8ec134a6a0
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Fri Aug 4 07:25:06 2017 -0400

    media: v4l2-compat-ioctl32.c: add capabilities field to, v4l2_input32
    
    commit 037e0865c2ecbaa4558feba239ece08d7e457ec0 upstream.
    
    The v4l2_input32 struct wasn't updated when this field was added.
    It didn't cause a failure in the compat code, but it is better to
    keep it in sync with v4l2_input to avoid confusion.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bd4e8dc068cfa8cab171f8ebf43c9ef556d8cce5
Author: Tiffany Lin <tiffany.lin@mediatek.com>
Date:   Mon Mar 14 08:16:14 2016 -0300

    media: v4l2-compat-ioctl32: fix missing reserved field copy in put_v4l2_create32
    
    commit baf43c6eace43868e490f18560287fa3481b2159 upstream.
    
    In v4l2-compliance utility, test VIDIOC_CREATE_BUFS will check whether reserved
    filed of v4l2_create_buffers filled with zero
    Reserved field is filled with zero in v4l_create_bufs.
    This patch copy reserved field of v4l2_create_buffer from kernel space to user
    space
    
    Signed-off-by: Tiffany Lin <tiffany.lin@mediatek.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 99d5e1c47fb68c573c4a8cf365da6a396a723c18
Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Date:   Fri May 30 20:26:38 2014 -0300

    V4L2: fix VIDIOC_CREATE_BUFS 32-bit compatibility mode data copy-back
    
    commit 6ed9b28504326f8cf542e6b68245b2f7ce009216 upstream.
    
    Similar to an earlier patch, fixing reading user-space data for the
    VIDIOC_CREATE_BUFS ioctl() in 32-bit compatibility mode, this patch fixes
    writing back of the possibly modified struct to the user. However, unlike
    the former bug, this one is much less harmful, because it only results in
    the kernel failing to write the .type field back to the user, but in fact
    this is likely unneeded, because the kernel will hardly want to change
    that field. Therefore this bug is more of a theoretical nature.
    
    Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
    Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 64a2bd74d2b0aba23b723591605e801a24090f28
Author: Hans Verkuil <hans.verkuil@cisco.com>
Date:   Thu Aug 21 17:07:21 2014 -0300

    v4l2-compat-ioctl32: fix sparse warnings
    
    commit 8ae632b11775254c5e555ee8c42b7d19baeb1473 upstream.
    
    A lot of these warnings are caused by the fact that we don't generally use
    __user in videodev2.h. Normally the video_usercopy function will copy anything
    pointed to by pointers into kernel space, so having __user in the struct will only
    cause lots of warnings in the drivers. But the flip side of that is that you
    need to add __force casts here.
    
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:337:26: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:337:30: warning: incorrect type in argument 2 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:338:31: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:338:49: warning: incorrect type in argument 2 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:343:21: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:346:21: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:349:35: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:349:46: warning: incorrect type in argument 2 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:352:35: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:352:54: warning: incorrect type in argument 2 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:363:26: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:363:32: warning: incorrect type in argument 2 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:364:31: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:364:51: warning: incorrect type in argument 2 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:371:35: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:371:56: warning: incorrect type in argument 2 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:376:35: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:376:48: warning: incorrect type in argument 2 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:430:30: warning: incorrect type in assignment (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:433:48: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:433:56: warning: incorrect type in argument 2 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:501:24: warning: incorrect type in assignment (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:507:48: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:507:56: warning: incorrect type in argument 2 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:565:18: warning: incorrect type in assignment (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:670:22: warning: incorrect type in assignment (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:680:29: warning: incorrect type in assignment (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:692:55: warning: incorrect type in initializer (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:773:18: warning: incorrect type in assignment (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:786:30: warning: incorrect type in argument 1 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:786:44: warning: incorrect type in argument 2 (different address spaces)
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:674:37: warning: dereference of noderef expression
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c:718:37: warning: dereference of noderef expression
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7acba7c0621efdfb09bb514500ba22f965aba68b
Author: Ming Lei <ming.lei@canonical.com>
Date:   Sun Aug 9 03:41:51 2015 -0400

    blk-mq: fix race between timeout and freeing request
    
    commit 0048b4837affd153897ed1222283492070027aa9 upstream.
    
    Inside timeout handler, blk_mq_tag_to_rq() is called
    to retrieve the request from one tag. This way is obviously
    wrong because the request can be freed any time and some
    fiedds of the request can't be trusted, then kernel oops
    might be triggered[1].
    
    Currently wrt. blk_mq_tag_to_rq(), the only special case is
    that the flush request can share same tag with the request
    cloned from, and the two requests can't be active at the same
    time, so this patch fixes the above issue by updating tags->rqs[tag]
    with the active request(either flush rq or the request cloned
    from) of the tag.
    
    Also blk_mq_tag_to_rq() gets much simplified with this patch.
    
    Given blk_mq_tag_to_rq() is mainly for drivers and the caller must
    make sure the request can't be freed, so in bt_for_each() this
    helper is replaced with tags->rqs[tag].
    
    [1] kernel oops log
    [  439.696220] BUG: unable to handle kernel NULL pointer dereference at 0000000000000158^M
    [  439.697162] IP: [<ffffffff812d89ba>] blk_mq_tag_to_rq+0x21/0x6e^M
    [  439.700653] PGD 7ef765067 PUD 7ef764067 PMD 0 ^M
    [  439.700653] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC ^M
    [  439.700653] Dumping ftrace buffer:^M
    [  439.700653]    (ftrace buffer empty)^M
    [  439.700653] Modules linked in: nbd ipv6 kvm_intel kvm serio_raw^M
    [  439.700653] CPU: 6 PID: 2779 Comm: stress-ng-sigfd Not tainted 4.2.0-rc5-next-20150805+ #265^M
    [  439.730500] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011^M
    [  439.730500] task: ffff880605308000 ti: ffff88060530c000 task.ti: ffff88060530c000^M
    [  439.730500] RIP: 0010:[<ffffffff812d89ba>]  [<ffffffff812d89ba>] blk_mq_tag_to_rq+0x21/0x6e^M
    [  439.730500] RSP: 0018:ffff880819203da0  EFLAGS: 00010283^M
    [  439.730500] RAX: ffff880811b0e000 RBX: ffff8800bb465f00 RCX: 0000000000000002^M
    [  439.730500] RDX: 0000000000000000 RSI: 0000000000000202 RDI: 0000000000000000^M
    [  439.730500] RBP: ffff880819203db0 R08: 0000000000000002 R09: 0000000000000000^M
    [  439.730500] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000202^M
    [  439.730500] R13: ffff880814104800 R14: 0000000000000002 R15: ffff880811a2ea00^M
    [  439.730500] FS:  00007f165b3f5740(0000) GS:ffff880819200000(0000) knlGS:0000000000000000^M
    [  439.730500] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b^M
    [  439.730500] CR2: 0000000000000158 CR3: 00000007ef766000 CR4: 00000000000006e0^M
    [  439.730500] Stack:^M
    [  439.730500]  0000000000000008 ffff8808114eed90 ffff880819203e00 ffffffff812dc104^M
    [  439.755663]  ffff880819203e40 ffffffff812d9f5e 0000020000000000 ffff8808114eed80^M
    [  439.755663] Call Trace:^M
    [  439.755663]  <IRQ> ^M
    [  439.755663]  [<ffffffff812dc104>] bt_for_each+0x6e/0xc8^M
    [  439.755663]  [<ffffffff812d9f5e>] ? blk_mq_rq_timed_out+0x6a/0x6a^M
    [  439.755663]  [<ffffffff812d9f5e>] ? blk_mq_rq_timed_out+0x6a/0x6a^M
    [  439.755663]  [<ffffffff812dc1b3>] blk_mq_tag_busy_iter+0x55/0x5e^M
    [  439.755663]  [<ffffffff812d88b4>] ? blk_mq_bio_to_request+0x38/0x38^M
    [  439.755663]  [<ffffffff812d8911>] blk_mq_rq_timer+0x5d/0xd4^M
    [  439.755663]  [<ffffffff810a3e10>] call_timer_fn+0xf7/0x284^M
    [  439.755663]  [<ffffffff810a3d1e>] ? call_timer_fn+0x5/0x284^M
    [  439.755663]  [<ffffffff812d88b4>] ? blk_mq_bio_to_request+0x38/0x38^M
    [  439.755663]  [<ffffffff810a46d6>] run_timer_softirq+0x1ce/0x1f8^M
    [  439.755663]  [<ffffffff8104c367>] __do_softirq+0x181/0x3a4^M
    [  439.755663]  [<ffffffff8104c76e>] irq_exit+0x40/0x94^M
    [  439.755663]  [<ffffffff81031482>] smp_apic_timer_interrupt+0x33/0x3e^M
    [  439.755663]  [<ffffffff815559a4>] apic_timer_interrupt+0x84/0x90^M
    [  439.755663]  <EOI> ^M
    [  439.755663]  [<ffffffff81554350>] ? _raw_spin_unlock_irq+0x32/0x4a^M
    [  439.755663]  [<ffffffff8106a98b>] finish_task_switch+0xe0/0x163^M
    [  439.755663]  [<ffffffff8106a94d>] ? finish_task_switch+0xa2/0x163^M
    [  439.755663]  [<ffffffff81550066>] __schedule+0x469/0x6cd^M
    [  439.755663]  [<ffffffff8155039b>] schedule+0x82/0x9a^M
    [  439.789267]  [<ffffffff8119b28b>] signalfd_read+0x186/0x49a^M
    [  439.790911]  [<ffffffff8106d86a>] ? wake_up_q+0x47/0x47^M
    [  439.790911]  [<ffffffff811618c2>] __vfs_read+0x28/0x9f^M
    [  439.790911]  [<ffffffff8117a289>] ? __fget_light+0x4d/0x74^M
    [  439.790911]  [<ffffffff811620a7>] vfs_read+0x7a/0xc6^M
    [  439.790911]  [<ffffffff8116292b>] SyS_read+0x49/0x7f^M
    [  439.790911]  [<ffffffff81554c17>] entry_SYSCALL_64_fastpath+0x12/0x6f^M
    [  439.790911] Code: 48 89 e5 e8 a9 b8 e7 ff 5d c3 0f 1f 44 00 00 55 89
    f2 48 89 e5 41 54 41 89 f4 53 48 8b 47 60 48 8b 1c d0 48 8b 7b 30 48 8b
    53 38 <48> 8b 87 58 01 00 00 48 85 c0 75 09 48 8b 97 88 0c 00 00 eb 10
    ^M
    [  439.790911] RIP  [<ffffffff812d89ba>] blk_mq_tag_to_rq+0x21/0x6e^M
    [  439.790911]  RSP <ffff880819203da0>^M
    [  439.790911] CR2: 0000000000000158^M
    [  439.790911] ---[ end trace d40af58949325661 ]---^M
    
    Signed-off-by: Ming Lei <ming.lei@canonical.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    [bwh: Backported to 3.16:
     - Flush state is in struct request_queue, not struct blk_flush_queue
     - Flush request cloning is done in blk_mq_clone_flush_request() rather
       than blk_kick_flush()
     - Drop changes in bt{,_tags}_for_each()
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 79e66041075335433cad1cd170f2401d6ac74e8c
Author: Andrew Bresticker <abrestic@chromium.org>
Date:   Tue Jul 22 14:43:51 2014 -0700

    mac80211_hwsim: fix compiler warning on MIPS
    
    commit 5d26b50813ea6206a7bbab2e645e68044f101ac5 upstream.
    
    The dividend in do_div() is expected to be an unsigned 64-bit integer,
    which leads to the following warning when building for 32-bit MIPS:
    
      drivers/net/wireless/mac80211_hwsim.c: In function 'mac80211_hwsim_set_tsf':
      drivers/net/wireless/mac80211_hwsim.c:664:98: warning: comparison of distinct pointer types lacks a cast [enabled by default]
        data->bcn_delta = do_div(delta, bcn_int);
    
    Since we care about the signedness of delta when adjusting tsf_offset
    and bcm_delta, use the absolute value for the division and compare
    the two timestamps to determine the sign.
    
    Signed-off-by: Andrew Bresticker <abrestic@chromium.org>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 95b5d4fc550be066548b02bdcbcdf0538d63d605
Author: Petri Gynther <pgynther@google.com>
Date:   Mon Mar 30 00:29:13 2015 -0700

    net: bcmgenet: fix bcmgenet_open()
    
    commit fac25940c5e0d6f31d56bb2a704fadad6d5e382a upstream.
    
    If bcmgenet_init_dma() fails, it cleans up after itself. Rx and Tx
    DMAs are off, and NAPI instances haven't been netif_napi_add()'ed.
    Therefore, we need to skip calling bcmgenet_fini_dma() on the error
    handling path. bcmgenet_resume() already does this correctly.
    
    Signed-off-by: Petri Gynther <pgynther@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 52f0b4f11aab0854fc31b83296d816d3d78c0892
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Mon Feb 26 16:32:31 2018 +0000

    of: fdt: Fix return with value in void function
    
    Commit 49e67dd17649 "of: fdt: add missing allocation-failure check"
    added a "return NULL" statement in __unflatten_device_tree().  When
    applied to the 3.16-stable branch, this introduced a compiler warning
    (not an error!) because the function returns void here.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 491b0fc4001bc7fd2383e6587b623a7506d93e66
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jan 26 14:54:32 2018 +0100

    hrtimer: Reset hrtimer cpu base proper on CPU hotplug
    
    commit d5421ea43d30701e03cadc56a38854c36a8b4433 upstream.
    
    The hrtimer interrupt code contains a hang detection and mitigation
    mechanism, which prevents that a long delayed hrtimer interrupt causes a
    continous retriggering of interrupts which prevent the system from making
    progress. If a hang is detected then the timer hardware is programmed with
    a certain delay into the future and a flag is set in the hrtimer cpu base
    which prevents newly enqueued timers from reprogramming the timer hardware
    prior to the chosen delay. The subsequent hrtimer interrupt after the delay
    clears the flag and resumes normal operation.
    
    If such a hang happens in the last hrtimer interrupt before a CPU is
    unplugged then the hang_detected flag is set and stays that way when the
    CPU is plugged in again. At that point the timer hardware is not armed and
    it cannot be armed because the hang_detected flag is still active, so
    nothing clears that flag. As a consequence the CPU does not receive hrtimer
    interrupts and no timers expire on that CPU which results in RCU stalls and
    other malfunctions.
    
    Clear the flag along with some other less critical members of the hrtimer
    cpu base to ensure starting from a clean state when a CPU is plugged in.
    
    Thanks to Paul, Sebastian and Anna-Maria for their help to get down to the
    root cause of that hard to reproduce heisenbug. Once understood it's
    trivial and certainly justifies a brown paperbag.
    
    Fixes: 41d2e4949377 ("hrtimer: Tune hrtimer_interrupt hang logic")
    Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sebastian Sewior <bigeasy@linutronix.de>
    Cc: Anna-Maria Gleixner <anna-maria@linutronix.de>
    Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1801261447590.2067@nanos
    [bwh: Backported to 3.16:
     - There's no next_timer field to reset
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e67eb7101a9ef218505c8a300911c28fcafae644
Author: Alexey Kodanev <alexey.kodanev@oracle.com>
Date:   Fri Jan 26 15:14:16 2018 +0300

    dccp: don't restart ccid2_hc_tx_rto_expire() if sk in closed state
    
    commit dd5684ecae3bd8e44b644f50e2c12c7e57fdfef5 upstream.
    
    ccid2_hc_tx_rto_expire() timer callback always restarts the timer
    again and can run indefinitely (unless it is stopped outside), and after
    commit 120e9dabaf55 ("dccp: defer ccid_hc_tx_delete() at dismantle time"),
    which moved ccid_hc_tx_delete() (also includes sk_stop_timer()) from
    dccp_destroy_sock() to sk_destruct(), this started to happen quite often.
    The timer prevents releasing the socket, as a result, sk_destruct() won't
    be called.
    
    Found with LTP/dccp_ipsec tests running on the bonding device,
    which later couldn't be unloaded after the tests were completed:
    
      unregister_netdevice: waiting for bond0 to become free. Usage count = 148
    
    Fixes: 2a91aa396739 ("[DCCP] CCID2: Initial CCID2 (TCP-Like) implementation")
    Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3ff8643edbb27fe2c79268836e2015904ecb12ee
Author: Jia Zhang <zhang.jia@linux.alibaba.com>
Date:   Tue Jan 23 11:41:32 2018 +0100

    x86/microcode/intel: Extend BDW late-loading further with LLC size check
    
    commit 7e702d17ed138cf4ae7c00e8c00681ed464587c7 upstream.
    
    Commit b94b73733171 ("x86/microcode/intel: Extend BDW late-loading with a
    revision check") reduced the impact of erratum BDF90 for Broadwell model
    79.
    
    The impact can be reduced further by checking the size of the last level
    cache portion per core.
    
    Tony: "The erratum says the problem only occurs on the large-cache SKUs.
    So we only need to avoid the update if we are on a big cache SKU that is
    also running old microcode."
    
    For more details, see erratum BDF90 in document #334165 (Intel Xeon
    Processor E7-8800/4800 v4 Product Family Specification Update) from
    September 2017.
    
    Fixes: b94b73733171 ("x86/microcode/intel: Extend BDW late-loading with a revision check")
    Signed-off-by: Jia Zhang <zhang.jia@linux.alibaba.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Tony Luck <tony.luck@intel.com>
    Link: https://lkml.kernel.org/r/1516321542-31161-1-git-send-email-zhang.jia@linux.alibaba.com
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7b400f4dfcf7c2add599fa1cd9e2fb6dca248226
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Mon Jan 22 18:06:37 2018 +0100

    pppoe: take ->needed_headroom of lower device into account on xmit
    
    commit 02612bb05e51df8489db5e94d0cf8d1c81f87b0c upstream.
    
    In pppoe_sendmsg(), reserving dev->hard_header_len bytes of headroom
    was probably fine before the introduction of ->needed_headroom in
    commit f5184d267c1a ("net: Allow netdevices to specify needed head/tailroom").
    
    But now, virtual devices typically advertise the size of their overhead
    in dev->needed_headroom, so we must also take it into account in
    skb_reserve().
    Allocation size of skb is also updated to take dev->needed_tailroom
    into account and replace the arbitrary 32 bytes with the real size of
    a PPPoE header.
    
    This issue was discovered by syzbot, who connected a pppoe socket to a
    gre device which had dev->header_ops->create == ipgre_header and
    dev->hard_header_len == 0. Therefore, PPPoE didn't reserve any
    headroom, and dev_hard_header() crashed when ipgre_header() tried to
    prepend its header to skb->data.
    
    skbuff: skb_under_panic: text:000000001d390b3a len:31 put:24
    head:00000000d8ed776f data:000000008150e823 tail:0x7 end:0xc0 dev:gre0
    ------------[ cut here ]------------
    kernel BUG at net/core/skbuff.c:104!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
        (ftrace buffer empty)
    Modules linked in:
    CPU: 1 PID: 3670 Comm: syzkaller801466 Not tainted
    4.15.0-rc7-next-20180115+ #97
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    RIP: 0010:skb_panic+0x162/0x1f0 net/core/skbuff.c:100
    RSP: 0018:ffff8801d9bd7840 EFLAGS: 00010282
    RAX: 0000000000000083 RBX: ffff8801d4f083c0 RCX: 0000000000000000
    RDX: 0000000000000083 RSI: 1ffff1003b37ae92 RDI: ffffed003b37aefc
    RBP: ffff8801d9bd78a8 R08: 1ffff1003b37ae8a R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000000 R12: ffffffff86200de0
    R13: ffffffff84a981ad R14: 0000000000000018 R15: ffff8801d2d34180
    FS:  00000000019c4880(0000) GS:ffff8801db300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000208bc000 CR3: 00000001d9111001 CR4: 00000000001606e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
      skb_under_panic net/core/skbuff.c:114 [inline]
      skb_push+0xce/0xf0 net/core/skbuff.c:1714
      ipgre_header+0x6d/0x4e0 net/ipv4/ip_gre.c:879
      dev_hard_header include/linux/netdevice.h:2723 [inline]
      pppoe_sendmsg+0x58e/0x8b0 drivers/net/ppp/pppoe.c:890
      sock_sendmsg_nosec net/socket.c:630 [inline]
      sock_sendmsg+0xca/0x110 net/socket.c:640
      sock_write_iter+0x31a/0x5d0 net/socket.c:909
      call_write_iter include/linux/fs.h:1775 [inline]
      do_iter_readv_writev+0x525/0x7f0 fs/read_write.c:653
      do_iter_write+0x154/0x540 fs/read_write.c:932
      vfs_writev+0x18a/0x340 fs/read_write.c:977
      do_writev+0xfc/0x2a0 fs/read_write.c:1012
      SYSC_writev fs/read_write.c:1085 [inline]
      SyS_writev+0x27/0x30 fs/read_write.c:1082
      entry_SYSCALL_64_fastpath+0x29/0xa0
    
    Admittedly PPPoE shouldn't be allowed to run on non Ethernet-like
    interfaces, but reserving space for ->needed_headroom is a more
    fundamental issue that needs to be addressed first.
    
    Same problem exists for __pppoe_xmit(), which also needs to take
    dev->needed_headroom into account in skb_cow_head().
    
    Fixes: f5184d267c1a ("net: Allow netdevices to specify needed head/tailroom")
    Reported-by: syzbot+ed0838d0fa4c4f2b528e20286e6dc63effc7c14d@syzkaller.appspotmail.com
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4a6e9e328c8d18821eba663c3c7fc8ddf647efed
Author: Aaron Ma <aaron.ma@canonical.com>
Date:   Fri Jan 19 09:43:39 2018 -0800

    Input: trackpoint - force 3 buttons if 0 button is reported
    
    commit f5d07b9e98022d50720e38aa936fc11c67868ece upstream.
    
    Lenovo introduced trackpoint compatible sticks with minimum PS/2 commands.
    They supposed to reply with 0x02, 0x03, or 0x04 in response to the
    "Read Extended ID" command, so we would know not to try certain extended
    commands. Unfortunately even some trackpoints reporting the original IBM
    version (0x01 firmware 0x0e) now respond with incorrect data to the "Get
    Extended Buttons" command:
    
     thinkpad_acpi: ThinkPad BIOS R0DET87W (1.87 ), EC unknown
     thinkpad_acpi: Lenovo ThinkPad E470, model 20H1004SGE
    
     psmouse serio2: trackpoint: IBM TrackPoint firmware: 0x0e, buttons: 0/0
    
    Since there are no trackpoints without buttons, let's assume the trackpoint
    has 3 buttons when we get 0 response to the extended buttons query.
    
    Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
    Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=196253
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dd7ae1d08bc79aa104da89e4124de1231bbf16b1
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>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d01262f521931bc5c1cb2078c5136ab45b2226df
Author: Felix Fietkau <nbd@nbd.name>
Date:   Fri Jan 19 11:50:46 2018 +0100

    net: igmp: fix source address check for IGMPv3 reports
    
    commit ad23b750933ea7bf962678972a286c78a8fa36aa upstream.
    
    Commit "net: igmp: Use correct source address on IGMPv3 reports"
    introduced a check to validate the source address of locally generated
    IGMPv3 packets.
    Instead of checking the local interface address directly, it uses
    inet_ifa_match(fl4->saddr, ifa), which checks if the address is on the
    local subnet (or equal to the point-to-point address if used).
    
    This breaks for point-to-point interfaces, so check against
    ifa->ifa_local directly.
    
    Cc: Kevin Cernekee <cernekee@chromium.org>
    Fixes: a46182b00290 ("net: igmp: Use correct source address on IGMPv3 reports")
    Reported-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d3c38df3171bdb31d9ef24dadc855c8b40370f29
Author: Kevin Cernekee <cernekee@chromium.org>
Date:   Mon Dec 11 11:13:45 2017 -0800

    net: igmp: Use correct source address on IGMPv3 reports
    
    commit a46182b00290839fa3fa159d54fd3237bd8669f0 upstream.
    
    Closing a multicast socket after the final IPv4 address is deleted
    from an interface can generate a membership report that uses the
    source IP from a different interface.  The following test script, run
    from an isolated netns, reproduces the issue:
    
        #!/bin/bash
    
        ip link add dummy0 type dummy
        ip link add dummy1 type dummy
        ip link set dummy0 up
        ip link set dummy1 up
        ip addr add 10.1.1.1/24 dev dummy0
        ip addr add 192.168.99.99/24 dev dummy1
    
        tcpdump -U -i dummy0 &
        socat EXEC:"sleep 2" \
            UDP4-DATAGRAM:239.101.1.68:8889,ip-add-membership=239.0.1.68:10.1.1.1 &
    
        sleep 1
        ip addr del 10.1.1.1/24 dev dummy0
        sleep 5
        kill %tcpdump
    
    RFC 3376 specifies that the report must be sent with a valid IP source
    address from the destination subnet, or from address 0.0.0.0.  Add an
    extra check to make sure this is the case.
    
    Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 81619a39b447cf0fc5f8dbd46308da4a3ffb90bb
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Jan 18 16:28:26 2018 +0100

    x86/mce: Make machine check speculation protected
    
    commit 6f41c34d69eb005e7848716bbcafc979b35037d5 upstream.
    
    The machine check idtentry uses an indirect branch directly from the low
    level code. This evades the speculation protection.
    
    Replace it by a direct call into C code and issue the indirect call there
    so the compiler can apply the proper speculation protection.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by:Borislav Petkov <bp@alien8.de>
    Reviewed-by: David Woodhouse <dwmw@amazon.co.uk>
    Niced-by: Peter Zijlstra <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1801181626290.1847@nanos
    [bwh: Backported to 3.16
     - #include <asm/traps.h> in mce.c
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 993d55fc73324946f370840f28e3635733f6acf0
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Tue Jan 16 23:20:22 2018 +0100

    cfg80211: fix station info handling bugs
    
    commit 5762d7d3eda25c03cc2d9d45227be3f5ab6bec9e upstream.
    
    Fix two places where the structure isn't initialized to zero,
    and thus can't be filled properly by the driver.
    
    Fixes: 4a4b8169501b ("cfg80211: Accept multiple RSSI thresholds for CQM")
    Fixes: 9930380f0bd8 ("cfg80211: implement IWRATE")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: drop change in cfg80211_cqm_rssi_update()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 75b437804e43949e4840bf7e3c90c22c2b051d5a
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Tue Jan 16 19:30:14 2018 +0100

    can: af_can: canfd_rcv(): replace WARN_ONCE by pr_warn_once
    
    commit d4689846881d160a4d12a514e991a740bcb5d65a upstream.
    
    If an invalid CANFD frame is received, from a driver or from a tun
    interface, a Kernel warning is generated.
    
    This patch replaces the WARN_ONCE by a simple pr_warn_once, so that a
    kernel, bootet with panic_on_warn, does not panic. A printk seems to be
    more appropriate here.
    
    Reported-by: syzbot+e3b775f40babeff6e68b@syzkaller.appspotmail.com
    Suggested-by: Dmitry Vyukov <dvyukov@google.com>
    Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    [bwh: Backported to 3.16:
     - Keep using the 'drop' label, as it has another user
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0d8fccb299997baac2122da82f3fae799fe50e91
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Tue Jan 16 19:30:14 2018 +0100

    can: af_can: can_rcv(): replace WARN_ONCE by pr_warn_once
    
    commit 8cb68751c115d176ec851ca56ecfbb411568c9e8 upstream.
    
    If an invalid CAN frame is received, from a driver or from a tun
    interface, a Kernel warning is generated.
    
    This patch replaces the WARN_ONCE by a simple pr_warn_once, so that a
    kernel, bootet with panic_on_warn, does not panic. A printk seems to be
    more appropriate here.
    
    Reported-by: syzbot+4386709c0c1284dca827@syzkaller.appspotmail.com
    Suggested-by: Dmitry Vyukov <dvyukov@google.com>
    Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    [bwh: Backported to 3.16:
     - Keep using the 'drop' label, as it has another user
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 13b9af482f1b26378db58d9eccb1fb8a8807a8d8
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue Jan 16 10:33:05 2018 +0100

    net: fs_enet: do not call phy_stop() in interrupts
    
    commit f8b39039cbf2a15f2b8c9f081e1cbd5dee00aaf5 upstream.
    
    In case of TX timeout, fs_timeout() calls phy_stop(), which
    triggers the following BUG_ON() as we are in interrupt.
    
    [92708.199889] kernel BUG at drivers/net/phy/mdio_bus.c:482!
    [92708.204985] Oops: Exception in kernel mode, sig: 5 [#1]
    [92708.210119] PREEMPT
    [92708.212107] CMPC885
    [92708.214216] CPU: 0 PID: 3 Comm: ksoftirqd/0 Tainted: G        W       4.9.61 #39
    [92708.223227] task: c60f0a40 task.stack: c6104000
    [92708.227697] NIP: c02a84bc LR: c02a947c CTR: c02a93d8
    [92708.232614] REGS: c6105c70 TRAP: 0700   Tainted: G        W        (4.9.61)
    [92708.241193] MSR: 00021032 <ME,IR,DR,RI>[92708.244818]   CR: 24000822  XER: 20000000
    [92708.248767]
    GPR00: c02a947c c6105d20 c60f0a40 c62b4c00 00000005 0000001f c069aad8 0001a688
    GPR08: 00000007 00000100 c02a93d8 00000000 000005fc 00000000 c6213240 c06338e4
    GPR16: 00000001 c06330d4 c0633094 00000000 c0680000 c6104000 c6104000 00000000
    GPR24: 00000200 00000000 ffffffff 00000004 00000078 00009032 00000000 c62b4c00
    NIP [c02a84bc] mdiobus_read+0x20/0x74
    [92708.281517] LR [c02a947c] kszphy_config_intr+0xa4/0xc4
    [92708.286547] Call Trace:
    [92708.288980] [c6105d20] [c6104000] 0xc6104000 (unreliable)
    [92708.294339] [c6105d40] [c02a947c] kszphy_config_intr+0xa4/0xc4
    [92708.300098] [c6105d50] [c02a5330] phy_stop+0x60/0x9c
    [92708.305007] [c6105d60] [c02c84d0] fs_timeout+0xdc/0x110
    [92708.310197] [c6105d80] [c035cd48] dev_watchdog+0x268/0x2a0
    [92708.315593] [c6105db0] [c0060288] call_timer_fn+0x34/0x17c
    [92708.321014] [c6105dd0] [c00605f0] run_timer_softirq+0x21c/0x2e4
    [92708.326887] [c6105e50] [c001e19c] __do_softirq+0xf4/0x2f4
    [92708.332207] [c6105eb0] [c001e3c8] run_ksoftirqd+0x2c/0x40
    [92708.337560] [c6105ec0] [c003b420] smpboot_thread_fn+0x1f0/0x258
    [92708.343405] [c6105ef0] [c003745c] kthread+0xbc/0xd0
    [92708.348217] [c6105f40] [c000c400] ret_from_kernel_thread+0x5c/0x64
    [92708.354275] Instruction dump:
    [92708.357207] 7c0803a6 bbc10018 38210020 4e800020 7c0802a6 9421ffe0 54290024 bfc10018
    [92708.364865] 90010024 7c7f1b78 81290008 552902ee <0f090000> 3bc3002c 7fc3f378 90810008
    [92708.372711] ---[ end trace 42b05441616fafd7 ]---
    
    This patch moves fs_timeout() actions into an async worker.
    
    Fixes: commit 48257c4f168e5 ("Add fs_enet ethernet network driver, for several embedded platforms")
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4a6efb0107eb5cb91dc19efc0a518ee12793190e
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Nov 15 12:31:44 2017 -0700

    i2c: core-smbus: prevent stack corruption on read I2C_BLOCK_DATA
    
    commit 89c6efa61f5709327ecfa24bff18e57a4e80c7fa upstream.
    
    On a I2C_SMBUS_I2C_BLOCK_DATA read request, if data->block[0] is
    greater than I2C_SMBUS_BLOCK_MAX + 1, the underlying I2C driver writes
    data out of the msgbuf1 array boundary.
    
    It is possible from a user application to run into that issue by
    calling the I2C_SMBUS ioctl with data.block[0] greater than
    I2C_SMBUS_BLOCK_MAX + 1.
    
    This patch makes the code compliant with
    Documentation/i2c/dev-interface by raising an error when the requested
    size is larger than 32 bytes.
    
    Call Trace:
     [<ffffffff8139f695>] dump_stack+0x67/0x92
     [<ffffffff811802a4>] panic+0xc5/0x1eb
     [<ffffffff810ecb5f>] ? vprintk_default+0x1f/0x30
     [<ffffffff817456d3>] ? i2cdev_ioctl_smbus+0x303/0x320
     [<ffffffff8109a68b>] __stack_chk_fail+0x1b/0x20
     [<ffffffff817456d3>] i2cdev_ioctl_smbus+0x303/0x320
     [<ffffffff81745aed>] i2cdev_ioctl+0x4d/0x1e0
     [<ffffffff811f761a>] do_vfs_ioctl+0x2ba/0x490
     [<ffffffff81336e43>] ? security_file_ioctl+0x43/0x60
     [<ffffffff811f7869>] SyS_ioctl+0x79/0x90
     [<ffffffff81a22e97>] entry_SYSCALL_64_fastpath+0x12/0x6a
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3f8470bb17cbc9bf2cf41883c88496365955d1fa
Author: Lixin Wang <alan.1.wang@nokia-sbell.com>
Date:   Mon Nov 27 15:06:55 2017 +0800

    i2c: core: decrease reference count of device node in i2c_unregister_device
    
    commit e0638fa400eaccf9fa8060f67140264c4e276552 upstream.
    
    Reference count of device node was increased in of_i2c_register_device,
    but without decreasing it in i2c_unregister_device. Then the added
    device node will never be released. Fix this by adding the of_node_put.
    
    Signed-off-by: Lixin Wang <alan.1.wang@nokia-sbell.com>
    Tested-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8cbb486d925645d55a51ff3288b2adb5d190bef7
Author: Joe Thornber <thornber@redhat.com>
Date:   Wed Dec 20 09:56:06 2017 +0000

    dm btree: fix serious bug in btree_split_beneath()
    
    commit bc68d0a43560e950850fc69b58f0f8254b28f6d6 upstream.
    
    When inserting a new key/value pair into a btree we walk down the spine of
    btree nodes performing the following 2 operations:
    
      i) space for a new entry
      ii) adjusting the first key entry if the new key is lower than any in the node.
    
    If the _root_ node is full, the function btree_split_beneath() allocates 2 new
    nodes, and redistibutes the root nodes entries between them.  The root node is
    left with 2 entries corresponding to the 2 new nodes.
    
    btree_split_beneath() then adjusts the spine to point to one of the two new
    children.  This means the first key is never adjusted if the new key was lower,
    ie. operation (ii) gets missed out.  This can result in the new key being
    'lost' for a period; until another low valued key is inserted that will uncover
    it.
    
    This is a serious bug, and quite hard to make trigger in normal use.  A
    reproducing test case ("thin create devices-in-reverse-order") is
    available as part of the thin-provision-tools project:
      https://github.com/jthornber/thin-provisioning-tools/blob/master/functional-tests/device-mapper/dm-tests.scm#L593
    
    Fix the issue by changing btree_split_beneath() so it no longer adjusts
    the spine.  Instead it unlocks both the new nodes, and lets the main
    loop in btree_insert_raw() relock the appropriate one and make any
    neccessary adjustments.
    
    Reported-by: Monty Pavel <monty_pavel@sina.com>
    Signed-off-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 86aeb76561cf8b87dafb12ad75a01812efd0b46c
Author: Dennis Yang <dennisyang@qnap.com>
Date:   Tue Dec 12 18:21:40 2017 +0800

    dm thin metadata: THIN_MAX_CONCURRENT_LOCKS should be 6
    
    commit 490ae017f54e55bde382d45ea24bddfb6d1a0aaf upstream.
    
    For btree removal, there is a corner case that a single thread
    could takes 6 locks which is more than THIN_MAX_CONCURRENT_LOCKS(5)
    and leads to deadlock.
    
    A btree removal might eventually call
    rebalance_children()->rebalance3() to rebalance entries of three
    neighbor child nodes when shadow_spine has already acquired two
    write locks. In rebalance3(), it tries to shadow and acquire the
    write locks of all three child nodes. However, shadowing a child
    node requires acquiring a read lock of the original child node and
    a write lock of the new block. Although the read lock will be
    released after block shadowing, shadowing the third child node
    in rebalance3() could still take the sixth lock.
    (2 write locks for shadow_spine +
     2 write locks for the first two child nodes's shadow +
     1 write lock for the last child node's shadow +
     1 read lock for the last child node)
    
    Signed-off-by: Dennis Yang <dennisyang@qnap.com>
    Acked-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8b5184f91e40d6d77436fbb6f315b751824dfef7
Author: Tianyu Lan <lantianyu1986@gmail.com>
Date:   Tue Jan 16 17:34:07 2018 +0800

    KVM/x86: Fix wrong macro references of X86_CR0_PG_BIT and X86_CR4_PAE_BIT in kvm_valid_sregs()
    
    commit 37b95951c58fdf08dc10afa9d02066ed9f176fb5 upstream.
    
    kvm_valid_sregs() should use X86_CR0_PG and X86_CR4_PAE to check bit
    status rather than X86_CR0_PG_BIT and X86_CR4_PAE_BIT. This patch is
    to fix it.
    
    Fixes: f29810335965a(KVM/x86: Check input paging mode when cs.l is set)
    Reported-by: Jeremi Piotrowski <jeremi.piotrowski@gmail.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c18241c1ae3814b50037881b3ae03eb70a855ff4
Author: Lan Tianyu <tianyu.lan@intel.com>
Date:   Thu Dec 14 03:01:52 2017 -0500

    KVM/x86: Check input paging mode when cs.l is set
    
    commit f29810335965ac1f7bcb501ee2af5f039f792416 upstream.
    
    Reported by syzkaller:
        WARNING: CPU: 0 PID: 27962 at arch/x86/kvm/emulate.c:5631 x86_emulate_insn+0x557/0x15f0 [kvm]
        Modules linked in: kvm_intel kvm [last unloaded: kvm]
        CPU: 0 PID: 27962 Comm: syz-executor Tainted: G    B   W        4.15.0-rc2-next-20171208+ #32
        Hardware name: Intel Corporation S1200SP/S1200SP, BIOS S1200SP.86B.01.03.0006.040720161253 04/07/2016
        RIP: 0010:x86_emulate_insn+0x557/0x15f0 [kvm]
        RSP: 0018:ffff8807234476d0 EFLAGS: 00010282
        RAX: 0000000000000000 RBX: ffff88072d0237a0 RCX: ffffffffa0065c4d
        RDX: 1ffff100e5a046f9 RSI: 0000000000000003 RDI: ffff88072d0237c8
        RBP: ffff880723447728 R08: ffff88072d020000 R09: ffffffffa008d240
        R10: 0000000000000002 R11: ffffed00e7d87db3 R12: ffff88072d0237c8
        R13: ffff88072d023870 R14: ffff88072d0238c2 R15: ffffffffa008d080
        FS:  00007f8a68666700(0000) GS:ffff880802200000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 000000002009506c CR3: 000000071fec4005 CR4: 00000000003626f0
        Call Trace:
         x86_emulate_instruction+0x3bc/0xb70 [kvm]
         ? reexecute_instruction.part.162+0x130/0x130 [kvm]
         vmx_handle_exit+0x46d/0x14f0 [kvm_intel]
         ? trace_event_raw_event_kvm_entry+0xe7/0x150 [kvm]
         ? handle_vmfunc+0x2f0/0x2f0 [kvm_intel]
         ? wait_lapic_expire+0x25/0x270 [kvm]
         vcpu_enter_guest+0x720/0x1ef0 [kvm]
         ...
    
    When CS.L is set, vcpu should run in the 64 bit paging mode.
    Current kvm set_sregs function doesn't have such check when
    userspace inputs sreg values. This will lead unexpected behavior.
    This patch is to add checks for CS.L, EFER.LME, EFER.LMA and
    CR4.PAE when get SREG inputs from userspace in order to avoid
    unexpected behavior.
    
    Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Jim Mattson <jmattson@google.com>
    Signed-off-by: Tianyu Lan <tianyu.lan@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 782b8d5e9ab24a4fc66125517bd527cebf2b1f6f
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Jan 15 17:02:00 2018 +0800

    sctp: do not allow the v4 socket to bind a v4mapped v6 address
    
    commit c5006b8aa74599ce19104b31d322d2ea9ff887cc upstream.
    
    The check in sctp_sockaddr_af is not robust enough to forbid binding a
    v4mapped v6 addr on a v4 socket.
    
    The worse thing is that v4 socket's bind_verify would not convert this
    v4mapped v6 addr to a v4 addr. syzbot even reported a crash as the v4
    socket bound a v6 addr.
    
    This patch is to fix it by doing the common sa.sa_family check first,
    then AF_INET check for v4mapped v6 addrs.
    
    Fixes: 7dab83de50c7 ("sctp: Support ipv6only AF_INET6 sockets.")
    Reported-by: syzbot+7b7b518b1228d2743963@syzkaller.appspotmail.com
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit acd29e66c9d6a738b2fddb8f7f765f8c3c64163b
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Jan 15 17:01:36 2018 +0800

    sctp: return error if the asoc has been peeled off in sctp_wait_for_sndbuf
    
    commit a0ff660058b88d12625a783ce9e5c1371c87951f upstream.
    
    After commit cea0cc80a677 ("sctp: use the right sk after waking up from
    wait_buf sleep"), it may change to lock another sk if the asoc has been
    peeled off in sctp_wait_for_sndbuf.
    
    However, the asoc's new sk could be already closed elsewhere, as it's in
    the sendmsg context of the old sk that can't avoid the new sk's closing.
    If the sk's last one refcnt is held by this asoc, later on after putting
    this asoc, the new sk will be freed, while under it's own lock.
    
    This patch is to revert that commit, but fix the old issue by returning
    error under the old sk's lock.
    
    Fixes: cea0cc80a677 ("sctp: use the right sk after waking up from wait_buf sleep")
    Reported-by: syzbot+ac6ea7baa4432811eb50@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1cff65db1c7becc85a989b2551daf8a25c1c506d
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Nov 15 16:57:26 2017 +0800

    sctp: use the right sk after waking up from wait_buf sleep
    
    commit cea0cc80a6777beb6eb643d4ad53690e1ad1d4ff upstream.
    
    Commit dfcb9f4f99f1 ("sctp: deny peeloff operation on asocs with threads
    sleeping on it") fixed the race between peeloff and wait sndbuf by
    checking waitqueue_active(&asoc->wait) in sctp_do_peeloff().
    
    But it actually doesn't work, as even if waitqueue_active returns false
    the waiting sndbuf thread may still not yet hold sk lock. After asoc is
    peeled off, sk is not asoc->base.sk any more, then to hold the old sk
    lock couldn't make assoc safe to access.
    
    This patch is to fix this by changing to hold the new sk lock if sk is
    not asoc->base.sk, meanwhile, also set the sk in sctp_sendmsg with the
    new sk.
    
    With this fix, there is no more race between peeloff and waitbuf, the
    check 'waitqueue_active' in sctp_do_peeloff can be removed.
    
    Thanks Marcelo and Neil for making this clear.
    
    v1->v2:
      fix it by changing to lock the new sock instead of adding a flag in asoc.
    
    Suggested-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 28155cb02773ddae92abf284c13398a0b74f6a1c
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Jan 16 10:23:47 2018 +0000

    arm64: KVM: Fix SMCCC handling of unimplemented SMC/HVC calls
    
    commit acfb3b883f6d6a4b5d27ad7fdded11f6a09ae6dd upstream.
    
    KVM doesn't follow the SMCCC when it comes to unimplemented calls,
    and inject an UNDEF instead of returning an error. Since firmware
    calls are now used for security mitigation, they are becoming more
    common, and the undef is counter productive.
    
    Instead, let's follow the SMCCC which states that -1 must be returned
    to the caller when getting an unknown function number.
    
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
    [bwh: Backported to 3.16: use vcpu_reg()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 04066350ba728125cc602d06cfd83068e77f6c9b
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Jan 15 09:58:27 2018 +0100

    cfg80211: check dev_set_name() return value
    
    commit 59b179b48ce2a6076448a44531242ac2b3f6cef2 upstream.
    
    syzbot reported a warning from rfkill_alloc(), and after a while
    I think that the reason is that it was doing fault injection and
    the dev_set_name() failed, leaving the name NULL, and we didn't
    check the return value and got to rfkill_alloc() with a NULL name.
    Since we really don't want a NULL name, we ought to check the
    return value.
    
    Fixes: fb28ad35906a ("net: struct device - replace bus_id with dev_name(), dev_set_name()")
    Reported-by: syzbot+1ddfb3357e1d7bb5b5d3@syzkaller.appspotmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 764e93142fb5c115f4f39ff6192ee37554577afc
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Jan 15 09:32:36 2018 +0100

    mac80211_hwsim: validate number of different channels
    
    commit 51a1aaa631c90223888d8beac4d649dc11d2ca55 upstream.
    
    When creating a new radio on the fly, hwsim allows this
    to be done with an arbitrary number of channels, but
    cfg80211 only supports a limited number of simultaneous
    channels, leading to a warning.
    
    Fix this by validating the number - this requires moving
    the define for the maximum out to a visible header file.
    
    Reported-by: syzbot+8dd9051ff19940290931@syzkaller.appspotmail.com
    Fixes: b59ec8dd4394 ("mac80211_hwsim: fix number of channels in interface combinations")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    [bwh: Backported to 3.16:
     - Test chans intead of param.channels
     - GENL_SET_ERR_MSG() is not available
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b47ac6dab7777172e31e014a7be2dbd7b484557f
Author: Dominik Brodowski <linux@dominikbrodowski.net>
Date:   Mon Jan 15 08:12:15 2018 +0100

    nl80211: take RCU read lock when calling ieee80211_bss_get_ie()
    
    commit 7a94b8c2eee7083ddccd0515830f8c81a8e44b1a upstream.
    
    As ieee80211_bss_get_ie() derefences an RCU to return ssid_ie, both
    the call to this function and any operation on this variable need
    protection by the RCU read lock.
    
    Fixes: 44905265bc15 ("nl80211: don't expose wdev->ssid for most interfaces")
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 762c02e688cd2e326dec50e030ad559a3c943192
Author: Li Jinyue <lijinyue@huawei.com>
Date:   Thu Dec 14 17:04:54 2017 +0800

    futex: Prevent overflow by strengthen input validation
    
    commit fbe0e839d1e22d88810f3ee3e2f1479be4c0aa4a upstream.
    
    UBSAN reports signed integer overflow in kernel/futex.c:
    
     UBSAN: Undefined behaviour in kernel/futex.c:2041:18
     signed integer overflow:
     0 - -2147483648 cannot be represented in type 'int'
    
    Add a sanity check to catch negative values of nr_wake and nr_requeue.
    
    Signed-off-by: Li Jinyue <lijinyue@huawei.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: peterz@infradead.org
    Cc: dvhart@infradead.org
    Link: https://lkml.kernel.org/r/1513242294-31786-1-git-send-email-lijinyue@huawei.com
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d95b363800ef440ed5c3e2de6f1c1a4c806b595c
Author: Stefan Agner <stefan@agner.ch>
Date:   Thu Jan 11 14:47:40 2018 +0100

    usb: misc: usb3503: make sure reset is low for at least 100us
    
    commit b8626f1dc29d3eee444bfaa92146ec7b291ef41c upstream.
    
    When using a GPIO which is high by default, and initialize the
    driver in USB Hub mode, initialization fails with:
      [  111.757794] usb3503 0-0008: SP_ILOCK failed (-5)
    
    The reason seems to be that the chip is not properly reset.
    Probe does initialize reset low, however some lines later the
    code already set it back high, which is not long enouth.
    
    Make sure reset is asserted for at least 100us by inserting a
    delay after initializing the reset pin during probe.
    
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 87689114fd73f8557a8273101c55cfa8d8a1a0fe
Author: Andrew Honig <ahonig@google.com>
Date:   Wed Jan 10 10:12:03 2018 -0800

    KVM: x86: Add memory barrier on vmcs field lookup
    
    commit 75f139aaf896d6fdeec2e468ddfa4b2fe469bf40 upstream.
    
    This adds a memory barrier when performing a lookup into
    the vmcs_field_to_offset_table.  This is related to
    CVE-2017-5753.
    
    Signed-off-by: Andrew Honig <ahonig@google.com>
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1901ad4e0b5b43492c2eedf89bf0d946902fc641
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 10 23:48:05 2018 +0100

    ALSA: pcm: Remove yet superfluous WARN_ON()
    
    commit 23b19b7b50fe1867da8d431eea9cd3e4b6328c2c upstream.
    
    muldiv32() contains a snd_BUG_ON() (which is morphed as WARN_ON() with
    debug option) for checking the case of 0 / 0.  This would be helpful
    if this happens only as a logical error; however, since the hw refine
    is performed with any data set provided by user, the inconsistent
    values that can trigger such a condition might be passed easily.
    Actually, syzbot caught this by passing some zero'ed old hw_params
    ioctl.
    
    So, having snd_BUG_ON() there is simply superfluous and rather
    harmful to give unnecessary confusions.  Let's get rid of it.
    
    Reported-by: syzbot+7e6ee55011deeebce15d@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f0e95a371a18d47e047ad496760383078d20738b
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Tue Jan 9 13:40:41 2018 -0800

    8021q: fix a memory leak for VLAN 0 device
    
    commit 78bbb15f2239bc8e663aa20bbe1987c91a0b75f6 upstream.
    
    A vlan device with vid 0 is allow to creat by not able to be fully
    cleaned up by unregister_vlan_dev() which checks for vlan_id!=0.
    
    Also, VLAN 0 is probably not a valid number and it is kinda
    "reserved" for HW accelerating devices, but it is probably too
    late to reject it from creation even if makes sense. Instead,
    just remove the check in unregister_vlan_dev().
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Fixes: ad1afb003939 ("vlan_dev: VLAN 0 should be treated as "no vlan tag" (802.1p packet)")
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7dedde36f047c0a2d5b0c87aa36ca188ff6f3466
Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date:   Wed Jan 10 17:10:12 2018 +1100

    powerpc: Don't preempt_disable() in show_cpuinfo()
    
    commit 349524bc0da698ec77f2057cf4a4948eb6349265 upstream.
    
    This causes warnings from cpufreq mutex code. This is also rather
    unnecessary and ineffective. If we really want to prevent concurrent
    unplug, we could take the unplug read lock but I don't see this being
    critical.
    
    Fixes: cd77b5ce208c ("powerpc/powernv/cpufreq: Fix the frequency read by /proc/cpuinfo")
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 843a8b55a325df728dae1967b21cb84c16415bc9
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 10 10:53:18 2018 +0100

    ALSA: hda - Apply the existing quirk to iMac 14,1
    
    commit 031f335cda879450095873003abb03ae8ed3b74a upstream.
    
    iMac 14,1 requires the same quirk as iMac 12,2, using GPIO 2 and 3 for
    headphone and speaker output amps.  Add the codec SSID quirk entry
    (106b:0600) accordingly.
    
    BugLink: http://lkml.kernel.org/r/CAEw6Zyteav09VGHRfD5QwsfuWv5a43r0tFBNbfcHXoNrxVz7ew@mail.gmail.com
    Reported-by: Freaky <freaky2000@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 504d6adee5a0296f8ebc25b7776f13e69d154e5d
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Sat Jan 6 21:53:27 2018 +0300

    SolutionEngine771x: add Ether TSU resource
    
    commit f9a531d6731d74f1e24298d9641c2dc1fef2631b upstream.
    
    After the  Ether platform data is fixed, the driver probe() method would
    still fail since the 'struct sh_eth_cpu_data' corresponding  to SH771x
    indicates the presence of TSU but the memory resource for it is absent.
    Add the missing TSU resource  to both Ether devices and fix the harmless
    off-by-one error in the main memory resources, while at it...
    
    Fixes: 4986b996882d ("net: sh_eth: remove the SH_TSU_ADDR")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ab81d1f4145aace824a0721902fb60c369ef20b6
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Sat Jan 6 21:53:26 2018 +0300

    SolutionEngine771x: fix Ether platform data
    
    commit 195e2addbce09e5afbc766efc1e6567c9ce840d3 upstream.
    
    The 'sh_eth' driver's probe() method would fail  on the SolutionEngine7710
    board and crash on SolutionEngine7712 board  as the platform code is
    hopelessly behind the driver's platform data --  it passes the PHY address
    instead of 'struct sh_eth_plat_data *'; pass the latter to the driver in
    order to fix the bug...
    
    Fixes: 71557a37adb5 ("[netdrvr] sh_eth: Add SH7619 support")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 95e57598253a89861ea498a96a91d2b3c8a1c541
Author: Nicolai Stange <nstange@suse.de>
Date:   Mon Jan 8 15:54:44 2018 +0100

    net: ipv4: emulate READ_ONCE() on ->hdrincl bit-field in raw_sendmsg()
    
    commit 20b50d79974ea3192e8c3ab7faf4e536e5f14d8f upstream.
    
    Commit 8f659a03a0ba ("net: ipv4: fix for a race condition in
    raw_sendmsg") fixed the issue of possibly inconsistent ->hdrincl handling
    due to concurrent updates by reading this bit-field member into a local
    variable and using the thus stabilized value in subsequent tests.
    
    However, aforementioned commit also adds the (correct) comment that
    
      /* hdrincl should be READ_ONCE(inet->hdrincl)
       * but READ_ONCE() doesn't work with bit fields
       */
    
    because as it stands, the compiler is free to shortcut or even eliminate
    the local variable at its will.
    
    Note that I have not seen anything like this happening in reality and thus,
    the concern is a theoretical one.
    
    However, in order to be on the safe side, emulate a READ_ONCE() on the
    bit-field by doing it on the local 'hdrincl' variable itself:
    
            int hdrincl = inet->hdrincl;
            hdrincl = READ_ONCE(hdrincl);
    
    This breaks the chain in the sense that the compiler is not allowed
    to replace subsequent reads from hdrincl with reloads from inet->hdrincl.
    
    Fixes: 8f659a03a0ba ("net: ipv4: fix for a race condition in raw_sendmsg")
    Signed-off-by: Nicolai Stange <nstange@suse.de>
    Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: use ACCESS_ONCE()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b36fd6d378eac22ecf30d85e5b1c45f5d486e2c1
Author: Icenowy Zheng <icenowy@aosc.io>
Date:   Sat Jan 6 00:56:44 2018 +0800

    uas: ignore UAS for Norelsys NS1068(X) chips
    
    commit 928afc85270753657b5543e052cc270c279a3fe9 upstream.
    
    The UAS mode of Norelsys NS1068(X) is reported to fail to work on
    several platforms with the following error message:
    
    xhci-hcd xhci-hcd.0.auto: ERROR Transfer event for unknown stream ring slot 1 ep 8
    xhci-hcd xhci-hcd.0.auto: @00000000bf04a400 00000000 00000000 1b000000 01098001
    
    And when trying to mount a partition on the disk the disk will
    disconnect from the USB controller, then after re-connecting the device
    will be offlined and not working at all.
    
    Falling back to USB mass storage can solve this problem, so ignore UAS
    function of this chip.
    
    Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
    Acked-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4ece14fdc9d7b72a8e57b94db50df4d8a31acc7c
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Jan 3 12:51:51 2018 -0500

    USB: UDC core: fix double-free in usb_add_gadget_udc_release
    
    commit 7ae2c3c280db183ca9ada2675c34ec2f7378abfa upstream.
    
    The error-handling pathways in usb_add_gadget_udc_release() are messed
    up.  Aside from the uninformative statement labels, they can deallocate
    the udc structure after calling put_device(), which is a double-free.
    This was observed by KASAN in automatic testing.
    
    This patch cleans up the routine.  It preserves the requirement that
    when any failure occurs, we call put_device(&gadget->dev).
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Fengguang Wu <fengguang.wu@intel.com>
    Reviewed-by: Peter Chen <peter.chen@nxp.com>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16:
     - The err5 path is not presnet
     - Adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 85aa1d29a194815f6a17f7af64fb155d6a598123
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Aug 17 14:49:55 2017 -0400

    USB: Gadget core: fix inconsistency in the interface tousb_add_gadget_udc_release()
    
    commit afd7fd81f22bf90474216515dbd6088f9bd70343 upstream.
    
    The usb_add_gadget_udc_release() routine in the USB gadget core will
    sometimes but not always call the gadget's release function when an
    error occurs.  More specifically, if the struct usb_udc allocation
    fails then the release function is not called, and for other errors it
    is.
    
    As a result, users of this routine cannot know whether they need to
    deallocate the memory containing the gadget structure following an
    error.  This leads to unavoidable memory leaks or double frees.
    
    This patch fixes the problem by splitting the existing
    device_register() call into device_initialize() and device_add(), and
    doing the udc allocation in between.  That way, even if the allocation
    fails it is still possible to call device_del(), and so the release
    function will be always called following an error.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4d30932842963f906c234d7901f4d25590322e38
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Jan 16 11:32:51 2015 -0500

    usb: udc: core: add device_del() call to error pathway
    
    commit c93e64e91248becd0edb8f01723dff9da890e2ab upstream.
    
    This patch fixes a bug in the error pathway of
    usb_add_gadget_udc_release() in udc-core.c.  If the udc registration
    fails, the gadget registration is not fully undone; there's a
    put_device(&gadget->dev) call but no device_del().
    
    Acked-by: Peter Chen <peter.chen@freescale.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5dd3239f6b7c6fe644406a2f8d55156c4b4c3996
Author: Pete Zaitcev <zaitcev@redhat.com>
Date:   Mon Jan 8 15:46:41 2018 -0600

    USB: fix usbmon BUG trigger
    
    commit 46eb14a6e1585d99c1b9f58d0e7389082a5f466b upstream.
    
    Automated tests triggered this by opening usbmon and accessing the
    mmap while simultaneously resizing the buffers. This bug was with
    us since 2006, because typically applications only size the buffers
    once and thus avoid racing. Reported by Kirill A. Shutemov.
    
    Reported-by: <syzbot+f9831b881b3e849829fc@syzkaller.appspotmail.com>
    Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 829fb0cab7376e67b24f6aa6210242d448396cef
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 8 17:20:18 2018 -0800

    Input: 88pm860x-ts - fix child-node lookup
    
    commit 906bf7daa0618d0ef39f4872ca42218c29a3631f upstream.
    
    Fix child node-lookup during probe, which ended up searching the whole
    device tree depth-first starting at parent rather than just matching on
    its children.
    
    To make things worse, the parent node was prematurely freed, while the
    child node was leaked.
    
    Fixes: 2e57d56747e6 ("mfd: 88pm860x: Device tree support")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e86dc5b588f095715225a96e38a4a757a194df90
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 8 17:17:48 2018 -0800

    Input: twl6040-vibra - fix child-node lookup
    
    commit dcaf12a8b0bbdbfcfa2be8dff2c4948d9844b4ad upstream.
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at parent rather than just matching on
    its children.
    
    Later sanity checks on node properties (which would likely be missing)
    should prevent this from causing much trouble however, especially as the
    original premature free of the parent node has already been fixed
    separately (but that "fix" was apparently never backported to stable).
    
    Fixes: e7ec014a47e4 ("Input: twl6040-vibra - update for device tree support")
    Fixes: c52c545ead97 ("Input: twl6040-vibra - fix DT node memory management")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Tested-by: H. Nikolaus Schaller <hns@goldelico.com> (on Pyra OMAP5 hardware)
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9587050dc78baffce536a44505fce6934560db4d
Author: H. Nikolaus Schaller <hns@goldelico.com>
Date:   Mon May 9 17:01:01 2016 -0700

    Input: twl6040-vibra - fix DT node memory management
    
    commit c52c545ead97fcc2f4f8ea38f1ae3c23211e09a8 upstream.
    
    commit e7ec014a47e4 ("Input: twl6040-vibra - update for device tree support")
    
    made the separate vibra DT node to a subnode of the twl6040.
    
    It now calls of_find_node_by_name() to locate the "vibra" subnode.
    This function has a side effect to call of_node_put on() for the twl6040
    parent node passed in as a parameter. This causes trouble later on.
    
    Solution: we must call of_node_get() before of_find_node_by_name()
    
    Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b1e8a5397077ef9c9ace3ce0577c019ada19f19c
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 8 17:15:06 2018 -0800

    Input: twl4030-vibra - fix sibling-node lookup
    
    commit 5b189201993ab03001a398de731045bfea90c689 upstream.
    
    A helper purported to look up a child node based on its name was using
    the wrong of-helper and ended up prematurely freeing the parent of-node
    while searching the whole device tree depth-first starting at the parent
    node.
    
    Fixes: 64b9e4d803b1 ("input: twl4030-vibra: Support for DT booted kernel")
    Fixes: e661d0a04462 ("Input: twl4030-vibra - fix ERROR: Bad of_node_put() warning")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1a66f52e77c68dfa15845587d3b0348692f1791b
Author: Marek Belisko <marek@goldelico.com>
Date:   Wed Jul 29 14:02:19 2015 -0700

    Input: twl4030-vibra - fix ERROR: Bad of_node_put() warning
    
    commit e661d0a04462dd98667f8947141bd8defab5b34a upstream.
    
    Fix following:
    [    8.862274] ERROR: Bad of_node_put() on /ocp/i2c@48070000/twl@48/audio
    [    8.869293] CPU: 0 PID: 1003 Comm: modprobe Not tainted 4.2.0-rc2-letux+ #1175
    [    8.876922] Hardware name: Generic OMAP36xx (Flattened Device Tree)
    [    8.883514] [<c00159e0>] (unwind_backtrace) from [<c0012488>] (show_stack+0x10/0x14)
    [    8.891693] [<c0012488>] (show_stack) from [<c05cb810>] (dump_stack+0x78/0x94)
    [    8.899322] [<c05cb810>] (dump_stack) from [<c02cfd5c>] (kobject_release+0x68/0x7c)
    [    8.907409] [<c02cfd5c>] (kobject_release) from [<bf0040c4>] (twl4030_vibra_probe+0x74/0x188 [twl4030_vibra])
    [    8.917877] [<bf0040c4>] (twl4030_vibra_probe [twl4030_vibra]) from [<c03816ac>] (platform_drv_probe+0x48/0x90)
    [    8.928497] [<c03816ac>] (platform_drv_probe) from [<c037feb4>] (really_probe+0xd4/0x238)
    [    8.937103] [<c037feb4>] (really_probe) from [<c0380160>] (driver_probe_device+0x30/0x48)
    [    8.945678] [<c0380160>] (driver_probe_device) from [<c03801e0>] (__driver_attach+0x68/0x8c)
    [    8.954589] [<c03801e0>] (__driver_attach) from [<c037ea60>] (bus_for_each_dev+0x50/0x84)
    [    8.963226] [<c037ea60>] (bus_for_each_dev) from [<c037f828>] (bus_add_driver+0xcc/0x1e4)
    [    8.971832] [<c037f828>] (bus_add_driver) from [<c0380b60>] (driver_register+0x9c/0xe0)
    [    8.980255] [<c0380b60>] (driver_register) from [<c00097e0>] (do_one_initcall+0x100/0x1b8)
    [    8.988983] [<c00097e0>] (do_one_initcall) from [<c00b8008>] (do_init_module+0x58/0x1c0)
    [    8.997497] [<c00b8008>] (do_init_module) from [<c00b8cac>] (SyS_init_module+0x54/0x64)
    [    9.005950] [<c00b8cac>] (SyS_init_module) from [<c000ed20>] (ret_fast_syscall+0x0/0x54)
    [    9.015838] input: twl4030:vibrator as /devices/platform/68000000.ocp/48070000.i2c/i2c-0/0-0048/48070000.i2c:twl@48:audio/input/input2
    
    node passed to of_find_node_by_name is put inside that function and new node
    is returned if found. Free returned node not already freed node.
    
    Signed-off-by: Marek Belisko <marek@goldelico.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit aa9aac6aad0c550fcdec8de8e0722955cd17849d
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Sun Jan 7 00:26:47 2018 +0300

    sh_eth: fix TXALCR1 offsets
    
    commit 50f3d740d376f664f6accc7e86c9afd8f1c7e1e4 upstream.
    
    The  TXALCR1 offsets are incorrect in the register offset tables, most
    probably due to copy&paste error.  Luckily, the driver never uses this
    register. :-)
    
    Fixes: 4a55530f38e4 ("net: sh_eth: modify the definitions of register")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e70d001faa74a2c43d683a13bf39c06f9ea10b8b
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Jan 6 09:00:09 2018 +0100

    mdio-sun4i: Fix a memory leak
    
    commit 56c0290202ab94a2f2780c449395d4ae8495fab4 upstream.
    
    If the probing of the regulator is deferred, the memory allocated by
    'mdiobus_alloc_size()' will be leaking.
    It should be freed before the next call to 'sun4i_mdio_probe()' which will
    reallocate it.
    
    Fixes: 4bdcb1dd9feb ("net: Add MDIO bus driver for the Allwinner EMAC")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1015e0a05ddb0f516ca17413fd12d48c6ef659a7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 8 14:03:53 2018 +0100

    ALSA: pcm: Allow aborting mutex lock at OSS read/write loops
    
    commit 900498a34a3ac9c611e9b425094c8106bdd7dc1c upstream.
    
    PCM OSS read/write loops keep taking the mutex lock for the whole
    read/write, and this might take very long when the exceptionally high
    amount of data is given.  Also, since it invokes with mutex_lock(),
    the concurrent read/write becomes unbreakable.
    
    This patch tries to address these issues by replacing mutex_lock()
    with mutex_lock_interruptible(), and also splits / re-takes the lock
    at each read/write period chunk, so that it can switch the context
    more finely if requested.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0ffd31c988a65297da4c0639bfe881368b0c5ea2
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 8 13:58:31 2018 +0100

    ALSA: pcm: Abort properly at pending signal in OSS read/write loops
    
    commit 29159a4ed7044c52e3e2cf1a9fb55cec4745c60b upstream.
    
    The loops for read and write in PCM OSS emulation have no proper check
    of pending signals, and they keep processing even after user tries to
    break.  This results in a very long delay, often seen as RCU stall
    when a huge unprocessed bytes remain queued.  The bug could be easily
    triggered by syzkaller.
    
    As a simple workaround, this patch adds the proper check of pending
    signals and aborts the loop appropriately.
    
    Reported-by: syzbot+993cb4cfcbbff3947c21@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b5f17b15f98fe1b6cf8663c3ed2141ab0a0ff62c
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Jan 5 22:12:32 2018 +1100

    xfrm: Return error on unknown encap_type in init_state
    
    commit bcfd09f7837f5240c30fd2f52ee7293516641faa upstream.
    
    Currently esp will happily create an xfrm state with an unknown
    encap type for IPv4, without setting the necessary state parameters.
    This patch fixes it by returning -EINVAL.
    
    There is a similar problem in IPv6 where if the mode is unknown
    we will skip initialisation while returning zero.  However, this
    is harmless as the mode has already been checked further up the
    stack.  This patch removes this anomaly by aligning the IPv6
    behaviour with IPv4 and treating unknown modes (which cannot
    actually happen) as transport mode.
    
    Fixes: 38320c70d282 ("[IPSEC]: Use crypto_aead and authenc in ESP")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4bdf1f238247593725e7057cfba7c9078b7a559b
Author: Jia Zhang <qianyue.zj@alibaba-inc.com>
Date:   Mon Jan 1 10:04:47 2018 +0800

    x86/microcode/intel: Extend BDW late-loading with a revision check
    
    commit b94b7373317164402ff7728d10f7023127a02b60 upstream.
    
    Instead of blacklisting all model 79 CPUs when attempting a late
    microcode loading, limit that only to CPUs with microcode revisions <
    0x0b000021 because only on those late loading may cause a system hang.
    
    For such processors either:
    
    a) a BIOS update which might contain a newer microcode revision
    
    or
    
    b) the early microcode loading method
    
    should be considered.
    
    Processors with revisions 0x0b000021 or higher will not experience such
    hangs.
    
    For more details, see erratum BDF90 in document #334165 (Intel Xeon
    Processor E7-8800/4800 v4 Product Family Specification Update) from
    September 2017.
    
    [ bp: Heavily massage commit message and pr_* statements. ]
    
    Fixes: 723f2828a98c ("x86/microcode/intel: Disable late loading on model 79")
    Signed-off-by: Jia Zhang <qianyue.zj@alibaba-inc.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Tony Luck <tony.luck@intel.com>
    Cc: x86-ml <x86@kernel.org>
    Link: http://lkml.kernel.org/r/1514772287-92959-1-git-send-email-qianyue.zj@alibaba-inc.com
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 72b6dbd9dca91925a6c4128485d403c427a922da
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Thu Jan 4 21:06:49 2018 +0300

    sh_eth: fix SH7757 GEther initialization
    
    commit 5133550296d43236439494aa955bfb765a89f615 upstream.
    
    Renesas  SH7757 has 2 Fast and 2 Gigabit Ether controllers, while the
    'sh_eth' driver can only reset and initialize TSU of the first controller
    pair. Shimoda-san tried to solve that adding the 'needs_init' member to the
    'struct sh_eth_plat_data', however the platform code still never sets this
    flag. I think  that we can infer this information from the 'devno' variable
    (set  to 'platform_device::id') and reset/init the Ether controller pair
    only for an even 'devno'; therefore 'sh_eth_plat_data::needs_init' can be
    removed...
    
    Fixes: 150647fb2c31 ("net: sh_eth: change the condition of initialization")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 932dc20e7589ef7f371161417d89db746455c291
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Jan 4 17:38:54 2018 +0100

    ALSA: aloop: Fix racy hw constraints adjustment
    
    commit 898dfe4687f460ba337a01c11549f87269a13fa2 upstream.
    
    The aloop driver tries to update the hw constraints of the connected
    target on the cable of the opened PCM substream.  This is done by
    adding the extra hw constraints rules referring to the substream
    runtime->hw fields, while the other substream may update the runtime
    hw of another side on the fly.
    
    This is, however, racy and may result in the inconsistent values when
    both PCM streams perform the prepare concurrently.  One of the reason
    is that it overwrites the other's runtime->hw field; which is not only
    racy but also broken when it's called before the open of another side
    finishes.  And, since the reference to runtime->hw isn't protected,
    the concurrent write may give the partial value update and become
    inconsistent.
    
    This patch is an attempt to fix and clean up:
    - The prepare doesn't change the runtime->hw of other side any longer,
      but only update the cable->hw that is referred commonly.
    - The extra rules refer to the loopback_pcm object instead of the
      runtime->hw.  The actual hw is deduced from cable->hw.
    - The extra rules take the cable_lock to protect against the race.
    
    Fixes: b1c73fc8e697 ("ALSA: snd-aloop: Fix hw_params restrictions and checking")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 97f9eaacded09ec3c6ec0a50279af3a0708f8799
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jan 5 16:15:33 2018 +0100

    ALSA: aloop: Fix inconsistent format due to incomplete rule
    
    commit b088b53e20c7d09b5ab84c5688e609f478e5c417 upstream.
    
    The extra hw constraint rule for the formats the aloop driver
    introduced has a slight flaw, where it doesn't return a positive value
    when the mask got changed.  It came from the fact that it's basically
    a copy&paste from snd_hw_constraint_mask64().  The original code is
    supposed to be a single-shot and it modifies the mask bits only once
    and never after, while what we need for aloop is the dynamic hw rule
    that limits the mask bits.
    
    This difference results in the inconsistent state, as the hw_refine
    doesn't apply the dependencies fully.  The worse and surprisingly
    result is that it causes a crash in OSS emulation when multiple
    full-duplex reads/writes are performed concurrently (I leave why it
    triggers Oops to readers as a homework).
    
    For fixing this, replace a few open-codes with the standard
    snd_mask_*() macros.
    
    Reported-by: syzbot+3902b5220e8ca27889ca@syzkaller.appspotmail.com
    Fixes: b1c73fc8e697 ("ALSA: snd-aloop: Fix hw_params restrictions and checking")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8418d2262143ce2f1e7171c3fb1e0896a7a9d009
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jan 5 16:09:47 2018 +0100

    ALSA: aloop: Release cable upon open error path
    
    commit 9685347aa0a5c2869058ca6ab79fd8e93084a67f upstream.
    
    The aloop runtime object and its assignment in the cable are left even
    when opening a substream fails.  This doesn't mean any memory leak,
    but it still keeps the invalid pointer that may be referred by the
    another side of the cable spontaneously, which is a potential Oops
    cause.
    
    Clean up the cable assignment and the empty cable upon the error path
    properly.
    
    Fixes: 597603d615d2 ("ALSA: introduce the snd-aloop module for the PCM loopback")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e6bc4d220161b2b7268465e94fbe3bc57b009ab2
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Thu Jan 4 14:37:05 2018 +0000

    x86/alternatives: Add missing '
    ' at end of ALTERNATIVE inline asm
    
    commit b9e705ef7cfaf22db0daab91ad3cd33b0fa32eb9 upstream.
    
    Where an ALTERNATIVE is used in the middle of an inline asm block, this
    would otherwise lead to the following instruction being appended directly
    to the trailing ".popsection", and a failed compile.
    
    Fixes: 9cebed423c84 ("x86, alternative: Use .pushsection/.popsection")
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: ak@linux.intel.com
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Paul Turner <pjt@google.com>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Link: https://lkml.kernel.org/r/20180104143710.8961-8-dwmw@amazon.co.uk
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fff304ce930917ab5efab7a7efe0dd6f61744069
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Thu Jan 4 17:53:12 2018 +0100

    ARM: dts: kirkwood: fix pin-muxing of MPP7 on OpenBlocks A7
    
    commit 56aeb07c914a616ab84357d34f8414a69b140cdf upstream.
    
    MPP7 is currently muxed as "gpio", but this function doesn't exist for
    MPP7, only "gpo" is available. This causes the following error:
    
    kirkwood-pinctrl f1010000.pin-controller: unsupported function gpio on pin mpp7
    pinctrl core: failed to register map default (6): invalid type given
    kirkwood-pinctrl f1010000.pin-controller: error claiming hogs: -22
    kirkwood-pinctrl f1010000.pin-controller: could not claim hogs: -22
    kirkwood-pinctrl f1010000.pin-controller: unable to register pinctrl driver
    kirkwood-pinctrl: probe of f1010000.pin-controller failed with error -22
    
    So the pinctrl driver is not probed, all device drivers (including the
    UART driver) do a -EPROBE_DEFER, and therefore the system doesn't
    really boot (well, it boots, but with no UART, and no devices that
    require pin-muxing).
    
    Back when the Device Tree file for this board was introduced, the
    definition was already wrong. The pinctrl driver also always described
    as "gpo" this function for MPP7. However, between Linux 4.10 and 4.11,
    a hog pin failing to be muxed was turned from a simple warning to a
    hard error that caused the entire pinctrl driver probe to bail
    out. This is probably the result of commit 6118714275f0a ("pinctrl:
    core: Fix pinctrl_register_and_init() with pinctrl_enable()").
    
    This commit fixes the Device Tree to use the proper "gpo" function for
    MPP7, which fixes the boot of OpenBlocks A7, which was broken since
    Linux 4.11.
    
    Fixes: f24b56cbcd9d ("ARM: kirkwood: add support for OpenBlocks A7 platform")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6fd352f6c7d3d9de749f59d6a3dbac40fde23974
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Thu Jan 4 22:25:07 2018 +1100

    xfrm: Use __skb_queue_tail in xfrm_trans_queue
    
    commit d16b46e4fd8bc6063624605f25b8c0835bb1fbe3 upstream.
    
    We do not need locking in xfrm_trans_queue because it is designed
    to use per-CPU buffers.  However, the original code incorrectly
    used skb_queue_tail which takes the lock.  This patch switches
    it to __skb_queue_tail instead.
    
    Reported-and-tested-by: Artem Savkov <asavkov@redhat.com>
    Fixes: acf568ee859f ("xfrm: Reinject transport-mode packets...")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1caf418c8437b63c3802ca89b0db6b3a28819c6d
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 29 14:30:19 2017 -0600

    crypto: algapi - fix NULL dereference in crypto_remove_spawns()
    
    commit 9a00674213a3f00394f4e3221b88f2d21fc05789 upstream.
    
    syzkaller triggered a NULL pointer dereference in crypto_remove_spawns()
    via a program that repeatedly and concurrently requests AEADs
    "authenc(cmac(des3_ede-asm),pcbc-aes-aesni)" and hashes "cmac(des3_ede)"
    through AF_ALG, where the hashes are requested as "untested"
    (CRYPTO_ALG_TESTED is set in ->salg_mask but clear in ->salg_feat; this
    causes the template to be instantiated for every request).
    
    Although AF_ALG users really shouldn't be able to request an "untested"
    algorithm, the NULL pointer dereference is actually caused by a
    longstanding race condition where crypto_remove_spawns() can encounter
    an instance which has had spawn(s) "grabbed" but hasn't yet been
    registered, resulting in ->cra_users still being NULL.
    
    We probably should properly initialize ->cra_users earlier, but that
    would require updating many templates individually.  For now just fix
    the bug in a simple way that can easily be backported: make
    crypto_remove_spawns() treat a NULL ->cra_users list as empty.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8ceeebadb09b04542c99522a694de88838b20fb8
Author: Anshuman Khandual <khandual@linux.vnet.ibm.com>
Date:   Thu Jan 4 16:17:52 2018 -0800

    mm/mprotect: add a cond_resched() inside change_pmd_range()
    
    commit 4991c09c7c812dba13ea9be79a68b4565bb1fa4e upstream.
    
    While testing on a large CPU system, detected the following RCU stall
    many times over the span of the workload.  This problem is solved by
    adding a cond_resched() in the change_pmd_range() function.
    
      INFO: rcu_sched detected stalls on CPUs/tasks:
       154-....: (670 ticks this GP) idle=022/140000000000000/0 softirq=2825/2825 fqs=612
       (detected by 955, t=6002 jiffies, g=4486, c=4485, q=90864)
      Sending NMI from CPU 955 to CPUs 154:
      NMI backtrace for cpu 154
      CPU: 154 PID: 147071 Comm: workload Not tainted 4.15.0-rc3+ #3
      NIP:  c0000000000b3f64 LR: c0000000000b33d4 CTR: 000000000000aa18
      REGS: 00000000a4b0fb44 TRAP: 0501   Not tainted  (4.15.0-rc3+)
      MSR:  8000000000009033 <SF,EE,ME,IR,DR,RI,LE>  CR: 22422082  XER: 00000000
      CFAR: 00000000006cf8f0 SOFTE: 1
      GPR00: 0010000000000000 c00003ef9b1cb8c0 c0000000010cc600 0000000000000000
      GPR04: 8e0000018c32b200 40017b3858fd6e00 8e0000018c32b208 40017b3858fd6e00
      GPR08: 8e0000018c32b210 40017b3858fd6e00 8e0000018c32b218 40017b3858fd6e00
      GPR12: ffffffffffffffff c00000000fb25100
      NIP [c0000000000b3f64] plpar_hcall9+0x44/0x7c
      LR [c0000000000b33d4] pSeries_lpar_flush_hash_range+0x384/0x420
      Call Trace:
        flush_hash_range+0x48/0x100
        __flush_tlb_pending+0x44/0xd0
        hpte_need_flush+0x408/0x470
        change_protection_range+0xaac/0xf10
        change_prot_numa+0x30/0xb0
        task_numa_work+0x2d0/0x3e0
        task_work_run+0x130/0x190
        do_notify_resume+0x118/0x120
        ret_from_except_lite+0x70/0x74
      Instruction dump:
      60000000 f8810028 7ca42b78 7cc53378 7ce63b78 7d074378 7d284b78 7d495378
      e9410060 e9610068 e9810070 44000022 <7d806378> e9810028 f88c0000 f8ac0008
    
    Link: http://lkml.kernel.org/r/20171214140551.5794-1-khandual@linux.vnet.ibm.com
    Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com>
    Suggested-by: Nicholas Piggin <npiggin@gmail.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 275927ccd93bbc1b25d98221dedfc692d587442b
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Thu Jan 4 16:17:49 2018 -0800

    kernel/acct.c: fix the acct->needcheck check in check_free_space()
    
    commit 4d9570158b6260f449e317a5f9ed030c2504a615 upstream.
    
    As Tsukada explains, the time_is_before_jiffies(acct->needcheck) check
    is very wrong, we need time_is_after_jiffies() to make sys_acct() work.
    
    Ignoring the overflows, the code should "goto out" if needcheck >
    jiffies, while currently it checks "needcheck < jiffies" and thus in the
    likely case check_free_space() does nothing until jiffies overflow.
    
    In particular this means that sys_acct() is simply broken, acct_on()
    sets acct->needcheck = jiffies and expects that check_free_space()
    should set acct->active = 1 after the free-space check, but this won't
    happen if jiffies increments in between.
    
    This was broken by commit 32dc73086015 ("get rid of timer in
    kern/acct.c") in 2011, then another (correct) commit 795a2f22a8ea
    ("acct() should honour the limits from the very beginning") made the
    problem more visible.
    
    Link: http://lkml.kernel.org/r/20171213133940.GA6554@redhat.com
    Fixes: 32dc73086015 ("get rid of timer in kern/acct.c")
    Reported-by: TSUKADA Koutaro <tsukada@ascade.co.jp>
    Suggested-by: TSUKADA Koutaro <tsukada@ascade.co.jp>
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 631fcf6297b544ff8dbe8ff5f6b64993b7e0c6f9
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Wed Jan 3 20:09:49 2018 +0300

    sh_eth: fix TSU resource handling
    
    commit dfe8266b8dd10e12a731c985b725fcf7f0e537f0 upstream.
    
    When switching  the driver to the managed device API,  I managed to break
    the  case of a  dual Ether devices sharing a single TSU: the 2nd Ether port
    wouldn't probe. Iwamatsu-san has tried to fix this but his patch was buggy
    and he then dropped the ball...
    
    The solution is to  limit calling devm_request_mem_region() to the first
    of  the two  ports  sharing the same TSU, so devm_ioremap_resource() can't
    be used anymore for the TSU resource...
    
    Fixes: d5e07e69218f ("sh_eth: use managed device API")
    Reported-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b48835ea69e3df17d95d5bdcdbbcf73a82f2df4f
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Wed Jan 3 16:46:29 2018 +0100

    net: stmmac: enable EEE in MII, GMII or RGMII only
    
    commit 879626e3a52630316d817cbda7cec9a5446d1d82 upstream.
    
    Note in the databook - Section 4.4 - EEE :
    " The EEE feature is not supported when the MAC is configured to use the
    TBI, RTBI, SMII, RMII or SGMII single PHY interface. Even if the MAC
    supports multiple PHY interfaces, you should activate the EEE mode only
    when the MAC is operating with GMII, MII, or RGMII interface."
    
    Applying this restriction solves a stability issue observed on Amlogic
    gxl platforms operating with RMII interface and the internal PHY.
    
    Fixes: 83bf79b6bb64 ("stmmac: disable at run-time the EEE if not supported")
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Tested-by: Arnaud Patard <arnaud.patard@rtp-net.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjst context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d95ab6c5767f0d172e0a2416819bfc4ac01bc4eb
Author: Iyappan Subramanian <isubramanian@apm.com>
Date:   Thu May 18 15:13:43 2017 -0700

    phy: Add helper function to check phy interface mode
    
    commit 32d0f7830d9be5b1652a718e050d808b4908155f upstream.
    
    Added helper function that checks phy_mode is RGMII (all variants)
    'bool phy_interface_mode_is_rgmii(phy_interface_t mode)'
    
    Changed the following function, to use the above.
    'bool phy_interface_is_rgmii(struct phy_device *phydev)'
    
    Signed-off-by: Iyappan Subramanian <isubramanian@apm.com>
    Suggested-by: Florian Fainelli <f.fainelli@gmail.com>
    Suggested-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8c491f23b547f3b0bd30593eeac1d8e9c4a5c705
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Tue May 26 12:19:58 2015 -0700

    net: phy: Add phy_interface_is_rgmii helper
    
    commit e463d88c36d42211aa72ed76d32fb8bf37820ef1 upstream.
    
    RGMII interfaces come in 4 different flavors that the PHY library needs
    to care about: regular RGMII (no delays), RGMII with either RX or TX
    delay, and both. In order to avoid errors of checking only for one type
    of RGMII interface and miss the 3 others, introduce a convenience
    function which tests for all values.
    
    Suggested-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c14a317fb3011b87d32c58814136831cf3166a2d
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Fri Dec 22 17:00:06 2017 -0700

    usbip: remove kernel addresses from usb device and urb debug msgs
    
    commit e1346fd87c71a1f61de1fe476ec8df1425ac931c upstream.
    
    usbip_dump_usb_device() and usbip_dump_urb() print kernel addresses.
    Remove kernel addresses from usb device and urb debug msgs and improve
    the message content.
    
    Instead of printing parent device and bus addresses, print parent device
    and bus names.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c0ecd46f3c79add74dfd55923ede6dfe96847cb6
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Jan 4 16:39:27 2018 +0100

    ALSA: pcm: Add missing error checks in OSS emulation plugin builder
    
    commit 6708913750344a900f2e73bfe4a4d6dbbce4fe8d upstream.
    
    In the OSS emulation plugin builder where the frame size is parsed in
    the plugin chain, some places miss the possible errors returned from
    the plugin src_ or dst_frames callback.
    
    This patch papers over such places.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fcf2ae06423ad9a13b69c5f30a813158ac467f58
Author: Wolfgang Grandegger <wg@grandegger.com>
Date:   Wed Dec 13 19:52:23 2017 +0100

    can: gs_usb: fix return value of the "set_bittiming" callback
    
    commit d5b42e6607661b198d8b26a0c30969605b1bf5c7 upstream.
    
    The "set_bittiming" callback treats a positive return value as error!
    For that reason "can_changelink()" will quit silently after setting
    the bittiming values without processing ctrlmode, restart-ms, etc.
    
    Signed-off-by: Wolfgang Grandegger <wg@grandegger.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 07f40d7927411730c0528f8655a3246428853987
Author: Christian Holl <cyborgx1@gmail.com>
Date:   Wed Jan 3 19:53:02 2018 +0100

    USB: serial: cp210x: add new device ID ELV ALC 8xxx
    
    commit d14ac576d10f865970bb1324d337e5e24d79aaf4 upstream.
    
    This adds the ELV ALC 8xxx Battery Charging device
    to the list of USB IDs of drivers/usb/serial/cp210x.c
    
    Signed-off-by: Christian Holl <cyborgx1@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e1d1889dc6bd0e52d55090e78dfdee8238587b53
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jan 3 23:49:18 2018 +0100

    mmc: s3mci: mark debug_regs[] as static
    
    commit 2bd7b4aacdb6efa5ccd4749c365c171b884791d2 upstream.
    
    The global array clashes with a newly added symbol of the same name:
    
    drivers/staging/ccree/cc_debugfs.o:(.data+0x0): multiple definition of `debug_regs'
    drivers/mmc/host/s3cmci.o:(.data+0x70): first defined here
    
    We should fix both, this one addresses the s3cmci driver by removing
    the symbol from the global namespace. While at it, this separates
    the declaration from the type definition and makes the variable const.
    
    Fixes: 9bdd203b4dc8 ("s3cmci: add debugfs support for examining driver and hardware state")
    Fixes: b3ec9a6736f2 ("staging: ccree: staging: ccree: replace sysfs by debugfs interface")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ad89991d49d95eeea42c978c578b0831297b4e5a
Author: Bart Van Assche <bart.vanassche@wdc.com>
Date:   Wed Jan 3 13:39:15 2018 -0800

    IB/srpt: Disable RDMA access by the initiator
    
    commit bec40c26041de61162f7be9d2ce548c756ce0f65 upstream.
    
    With the SRP protocol all RDMA operations are initiated by the target.
    Since no RDMA operations are initiated by the initiator, do not grant
    the initiator permission to submit RDMA reads or writes to the target.
    
    Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5739a4a6255d357f49fe94d51853e4317bff4f7f
Author: Benjamin Poirier <bpoirier@suse.com>
Date:   Mon Dec 11 16:26:40 2017 +0900

    e1000e: Fix e1000_check_for_copper_link_ich8lan return value.
    
    commit 4110e02eb45ea447ec6f5459c9934de0a273fb91 upstream.
    
    e1000e_check_for_copper_link() and e1000_check_for_copper_link_ich8lan()
    are the two functions that may be assigned to mac.ops.check_for_link when
    phy.media_type == e1000_media_type_copper. Commit 19110cfbb34d ("e1000e:
    Separate signaling for link check/link up") changed the meaning of the
    return value of check_for_link for copper media but only adjusted the first
    function. This patch adjusts the second function likewise.
    
    Reported-by: Christian Hesse <list@eworm.de>
    Reported-by: Gabriel C <nix.or.die@gmail.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=198047
    Fixes: 19110cfbb34d ("e1000e: Separate signaling for link check/link up")
    Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Tested-by: Christian Hesse <list@eworm.de>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 79d2beb15d7d9ed307e7a313298d4869fcb7193c
Author: Benjamin Poirier <bpoirier@suse.com>
Date:   Fri Jul 21 11:36:26 2017 -0700

    e1000e: Separate signaling for link check/link up
    
    commit 19110cfbb34d4af0cdfe14cd243f3b09dc95b013 upstream.
    
    Lennart reported the following race condition:
    
    \ e1000_watchdog_task
        \ e1000e_has_link
            \ hw->mac.ops.check_for_link() === e1000e_check_for_copper_link
                /* link is up */
                mac->get_link_status = false;
    
                                /* interrupt */
                                \ e1000_msix_other
                                    hw->mac.get_link_status = true;
    
            link_active = !hw->mac.get_link_status
            /* link_active is false, wrongly */
    
    This problem arises because the single flag get_link_status is used to
    signal two different states: link status needs checking and link status is
    down.
    
    Avoid the problem by using the return value of .check_for_link to signal
    the link status to e1000e_has_link().
    
    Reported-by: Lennart Sorensen <lsorense@csclub.uwaterloo.ca>
    Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dcea67b24844b648efbe6bc07adeff9a528161d3
Author: Erez Shitrit <erezsh@mellanox.com>
Date:   Sun Dec 31 15:33:15 2017 +0200

    IB/ipoib: Fix race condition in neigh creation
    
    commit 16ba3defb8bd01a9464ba4820a487f5b196b455b upstream.
    
    When using enhanced mode for IPoIB, two threads may execute xmit in
    parallel to two different TX queues while the target is the same.
    In this case, both of them will add the same neighbor to the path's
    neigh link list and we might see the following message:
    
      list_add double add: new=ffff88024767a348, prev=ffff88024767a348...
      WARNING: lib/list_debug.c:31__list_add_valid+0x4e/0x70
      ipoib_start_xmit+0x477/0x680 [ib_ipoib]
      dev_hard_start_xmit+0xb9/0x3e0
      sch_direct_xmit+0xf9/0x250
      __qdisc_run+0x176/0x5d0
      __dev_queue_xmit+0x1f5/0xb10
      __dev_queue_xmit+0x55/0xb10
    
    Analysis:
    Two SKB are scheduled to be transmitted from two cores.
    In ipoib_start_xmit, both gets NULL when calling ipoib_neigh_get.
    Two calls to neigh_add_path are made. One thread takes the spin-lock
    and calls ipoib_neigh_alloc which creates the neigh structure,
    then (after the __path_find) the neigh is added to the path's neigh
    link list. When the second thread enters the critical section it also
    calls ipoib_neigh_alloc but in this case it gets the already allocated
    ipoib_neigh structure, which is already linked to the path's neigh
    link list and adds it again to the list. Which beside of triggering
    the list, it creates a loop in the linked list. This loop leads to
    endless loop inside path_rec_completion.
    
    Solution:
    Check list_empty(&neigh->list) before adding to the list.
    Add a similar fix in "ipoib_multicast.c::ipoib_mcast_send"
    
    Fixes: b63b70d87741 ('IPoIB: Use a private hash table for path lookup in xmit path')
    Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
    Reviewed-by: Alex Vesker <valex@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6aaa71dcf11706de757c479d8a80b67650f4f984
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 1 09:50:50 2018 +0100

    ALSA: pcm: Remove incorrect snd_BUG_ON() usages
    
    commit fe08f34d066f4404934a509b6806db1a4f700c86 upstream.
    
    syzkaller triggered kernel warnings through PCM OSS emulation at
    closing a stream:
      WARNING: CPU: 0 PID: 3502 at sound/core/pcm_lib.c:1635
      snd_pcm_hw_param_first+0x289/0x690 sound/core/pcm_lib.c:1635
      Call Trace:
      ....
       snd_pcm_hw_param_near.constprop.27+0x78d/0x9a0 sound/core/oss/pcm_oss.c:457
       snd_pcm_oss_change_params+0x17d3/0x3720 sound/core/oss/pcm_oss.c:969
       snd_pcm_oss_make_ready+0xaa/0x130 sound/core/oss/pcm_oss.c:1128
       snd_pcm_oss_sync+0x257/0x830 sound/core/oss/pcm_oss.c:1638
       snd_pcm_oss_release+0x20b/0x280 sound/core/oss/pcm_oss.c:2431
       __fput+0x327/0x7e0 fs/file_table.c:210
       ....
    
    This happens while it tries to open and set up the aloop device
    concurrently.  The warning above (invoked from snd_BUG_ON() macro) is
    to detect the unexpected logical error where snd_pcm_hw_refine() call
    shouldn't fail.  The theory is true for the case where the hw_params
    config rules are static.  But for an aloop device, the hw_params rule
    condition does vary dynamically depending on the connected target;
    when another device is opened and changes the parameters, the device
    connected in another side is also affected, and it caused the error
    from snd_pcm_hw_refine().
    
    That is, the simplest "solution" for this is to remove the incorrect
    assumption of static rules, and treat such an error as a normal error
    path.  As there are a couple of other places using snd_BUG_ON()
    incorrectly, this patch removes these spurious snd_BUG_ON() calls.
    
    Reported-by: syzbot+6f11c7e2a1b91d466432@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b2485fc48de6c61afe6b82763cb9bc29bae6f92d
Author: David Howells <dhowells@redhat.com>
Date:   Tue Jan 2 10:02:19 2018 +0000

    fscache: Fix the default for fscache_maybe_release_page()
    
    commit 98801506552593c9b8ac11021b0cdad12cab4f6b upstream.
    
    Fix the default for fscache_maybe_release_page() for when the cookie isn't
    valid or the page isn't cached.  It mustn't return false as that indicates
    the page cannot yet be freed.
    
    The problem with the default is that if, say, there's no cache, but a
    network filesystem's pages are using up almost all the available memory, a
    system can OOM because the filesystem ->releasepage() op will not allow
    them to be released as fscache_maybe_release_page() incorrectly prevents
    it.
    
    This can be tested by writing a sequence of 512MiB files to an AFS mount.
    It does not affect NFS or CIFS because both of those wrap the call in a
    check of PG_fscache and it shouldn't bother Ceph as that only has
    PG_private set whilst writeback is in progress.  This might be an issue for
    9P, however.
    
    Note that the pages aren't entirely stuck.  Removing a file or unmounting
    will clear things because that uses ->invalidatepage() instead.
    
    Fixes: 201a15428bd5 ("FS-Cache: Handle pages pending storage that get evicted under OOM conditions")
    Reported-by: Marc Dionne <marc.dionne@auristor.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Jeff Layton <jlayton@redhat.com>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Tested-by: Marc Dionne <marc.dionne@auristor.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5c0dc8bf591960fd8448a3156af3a1f1b8a1cd8c
Author: Diego Elio Pettenò <flameeyes@flameeyes.eu>
Date:   Fri Dec 29 09:54:25 2017 +0000

    USB: serial: cp210x: add IDs for LifeScan OneTouch Verio IQ
    
    commit 4307413256ac1e09b8f53e8715af3df9e49beec3 upstream.
    
    Add IDs for the OneTouch Verio IQ that comes with an embedded
    USB-to-serial converter.
    
    Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8939b19d36d23333a3104ab4b3ac17b1f0478d93
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri Dec 29 17:34:43 2017 -0800

    kbuild: add '-fno-stack-check' to kernel build options
    
    commit 3ce120b16cc548472f80cf8644f90eda958cf1b6 upstream.
    
    It appears that hardened gentoo enables "-fstack-check" by default for
    gcc.
    
    That doesn't work _at_all_ for the kernel, because the kernel stack
    doesn't act like a user stack at all: it's much smaller, and it doesn't
    auto-expand on use.  So the extra "probe one page below the stack" code
    generated by -fstack-check just breaks the kernel in horrible ways,
    causing infinite double faults etc.
    
    [ I have to say, that the particular code gcc generates looks very
      stupid even for user space where it works, but that's a separate
      issue.  ]
    
    Reported-and-tested-by: Alexander Tsoy <alexander@tsoy.me>
    Reported-and-tested-by: Toralf Förster <toralf.foerster@gmx.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5bba5879637b52f82bf0f5e252238f9957252a5a
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 29 18:15:23 2017 -0600

    af_key: fix buffer overread in parse_exthdrs()
    
    commit 4e765b4972af7b07adcb1feb16e7a525ce1f6b28 upstream.
    
    If a message sent to a PF_KEY socket ended with an incomplete extension
    header (fewer than 4 bytes remaining), then parse_exthdrs() read past
    the end of the message, into uninitialized memory.  Fix it by returning
    -EINVAL in this case.
    
    Reproducer:
    
            #include <linux/pfkeyv2.h>
            #include <sys/socket.h>
            #include <unistd.h>
    
            int main()
            {
                    int sock = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
                    char buf[17] = { 0 };
                    struct sadb_msg *msg = (void *)buf;
    
                    msg->sadb_msg_version = PF_KEY_V2;
                    msg->sadb_msg_type = SADB_DELETE;
                    msg->sadb_msg_len = 2;
    
                    write(sock, buf, 17);
            }
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9b4d355b0311f715a82fdb9355c3021b8a541d9e
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 29 18:13:05 2017 -0600

    af_key: fix buffer overread in verify_address_len()
    
    commit 06b335cb51af018d5feeff5dd4fd53847ddb675a upstream.
    
    If a message sent to a PF_KEY socket ended with one of the extensions
    that takes a 'struct sadb_address' but there were not enough bytes
    remaining in the message for the ->sa_family member of the 'struct
    sockaddr' which is supposed to follow, then verify_address_len() read
    past the end of the message, into uninitialized memory.  Fix it by
    returning -EINVAL in this case.
    
    This bug was found using syzkaller with KMSAN.
    
    Reproducer:
    
            #include <linux/pfkeyv2.h>
            #include <sys/socket.h>
            #include <unistd.h>
    
            int main()
            {
                    int sock = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
                    char buf[24] = { 0 };
                    struct sadb_msg *msg = (void *)buf;
                    struct sadb_address *addr = (void *)(msg + 1);
    
                    msg->sadb_msg_version = PF_KEY_V2;
                    msg->sadb_msg_type = SADB_DELETE;
                    msg->sadb_msg_len = 3;
                    addr->sadb_address_len = 1;
                    addr->sadb_address_exttype = SADB_EXT_ADDRESS_SRC;
    
                    write(sock, buf, 24);
            }
    
    Reported-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 87b2e2370bb3b3b27c6420f55d1769c5b40eab1d
Author: Joe Perches <joe@perches.com>
Date:   Thu Jun 25 15:01:16 2015 -0700

    stddef.h: move offsetofend inside #ifndef/#endif guard, neaten
    
    commit 8c7fbe5795a016259445a61e072eb0118aaf6a61 upstream.
    
    Commit 3876488444e7 ("include/stddef.h: Move offsetofend() from vfio.h
    to a generic kernel header") added offsetofend outside the normal
    include #ifndef/#endif guard.  Move it inside.
    
    Miscellanea:
    
    o remove unnecessary blank line
    o standardize offsetof macros whitespace style
    
    Signed-off-by: Joe Perches <joe@perches.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ac0122cb4d1472ef6159754dd45d2510c74be424
Author: Denys Vlasenko <dvlasenk@redhat.com>
Date:   Mon Mar 9 15:52:17 2015 +0100

    include/stddef.h: Move offsetofend() from vfio.h to a generic kernel header
    
    commit 3876488444e71238e287459c39d7692b6f718c3e upstream.
    
    Suggested by Andy.
    
    Suggested-by: Andy Lutomirski <luto@amacapital.net>
    Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Alexei Starovoitov <ast@plumgrid.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Will Drewry <wad@chromium.org>
    Link: http://lkml.kernel.org/r/1425912738-559-1-git-send-email-dvlasenk@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9977cd21c77d46c55778651dc740fb4666f8751d
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Dec 22 15:51:13 2017 +0100

    nohz: Prevent a timer interrupt storm in tick_nohz_stop_sched_tick()
    
    commit 5d62c183f9e9df1deeea0906d099a94e8a43047a upstream.
    
    The conditions in irq_exit() to invoke tick_nohz_irq_exit() which
    subsequently invokes tick_nohz_stop_sched_tick() are:
    
      if ((idle_cpu(cpu) && !need_resched()) || tick_nohz_full_cpu(cpu))
    
    If need_resched() is not set, but a timer softirq is pending then this is
    an indication that the softirq code punted and delegated the execution to
    softirqd. need_resched() is not true because the current interrupted task
    takes precedence over softirqd.
    
    Invoking tick_nohz_irq_exit() in this case can cause an endless loop of
    timer interrupts because the timer wheel contains an expired timer, but
    softirqs are not yet executed. So it returns an immediate expiry request,
    which causes the timer to fire immediately again. Lather, rinse and
    repeat....
    
    Prevent that by adding a check for a pending timer soft interrupt to the
    conditions in tick_nohz_stop_sched_tick() which avoid calling
    get_next_timer_interrupt(). That keeps the tick sched timer on the tick and
    prevents a repetitive programming of an already expired timer.
    
    Reported-by: Sebastian Siewior <bigeasy@linutronix.d>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Anna-Maria Gleixner <anna-maria@linutronix.de>
    Cc: Sebastian Siewior <bigeasy@linutronix.de>
    Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1712272156050.2431@nanos
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dd520da215e1f8558206ddade1f55b239730bd4f
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Tue Dec 26 20:07:34 2017 -0500

    tracing: Fix possible double free on failure of allocating trace buffer
    
    commit 4397f04575c44e1440ec2e49b6302785c95fd2f8 upstream.
    
    Jing Xia and Chunyan Zhang reported that on failing to allocate part of the
    tracing buffer, memory is freed, but the pointers that point to them are not
    initialized back to NULL, and later paths may try to free the freed memory
    again. Jing and Chunyan fixed one of the locations that does this, but
    missed a spot.
    
    Link: http://lkml.kernel.org/r/20171226071253.8968-1-chunyan.zhang@spreadtrum.com
    
    Fixes: 737223fbca3b1 ("tracing: Consolidate buffer allocation code")
    Reported-by: Jing Xia <jing.xia@spreadtrum.com>
    Reported-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0e9b7d887d1c8689396f3dd68e04613a9186cf43
Author: Jing Xia <jing.xia@spreadtrum.com>
Date:   Tue Dec 26 15:12:53 2017 +0800

    tracing: Fix crash when it fails to alloc ring buffer
    
    commit 24f2aaf952ee0b59f31c3a18b8b36c9e3d3c2cf5 upstream.
    
    Double free of the ring buffer happens when it fails to alloc new
    ring buffer instance for max_buffer if TRACER_MAX_TRACE is configured.
    The root cause is that the pointer is not set to NULL after the buffer
    is freed in allocate_trace_buffers(), and the freeing of the ring
    buffer is invoked again later if the pointer is not equal to Null,
    as:
    
    instance_mkdir()
        |-allocate_trace_buffers()
            |-allocate_trace_buffer(tr, &tr->trace_buffer...)
            |-allocate_trace_buffer(tr, &tr->max_buffer...)
    
              // allocate fail(-ENOMEM),first free
              // and the buffer pointer is not set to null
            |-ring_buffer_free(tr->trace_buffer.buffer)
    
           // out_free_tr
        |-free_trace_buffers()
            |-free_trace_buffer(&tr->trace_buffer);
    
                  //if trace_buffer is not null, free again
                |-ring_buffer_free(buf->buffer)
                    |-rb_free_cpu_buffer(buffer->buffers[cpu])
                        // ring_buffer_per_cpu is null, and
                        // crash in ring_buffer_per_cpu->pages
    
    Link: http://lkml.kernel.org/r/20171226071253.8968-1-chunyan.zhang@spreadtrum.com
    
    Fixes: 737223fbca3b1 ("tracing: Consolidate buffer allocation code")
    Signed-off-by: Jing Xia <jing.xia@spreadtrum.com>
    Signed-off-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e0de0039831037c0460f7e86d4a190a127b4bbd6
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Fri Dec 22 20:32:35 2017 -0500

    ring-buffer: Mask out the info bits when returning buffer page length
    
    commit 45d8b80c2ac5d21cd1e2954431fb676bc2b1e099 upstream.
    
    Two info bits were added to the "commit" part of the ring buffer data page
    when returned to be consumed. This was to inform the user space readers that
    events have been missed, and that the count may be stored at the end of the
    page.
    
    What wasn't handled, was the splice code that actually called a function to
    return the length of the data in order to zero out the rest of the page
    before sending it up to user space. These data bits were returned with the
    length making the value negative, and that negative value was not checked.
    It was compared to PAGE_SIZE, and only used if the size was less than
    PAGE_SIZE. Luckily PAGE_SIZE is unsigned long which made the compare an
    unsigned compare, meaning the negative size value did not end up causing a
    large portion of memory to be randomly zeroed out.
    
    Fixes: 66a8cb95ed040 ("ring-buffer: Add place holder recording of dropped events")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cfb975db96c272989fa615d41b575f7e0ddfd652
Author: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date:   Fri Dec 22 10:15:20 2017 -0800

    sctp: Replace use of sockets_allocated with specified macro.
    
    commit 8cb38a602478e9f806571f6920b0a3298aabf042 upstream.
    
    The patch(180d8cd942ce) replaces all uses of struct sock fields'
    memory_pressure, memory_allocated, sockets_allocated, and sysctl_mem
    to accessor macros. But the sockets_allocated field of sctp sock is
    not replaced at all. Then replace it now for unifying the code.
    
    Fixes: 180d8cd942ce ("foundations of per-cgroup memory pressure controlling.")
    Cc: Glauber Costa <glommer@parallels.com>
    Signed-off-by: Tonghao Zhang <zhangtonghao@didichuxing.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7f5fe767a29486e83cc45aec4723ff31738dee44
Author: Daniel Thompson <daniel.thompson@linaro.org>
Date:   Thu Dec 21 15:06:15 2017 +0200

    usb: xhci: Add XHCI_TRUST_TX_LENGTH for Renesas uPD720201
    
    commit da99706689481717998d1d48edd389f339eea979 upstream.
    
    When plugging in a USB webcam I see the following message:
    xhci_hcd 0000:04:00.0: WARN Successful completion on short TX: needs
    XHCI_TRUST_TX_LENGTH quirk?
    handle_tx_event: 913 callbacks suppressed
    
    All is quiet again with this patch (and I've done a fair but of soak
    testing with the camera since).
    
    Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8c865cc1f4be61b847e514a1ed5605bf89c1809e
Author: Max Schulze <max.schulze@posteo.de>
Date:   Wed Dec 20 20:47:44 2017 +0100

    USB: serial: ftdi_sio: add id for Airbus DS P8GR
    
    commit c6a36ad383559a60a249aa6016cebf3cb8b6c485 upstream.
    
    Add AIRBUS_DS_P8GR device IDs to ftdi_sio driver.
    
    Signed-off-by: Max Schulze <max.schulze@posteo.de>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b755e6be81ae84eec73b4ff48f9cdc53fbddc680
Author: Hui Wang <hui.wang@canonical.com>
Date:   Fri Dec 22 11:17:44 2017 +0800

    ALSA: hda - Add MIC_NO_PRESENCE fixup for 2 HP machines
    
    commit 322f74ede933b3e2cb78768b6a6fdbfbf478a0c1 upstream.
    
    There is a headset jack on the front panel, when we plug a headset
    into it, the headset mic can't trigger unsol events, and
    read_pin_sense() can't detect its presence too. So add this fixup
    to fix this issue.
    
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3f6b75439d42a03f56f4a9674f01d292054982f1
Author: Jan Engelhardt <jengelh@inai.de>
Date:   Tue Dec 19 19:09:07 2017 +0100

    crypto: n2 - cure use after free
    
    commit 203f45003a3d03eea8fa28d74cfc74c354416fdb upstream.
    
    queue_cache_init is first called for the Control Word Queue
    (n2_crypto_probe). At that time, queue_cache[0] is NULL and a new
    kmem_cache will be allocated. If the subsequent n2_register_algs call
    fails, the kmem_cache will be released in queue_cache_destroy, but
    queue_cache_init[0] is not set back to NULL.
    
    So when the Module Arithmetic Unit gets probed next (n2_mau_probe),
    queue_cache_init will not allocate a kmem_cache again, but leave it
    as its bogus value, causing a BUG() to trigger when queue_cache[0] is
    eventually passed to kmem_cache_zalloc:
    
            n2_crypto: Found N2CP at /virtual-devices@100/n2cp@7
            n2_crypto: Registered NCS HVAPI version 2.0
            called queue_cache_init
            n2_crypto: md5 alg registration failed
            n2cp f028687c: /virtual-devices@100/n2cp@7: Unable to register algorithms.
            called queue_cache_destroy
            n2cp: probe of f028687c failed with error -22
            n2_crypto: Found NCP at /virtual-devices@100/ncp@6
            n2_crypto: Registered NCS HVAPI version 2.0
            called queue_cache_init
            kernel BUG at mm/slab.c:2993!
            Call Trace:
             [0000000000604488] kmem_cache_alloc+0x1a8/0x1e0
                      (inlined) kmem_cache_zalloc
                      (inlined) new_queue
                      (inlined) spu_queue_setup
                      (inlined) handle_exec_unit
             [0000000010c61eb4] spu_mdesc_scan+0x1f4/0x460 [n2_crypto]
             [0000000010c62b80] n2_mau_probe+0x100/0x220 [n2_crypto]
             [000000000084b174] platform_drv_probe+0x34/0xc0
    
    Signed-off-by: Jan Engelhardt <jengelh@inai.de>
    Acked-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 52f840d889812b4d54afe2e83196ca46e01f1aed
Author: Steve Wise <swise@opengridcomputing.com>
Date:   Mon Dec 18 13:10:00 2017 -0800

    iw_cxgb4: Only validate the MSN for successful completions
    
    commit f55688c45442bc863f40ad678c638785b26cdce6 upstream.
    
    If the RECV CQE is in error, ignore the MSN check.  This was causing
    recvs that were flushed into the sw cq to be completed with the wrong
    status (BAD_MSN instead of FLUSHED).
    
    Signed-off-by: Steve Wise <swise@opengridcomputing.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7ed9e0c29f0dfae1f249d3d36142a6474ea77895
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Dec 20 17:57:06 2017 -0800

    n_tty: fix EXTPROC vs ICANON interaction with TIOCINQ (aka FIONREAD)
    
    commit 966031f340185eddd05affcf72b740549f056348 upstream.
    
    We added support for EXTPROC back in 2010 in commit 26df6d13406d ("tty:
    Add EXTPROC support for LINEMODE") and the intent was to allow it to
    override some (all?) ICANON behavior.  Quoting from that original commit
    message:
    
             There is a new bit in the termios local flag word, EXTPROC.
             When this bit is set, several aspects of the terminal driver
             are disabled.  Input line editing, character echo, and mapping
             of signals are all disabled.  This allows the telnetd to turn
             off these functions when in linemode, but still keep track of
             what state the user wants the terminal to be in.
    
    but the problem turns out that "several aspects of the terminal driver
    are disabled" is a bit ambiguous, and you can really confuse the n_tty
    layer by setting EXTPROC and then causing some of the ICANON invariants
    to no longer be maintained.
    
    This fixes at least one such case (TIOCINQ) becoming unhappy because of
    the confusion over whether ICANON really means ICANON when EXTPROC is set.
    
    This basically makes TIOCINQ match the case of read: if EXTPROC is set,
    we ignore ICANON.  Also, make sure to reset the ICANON state ie EXTPROC
    changes, not just if ICANON changes.
    
    Fixes: 26df6d13406d ("tty: Add EXTPROC support for LINEMODE")
    Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Cc: Jiri Slaby <jslaby@suse.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a64cbbdb74ea3fe149f89b16780ef49d06b938b5
Author: Yelena Krivosheev <yelena@marvell.com>
Date:   Tue Dec 19 17:59:45 2017 +0100

    net: mvneta: clear interface link status on port disable
    
    commit 4423c18e466afdfb02a36ee8b9f901d144b3c607 upstream.
    
    When port connect to PHY in polling mode (with poll interval 1 sec),
    port and phy link status must be synchronize in order don't loss link
    change event.
    
    [gregory.clement@free-electrons.com: add fixes tag]
    Fixes: c5aff18204da ("net: mvneta: driver for Marvell Armada 370/XP network unit")
    Signed-off-by: Yelena Krivosheev <yelena@marvell.com>
    Tested-by: Dmitri Epshtein <dima@marvell.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 674151d6dfe7aecceccb60de57edc87fe0d75054
Author: Moshe Shemesh <moshe@mellanox.com>
Date:   Mon Dec 4 15:23:51 2017 +0200

    net/mlx5: Stay in polling mode when command EQ destroy fails
    
    commit a2fba188fd5eadd6061bef4f2f2577a43231ebf3 upstream.
    
    During unload, on mlx5_stop_eqs we move command interface from events
    mode to polling mode, but if command interface EQ destroy fail we move
    back to events mode.
    That's wrong since even if we fail to destroy command interface EQ, we
    do release its irq, so no interrupts will be received.
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Signed-off-by: Moshe Shemesh <moshe@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c01db186a817b06fcd989d727c1e42803f4c56ca
Author: Moshe Shemesh <moshe@mellanox.com>
Date:   Tue Nov 21 15:15:51 2017 +0200

    net/mlx5: Cleanup IRQs in case of unload failure
    
    commit d6b2785cd55ee72e9608762650b3ef299f801b1b upstream.
    
    When mlx5_stop_eqs fails to destroy any of the eqs it returns with an error.
    In such failure flow the function will return without
    releasing all EQs irqs and then pci_free_irq_vectors will fail.
    Fix by only warn on destroy EQ failure and continue to release other
    EQs and their irqs.
    
    It fixes the following kernel trace:
    kernel: kernel BUG at drivers/pci/msi.c:352!
    ...
    ...
    kernel: Call Trace:
    kernel: pci_disable_msix+0xd3/0x100
    kernel: pci_free_irq_vectors+0xe/0x20
    kernel: mlx5_load_one.isra.17+0x9f5/0xec0 [mlx5_core]
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Signed-off-by: Moshe Shemesh <moshe@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    [bwh: Backported to 3.16: there's no pfault_eq]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2a7f2c32bbcb02a5a1eea83bd3bd13c50debef71
Author: Eugenia Emantayev <eugenia@mellanox.com>
Date:   Thu Nov 16 14:57:48 2017 +0200

    net/mlx5: Fix misspelling in the error message and comment
    
    commit 777ec2b2a3f2760505db395de1a9fa4115d74548 upstream.
    
    Fix misspelling in word syndrome.
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    [bwh: Backported to 3.16: drop change in health.c]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d051e969bdd3273143ec447de802e19a11b2f4aa
Author: Dmitry Fleytman Dmitry Fleytman <dmitry.fleytman@gmail.com>
Date:   Tue Dec 19 06:02:04 2017 +0200

    usb: Add device quirk for Logitech HD Pro Webcam C925e
    
    commit 7f038d256c723dd390d2fca942919573995f4cfd 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.
    
    There is one more model that has the same issue - C925e, so applying
    the same quirk as well.
    
    See aforementioned commit message for detailed explanation of the problem.
    
    Signed-off-by: Dmitry Fleytman <dmitry.fleytman@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 987c6a03e9a2ec996e2b95552812ba6db5e628a7
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Dec 12 16:11:30 2017 +0100

    usb: add RESET_RESUME for ELSA MicroLink 56K
    
    commit b9096d9f15c142574ebebe8fbb137012bb9d99c2 upstream.
    
    This modem needs this quirk to operate. It produces timeouts when
    resumed without reset.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1e3f396c465617b3d48cb85b39147efc6076785e
Author: Juan Zea <juan.zea@qindel.com>
Date:   Fri Dec 15 10:21:20 2017 +0100

    usbip: fix usbip bind writing random string after command in match_busid
    
    commit 544c4605acc5ae4afe7dd5914147947db182f2fb upstream.
    
    usbip bind writes commands followed by random string when writing to
    match_busid attribute in sysfs, caused by using full variable size
    instead of string length.
    
    Signed-off-by: Juan Zea <juan.zea@qindel.com>
    Acked-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cd4b71cd3065018c74f4a143a5a24d092a25bd13
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Fri Dec 15 10:50:09 2017 -0700

    usbip: prevent leaking socket pointer address in messages
    
    commit 90120d15f4c397272aaf41077960a157fc4212bf upstream.
    
    usbip driver is leaking socket pointer address in messages. Remove
    the messages that aren't useful and print sockfd in the ones that
    are useful for debugging.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ef4ebf50c5643e0d5cbdba08f444ce3f220b3772
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Mon Dec 18 17:23:37 2017 -0700

    usbip: stub: stop printing kernel pointer addresses in messages
    
    commit 248a22044366f588d46754c54dfe29ffe4f8b4df upstream.
    
    Remove and/or change debug, info. and error messages to not print
    kernel pointer addresses.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16:
     - Drop change in stub_complete()
     - Adjust filenames]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0a43cd94d5930a842b73aef541b8b796eb7d40c7
Author: Shuah Khan <shuahkh@osg.samsung.com>
Date:   Mon Dec 18 17:24:22 2017 -0700

    usbip: vhci: stop printing kernel pointer addresses in messages
    
    commit 8272d099d05f7ab2776cf56a2ab9f9443be18907 upstream.
    
    Remove and/or change debug, info. and error messages to not print
    kernel pointer addresses.
    
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 66fe40226beb16fb7809d275aec362f479388935
Author: SZ Lin (林上智) <sz.lin@moxa.com>
Date:   Tue Dec 19 17:40:32 2017 +0800

    USB: serial: option: adding support for YUGA CLM920-NC5
    
    commit 3920bb713038810f25770e7545b79f204685c8f2 upstream.
    
    This patch adds support for YUGA CLM920-NC5 PID 0x9625 USB modem to option
    driver.
    
    Interface layout:
    0: QCDM/DIAG
    1: ADB
    2: MODEM
    3: AT
    4: RMNET
    
    Signed-off-by: Taiyi Wu <taiyity.wu@moxa.com>
    Signed-off-by: SZ Lin (林上智) <sz.lin@moxa.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 833760100588acfb267dac4d6a02ab9931237739
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Dec 15 16:40:44 2017 +1100

    xfrm: Reinject transport-mode packets through tasklet
    
    commit acf568ee859f098279eadf551612f103afdacb4e upstream.
    
    This is an old bugbear of mine:
    
    https://www.mail-archive.com/netdev@vger.kernel.org/msg03894.html
    
    By crafting special packets, it is possible to cause recursion
    in our kernel when processing transport-mode packets at levels
    that are only limited by packet size.
    
    The easiest one is with DNAT, but an even worse one is where
    UDP encapsulation is used in which case you just have to insert
    an UDP encapsulation header in between each level of recursion.
    
    This patch avoids this problem by reinjecting tranport-mode packets
    through a tasklet.
    
    Fixes: b05e106698d9 ("[IPV4/6]: Netfilter IPsec input hooks")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    [bwh: Backported to 3.16:
     - netfilter finish callbacks only receive an sk_buff pointer
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8bf6fe49ed4a05cab5420b04fd5c4ba84f7d34f6
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Dec 18 23:36:57 2017 +0100

    ALSA: usb-audio: Fix the missing ctl name suffix at parsing SU
    
    commit 5a15f289ee87eaf33f13f08a4909ec99d837ec5f upstream.
    
    The commit 89b89d121ffc ("ALSA: usb-audio: Add check return value for
    usb_string()") added the check of the return value from
    snd_usb_copy_string_desc(), which is correct per se, but it introduced
    a regression.  In the original code, either the "Clock Source",
    "Playback Source" or "Capture Source" suffix is added after the
    terminal string, while the commit changed it to add the suffix only
    when get_term_name() is failing.  It ended up with an incorrect ctl
    name like "PCM" instead of "PCM Capture Source".
    
    Also, even the original code has a similar bug: when the ctl name is
    generated from snd_usb_copy_string_desc() for the given iSelector, it
    also doesn't put the suffix.
    
    This patch addresses these issues: the suffix is added always when no
    static mapping is found.  Also the patch tries to put more comments
    and cleans up the if/else block for better readability in order to
    avoid the same pitfall again.
    
    Fixes: 89b89d121ffc ("ALSA: usb-audio: Add check return value for usb_string()")
    Reported-and-tested-by: Mauro Santos <registo.mailling@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dcc9e1afeeb1da69aa64b66664c625f98a21da52
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Mon Dec 18 17:35:09 2017 +0200

    net: bridge: fix early call to br_stp_change_bridge_id and plug newlink leaks
    
    commit 84aeb437ab98a2bce3d4b2111c79723aedfceb33 upstream.
    
    The early call to br_stp_change_bridge_id in bridge's newlink can cause
    a memory leak if an error occurs during the newlink because the fdb
    entries are not cleaned up if a different lladdr was specified, also
    another minor issue is that it generates fdb notifications with
    ifindex = 0. Another unrelated memory leak is the bridge sysfs entries
    which get added on NETDEV_REGISTER event, but are not cleaned up in the
    newlink error path. To remove this special case the call to
    br_stp_change_bridge_id is done after netdev register and we cleanup the
    bridge on changelink error via br_dev_delete to plug all leaks.
    
    This patch makes netlink bridge destruction on newlink error the same as
    dellink and ioctl del which is necessary since at that point we have a
    fully initialized bridge device.
    
    To reproduce the issue:
    $ ip l add br0 address 00:11:22:33:44:55 type bridge group_fwd_mask 1
    RTNETLINK answers: Invalid argument
    
    $ rmmod bridge
    [ 1822.142525] =============================================================================
    [ 1822.143640] BUG bridge_fdb_cache (Tainted: G           O    ): Objects remaining in bridge_fdb_cache on __kmem_cache_shutdown()
    [ 1822.144821] -----------------------------------------------------------------------------
    
    [ 1822.145990] Disabling lock debugging due to kernel taint
    [ 1822.146732] INFO: Slab 0x0000000092a844b2 objects=32 used=2 fp=0x00000000fef011b0 flags=0x1ffff8000000100
    [ 1822.147700] CPU: 2 PID: 13584 Comm: rmmod Tainted: G    B      O     4.15.0-rc2+ #87
    [ 1822.148578] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.7.5-20140531_083030-gandalf 04/01/2014
    [ 1822.150008] Call Trace:
    [ 1822.150510]  dump_stack+0x78/0xa9
    [ 1822.151156]  slab_err+0xb1/0xd3
    [ 1822.151834]  ? __kmalloc+0x1bb/0x1ce
    [ 1822.152546]  __kmem_cache_shutdown+0x151/0x28b
    [ 1822.153395]  shutdown_cache+0x13/0x144
    [ 1822.154126]  kmem_cache_destroy+0x1c0/0x1fb
    [ 1822.154669]  SyS_delete_module+0x194/0x244
    [ 1822.155199]  ? trace_hardirqs_on_thunk+0x1a/0x1c
    [ 1822.155773]  entry_SYSCALL_64_fastpath+0x23/0x9a
    [ 1822.156343] RIP: 0033:0x7f929bd38b17
    [ 1822.156859] RSP: 002b:00007ffd160e9a98 EFLAGS: 00000202 ORIG_RAX: 00000000000000b0
    [ 1822.157728] RAX: ffffffffffffffda RBX: 00005578316ba090 RCX: 00007f929bd38b17
    [ 1822.158422] RDX: 00007f929bd9ec60 RSI: 0000000000000800 RDI: 00005578316ba0f0
    [ 1822.159114] RBP: 0000000000000003 R08: 00007f929bff5f20 R09: 00007ffd160e8a11
    [ 1822.159808] R10: 00007ffd160e9860 R11: 0000000000000202 R12: 00007ffd160e8a80
    [ 1822.160513] R13: 0000000000000000 R14: 0000000000000000 R15: 00005578316ba090
    [ 1822.161278] INFO: Object 0x000000007645de29 @offset=0
    [ 1822.161666] INFO: Object 0x00000000d5df2ab5 @offset=128
    
    Fixes: 30313a3d5794 ("bridge: Handle IFLA_ADDRESS correctly when creating bridge device")
    Fixes: 5b8d5429daa0 ("bridge: netlink: register netdevice before executing changelink")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: register_netdevice() was the last thing done in
     br_dev_newlink(), so no extra cleanup is needed]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4d222c36af9a709c559486057a3269365f0509e3
Author: Zhao Qiang <qiang.zhao@nxp.com>
Date:   Mon Dec 18 10:26:43 2017 +0800

    net: phy: marvell: Limit 88m1101 autoneg errata to 88E1145 as well.
    
    commit c505873eaece2b4aefd07d339dc7e1400e0235ac upstream.
    
    88E1145 also need this autoneg errata.
    
    Fixes: f2899788353c ("net: phy: marvell: Limit errata to 88m1101")
    Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3156a85e18898125cc8d0effaef8242469839c0b
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Dec 14 13:31:16 2017 +0100

    ACPI: APEI / ERST: Fix missing error handling in erst_reader()
    
    commit bb82e0b4a7e96494f0c1004ce50cec3d7b5fb3d1 upstream.
    
    The commit f6f828513290 ("pstore: pass allocated memory region back to
    caller") changed the check of the return value from erst_read() in
    erst_reader() in the following way:
    
            if (len == -ENOENT)
                    goto skip;
    -       else if (len < 0) {
    -               rc = -1;
    +       else if (len < sizeof(*rcd)) {
    +               rc = -EIO;
                    goto out;
    
    This introduced another bug: since the comparison with sizeof() is
    cast to unsigned, a negative len value doesn't hit any longer.
    As a result, when an error is returned from erst_read(), the code
    falls through, and it may eventually lead to some weird thing like
    memory corruption.
    
    This patch adds the negative error value check more explicitly for
    addressing the issue.
    
    Fixes: f6f828513290 (pstore: pass allocated memory region back to caller)
    Tested-by: Jerry Tang <jtang@suse.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Acked-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7dc47843f886467e30a21ef0958000d94643f18a
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Dec 15 03:07:18 2017 +0100

    PCI / PM: Force devices to D0 in pci_pm_thaw_noirq()
    
    commit 5839ee7389e893a31e4e3c9cf17b50d14103c902 upstream.
    
    It is incorrect to call pci_restore_state() for devices in low-power
    states (D1-D3), as that involves the restoration of MSI setup which
    requires MMIO to be operational and that is only the case in D0.
    
    However, pci_pm_thaw_noirq() may do that if the driver's "freeze"
    callbacks put the device into a low-power state, so fix it by making
    it force devices into D0 via pci_set_power_state() instead of trying
    to "update" their power state which is pointless.
    
    Fixes: e60514bd4485 (PCI/PM: Restore the status of PCI devices across hibernation)
    Reported-by: Thomas Gleixner <tglx@linutronix.de>
    Reported-by: Maarten Lankhorst <dev@mblankhorst.nl>
    Tested-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Maarten Lankhorst <dev@mblankhorst.nl>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e209bfcc41fe5bc28eb7bd543f8e6e3e3cb51308
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Thu Dec 7 11:45:45 2017 +0000

    KVM: arm/arm64: Fix HYP unmapping going off limits
    
    commit 7839c672e58bf62da8f2f0197fefb442c02ba1dd upstream.
    
    When we unmap the HYP memory, we try to be clever and unmap one
    PGD at a time. If we start with a non-PGD aligned address and try
    to unmap a whole PGD, things go horribly wrong in unmap_hyp_range
    (addr and end can never match, and it all goes really badly as we
    keep incrementing pgd and parse random memory as page tables...).
    
    The obvious fix is to let unmap_hyp_range do what it does best,
    which is to iterate over a range.
    
    The size of the linear mapping, which begins at PAGE_OFFSET, can be
    easily calculated by subtracting PAGE_OFFSET form high_memory, because
    high_memory is defined as the linear map address of the last byte of
    DRAM, plus one.
    
    The size of the vmalloc region is given trivially by VMALLOC_END -
    VMALLOC_START.
    
    Reported-by: Andre Przywara <andre.przywara@arm.com>
    Tested-by: Andre Przywara <andre.przywara@arm.com>
    Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bea3857d28b55ba8bdc4260f6034a3c63fc9845a
Author: Helge Deller <deller@gmx.de>
Date:   Tue Dec 12 21:52:26 2017 +0100

    parisc: Hide Diva-built-in serial aux and graphics card
    
    commit bcf3f1752a622f1372d3252d0fea8855d89812e7 upstream.
    
    Diva GSP card has built-in serial AUX port and ATI graphic card which simply
    don't work and which both don't have external connectors.  User Guides even
    mention that those devices shouldn't be used.
    So, prevent that Linux drivers try to enable those devices.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 115659c998ba0adf97d6c3e9706f618000fa90e2
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Dec 15 10:32:03 2017 +0100

    posix-timer: Properly check sigevent->sigev_notify
    
    commit cef31d9af908243421258f1df35a4a644604efbe upstream.
    
    timer_create() specifies via sigevent->sigev_notify the signal delivery for
    the new timer. The valid modes are SIGEV_NONE, SIGEV_SIGNAL, SIGEV_THREAD
    and (SIGEV_SIGNAL | SIGEV_THREAD_ID).
    
    The sanity check in good_sigevent() is only checking the valid combination
    for the SIGEV_THREAD_ID bit, i.e. SIGEV_SIGNAL, but if SIGEV_THREAD_ID is
    not set it accepts any random value.
    
    This has no real effects on the posix timer and signal delivery code, but
    it affects show_timer() which handles the output of /proc/$PID/timers. That
    function uses a string array to pretty print sigev_notify. The access to
    that array has no bound checks, so random sigev_notify cause access beyond
    the array bounds.
    
    Add proper checks for the valid notify modes and remove the SIGEV_THREAD_ID
    masking from various code pathes as SIGEV_NONE can never be set in
    combination with SIGEV_THREAD_ID.
    
    Reported-by: Eric Biggers <ebiggers3@gmail.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Reported-by: Alexey Dobriyan <adobriyan@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: John Stultz <john.stultz@linaro.org>
    [bwh: Backported to 3.16:
     - Add sig_none variable in common_timer_get(), added earlier upstream
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7204d6c00d44924e2bd9261b1aaed9ac08d1ddc6
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Thu Dec 14 16:54:45 2017 +0100

    USB: serial: option: add support for Telit ME910 PID 0x1101
    
    commit 08933099e6404f588f81c2050bfec7313e06eeaf upstream.
    
    This patch adds support for PID 0x1101 of Telit ME910.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 76a90eeac5d1935405d646f9c3cbf76be87936e5
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Mon Jan 22 20:11:06 2018 +0000

    nfsd: auth: Fix gid sorting when rootsquash enabled
    
    commit 1995266727fa8143897e89b55f5d3c79aa828420 upstream.
    
    Commit bdcf0a423ea1 ("kernel: make groups_sort calling a responsibility
    group_info allocators") appears to break nfsd rootsquash in a pretty
    major way.
    
    It adds a call to groups_sort() inside the loop that copies/squashes
    gids, which means the valid gids are sorted along with the following
    garbage.  The net result is that the highest numbered valid gids are
    replaced with any lower-valued garbage gids, possibly including 0.
    
    We should sort only once, after filling in all the gids.
    
    Fixes: bdcf0a423ea1 ("kernel: make groups_sort calling a responsibility ...")
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Acked-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d92fb5824b7e6034889502ade2355a590aede488
Author: Thiago Rafael Becker <thiago.becker@gmail.com>
Date:   Thu Dec 14 15:33:12 2017 -0800

    kernel: make groups_sort calling a responsibility group_info allocators
    
    commit bdcf0a423ea1c40bbb40e7ee483b50fc8aa3d758 upstream.
    
    In testing, we found that nfsd threads may call set_groups in parallel
    for the same entry cached in auth.unix.gid, racing in the call of
    groups_sort, corrupting the groups for that entry and leading to
    permission denials for the client.
    
    This patch:
     - Make groups_sort globally visible.
     - Move the call to groups_sort to the modifiers of group_info
     - Remove the call to groups_sort from set_groups
    
    Link: http://lkml.kernel.org/r/20171211151420.18655-1-thiago.becker@gmail.com
    Signed-off-by: Thiago Rafael Becker <thiago.becker@gmail.com>
    Reviewed-by: Matthew Wilcox <mawilcox@microsoft.com>
    Reviewed-by: NeilBrown <neilb@suse.com>
    Acked-by: "J. Bruce Fields" <bfields@fieldses.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3f470c7424d05f998dd2f07b6ff591eedf0ee74d
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Dec 14 16:44:12 2017 +0100

    ALSA: rawmidi: Avoid racy info ioctl via ctl device
    
    commit c1cfd9025cc394fd137a01159d74335c5ac978ce upstream.
    
    The rawmidi also allows to obtaining the information via ioctl of ctl
    API.  It means that user can issue an ioctl to the rawmidi device even
    when it's being removed as long as the control device is present.
    Although the code has some protection via the global register_mutex,
    its range is limited to the search of the corresponding rawmidi
    object, and the mutex is already unlocked at accessing the rawmidi
    object.  This may lead to a use-after-free.
    
    For avoiding it, this patch widens the application of register_mutex
    to the whole snd_rawmidi_info_select() function.  We have another
    mutex per rawmidi object, but this operation isn't very hot path, so
    it shouldn't matter from the performance POV.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 48199f63bccd0ebc5606907ef56df37ab287f8b5
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Thu Dec 7 00:30:08 2017 -0800

    KVM: X86: Fix load RFLAGS w/o the fixed bit
    
    commit d73235d17ba63b53dc0e1051dbc10a1f1be91b71 upstream.
    
     *** Guest State ***
     CR0: actual=0x0000000000000030, shadow=0x0000000060000010, gh_mask=fffffffffffffff7
     CR4: actual=0x0000000000002050, shadow=0x0000000000000000, gh_mask=ffffffffffffe871
     CR3 = 0x00000000fffbc000
     RSP = 0x0000000000000000  RIP = 0x0000000000000000
     RFLAGS=0x00000000         DR7 = 0x0000000000000400
            ^^^^^^^^^^
    
    The failed vmentry is triggered by the following testcase when ept=Y:
    
        #include <unistd.h>
        #include <sys/syscall.h>
        #include <string.h>
        #include <stdint.h>
        #include <linux/kvm.h>
        #include <fcntl.h>
        #include <sys/ioctl.h>
    
        long r[5];
        int main()
        {
            r[2] = open("/dev/kvm", O_RDONLY);
            r[3] = ioctl(r[2], KVM_CREATE_VM, 0);
            r[4] = ioctl(r[3], KVM_CREATE_VCPU, 7);
            struct kvm_regs regs = {
                    .rflags = 0,
            };
            ioctl(r[4], KVM_SET_REGS, &regs);
            ioctl(r[4], KVM_RUN, 0);
        }
    
    X86 RFLAGS bit 1 is fixed set, userspace can simply clearing bit 1
    of RFLAGS with KVM_SET_REGS ioctl which results in vmentry fails.
    This patch fixes it by oring X86_EFLAGS_FIXED during ioctl.
    
    Suggested-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Quan Xu <quan.xu0@gmail.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Jim Mattson <jmattson@google.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e03448d8278ed1ba0c1b35db27378328eed65254
Author: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Date:   Tue Dec 12 17:59:15 2017 +0530

    powerpc/perf: Dereference BHRB entries safely
    
    commit f41d84dddc66b164ac16acf3f584c276146f1c48 upstream.
    
    It's theoretically possible that branch instructions recorded in
    BHRB (Branch History Rolling Buffer) entries have already been
    unmapped before they are processed by the kernel. Hence, trying to
    dereference such memory location will result in a crash. eg:
    
        Unable to handle kernel paging request for data at address 0xd000000019c41764
        Faulting instruction address: 0xc000000000084a14
        NIP [c000000000084a14] branch_target+0x4/0x70
        LR [c0000000000eb828] record_and_restart+0x568/0x5c0
        Call Trace:
        [c0000000000eb3b4] record_and_restart+0xf4/0x5c0 (unreliable)
        [c0000000000ec378] perf_event_interrupt+0x298/0x460
        [c000000000027964] performance_monitor_exception+0x54/0x70
        [c000000000009ba4] performance_monitor_common+0x114/0x120
    
    Fix it by deferefencing the addresses safely.
    
    Fixes: 691231846ceb ("powerpc/perf: Fix setting of "to" addresses for BHRB")
    Suggested-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Reviewed-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    [mpe: Use probe_kernel_read() which is clearer, tweak change log]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6ed40cf6863792e01bfa1e264328b2257bfb1096
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Mon Dec 11 22:56:54 2017 +0000

    MIPS: Disallow outsized PTRACE_SETREGSET NT_PRFPREG regset accesses
    
    commit c8c5a3a24d395b14447a9a89d61586a913840a3b upstream.
    
    Complement commit c23b3d1a5311 ("MIPS: ptrace: Change GP regset to use
    correct core dump register layout") and also reject outsized
    PTRACE_SETREGSET requests to the NT_PRFPREG regset, like with the
    NT_PRSTATUS regset.
    
    Signed-off-by: Maciej W. Rozycki <macro@mips.com>
    Fixes: c23b3d1a5311 ("MIPS: ptrace: Change GP regset to use correct core dump register layout")
    Cc: James Hogan <james.hogan@mips.com>
    Cc: Paul Burton <Paul.Burton@mips.com>
    Cc: Alex Smith <alex@alex-smith.me.uk>
    Cc: Dave Martin <Dave.Martin@arm.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/17930/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d97c5dd698a37a6f4fcce8132853620f7390f797
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Mon Dec 11 22:54:33 2017 +0000

    MIPS: Fix an FCSR access API regression with NT_PRFPREG and MSA
    
    commit be07a6a1188372b6d19a3307ec33211fc9c9439d upstream.
    
    Fix a commit 72b22bbad1e7 ("MIPS: Don't assume 64-bit FP registers for
    FP regset") public API regression, then activated by commit 1db1af84d6df
    ("MIPS: Basic MSA context switching support"), that caused the FCSR
    register not to be read or written for CONFIG_CPU_HAS_MSA kernel
    configurations (regardless of actual presence or absence of the MSA
    feature in a given processor) with ptrace(2) PTRACE_GETREGSET and
    PTRACE_SETREGSET requests nor recorded in core dumps.
    
    This is because with !CONFIG_CPU_HAS_MSA configurations the whole of
    `elf_fpregset_t' array is bulk-copied as it is, which includes the FCSR
    in one half of the last, 33rd slot, whereas with CONFIG_CPU_HAS_MSA
    configurations array elements are copied individually, and then only the
    leading 32 FGR slots while the remaining slot is ignored.
    
    Correct the code then such that only FGR slots are copied in the
    respective !MSA and MSA helpers an then the FCSR slot is handled
    separately in common code.  Use `ptrace_setfcr31' to update the FCSR
    too, so that the read-only mask is respected.
    
    Retrieving a correct value of FCSR is important in debugging not only
    for the human to be able to get the right interpretation of the
    situation, but for correct operation of GDB as well.  This is because
    the condition code bits in FSCR are used by GDB to determine the
    location to place a breakpoint at when single-stepping through an FPU
    branch instruction.  If such a breakpoint is placed incorrectly (i.e.
    with the condition reversed), then it will be missed, likely causing the
    debuggee to run away from the control of GDB and consequently breaking
    the process of investigation.
    
    Fortunately GDB continues using the older PTRACE_GETFPREGS ptrace(2)
    request which is unaffected, so the regression only really hits with
    post-mortem debug sessions using a core dump file, in which case
    execution, and consequently single-stepping through branches is not
    possible.  Of course core files created by buggy kernels out there will
    have the value of FCSR recorded clobbered, but such core files cannot be
    corrected and the person using them simply will have to be aware that
    the value of FCSR retrieved is not reliable.
    
    Which also means we can likely get away without defining a replacement
    API which would ensure a correct value of FSCR to be retrieved, or none
    at all.
    
    This is based on previous work by Alex Smith, extensively rewritten.
    
    Signed-off-by: Alex Smith <alex@alex-smith.me.uk>
    Signed-off-by: James Hogan <james.hogan@mips.com>
    Signed-off-by: Maciej W. Rozycki <macro@mips.com>
    Fixes: 72b22bbad1e7 ("MIPS: Don't assume 64-bit FP registers for FP regset")
    Cc: Paul Burton <Paul.Burton@mips.com>
    Cc: Dave Martin <Dave.Martin@arm.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/17928/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6ddbc3b6a942b33356a01a4e7d73dffe27c2d2c2
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Mon Dec 11 22:52:15 2017 +0000

    MIPS: Guard against any partial write attempt with PTRACE_SETREGSET
    
    commit dc24d0edf33c3e15099688b6bbdf7bdc24bf6e91 upstream.
    
    Complement commit d614fd58a283 ("mips/ptrace: Preserve previous
    registers for short regset write") and ensure that no partial register
    write attempt is made with PTRACE_SETREGSET, as we do not preinitialize
    any temporaries used to hold incoming register data and consequently
    random data could be written.
    
    It is the responsibility of the caller, such as `ptrace_regset', to
    arrange for writes to span whole registers only, so here we only assert
    that it has indeed happened.
    
    Signed-off-by: Maciej W. Rozycki <macro@mips.com>
    Fixes: 72b22bbad1e7 ("MIPS: Don't assume 64-bit FP registers for FP regset")
    Cc: James Hogan <james.hogan@mips.com>
    Cc: Paul Burton <Paul.Burton@mips.com>
    Cc: Alex Smith <alex@alex-smith.me.uk>
    Cc: Dave Martin <Dave.Martin@arm.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/17926/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 914fdbe4744486dd6dbde4dc0cbdec8d365cda44
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Mon Dec 11 22:51:35 2017 +0000

    MIPS: Factor out NT_PRFPREG regset access helpers
    
    commit a03fe72572c12e98f4173f8a535f32468e48b6ec upstream.
    
    In preparation to fix a commit 72b22bbad1e7 ("MIPS: Don't assume 64-bit
    FP registers for FP regset") FCSR access regression factor out
    NT_PRFPREG regset access helpers for the non-MSA and the MSA variants
    respectively, to avoid having to deal with excessive indentation in the
    actual fix.
    
    No functional change, however use `target->thread.fpu.fpr[0]' rather
    than `target->thread.fpu.fpr[i]' for FGR holding type size determination
    as there's no `i' variable to refer to anymore, and for the factored out
    `i' variable declaration use `unsigned int' rather than `unsigned' as
    its type, following the common style.
    
    Signed-off-by: Maciej W. Rozycki <macro@mips.com>
    Fixes: 72b22bbad1e7 ("MIPS: Don't assume 64-bit FP registers for FP regset")
    Cc: James Hogan <james.hogan@mips.com>
    Cc: Paul Burton <Paul.Burton@mips.com>
    Cc: Alex Smith <alex@alex-smith.me.uk>
    Cc: Dave Martin <Dave.Martin@arm.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/17925/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 988497b74ddade8b0df63eaaea2c2b74f99a43a1
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Mon Mar 27 15:10:58 2017 +0100

    mips/ptrace: Preserve previous registers for short regset write
    
    commit d614fd58a2834cfe4efa472c33c8f3ce2338b09b upstream.
    
    Ensure that if userspace supplies insufficient data to PTRACE_SETREGSET
    to fill all the registers, the thread's old registers are preserved.
    
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c228fb3d10ac5af3d0f451f4d6a2665e901f58af
Author: Maciej W. Rozycki <macro@imgtec.com>
Date:   Fri Oct 28 08:21:03 2016 +0100

    MIPS: Fix FCSR Cause bit handling for correct SIGFPE issue
    
    commit 5a1aca4469fdccd5b74ba0b4e490173b2b447895 upstream.
    
    Sanitize FCSR Cause bit handling, following a trail of past attempts:
    
    * commit 4249548454f7 ("MIPS: ptrace: Fix FP context restoration FCSR
    regression"),
    
    * commit 443c44032a54 ("MIPS: Always clear FCSR cause bits after
    emulation"),
    
    * commit 64bedffe4968 ("MIPS: Clear [MSA]FPE CSR.Cause after
    notify_die()"),
    
    * commit b1442d39fac2 ("MIPS: Prevent user from setting FCSR cause
    bits"),
    
    * commit b54d2901517d ("Properly handle branch delay slots in connection
    with signals.").
    
    Specifically do not mask these bits out in ptrace(2) processing and send
    a SIGFPE signal instead whenever a matching pair of an FCSR Cause and
    Enable bit is seen as execution of an affected context is about to
    resume.  Only then clear Cause bits, and even then do not clear any bits
    that are set but masked with the respective Enable bits.  Adjust Cause
    bit clearing throughout code likewise, except within the FPU emulator
    proper where they are set according to IEEE 754 exceptions raised as the
    operation emulated executed.  Do so so that any IEEE 754 exceptions
    subject to their default handling are recorded like with operations
    executed by FPU hardware.
    
    Signed-off-by: Maciej W. Rozycki <macro@imgtec.com>
    Cc: Paul Burton <paul.burton@imgtec.com>
    Cc: James Hogan <james.hogan@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/14460/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    [bwh: Backported to 3.16:
     - Drop changes in mips-r2-to-r6-emul and simulate_fp()
     - Add #include <asm/fpu.h> in <asm/switch_to.h>
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cdd310763d0acbc3b9408d5b69a5063b4c37cf77
Author: Ralf Baechle <ralf@linux-mips.org>
Date:   Sat May 23 01:20:19 2015 +0200

    MIPS: MSA: bugfix - disable MSA correctly for new threads/processes.
    
    commit 9cc719ab3f4f639d629ac8ff09e9b998bc006f68 upstream.
    
    Due to the slightly odd way that new threads and processes start execution
    when scheduled for the very first time they were bypassing the required
    disable_msa call.
    
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 760aa865a04d8425578726a376d7195f81ff8d8c
Author: Maciej W. Rozycki <macro@imgtec.com>
Date:   Thu May 12 10:19:08 2016 +0100

    MIPS: ptrace: Prevent writes to read-only FCSR bits
    
    commit abf378be49f38c4d3e23581d3df3fa9f1b1b11d2 upstream.
    
    Correct the cases missed with commit 9b26616c8d9d ("MIPS: Respect the
    ISA level in FCSR handling") and prevent writes to read-only FCSR bits
    there.
    
    This in particular applies to FP context initialisation where any IEEE
    754-2008 bits preset by `mips_set_personality_nan' are cleared before
    the relevant ptrace(2) call takes effect and the PTRACE_POKEUSR request
    addressing FPC_CSR where no masking of read-only FCSR bits is done.
    
    Remove the FCSR clearing from FP context initialisation then and unify
    PTRACE_POKEUSR/FPC_CSR and PTRACE_SETFPREGS handling, by factoring out
    code from `ptrace_setfpregs' and calling it from both places.
    
    This mostly matters to soft float configurations where the emulator can
    be switched this way to a mode which should not be accessible and cannot
    be set with the CTC1 instruction.  With hard float configurations any
    effect is transient anyway as read-only bits will retain their values at
    the time the FP context is restored.
    
    Signed-off-by: Maciej W. Rozycki <macro@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/13239/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    [bwh: Backported to 3.16: There is no mips_set_personality_nan(), so make
     init_fp_ctx() copy the initial value of FCSR31]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e22cb76130ea0b2740c0fefd4265bbf805ebd8ac
Author: Maciej W. Rozycki <macro@imgtec.com>
Date:   Thu May 12 10:18:27 2016 +0100

    MIPS: ptrace: Fix FP context restoration FCSR regression
    
    commit 4249548454f7ba4581aeee26bd83f42b48a14d15 upstream.
    
    Fix a floating-point context restoration regression introduced with
    commit 9b26616c8d9d ("MIPS: Respect the ISA level in FCSR handling")
    that causes a Floating Point exception and consequently a kernel oops
    with hard float configurations when one or more FCSR Enable and their
    corresponding Cause bits are set both at a time via a ptrace(2) call.
    
    To do so reinstate Cause bit masking originally introduced with commit
    b1442d39fac2 ("MIPS: Prevent user from setting FCSR cause bits") to
    address this exact problem and then inadvertently removed from the
    PTRACE_SETFPREGS request with the commit referred above.
    
    Signed-off-by: Maciej W. Rozycki <macro@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/13238/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b18b5d55c0e8b2bccda919f5f227ec3ba1056f2a
Author: Maciej W. Rozycki <macro@linux-mips.org>
Date:   Tue May 12 15:20:57 2015 +0100

    MIPS: Fix a preemption issue with thread's FPU defaults
    
    commit 03dce595270f22d59a6f37e9170287c1afd94bc2 upstream.
    
    Fix "BUG: using smp_processor_id() in preemptible" reported in accesses
    to thread's FPU defaults: the value to initialise FSCR to at program
    startup, the FCSR r/w mask and the contents of FIR in full FPU
    emulation, removing a regression introduced with 9b26616c [MIPS: Respect
    the ISA level in FCSR handling] and f6843626 [MIPS: math-emu: Set FIR
    feature flags for full emulation].
    
    Use `boot_cpu_data' to obtain the data from, following the approach that
    `cpu_has_*' macros take and avoiding the call to `smp_processor_id' made
    in the reference to `current_cpu_data'.  The contents of FSCR have to be
    consistent across processors in an SMP system, the settings there must
    not change as a thread is migrated across processors.  And the contents
    of FIR are guaranteed to be consistent in FPU emulation, by definition.
    
    Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
    Tested-by: Ezequiel Garcia <ezequiel.garcia@imgtec.com>
    Tested-by: Paul Martin <paul.martin@codethink.co.uk>
    Cc: Markos Chandras <Markos.Chandras@imgtec.com>
    Cc: James Hogan <james.hogan@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/10030/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    [bwh: Backported to 3.16:
     - Drop change in cop1_cfc()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c9d34c4e3e56a533de139ef41dad59bb7c424e27
Author: Maciej W. Rozycki <macro@linux-mips.org>
Date:   Fri Apr 3 23:27:48 2015 +0100

    MIPS: Respect the ISA level in FCSR handling
    
    commit 9b26616c8d9dae53fbac7f7cb2c6dd1308102976 upstream.
    
    Define the central place the default FCSR value is set from, initialised
    in `cpu_probe'.  Determine the FCSR mask applied to values written to
    the register with CTC1 in the full emulation mode and via ptrace(2),
    according to the ISA level of processor hardware or the writability of
    bits 31:18 if actual FPU hardware is used.
    
    Software may rely on FCSR bits whose functions our emulator does not
    implement, so it should not allow them to be set or software may get
    confused.  For ptrace(2) it's just sanity.
    
    [ralf@linux-mips.org: Fixed double inclusion of <asm/current.h>.]
    
    Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/9711/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    [bwh: Backported to 3.16:
     - In cop1Emulate(), keep converting the rounding mode
     - Drop change in loongson_cu2_call()
     - Add definitions of FPU_CSR_{FS,CONDX} in <asm/mipsregs.h>
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3127c502272aca5f46b04c0b11afb464ad4fcbaf
Author: Maciej W. Rozycki <macro@linux-mips.org>
Date:   Fri Apr 3 23:27:38 2015 +0100

    MIPS: math-emu: Define IEEE 754-2008 feature control bits
    
    commit f1f3b7ebac08161761c352fd070cfa07b7b94c54 upstream.
    
    Define IEEE 754-2008 feature control bits: FIR.HAS2008, FCSR.ABS2008 and
    FCSR.NAN2008, and update the `_ieee754_csr' structure accordingly.
    
    For completeness define FIR.UFRP too.
    
    Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/9709/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    [bwh: Backported to 3.16: In cop1Emulate(), keep converting the rounding mode]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8605aa2fea28c0485aeb60c114a9d52df1455915
Author: Maciej W. Rozycki <macro@linux-mips.org>
Date:   Fri Apr 3 23:27:15 2015 +0100

    MIPS: Set `si_code' for SIGFPE signals sent from emulation too
    
    commit 304acb717e5b67cf56f05bc5b21123758e1f7ea0 upstream.
    
    Rework `process_fpemu_return' and move IEEE 754 exception interpretation
    there, from `do_fpe'.  Record the cause bits set in FCSR before they are
    cleared and pass them through to `process_fpemu_return' so as to set
    `si_code' correctly too for SIGFPE signals sent from emulation rather
    than those issued by hardware with the FPE processor exception only.
    
    For simplicity `mipsr2_decoder' assumes `*fcr31' has been preinitialised
    and only sets it to anything if an FPU instruction has been emulated,
    which in turn is the only case SIGFPE can be issued for here.
    
    Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/9705/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    [bwh: Backported to 3.16:
     - Drop changes in mips-r2-to-r6-emul and simulate_fp()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0efd2f915bbc608f66065c36b291d37efe0a0b0f
Author: Maciej W. Rozycki <macro@linux-mips.org>
Date:   Fri Apr 3 23:27:10 2015 +0100

    MIPS: Always clear FCSR cause bits after emulation
    
    commit 443c44032a54f9acf027a8e688380fddc809bc19 upstream.
    
    Clear any FCSR cause bits recorded in the saved FPU context after
    emulation in all cases rather than in `do_fpe' only, so that any
    unmasked IEEE 754 exception left from emulation does not cause a fatal
    kernel-mode FPE hardware exception with the CTC1 instruction used by the
    kernel to subsequently restore FCSR hardware from the saved FPU context.
    
    Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/9704/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    [bwh: Backported to 3.16: drop changes in mips-r2-to-r6-emul and simulate_fp()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 89d573ab001aca5b290ad627cb7e8afe1a88d9e3
Author: Maciej W. Rozycki <macro@linux-mips.org>
Date:   Fri Apr 3 23:27:06 2015 +0100

    MIPS: Respect the FCSR exception mask for `si_code'
    
    commit ed2d72c1eb3643b7c109bdf387563d9b9a30c279 upstream.
    
    Respect the FCSR exception mask when interpreting the IEEE 754 exception
    condition to report with SIGFPE in `si_code', so as not to use one that
    has been masked where a different one set in parallel caused the FPE
    hardware exception to trigger.  As per the IEEE Std 754 the Inexact
    exception can happen together with Overflow or Underflow.
    
    Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/9703/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a4fba4e467e4150edf42a97a1641ab5c2cde354f
Author: James Hogan <james.hogan@imgtec.com>
Date:   Wed Feb 25 13:08:05 2015 +0000

    MIPS: lose_fpu(): Disable FPU when MSA enabled
    
    commit acaf6a97d623af123314c2f8ce4cf7254f6b2fc1 upstream.
    
    The lose_fpu() function only disables the FPU in CP0_Status.CU1 if the
    FPU is in use and MSA isn't enabled.
    
    This isn't necessarily a problem because KSTK_STATUS(current), the
    version of CP0_Status stored on the kernel stack on entry from user
    mode, does always get updated and gets restored when returning to user
    mode, but I don't think it was intended, and it is inconsistent with the
    case of only the FPU being in use. Sometimes leaving the FPU enabled may
    also mask kernel bugs where FPU operations are executed when the FPU
    might not be enabled.
    
    So lets disable the FPU in the MSA case too.
    
    Fixes: 33c771ba5c5d ("MIPS: save/disable MSA in lose_fpu")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Paul Burton <paul.burton@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/9323/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6c90009897eac557acc83c48db62b40a91e39b76
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Fri Jan 30 12:09:36 2015 +0000

    MIPS: prevent FP context set via ptrace being discarded
    
    commit ac9ad83bc318635ed7496e9dff30beaa522eaec7 upstream.
    
    If a ptracee has not used the FPU and the ptracer sets its FP context
    using PTRACE_POKEUSR, PTRACE_SETFPREGS or PTRACE_SETREGSET then that
    context will be discarded upon either the ptracee using the FPU or a
    further write to the context via ptrace. Prevent this loss by recording
    that the task has "used" math once its FP context has been written to.
    The context initialisation code that was present for the PTRACE_POKEUSR
    case is reused for the other 2 cases to provide consistent behaviour
    for the different ptrace requests.
    
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/9166/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d6e7dd39a7f036eb3e48032d68d9e70f2e9781cf
Author: James Hogan <james.hogan@imgtec.com>
Date:   Tue Dec 2 13:44:13 2014 +0000

    MIPS: Clear [MSA]FPE CSR.Cause after notify_die()
    
    commit 64bedffe496820dbb6b53302d80dd0f04db33d8e upstream.
    
    When handling floating point exceptions (FPEs) and MSA FPEs the Cause
    bits of the appropriate control and status register (FCSR for FPEs and
    MSACSR for MSA FPEs) are read and cleared before enabling interrupts,
    presumably so that it doesn't have to go through the pain of restoring
    those bits if the process is pre-empted, since writing those bits would
    cause another immediate exception while still in the kernel.
    
    The bits aren't normally ever restored again, since userland never
    expects to see them set.
    
    However for virtualisation it is necessary for the kernel to be able to
    restore these Cause bits, as the guest may have been interrupted in an
    FP exception handler but before it could read the Cause bits. This can
    be done by registering a die notifier, to get notified of the exception
    when such a value is restored, and if the PC was at the instruction
    which is used to restore the guest state, the handler can step over it
    and continue execution. The Cause bits can then remain set without
    causing further exceptions.
    
    For this to work safely a few changes are made:
    - __build_clear_fpe and __build_clear_msa_fpe no longer clear the Cause
      bits, and now return from exception level with interrupts disabled
      instead of enabled.
    - do_fpe() now clears the Cause bits and enables interrupts after
      notify_die() is called, so that the notifier can chose to return from
      exception without this happening.
    - do_msa_fpe() acts similarly, but now actually makes use of the second
      argument (msacsr) and calls notify_die() with the new DIE_MSAFP,
      allowing die notifiers to be informed of MSA FPEs too.
    
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Acked-by: Ralf Baechle <ralf@linux-mips.org>
    Cc: Paul Burton <paul.burton@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Gleb Natapov <gleb@kernel.org>
    Cc: linux-mips@linux-mips.org
    Cc: kvm@vger.kernel.org
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c703481cd8f8865d7dbf6c557b78d4a97a9c6b3d
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Fri Jan 30 12:09:34 2015 +0000

    MIPS: clear MSACSR cause bits when handling MSA FP exception
    
    commit 091be550a70a086c3b4420c6155e733dc410f190 upstream.
    
    Much like for traditional scalar FP exceptions, the cause bits in the
    MSACSR register need to be cleared following an MSA FP exception.
    Without doing so the exception will simply be raised again whenever
    the kernel restores MSACSR from a tasks saved context, leading to
    undesirable spurious exceptions. Clear the cause bits from the
    handle_msa_fpe function, mirroring the way handle_fpe clears the
    cause bits in FCSR.
    
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/9164/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0ba99c2fdbcbabe4fba80fc8ebf5982c3abc7efe
Author: James Hogan <jhogan@kernel.org>
Date:   Tue Nov 14 12:01:20 2017 +0000

    MIPS: CPS: Fix r1 .set mt assembler warning
    
    commit 17278a91e04f858155d54bee5528ba4fbcec6f87 upstream.
    
    MIPS CPS has a build warning on kernels configured for MIPS32R1 or
    MIPS64R1, due to the use of .set mt without a prior .set mips{32,64}r2:
    
    arch/mips/kernel/cps-vec.S Assembler messages:
    arch/mips/kernel/cps-vec.S:238: Warning: the `mt' extension requires MIPS32 revision 2 or greater
    
    Add .set MIPS_ISA_LEVEL_RAW before .set mt to silence the warning.
    
    Fixes: 245a7868d2f2 ("MIPS: smp-cps: rework core/VPE initialisation")
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: James Hogan <james.hogan@mips.com>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/17699/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7ba9ce6859c6166418075f40654e6228416423ca
Author: Christoph Paasch <cpaasch@apple.com>
Date:   Mon Dec 11 00:05:46 2017 -0800

    tcp md5sig: Use skb's saddr when replying to an incoming segment
    
    commit 30791ac41927ebd3e75486f9504b6d2280463bf0 upstream.
    
    The MD5-key that belongs to a connection is identified by the peer's
    IP-address. When we are in tcp_v4(6)_reqsk_send_ack(), we are replying
    to an incoming segment from tcp_check_req() that failed the seq-number
    checks.
    
    Thus, to find the correct key, we need to use the skb's saddr and not
    the daddr.
    
    This bug seems to have been there since quite a while, but probably got
    unnoticed because the consequences are not catastrophic. We will call
    tcp_v4_reqsk_send_ack only to send a challenge-ACK back to the peer,
    thus the connection doesn't really fail.
    
    Fixes: 9501f9722922 ("tcp md5sig: Let the caller pass appropriate key for tcp_v{4,6}_do_calc_md5_hash().")
    Signed-off-by: Christoph Paasch <cpaasch@apple.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ee6f400ae7cc7c7bfd2583bd2889b0d5261586d1
Author: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Date:   Mon Dec 11 15:00:57 2017 -0500

    ext4: fix crash when a directory's i_size is too small
    
    commit 9d5afec6b8bd46d6ed821aa1579634437f58ef1f upstream.
    
    On a ppc64 machine, when mounting a fuzzed ext2 image (generated by
    fsfuzzer) the following call trace is seen,
    
    VFS: brelse: Trying to free free buffer
    WARNING: CPU: 1 PID: 6913 at /root/repos/linux/fs/buffer.c:1165 .__brelse.part.6+0x24/0x40
    .__brelse.part.6+0x20/0x40 (unreliable)
    .ext4_find_entry+0x384/0x4f0
    .ext4_lookup+0x84/0x250
    .lookup_slow+0xdc/0x230
    .walk_component+0x268/0x400
    .path_lookupat+0xec/0x2d0
    .filename_lookup+0x9c/0x1d0
    .vfs_statx+0x98/0x140
    .SyS_newfstatat+0x48/0x80
    system_call+0x58/0x6c
    
    This happens because the directory that ext4_find_entry() looks up has
    inode->i_size that is less than the block size of the filesystem. This
    causes 'nblocks' to have a value of zero. ext4_bread_batch() ends up not
    reading any of the directory file's blocks. This renders the entries in
    bh_use[] array to continue to have garbage data. buffer_uptodate() on
    bh_use[0] can then return a zero value upon which brelse() function is
    invoked.
    
    This commit fixes the bug by returning -ENOENT when the directory file
    has no associated blocks.
    
    Reported-by: Abdul Haleem <abdhalee@linux.vnet.ibm.com>
    Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fcccc845838ad5c88b5b7c6f0ab3ab01686e0bdd
Author: Mohamed Ghannam <simo.ghannam@gmail.com>
Date:   Sun Dec 10 03:50:58 2017 +0000

    net: ipv4: fix for a race condition in raw_sendmsg
    
    commit 8f659a03a0ba9289b9aeb9b4470e6fb263d6f483 upstream.
    
    inet->hdrincl is racy, and could lead to uninitialized stack pointer
    usage, so its value should be read only once.
    
    Fixes: c008ba5bdc9f ("ipv4: Avoid reading user iov twice after raw_probe_proto_opt")
    Signed-off-by: Mohamed Ghannam <simo.ghannam@gmail.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 96231fe7577d91bb2f4e0271ca39d4f19fa904ef
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Nov 7 21:27:09 2014 +0800

    ipv4: Avoid reading user iov twice after raw_probe_proto_opt
    
    commit c008ba5bdc9fa830e1a349b20b0be5a137bdef7a upstream.
    
    Ever since raw_probe_proto_opt was added it had the problem of
    causing the user iov to be read twice, once during the probe for
    the protocol header and once again in ip_append_data.
    
    This is a potential security problem since it means that whatever
    we're probing may be invalid.  This patch plugs the hole by
    firstly advancing the iov so we don't read the same spot again,
    and secondly saving what we read the first time around for use
    by ip_append_data.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a72977ba0a5a88ed1ecbc624d713343652723e94
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Nov 7 21:27:08 2014 +0800

    ipv4: Use standard iovec primitive in raw_probe_proto_opt
    
    commit 32b5913a931fd753faf3d4e1124b2bc2edb364da upstream.
    
    The function raw_probe_proto_opt tries to extract the first two
    bytes from the user input in order to seed the IPsec lookup for
    ICMP packets.  In doing so it's processing iovec by hand and
    overcomplicating things.
    
    This patch replaces the manual iovec processing with a call to
    memcpy_fromiovecend.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 803eadd5a3e9eb5378b4215457efb1c6781fbf4c
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Dec 11 12:33:47 2017 +0100

    nl80211: fix nl80211_send_iface() error paths
    
    commit 4564b187c16327045d87596e8980c65ba7b84c50 upstream.
    
    Evidently I introduced a locking bug in my change here,
    the nla_put_failure sometimes needs to unlock. Fix it.
    
    Fixes: 44905265bc15 ("nl80211: don't expose wdev->ssid for most interfaces")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e953b3f4d136e498d1d4e2cd55866c533ab903e3
Author: Tobias Jordan <Tobias.Jordan@elektrobit.com>
Date:   Wed Dec 6 14:28:27 2017 +0100

    dmaengine: jz4740: disable/unprepare clk if probe fails
    
    commit eb9436966fdc84cebdf222952a99898ab46d9bb0 upstream.
    
    in error path of jz4740_dma_probe(), call clk_disable_unprepare() to clean
    up.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Fixes: 25ce6c35fea0 MIPS: jz4740: Remove custom DMA API
    Signed-off-by: Tobias Jordan <Tobias.Jordan@elektrobit.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e023bef9b5b3b55e391dc10d773ff7b23c4b92c7
Author: Adam Wallis <awallis@codeaurora.org>
Date:   Mon Nov 27 10:45:01 2017 -0500

    dmaengine: dmatest: move callback wait queue to thread context
    
    commit 6f6a23a213be51728502b88741ba6a10cda2441d upstream.
    
    Commit adfa543e7314 ("dmatest: don't use set_freezable_with_signal()")
    introduced a bug (that is in fact documented by the patch commit text)
    that leaves behind a dangling pointer. Since the done_wait structure is
    allocated on the stack, future invocations to the DMATEST can produce
    undesirable results (e.g., corrupted spinlocks).
    
    Commit a9df21e34b42 ("dmaengine: dmatest: warn user when dma test times
    out") attempted to WARN the user that the stack was likely corrupted but
    did not fix the actual issue.
    
    This patch fixes the issue by pushing the wait queue and callback
    structs into the the thread structure. If a failure occurs due to time,
    dmaengine_terminate_all will force the callback to safely call
    wake_up_all() without possibility of using a freed pointer.
    
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=197605
    Fixes: adfa543e7314 ("dmatest: don't use set_freezable_with_signal()")
    Reviewed-by: Sinan Kaya <okaya@codeaurora.org>
    Suggested-by: Shunyong Yang <shunyong.yang@hxt-semitech.com>
    Signed-off-by: Adam Wallis <awallis@codeaurora.org>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3ebd68f499f6131884e2cf9c0e88aebf2af07e26
Author: Adam Wallis <awallis@codeaurora.org>
Date:   Thu Nov 2 08:53:30 2017 -0400

    dmaengine: dmatest: warn user when dma test times out
    
    commit a9df21e34b422f79d9a9fa5c3eff8c2a53491be6 upstream.
    
    Commit adfa543e7314 ("dmatest: don't use set_freezable_with_signal()")
    introduced a bug (that is in fact documented by the patch commit text)
    that leaves behind a dangling pointer. Since the done_wait structure is
    allocated on the stack, future invocations to the DMATEST can produce
    undesirable results (e.g., corrupted spinlocks). Ideally, this would be
    cleaned up in the thread handler, but at the very least, the kernel
    is left in a very precarious scenario that can lead to some long debug
    sessions when the crash comes later.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=197605
    Signed-off-by: Adam Wallis <awallis@codeaurora.org>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 532980753bb7d931b972d0b9bf07a1e3a77df7e7
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Dec 8 18:10:05 2017 +0200

    xhci: Don't add a virt_dev to the devs array before it's fully allocated
    
    commit 5d9b70f7d52eb14bb37861c663bae44de9521c35 upstream.
    
    Avoid null pointer dereference if some function is walking through the
    devs array accessing members of a new virt_dev that is mid allocation.
    
    Add the virt_dev to xhci->devs[i] _after_ the virt_device and all its
    members are properly allocated.
    
    issue found by KASAN: null-ptr-deref in xhci_find_slot_id_by_port
    
    "Quick analysis suggests that xhci_alloc_virt_device() is not mutex
    protected. If so, there is a time frame where xhci->devs[slot_id] is set
    but not fully initialized. Specifically, xhci->devs[i]->udev can be NULL."
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: There is an extra failure path, so we may need to
     free dev->eps[0].ring]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dfb76a1333b7261b8e6baac55b80762b79ba07dd
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Fri Dec 8 16:15:20 2017 +0000

    ASoC: wm_adsp: Fix validation of firmware and coeff lengths
    
    commit 50dd2ea8ef67a1617e0c0658bcbec4b9fb03b936 upstream.
    
    The checks for whether another region/block header could be present
    are subtracting the size from the current offset.  Obviously we should
    instead subtract the offset from the size.
    
    The checks for whether the region/block data fit in the file are
    adding the data size to the current offset and header size, without
    checking for integer overflow.  Rearrange these so that overflow is
    impossible.
    
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Tested-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 485a1eb9e4a7cb8c78fe67b20a2c503928775e1c
Author: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Date:   Tue Dec 20 10:29:12 2016 +0000

    ASoC: wm_adsp: Don't overrun firmware file buffer when reading region data
    
    commit 1cab2a84f470e15ecc8e5143bfe9398c6e888032 upstream.
    
    Protect against corrupt firmware files by ensuring that the length we
    get for the data in a region actually lies within the available firmware
    file data buffer.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7b7fcec5f33f4507eff3c1a9968555c85f40b639
Author: David Kozub <zub@linux.fjfi.cvut.cz>
Date:   Tue Dec 5 22:40:04 2017 +0100

    USB: uas and storage: Add US_FL_BROKEN_FUA for another JMicron JMS567 ID
    
    commit 62354454625741f0569c2cbe45b2d192f8fd258e upstream.
    
    There is another JMS567-based USB3 UAS enclosure (152d:0578) that fails
    with the following error:
    
    [sda] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
    [sda] tag#0 Sense Key : Illegal Request [current]
    [sda] tag#0 Add. Sense: Invalid field in cdb
    
    The issue occurs both with UAS (occasionally) and mass storage
    (immediately after mounting a FS on a disk in the enclosure).
    
    Enabling US_FL_BROKEN_FUA quirk solves this issue.
    
    This patch adds an UNUSUAL_DEV with US_FL_BROKEN_FUA for the enclosure
    for both UAS and mass storage.
    
    Signed-off-by: David Kozub <zub@linux.fjfi.cvut.cz>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dc3d2b2efd903321e2b4289212bdeec0ea35c4da
Author: Bin Liu <b-liu@ti.com>
Date:   Tue Dec 5 08:45:30 2017 -0600

    usb: musb: da8xx: fix babble condition handling
    
    commit bd3486ded7a0c313a6575343e6c2b21d14476645 upstream.
    
    When babble condition happens, the musb controller might automatically
    turns off VBUS. On DA8xx platform, the controller generates drvvbus
    interrupt for turning off VBUS along with the babble interrupt.
    
    In this case, we should handle the babble interrupt first and recover
    from the babble condition.
    
    This change ignores the drvvbus interrupt if babble interrupt is also
    generated at the same time, so the babble recovery routine works
    properly.
    
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 056112f96be0625696397fc25fa6b62c4773d93b
Author: Eric Biggers <ebiggers3@gmail.com>
Date:   Fri Dec 8 15:13:28 2017 +0000

    509: fix printing uninitialized stack memory when OID is empty
    
    commit 8dfd2f22d3bf3ab7714f7495ad5d897b8845e8c1 upstream.
    
    Callers of sprint_oid() do not check its return value before printing
    the result.  In the case where the OID is zero-length, -EBADMSG was
    being returned without anything being written to the buffer, resulting
    in uninitialized stack memory being printed.  Fix this by writing
    "(bad)" to the buffer in the cases where -EBADMSG is returned.
    
    Fixes: 4f73175d0375 ("X.509: Add utility functions to render OIDs as strings")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 262465fbcbb7e68a143bf664579b22c493ac6d0d
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 8 15:13:28 2017 +0000

    X.509: fix buffer overflow detection in sprint_oid()
    
    commit 47e0a208fb9d91e3f3c86309e752b13a36470ae8 upstream.
    
    In sprint_oid(), if the input buffer were to be more than 1 byte too
    small for the first snprintf(), 'bufsize' would underflow, causing a
    buffer overflow when printing the remainder of the OID.
    
    Fortunately this cannot actually happen currently, because no users pass
    in a buffer that can be too small for the first snprintf().
    
    Regardless, fix it by checking the snprintf() return value correctly.
    
    For consistency also tweak the second snprintf() check to look the same.
    
    Fixes: 4f73175d0375 ("X.509: Add utility functions to render OIDs as strings")
    Cc: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ea010ef57fd49d6528613904cbe849528e990938
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 8 15:13:27 2017 +0000

    X.509: reject invalid BIT STRING for subjectPublicKey
    
    commit 0f30cbea005bd3077bd98cd29277d7fc2699c1da upstream.
    
    Adding a specially crafted X.509 certificate whose subjectPublicKey
    ASN.1 value is zero-length caused x509_extract_key_data() to set the
    public key size to SIZE_MAX, as it subtracted the nonexistent BIT STRING
    metadata byte.  Then, x509_cert_parse() called kmemdup() with that bogus
    size, triggering the WARN_ON_ONCE() in kmalloc_slab().
    
    This appears to be harmless, but it still must be fixed since WARNs are
    never supposed to be user-triggerable.
    
    Fix it by updating x509_cert_parse() to validate that the value has a
    BIT STRING metadata byte, and that the byte is 0 which indicates that
    the number of bits in the bitstring is a multiple of 8.
    
    It would be nice to handle the metadata byte in asn1_ber_decoder()
    instead.  But that would be tricky because in the general case a BIT
    STRING could be implicitly tagged, and/or could legitimately have a
    length that is not a whole number of bytes.
    
    Here was the WARN (cleaned up slightly):
    
        WARNING: CPU: 1 PID: 202 at mm/slab_common.c:971 kmalloc_slab+0x5d/0x70 mm/slab_common.c:971
        Modules linked in:
        CPU: 1 PID: 202 Comm: keyctl Tainted: G    B            4.14.0-09238-g1d3b78bbc6e9 #26
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.0-20171110_100015-anatol 04/01/2014
        task: ffff880033014180 task.stack: ffff8800305c8000
        Call Trace:
         __do_kmalloc mm/slab.c:3706 [inline]
         __kmalloc_track_caller+0x22/0x2e0 mm/slab.c:3726
         kmemdup+0x17/0x40 mm/util.c:118
         kmemdup include/linux/string.h:414 [inline]
         x509_cert_parse+0x2cb/0x620 crypto/asymmetric_keys/x509_cert_parser.c:106
         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
    
    Fixes: 42d5ec27f873 ("X.509: Add an ASN.1 decoder")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 07aad58583523d4baa2aa8896e8fc605027af0b6
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Sep 8 16:15:58 2017 -0700

    lib/oid_registry.c: X.509: fix the buffer overflow in the utility function for OID string
    
    commit afdb05e9d61905220f09268535235288e6ba3a16 upstream.
    
    The sprint_oid() utility function doesn't properly check the buffer size
    that it causes that the warning in vsnprintf() be triggered.  For
    example on v4.1 kernel:
    
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 2357 at lib/vsprintf.c:1867 vsnprintf+0x5a7/0x5c0()
      ...
    
    We can trigger this issue by injecting maliciously crafted x509 cert in
    DER format.  Just using hex editor to change the length of OID to over
    the length of the SEQUENCE container.  For example:
    
        0:d=0  hl=4 l= 980 cons: SEQUENCE
        4:d=1  hl=4 l= 700 cons:  SEQUENCE
        8:d=2  hl=2 l=   3 cons:   cont [ 0 ]
       10:d=3  hl=2 l=   1 prim:    INTEGER           :02
       13:d=2  hl=2 l=   9 prim:   INTEGER           :9B47FAF791E7D1E3
       24:d=2  hl=2 l=  13 cons:   SEQUENCE
       26:d=3  hl=2 l=   9 prim:    OBJECT            :sha256WithRSAEncryption
       37:d=3  hl=2 l=   0 prim:    NULL
       39:d=2  hl=2 l= 121 cons:   SEQUENCE
       41:d=3  hl=2 l=  22 cons:    SET
       43:d=4  hl=2 l=  20 cons:     SEQUENCE      <=== the SEQ length is 20
       45:d=5  hl=2 l=   3 prim:      OBJECT            :organizationName
            <=== the original length is 3, change the length of OID to over the length of SEQUENCE
    
    Pawel Wieczorkiewicz reported this problem and Takashi Iwai provided
    patch to fix it by checking the bufsize in sprint_oid().
    
    Link: http://lkml.kernel.org/r/20170903021646.2080-1-jlee@suse.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: "Lee, Chun-Yi" <jlee@suse.com>
    Reported-by: Pawel Wieczorkiewicz <pwieczorkiewicz@suse.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Pawel Wieczorkiewicz <pwieczorkiewicz@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e22e249c3fec3e21e21505abd811e2cf67ec5366
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 8 15:13:27 2017 +0000

    ASN.1: check for error from ASN1_OP_END__ACT actions
    
    commit 81a7be2cd69b412ab6aeacfe5ebf1bb6e5bce955 upstream.
    
    asn1_ber_decoder() was ignoring errors from actions associated with the
    opcodes ASN1_OP_END_SEQ_ACT, ASN1_OP_END_SET_ACT,
    ASN1_OP_END_SEQ_OF_ACT, and ASN1_OP_END_SET_OF_ACT.  In practice, this
    meant the pkcs7_note_signed_info() action (since that was the only user
    of those opcodes).  Fix it by checking for the error, just like the
    decoder does for actions associated with the other opcodes.
    
    This bug allowed users to leak slab memory by repeatedly trying to add a
    specially crafted "pkcs7_test" key (requires CONFIG_PKCS7_TEST_KEY).
    
    In theory, this bug could also be used to bypass module signature
    verification, by providing a PKCS#7 message that is misparsed such that
    a signature's ->authattrs do not contain its ->msgdigest.  But it
    doesn't seem practical in normal cases, due to restrictions on the
    format of the ->authattrs.
    
    Fixes: 42d5ec27f873 ("X.509: Add an ASN.1 decoder")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7ae23b9c5c7ec75977bfb70132c925f8ccbb3b07
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 8 15:13:27 2017 +0000

    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>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    [bwh: Backported to 3.16: drop ASN1_OP_{COND_,}MATCH_ANY_{ACT_,}OR_SKIP cases]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7db36cf42bfd47fd2741d2366d5fdc9aa553dc69
Author: Martin Kelly <mkelly@xevo.com>
Date:   Tue Dec 5 11:15:50 2017 -0800

    can: usb_8dev: cancel urb on -EPIPE and -EPROTO
    
    commit 12147edc434c9e4c7c2f5fee2e5519b2e5ac34ce upstream.
    
    In mcba_usb, we have observed that when you unplug the device, the driver will
    endlessly resubmit failing URBs, which can cause CPU stalls. This issue
    is fixed in mcba_usb by catching the codes seen on device disconnect
    (-EPIPE and -EPROTO).
    
    This driver also resubmits in the case of -EPIPE and -EPROTO, so fix it
    in the same way.
    
    Signed-off-by: Martin Kelly <mkelly@xevo.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2b59e0077e30b75815d31ea6a06fee40cee5a4e4
Author: Martin Kelly <mkelly@xevo.com>
Date:   Tue Dec 5 11:15:49 2017 -0800

    can: kvaser_usb: cancel urb on -EPIPE and -EPROTO
    
    commit 6aa8d5945502baf4687d80de59b7ac865e9e666b upstream.
    
    In mcba_usb, we have observed that when you unplug the device, the driver will
    endlessly resubmit failing URBs, which can cause CPU stalls. This issue
    is fixed in mcba_usb by catching the codes seen on device disconnect
    (-EPIPE and -EPROTO).
    
    This driver also resubmits in the case of -EPIPE and -EPROTO, so fix it
    in the same way.
    
    Signed-off-by: Martin Kelly <mkelly@xevo.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit df2e35e13cfdd046e8f133da6184dda21511a179
Author: Martin Kelly <mkelly@xevo.com>
Date:   Tue Dec 5 11:15:48 2017 -0800

    can: esd_usb2: cancel urb on -EPIPE and -EPROTO
    
    commit 7a31ced3de06e9878e4f9c3abe8f87d9344d8144 upstream.
    
    In mcba_usb, we have observed that when you unplug the device, the driver will
    endlessly resubmit failing URBs, which can cause CPU stalls. This issue
    is fixed in mcba_usb by catching the codes seen on device disconnect
    (-EPIPE and -EPROTO).
    
    This driver also resubmits in the case of -EPIPE and -EPROTO, so fix it
    in the same way.
    
    Signed-off-by: Martin Kelly <mkelly@xevo.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bf1d2a01effeb381e8812e3394247ed811886ee6
Author: Martin Kelly <mkelly@xevo.com>
Date:   Tue Dec 5 11:15:47 2017 -0800

    can: ems_usb: cancel urb on -EPIPE and -EPROTO
    
    commit bd352e1adfe0d02d3ea7c8e3fb19183dc317e679 upstream.
    
    In mcba_usb, we have observed that when you unplug the device, the driver will
    endlessly resubmit failing URBs, which can cause CPU stalls. This issue
    is fixed in mcba_usb by catching the codes seen on device disconnect
    (-EPIPE and -EPROTO).
    
    This driver also resubmits in the case of -EPIPE and -EPROTO, so fix it
    in the same way.
    
    Signed-off-by: Martin Kelly <mkelly@xevo.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit eee038bc5fd3de97052443acd29cb638c236f9d3
Author: Tobias Jordan <Tobias.Jordan@elektrobit.com>
Date:   Wed Dec 6 15:23:23 2017 +0100

    net: mvmdio: disable/unprepare clocks in EPROBE_DEFER case
    
    commit 589bf32f09852041fbd3b7ce1a9e703f95c230ba upstream.
    
    add appropriate calls to clk_disable_unprepare() by jumping to out_mdio
    in case orion_mdio_probe() returns -EPROBE_DEFER.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Fixes: 3d604da1e954 ("net: mvmdio: get and enable optional clock")
    Signed-off-by: Tobias Jordan <Tobias.Jordan@elektrobit.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 12878d02938dc2fb2fca8c962c5d29379a9491cf
Author: Nikolay Borisov <nborisov@suse.com>
Date:   Fri Dec 1 11:19:42 2017 +0200

    btrfs: Fix possible off-by-one in btrfs_search_path_in_tree
    
    commit c8bcbfbd239ed60a6562964b58034ac8a25f4c31 upstream.
    
    The name char array passed to btrfs_search_path_in_tree is of size
    BTRFS_INO_LOOKUP_PATH_MAX (4080). So the actual accessible char indexes
    are in the range of [0, 4079]. Currently the code uses the define but this
    represents an off-by-one.
    
    Implications:
    
    Size of btrfs_ioctl_ino_lookup_args is 4096, so the new byte will be
    written to extra space, not some padding that could be provided by the
    allocator.
    
    btrfs-progs store the arguments on stack, but kernel does own copy of
    the ioctl buffer and the off-by-one overwrite does not affect userspace,
    but the ending 0 might be lost.
    
    Kernel ioctl buffer is allocated dynamically so we're overwriting
    somebody else's memory, and the ioctl is privileged if args.objectid is
    not 256. Which is in most cases, but resolving a subvolume stored in
    another directory will trigger that path.
    
    Before this patch the buffer was one byte larger, but then the -1 was
    not added.
    
    Fixes: ac8e9819d71f907 ("Btrfs: add search and inode lookup ioctls")
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    [ added implications ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 97d4c0175aabce1449305d001f3541c83d7a5dbb
Author: Omar Sandoval <osandov@fb.com>
Date:   Tue Dec 5 22:54:02 2017 -0800

    Btrfs: disable FUA if mounted with nobarrier
    
    commit 1b9e619c5bc8235cfba3dc4ced2fb0e3554a05d4 upstream.
    
    I was seeing disk flushes still happening when I mounted a Btrfs
    filesystem with nobarrier for testing. This is because we use FUA to
    write out the first super block, and on devices without FUA support, the
    block layer translates FUA to a flush. Even on devices supporting true
    FUA, using FUA when we asked for no barriers is surprising.
    
    Fixes: 387125fc722a8ed ("Btrfs: fix barrier flushes")
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.16:
     - I/O flag names are different, and are combined with the operation type
     - Use the do_barrier parameter instead of checking the NOBARRIER option again]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2434703bd2315913baf7a25c87f13684630fabbe
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Mon Dec 4 13:11:45 2017 -0500

    btrfs: fix missing error return in btrfs_drop_snapshot
    
    commit e19182c0fff451e3744c1107d98f072e7ca377a0 upstream.
    
    If btrfs_del_root fails in btrfs_drop_snapshot, we'll pick up the
    error but then return 0 anyway due to mixing err and ret.
    
    Fixes: 79787eaab4612 ("btrfs: replace many BUG_ONs with proper error handling")
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d7fe290b7e7b3a60b2df304086452e9a2637840e
Author: Daniel Thompson <daniel.thompson@linaro.org>
Date:   Mon Mar 2 14:13:36 2015 +0000

    kdb: Fix handling of kallsyms_symbol_next() return value
    
    commit c07d35338081d107e57cf37572d8cc931a8e32e2 upstream.
    
    kallsyms_symbol_next() returns a boolean (true on success). Currently
    kdb_read() tests the return value with an inequality that
    unconditionally evaluates to true.
    
    This is fixed in the obvious way and, since the conditional branch is
    supposed to be unreachable, we also add a WARN_ON().
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9a9c97f48d8da029fde73eeeea9532aa12d36b4c
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 6 09:50:08 2017 +0000

    efi: Move some sysfs files to be read-only by root
    
    commit af97a77bc01ce49a466f9d4c0125479e2e2230b6 upstream.
    
    Thanks to the scripts/leaking_addresses.pl script, it was found that
    some EFI values should not be readable by non-root users.
    
    So make them root-only, and to do that, add a __ATTR_RO_MODE() macro to
    make this easier, and use it in other places at the same time.
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Tested-by: Dave Young <dyoung@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20171206095010.24170-2-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.16: drop changes in esrt.c]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0b6433856a149885470f2ab3a138e99347c323a4
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Tue Dec 5 14:56:42 2017 +0000

    arm64: fpsimd: Prevent registers leaking from dead tasks
    
    commit 071b6d4a5d343046f253a5a8835d477d93992002 upstream.
    
    Currently, loading of a task's fpsimd state into the CPU registers
    is skipped if that task's state is already present in the registers
    of that CPU.
    
    However, the code relies on the struct fpsimd_state * (and by
    extension struct task_struct *) to unambiguously identify a task.
    
    There is a particular case in which this doesn't work reliably:
    when a task exits, its task_struct may be recycled to describe a
    new task.
    
    Consider the following scenario:
    
     1) Task P loads its fpsimd state onto cpu C.
            per_cpu(fpsimd_last_state, C) := P;
            P->thread.fpsimd_state.cpu := C;
    
     2) Task X is scheduled onto C and loads its fpsimd state on C.
            per_cpu(fpsimd_last_state, C) := X;
            X->thread.fpsimd_state.cpu := C;
    
     3) X exits, causing X's task_struct to be freed.
    
     4) P forks a new child T, which obtains X's recycled task_struct.
            T == X.
            T->thread.fpsimd_state.cpu == C (inherited from P).
    
     5) T is scheduled on C.
            T's fpsimd state is not loaded, because
            per_cpu(fpsimd_last_state, C) == T (== X) &&
            T->thread.fpsimd_state.cpu == C.
    
            (This is the check performed by fpsimd_thread_switch().)
    
    So, T gets X's registers because the last registers loaded onto C
    were those of X, in (2).
    
    This patch fixes the problem by ensuring that the sched-in check
    fails in (5): fpsimd_flush_task_state(T) is called when T is
    forked, so that T->thread.fpsimd_state.cpu == C cannot be true.
    This relies on the fact that T is not schedulable until after
    copy_thread() completes.
    
    Once T's fpsimd state has been loaded on some CPU C there may still
    be other cpus D for which per_cpu(fpsimd_last_state, D) ==
    &X->thread.fpsimd_state.  But D is necessarily != C in this case,
    and the check in (5) must fail.
    
    An alternative fix would be to do refcounting on task_struct.  This
    would result in each CPU holding a reference to the last task whose
    fpsimd state was loaded there.  It's not clear whether this is
    preferable, and it involves higher overhead than the fix proposed
    in this patch.  It would also move all the task_struct freeing
    work into the context switch critical section, or otherwise some
    deferred cleanup mechanism would need to be introduced, neither of
    which seems obviously justified.
    
    Fixes: 005f78cd8849 ("arm64: defer reloading a task's FPSIMD state to userland resume")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    [will: word-smithed the comment so it makes more sense]
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7ead2bee0dd7b8719bd867e58f0dd8e5ff10297c
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Dec 1 15:08:12 2017 +0100

    x86/PCI: Make broadcom_postcore_init() check acpi_disabled
    
    commit ddec3bdee05b06f1dda20ded003c3e10e4184cab upstream.
    
    acpi_os_get_root_pointer() may return a valid address even if acpi_disabled
    is set, but the host bridge information from the ACPI tables is not going
    to be used in that case and the Broadcom host bridge initialization should
    not be skipped then, So make broadcom_postcore_init() check acpi_disabled
    too to avoid this issue.
    
    Fixes: 6361d72b04d1 (x86/PCI: read Broadcom CNB20LE host bridge info before PCI scan)
    Reported-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Linux PCI <linux-pci@vger.kernel.org>
    Link: https://lkml.kernel.org/r/3186627.pxZj1QbYNg@aspire.rjw.lan
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit da7bce9e41266e17c98a997c154cb126a7ed8e98
Author: Robb Glasser <rglasser@google.com>
Date:   Tue Dec 5 09:16:55 2017 -0800

    ALSA: pcm: prevent UAF in snd_pcm_info
    
    commit 362bca57f5d78220f8b5907b875961af9436e229 upstream.
    
    When the device descriptor is closed, the `substream->runtime` pointer
    is freed. But another thread may be in the ioctl handler, case
    SNDRV_CTL_IOCTL_PCM_INFO. This case calls snd_pcm_info_user() which
    calls snd_pcm_info() which accesses the now freed `substream->runtime`.
    
    Note: this fixes CVE-2017-0861
    
    Signed-off-by: Robb Glasser <rglasser@google.com>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 94610f7d8508a161105a53f6fb34145af180a667
Author: Nogah Frankel <nogahf@mellanox.com>
Date:   Mon Dec 4 13:31:11 2017 +0200

    net_sched: red: Avoid illegal values
    
    commit 8afa10cbe281b10371fee5a87ab266e48d71a7f9 upstream.
    
    Check the qmin & qmax values doesn't overflow for the given Wlog value.
    Check that qmin <= qmax.
    
    Fixes: a783474591f2 ("[PKT_SCHED]: Generic RED layer")
    Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e45719379ab686bc5fb0999469a7a4a718eeb117
Author: Nogah Frankel <nogahf@mellanox.com>
Date:   Mon Dec 4 13:31:10 2017 +0200

    net_sched: red: Avoid devision by zero
    
    commit 5c472203421ab4f928aa1ae9e1dbcfdd80324148 upstream.
    
    Do not allow delta value to be zero since it is used as a divisor.
    
    Fixes: 8af2a218de38 ("sch_red: Adaptative RED AQM")
    Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c9007a1fc9fa5b383ed5da93552a056eaa1f0ac6
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Mon Nov 20 12:38:44 2017 +0100

    s390: always save and restore all registers on context switch
    
    commit fbbd7f1a51965b50dd12924841da0d478f3da71b upstream.
    
    The switch_to() macro has an optimization to avoid saving and
    restoring register contents that aren't needed for kernel threads.
    
    There is however the possibility that a kernel thread execve's a user
    space program. In such a case the execve'd process can partially see
    the contents of the previous process, which shouldn't be allowed.
    
    To avoid this, simply always save and restore register contents on
    context switch.
    
    Fixes: fdb6d070effba ("switch_to: dont restore/save access & fpu regs for kernel threads")
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    [bwh: Backported to 3.16:
     - The save/restore functions are different here
     - FP restore is non-lazy, so drop the comment about it being lazy]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 470238acca53dcb69dd28aedafb19fcc6868079b
Author: monty_pavel@sina.com <monty_pavel@sina.com>
Date:   Sat Nov 25 01:43:50 2017 +0800

    dm: fix various targets to dm_register_target after module __init resources created
    
    commit 7e6358d244e4706fe612a77b9c36519a33600ac0 upstream.
    
    A NULL pointer is seen if two concurrent "vgchange -ay -K <vg name>"
    processes race to load the dm-thin-pool module:
    
     PID: 25992 TASK: ffff883cd7d23500 CPU: 4 COMMAND: "vgchange"
      #0 [ffff883cd743d600] machine_kexec at ffffffff81038fa9
      0000001 [ffff883cd743d660] crash_kexec at ffffffff810c5992
      0000002 [ffff883cd743d730] oops_end at ffffffff81515c90
      0000003 [ffff883cd743d760] no_context at ffffffff81049f1b
      0000004 [ffff883cd743d7b0] __bad_area_nosemaphore at ffffffff8104a1a5
      0000005 [ffff883cd743d800] bad_area at ffffffff8104a2ce
      0000006 [ffff883cd743d830] __do_page_fault at ffffffff8104aa6f
      0000007 [ffff883cd743d950] do_page_fault at ffffffff81517bae
      0000008 [ffff883cd743d980] page_fault at ffffffff81514f95
         [exception RIP: kmem_cache_alloc+108]
         RIP: ffffffff8116ef3c RSP: ffff883cd743da38 RFLAGS: 00010046
         RAX: 0000000000000004 RBX: ffffffff81121b90 RCX: ffff881bf1e78cc0
         RDX: 0000000000000000 RSI: 00000000000000d0 RDI: 0000000000000000
         RBP: ffff883cd743da68 R8: ffff881bf1a4eb00 R9: 0000000080042000
         R10: 0000000000002000 R11: 0000000000000000 R12: 00000000000000d0
         R13: 0000000000000000 R14: 00000000000000d0 R15: 0000000000000246
         ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
      0000009 [ffff883cd743da70] mempool_alloc_slab at ffffffff81121ba5
     0000010 [ffff883cd743da80] mempool_create_node at ffffffff81122083
     0000011 [ffff883cd743dad0] mempool_create at ffffffff811220f4
     0000012 [ffff883cd743dae0] pool_ctr at ffffffffa08de049 [dm_thin_pool]
     0000013 [ffff883cd743dbd0] dm_table_add_target at ffffffffa0005f2f [dm_mod]
     0000014 [ffff883cd743dc30] table_load at ffffffffa0008ba9 [dm_mod]
     0000015 [ffff883cd743dc90] ctl_ioctl at ffffffffa0009dc4 [dm_mod]
    
    The race results in a NULL pointer because:
    
    Process A (vgchange -ay -K):
            a. send DM_LIST_VERSIONS_CMD ioctl;
            b. pool_target not registered;
            c. modprobe dm_thin_pool and wait until end.
    
    Process B (vgchange -ay -K):
            a. send DM_LIST_VERSIONS_CMD ioctl;
            b. pool_target registered;
            c. table_load->dm_table_add_target->pool_ctr;
            d. _new_mapping_cache is NULL and panic.
    Note:
            1. process A and process B are two concurrent processes.
            2. pool_target can be detected by process B but
            _new_mapping_cache initialization has not ended.
    
    To fix dm-thin-pool, and other targets (cache, multipath, and snapshot)
    with the same problem, simply dm_register_target() after all resources
    created during module init (as labelled with __init) are finished.
    
    Signed-off-by: monty <monty_pavel@sina.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit eeb795ba15817d485b077859531c33a5eadae0d5
Author: Johannes Thumshirn <morbidrsa@gmail.com>
Date:   Sun Jan 11 12:45:23 2015 +0100

    dm mpath: simplify failure path of dm_multipath_init()
    
    commit ff658e9c1aae9a84dd06d46f847dc0cd2bf0dd11 upstream.
    
    Currently the cleanup of all error cases are open-coded.  Introduce a
    common exit path and labels.
    
    Signed-off-by: Johannes Thumshirn <morbidrsa@gmail.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 98185bc25738120fc9b5855b13de84345f175b5f
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sun Dec 3 11:26:45 2017 +0100

    batman-adv: Fix lock for ogm cnt access in batadv_iv_ogm_calc_tq
    
    commit 5ba7dcfe77037b67016263ea597a8b431692ecab upstream.
    
    The originator node object orig_neigh_node is used to when accessing the
    bcast_own(_sum) and real_packet_count information. The access to them has
    to be protected with the spinlock in orig_neigh_node.
    
    But the function uses the lock in orig_node instead. This is incorrect
    because they could be two different originator node objects.
    
    Fixes: 0ede9f41b217 ("batman-adv: protect bit operations to count OGMs with spinlock")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0908ad59504f7a767dd40ec84025b1308dd976e8
Author: Jann Horn <jannh@google.com>
Date:   Fri Dec 1 01:46:07 2017 +0100

    netfilter: xt_bpf: add overflow checks
    
    commit 6ab405114b0b229151ef06f4e31c7834dd09d0c0 upstream.
    
    Check whether inputs from userspace are too long (explicit length field too
    big or string not null-terminated) to avoid out-of-bounds reads.
    
    As far as I can tell, this can at worst lead to very limited kernel heap
    memory disclosure or oopses.
    
    This bug can be triggered by an unprivileged user even if the xt_bpf module
    is not loaded: iptables is available in network namespaces, and the xt_bpf
    module can be autoloaded.
    
    Triggering the bug with a classic BPF filter with fake length 0x1000 causes
    the following KASAN report:
    
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in bpf_prog_create+0x84/0xf0
    Read of size 32768 at addr ffff8801eff2c494 by task test/4627
    
    CPU: 0 PID: 4627 Comm: test Not tainted 4.15.0-rc1+ #1
    [...]
    Call Trace:
     dump_stack+0x5c/0x85
     print_address_description+0x6a/0x260
     kasan_report+0x254/0x370
     ? bpf_prog_create+0x84/0xf0
     memcpy+0x1f/0x50
     bpf_prog_create+0x84/0xf0
     bpf_mt_check+0x90/0xd6 [xt_bpf]
    [...]
    Allocated by task 4627:
     kasan_kmalloc+0xa0/0xd0
     __kmalloc_node+0x47/0x60
     xt_alloc_table_info+0x41/0x70 [x_tables]
    [...]
    The buggy address belongs to the object at ffff8801eff2c3c0
                    which belongs to the cache kmalloc-2048 of size 2048
    The buggy address is located 212 bytes inside of
                    2048-byte region [ffff8801eff2c3c0, ffff8801eff2cbc0)
    [...]
    ==================================================================
    
    Fixes: e6f30c731718 ("netfilter: x_tables: add xt_bpf match")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    [bwh: Backported to 3.16:
     - Add len variable in bpf_mt_check()
     - Drop change in __bpf_mt_check_path()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6b7ee440f351ccd37b62ba0ae01a29c63adf2db3
Author: Jaejoong Kim <climbbb.kim@gmail.com>
Date:   Mon Dec 4 15:31:49 2017 +0900

    ALSA: usb-audio: Add check return value for usb_string()
    
    commit 89b89d121ffcf8d9546633b98ded9d18b8f75891 upstream.
    
    snd_usb_copy_string_desc() returns zero if usb_string() fails.
    In case of failure, we need to check the snd_usb_copy_string_desc()'s
    return value and add an exception case
    
    Signed-off-by: Jaejoong Kim <climbbb.kim@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f2e49dfd37188d92f74d16ee063e2f19dbedad22
Author: Jaejoong Kim <climbbb.kim@gmail.com>
Date:   Mon Dec 4 15:31:48 2017 +0900

    ALSA: usb-audio: Fix out-of-bound error
    
    commit 251552a2b0d454badc8f486e6d79100970c744b0 upstream.
    
    The snd_usb_copy_string_desc() retrieves the usb string corresponding to
    the index number through the usb_string(). The problem is that the
    usb_string() returns the length of the string (>= 0) when successful, but
    it can also return a negative value about the error case or status of
    usb_control_msg().
    
    If iClockSource is '0' as shown below, usb_string() will returns -EINVAL.
    This will result in '0' being inserted into buf[-22], and the following
    KASAN out-of-bound error message will be output.
    
    AudioControl Interface Descriptor:
      bLength                 8
      bDescriptorType        36
      bDescriptorSubtype     10 (CLOCK_SOURCE)
      bClockID                1
      bmAttributes         0x07 Internal programmable Clock (synced to SOF)
      bmControls           0x07
      Clock Frequency Control (read/write)
      Clock Validity Control (read-only)
      bAssocTerminal          0
      iClockSource            0
    
    To fix it, check usb_string()'return value and bail out.
    
    ==================================================================
    BUG: KASAN: stack-out-of-bounds in parse_audio_unit+0x1327/0x1960 [snd_usb_audio]
    Write of size 1 at addr ffff88007e66735a by task systemd-udevd/18376
    
    CPU: 0 PID: 18376 Comm: systemd-udevd Not tainted 4.13.0+ #3
    Hardware name: LG Electronics                   15N540-RFLGL/White Tip Mountain, BIOS 15N5
    Call Trace:
    dump_stack+0x63/0x8d
    print_address_description+0x70/0x290
    ? parse_audio_unit+0x1327/0x1960 [snd_usb_audio]
    kasan_report+0x265/0x350
    __asan_store1+0x4a/0x50
    parse_audio_unit+0x1327/0x1960 [snd_usb_audio]
    ? save_stack+0xb5/0xd0
    ? save_stack_trace+0x1b/0x20
    ? save_stack+0x46/0xd0
    ? kasan_kmalloc+0xad/0xe0
    ? kmem_cache_alloc_trace+0xff/0x230
    ? snd_usb_create_mixer+0xb0/0x4b0 [snd_usb_audio]
    ? usb_audio_probe+0x4de/0xf40 [snd_usb_audio]
    ? usb_probe_interface+0x1f5/0x440
    ? driver_probe_device+0x3ed/0x660
    ? build_feature_ctl+0xb10/0xb10 [snd_usb_audio]
    ? save_stack_trace+0x1b/0x20
    ? init_object+0x69/0xa0
    ? snd_usb_find_csint_desc+0xa8/0xf0 [snd_usb_audio]
    snd_usb_mixer_controls+0x1dc/0x370 [snd_usb_audio]
    ? build_audio_procunit+0x890/0x890 [snd_usb_audio]
    ? snd_usb_create_mixer+0xb0/0x4b0 [snd_usb_audio]
    ? kmem_cache_alloc_trace+0xff/0x230
    ? usb_ifnum_to_if+0xbd/0xf0
    snd_usb_create_mixer+0x25b/0x4b0 [snd_usb_audio]
    ? snd_usb_create_stream+0x255/0x2c0 [snd_usb_audio]
    usb_audio_probe+0x4de/0xf40 [snd_usb_audio]
    ? snd_usb_autosuspend.part.7+0x30/0x30 [snd_usb_audio]
    ? __pm_runtime_idle+0x90/0x90
    ? kernfs_activate+0xa6/0xc0
    ? usb_match_one_id_intf+0xdc/0x130
    ? __pm_runtime_set_status+0x2d4/0x450
    usb_probe_interface+0x1f5/0x440
    
    Signed-off-by: Jaejoong Kim <climbbb.kim@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit db2c4a958ca5fb981c8c327ceb48d2e2ad3357bc
Author: Eryu Guan <eguan@redhat.com>
Date:   Sun Dec 3 22:52:51 2017 -0500

    ext4: fix fdatasync(2) after fallocate(2) operation
    
    commit c894aa97577e47d3066b27b32499ecf899bfa8b0 upstream.
    
    Currently, fallocate(2) with KEEP_SIZE followed by a fdatasync(2)
    then crash, we'll see wrong allocated block number (stat -c %b), the
    blocks allocated beyond EOF are all lost. fstests generic/468
    exposes this bug.
    
    Commit 67a7d5f561f4 ("ext4: fix fdatasync(2) after extent
    manipulation operations") fixed all the other extent manipulation
    operation paths such as hole punch, zero range, collapse range etc.,
    but forgot the fallocate case.
    
    So similarly, fix it by recording the correct journal tid in ext4
    inode in fallocate(2) path, so that ext4_sync_file() will wait for
    the right tid to be committed on fdatasync(2).
    
    This addresses the test failure in xfstests test generic/468.
    
    Signed-off-by: Eryu Guan <eguan@redhat.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e6559edfb21cfbbf01ea17fe219a678290e0fea6
Author: Yu Chen <chenyu56@huawei.com>
Date:   Fri Dec 1 13:41:20 2017 +0200

    usb: xhci: fix panic in xhci_free_virt_devices_depth_first
    
    commit 80e457699a8dbdd70f2d26911e46f538645c55fc upstream.
    
    Check vdev->real_port 0 to avoid panic
    [    9.261347] [<ffffff800884a390>] xhci_free_virt_devices_depth_first+0x58/0x108
    [    9.261352] [<ffffff800884a814>] xhci_mem_cleanup+0x1bc/0x570
    [    9.261355] [<ffffff8008842de8>] xhci_stop+0x140/0x1c8
    [    9.261365] [<ffffff80087ed304>] usb_remove_hcd+0xfc/0x1d0
    [    9.261369] [<ffffff80088551c4>] xhci_plat_remove+0x6c/0xa8
    [    9.261377] [<ffffff80086e928c>] platform_drv_remove+0x2c/0x70
    [    9.261384] [<ffffff80086e6ea0>] __device_release_driver+0x80/0x108
    [    9.261387] [<ffffff80086e7a1c>] device_release_driver+0x2c/0x40
    [    9.261392] [<ffffff80086e5f28>] bus_remove_device+0xe0/0x120
    [    9.261396] [<ffffff80086e2e34>] device_del+0x114/0x210
    [    9.261399] [<ffffff80086e9e00>] platform_device_del+0x30/0xa0
    [    9.261403] [<ffffff8008810bdc>] dwc3_otg_work+0x204/0x488
    [    9.261407] [<ffffff80088133fc>] event_work+0x304/0x5b8
    [    9.261414] [<ffffff80080e31b0>] process_one_work+0x148/0x490
    [    9.261417] [<ffffff80080e3548>] worker_thread+0x50/0x4a0
    [    9.261421] [<ffffff80080e9ea0>] kthread+0xe8/0x100
    [    9.261427] [<ffffff8008083680>] ret_from_fork+0x10/0x50
    
    The problem can occur if xhci_plat_remove() is called shortly after
    xhci_plat_probe(). While xhci_free_virt_devices_depth_first been
    called before the device has been setup and get real_port initialized.
    The problem occurred on Hikey960 and was reproduced by Guenter Roeck
    on Kevin with chromeos-4.4.
    
    Fixes: ee8665e28e8d ("xhci: free xhci virtual devices with leaf nodes first")
    Cc: Guenter Roeck <groeck@google.com>
    Reviewed-by: Guenter Roeck <groeck@chromium.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Fan Ning <fanning4@hisilicon.com>
    Signed-off-by: Li Rui <lirui39@hisilicon.com>
    Signed-off-by: yangdi <yangdi10@hisilicon.com>
    Signed-off-by: Yu Chen <chenyu56@huawei.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d7779d0210fc1c981262331eba02295d71d7d71e
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Dec 1 13:41:19 2017 +0200

    xhci: Don't show incorrect WARN message about events for empty rings
    
    commit e4ec40ec4b260efcca15089de4285a0a3411259b upstream.
    
    xHC can generate two events for a short transfer if the short TRB and
    last TRB in the TD are not the same TRB.
    
    The driver will handle the TD after the first short event, and remove
    it from its internal list. Driver then incorrectly prints a warning
    for the second event:
    
    "WARN Event TRB for slot x ep y with no TDs queued"
    
    Fix this by not printing a warning if we get a event on a empty list
    if the previous event was a short event.
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 85c249d616c94c05947d26c095f739e880fb18b5
Author: weiping zhang <zwp10758@gmail.com>
Date:   Wed Nov 29 09:23:01 2017 +0800

    virtio: release virtio index when fail to device_register
    
    commit e60ea67bb60459b95a50a156296041a13e0e380e upstream.
    
    index can be reused by other virtio device.
    
    Signed-off-by: weiping zhang <zhangweiping@didichuxing.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d0a8192025f18d2ed07bebf4c051cfee30629458
Author: Oliver Stäbler <oliver.staebler@bytesatwork.ch>
Date:   Mon Nov 20 14:45:15 2017 +0100

    can: ti_hecc: Fix napi poll return value for repoll
    
    commit f6c23b174c3c96616514827407769cbcfc8005cf upstream.
    
    After commit d75b1ade567f ("net: less interrupt masking in NAPI") napi
    repoll is done only when work_done == budget.
    So we need to return budget if there are still packets to receive.
    
    Signed-off-by: Oliver Stäbler <oliver.staebler@bytesatwork.ch>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dbe538bb9a13f03fce3bb829160b89110ad93147
Author: Jimmy Assarsson <jimmyassarsson@gmail.com>
Date:   Tue Nov 21 08:22:28 2017 +0100

    can: kvaser_usb: ratelimit errors if incomplete messages are received
    
    commit 8bd13bd522ff7dfa0eb371921aeb417155f7a3be upstream.
    
    Avoid flooding the kernel log with "Formate error", if incomplete message
    are received.
    
    Signed-off-by: Jimmy Assarsson <jimmyassarsson@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 25a632f8edd0b9e6787b80154288b1c46fea481c
Author: Jimmy Assarsson <jimmyassarsson@gmail.com>
Date:   Tue Nov 21 08:22:27 2017 +0100

    can: kvaser_usb: Fix comparison bug in kvaser_usb_read_bulk_callback()
    
    commit e84f44eb5523401faeb9cc1c97895b68e3cfb78d upstream.
    
    The conditon in the while-loop becomes true when actual_length is less than
    2 (MSG_HEADER_LEN). In best case we end up with a former, already
    dispatched msg, that got msg->len greater than actual_length. This will
    result in a "Format error" error printout.
    
    Problem seen when unplugging a Kvaser USB device connected to a vbox guest.
    
    warning: comparison between signed and unsigned integer expressions
    [-Wsign-compare]
    
    Signed-off-by: Jimmy Assarsson <jimmyassarsson@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2b4c52d8d33dc6bad8935fbb195e0e54b796eb73
Author: Jimmy Assarsson <jimmyassarsson@gmail.com>
Date:   Tue Nov 21 08:22:26 2017 +0100

    can: kvaser_usb: free buf in error paths
    
    commit 435019b48033138581a6171093b181fc6b4d3d30 upstream.
    
    The allocated buffer was not freed if usb_submit_urb() failed.
    
    Signed-off-by: Jimmy Assarsson <jimmyassarsson@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 04357dedfebf5691b38a2c2b2b711269ccc8530d
Author: Laurent Caumont <lcaumont2@gmail.com>
Date:   Sat Nov 11 12:44:46 2017 -0500

    media: dvb: i2c transfers over usb cannot be done from stack
    
    commit 6d33377f2abbf9f0e561b116dd468d1c3ff36a6a upstream.
    
    Signed-off-by: Laurent Caumont <lcaumont2@gmail.com>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 02c4040670d19df4992512a63954a64a58a31b17
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Nov 30 10:08:28 2017 +0100

    ALSA: seq: Remove spurious WARN_ON() at timer check
    
    commit 43a3542870328601be02fcc9d27b09db467336ef upstream.
    
    The use of snd_BUG_ON() in ALSA sequencer timer may lead to a spurious
    WARN_ON() when a slave timer is deployed as its backend and a
    corresponding master timer stops meanwhile.  The symptom was triggered
    by syzkaller spontaneously.
    
    Since the NULL timer is valid there, rip off snd_BUG_ON().
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 96e1f2f0a52aa4999983d736c3ce49fe8ae0497d
Author: Johan Hovold <johan@kernel.org>
Date:   Sat Nov 11 16:38:44 2017 +0100

    mfd: twl6040: Fix child-node lookup
    
    commit 85e9b13cbb130a3209f21bd7933933399c389ffe upstream.
    
    Fix child-node lookup during probe, which 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 node was prematurely freed, while the
    child node was leaked.
    
    Note that the CONFIG_OF compile guard can be removed as
    of_get_child_by_name() provides a !CONFIG_OF implementation which always
    fails.
    
    Fixes: 37e13cecaa14 ("mfd: Add support for Device Tree to twl6040")
    Fixes: ca2cad6ae38e ("mfd: Fix twl6040 build failure")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5d5c96e545d5cfb16a9fc65653962d2cf20ec25f
Author: Johan Hovold <johan@kernel.org>
Date:   Sat Nov 11 16:38:43 2017 +0100

    mfd: twl4030-audio: Fix sibling-node lookup
    
    commit 0a423772de2f3d7b00899987884f62f63ae00dcb upstream.
    
    A helper purported to look up a child node based on its name was using
    the wrong of-helper and ended up prematurely freeing the parent of-node
    while leaking any matching node.
    
    To make things worse, any matching node would not even necessarily be a
    child node as the whole device tree was searched depth-first starting at
    the parent.
    
    Fixes: 019a7e6b7b31 ("mfd: twl4030-audio: Add DT support")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 01cb37b9380bca03d92f80a638377925c14599eb
Author: Jon Hunter <jonathanh@nvidia.com>
Date:   Tue Nov 14 14:43:27 2017 +0000

    mfd: cros ec: spi: Don't send first message too soon
    
    commit 15d8374874ded0bec37ef27f8301a6d54032c0e5 upstream.
    
    On the Tegra124 Nyan-Big chromebook the very first SPI message sent to
    the EC is failing.
    
    The Tegra SPI driver configures the SPI chip-selects to be active-high
    by default (and always has for many years). The EC SPI requires an
    active-low chip-select and so the Tegra chip-select is reconfigured to
    be active-low when the EC SPI driver calls spi_setup(). The problem is
    that if the first SPI message to the EC is sent too soon after
    reconfiguring the SPI chip-select, it fails.
    
    The EC SPI driver prevents back-to-back SPI messages being sent too
    soon by keeping track of the time the last transfer was sent via the
    variable 'last_transfer_ns'. To prevent the very first transfer being
    sent too soon, initialise the 'last_transfer_ns' variable after calling
    spi_setup() and before sending the first SPI message.
    
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Acked-by: Benson Leung <bleung@chromium.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    [bwh: Backported to 3.16: use ktime_get_ts() and timespec_to_ns()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 94c2ab5a14372b8c0d2cfe9ff54833989c701229
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Wed Nov 29 22:34:50 2017 +0900

    quota: Check for register_shrinker() failure.
    
    commit 88bc0ede8d35edc969350852894dc864a2dc1859 upstream.
    
    register_shrinker() might return -ENOMEM error since Linux 3.12.
    Call panic() as with other failure checks in this function if
    register_shrinker() failed.
    
    Fixes: 1d3d4437eae1 ("vmscan: per-node deferred work")
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Jan Kara <jack@suse.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f7f83b90a0eb5a15480334a3e4e911101e1b2573
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Thu Nov 16 17:58:21 2017 +0000

    arm: KVM: Fix VTTBR_BADDR_MASK BUG_ON off-by-one
    
    commit 5553b142be11e794ebc0805950b2e8313f93d718 upstream.
    
    VTTBR_BADDR_MASK is used to sanity check the size and alignment of the
    VTTBR address. It seems to currently be off by one, thereby only
    allowing up to 39-bit addresses (instead of 40-bit) and also
    insufficiently checking the alignment. This patch fixes it.
    
    This patch is the 32bit pendent of Kristina's arm64 fix, and
    she deserves the actual kudos for pinpointing that one.
    
    Fixes: f7ed45be3ba52 ("KVM: ARM: World-switch implementation")
    Reported-by: Kristina Martsenko <kristina.martsenko@arm.com>
    Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a6c4f9aa4677c64b9db05db15ffa26c6df15d802
Author: Kristina Martsenko <kristina.martsenko@arm.com>
Date:   Thu Nov 16 17:58:20 2017 +0000

    arm64: KVM: fix VTTBR_BADDR_MASK BUG_ON off-by-one
    
    commit 26aa7b3b1c0fb3f1a6176a0c1847204ef4355693 upstream.
    
    VTTBR_BADDR_MASK is used to sanity check the size and alignment of the
    VTTBR address. It seems to currently be off by one, thereby only
    allowing up to 47-bit addresses (instead of 48-bit) and also
    insufficiently checking the alignment. This patch fixes it.
    
    As an example, with 4k pages, before this patch we have:
    
      PHYS_MASK_SHIFT = 48
      VTTBR_X = 37 - 24 = 13
      VTTBR_BADDR_SHIFT = 13 - 1 = 12
      VTTBR_BADDR_MASK = ((1 << 35) - 1) << 12 = 0x00007ffffffff000
    
    Which is wrong, because the mask doesn't allow bit 47 of the VTTBR
    address to be set, and only requires the address to be 12-bit (4k)
    aligned, while it actually needs to be 13-bit (8k) aligned because we
    concatenate two 4k tables.
    
    With this patch, the mask becomes 0x0000ffffffffe000, which is what we
    want.
    
    Fixes: 0369f6a34b9f ("arm64: KVM: EL2 register definitions")
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Kristina Martsenko <kristina.martsenko@arm.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bc04a812a027371245ec1105429de338ba82134a
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Fri Nov 24 07:47:50 2017 +0100

    eeprom: at24: check at24_read/write arguments
    
    commit d9bcd462daf34aebb8de9ad7f76de0198bb5a0f0 upstream.
    
    So far we completely rely on the caller to provide valid arguments.
    To be on the safe side perform an own sanity check.
    
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a0992bdf1e286a7b5e0dd696e2f2fd0fcbe08c7c
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Nov 28 08:03:30 2017 -0800

    net/packet: fix a race in packet_bind() and packet_notifier()
    
    commit 15fe076edea787807a7cdc168df832544b58eba6 upstream.
    
    syzbot reported crashes [1] and provided a C repro easing bug hunting.
    
    When/if packet_do_bind() calls __unregister_prot_hook() and releases
    po->bind_lock, another thread can run packet_notifier() and process an
    NETDEV_UP event.
    
    This calls register_prot_hook() and hooks again the socket right before
    first thread is able to grab again po->bind_lock.
    
    Fixes this issue by temporarily setting po->num to 0, as suggested by
    David Miller.
    
    [1]
    dev_remove_pack: ffff8801bf16fa80 not found
    ------------[ cut here ]------------
    kernel BUG at net/core/dev.c:7945!  ( BUG_ON(!list_empty(&dev->ptype_all)); )
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
       (ftrace buffer empty)
    Modules linked in:
    device syz0 entered promiscuous mode
    CPU: 0 PID: 3161 Comm: syzkaller404108 Not tainted 4.14.0+ #190
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    task: ffff8801cc57a500 task.stack: ffff8801cc588000
    RIP: 0010:netdev_run_todo+0x772/0xae0 net/core/dev.c:7945
    RSP: 0018:ffff8801cc58f598 EFLAGS: 00010293
    RAX: ffff8801cc57a500 RBX: dffffc0000000000 RCX: ffffffff841f75b2
    RDX: 0000000000000000 RSI: 1ffff100398b1ede RDI: ffff8801bf1f8810
    device syz0 entered promiscuous mode
    RBP: ffff8801cc58f898 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffff8801bf1f8cd8
    R13: ffff8801cc58f870 R14: ffff8801bf1f8780 R15: ffff8801cc58f7f0
    FS:  0000000001716880(0000) GS:ffff8801db400000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000020b13000 CR3: 0000000005e25000 CR4: 00000000001406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     rtnl_unlock+0xe/0x10 net/core/rtnetlink.c:106
     tun_detach drivers/net/tun.c:670 [inline]
     tun_chr_close+0x49/0x60 drivers/net/tun.c:2845
     __fput+0x333/0x7f0 fs/file_table.c:210
     ____fput+0x15/0x20 fs/file_table.c:244
     task_work_run+0x199/0x270 kernel/task_work.c:113
     exit_task_work include/linux/task_work.h:22 [inline]
     do_exit+0x9bb/0x1ae0 kernel/exit.c:865
     do_group_exit+0x149/0x400 kernel/exit.c:968
     SYSC_exit_group kernel/exit.c:979 [inline]
     SyS_exit_group+0x1d/0x20 kernel/exit.c:977
     entry_SYSCALL_64_fastpath+0x1f/0x96
    RIP: 0033:0x44ad19
    
    Fixes: 30f7ea1c2b5f ("packet: race condition in packet_bind")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Francesco Ruggeri <fruggeri@aristanetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 128815d34149caf956c5a58f5052e51f23d73e2d
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Nov 26 20:16:07 2017 +0800

    sctp: force the params with right types for sctp csum apis
    
    commit af2697a0273f7665429c47d71ab26f2412af924e upstream.
    
    Now sctp_csum_xxx doesn't really match the param types of these common
    csum apis. As sctp_csum_xxx is defined in sctp/checksum.h, many sparse
    errors occur when make C=2 not only with M=net/sctp but also with other
    modules that include this header file.
    
    This patch is to force them fit in csum apis with the right types.
    
    Fixes: e6d8b64b34aa ("net: sctp: fix and consolidate SCTP checksumming code")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1e38ee512e30ceeb5e2a5d326ec50d13abe7c282
Author: Paul Meyer <Paul.Meyer@microsoft.com>
Date:   Tue Nov 14 13:06:47 2017 -0700

    hv: kvp: Avoid reading past allocated blocks from KVP file
    
    commit 297d6b6e56c2977fc504c61bbeeaa21296923f89 upstream.
    
    While reading in more than one block (50) of KVP records, the allocation
    goes per block, but the reads used the total number of allocated records
    (without resetting the pointer/stream). This causes the records buffer to
    overrun when the refresh reads more than one block over the previous
    capacity (e.g. reading more than 100 KVP records whereas the in-memory
    database was empty before).
    
    Fix this by reading the correct number of KVP records from file each time.
    
    Signed-off-by: Paul Meyer <Paul.Meyer@microsoft.com>
    Signed-off-by: Long Li <longli@microsoft.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2d76e7e2ec78470d3c1dbe6f2ee2c635b11e645a
Author: William Breathitt Gray <vilhelm.gray@gmail.com>
Date:   Wed Nov 8 10:23:11 2017 -0500

    isa: Prevent NULL dereference in isa_bus driver callbacks
    
    commit 5a244727f428a06634f22bb890e78024ab0c89f3 upstream.
    
    The isa_driver structure for an isa_bus device is stored in the device
    platform_data member of the respective device structure. This
    platform_data member may be reset to NULL if isa_driver match callback
    for the device fails, indicating a device unsupported by the ISA driver.
    
    This patch fixes a possible NULL pointer dereference if one of the
    isa_driver callbacks to attempted for an unsupported device. This error
    should not occur in practice since ISA devices are typically manually
    configured and loaded by the users, but we may as well prevent this
    error from popping up for the 0day testers.
    
    Fixes: a5117ba7da37 ("[PATCH] Driver model: add ISA bus")
    Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 31957529c294f1a16b1efc4dca862b39169eec6c
Author: Matt Wilson <msw@amazon.com>
Date:   Mon Nov 13 11:31:31 2017 -0800

    serial: 8250_pci: Add Amazon PCI serial device ID
    
    commit 3bfd1300abfe3adb18e84a89d97a0e82a22124bb upstream.
    
    This device will be used in future Amazon EC2 instances as the primary
    serial port (i.e., data sent to this port will be available via the
    GetConsoleOuput [1] EC2 API).
    
    [1] http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetConsoleOutput.html
    
    Signed-off-by: Matt Wilson <msw@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 56b0117376031e4077344487cf116f65cf9570ea
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Nov 14 19:27:22 2017 +0100

    uas: Always apply US_FL_NO_ATA_1X quirk to Seagate devices
    
    commit 7fee72d5e8f1e7b8d8212e28291b1a0243ecf2f1 upstream.
    
    We've been adding this as a quirk on a per device basis hoping that
    newer disk enclosures would do better, but that has not happened,
    so simply apply this quirk to all Seagate devices.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 101a8a04a420144225c30422ac20ddc737d93976
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Tue Nov 14 01:31:15 2017 -0500

    usb: quirks: Add no-lpm quirk for KY-688 USB 3.1 Type-C Hub
    
    commit e43a12f1793ae1fe006e26fe9327a8840a92233c upstream.
    
    KY-688 USB 3.1 Type-C Hub internally uses a Genesys Logic hub to connect
    to Realtek r8153.
    
    Similar to commit ("7496cfe5431f2 usb: quirks: Add no-lpm quirk for Moshi
    USB to Ethernet Adapter"), no-lpm can make r8153 ethernet work.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2b2e2f24e1df2da2e0e92bc9c1e7a81ccafcba39
Author: Mike Looijmans <mike.looijmans@topic.nl>
Date:   Thu Nov 9 13:16:46 2017 +0100

    usb: hub: Cycle HUB power when initialization fails
    
    commit 973593a960ddac0f14f0d8877d2d0abe0afda795 upstream.
    
    Sometimes the USB device gets confused about the state of the initialization and
    the connection fails. In particular, the device thinks that it's already set up
    and running while the host thinks the device still needs to be configured. To
    work around this issue, power-cycle the hub's output to issue a sort of "reset"
    to the device. This makes the device restart its state machine and then the
    initialization succeeds.
    
    This fixes problems where the kernel reports a list of errors like this:
    
    usb 1-1.3: device not accepting address 19, error -71
    
    The end result is a non-functioning device. After this patch, the sequence
    becomes like this:
    
    usb 1-1.3: new high-speed USB device number 18 using ci_hdrc
    usb 1-1.3: device not accepting address 18, error -71
    usb 1-1.3: new high-speed USB device number 19 using ci_hdrc
    usb 1-1.3: device not accepting address 19, error -71
    usb 1-1-port3: attempt power cycle
    usb 1-1.3: new high-speed USB device number 21 using ci_hdrc
    usb-storage 1-1.3:1.2: USB Mass Storage device detected
    
    Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 689ec8ef4af7bc04273bc57f12ecf05b615193ab
Author: Masakazu Mokuno <masakazu.mokuno@gmail.com>
Date:   Fri Nov 10 01:25:50 2017 +0900

    USB: core: Add type-specific length check of BOS descriptors
    
    commit 81cf4a45360f70528f1f64ba018d61cb5767249a upstream.
    
    As most of BOS descriptors are longer in length than their header
    'struct usb_dev_cap_header', comparing solely with it is not sufficient
    to avoid out-of-bounds access to BOS descriptors.
    
    This patch adds descriptor type specific length check in
    usb_get_bos_descriptor() to fix the issue.
    
    Signed-off-by: Masakazu Mokuno <masakazu.mokuno@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: drop handling of USB_PTM_CAP_TYPE and USB_SSP_CAP_TYPE]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0585fdec3f51bcdae256ef0c84bdf404b89aa99c
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Nov 7 16:45:04 2017 +0000

    usb: host: fix incorrect updating of offset
    
    commit 1d5a31582ef046d3b233f0da1a68ae26519b2f0a upstream.
    
    The variable temp is incorrectly being updated, instead it should
    be offset otherwise the loop just reads the same capability value
    and loops forever.  Thanks to Alan Stern for pointing out the
    correct fix to my original fix.  Fix also cleans up clang warning:
    
    drivers/usb/host/ehci-dbg.c:840:4: warning: Value stored to 'temp'
    is never read
    
    Fixes: d49d43174400 ("USB: misc ehci updates")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f3ab6025980fae02f16f2085a9c5dac6805dadc2
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Nov 23 16:39:52 2017 +0100

    USB: usbfs: Filter flags passed in from user space
    
    commit 446f666da9f019ce2ffd03800995487e79a91462 upstream.
    
    USBDEVFS_URB_ISO_ASAP must be accepted only for ISO endpoints.
    Improve sanity checking.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit aaf969504b1cada25e3c8bd5ca014bb928895237
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Nov 14 16:18:28 2017 +0000

    usb: gadget: don't dereference g until after it has been null checked
    
    commit b2fc059fa549fe6881d4c1f8d698b0f50bcd16ec upstream.
    
    Avoid dereferencing pointer g until after g has been sanity null checked;
    move the assignment of cdev much later when it is required into a more
    local scope.
    
    Detected by CoverityScan, CID#1222135 ("Dereference before null check")
    
    Fixes: b785ea7ce662 ("usb: gadget: composite: fix ep->maxburst initialization")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6dd038f86121d8c64030454d3553d064a7fe7138
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Nov 23 21:41:57 2017 +0200

    drm/i915: Prevent zero length "index" write
    
    commit 56350fb8978bbf4aafe08f21234e161dd128b417 upstream.
    
    The hardware always writes one or two bytes in the index portion of
    an indexed transfer. Make sure the message we send as the index
    doesn't have a zero length.
    
    Cc: Daniel Kurtz <djkurtz@chromium.org>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Sean Paul <seanpaul@chromium.org>
    Fixes: 56f9eac05489 ("drm/i915/intel_i2c: use INDEX cycles for i2c read transactions")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20171123194157.25367-3-ville.syrjala@linux.intel.com
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    (cherry picked from commit bb9e0d4bca50f429152e74a459160b41f3d60fb2)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 97a6e9c723082c5e560469ca84b26b7f0e67b3c1
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Nov 23 21:41:56 2017 +0200

    drm/i915: Don't try indexed reads to alternate slave addresses
    
    commit ae5c631e605a452a5a0e73205a92810c01ed954b upstream.
    
    We can only specify the one slave address to indexed reads/writes.
    Make sure the messages we check are destined to the same slave
    address before deciding to do an indexed transfer.
    
    Cc: Daniel Kurtz <djkurtz@chromium.org>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Sean Paul <seanpaul@chromium.org>
    Fixes: 56f9eac05489 ("drm/i915/intel_i2c: use INDEX cycles for i2c read transactions")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20171123194157.25367-2-ville.syrjala@linux.intel.com
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    (cherry picked from commit c4deb62d7821672265b87952bcd1c808f3bf3e8f)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4d618b16ee610ade42f3da33ba3c86118ec7068c
Author: Robert Lippert <roblip@gmail.com>
Date:   Mon Nov 27 15:51:55 2017 -0800

    hwmon: (pmbus) Use 64bit math for DIRECT format values
    
    commit bd467e4eababe4c04272c1e646f066db02734c79 upstream.
    
    Power values in the 100s of watt range can easily blow past
    32bit math limits when processing everything in microwatts.
    
    Use 64bit math instead to avoid these issues on common 32bit ARM
    BMC platforms.
    
    Fixes: 442aba78728e ("hwmon: PMBus device driver")
    Signed-off-by: Robert Lippert <rlippert@google.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7749cab0b9edc8c8273a7889238619ee2890c98c
Author: Jens Axboe <axboe@kernel.dk>
Date:   Sun Nov 19 11:52:55 2017 -0700

    blktrace: fix trace mutex deadlock
    
    commit 2967acbb257a6a9bf912f4778b727e00972eac9b upstream.
    
    A previous commit changed the locking around registration/cleanup,
    but direct callers of blk_trace_remove() were missed. This means
    that if we hit the error path in setup, we will deadlock on
    attempting to re-acquire the queue trace mutex.
    
    Fixes: 1f2cac107c59 ("blktrace: fix unlocked access to init/start-stop/teardown")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 804fb1c7c6be29f4350fda63f14013fc7f603cbd
Author: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Date:   Mon Nov 20 23:14:55 2017 +0100

    ASoC: fsl_ssi: AC'97 ops need regmap, clock and cleaning up on failure
    
    commit 695b78b548d8a26288f041e907ff17758df9e1d5 upstream.
    
    AC'97 ops (register read / write) need SSI regmap and clock, so they have
    to be set after them.
    
    We also need to set these ops back to NULL if we fail the probe.
    
    Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
    Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0222518d1c45a21c2c3be961c14d97edc1941793
Author: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Date:   Wed Aug 5 17:25:31 2015 +0200

    ASoC: fsl_ssi: add AC'97 ops setting check and cleanup
    
    commit 04143d614f3af84a3f39e79a24a7ca740bd39efd upstream.
    
    Check whether setting AC'97 ops succeeded and clean them
    on removal so the fsl_ssi driver can be reloaded.
    
    Signed-off-by: Maciej Szmigiero <mail@maciej.szmigiero.name>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e45f79a33d047015a9763ea47837255a0054b382
Author: Sebastian Sjoholm <ssjoholm@mac.com>
Date:   Mon Nov 20 19:29:32 2017 +0100

    USB: serial: option: add Quectel BG96 id
    
    commit c654b21ede93845863597de9ad774fd30db5f2ab upstream.
    
    Quectel BG96 is an Qualcomm MDM9206 based IoT modem, supporting both
    CAT-M and NB-IoT. Tested hardware is BG96 mounted on Quectel
    development board (EVB). The USB id is added to option.c to allow
    DIAG,GPS,AT and modem communication with the BG96.
    
    Signed-off-by: Sebastian Sjoholm <ssjoholm@mac.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2fb1e55decd2b0bf1c7e275c8bcfd0a061be404b
Author: Aaron Ma <aaron.ma@canonical.com>
Date:   Sat Nov 25 16:48:41 2017 -0800

    Input: elantech - add new icbody type 15
    
    commit 10d900303f1c3a821eb0bef4e7b7ece16768fba4 upstream.
    
    The touchpad of Lenovo Thinkpad L480 reports it's version as 15.
    
    Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fd4811d94f3137680e316c7e0d2492a4cd08b7a3
Author: Rui Hua <huarui.dev@gmail.com>
Date:   Fri Nov 24 15:14:26 2017 -0800

    bcache: recover data from backing when data is clean
    
    commit e393aa2446150536929140739f09c6ecbcbea7f0 upstream.
    
    When we send a read request and hit the clean data in cache device, there
    is a situation called cache read race in bcache(see the commit in the tail
    of cache_look_up(), the following explaination just copy from there):
    The bucket we're reading from might be reused while our bio is in flight,
    and we could then end up reading the wrong data. We guard against this
    by checking (in bch_cache_read_endio()) if the pointer is stale again;
    if so, we treat it as an error (s->iop.error = -EINTR) and reread from
    the backing device (but we don't pass that error up anywhere)
    
    It should be noted that cache read race happened under normal
    circumstances, not the circumstance when SSD failed, it was counted
    and shown in  /sys/fs/bcache/XXX/internal/cache_read_races.
    
    Without this patch, when we use writeback mode, we will never reread from
    the backing device when cache read race happened, until the whole cache
    device is clean, because the condition
    (s->recoverable && (dc && !atomic_read(&dc->has_dirty))) is false in
    cached_dev_read_error(). In this situation, the s->iop.error(= -EINTR)
    will be passed up, at last, user will receive -EINTR when it's bio end,
    this is not suitable, and wield to up-application.
    
    In this patch, we use s->read_dirty_data to judge whether the read
    request hit dirty data in cache device, it is safe to reread data from
    the backing device when the read request hit clean data. This can not
    only handle cache read race, but also recover data when failed read
    request from cache device.
    
    [edited by mlyle to fix up whitespace, commit log title, comment
    spelling]
    
    Fixes: d59b23795933 ("bcache: only permit to recovery read error when cache device is clean")
    Signed-off-by: Hua Rui <huarui.dev@gmail.com>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Reviewed-by: Coly Li <colyli@suse.de>
    Signed-off-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a84d600e16bff8c7d118f8de9b4835daf4bc8cab
Author: Huacai Chen <chenhc@lemote.com>
Date:   Tue Nov 21 14:23:39 2017 +0100

    scsi: libsas: align sata_device's rps_resp on a cacheline
    
    commit c2e8fbf908afd81ad502b567a6639598f92c9b9d upstream.
    
    The rps_resp buffer in ata_device is a DMA target, but it isn't
    explicitly cacheline aligned. Due to this, adjacent fields can be
    overwritten with stale data from memory on non-coherent architectures.
    As a result, the kernel is sometimes unable to communicate with an SATA
    device behind a SAS expander.
    
    Fix this by ensuring that the rps_resp buffer is cacheline aligned.
    
    This issue is similar to that fixed by Commit 84bda12af31f93 ("libata:
    align ap->sector_buf") and Commit 4ee34ea3a12396f35b26 ("libata: Align
    ata_device's id on a cacheline").
    
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d21e1a8f546f0581532a7b0d4bd29c891a04387b
Author: Huacai Chen <chenhc@lemote.com>
Date:   Tue Nov 21 14:23:38 2017 +0100

    scsi: use dma_get_cache_alignment() as minimum DMA alignment
    
    commit 90addc6b3c9cda0146fbd62a08e234c2b224a80c upstream.
    
    In non-coherent DMA mode, kernel uses cache flushing operations to
    maintain I/O coherency, so scsi's block queue should be aligned to the
    value returned by dma_get_cache_alignment().  Otherwise, If a DMA buffer
    and a kernel structure share a same cache line, and if the kernel
    structure has dirty data, cache_invalidate (no writeback) will cause
    data corruption.
    
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    [hch: rebased and updated the comment and changelog]
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9f6c2be0197ed887375538bc9f7cffa1b33ecac1
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Nov 21 14:23:37 2017 +0100

    scsi: dma-mapping: always provide dma_get_cache_alignment
    
    commit 860dd4424f344400b491b212ee4acb3a358ba9d9 upstream.
    
    Provide the dummy version of dma_get_cache_alignment that always returns
    1 even if CONFIG_HAS_DMA is not set, so that drivers and subsystems can
    use it without ifdefs.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [bwh: Backported to 3.16: Also delete the conflicting declaration in
     <asm-generic/dma-mapping-broken.h>]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 65b373b92f22206ed007fa7e48b464dd35aae716
Author: Josef Bacik <jbacik@fb.com>
Date:   Fri Nov 17 14:50:46 2017 -0500

    btrfs: clear space cache inode generation always
    
    commit 8e138e0d92c6c9d3d481674fb14e3439b495be37 upstream.
    
    We discovered a box that had double allocations, and suspected the space
    cache may be to blame.  While auditing the write out path I noticed that
    if we've already setup the space cache we will just carry on.  This
    means that any error we hit after cache_save_setup before we go to
    actually write the cache out we won't reset the inode generation, so
    whatever was already written will be considered correct, except it'll be
    stale.  Fix this by _always_ resetting the generation on the block group
    inode, this way we only ever have valid or invalid cache.
    
    With this patch I was no longer able to reproduce cache corruption with
    dm-log-writes and my bpf error injection tool.
    
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 18618d28f7055b05219967da30308b9611700432
Author: Robin Murphy <robin.murphy@arm.com>
Date:   Thu Sep 28 15:14:01 2017 +0100

    iommu/vt-d: Fix scatterlist offset handling
    
    commit 29a90b70893817e2f2bb3cea40a29f5308e21b21 upstream.
    
    The intel-iommu DMA ops fail to correctly handle scatterlists where
    sg->offset is greater than PAGE_SIZE - the IOVA allocation is computed
    appropriately based on the page-aligned portion of the offset, but the
    mapping is set up relative to sg->page, which means it fails to actually
    cover the whole buffer (and in the worst case doesn't cover it at all):
    
        (sg->dma_address + sg->dma_len) ----+
        sg->dma_address ---------+          |
        iov_pfn------+           |          |
                     |           |          |
                     v           v          v
    iova:   a        b        c        d        e        f
            |--------|--------|--------|--------|--------|
                              <...calculated....>
                     [_____mapped______]
    pfn:    0        1        2        3        4        5
            |--------|--------|--------|--------|--------|
                     ^           ^          ^
                     |           |          |
        sg->page ----+           |          |
        sg->offset --------------+          |
        (sg->offset + sg->length) ----------+
    
    As a result, the caller ends up overrunning the mapping into whatever
    lies beyond, which usually goes badly:
    
    [  429.645492] DMAR: DRHD: handling fault status reg 2
    [  429.650847] DMAR: [DMA Write] Request device [02:00.4] fault addr f2682000 ...
    
    Whilst this is a fairly rare occurrence, it can happen from the result
    of intermediate scatterlist processing such as scatterwalk_ffwd() in the
    crypto layer. Whilst that particular site could be fixed up, it still
    seems worthwhile to bring intel-iommu in line with other DMA API
    implementations in handling this robustly.
    
    To that end, fix the intel_map_sg() path to line up the mapping
    correctly (in units of MM pages rather than VT-d pages to match the
    aligned_nrpages() calculation) regardless of the offset, and use
    sg_phys() consistently for clarity.
    
    Reported-by: Harsh Jain <Harsh@chelsio.com>
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Reviewed by: Ashok Raj <ashok.raj@intel.com>
    Tested by: Jacob Pan <jacob.jun.pan@intel.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fc81351125280e48f879396e59ec44fc91f823a0
Author: Liran Alon <liran.alon@oracle.com>
Date:   Sun Nov 5 16:56:34 2017 +0200

    KVM: x86: Don't re-execute instruction when not passing CR2 value
    
    commit 9b8ae63798cb97e785a667ff27e43fa6220cb734 upstream.
    
    In case of instruction-decode failure or emulation failure,
    x86_emulate_instruction() will call reexecute_instruction() which will
    attempt to use the cr2 value passed to x86_emulate_instruction().
    However, when x86_emulate_instruction() is called from
    emulate_instruction(), cr2 is not passed (passed as 0) and therefore
    it doesn't make sense to execute reexecute_instruction() logic at all.
    
    Fixes: 51d8b66199e9 ("KVM: cleanup emulate_instruction")
    
    Signed-off-by: Liran Alon <liran.alon@oracle.com>
    Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
    Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 88ce69de33ad3b1cef281fe4e01a3fbc582221a0
Author: Liran Alon <liran.alon@oracle.com>
Date:   Sun Nov 5 16:56:33 2017 +0200

    KVM: x86: emulator: Return to user-mode on L1 CPL=0 emulation failure
    
    commit 1f4dcb3b213235e642088709a1c54964d23365e9 upstream.
    
    On this case, handle_emulation_failure() fills kvm_run with
    internal-error information which it expects to be delivered
    to user-mode for further processing.
    However, the code reports a wrong return-value which makes KVM to never
    return to user-mode on this scenario.
    
    Fixes: 6d77dbfc88e3 ("KVM: inject #UD if instruction emulation fails and exit to
    userspace")
    
    Signed-off-by: Liran Alon <liran.alon@oracle.com>
    Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
    Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1ebc885234111cbc0fab0a8a3d7fbe705c37a645
Author: Liran Alon <liran.alon@oracle.com>
Date:   Sun Nov 5 16:56:32 2017 +0200

    KVM: x86: Exit to user-mode on #UD intercept when emulator requires
    
    commit 61cb57c9ed631c95b54f8e9090c89d18b3695b3c upstream.
    
    Instruction emulation after trapping a #UD exception can result in an
    MMIO access, for example when emulating a MOVBE on a processor that
    doesn't support the instruction.  In this case, the #UD vmexit handler
    must exit to user mode, but there wasn't any code to do so.  Add it for
    both VMX and SVM.
    
    Signed-off-by: Liran Alon <liran.alon@oracle.com>
    Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
    Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0d023c565feac441dd8e7c1910f05fae370e42f7
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Nov 13 12:12:56 2017 +0100

    ASoC: twl4030: fix child-node lookup
    
    commit 15f8c5f2415bfac73f33a14bcd83422bcbfb5298 upstream.
    
    Fix child-node lookup during probe, which 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 codec node was also prematurely freed,
    while the child node was leaked.
    
    Fixes: 2d6d649a2e0f ("ASoC: twl4030: Support for DT booted kernel")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dcd6864bd5587902be6ff59f6b35435a97c27ca8
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 19 17:16:01 2018 +0100

    ALSA: seq: Fix regression by incorrect ioctl_mutex usages
    
    This is the revised backport of the upstream commit
    b3defb791b26ea0683a93a4f49c77ec45ec96f10
    
    We had another backport (e.g. 623e5c8ae32b in 4.4.115), but it applies
    the new mutex also to the code paths that are invoked via faked
    kernel-to-kernel ioctls.  As reported recently, this leads to a
    deadlock at suspend (or other scenarios triggering the kernel
    sequencer client).
    
    This patch addresses the issue by taking the mutex only in the code
    paths invoked by user-space, just like the original fix patch does.
    
    Reported-and-tested-by: Andres Bertens <abertensu@yahoo.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>