commit fb71fde4183b062e2487b7f795d3d66554182046
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Thu Oct 12 15:27:23 2017 +0100

    Linux 3.2.94

commit eb33a02fddad907cea8b2c4ec3b49835b12d0107
Author: Zefan Li <lizefan@huawei.com>
Date:   Thu Sep 25 09:41:02 2014 +0800

    cpuset: PF_SPREAD_PAGE and PF_SPREAD_SLAB should be atomic flags
    
    commit 2ad654bc5e2b211e92f66da1d819e47d79a866f0 upstream.
    
    When we change cpuset.memory_spread_{page,slab}, cpuset will flip
    PF_SPREAD_{PAGE,SLAB} bit of tsk->flags for each task in that cpuset.
    This should be done using atomic bitops, but currently we don't,
    which is broken.
    
    Tetsuo reported a hard-to-reproduce kernel crash on RHEL6, which happened
    when one thread tried to clear PF_USED_MATH while at the same time another
    thread tried to flip PF_SPREAD_PAGE/PF_SPREAD_SLAB. They both operate on
    the same task.
    
    Here's the full report:
    https://lkml.org/lkml/2014/9/19/230
    
    To fix this, we make PF_SPREAD_PAGE and PF_SPREAD_SLAB atomic flags.
    
    v4:
    - updated mm/slab.c. (Fengguang Wu)
    - updated Documentation.
    
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Miao Xie <miaox@cn.fujitsu.com>
    Cc: Kees Cook <keescook@chromium.org>
    Fixes: 950592f7b991 ("cpusets: update tasks' page/slab spread flags in time")
    Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: Zefan Li <lizefan@huawei.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    [lizf: Backported to 3.4:
     - adjust context
     - check current->flags & PF_MEMPOLICY rather than current->mempolicy]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4fce5e64991fc0a02e47e525ce72f33def17b7ef
Author: Zefan Li <lizefan@huawei.com>
Date:   Thu Sep 25 09:40:40 2014 +0800

    sched: add macros to define bitops for task atomic flags
    
    commit e0e5070b20e01f0321f97db4e4e174f3f6b49e50 upstream.
    
    This will simplify code when we add new flags.
    
    v3:
    - Kees pointed out that no_new_privs should never be cleared, so we
    shouldn't define task_clear_no_new_privs(). we define 3 macros instead
    of a single one.
    
    v2:
    - updated scripts/tags.sh, suggested by Peter
    
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Miao Xie <miaox@cn.fujitsu.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    [lizf: Backported to 3.4:
     - adjust context
     - remove no_new_priv code
     - add atomic_flags to struct task_struct]
    [bwh: Backported to 3.2:
     - Drop changes in scripts/tags.sh
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7b73b4b97fc6d0c37c76baee966ea9b9a6323a72
Author: Jamal Hadi Salim <jhs@mojatatu.com>
Date:   Mon Oct 24 20:18:27 2016 -0400

    net sched filters: fix notification of filter delete with proper handle
    
    [ Upstream commit 9ee7837449b3d6f0fcf9132c6b5e5aaa58cc67d4 ]
    
    Daniel says:
    
    While trying out [1][2], I noticed that tc monitor doesn't show the
    correct handle on delete:
    
    $ tc monitor
    qdisc clsact ffff: dev eno1 parent ffff:fff1
    filter dev eno1 ingress protocol all pref 49152 bpf handle 0x2a [...]
    deleted filter dev eno1 ingress protocol all pref 49152 bpf handle 0xf3be0c80
    
    some context to explain the above:
    The user identity of any tc filter is represented by a 32-bit
    identifier encoded in tcm->tcm_handle. Example 0x2a in the bpf filter
    above. A user wishing to delete, get or even modify a specific filter
    uses this handle to reference it.
    Every classifier is free to provide its own semantics for the 32 bit handle.
    Example: classifiers like u32 use schemes like 800:1:801 to describe
    the semantics of their filters represented as hash table, bucket and
    node ids etc.
    Classifiers also have internal per-filter representation which is different
    from this externally visible identity. Most classifiers set this
    internal representation to be a pointer address (which allows fast retrieval
    of said filters in their implementations). This internal representation
    is referenced with the "fh" variable in the kernel control code.
    
    When a user successfuly deletes a specific filter, by specifying the correct
    tcm->tcm_handle, an event is generated to user space which indicates
    which specific filter was deleted.
    
    Before this patch, the "fh" value was sent to user space as the identity.
    As an example what is shown in the sample bpf filter delete event above
    is 0xf3be0c80. This is infact a 32-bit truncation of 0xffff8807f3be0c80
    which happens to be a 64-bit memory address of the internal filter
    representation (address of the corresponding filter's struct cls_bpf_prog);
    
    After this patch the appropriate user identifiable handle as encoded
    in the originating request tcm->tcm_handle is generated in the event.
    One of the cardinal rules of netlink rules is to be able to take an
    event (such as a delete in this case) and reflect it back to the
    kernel and successfully delete the filter. This patch achieves that.
    
    Note, this issue has existed since the original TC action
    infrastructure code patch back in 2004 as found in:
    https://git.kernel.org/cgit/linux/kernel/git/history/history.git/commit/
    
    [1] http://patchwork.ozlabs.org/patch/682828/
    [2] http://patchwork.ozlabs.org/patch/682829/
    
    Fixes: 4e54c4816bfe ("[NET]: Add tc extensions infrastructure.")
    Reported-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.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 cefa3724f1f806bb63402962bab92687437e145a
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Tue Dec 29 14:54:19 2015 -0800

    m32r: add io*_rep helpers
    
    commit 92a8ed4c7643809123ef0a65424569eaacc5c6b0 upstream.
    
    m32r allmodconfig was failing with the error:
    
      error: implicit declaration of function 'read'
    
    On checking io.h it turned out that 'read' is not defined but 'readb' is
    defined and 'ioread8' will then obviously mean 'readb'.
    
    At the same time some of the helper functions ioreadN_rep() and
    iowriteN_rep() were missing which also led to the build failure.
    
    Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
    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 aa17149de8631218f22f0a23f3239b03f458f6e5
Author: Abhilash Kesavan <a.kesavan@samsung.com>
Date:   Fri Feb 6 19:15:26 2015 +0530

    m32r: add definition of ioremap_wc to io.h
    
    commit 71a49d16f06de2ccdf52ca247d496a2bb1ca36fe upstream.
    
    Before adding a resource managed ioremap_wc function, we need
    to have ioremap_wc defined for m32r to prevent build errors.
    
    Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b6eb7a21211e409aba13e14f941d512dd8b5de33
Author: Arun Sharma <asharma@fb.com>
Date:   Fri Apr 20 15:41:35 2012 -0700

    perf/x86: Check if user fp is valid
    
    commit bc6ca7b342d5ae15c3ba3081fd40271b8039fb25 upstream.
    
    Signed-off-by: Arun Sharma <asharma@fb.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/1334961696-19580-4-git-send-email-asharma@fb.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.2: also add user_addr_max() macro]
    Cc: Jann Horn <jannh@google.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a0960eda141683b532608071cc3a808a7f8559ef
Author: Steven J. Hill <sjhill@mips.com>
Date:   Fri Jul 6 21:56:01 2012 +0200

    MIPS: Refactor 'clear_page' and 'copy_page' functions.
    
    commit c022630633624a75b3b58f43dd3c6cc896a56cff upstream.
    
    Remove usage of the '__attribute__((alias("...")))' hack that aliased
    to integer arrays containing micro-assembled instructions. This hack
    breaks when building a microMIPS kernel. It also makes the code much
    easier to understand.
    
    [ralf@linux-mips.org: Added back export of the clear_page and copy_page
    symbols so certain modules will work again.  Also fixed build with
    CONFIG_SIBYTE_DMA_PAGEOPS enabled.]
    
    Signed-off-by: Steven J. Hill <sjhill@mips.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/3866/
    Acked-by: David Daney <david.daney@cavium.com>
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    [bwh: Backported to 3.2: adjust context]
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cf33a744b388cbf5fdd211a3109cc17e420ef8b4
Author: Andrey Vagin <avagin@openvz.org>
Date:   Wed Jan 29 19:34:14 2014 +0100

    netfilter: nf_conntrack: fix RCU race in nf_conntrack_find_get
    
    commit c6825c0976fa7893692e0e43b09740b419b23c09 upstream.
    
    Lets look at destroy_conntrack:
    
    hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
    ...
    nf_conntrack_free(ct)
            kmem_cache_free(net->ct.nf_conntrack_cachep, ct);
    
    net->ct.nf_conntrack_cachep is created with SLAB_DESTROY_BY_RCU.
    
    The hash is protected by rcu, so readers look up conntracks without
    locks.
    A conntrack is removed from the hash, but in this moment a few readers
    still can use the conntrack. Then this conntrack is released and another
    thread creates conntrack with the same address and the equal tuple.
    After this a reader starts to validate the conntrack:
    * It's not dying, because a new conntrack was created
    * nf_ct_tuple_equal() returns true.
    
    But this conntrack is not initialized yet, so it can not be used by two
    threads concurrently. In this case BUG_ON may be triggered from
    nf_nat_setup_info().
    
    Florian Westphal suggested to check the confirm bit too. I think it's
    right.
    
    task 1                  task 2                  task 3
                            nf_conntrack_find_get
                             ____nf_conntrack_find
    destroy_conntrack
     hlist_nulls_del_rcu
     nf_conntrack_free
     kmem_cache_free
                                                    __nf_conntrack_alloc
                                                     kmem_cache_alloc
                                                     memset(&ct->tuplehash[IP_CT_DIR_MAX],
                             if (nf_ct_is_dying(ct))
                             if (!nf_ct_tuple_equal()
    
    I'm not sure, that I have ever seen this race condition in a real life.
    Currently we are investigating a bug, which is reproduced on a few nodes.
    In our case one conntrack is initialized from a few tasks concurrently,
    we don't have any other explanation for this.
    
    <2>[46267.083061] kernel BUG at net/ipv4/netfilter/nf_nat_core.c:322!
    ...
    <4>[46267.083951] RIP: 0010:[<ffffffffa01e00a4>]  [<ffffffffa01e00a4>] nf_nat_setup_info+0x564/0x590 [nf_nat]
    ...
    <4>[46267.085549] Call Trace:
    <4>[46267.085622]  [<ffffffffa023421b>] alloc_null_binding+0x5b/0xa0 [iptable_nat]
    <4>[46267.085697]  [<ffffffffa02342bc>] nf_nat_rule_find+0x5c/0x80 [iptable_nat]
    <4>[46267.085770]  [<ffffffffa0234521>] nf_nat_fn+0x111/0x260 [iptable_nat]
    <4>[46267.085843]  [<ffffffffa0234798>] nf_nat_out+0x48/0xd0 [iptable_nat]
    <4>[46267.085919]  [<ffffffff814841b9>] nf_iterate+0x69/0xb0
    <4>[46267.085991]  [<ffffffff81494e70>] ? ip_finish_output+0x0/0x2f0
    <4>[46267.086063]  [<ffffffff81484374>] nf_hook_slow+0x74/0x110
    <4>[46267.086133]  [<ffffffff81494e70>] ? ip_finish_output+0x0/0x2f0
    <4>[46267.086207]  [<ffffffff814b5890>] ? dst_output+0x0/0x20
    <4>[46267.086277]  [<ffffffff81495204>] ip_output+0xa4/0xc0
    <4>[46267.086346]  [<ffffffff814b65a4>] raw_sendmsg+0x8b4/0x910
    <4>[46267.086419]  [<ffffffff814c10fa>] inet_sendmsg+0x4a/0xb0
    <4>[46267.086491]  [<ffffffff814459aa>] ? sock_update_classid+0x3a/0x50
    <4>[46267.086562]  [<ffffffff81444d67>] sock_sendmsg+0x117/0x140
    <4>[46267.086638]  [<ffffffff8151997b>] ? _spin_unlock_bh+0x1b/0x20
    <4>[46267.086712]  [<ffffffff8109d370>] ? autoremove_wake_function+0x0/0x40
    <4>[46267.086785]  [<ffffffff81495e80>] ? do_ip_setsockopt+0x90/0xd80
    <4>[46267.086858]  [<ffffffff8100be0e>] ? call_function_interrupt+0xe/0x20
    <4>[46267.086936]  [<ffffffff8118cb10>] ? ub_slab_ptr+0x20/0x90
    <4>[46267.087006]  [<ffffffff8118cb10>] ? ub_slab_ptr+0x20/0x90
    <4>[46267.087081]  [<ffffffff8118f2e8>] ? kmem_cache_alloc+0xd8/0x1e0
    <4>[46267.087151]  [<ffffffff81445599>] sys_sendto+0x139/0x190
    <4>[46267.087229]  [<ffffffff81448c0d>] ? sock_setsockopt+0x16d/0x6f0
    <4>[46267.087303]  [<ffffffff810efa47>] ? audit_syscall_entry+0x1d7/0x200
    <4>[46267.087378]  [<ffffffff810ef795>] ? __audit_syscall_exit+0x265/0x290
    <4>[46267.087454]  [<ffffffff81474885>] ? compat_sys_setsockopt+0x75/0x210
    <4>[46267.087531]  [<ffffffff81474b5f>] compat_sys_socketcall+0x13f/0x210
    <4>[46267.087607]  [<ffffffff8104dea3>] ia32_sysret+0x0/0x5
    <4>[46267.087676] Code: 91 20 e2 01 75 29 48 89 de 4c 89 f7 e8 56 fa ff ff 85 c0 0f 84 68 fc ff ff 0f b6 4d c6 41 8b 45 00 e9 4d fb ff ff e8 7c 19 e9 e0 <0f> 0b eb fe f6 05 17 91 20 e2 80 74 ce 80 3d 5f 2e 00 00 00 74
    <1>[46267.088023] RIP  [<ffffffffa01e00a4>] nf_nat_setup_info+0x564/0x590
    
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: Florian Westphal <fw@strlen.de>
    Cc: Pablo Neira Ayuso <pablo@netfilter.org>
    Cc: Patrick McHardy <kaber@trash.net>
    Cc: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Cyrill Gorcunov <gorcunov@openvz.org>
    Signed-off-by: Andrey Vagin <avagin@openvz.org>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3a45ed9afc5d3f009e8358ae01a8360c70ae6e32
Author: Paul Hüber <phueber@kernsp.in>
Date:   Sun Feb 26 17:58:19 2017 +0100

    l2tp: avoid use-after-free caused by l2tp_ip_backlog_recv
    
    commit 51fb60eb162ab84c5edf2ae9c63cf0b878e5547e upstream.
    
    l2tp_ip_backlog_recv may not return -1 if the packet gets dropped.
    The return value is passed up to ip_local_deliver_finish, which treats
    negative values as an IP protocol number for resubmission.
    
    Signed-off-by: Paul Hüber <phueber@kernsp.in>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    Bluetooth: Properly check L2CAP config option output buffer length
    
    commit e860d2c904d1a9f38a24eb44c9f34b8f915a6ea3 upstream.
    
    Validate the output buffer length for L2CAP config requests and responses
    to avoid overflowing the stack buffer used for building the option blocks.
    
    Signed-off-by: Ben Seri <ben@armis.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.2:
     - Drop changes to handling of L2CAP_CONF_EFS, L2CAP_CONF_EWS
     - Drop changes to l2cap_do_create(), l2cap_security_cfm(), and L2CAP_CONF_PENDING
       case in l2cap_config_rsp()
     - In l2cap_config_rsp(), s/buf/req/
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7d38a8202c4a6acf91d6163f53f3253a261bbd22
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Aug 27 20:25:26 2017 +0800

    scsi: scsi_transport_iscsi: fix the issue that iscsi_if_rx doesn't parse nlmsg properly
    
    commit c88f0e6b06f4092995688211a631bb436125d77b upstream.
    
    ChunYu found a kernel crash by syzkaller:
    
    [  651.617875] kasan: CONFIG_KASAN_INLINE enabled
    [  651.618217] kasan: GPF could be caused by NULL-ptr deref or user memory access
    [  651.618731] general protection fault: 0000 [#1] SMP KASAN
    [  651.621543] CPU: 1 PID: 9539 Comm: scsi Not tainted 4.11.0.cov #32
    [  651.621938] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
    [  651.622309] task: ffff880117780000 task.stack: ffff8800a3188000
    [  651.622762] RIP: 0010:skb_release_data+0x26c/0x590
    [...]
    [  651.627260] Call Trace:
    [  651.629156]  skb_release_all+0x4f/0x60
    [  651.629450]  consume_skb+0x1a5/0x600
    [  651.630705]  netlink_unicast+0x505/0x720
    [  651.632345]  netlink_sendmsg+0xab2/0xe70
    [  651.633704]  sock_sendmsg+0xcf/0x110
    [  651.633942]  ___sys_sendmsg+0x833/0x980
    [  651.637117]  __sys_sendmsg+0xf3/0x240
    [  651.638820]  SyS_sendmsg+0x32/0x50
    [  651.639048]  entry_SYSCALL_64_fastpath+0x1f/0xc2
    
    It's caused by skb_shared_info at the end of sk_buff was overwritten by
    ISCSI_KEVENT_IF_ERROR when parsing nlmsg info from skb in iscsi_if_rx.
    
    During the loop if skb->len == nlh->nlmsg_len and both are sizeof(*nlh),
    ev = nlmsg_data(nlh) will acutally get skb_shinfo(SKB) instead and set a
    new value to skb_shinfo(SKB)->nr_frags by ev->type.
    
    This patch is to fix it by checking nlh->nlmsg_len properly there to
    avoid over accessing sk_buff.
    
    Reported-by: ChunYu Wang <chunwang@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Chris Leech <cleech@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

commit 71b8eab658c3569c1b3fe3d4df3334bb3fe85903
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Mon Sep 4 16:00:50 2017 +0200

    video: fbdev: aty: do not leak uninitialized padding in clk to userspace
    
    commit 8e75f7a7a00461ef6d91797a60b606367f6e344d upstream.
    
    'clk' is copied to a userland with padding byte(s) after 'vclk_post_div'
    field unitialized, leaking data from the stack. Fix this ensuring all of
    'clk' is initialized to zero.
    
    References: https://github.com/torvalds/linux/pull/441
    Reported-by: sohu0106 <sohu0106@126.com>
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7999f7fc5b2ca4c0b2a96b7fb3dfa4e30274da27
Author: Jim Mattson <jmattson@google.com>
Date:   Tue Sep 12 13:02:54 2017 -0700

    kvm: nVMX: Don't allow L2 to access the hardware CR8
    
    commit 51aa68e7d57e3217192d88ce90fd5b8ef29ec94f upstream.
    
    If L1 does not specify the "use TPR shadow" VM-execution control in
    vmcs12, then L0 must specify the "CR8-load exiting" and "CR8-store
    exiting" VM-execution controls in vmcs02. Failure to do so will give
    the L2 VM unrestricted read/write access to the hardware CR8.
    
    This fixes CVE-2017-12154.
    
    Signed-off-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 082d8a6a55d2b6583d9e93ac9796efdf4c412658
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Wed Sep 13 00:21:21 2017 +0200

    nl80211: check for the required netlink attributes presence
    
    commit e785fa0a164aa11001cba931367c7f94ffaff888 upstream.
    
    nl80211_set_rekey_data() does not check if the required attributes
    NL80211_REKEY_DATA_{REPLAY_CTR,KEK,KCK} are present when processing
    NL80211_CMD_SET_REKEY_OFFLOAD request. This request can be issued by
    users with CAP_NET_ADMIN privilege and may result in NULL dereference
    and a system crash. Add a check for the required attributes presence.
    This patch is based on the patch by bo Zhang.
    
    This fixes CVE-2017-12153.
    
    References: https://bugzilla.redhat.com/show_bug.cgi?id=1491046
    Fixes: e5497d766ad ("cfg80211/nl80211: support GTK rekey offload")
    Reported-by: bo Zhang <zhangbo5891001@gmail.com>
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 10c59d27363eba9fece1965293f83d865ba532be
Author: Steven Toth <stoth@kernellabs.com>
Date:   Tue Jun 6 09:30:27 2017 -0300

    saa7164: fix double fetch PCIe access condition
    
    commit 6fb05e0dd32e566facb96ea61a48c7488daa5ac3 upstream.
    
    Avoid a double fetch by reusing the values from the prior transfer.
    
    Originally reported via https://bugzilla.kernel.org/show_bug.cgi?id=195559
    
    Thanks to Pengfei Wang <wpengfeinudt@gmail.com> for reporting.
    
    Signed-off-by: Steven Toth <stoth@kernellabs.com>
    Reported-by: Pengfei Wang <wpengfeinudt@gmail.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a5d697c89499179061927c2cec23b078c60d595b
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Fri Nov 7 11:39:46 2014 -0300

    saa7164: fix sparse warnings
    
    commit 065e1477d277174242e73e7334c717b840d0693f upstream.
    
    Fix many sparse warnings:
    
    drivers/media/pci/saa7164/saa7164-core.c:97:18: warning: cast removes address space of expression
    drivers/media/pci/saa7164/saa7164-core.c:122:31: warning: cast removes address space of expression
    drivers/media/pci/saa7164/saa7164-core.c:122:31: warning: incorrect type in initializer (different address spaces)
    drivers/media/pci/saa7164/saa7164-core.c:122:31:    expected unsigned char [noderef] [usertype] <asn:2>*bufcpu
    drivers/media/pci/saa7164/saa7164-core.c:122:31:    got unsigned char [usertype] *<noident>
    drivers/media/pci/saa7164/saa7164-core.c:282:44: warning: cast removes address space of expression
    drivers/media/pci/saa7164/saa7164-core.c:286:38: warning: cast removes address space of expression
    drivers/media/pci/saa7164/saa7164-core.c:286:35: warning: incorrect type in assignment (different address spaces)
    drivers/media/pci/saa7164/saa7164-core.c:286:35:    expected unsigned char [noderef] [usertype] <asn:2>*p
    drivers/media/pci/saa7164/saa7164-core.c:286:35:    got unsigned char [usertype] *<noident>
    drivers/media/pci/saa7164/saa7164-core.c:352:44: warning: cast removes address space of expression
    drivers/media/pci/saa7164/saa7164-core.c:527:53: warning: cast removes address space of expression
    drivers/media/pci/saa7164/saa7164-core.c:129:30: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-core.c:133:38: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-core.c:133:72: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-core.c:134:35: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-core.c:287:61: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-core.c:288:65: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-core.c:289:65: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-core.c:290:65: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-core.c:291:65: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-core.c:292:65: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-core.c:293:65: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-core.c:294:65: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-fw.c:548:52: warning: incorrect type in argument 5 (different address spaces)
    drivers/media/pci/saa7164/saa7164-fw.c:548:52:    expected unsigned char [usertype] *dst
    drivers/media/pci/saa7164/saa7164-fw.c:548:52:    got unsigned char [noderef] [usertype] <asn:2>*
    drivers/media/pci/saa7164/saa7164-fw.c:579:44: warning: incorrect type in argument 5 (different address spaces)
    drivers/media/pci/saa7164/saa7164-fw.c:579:44:    expected unsigned char [usertype] *dst
    drivers/media/pci/saa7164/saa7164-fw.c:579:44:    got unsigned char [noderef] [usertype] <asn:2>*
    drivers/media/pci/saa7164/saa7164-fw.c:597:44: warning: incorrect type in argument 5 (different address spaces)
    drivers/media/pci/saa7164/saa7164-fw.c:597:44:    expected unsigned char [usertype] *dst
    drivers/media/pci/saa7164/saa7164-fw.c:597:44:    got unsigned char [noderef] [usertype] <asn:2>*
    drivers/media/pci/saa7164/saa7164-bus.c:36:36: warning: cast removes address space of expression
    drivers/media/pci/saa7164/saa7164-bus.c:41:36: warning: cast removes address space of expression
    drivers/media/pci/saa7164/saa7164-bus.c:151:19: warning: incorrect type in assignment (different base types)
    drivers/media/pci/saa7164/saa7164-bus.c:151:19:    expected unsigned short [unsigned] [usertype] size
    drivers/media/pci/saa7164/saa7164-bus.c:151:19:    got restricted __le16 [usertype] <noident>
    drivers/media/pci/saa7164/saa7164-bus.c:152:22: warning: incorrect type in assignment (different base types)
    drivers/media/pci/saa7164/saa7164-bus.c:152:22:    expected unsigned int [unsigned] [usertype] command
    drivers/media/pci/saa7164/saa7164-bus.c:152:22:    got restricted __le32 [usertype] <noident>
    drivers/media/pci/saa7164/saa7164-bus.c:153:30: warning: incorrect type in assignment (different base types)
    drivers/media/pci/saa7164/saa7164-bus.c:153:30:    expected unsigned short [unsigned] [usertype] controlselector
    drivers/media/pci/saa7164/saa7164-bus.c:153:30:    got restricted __le16 [usertype] <noident>
    drivers/media/pci/saa7164/saa7164-bus.c:172:20: warning: cast to restricted __le32
    drivers/media/pci/saa7164/saa7164-bus.c:173:20: warning: cast to restricted __le32
    drivers/media/pci/saa7164/saa7164-bus.c:206:28: warning: cast to restricted __le32
    drivers/media/pci/saa7164/saa7164-bus.c:287:9: warning: incorrect type in argument 1 (different base types)
    drivers/media/pci/saa7164/saa7164-bus.c:287:9:    expected unsigned int [unsigned] val
    drivers/media/pci/saa7164/saa7164-bus.c:287:9:    got restricted __le32 [usertype] <noident>
    drivers/media/pci/saa7164/saa7164-bus.c:339:20: warning: cast to restricted __le32
    drivers/media/pci/saa7164/saa7164-bus.c:340:20: warning: cast to restricted __le32
    drivers/media/pci/saa7164/saa7164-bus.c:463:9: warning: incorrect type in argument 1 (different base types)
    drivers/media/pci/saa7164/saa7164-bus.c:463:9:    expected unsigned int [unsigned] val
    drivers/media/pci/saa7164/saa7164-bus.c:463:9:    got restricted __le32 [usertype] <noident>
    drivers/media/pci/saa7164/saa7164-bus.c:466:21: warning: cast to restricted __le16
    drivers/media/pci/saa7164/saa7164-bus.c:467:24: warning: cast to restricted __le32
    drivers/media/pci/saa7164/saa7164-bus.c:468:32: warning: cast to restricted __le16
    drivers/media/pci/saa7164/saa7164-buffer.c:122:18: warning: incorrect type in assignment (different address spaces)
    drivers/media/pci/saa7164/saa7164-buffer.c:122:18:    expected unsigned long long [noderef] [usertype] <asn:2>*cpu
    drivers/media/pci/saa7164/saa7164-buffer.c:122:18:    got void *
    drivers/media/pci/saa7164/saa7164-buffer.c:127:21: warning: incorrect type in assignment (different address spaces)
    drivers/media/pci/saa7164/saa7164-buffer.c:127:21:    expected unsigned long long [noderef] [usertype] <asn:2>*pt_cpu
    drivers/media/pci/saa7164/saa7164-buffer.c:127:21:    got void *
    drivers/media/pci/saa7164/saa7164-buffer.c:134:20: warning: cast removes address space of expression
    drivers/media/pci/saa7164/saa7164-buffer.c:156:63: warning: incorrect type in argument 3 (different address spaces)
    drivers/media/pci/saa7164/saa7164-buffer.c:156:63:    expected void *vaddr
    drivers/media/pci/saa7164/saa7164-buffer.c:156:63:    got unsigned long long [noderef] [usertype] <asn:2>*cpu
    drivers/media/pci/saa7164/saa7164-buffer.c:179:57: warning: incorrect type in argument 3 (different address spaces)
    drivers/media/pci/saa7164/saa7164-buffer.c:179:57:    expected void *vaddr
    drivers/media/pci/saa7164/saa7164-buffer.c:179:57:    got unsigned long long [noderef] [usertype] <asn:2>*cpu
    drivers/media/pci/saa7164/saa7164-buffer.c:180:56: warning: incorrect type in argument 3 (different address spaces)
    drivers/media/pci/saa7164/saa7164-buffer.c:180:56:    expected void *vaddr
    drivers/media/pci/saa7164/saa7164-buffer.c:180:56:    got unsigned long long [noderef] [usertype] <asn:2>*pt_cpu
    drivers/media/pci/saa7164/saa7164-buffer.c:84:17: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-buffer.c:147:31: warning: dereference of noderef expression
    drivers/media/pci/saa7164/saa7164-buffer.c:148:17: warning: dereference of noderef expression
    
    Most are caused by pointers marked as __iomem when they aren't or not marked as
    __iomem when they should.
    
    Also note that readl/writel already do endian conversion, so there is no need to
    do it again.
    
    saa7164_bus_set/get were a bit tricky: you have to make sure the msg endian
    conversion is done at the right time, and that the code isn't using fields that
    are still little endian instead of cpu-endianness.
    
    The approach chosen is to convert just before writing to the ring buffer
    and to convert it back right after reading from the ring buffer.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Cc: Steven Toth <stoth@kernellabs.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    [bwh: Backported to 3.2: adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9767c910fa20d8d1fef786795a271d5e236383ca
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Nov 28 09:08:53 2011 -0300

    saa7164: fix endian conversion in saa7164_bus_set()
    
    commit 773ddbd228dc16a4829836e1dc16383e44c8575e upstream.
    
    The msg->command field is 32 bits, and we should fill it with a call
    to cpu_to_le32().  The current code is broke on big endian systems.
    On little endian systems it truncates the 32 bit value to 16 bits
    which probably still works fine.
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Steven Toth <stoth@kernellabs.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b6a9dc365dce00946080ccc482fc20a6b6c1476b
Author: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Date:   Wed Aug 2 03:18:27 2017 -0300

    btrfs: preserve i_mode if __btrfs_set_acl() fails
    
    commit d7d824966530acfe32b94d1ed672e6fe1638cd68 upstream.
    
    When changing a file's acl mask, btrfs_set_acl() will first set the
    group bits of i_mode to the value of the mask, and only then set the
    actual extended attribute representing the new acl.
    
    If the second part fails (due to lack of space, for example) and the
    file had no acl attribute to begin with, the system will from now on
    assume that the mask permission bits are actual group permission bits,
    potentially granting access to the wrong users.
    
    Prevent this by restoring the original mode bits if __btrfs_set_acl
    fails.
    
    Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 36d0828c0295524c261c6d1df93203a3379c9bb1
Author: Jan Kara <jack@suse.cz>
Date:   Sun Jul 30 23:33:01 2017 -0400

    ext4: Don't clear SGID when inheriting ACLs
    
    commit a3bb2d5587521eea6dab2d05326abb0afb460abd upstream.
    
    When new directory 'DIR1' is created in a directory 'DIR0' with SGID bit
    set, DIR1 is expected to have SGID bit set (and owning group equal to
    the owning group of 'DIR0'). However when 'DIR0' also has some default
    ACLs that 'DIR1' inherits, setting these ACLs will result in SGID bit on
    'DIR1' to get cleared if user is not member of the owning group.
    
    Fix the problem by moving posix_acl_update_mode() out of
    __ext4_set_acl() into ext4_set_acl(). That way the function will not be
    called when inheriting ACLs which is what we want as it prevents SGID
    bit clearing and the mode has been properly set by posix_acl_create()
    anyway.
    
    Fixes: 073931017b49d9458aa351605b43a7e34598caef
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Andreas Gruenbacher <agruenba@redhat.com>
    [bwh: Backported to 3.2: the __ext4_set_acl() function didn't exist,
     so added it]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e4234d2c74ebfbac18198a14943d45b913649f78
Author: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Date:   Sun Jul 30 22:43:41 2017 -0400

    ext4: preserve i_mode if __ext4_set_acl() fails
    
    commit 397e434176bb62bc6068d2210af1d876c6212a7e upstream.
    
    When changing a file's acl mask, __ext4_set_acl() will first set the group
    bits of i_mode to the value of the mask, and only then set the actual
    extended attribute representing the new acl.
    
    If the second part fails (due to lack of space, for example) and the file
    had no acl attribute to begin with, the system will from now on assume
    that the mask permission bits are actual group permission bits, potentially
    granting access to the wrong users.
    
    Prevent this by only changing the inode mode after the acl has been set.
    
    Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0f3bdf54a5def3706298bc4e741fb78690af6572
Author: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Date:   Mon Jul 17 18:42:41 2017 +0200

    reiserfs: preserve i_mode if __reiserfs_set_acl() fails
    
    commit fcea8aed91f53b51f9b943dc01f12d8aa666c720 upstream.
    
    When changing a file's acl mask, reiserfs_set_acl() will first set the
    group bits of i_mode to the value of the mask, and only then set the
    actual extended attribute representing the new acl.
    
    If the second part fails (due to lack of space, for example) and the
    file had no acl attribute to begin with, the system will from now on
    assume that the mask permission bits are actual group permission bits,
    potentially granting access to the wrong users.
    
    Prevent this by only changing the inode mode after the acl has been set.
    
    Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 96636fca5217f16f2ca93c5e2b816177d8930555
Author: Jan Kara <jack@suse.cz>
Date:   Thu Jun 22 09:32:49 2017 +0200

    reiserfs: Don't clear SGID when inheriting ACLs
    
    commit 6883cd7f68245e43e91e5ee583b7550abf14523f upstream.
    
    When new directory 'DIR1' is created in a directory 'DIR0' with SGID bit
    set, DIR1 is expected to have SGID bit set (and owning group equal to
    the owning group of 'DIR0'). However when 'DIR0' also has some default
    ACLs that 'DIR1' inherits, setting these ACLs will result in SGID bit on
    'DIR1' to get cleared if user is not member of the owning group.
    
    Fix the problem by moving posix_acl_update_mode() out of
    __reiserfs_set_acl() into reiserfs_set_acl(). That way the function will
    not be called when inheriting ACLs which is what we want as it prevents
    SGID bit clearing and the mode has been properly set by
    posix_acl_create() anyway.
    
    Fixes: 073931017b49d9458aa351605b43a7e34598caef
    CC: reiserfs-devel@vger.kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    [bwh: Backported to 3.2: the __reiserfs_set_acl() function didn't exist,
     so added it]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4a79ebbdd0231a4afcd758314b3852501694e44f
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sun Oct 8 14:48:44 2017 +0100

    ext3: preserve i_mode if ext2_set_acl() fails
    
    Based on Ernesto A. Fernández's fix for ext2 (commit fe26569eb919), from
    which the following description is taken:
    
    > When changing a file's acl mask, ext2_set_acl() will first set the group
    > bits of i_mode to the value of the mask, and only then set the actual
    > extended attribute representing the new acl.
    >
    > If the second part fails (due to lack of space, for example) and the file
    > had no acl attribute to begin with, the system will from now on assume
    > that the mask permission bits are actual group permission bits, potentially
    > granting access to the wrong users.
    >
    > Prevent this by only changing the inode mode after the acl has been set.
    
    Cc: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6b49d3b542cc262009a4d3f878bc003d59b2c304
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Fri Oct 6 03:18:40 2017 +0100

    ext3: Don't clear SGID when inheriting ACLs
    
    Based on Jan Kara's fix for ext2 (commit a992f2d38e4c), from which the
    following description is taken:
    
    > When new directory 'DIR1' is created in a directory 'DIR0' with SGID bit
    > set, DIR1 is expected to have SGID bit set (and owning group equal to
    > the owning group of 'DIR0'). However when 'DIR0' also has some default
    > ACLs that 'DIR1' inherits, setting these ACLs will result in SGID bit on
    > 'DIR1' to get cleared if user is not member of the owning group.
    >
    > Fix the problem by creating __ext2_set_acl() function that does not call
    > posix_acl_update_mode() and use it when inheriting ACLs. That prevents
    > SGID bit clearing and the mode has been properly set by
    > posix_acl_create() anyway.
    
    Fixes: 073931017b49 ("posix_acl: Clear SGID bit when setting file permissions")
    Cc: linux-ext4@vger.kernel.org
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 507e6875a25c495191deb089cf0dd47766808a0b
Author: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Date:   Wed Jul 12 06:54:19 2017 -0300

    ext2: preserve i_mode if ext2_set_acl() fails
    
    commit fe26569eb9197d845d73abe7dd20f603d79eb031 upstream.
    
    When changing a file's acl mask, ext2_set_acl() will first set the group
    bits of i_mode to the value of the mask, and only then set the actual
    extended attribute representing the new acl.
    
    If the second part fails (due to lack of space, for example) and the file
    had no acl attribute to begin with, the system will from now on assume
    that the mask permission bits are actual group permission bits, potentially
    granting access to the wrong users.
    
    Prevent this by only changing the inode mode after the acl has been set.
    
    [JK: Rebased on top of "ext2: Don't clear SGID when inheriting ACLs"]
    Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c94cf47d4827198ddbd593cca978c01680237f47
Author: Jan Kara <jack@suse.cz>
Date:   Wed Jun 21 14:34:15 2017 +0200

    ext2: Don't clear SGID when inheriting ACLs
    
    commit a992f2d38e4ce17b8c7d1f7f67b2de0eebdea069 upstream.
    
    When new directory 'DIR1' is created in a directory 'DIR0' with SGID bit
    set, DIR1 is expected to have SGID bit set (and owning group equal to
    the owning group of 'DIR0'). However when 'DIR0' also has some default
    ACLs that 'DIR1' inherits, setting these ACLs will result in SGID bit on
    'DIR1' to get cleared if user is not member of the owning group.
    
    Fix the problem by creating __ext2_set_acl() function that does not call
    posix_acl_update_mode() and use it when inheriting ACLs. That prevents
    SGID bit clearing and the mode has been properly set by
    posix_acl_create() anyway.
    
    Fixes: 073931017b49d9458aa351605b43a7e34598caef
    CC: linux-ext4@vger.kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    [bwh: Backported to 3.2:
     - Keep using CURRENT_TIME_SEC
     - Change parameter order of ext2_set_acl() to match upstream
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 65e992fc50593ad2fac03c0e4a682fb871b65336
Author: Adam Borowski <kilobyte@angband.pl>
Date:   Sat Jun 3 09:35:06 2017 +0200

    vt: fix unchecked __put_user() in tioclinux ioctls
    
    commit 6987dc8a70976561d22450b5858fc9767788cc1c upstream.
    
    Only read access is checked before this call.
    
    Actually, at the moment this is not an issue, as every in-tree arch does
    the same manual checks for VERIFY_READ vs VERIFY_WRITE, relying on the MMU
    to tell them apart, but this wasn't the case in the past and may happen
    again on some odd arch in the future.
    
    If anyone cares about 3.7 and earlier, this is a security hole (untested)
    on real 80386 CPUs.
    
    Signed-off-by: Adam Borowski <kilobyte@angband.pl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8370870a98ad925fe7b550fa4a17c6d29513e6f2
Author: Helge Deller <deller@gmx.de>
Date:   Fri Jul 14 14:49:38 2017 -0700

    mm: fix overflow check in expand_upwards()
    
    commit 37511fb5c91db93d8bd6e3f52f86e5a7ff7cfcdf upstream.
    
    Jörn Engel noticed that the expand_upwards() function might not return
    -ENOMEM in case the requested address is (unsigned long)-PAGE_SIZE and
    if the architecture didn't defined TASK_SIZE as multiple of PAGE_SIZE.
    
    Affected architectures are arm, frv, m68k, blackfin, h8300 and xtensa
    which all define TASK_SIZE as 0xffffffff, but since none of those have
    an upwards-growing stack we currently have no actual issue.
    
    Nevertheless let's fix this just in case any of the architectures with
    an upward-growing stack (currently parisc, metag and partly ia64) define
    TASK_SIZE similar.
    
    Link: http://lkml.kernel.org/r/20170702192452.GA11868@p100.box
    Fixes: bd726c90b6b8 ("Allow stack to grow up to address space limit")
    Signed-off-by: Helge Deller <deller@gmx.de>
    Reported-by: Jörn Engel <joern@purestorage.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Oleg Nesterov <oleg@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 77cb7a747e0a0335a732373867d7f3f650fbd5a5
Author: Richard Weinberger <richard@nod.at>
Date:   Fri Jun 16 16:21:44 2017 +0200

    ubifs: Don't leak kernel memory to the MTD
    
    commit 4acadda74ff8b949c448c0282765ae747e088c87 upstream.
    
    When UBIFS prepares data structures which will be written to the MTD it
    ensues that their lengths are multiple of 8. Since it uses kmalloc() the
    padded bytes are left uninitialized and we leak a few bytes of kernel
    memory to the MTD.
    To make sure that all bytes are initialized, let's switch to kzalloc().
    Kzalloc() is fine in this case because the buffers are not huge and in
    the IO path the performance bottleneck is anyway the MTD.
    
    Fixes: 1e51764a3c2a ("UBIFS: add new flash file system")
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.2:
     - Drop change in ubifs_jnl_xrename()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 57e50f0a33f982c20fb0cdfdd8f9f6e0335cc6d2
Author: Richard Weinberger <richard@nod.at>
Date:   Wed May 17 00:20:27 2017 +0200

    ubifs: Correctly evict xattr inodes
    
    commit 272eda8298dc82eb411ece82bbb2c62911087b24 upstream.
    
    UBIFS handles extended attributes just like files, as consequence of
    that, they also have inodes.
    Therefore UBIFS does all the inode machinery also for xattrs. Since new
    inodes have i_nlink of 1, a file or xattr inode will be evicted
    if i_nlink goes down to 0 after an unlink. UBIFS assumes this model also
    for xattrs, which is not correct.
    One can create a file "foo" with xattr "user.test". By reading
    "user.test" an inode will be created, and by deleting "user.test" it
    will get evicted later. The assumption breaks if the file "foo", which
    hosts the xattrs, will be removed. VFS nor UBIFS does not remove each
    xattr via ubifs_xattr_remove(), it just removes the host inode from
    the TNC and all underlying xattr nodes too and the inode will remain
    in the cache and wastes memory.
    
    To solve this problem, remove xattr inodes from the VFS inode cache in
    ubifs_xattr_remove() to make sure that they get evicted.
    
    Fixes: 1e51764a3c2ac05a ("UBIFS: add new flash file system")
    Signed-off-by: Richard Weinberger <richard@nod.at>
    [bwh: Backported to 3.2:
     - xattr support is optional, so add an #ifdef around the call
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 87f5229f69b4bfc48c97c631d823dea5444029c3
Author: Chen Hong <chenhong3@huawei.com>
Date:   Sun Jul 2 15:11:10 2017 -0700

    Input: i8042 - fix crash at boot time
    
    commit 340d394a789518018f834ff70f7534fc463d3226 upstream.
    
    The driver checks port->exists twice in i8042_interrupt(), first when
    trying to assign temporary "serio" variable, and second time when deciding
    whether it should call serio_interrupt(). The value of port->exists may
    change between the 2 checks, and we may end up calling serio_interrupt()
    with a NULL pointer:
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000050
    IP: [<ffffffff8150feaf>] _spin_lock_irqsave+0x1f/0x40
    PGD 0
    Oops: 0002 [#1] SMP
    last sysfs file:
    CPU 0
    Modules linked in:
    
    Pid: 1, comm: swapper Not tainted 2.6.32-358.el6.x86_64 #1 QEMU Standard PC (i440FX + PIIX, 1996)
    RIP: 0010:[<ffffffff8150feaf>]  [<ffffffff8150feaf>] _spin_lock_irqsave+0x1f/0x40
    RSP: 0018:ffff880028203cc0  EFLAGS: 00010082
    RAX: 0000000000010000 RBX: 0000000000000000 RCX: 0000000000000000
    RDX: 0000000000000282 RSI: 0000000000000098 RDI: 0000000000000050
    RBP: ffff880028203cc0 R08: ffff88013e79c000 R09: ffff880028203ee0
    R10: 0000000000000298 R11: 0000000000000282 R12: 0000000000000050
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000098
    FS:  0000000000000000(0000) GS:ffff880028200000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
    CR2: 0000000000000050 CR3: 0000000001a85000 CR4: 00000000001407f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Process swapper (pid: 1, threadinfo ffff88013e79c000, task ffff88013e79b500)
    Stack:
    ffff880028203d00 ffffffff813de186 ffffffffffffff02 0000000000000000
    <d> 0000000000000000 0000000000000000 0000000000000000 0000000000000098
    <d> ffff880028203d70 ffffffff813e0162 ffff880028203d20 ffffffff8103b8ac
    Call Trace:
    <IRQ>
     [<ffffffff813de186>] serio_interrupt+0x36/0xa0
    [<ffffffff813e0162>] i8042_interrupt+0x132/0x3a0
    [<ffffffff8103b8ac>] ? kvm_clock_read+0x1c/0x20
    [<ffffffff8103b8b9>] ? kvm_clock_get_cycles+0x9/0x10
    [<ffffffff810e1640>] handle_IRQ_event+0x60/0x170
    [<ffffffff8103b154>] ? kvm_guest_apic_eoi_write+0x44/0x50
    [<ffffffff810e3d8e>] handle_edge_irq+0xde/0x180
    [<ffffffff8100de89>] handle_irq+0x49/0xa0
    [<ffffffff81516c8c>] do_IRQ+0x6c/0xf0
    [<ffffffff8100b9d3>] ret_from_intr+0x0/0x11
    [<ffffffff81076f63>] ? __do_softirq+0x73/0x1e0
    [<ffffffff8109b75b>] ? hrtimer_interrupt+0x14b/0x260
    [<ffffffff8100c1cc>] ? call_softirq+0x1c/0x30
    [<ffffffff8100de05>] ? do_softirq+0x65/0xa0
    [<ffffffff81076d95>] ? irq_exit+0x85/0x90
    [<ffffffff81516d80>] ? smp_apic_timer_interrupt+0x70/0x9b
    [<ffffffff8100bb93>] ? apic_timer_interrupt+0x13/0x20
    
    To avoid the issue let's change the second check to test whether serio is
    NULL or not.
    
    Also, let's take i8042_lock in i8042_start() and i8042_stop() instead of
    trying to be overly smart and using memory barriers.
    
    Signed-off-by: Chen Hong <chenhong3@huawei.com>
    [dtor: take lock in i8042_start()/i8042_stop()]
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8712783ddcba8851207e852b6acd2e0950e496b5
Author: Anton Blanchard <anton@samba.org>
Date:   Thu Jun 15 09:46:39 2017 +1000

    powerpc: Fix emulation of mfocrf in emulate_step()
    
    commit 64e756c55aa46fc18fd53e8f3598b73b528d8637 upstream.
    
    From POWER4 onwards, mfocrf() only places the specified CR field into
    the destination GPR, and the rest of it is set to 0. The PowerPC AS
    from version 3.0 now requires this behaviour.
    
    The emulation code currently puts the entire CR into the destination GPR.
    Fix it.
    
    Fixes: 6888199f7fe5 ("[POWERPC] Emulate more instructions in software")
    Signed-off-by: Anton Blanchard <anton@samba.org>
    Acked-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 19660de3f6528fba95eaaf322a997fbb1f241c1b
Author: Oliver O'Halloran <oohall@gmail.com>
Date:   Thu Jul 6 18:46:43 2017 +1000

    powerpc/asm: Mark cr0 as clobbered in mftb()
    
    commit 2400fd822f467cb4c886c879d8ad99feac9cf319 upstream.
    
    The workaround for the CELL timebase bug does not correctly mark cr0 as
    being clobbered. This means GCC doesn't know that the asm block changes cr0 and
    might leave the result of an unrelated comparison in cr0 across the block, which
    we then trash, leading to basically random behaviour.
    
    Fixes: 859deea949c3 ("[POWERPC] Cell timebase bug workaround")
    Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
    [mpe: Tweak change log and flag for stable]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 712de181be28089f8831340f273a637ef6f42140
Author: Sahitya Tummala <stummala@codeaurora.org>
Date:   Mon Jul 10 15:50:00 2017 -0700

    fs/dcache.c: fix spin lockup issue on nlru->lock
    
    commit b17c070fb624cf10162cf92ea5e1ec25cd8ac176 upstream.
    
    __list_lru_walk_one() acquires nlru spin lock (nlru->lock) for longer
    duration if there are more number of items in the lru list.  As per the
    current code, it can hold the spin lock for upto maximum UINT_MAX
    entries at a time.  So if there are more number of items in the lru
    list, then "BUG: spinlock lockup suspected" is observed in the below
    path:
    
      spin_bug+0x90
      do_raw_spin_lock+0xfc
      _raw_spin_lock+0x28
      list_lru_add+0x28
      dput+0x1c8
      path_put+0x20
      terminate_walk+0x3c
      path_lookupat+0x100
      filename_lookup+0x6c
      user_path_at_empty+0x54
      SyS_faccessat+0xd0
      el0_svc_naked+0x24
    
    This nlru->lock is acquired by another CPU in this path -
    
      d_lru_shrink_move+0x34
      dentry_lru_isolate_shrink+0x48
      __list_lru_walk_one.isra.10+0x94
      list_lru_walk_node+0x40
      shrink_dcache_sb+0x60
      do_remount_sb+0xbc
      do_emergency_remount+0xb0
      process_one_work+0x228
      worker_thread+0x2e0
      kthread+0xf4
      ret_from_fork+0x10
    
    Fix this lockup by reducing the number of entries to be shrinked from
    the lru list to 1024 at once.  Also, add cond_resched() before
    processing the lru list again.
    
    Link: http://marc.info/?t=149722864900001&r=1&w=2
    Link: http://lkml.kernel.org/r/1498707575-2472-1-git-send-email-stummala@codeaurora.org
    Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
    Suggested-by: Jan Kara <jack@suse.cz>
    Suggested-by: Vladimir Davydov <vdavydov.dev@gmail.com>
    Acked-by: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Alexander Polakov <apolyakov@beget.ru>
    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.2: we don't hold the spin-lock for long, but adding
     cond_resched() looks like a good idea]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ac19501cc3f07bbaf8e2b0ae5824387dedf7f9f3
Author: Michal Hocko <mhocko@suse.com>
Date:   Mon Jul 10 15:49:51 2017 -0700

    mm/mmap.c: do not blow on PROT_NONE MAP_FIXED holes in the stack
    
    commit 561b5e0709e4a248c67d024d4d94b6e31e3edf2f upstream.
    
    Commit 1be7107fbe18 ("mm: larger stack guard gap, between vmas") has
    introduced a regression in some rust and Java environments which are
    trying to implement their own stack guard page.  They are punching a new
    MAP_FIXED mapping inside the existing stack Vma.
    
    This will confuse expand_{downwards,upwards} into thinking that the
    stack expansion would in fact get us too close to an existing non-stack
    vma which is a correct behavior wrt safety.  It is a real regression on
    the other hand.
    
    Let's work around the problem by considering PROT_NONE mapping as a part
    of the stack.  This is a gros hack but overflowing to such a mapping
    would trap anyway an we only can hope that usespace knows what it is
    doing and handle it propely.
    
    Fixes: 1be7107fbe18 ("mm: larger stack guard gap, between vmas")
    Link: http://lkml.kernel.org/r/20170705182849.GA18027@dhcp22.suse.cz
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Debugged-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Cc: Willy Tarreau <w@1wt.eu>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Hugh Dickins <hughd@google.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 5bc77461276509f06719b0b6fa9427935c038de2
Author: Srinivas Dasari <dasaris@qti.qualcomm.com>
Date:   Fri Jul 7 01:43:42 2017 +0300

    cfg80211: Validate frequencies nested in NL80211_ATTR_SCAN_FREQUENCIES
    
    commit d7f13f7450369281a5d0ea463cc69890a15923ae upstream.
    
    validate_scan_freqs() retrieves frequencies from attributes
    nested in the attribute NL80211_ATTR_SCAN_FREQUENCIES with
    nla_get_u32(), which reads 4 bytes from each attribute
    without validating the size of data received. Attributes
    nested in NL80211_ATTR_SCAN_FREQUENCIES don't have an nla policy.
    
    Validate size of each attribute before parsing to avoid potential buffer
    overread.
    
    Fixes: 2a519311926 ("cfg80211/nl80211: scanning (and mac80211 update to use it)")
    Signed-off-by: Srinivas Dasari <dasaris@qti.qualcomm.com>
    Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 15bfaffcc4ca688ea6ad88e500505564195bffa0
Author: Srinivas Dasari <dasaris@qti.qualcomm.com>
Date:   Fri Jul 7 01:43:39 2017 +0300

    cfg80211: Check if PMKID attribute is of expected size
    
    commit 9361df14d1cbf966409d5d6f48bb334384fbe138 upstream.
    
    nla policy checks for only maximum length of the attribute data
    when the attribute type is NLA_BINARY. If userspace sends less
    data than specified, the wireless drivers may access illegal
    memory. When type is NLA_UNSPEC, nla policy check ensures that
    userspace sends minimum specified length number of bytes.
    
    Remove type assignment to NLA_BINARY from nla_policy of
    NL80211_ATTR_PMKID to make this NLA_UNSPEC and to make sure minimum
    WLAN_PMKID_LEN bytes are received from userspace with
    NL80211_ATTR_PMKID.
    
    Fixes: 67fbb16be69d ("nl80211: PMKSA caching support")
    Signed-off-by: Srinivas Dasari <dasaris@qti.qualcomm.com>
    Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dc66bea5b05e9081b3b5bf1639cc7cd541f0c670
Author: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date:   Tue Jun 20 11:38:02 2017 +0200

    tpm: fix a kernel memory leak in tpm-sysfs.c
    
    commit 13b47cfcfc60495cde216eef4c01040d76174cbe upstream.
    
    While cleaning up sysfs callback that prints EK we discovered a kernel
    memory leak. This commit fixes the issue by zeroing the buffer used for
    TPM command/response.
    
    The leak happen when we use either tpm_vtpm_proxy, tpm_ibmvtpm or
    xen-tpmfront.
    
    Fixes: 0883743825e3 ("TPM: sysfs functions consolidation")
    Reported-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Tested-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    [bwh: Backported to 3.2: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bd84e6211e54bfeed5f8fc031f4f053d48847c3f
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Jun 23 11:29:00 2017 +0300

    rtc: rtc-nuc900: fix loop timeout test
    
    commit d0a67c372df410b579197ea818596001fe20070d upstream.
    
    We should change this post-op to a pre-op because we want the loop to
    exit with "timeout" set to zero.
    
    Fixes: 0a89b55364e0 ("nuc900/rtc: change the waiting for device ready implement")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7a53cedd4f4222c6895f4e49a94ca93d5d36940e
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Thu Jun 29 11:38:11 2017 +0200

    s390/syscalls: Fix out of bounds arguments access
    
    commit c46fc0424ced3fb71208e72bd597d91b9169a781 upstream.
    
    Zorro reported following crash while having enabled
    syscall tracing (CONFIG_FTRACE_SYSCALLS):
    
      Unable to handle kernel pointer dereference at virtual ...
      Oops: 0011 [#1] SMP DEBUG_PAGEALLOC
    
      SNIP
    
      Call Trace:
      ([<000000000024d79c>] ftrace_syscall_enter+0xec/0x1d8)
       [<00000000001099c6>] do_syscall_trace_enter+0x236/0x2f8
       [<0000000000730f1c>] sysc_tracesys+0x1a/0x32
       [<000003fffcf946a2>] 0x3fffcf946a2
      INFO: lockdep is turned off.
      Last Breaking-Event-Address:
       [<000000000022dd44>] rb_event_data+0x34/0x40
      ---[ end trace 8c795f86b1b3f7b9 ]---
    
    The crash happens in syscall_get_arguments function for
    syscalls with zero arguments, that will try to access
    first argument (args[0]) in event entry, but it's not
    allocated.
    
    Bail out of there are no arguments.
    
    Reported-by: Zorro Lang <zlang@redhat.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 85dd9276ab9dcee5d4a8d2c53b4672357dad0ca2
Author: Boris Pismenny <borisp@mellanox.com>
Date:   Tue Jun 27 15:09:13 2017 +0300

    RDMA/uverbs: Check port number supplied by user verbs cmds
    
    commit 5ecce4c9b17bed4dc9cb58bfb10447307569b77b upstream.
    
    The ib_uverbs_create_ah() ind ib_uverbs_modify_qp() calls receive
    the port number from user input as part of its attributes and assumes
    it is valid. Down on the stack, that parameter is used to access kernel
    data structures.  If the value is invalid, the kernel accesses memory
    it should not.  To prevent this, verify the port number before using it.
    
    BUG: KASAN: use-after-free in ib_uverbs_create_ah+0x6d5/0x7b0
    Read of size 4 at addr ffff880018d67ab8 by task syz-executor/313
    
    BUG: KASAN: slab-out-of-bounds in modify_qp.isra.4+0x19d0/0x1ef0
    Read of size 4 at addr ffff88006c40ec58 by task syz-executor/819
    
    Fixes: 67cdb40ca444 ("[IB] uverbs: Implement more commands")
    Fixes: 189aba99e70 ("IB/uverbs: Extend modify_qp and support packet pacing")
    Cc: <security@kernel.org>
    Cc: Yevgeny Kliteynik <kliteyn@mellanox.com>
    Cc: Tziporet Koren <tziporet@mellanox.com>
    Cc: Alex Polak <alexpo@mellanox.com>
    Signed-off-by: Boris Pismenny <borisp@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.2:
     - In modify_qp(), command structure is cmd not cmd->base
     - In modify_qp(), add release_qp label
     - In ib_uverbs_create_ah(), add definition of ib_dev
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ef9fc1754dd885469e9d7e46c452c7c3dda0dc96
Author: Yuval Shaia <yuval.shaia@oracle.com>
Date:   Wed Jan 25 18:41:37 2017 +0200

    IB/core: Add inline function to validate port
    
    commit 24dc831b77eca9361cf835be59fa69ea0e471afc upstream.
    
    Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.2:
     - Drop inapplicable changes
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ffd80cc52e3c9b6284c2ce223cba255188c161d3
Author: Ira Weiny <ira.weiny@intel.com>
Date:   Wed May 13 20:02:55 2015 -0400

    IB/core: Create common start/end port functions
    
    commit 0cf18d7723055709faf51b50f5a33253b480637f upstream.
    
    Previously start_port and end_port were defined in 2 places, cache.c and
    device.c and this prevented their use in other modules.
    
    Make these common functions, change the name to reflect the rdma
    name space, and update existing users.
    
    Signed-off-by: Ira Weiny <ira.weiny@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.2: drop one inapplicable change]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9a4287f37c6739efcd133942e1aca96259429fc3
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Mon Jun 26 23:30:51 2017 +0300

    drm/i915: Disable MSI for all pre-gen5
    
    commit ce3f7163e4ce8fd583dcb36b6ee6b81fd1b419ae upstream.
    
    We have pretty clear evidence that MSIs are getting lost on g4x and
    somehow the interrupt logic doesn't seem to recover from that state
    even if we try hard to clear the IIR.
    
    Disabling IER around the normal IIR clearing in the irq handler isn't
    sufficient to avoid this, so the problem really seems to be further
    up the interrupt chain. This should guarantee that there's always
    an edge if any IIR bits are set after the interrupt handler is done,
    which should normally guarantee that the CPU interrupt is generated.
    That approach seems to work perfectly on VLV/CHV, but apparently
    not on g4x.
    
    MSI is documented to be broken on 965gm at least. The chipset spec
    says MSI is defeatured because interrupts can be delayed or lost,
    which fits well with what we're seeing on g4x. Previously we've
    already disabled GMBUS interrupts on g4x because somehow GMBUS
    manages to raise legacy interrupts even when MSI is enabled.
    
    Since there's such widespread MSI breakahge all over in the pre-gen5
    land let's just give up on MSI on these platforms.
    
    Seqno reporting might be negatively affected by this since the legcy
    interrupts aren't guaranteed to be ordered with the seqno writes,
    whereas MSI interrupts may be? But an occasioanlly missed seqno
    seems like a small price to pay for generally working interrupts.
    
    Cc: Diego Viola <diego.viola@gmail.com>
    Tested-by: Diego Viola <diego.viola@gmail.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101261
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170626203051.28480-1-ville.syrjala@linux.intel.com
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    (cherry picked from commit e38c2da01f76cca82b59ca612529b81df82a7cc7)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    [bwh: Backported to 3.2:
     - Open-code INTEL_GEN()
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f62d5c6eda6fd2f52651f9df1078d7cd9b6a8242
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Thu Jun 29 16:56:54 2017 +0200

    ipv6: dad: don't remove dynamic addresses if link is down
    
    commit ec8add2a4c9df723c94a863b8fcd6d93c472deed upstream.
    
    Currently, when the link for $DEV is down, this command succeeds but the
    address is removed immediately by DAD (1):
    
        ip addr add 1111::12/64 dev $DEV valid_lft 3600 preferred_lft 1800
    
    In the same situation, this will succeed and not remove the address (2):
    
        ip addr add 1111::12/64 dev $DEV
        ip addr change 1111::12/64 dev $DEV valid_lft 3600 preferred_lft 1800
    
    The comment in addrconf_dad_begin() when !IF_READY makes it look like
    this is the intended behavior, but doesn't explain why:
    
         * If the device is not ready:
         * - keep it tentative if it is a permanent address.
         * - otherwise, kill it.
    
    We clearly cannot prevent userspace from doing (2), but we can make (1)
    work consistently with (2).
    
    addrconf_dad_stop() is only called in two cases: if DAD failed, or to
    skip DAD when the link is down. In that second case, the fix is to avoid
    deleting the address, like we already do for permanent addresses.
    
    Fixes: 3c21edbd1137 ("[IPV6]: Defer IPv6 device initialization until the link becomes ready.")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    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 82d3c821e9819e7ca4e051e4c6f4efa9d3da5464
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Fri Jan 8 13:47:23 2016 +0100

    ipv6: always add flag an address that failed DAD with DADFAILED
    
    commit 3d171f3907329d4b1ce31d5ec9c852c5f0269578 upstream.
    
    The userspace needs to know why is the address being removed so that it can
    perhaps obtain a new address.
    
    Without the DADFAILED flag it's impossible to distinguish removal of a
    temporary and tentative address due to DAD failure from other reasons (device
    removed, manual address removal).
    
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    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 528e3b682b24a3bfd2083ec5170a3f4b8f3e4a42
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Jun 12 23:18:30 2017 -0700

    parisc: use compat_sys_keyctl()
    
    commit b0f94efd5aa8daa8a07d7601714c2573266cd4c9 upstream.
    
    Architectures with a compat syscall table must put compat_sys_keyctl()
    in it, not sys_keyctl().  The parisc architecture was not doing this;
    fix it.
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Acked-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 220a8988938da3f0d2c43080b74c78951d288d9f
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Tue Jun 27 11:53:27 2017 +0200

    scsi: ses: do not add a device to an enclosure if enclosure_add_links() fails.
    
    commit 62e62ffd95539b9220894a7900a619e0f3ef4756 upstream.
    
    The enclosure_add_device() function should fail if it can't create the
    relevant sysfs links.
    
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Tested-by: Douglas Miller <dougmill@linux.vnet.ibm.com>
    Acked-by: James Bottomley <jejb@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a9f678e6b35a7bb32640b121a800e48e2cfff755
Author: Chen Yu <yu.c.chen@intel.com>
Date:   Thu May 25 16:49:07 2017 +0800

    PCI/PM: Restore the status of PCI devices across hibernation
    
    commit e60514bd4485c0c7c5a7cf779b200ce0b95c70d6 upstream.
    
    Currently we saw a lot of "No irq handler" errors during hibernation, which
    caused the system hang finally:
    
      ata4.00: qc timeout (cmd 0xec)
      ata4.00: failed to IDENTIFY (I/O error, err_mask=0x4)
      ata4.00: revalidation failed (errno=-5)
      ata4: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
      do_IRQ: 31.151 No irq handler for vector
    
    According to above logs, there is an interrupt triggered and it is
    dispatched to CPU31 with a vector number 151, but there is no handler for
    it, thus this IRQ will not get acked and will cause an IRQ flood which
    kills the system.  To be more specific, the 31.151 is an interrupt from the
    AHCI host controller.
    
    After some investigation, the reason why this issue is triggered is because
    the thaw_noirq() function does not restore the MSI/MSI-X settings across
    hibernation.
    
    The scenario is illustrated below:
    
      1. Before hibernation, IRQ 34 is the handler for the AHCI device, which
         is bound to CPU31.
    
      2. Hibernation starts, the AHCI device is put into low power state.
    
      3. All the nonboot CPUs are put offline, so IRQ 34 has to be migrated to
         the last alive one - CPU0.
    
      4. After the snapshot has been created, all the nonboot CPUs are brought
         up again; IRQ 34 remains bound to CPU0.
    
      5. AHCI devices are put into D0.
    
      6. The snapshot is written to the disk.
    
    The issue is triggered in step 6.  The AHCI interrupt should be delivered
    to CPU0, however it is delivered to the original CPU31 instead, which
    causes the "No irq handler" issue.
    
    Ying Huang has provided a clue that, in step 3 it is possible that writing
    to the register might not take effect as the PCI devices have been
    suspended.
    
    In step 3, the IRQ 34 affinity should be modified from CPU31 to CPU0, but
    in fact it is not.  In __pci_write_msi_msg(), if the device is already in
    low power state, the low level MSI message entry will not be updated but
    cached.  During the device restore process after a normal suspend/resume,
    pci_restore_msi_state() writes the cached MSI back to the hardware.
    
    But this is not the case for hibernation.  pci_restore_msi_state() is not
    currently called in pci_pm_thaw_noirq(), although pci_save_state() has
    saved the necessary PCI cached information in pci_pm_freeze_noirq().
    
    Restore the PCI status for the device during hibernation.  Otherwise the
    status might be lost across hibernation (for example, settings for MSI,
    MSI-X, ATS, ACS, IOV, etc.), which might cause problems during hibernation.
    
    Suggested-by: Ying Huang <ying.huang@intel.com>
    Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Chen Yu <yu.c.chen@intel.com>
    [bhelgaas: changelog]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Len Brown <len.brown@intel.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Rui Zhang <rui.zhang@intel.com>
    Cc: Ying Huang <ying.huang@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3cc349456aa367a26e6f731cca031bd3b67540d9
Author: Jan Kara <jack@suse.cz>
Date:   Thu Jun 22 15:31:07 2017 +0200

    btrfs: Don't clear SGID when inheriting ACLs
    
    commit b7f8a09f8097db776b8d160862540e4fc1f51296 upstream.
    
    When new directory 'DIR1' is created in a directory 'DIR0' with SGID bit
    set, DIR1 is expected to have SGID bit set (and owning group equal to
    the owning group of 'DIR0'). However when 'DIR0' also has some default
    ACLs that 'DIR1' inherits, setting these ACLs will result in SGID bit on
    'DIR1' to get cleared if user is not member of the owning group.
    
    Fix the problem by moving posix_acl_update_mode() out of
    __btrfs_set_acl() into btrfs_set_acl(). That way the function will not be
    called when inheriting ACLs which is what we want as it prevents SGID
    bit clearing and the mode has been properly set by posix_acl_create()
    anyway.
    
    Fixes: 073931017b49d9458aa351605b43a7e34598caef
    CC: linux-btrfs@vger.kernel.org
    CC: David Sterba <dsterba@suse.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.2: move the call to posix_acl_update_mode() into
     btrfs_xattr_acl_set()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bb9c4db48bf585cfaedfe10a109319286eab399d
Author: Devin Heitmueller <dheitmueller@kernellabs.com>
Date:   Tue Jun 27 13:08:51 2017 -0400

    Add USB quirk for HVR-950q to avoid intermittent device resets
    
    commit 6836796de4019944f4ba4c99a360e8250fd2e735 upstream.
    
    The USB core and sysfs will attempt to enumerate certain parameters
    which are unsupported by the au0828 - causing inconsistent behavior
    and sometimes causing the chip to reset.  Avoid making these calls.
    
    This problem manifested as intermittent cases where the au8522 would
    be reset on analog video startup, in particular when starting up ALSA
    audio streaming in parallel - the sysfs entries created by
    snd-usb-audio on streaming startup would result in unsupported control
    messages being sent during tuning which would put the chip into an
    unknown state.
    
    Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d0f3f61064ed54f6bdeb4ec3aeccb8e9ebafc92d
Author: Maciej W. Rozycki <macro@imgtec.com>
Date:   Fri Jun 16 00:08:29 2017 +0100

    MIPS: Send SIGILL for BPOSGE32 in `__compute_return_epc_for_insn'
    
    commit 7b82c1058ac1f8f8b9f2b8786b1f710a57a870a8 upstream.
    
    Fix commit e50c0a8fa60d ("Support the MIPS32 / MIPS64 DSP ASE.") and
    send SIGILL rather than SIGBUS whenever an unimplemented BPOSGE32 DSP
    ASE instruction has been encountered in `__compute_return_epc_for_insn'
    as our Reserved Instruction exception handler would in response to an
    attempt to actually execute the instruction.  Sending SIGBUS only makes
    sense for the unaligned PC case, since moved to `__compute_return_epc'.
    Adjust function documentation accordingly, correct formatting and use
    `pr_info' rather than `printk' as the other exit path already does.
    
    Fixes: e50c0a8fa60d ("Support the MIPS32 / MIPS64 DSP ASE.")
    Signed-off-by: Maciej W. Rozycki <macro@imgtec.com>
    Cc: James Hogan <james.hogan@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/16396/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    [bwh: Backported to 3.2:
     - Drop the comment change
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f35e6385a5169ceac0340d12ae24b1e6606de4d3
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Wed Jun 28 16:56:18 2017 +0200

    PM / Domains: Fix unsafe iteration over modified list of device links
    
    commit c6e83cac3eda5f7dd32ee1453df2f7abb5c6cd46 upstream.
    
    pm_genpd_remove_subdomain() iterates over domain's master_links list and
    removes matching element thus it has to use safe version of list
    iteration.
    
    Fixes: f721889ff65a ("PM / Domains: Support for generic I/O PM domains (v8)")
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit db8ff864faf3d281f382a9a294d4e0e3ea0b1266
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Fri Aug 19 16:30:25 2016 +0800

    PCI: Work around poweroff & suspend-to-RAM issue on Macbook Pro 11
    
    commit 13cfc732160f7bc7e596128ce34cda361c556966 upstream.
    
    Neither soft poweroff (transition to ACPI power state S5) nor
    suspend-to-RAM (transition to state S3) works on the Macbook Pro 11,4 and
    11,5.
    
    The problem is related to the [mem 0x7fa00000-0x7fbfffff] space.  When we
    use that space, e.g., by assigning it to the 00:1c.0 Root Port, the ACPI
    Power Management 1 Control Register (PM1_CNT) at [io 0x1804] doesn't work
    anymore.
    
    Linux does a soft poweroff (transition to S5) by writing to PM1_CNT.  The
    theory about why this doesn't work is:
    
      - The write to PM1_CNT causes an SMI
      - The BIOS SMI handler depends on something in
        [mem 0x7fa00000-0x7fbfffff]
      - When Linux assigns [mem 0x7fa00000-0x7fbfffff] to the 00:1c.0 Port, it
        covers up whatever the SMI handler uses, so the SMI handler no longer
        works correctly
    
    Reserve the [mem 0x7fa00000-0x7fbfffff] space so we don't assign it to
    anything.
    
    This is voodoo programming, since we don't know what the real conflict is,
    but we've failed to find the root cause.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=103211
    Tested-by: thejoe@gmail.com
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Rafael J. Wysocki <rafael@kernel.org>
    Cc: Lukas Wunner <lukas@wunner.de>
    Cc: Chen Yu <yu.c.chen@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit abb5b523f2151a9a310d7ab646cc2a63cd5a6b0f
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Thu Sep 1 08:52:29 2016 -0500

    PCI: Mark Haswell Power Control Unit as having non-compliant BARs
    
    commit 6af7e4f77259ee946103387372cb159f2e99a6d4 upstream.
    
    The Haswell Power Control Unit has a non-PCI register (CONFIG_TDP_NOMINAL)
    where BAR 0 is supposed to be.  This is erratum HSE43 in the spec update
    referenced below:
    
      The PCIe* Base Specification indicates that Configuration Space Headers
      have a base address register at offset 0x10.  Due to this erratum, the
      Power Control Unit's CONFIG_TDP_NOMINAL CSR (Bus 1; Device 30; Function
      3; Offset 0x10) is located where a base register is expected.
    
    Mark the PCU as having non-compliant BARs so we don't try to probe any of
    them.  There are no other BARs on this device.
    
    Rename the quirk so it's not Broadwell-specific.
    
    Link: http://www.intel.com/content/www/us/en/processors/xeon/xeon-e5-v3-spec-update.html
    Link: http://www.intel.com/content/www/us/en/processors/xeon/xeon-e5-v3-datasheet-vol-2.html (section 5.4, Device 30 Function 3)
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=153881
    Reported-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Tested-by: Prarit Bhargava <prarit@redhat.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Myron Stowe <myron.stowe@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ebb0d3fceb74727d03e6f6764fc3b7416208c1dc
Author: Jeremie Rapin <rapinj@gmail.com>
Date:   Wed Jun 28 18:23:25 2017 +0200

    USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick
    
    commit fd90f73a9925f248d696bde1cfc836d9fda5570d upstream.
    
    Added the USB serial device ID for the CEL ZigBee EM3588
    radio stick.
    
    Signed-off-by: Jeremie Rapin <rapinj@gmail.com>
    Acked-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ff676dae89c7329cf6f8900da759eb44ad063b26
Author: James Hogan <james.hogan@imgtec.com>
Date:   Wed May 31 16:19:47 2017 +0100

    MIPS: Fix mips_atomic_set() retry condition
    
    commit 2ec420b26f7b6ff332393f0bb5a7d245f7ad87f0 upstream.
    
    The inline asm retry check in the MIPS_ATOMIC_SET operation of the
    sysmips system call has been backwards since commit f1e39a4a616c ("MIPS:
    Rewrite sysmips(MIPS_ATOMIC_SET, ...) in C with inline assembler")
    merged in v2.6.32, resulting in the non R10000_LLSC_WAR case retrying
    until the operation was inatomic, before returning the new value that
    was probably just written multiple times instead of the old value.
    
    Invert the branch condition to fix that particular issue.
    
    Fixes: f1e39a4a616c ("MIPS: Rewrite sysmips(MIPS_ATOMIC_SET, ...) in C with inline assembler")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/16148/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 75dca988a2ab7b00d4ab1fc405ad82546fa8d93e
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Jun 21 11:35:09 2017 +0200

    scsi: sun_esp: fix device reference leaks
    
    commit f62f9ffdb5ef683ef8cffb43932fa72cc3713e94 upstream.
    
    Make sure to drop the reference to the dma device taken by
    of_find_device_by_node() on probe errors and on driver unbind.
    
    Fixes: 334ae614772b ("sparc: Kill SBUS DVMA layer.")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fd80d3feb67a7845cbed3df9557ae27ba3afe189
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Jun 23 10:02:00 2017 +0300

    scsi: bnx2i: missing error code in bnx2i_ep_connect()
    
    commit 1d32a62c74b3bcb69822b0f4745af5410cfec3a7 upstream.
    
    If bnx2i_map_ep_dbell_regs() then we accidentally return NULL instead of
    an error pointer.  It results in a NULL dereference in
    iscsi_if_ep_connect().
    
    Fixes: cf4e6363859d ("[SCSI] bnx2i: Add bnx2i iSCSI driver.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 86c459a0e490e396d4fc920625519263dc37d4d7
Author: Mateusz Jurczyk <mjurczyk@google.com>
Date:   Fri Jun 23 19:32:28 2017 +0200

    af_iucv: Move sockaddr length checks to before accessing sa_family in bind and connect handlers
    
    commit e3c42b61ff813921ba58cfc0019e3fd63f651190 upstream.
    
    Verify that the caller-provided sockaddr structure is large enough to
    contain the sa_family field, before accessing it in bind() and connect()
    handlers of the AF_IUCV socket. Since neither syscall enforces a minimum
    size of the corresponding memory region, very short sockaddrs (zero or
    one byte long) result in operating on uninitialized memory while
    referencing .sa_family.
    
    Fixes: 52a82e23b9f2 ("af_iucv: Validate socket address length in iucv_sock_bind()")
    Signed-off-by: Mateusz Jurczyk <mjurczyk@google.com>
    [jwi: removed unneeded null-check for addr]
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7dcc74d30e836ac96d2b9552c80e6fca03155c35
Author: Jiahau Chang <jiahau@gmail.com>
Date:   Mon Jun 19 13:08:30 2017 +0300

    xhci: Limit USB2 port wake support for AMD Promontory hosts
    
    commit dec08194ffeccfa1cf085906b53d301930eae18f upstream.
    
    For AMD Promontory xHCI host, although you can disable USB 2.0 ports in
    BIOS settings, those ports will be enabled anyway after you remove a
    device on that port and re-plug it in again. It's a known limitation of
    the chip. As a workaround we can clear the PORT_WAKE_BITS.
    
    This will disable wake on connect, disconnect and overcurrent on
    AMD Promontory USB2 ports
    
    [checkpatch cleanup and commit message reword -Mathias]
    Cc: Tsai Nicholas <nicholas.tsai@amd.com>
    Signed-off-by: Jiahau Chang <Lars_Chang@asmedia.com.tw>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit af64015b4f713ad1d63761c3d5c0f1e486677a72
Author: Jan Kara <jack@suse.cz>
Date:   Tue Jun 13 16:20:25 2017 +0200

    udf: Fix deadlock between writeback and udf_setsize()
    
    commit f2e95355891153f66d4156bf3a142c6489cd78c6 upstream.
    
    udf_setsize() called truncate_setsize() with i_data_sem held. Thus
    truncate_pagecache() called from truncate_setsize() could lock a page
    under i_data_sem which can deadlock as page lock ranks below
    i_data_sem - e. g. writeback can hold page lock and try to acquire
    i_data_sem to map a block.
    
    Fix the problem by moving truncate_setsize() calls from under
    i_data_sem. It is safe for us to change i_size without holding
    i_data_sem as all the places that depend on i_size being stable already
    hold inode_lock.
    
    Fixes: 7e49b6f2480cb9a9e7322a91592e56a5c85361f5
    Signed-off-by: Jan Kara <jack@suse.cz>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d18777048c7596577023f9ff3ea5dd8e9ff81f7d
Author: Jan Kara <jack@suse.cz>
Date:   Tue Jun 13 15:54:58 2017 +0200

    udf: Fix races with i_size changes during readpage
    
    commit 9795e0e8ac0d6a3ee092f1b555b284b57feef99e upstream.
    
    __udf_adinicb_readpage() uses i_size several times. When truncate
    changes i_size while the function is running, it can observe several
    different values and thus e.g. expose uninitialized parts of page to
    userspace. Also use i_size_read() in the function since it does not hold
    inode_lock. Since i_size is guaranteed to be small, this cannot really
    cause any issues even on 32-bit archs but let's be careful.
    
    Fixes: 9c2fc0de1a6e638fe58c354a463f544f42a90a09
    Signed-off-by: Jan Kara <jack@suse.cz>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4c99d233b2d0f847332c676cc31b03bd9225d2c5
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Jun 7 19:05:31 2017 -0400

    md: don't use flush_signals in userspace processes
    
    commit f9c79bc05a2a91f4fba8bfd653579e066714b1ec upstream.
    
    The function flush_signals clears all pending signals for the process. It
    may be used by kernel threads when we need to prepare a kernel thread for
    responding to signals. However using this function for an userspaces
    processes is incorrect - clearing signals without the program expecting it
    can cause misbehavior.
    
    The raid1 and raid5 code uses flush_signals in its request routine because
    it wants to prepare for an interruptible wait. This patch drops
    flush_signals and uses sigprocmask instead to block all signals (including
    SIGKILL) around the schedule() call. The signals are not lost, but the
    schedule() call won't respond to them.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Acked-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bf97987fb94cc7d90154a217a3464d46efb8ee69
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Fri May 19 14:40:50 2017 -0500

    PCI: Correct PCI_STD_RESOURCE_END usage
    
    commit 2f686f1d9beee135de6d08caea707ec7bfc916d4 upstream.
    
    PCI_STD_RESOURCE_END is (confusingly) the index of the last valid BAR, not
    the *number* of BARs.  To iterate through all possible BARs, we need to
    include PCI_STD_RESOURCE_END.
    
    Fixes: 9fe373f9997b ("PCI: Increase IBM ipr SAS Crocodile BARs to at least system page size")
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1bddbbc4697f96a3b68633621e5c13d9e173f263
Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date:   Tue Jun 13 16:01:13 2017 +1000

    usb: Fix typo in the definition of Endpoint[out]Request
    
    commit 7cf916bd639bd26db7214f2205bccdb4b9306256 upstream.
    
    The current definition is wrong. This breaks my upcoming
    Aspeed virtual hub driver.
    
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    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 1eebbac5c256d41d8322867ba067f3977cd3b789
Author: Michael Grzeschik <m.grzeschik@pengutronix.de>
Date:   Mon May 22 13:02:44 2017 +0200

    usb: usbip: set buffer pointers to NULL after free
    
    commit b3b51417d0af63fb9a06662dc292200aed9ea53f upstream.
    
    The usbip stack dynamically allocates the transfer_buffer and
    setup_packet of each urb that got generated by the tcp to usb stub code.
    As these pointers are always used only once we will set them to NULL
    after use. This is done likewise to the free_urb code in vudc_dev.c.
    This patch fixes double kfree situations where the usbip remote side
    added the URB_FREE_BUFFER.
    
    Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
    Acked-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust filenames]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b0af977f06498eb7eea268912d23f5d694d1f0e6
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue May 30 11:45:12 2017 +0200

    perf/core: Correct event creation with PERF_FORMAT_GROUP
    
    commit ba5213ae6b88fb170c4771fef6553f759c7d8cdd upstream.
    
    Andi was asking about PERF_FORMAT_GROUP vs inherited events, which led
    to the discovery of a bug from commit:
    
      3dab77fb1bf8 ("perf: Rework/fix the whole read vs group stuff")
    
     -       PERF_SAMPLE_GROUP                       = 1U << 4,
     +       PERF_SAMPLE_READ                        = 1U << 4,
    
     -       if (attr->inherit && (attr->sample_type & PERF_SAMPLE_GROUP))
     +       if (attr->inherit && (attr->read_format & PERF_FORMAT_GROUP))
    
    is a clear fail :/
    
    While this changes user visible behaviour; it was previously possible
    to create an inherited event with PERF_SAMPLE_READ; this is deemed
    acceptible because its results were always incorrect.
    
    Reported-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vince@deater.net>
    Fixes:  3dab77fb1bf8 ("perf: Rework/fix the whole read vs group stuff")
    Link: http://lkml.kernel.org/r/20170530094512.dy2nljns2uq7qa3j@hirez.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 34760dbbcc560d38fdb1c1e57572a965c2f8aca5
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Jun 1 04:45:59 2017 -0300

    mceusb: fix memory leaks in error path
    
    commit 2d5a6ce71c72d98d4f7948672842e3e8c265a8b7 upstream.
    
    Fix urb and transfer-buffer leaks in an urb-submission error path which
    may be hit when a device is disconnected.
    
    Fixes: 66e89522aff7 ("V4L/DVB: IR: add mceusb IR receiver driver")
    
    Cc: Jarod Wilson <jarod@redhat.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2:
     - Add check on urb_type, as async_buf and async_urb aren't always allocated
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5d3c2a5fa40cdfc1d969f2b7f127dd75837476b8
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu May 11 13:52:09 2017 +0200

    wlcore: fix 64K page support
    
    commit 4a4274bf2dbbd1c7a45be0c89a1687c9d2eef4a0 upstream.
    
    In the stable linux-3.16 branch, I ran into a warning in the
    wlcore driver:
    
    drivers/net/wireless/ti/wlcore/spi.c: In function 'wl12xx_spi_raw_write':
    drivers/net/wireless/ti/wlcore/spi.c:315:1: error: the frame size of 12848 bytes is larger than 2048 bytes [-Werror=frame-larger-than=]
    
    Newer kernels no longer show the warning, but the bug is still there,
    as the allocation is based on the CPU page size rather than the
    actual capabilities of the hardware.
    
    This replaces the PAGE_SIZE macro with the SZ_4K macro, i.e. 4096 bytes
    per buffer.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.2:
     - Open-code SZ_4K as it is only defined on some architectures here(!)
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d2a92c394132a304bbb401f346629db3d5b955a1
Author: Brian Norris <briannorris@chromium.org>
Date:   Fri May 12 09:41:58 2017 -0700

    mwifiex: fixup error cases in mwifiex_add_virtual_intf()
    
    commit 8535107aa4ef92520cbb9a4739563b389c5f8e2c upstream.
    
    If we fail to add an interface in mwifiex_add_virtual_intf(), we might
    hit a BUG_ON() in the networking code, because we didn't tear things
    down properly. Among the problems:
    
     (a) when failing to allocate workqueues, we fail to unregister the
         netdev before calling free_netdev()
     (b) even if we do try to unregister the netdev, we're still holding the
         rtnl lock, so the device never properly unregistered; we'll be at
         state NETREG_UNREGISTERING, and then hit free_netdev()'s:
            BUG_ON(dev->reg_state != NETREG_UNREGISTERED);
     (c) we're allocating some dependent resources (e.g., DFS workqueues)
         after we've registered the interface; this may or may not cause
         problems, but it's good practice to allocate these before registering
     (d) we're not even trying to unwind anything when mwifiex_send_cmd() or
         mwifiex_sta_init_cmd() fail
    
    To fix these issues, let's:
    
     * add a stacked set of error handling labels, to keep error handling
       consistent and properly ordered (resolving (a) and (d))
     * move the workqueue allocations before the registration (to resolve
       (c); also resolves (b) by avoiding error cases where we have to
       unregister)
    
    [Incidentally, it's pretty easy to interrupt the alloc_workqueue() in,
    e.g., the following:
    
      iw phy phy0 interface add mlan0 type station
    
    by sending it SIGTERM.]
    
    This bugfix covers commits like commit 7d652034d1a0 ("mwifiex: channel
    switch support for mwifiex"), but parts of this bug exist all the way
    back to the introduction of dynamic interface handling in commit
    93a1df48d224 ("mwifiex: add cfg80211 handlers add/del_virtual_intf").
    
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.2:
     - There is no workqueue allocation or cleanup needed here
     - Add 'ret' variable
     - Keep logging errors with wiphy_err()
     - Adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5dc4482f51fbe7ef5317c457b416de950dffdc3a
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 14 17:24:02 2017 +0200

    sched/topology: Fix building of overlapping sched-groups
    
    commit 0372dd2736e02672ac6e189c31f7d8c02ad543cd upstream.
    
    When building the overlapping groups, we very obviously should start
    with the previous domain of _this_ @cpu, not CPU-0.
    
    This can be readily demonstrated with a topology like:
    
      node   0   1   2   3
        0:  10  20  30  20
        1:  20  10  20  30
        2:  30  20  10  20
        3:  20  30  20  10
    
    Where (for example) CPU1 ends up generating the following nonsensical groups:
    
      [] CPU1 attaching sched-domain:
      []  domain 0: span 0-2 level NUMA
      []   groups: 1 2 0
      []   domain 1: span 0-3 level NUMA
      []    groups: 1-3 (cpu_capacity = 3072) 0-1,3 (cpu_capacity = 3072)
    
    Where the fact that domain 1 doesn't include a group with span 0-2 is
    the obvious fail.
    
    With patch this looks like:
    
      [] CPU1 attaching sched-domain:
      []  domain 0: span 0-2 level NUMA
      []   groups: 1 0 2
      []   domain 1: span 0-3 level NUMA
      []    groups: 0-2 (cpu_capacity = 3072) 0,2-3 (cpu_capacity = 3072)
    
    Debugged-by: Lauro Ramos Venancio <lvenanci@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Fixes: e3589f6c81e4 ("sched: Allow for overlapping sched_domain spans")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7de6fbc4401e6c167d2d60c2629b05b06c566d19
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 14 14:20:05 2017 +0200

    sched/fair, cpumask: Export for_each_cpu_wrap()
    
    commit c743f0a5c50f2fcbc628526279cfa24f3dabe182 upstream.
    
    More users for for_each_cpu_wrap() have appeared. Promote the construct
    to generic cpumask interface.
    
    The implementation is slightly modified to reduce arguments.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Lauro Ramos Venancio <lvenanci@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: lwang@redhat.com
    Link: http://lkml.kernel.org/r/20170414122005.o35me2h5nowqkxbv@hirez.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.2: there's no old version of the function to delete]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>