commit 7166ceea0a4eba3f8c86925ad60e6f0543db6234
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Nov 24 08:30:05 2017 +0100

    Linux 3.18.84

commit d73b3941f58ef10d3dbd9de148c5f534ce6bb0fd
Author: Jan Harkes <jaharkes@cs.cmu.edu>
Date:   Wed Sep 27 15:52:12 2017 -0400

    coda: fix 'kernel memory exposure attempt' in fsync
    
    commit d337b66a4c52c7b04eec661d86c2ef6e168965a2 upstream.
    
    When an application called fsync on a file in Coda a small request with
    just the file identifier was allocated, but the declared length was set
    to the size of union of all possible upcall requests.
    
    This bug has been around for a very long time and is now caught by the
    extra checking in usercopy that was introduced in Linux-4.8.
    
    The exposure happens when the Coda cache manager process reads the fsync
    upcall request at which point it is killed. As a result there is nobody
    servicing any further upcalls, trapping any processes that try to access
    the mounted Coda filesystem.
    
    Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2722def0f5274f4ccd8a768736158bb297c5feee
Author: Corey Minyard <cminyard@mvista.com>
Date:   Sat Jul 29 21:14:55 2017 -0500

    ipmi: fix unsigned long underflow
    
    commit 392a17b10ec4320d3c0e96e2a23ebaad1123b989 upstream.
    
    When I set the timeout to a specific value such as 500ms, the timeout
    event will not happen in time due to the overflow in function
    check_msg_timeout:
    ...
            ent->timeout -= timeout_period;
            if (ent->timeout > 0)
                    return;
    ...
    
    The type of timeout_period is long, but ent->timeout is unsigned long.
    This patch makes the type consistent.
    
    Reported-by: Weilong Chen <chenweilong@huawei.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Tested-by: Weilong Chen <chenweilong@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f72e2ba19765ec94ab1b704bce53c3d1ca13202e
Author: alex chen <alex.chen@huawei.com>
Date:   Wed Nov 15 17:31:40 2017 -0800

    ocfs2: should wait dio before inode lock in ocfs2_setattr()
    
    commit 28f5a8a7c033cbf3e32277f4cc9c6afd74f05300 upstream.
    
    we should wait dio requests to finish before inode lock in
    ocfs2_setattr(), otherwise the following deadlock will happen:
    
    process 1                  process 2                    process 3
    truncate file 'A'          end_io of writing file 'A'   receiving the bast messages
    ocfs2_setattr
     ocfs2_inode_lock_tracker
      ocfs2_inode_lock_full
     inode_dio_wait
      __inode_dio_wait
      -->waiting for all dio
      requests finish
                                                            dlm_proxy_ast_handler
                                                             dlm_do_local_bast
                                                              ocfs2_blocking_ast
                                                               ocfs2_generic_handle_bast
                                                                set OCFS2_LOCK_BLOCKED flag
                            dio_end_io
                             dio_bio_end_aio
                              dio_complete
                               ocfs2_dio_end_io
                                ocfs2_dio_end_io_write
                                 ocfs2_inode_lock
                                  __ocfs2_cluster_lock
                                   ocfs2_wait_for_mask
                                   -->waiting for OCFS2_LOCK_BLOCKED
                                   flag to be cleared, that is waiting
                                   for 'process 1' unlocking the inode lock
                               inode_dio_end
                               -->here dec the i_dio_count, but will never
                               be called, so a deadlock happened.
    
    Link: http://lkml.kernel.org/r/59F81636.70508@huawei.com
    Signed-off-by: Alex Chen <alex.chen@huawei.com>
    Reviewed-by: Jun Piao <piaojun@huawei.com>
    Reviewed-by: Joseph Qi <jiangqi903@gmail.com>
    Acked-by: Changwei Ge <ge.changwei@h3c.com>
    Cc: Mark Fasheh <mfasheh@versity.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72df596704b8ce5448e92dea14851e767a9ae592
Author: Roberto Sassu <roberto.sassu@huawei.com>
Date:   Tue Nov 7 11:37:07 2017 +0100

    ima: do not update security.ima if appraisal status is not INTEGRITY_PASS
    
    commit 020aae3ee58c1af0e7ffc4e2cc9fe4dc630338cb upstream.
    
    Commit b65a9cfc2c38 ("Untangling ima mess, part 2: deal with counters")
    moved the call of ima_file_check() from may_open() to do_filp_open() at a
    point where the file descriptor is already opened.
    
    This breaks the assumption made by IMA that file descriptors being closed
    belong to files whose access was granted by ima_file_check(). The
    consequence is that security.ima and security.evm are updated with good
    values, regardless of the current appraisal status.
    
    For example, if a file does not have security.ima, IMA will create it after
    opening the file for writing, even if access is denied. Access to the file
    will be allowed afterwards.
    
    Avoid this issue by checking the appraisal status before updating
    security.ima.
    
    Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
    Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28343f8b19c48a9c431930e75890d31dbf80a094
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Nov 9 16:43:13 2017 -0800

    vlan: fix a use-after-free in vlan_device_event()
    
    
    [ Upstream commit 052d41c01b3a2e3371d66de569717353af489d63 ]
    
    After refcnt reaches zero, vlan_vid_del() could free
    dev->vlan_info via RCU:
    
            RCU_INIT_POINTER(dev->vlan_info, NULL);
            call_rcu(&vlan_info->rcu, vlan_info_rcu_free);
    
    However, the pointer 'grp' still points to that memory
    since it is set before vlan_vid_del():
    
            vlan_info = rtnl_dereference(dev->vlan_info);
            if (!vlan_info)
                    goto out;
            grp = &vlan_info->grp;
    
    Depends on when that RCU callback is scheduled, we could
    trigger a use-after-free in vlan_group_for_each_dev()
    right following this vlan_vid_del().
    
    Fix it by moving vlan_vid_del() before setting grp. This
    is also symmetric to the vlan_vid_add() we call in
    vlan_device_event().
    
    Reported-by: Fengguang Wu <fengguang.wu@intel.com>
    Fixes: efc73f4bbc23 ("net: Fix memory leak - vlan_info struct")
    Cc: Alexander Duyck <alexander.duyck@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Girish Moodalbail <girish.moodalbail@oracle.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Reviewed-by: Girish Moodalbail <girish.moodalbail@oracle.com>
    Tested-by: Fengguang Wu <fengguang.wu@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c44a51d67e915fd5d3f2251ce285ffb50e74277
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Thu Nov 9 13:04:44 2017 +0900

    af_netlink: ensure that NLMSG_DONE never fails in dumps
    
    
    [ Upstream commit 0642840b8bb008528dbdf929cec9f65ac4231ad0 ]
    
    The way people generally use netlink_dump is that they fill in the skb
    as much as possible, breaking when nla_put returns an error. Then, they
    get called again and start filling out the next skb, and again, and so
    forth. The mechanism at work here is the ability for the iterative
    dumping function to detect when the skb is filled up and not fill it
    past the brim, waiting for a fresh skb for the rest of the data.
    
    However, if the attributes are small and nicely packed, it is possible
    that a dump callback function successfully fills in attributes until the
    skb is of size 4080 (libmnl's default page-sized receive buffer size).
    The dump function completes, satisfied, and then, if it happens to be
    that this is actually the last skb, and no further ones are to be sent,
    then netlink_dump will add on the NLMSG_DONE part:
    
      nlh = nlmsg_put_answer(skb, cb, NLMSG_DONE, sizeof(len), NLM_F_MULTI);
    
    It is very important that netlink_dump does this, of course. However, in
    this example, that call to nlmsg_put_answer will fail, because the
    previous filling by the dump function did not leave it enough room. And
    how could it possibly have done so? All of the nla_put variety of
    functions simply check to see if the skb has enough tailroom,
    independent of the context it is in.
    
    In order to keep the important assumptions of all netlink dump users, it
    is therefore important to give them an skb that has this end part of the
    tail already reserved, so that the call to nlmsg_put_answer does not
    fail. Otherwise, library authors are forced to find some bizarre sized
    receive buffer that has a large modulo relative to the common sizes of
    messages received, which is ugly and buggy.
    
    This patch thus saves the NLMSG_DONE for an additional message, for the
    case that things are dangerously close to the brim. This requires
    keeping track of the errno from ->dump() across calls.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e823c90371874557d4393060568cb7629436849f
Author: Huacai Chen <chenhc@lemote.com>
Date:   Thu Nov 16 11:07:15 2017 +0800

    fealnx: Fix building error on MIPS
    
    
    [ Upstream commit cc54c1d32e6a4bb3f116721abf900513173e4d02 ]
    
    This patch try to fix the building error on MIPS. The reason is MIPS
    has already defined the LONG macro, which conflicts with the LONG enum
    in drivers/net/ethernet/fealnx.c.
    
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39c3fff9ef51ba9f2748f37ad7d9cfef365e87fe
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Oct 17 23:26:10 2017 +0800

    sctp: do not peel off an assoc from one netns to another one
    
    
    [ Upstream commit df80cd9b28b9ebaa284a41df611dbf3a2d05ca74 ]
    
    Now when peeling off an association to the sock in another netns, all
    transports in this assoc are not to be rehashed and keep use the old
    key in hashtable.
    
    As a transport uses sk->net as the hash key to insert into hashtable,
    it would miss removing these transports from hashtable due to the new
    netns when closing the sock and all transports are being freeed, then
    later an use-after-free issue could be caused when looking up an asoc
    and dereferencing those transports.
    
    This is a very old issue since very beginning, ChunYu found it with
    syzkaller fuzz testing with this series:
    
      socket$inet6_sctp()
      bind$inet6()
      sendto$inet6()
      unshare(0x40000000)
      getsockopt$inet_sctp6_SCTP_GET_ASSOC_ID_LIST()
      getsockopt$inet_sctp6_SCTP_SOCKOPT_PEELOFF()
    
    This patch is to block this call when peeling one assoc off from one
    netns to another one, so that the netns of all transport would not
    go out-sync with the key in hashtable.
    
    Note that this patch didn't fix it by rehashing transports, as it's
    difficult to handle the situation when the tuple is already in use
    in the new netns. Besides, no one would like to peel off one assoc
    to another netns, considering ipaddrs, ifaces, etc. are usually
    different.
    
    Reported-by: ChunYu Wang <chunwang@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b2af5fff8faeb56e654108a7d6465d52996d3a5
Author: Ye Yin <hustcat@gmail.com>
Date:   Thu Oct 26 16:57:05 2017 +0800

    netfilter/ipvs: clear ipvs_property flag when SKB net namespace changed
    
    
    [ Upstream commit 2b5ec1a5f9738ee7bf8f5ec0526e75e00362c48f ]
    
    When run ipvs in two different network namespace at the same host, and one
    ipvs transport network traffic to the other network namespace ipvs.
    'ipvs_property' flag will make the second ipvs take no effect. So we should
    clear 'ipvs_property' when SKB network namespace changed.
    
    Fixes: 621e84d6f373 ("dev: introduce skb_scrub_packet()")
    Signed-off-by: Ye Yin <hustcat@gmail.com>
    Signed-off-by: Wei Zhou <chouryzhou@gmail.com>
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 475b9905b0c09ee64d45aa4bbcfd89f3546fc9cc
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Nov 2 12:30:25 2017 -0700

    tcp: do not mangle skb->cb[] in tcp_make_synack()
    
    
    [ Upstream commit 3b11775033dc87c3d161996c54507b15ba26414a ]
    
    Christoph Paasch sent a patch to address the following issue :
    
    tcp_make_synack() is leaving some TCP private info in skb->cb[],
    then send the packet by other means than tcp_transmit_skb()
    
    tcp_transmit_skb() makes sure to clear skb->cb[] to not confuse
    IPv4/IPV6 stacks, but we have no such cleanup for SYNACK.
    
    tcp_make_synack() should not use tcp_init_nondata_skb() :
    
    tcp_init_nondata_skb() really should be limited to skbs put in write/rtx
    queues (the ones that are only sent via tcp_transmit_skb())
    
    This patch fixes the issue and should even save few cpu cycles ;)
    
    Fixes: 971f10eca186 ("tcp: better TCP_SKB_CB layout to reduce cache line misses")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Christoph Paasch <cpaasch@apple.com>
    Reviewed-by: Christoph Paasch <cpaasch@apple.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4b4a3b633cbaaba16b1a21a2e3d3c0fead187da
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Nov 15 22:17:48 2017 -0600

    net/sctp: Always set scope_id in sctp_inet6_skb_msgname
    
    
    [ Upstream commit 7c8a61d9ee1df0fb4747879fa67a99614eb62fec ]
    
    Alexandar Potapenko while testing the kernel with KMSAN and syzkaller
    discovered that in some configurations sctp would leak 4 bytes of
    kernel stack.
    
    Working with his reproducer I discovered that those 4 bytes that
    are leaked is the scope id of an ipv6 address returned by recvmsg.
    
    With a little code inspection and a shrewd guess I discovered that
    sctp_inet6_skb_msgname only initializes the scope_id field for link
    local ipv6 addresses to the interface index the link local address
    pertains to instead of initializing the scope_id field for all ipv6
    addresses.
    
    That is almost reasonable as scope_id's are meaniningful only for link
    local addresses.  Set the scope_id in all other cases to 0 which is
    not a valid interface index to make it clear there is nothing useful
    in the scope_id field.
    
    There should be no danger of breaking userspace as the stack leak
    guaranteed that previously meaningless random data was being returned.
    
    Fixes: 372f525b495c ("SCTP:  Resync with LKSCTP tree.")
    History-tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
    Reported-by: Alexander Potapenko <glider@google.com>
    Tested-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f45934ed0bd864f878a78c3dfbd1ad437ba427f
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Tue May 9 16:59:54 2017 -0700

    ipv6/dccp: do not inherit ipv6_mc_list from parent
    
    commit 83eaddab4378db256d00d295bda6ca997cd13a52 upstream.
    
    Like commit 657831ffc38e ("dccp/tcp: do not inherit mc_list from parent")
    we should clear ipv6_mc_list etc. for IPv6 sockets too.
    
    Cc: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Connor O'Brien <connoro@google.com>
    [AmitP: cherry-picked this backported commit from android-3.18]
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>