commit cf2df8f10789ca4ad27ad0217332c2bfe6fe4c26
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Tue Jul 9 22:04:23 2019 +0100

    Linux 3.16.70

commit 188da790e1f4d164bcfdea486e91fd47e1ba59c5
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Mar 27 08:21:30 2019 -0700

    netns: provide pure entropy for net_hash_mix()
    
    commit 355b98553789b646ed97ad801a619ff898471b92 upstream.
    
    net_hash_mix() currently uses kernel address of a struct net,
    and is used in many places that could be used to reveal this
    address to a patient attacker, thus defeating KASLR, for
    the typical case (initial net namespace, &init_net is
    not dynamically allocated)
    
    I believe the original implementation tried to avoid spending
    too many cycles in this function, but security comes first.
    
    Also provide entropy regardless of CONFIG_NET_NS.
    
    Fixes: 0b4419162aa6 ("netns: introduce the net_hash_mix "salt" for hashes")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Amit Klein <aksecurity@gmail.com>
    Reported-by: Benny Pinkas <benny@pinkas.net>
    Cc: Pavel Emelyanov <xemul@openvz.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a62393d7eb63bd075c51154002825cc7ab4dd3eb
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri May 31 15:18:41 2019 +0200

    mwifiex: Fix heap overflow in mwifiex_uap_parse_tail_ies()
    
    commit 69ae4f6aac1578575126319d3f55550e7e440449 upstream.
    
    A few places in mwifiex_uap_parse_tail_ies() perform memcpy()
    unconditionally, which may lead to either buffer overflow or read over
    boundary.
    
    This patch addresses the issues by checking the read size and the
    destination size at each place more properly.  Along with the fixes,
    the patch cleans up the code slightly by introducing a temporary
    variable for the token size, and unifies the error path with the
    standard goto statement.
    
    Reported-by: huangwen <huangwen@venustech.com.cn>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16:
     - The tail IEs are parsed in mwifiex_set_mgmt_ies, which looks for two
       specific IEs rather than looping
     - Check IE length against tail length after calling
       cfg80211_find_vendor_ie(), but not after cfg80211_find_ie() since that
       already does it
     - On error, return without calling mwifiex_set_mgmt_beacon_data_ies()
     - Drop inapplicable change to WMM IE handling
     - Adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f287d868569a8aac1207986025061bf5ae6fb1fb
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed May 29 14:52:20 2019 +0200

    mwifiex: Abort at too short BSS descriptor element
    
    commit 685c9b7750bfacd6fc1db50d86579980593b7869 upstream.
    
    Currently mwifiex_update_bss_desc_with_ie() implicitly assumes that
    the source descriptor entries contain the enough size for each type
    and performs copying without checking the source size.  This may lead
    to read over boundary.
    
    Fix this by putting the source size check in appropriate places.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a24ac7326f38ffab2b63141496d075da144cec7d
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed May 29 14:52:19 2019 +0200

    mwifiex: Fix possible buffer overflows at parsing bss descriptor
    
    commit 13ec7f10b87f5fc04c4ccbd491c94c7980236a74 upstream.
    
    mwifiex_update_bss_desc_with_ie() calls memcpy() unconditionally in
    a couple places without checking the destination size.  Since the
    source is given from user-space, this may trigger a heap buffer
    overflow.
    
    Fix it by putting the length check before performing memcpy().
    
    This fix addresses CVE-2019-3846.
    
    Reported-by: huangwen <huangwen@venustech.com.cn>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1ea04ca97ab7f4d583949825dd7d55467aa2536f
Author: Alistair Strachan <astrachan@google.com>
Date:   Tue Dec 18 20:32:48 2018 -0500

    media: uvcvideo: Fix 'type' check leading to overflow
    
    commit 47bb117911b051bbc90764a8bff96543cbd2005f upstream.
    
    When initially testing the Camera Terminal Descriptor wTerminalType
    field (buffer[4]), no mask is used. Later in the function, the MSB is
    overloaded to store the descriptor subtype, and so a mask of 0x7fff
    is used to check the type.
    
    If a descriptor is specially crafted to set this overloaded bit in the
    original wTerminalType field, the initial type check will fail (falling
    through, without adjusting the buffer size), but the later type checks
    will pass, assuming the buffer has been made suitably large, causing an
    overflow.
    
    Avoid this problem by checking for the MSB in the wTerminalType field.
    If the bit is set, assume the descriptor is bad, and abort parsing it.
    
    Originally reported here:
    https://groups.google.com/forum/#!topic/syzkaller/Ot1fOE6v1d8
    A similar (non-compiling) patch was provided at that time.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Alistair Strachan <astrachan@google.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ae24fbd87a6650248cfc1b24294c598d1d3a946f
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Wed May 29 18:02:44 2019 +0100

    binder: Replace "%p" with "%pK" for stable
    
    This was done as part of upstream commits fdfb4a99b6ab "8inder:
    separate binder allocator structure from binder proc", 19c987241ca1
    "binder: separate out binder_alloc functions", and 7a4408c6bd3e
    "binder: make sure accesses to proc/thread are safe".  However, those
    commits made lots of other changes that are not suitable for stable.
    
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6d654f9d5d1fee13358005b386fe6d30a9fa0121
Author: Kirill Smelkov <kirr@nexedi.com>
Date:   Sun Jun 9 14:39:10 2019 +0000

    fuse: Add FOPEN_STREAM to use stream_open()
    
    commit bbd84f33652f852ce5992d65db4d020aba21f882 upstream.
    
    Starting from commit 9c225f2655e3 ("vfs: atomic f_pos accesses as per
    POSIX") files opened even via nonseekable_open gate read and write via lock
    and do not allow them to be run simultaneously. This can create read vs
    write deadlock if a filesystem is trying to implement a socket-like file
    which is intended to be simultaneously used for both read and write from
    filesystem client.  See commit 10dce8af3422 ("fs: stream_open - opener for
    stream-like files so that read and write can run simultaneously without
    deadlock") for details and e.g. commit 581d21a2d02a ("xenbus: fix deadlock
    on writes to /proc/xen/xenbus") for a similar deadlock example on
    /proc/xen/xenbus.
    
    To avoid such deadlock it was tempting to adjust fuse_finish_open to use
    stream_open instead of nonseekable_open on just FOPEN_NONSEEKABLE flags,
    but grepping through Debian codesearch shows users of FOPEN_NONSEEKABLE,
    and in particular GVFS which actually uses offset in its read and write
    handlers
    
            https://codesearch.debian.net/search?q=-%3Enonseekable+%3D
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1080
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1247-1346
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1399-1481
    
    so if we would do such a change it will break a real user.
    
    Add another flag (FOPEN_STREAM) for filesystem servers to indicate that the
    opened handler is having stream-like semantics; does not use file position
    and thus the kernel is free to issue simultaneous read and write request on
    opened file handle.
    
    This patch together with stream_open() should be added to stable kernels
    starting from v3.14+. This will allow to patch OSSPD and other FUSE
    filesystems that provide stream-like files to return FOPEN_STREAM |
    FOPEN_NONSEEKABLE in open handler and this way avoid the deadlock on all
    kernel versions. This should work because fuse_finish_open ignores unknown
    open flags returned from a filesystem and so passing FOPEN_STREAM to a
    kernel that is not aware of this flag cannot hurt. In turn the kernel that
    is not aware of FOPEN_STREAM will be < v3.14 where just FOPEN_NONSEEKABLE
    is sufficient to implement streams without read vs write deadlock.
    
    Cc: stable@vger.kernel.org # v3.14+
    Signed-off-by: Kirill Smelkov <kirr@nexedi.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f337ef0ad9defe1b06f57f43ee3d106177ddb5a2
Author: Kirill Smelkov <kirr@nexedi.com>
Date:   Sun Jun 9 14:39:51 2019 +0000

    fs: stream_open - opener for stream-like files so that read and write can run simultaneously without deadlock
    
    commit 10dce8af34226d90fa56746a934f8da5dcdba3df upstream.
    
    [ while porting to 3.16 xenbus conflict was trivially resolved in a way
      that actually fixes /proc/xen/xenbus deadlock introduced in 3.14,
      because original upstream commit 581d21a2d02a to fix xenbus deadlock
      was not included into 3.16 . ]
    
    Commit 9c225f2655e3 ("vfs: atomic f_pos accesses as per POSIX") added
    locking for file.f_pos access and in particular made concurrent read and
    write not possible - now both those functions take f_pos lock for the
    whole run, and so if e.g. a read is blocked waiting for data, write will
    deadlock waiting for that read to complete.
    
    This caused regression for stream-like files where previously read and
    write could run simultaneously, but after that patch could not do so
    anymore. See e.g. commit 581d21a2d02a ("xenbus: fix deadlock on writes
    to /proc/xen/xenbus") which fixes such regression for particular case of
    /proc/xen/xenbus.
    
    The patch that added f_pos lock in 2014 did so to guarantee POSIX thread
    safety for read/write/lseek and added the locking to file descriptors of
    all regular files. In 2014 that thread-safety problem was not new as it
    was already discussed earlier in 2006.
    
    However even though 2006'th version of Linus's patch was adding f_pos
    locking "only for files that are marked seekable with FMODE_LSEEK (thus
    avoiding the stream-like objects like pipes and sockets)", the 2014
    version - the one that actually made it into the tree as 9c225f2655e3 -
    is doing so irregardless of whether a file is seekable or not.
    
    See
    
        https://lore.kernel.org/lkml/53022DB1.4070805@gmail.com/
        https://lwn.net/Articles/180387
        https://lwn.net/Articles/180396
    
    for historic context.
    
    The reason that it did so is, probably, that there are many files that
    are marked non-seekable, but e.g. their read implementation actually
    depends on knowing current position to correctly handle the read. Some
    examples:
    
            kernel/power/user.c             snapshot_read
            fs/debugfs/file.c               u32_array_read
            fs/fuse/control.c               fuse_conn_waiting_read + ...
            drivers/hwmon/asus_atk0110.c    atk_debugfs_ggrp_read
            arch/s390/hypfs/inode.c         hypfs_read_iter
            ...
    
    Despite that, many nonseekable_open users implement read and write with
    pure stream semantics - they don't depend on passed ppos at all. And for
    those cases where read could wait for something inside, it creates a
    situation similar to xenbus - the write could be never made to go until
    read is done, and read is waiting for some, potentially external, event,
    for potentially unbounded time -> deadlock.
    
    Besides xenbus, there are 14 such places in the kernel that I've found
    with semantic patch (see below):
    
            drivers/xen/evtchn.c:667:8-24: ERROR: evtchn_fops: .read() can deadlock .write()
            drivers/isdn/capi/capi.c:963:8-24: ERROR: capi_fops: .read() can deadlock .write()
            drivers/input/evdev.c:527:1-17: ERROR: evdev_fops: .read() can deadlock .write()
            drivers/char/pcmcia/cm4000_cs.c:1685:7-23: ERROR: cm4000_fops: .read() can deadlock .write()
            net/rfkill/core.c:1146:8-24: ERROR: rfkill_fops: .read() can deadlock .write()
            drivers/s390/char/fs3270.c:488:1-17: ERROR: fs3270_fops: .read() can deadlock .write()
            drivers/usb/misc/ldusb.c:310:1-17: ERROR: ld_usb_fops: .read() can deadlock .write()
            drivers/hid/uhid.c:635:1-17: ERROR: uhid_fops: .read() can deadlock .write()
            net/batman-adv/icmp_socket.c:80:1-17: ERROR: batadv_fops: .read() can deadlock .write()
            drivers/media/rc/lirc_dev.c:198:1-17: ERROR: lirc_fops: .read() can deadlock .write()
            drivers/leds/uleds.c:77:1-17: ERROR: uleds_fops: .read() can deadlock .write()
            drivers/input/misc/uinput.c:400:1-17: ERROR: uinput_fops: .read() can deadlock .write()
            drivers/infiniband/core/user_mad.c:985:7-23: ERROR: umad_fops: .read() can deadlock .write()
            drivers/gnss/core.c:45:1-17: ERROR: gnss_fops: .read() can deadlock .write()
    
    In addition to the cases above another regression caused by f_pos
    locking is that now FUSE filesystems that implement open with
    FOPEN_NONSEEKABLE flag, can no longer implement bidirectional
    stream-like files - for the same reason as above e.g. read can deadlock
    write locking on file.f_pos in the kernel.
    
    FUSE's FOPEN_NONSEEKABLE was added in 2008 in a7c1b990f715 ("fuse:
    implement nonseekable open") to support OSSPD. OSSPD implements /dev/dsp
    in userspace with FOPEN_NONSEEKABLE flag, with corresponding read and
    write routines not depending on current position at all, and with both
    read and write being potentially blocking operations:
    
    See
    
        https://github.com/libfuse/osspd
        https://lwn.net/Articles/308445
    
        https://github.com/libfuse/osspd/blob/14a9cff0/osspd.c#L1406
        https://github.com/libfuse/osspd/blob/14a9cff0/osspd.c#L1438-L1477
        https://github.com/libfuse/osspd/blob/14a9cff0/osspd.c#L1479-L1510
    
    Corresponding libfuse example/test also describes FOPEN_NONSEEKABLE as
    "somewhat pipe-like files ..." with read handler not using offset.
    However that test implements only read without write and cannot exercise
    the deadlock scenario:
    
        https://github.com/libfuse/libfuse/blob/fuse-3.4.2-3-ga1bff7d/example/poll.c#L124-L131
        https://github.com/libfuse/libfuse/blob/fuse-3.4.2-3-ga1bff7d/example/poll.c#L146-L163
        https://github.com/libfuse/libfuse/blob/fuse-3.4.2-3-ga1bff7d/example/poll.c#L209-L216
    
    I've actually hit the read vs write deadlock for real while implementing
    my FUSE filesystem where there is /head/watch file, for which open
    creates separate bidirectional socket-like stream in between filesystem
    and its user with both read and write being later performed
    simultaneously. And there it is semantically not easy to split the
    stream into two separate read-only and write-only channels:
    
        https://lab.nexedi.com/kirr/wendelin.core/blob/f13aa600/wcfs/wcfs.go#L88-169
    
    Let's fix this regression. The plan is:
    
    1. We can't change nonseekable_open to include &~FMODE_ATOMIC_POS -
       doing so would break many in-kernel nonseekable_open users which
       actually use ppos in read/write handlers.
    
    2. Add stream_open() to kernel to open stream-like non-seekable file
       descriptors. Read and write on such file descriptors would never use
       nor change ppos. And with that property on stream-like files read and
       write will be running without taking f_pos lock - i.e. read and write
       could be running simultaneously.
    
    3. With semantic patch search and convert to stream_open all in-kernel
       nonseekable_open users for which read and write actually do not
       depend on ppos and where there is no other methods in file_operations
       which assume @offset access.
    
    4. Add FOPEN_STREAM to fs/fuse/ and open in-kernel file-descriptors via
       steam_open if that bit is present in filesystem open reply.
    
       It was tempting to change fs/fuse/ open handler to use stream_open
       instead of nonseekable_open on just FOPEN_NONSEEKABLE flags, but
       grepping through Debian codesearch shows users of FOPEN_NONSEEKABLE,
       and in particular GVFS which actually uses offset in its read and
       write handlers
    
            https://codesearch.debian.net/search?q=-%3Enonseekable+%3D
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1080
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1247-1346
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1399-1481
    
       so if we would do such a change it will break a real user.
    
    5. Add stream_open and FOPEN_STREAM handling to stable kernels starting
       from v3.14+ (the kernel where 9c225f2655 first appeared).
    
       This will allow to patch OSSPD and other FUSE filesystems that
       provide stream-like files to return FOPEN_STREAM | FOPEN_NONSEEKABLE
       in their open handler and this way avoid the deadlock on all kernel
       versions. This should work because fs/fuse/ ignores unknown open
       flags returned from a filesystem and so passing FOPEN_STREAM to a
       kernel that is not aware of this flag cannot hurt. In turn the kernel
       that is not aware of FOPEN_STREAM will be < v3.14 where just
       FOPEN_NONSEEKABLE is sufficient to implement streams without read vs
       write deadlock.
    
    This patch adds stream_open, converts /proc/xen/xenbus to it and adds
    semantic patch to automatically locate in-kernel places that are either
    required to be converted due to read vs write deadlock, or that are just
    safe to be converted because read and write do not use ppos and there
    are no other funky methods in file_operations.
    
    Regarding semantic patch I've verified each generated change manually -
    that it is correct to convert - and each other nonseekable_open instance
    left - that it is either not correct to convert there, or that it is not
    converted due to current stream_open.cocci limitations.
    
    The script also does not convert files that should be valid to convert,
    but that currently have .llseek = noop_llseek or generic_file_llseek for
    unknown reason despite file being opened with nonseekable_open (e.g.
    drivers/input/mousedev.c)
    
    Cc: Michael Kerrisk <mtk.manpages@gmail.com>
    Cc: Yongzhi Pan <panyongzhi@gmail.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Miklos Szeredi <miklos@szeredi.hu>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Kirill Tkhai <ktkhai@virtuozzo.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Julia Lawall <Julia.Lawall@lip6.fr>
    Cc: Nikolaus Rath <Nikolaus@rath.org>
    Cc: Han-Wen Nienhuys <hanwen@google.com>
    Signed-off-by: Kirill Smelkov <kirr@nexedi.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [ backport to 3.16: actually fixed deadlock on /proc/xen/xenbus as 581d21a2d02a was not backported to 3.16 ]
    Signed-off-by: Kirill Smelkov <kirr@nexedi.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit edb0a012ad65cf80edc68ead4884387188ec5b8d
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jun 21 06:09:55 2019 -0700

    tcp: refine memory limit test in tcp_fragment()
    
    commit b6653b3629e5b88202be3c9abc44713973f5c4b4 upstream.
    
    tcp_fragment() might be called for skbs in the write queue.
    
    Memory limits might have been exceeded because tcp_sendmsg() only
    checks limits at full skb (64KB) boundaries.
    
    Therefore, we need to make sure tcp_fragment() wont punish applications
    that might have setup very low SO_SNDBUF values.
    
    Fixes: f070ef2ac667 ("tcp: tcp_fragment() should apply sane memory limits")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Christoph Paasch <cpaasch@apple.com>
    Tested-by: Christoph Paasch <cpaasch@apple.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fd59cd035b3a0474e6a207f225798f4165773d83
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Mar 13 17:00:48 2019 +0800

    pptp: dst_release sk_dst_cache in pptp_sock_destruct
    
    commit 9417d81f4f8adfe20a12dd1fadf73a618cbd945d upstream.
    
    sk_setup_caps() is called to set sk->sk_dst_cache in pptp_connect,
    so we have to dst_release(sk->sk_dst_cache) in pptp_sock_destruct,
    otherwise, the dst refcnt will leak.
    
    It can be reproduced by this syz log:
    
      r1 = socket$pptp(0x18, 0x1, 0x2)
      bind$pptp(r1, &(0x7f0000000100)={0x18, 0x2, {0x0, @local}}, 0x1e)
      connect$pptp(r1, &(0x7f0000000000)={0x18, 0x2, {0x3, @remote}}, 0x1e)
    
    Consecutive dmesg warnings will occur:
    
      unregister_netdevice: waiting for lo to become free. Usage count = 1
    
    v1->v2:
      - use rcu_dereference_protected() instead of rcu_dereference_check(),
        as suggested by Eric.
    
    Fixes: 00959ade36ac ("PPTP: PPP over IPv4 (Point-to-Point Tunneling Protocol)")
    Reported-by: Xiumei Mu <xmu@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0e96f139f6f86a3d5cb6b5b1a912866e24131f48
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Mar 12 06:50:11 2019 -0700

    l2tp: fix infoleak in l2tp_ip6_recvmsg()
    
    commit 163d1c3d6f17556ed3c340d3789ea93be95d6c28 upstream.
    
    Back in 2013 Hannes took care of most of such leaks in commit
    bceaa90240b6 ("inet: prevent leakage of uninitialized memory to user in recv syscalls")
    
    But the bug in l2tp_ip6_recvmsg() has not been fixed.
    
    syzbot report :
    
    BUG: KMSAN: kernel-infoleak in _copy_to_user+0x16b/0x1f0 lib/usercopy.c:32
    CPU: 1 PID: 10996 Comm: syz-executor362 Not tainted 5.0.0+ #11
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x173/0x1d0 lib/dump_stack.c:113
     kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:600
     kmsan_internal_check_memory+0x9f4/0xb10 mm/kmsan/kmsan.c:694
     kmsan_copy_to_user+0xab/0xc0 mm/kmsan/kmsan_hooks.c:601
     _copy_to_user+0x16b/0x1f0 lib/usercopy.c:32
     copy_to_user include/linux/uaccess.h:174 [inline]
     move_addr_to_user+0x311/0x570 net/socket.c:227
     ___sys_recvmsg+0xb65/0x1310 net/socket.c:2283
     do_recvmmsg+0x646/0x10c0 net/socket.c:2390
     __sys_recvmmsg net/socket.c:2469 [inline]
     __do_sys_recvmmsg net/socket.c:2492 [inline]
     __se_sys_recvmmsg+0x1d1/0x350 net/socket.c:2485
     __x64_sys_recvmmsg+0x62/0x80 net/socket.c:2485
     do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x63/0xe7
    RIP: 0033:0x445819
    Code: e8 6c b6 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 2b 12 fc ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f64453eddb8 EFLAGS: 00000246 ORIG_RAX: 000000000000012b
    RAX: ffffffffffffffda RBX: 00000000006dac28 RCX: 0000000000445819
    RDX: 0000000000000005 RSI: 0000000020002f80 RDI: 0000000000000003
    RBP: 00000000006dac20 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000006dac2c
    R13: 00007ffeba8f87af R14: 00007f64453ee9c0 R15: 20c49ba5e353f7cf
    
    Local variable description: ----addr@___sys_recvmsg
    Variable was created at:
     ___sys_recvmsg+0xf6/0x1310 net/socket.c:2244
     do_recvmmsg+0x646/0x10c0 net/socket.c:2390
    
    Bytes 0-31 of 32 are uninitialized
    Memory access of size 32 starts at ffff8880ae62fbb0
    Data copied to user address 0000000020000000
    
    Fixes: a32e0eec7042 ("l2tp: introduce L2TPv3 IP encapsulation support for IPv6")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c28e2bce64782c20528afc2ef92116df0075bc1b
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Tue Mar 12 17:05:49 2019 +0200

    net/mlx4_core: Fix qp mtt size calculation
    
    commit 8511a653e9250ef36b95803c375a7be0e2edb628 upstream.
    
    Calculation of qp mtt size (in function mlx4_RST2INIT_wrapper)
    ultimately depends on function roundup_pow_of_two.
    
    If the amount of memory required by the QP is less than one page,
    roundup_pow_of_two is called with argument zero.  In this case, the
    roundup_pow_of_two result is undefined.
    
    Calling roundup_pow_of_two with a zero argument resulted in the
    following stack trace:
    
    UBSAN: Undefined behaviour in ./include/linux/log2.h:61:13
    shift exponent 64 is too large for 64-bit type 'long unsigned int'
    CPU: 4 PID: 26939 Comm: rping Tainted: G OE 4.19.0-rc1
    Hardware name: Supermicro X9DR3-F/X9DR3-F, BIOS 3.2a 07/09/2015
    Call Trace:
    dump_stack+0x9a/0xeb
    ubsan_epilogue+0x9/0x7c
    __ubsan_handle_shift_out_of_bounds+0x254/0x29d
    ? __ubsan_handle_load_invalid_value+0x180/0x180
    ? debug_show_all_locks+0x310/0x310
    ? sched_clock+0x5/0x10
    ? sched_clock+0x5/0x10
    ? sched_clock_cpu+0x18/0x260
    ? find_held_lock+0x35/0x1e0
    ? mlx4_RST2INIT_QP_wrapper+0xfb1/0x1440 [mlx4_core]
    mlx4_RST2INIT_QP_wrapper+0xfb1/0x1440 [mlx4_core]
    
    Fix this by explicitly testing for zero, and returning one if the
    argument is zero (assuming that the next higher power of 2 in this case
    should be one).
    
    Fixes: c82e9aa0a8bc ("mlx4_core: resource tracking for HCA resources used by guests")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7a437ebe1c2a1c0531b30e059c449b9ae1785aae
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Tue Mar 12 17:05:48 2019 +0200

    net/mlx4_core: Fix locking in SRIOV mode when switching between events and polling
    
    commit c07d27927f2f2e96fcd27bb9fb330c9ea65612d0 upstream.
    
    In procedures mlx4_cmd_use_events() and mlx4_cmd_use_polling(), we need to
    guarantee that there are no FW commands in progress on the comm channel
    (for VFs) or wrapped FW commands (on the PF) when SRIOV is active.
    
    We do this by also taking the slave_cmd_mutex when SRIOV is active.
    
    This is especially important when switching from event to polling, since we
    free the command-context array during the switch.  If there are FW commands
    in progress (e.g., waiting for a completion event), the completion event
    handler will access freed memory.
    
    Since the decision to use comm_wait or comm_poll is taken before grabbing
    the event_sem/poll_sem in mlx4_comm_cmd_wait/poll, we must take the
    slave_cmd_mutex as well (to guarantee that the decision to use events or
    polling and the call to the appropriate cmd function are atomic).
    
    Fixes: a7e1f04905e5 ("net/mlx4_core: Fix deadlock when switching between polling and event fw commands")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1e70758c7e844fe50fc2d0ccbe17d78398f5c6b7
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Tue Mar 12 02:43:18 2019 -0500

    net: sh_eth: fix a missing check of of_get_phy_mode
    
    commit 035a14e71f27eefa50087963b94cbdb3580d08bf upstream.
    
    of_get_phy_mode may fail and return a negative error code;
    the fix checks the return value of of_get_phy_mode and
    returns NULL of it fails.
    
    Fixes: b356e978e92f ("sh_eth: add device tree support")
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Reviewed-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0e355850c6a61e8b233017972cf7f431c97d6991
Author: Aditya Pakki <pakki001@umn.edu>
Date:   Mon Mar 4 16:48:54 2019 -0600

    md: Fix failed allocation of md_register_thread
    
    commit e406f12dde1a8375d77ea02d91f313fb1a9c6aec upstream.
    
    mddev->sync_thread can be set to NULL on kzalloc failure downstream.
    The patch checks for such a scenario and frees allocated resources.
    
    Committer node:
    
    Added similar fix to raid5.c, as suggested by Guoqing.
    
    Acked-by: Guoqing Jiang <gqjiang@suse.com>
    Signed-off-by: Aditya Pakki <pakki001@umn.edu>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6831d2d4366d13fd48ff70a3a96016d2b294783f
Author: Xiao Ni <xni@redhat.com>
Date:   Fri Mar 8 23:52:05 2019 +0800

    It's wrong to add len to sector_nr in raid10 reshape twice
    
    commit b761dcf1217760a42f7897c31dcb649f59b2333e upstream.
    
    In reshape_request it already adds len to sector_nr already. It's wrong to add len to
    sector_nr again after adding pages to bio. If there is bad block it can't copy one chunk
    at a time, it needs to goto read_more. Now the sector_nr is wrong. It can cause data
    corruption.
    
    Signed-off-by: Xiao Ni <xni@redhat.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7a8c67f3ff34e9df1e8a13e3f6b924dcf1543c4c
Author: Zev Weiss <zev@bewilderbeest.net>
Date:   Mon Mar 11 23:28:02 2019 -0700

    kernel/sysctl.c: add missing range check in do_proc_dointvec_minmax_conv
    
    commit 8cf7630b29701d364f8df4a50e4f1f5e752b2778 upstream.
    
    This bug has apparently existed since the introduction of this function
    in the pre-git era (4500e91754d3 in Thomas Gleixner's history.git,
    "[NET]: Add proc_dointvec_userhz_jiffies, use it for proper handling of
    neighbour sysctls.").
    
    As a minimal fix we can simply duplicate the corresponding check in
    do_proc_dointvec_conv().
    
    Link: http://lkml.kernel.org/r/20190207123426.9202-3-zev@bewilderbeest.net
    Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
    Cc: Brendan Higgins <brendanhiggins@google.com>
    Cc: Iurii Zaikin <yzaikin@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Luis Chamberlain <mcgrof@kernel.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 415f08eb363a0204fb185743469f500e120c6618
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Mar 10 10:39:37 2019 -0700

    gro_cells: make sure device is up in gro_cells_receive()
    
    commit 2a5ff07a0eb945f291e361aa6f6becca8340ba46 upstream.
    
    We keep receiving syzbot reports [1] that show that tunnels do not play
    the rcu/IFF_UP rules properly.
    
    At device dismantle phase, gro_cells_destroy() will be called
    only after a full rcu grace period is observed after IFF_UP
    has been cleared.
    
    This means that IFF_UP needs to be tested before queueing packets
    into netif_rx() or gro_cells.
    
    This patch implements the test in gro_cells_receive() because
    too many callers do not seem to bother enough.
    
    [1]
    BUG: unable to handle kernel paging request at fffff4ca0b9ffffe
    PGD 0 P4D 0
    Oops: 0000 [#1] PREEMPT SMP KASAN
    CPU: 0 PID: 21 Comm: kworker/u4:1 Not tainted 5.0.0+ #97
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: netns cleanup_net
    RIP: 0010:__skb_unlink include/linux/skbuff.h:1929 [inline]
    RIP: 0010:__skb_dequeue include/linux/skbuff.h:1945 [inline]
    RIP: 0010:__skb_queue_purge include/linux/skbuff.h:2656 [inline]
    RIP: 0010:gro_cells_destroy net/core/gro_cells.c:89 [inline]
    RIP: 0010:gro_cells_destroy+0x19d/0x360 net/core/gro_cells.c:78
    Code: 03 42 80 3c 20 00 0f 85 53 01 00 00 48 8d 7a 08 49 8b 47 08 49 c7 07 00 00 00 00 48 89 f9 49 c7 47 08 00 00 00 00 48 c1 e9 03 <42> 80 3c 21 00 0f 85 10 01 00 00 48 89 c1 48 89 42 08 48 c1 e9 03
    RSP: 0018:ffff8880aa3f79a8 EFLAGS: 00010a02
    RAX: 00ffffffffffffe8 RBX: ffffe8ffffc64b70 RCX: 1ffff8ca0b9ffffe
    RDX: ffffc6505cffffe8 RSI: ffffffff858410ca RDI: ffffc6505cfffff0
    RBP: ffff8880aa3f7a08 R08: ffff8880aa3e8580 R09: fffffbfff1263645
    R10: fffffbfff1263644 R11: ffffffff8931b223 R12: dffffc0000000000
    R13: 0000000000000000 R14: ffffe8ffffc64b80 R15: ffffe8ffffc64b75
    kobject: 'loop2' (000000004bd7d84a): kobject_uevent_env
    FS:  0000000000000000(0000) GS:ffff8880ae800000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: fffff4ca0b9ffffe CR3: 0000000094941000 CR4: 00000000001406f0
    Call Trace:
    kobject: 'loop2' (000000004bd7d84a): fill_kobj_path: path = '/devices/virtual/block/loop2'
     ip_tunnel_dev_free+0x19/0x60 net/ipv4/ip_tunnel.c:1010
     netdev_run_todo+0x51c/0x7d0 net/core/dev.c:8970
     rtnl_unlock+0xe/0x10 net/core/rtnetlink.c:116
     ip_tunnel_delete_nets+0x423/0x5f0 net/ipv4/ip_tunnel.c:1124
     vti_exit_batch_net+0x23/0x30 net/ipv4/ip_vti.c:495
     ops_exit_list.isra.0+0x105/0x160 net/core/net_namespace.c:156
     cleanup_net+0x3fb/0x960 net/core/net_namespace.c:551
     process_one_work+0x98e/0x1790 kernel/workqueue.c:2173
     worker_thread+0x98/0xe40 kernel/workqueue.c:2319
     kthread+0x357/0x430 kernel/kthread.c:246
     ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352
    Modules linked in:
    CR2: fffff4ca0b9ffffe
       [ end trace 513fc9c1338d1cb3 ]
    RIP: 0010:__skb_unlink include/linux/skbuff.h:1929 [inline]
    RIP: 0010:__skb_dequeue include/linux/skbuff.h:1945 [inline]
    RIP: 0010:__skb_queue_purge include/linux/skbuff.h:2656 [inline]
    RIP: 0010:gro_cells_destroy net/core/gro_cells.c:89 [inline]
    RIP: 0010:gro_cells_destroy+0x19d/0x360 net/core/gro_cells.c:78
    Code: 03 42 80 3c 20 00 0f 85 53 01 00 00 48 8d 7a 08 49 8b 47 08 49 c7 07 00 00 00 00 48 89 f9 49 c7 47 08 00 00 00 00 48 c1 e9 03 <42> 80 3c 21 00 0f 85 10 01 00 00 48 89 c1 48 89 42 08 48 c1 e9 03
    RSP: 0018:ffff8880aa3f79a8 EFLAGS: 00010a02
    RAX: 00ffffffffffffe8 RBX: ffffe8ffffc64b70 RCX: 1ffff8ca0b9ffffe
    RDX: ffffc6505cffffe8 RSI: ffffffff858410ca RDI: ffffc6505cfffff0
    RBP: ffff8880aa3f7a08 R08: ffff8880aa3e8580 R09: fffffbfff1263645
    R10: fffffbfff1263644 R11: ffffffff8931b223 R12: dffffc0000000000
    kobject: 'loop3' (00000000e4ee57a6): kobject_uevent_env
    R13: 0000000000000000 R14: ffffe8ffffc64b80 R15: ffffe8ffffc64b75
    FS:  0000000000000000(0000) GS:ffff8880ae800000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: fffff4ca0b9ffffe CR3: 0000000094941000 CR4: 00000000001406f0
    
    Fixes: c9e6bc644e55 ("net: add gro_cells infrastructure")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Adjust filename, context
     - Return type is void]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b856c1765953bc0a46e4feaf0aa053b2021a50e0
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Mar 10 10:36:40 2019 -0700

    vxlan: test dev->flags & IFF_UP before calling gro_cells_receive()
    
    commit 59cbf56fcd98ba2a715b6e97c4e43f773f956393 upstream.
    
    Same reasons than the ones explained in commit 4179cb5a4c92
    ("vxlan: test dev->flags & IFF_UP before calling netif_rx()")
    
    netif_rx() or gro_cells_receive() must be called under a strict contract.
    
    At device dismantle phase, core networking clears IFF_UP
    and flush_all_backlogs() is called after rcu grace period
    to make sure no incoming packet might be in a cpu backlog
    and still referencing the device.
    
    A similar protocol is used for gro_cells infrastructure, as
    gro_cells_destroy() will be called only after a full rcu
    grace period is observed after IFF_UP has been cleared.
    
    Most drivers call netif_rx() from their interrupt handler,
    and since the interrupts are disabled at device dismantle,
    netif_rx() does not have to check dev->flags & IFF_UP
    
    Virtual drivers do not have this guarantee, and must
    therefore make the check themselves.
    
    Otherwise we risk use-after-free and/or crashes.
    
    Fixes: d342894c5d2f ("vxlan: virtual extensible lan")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0bab330e755a0efa5f7183b1f4fa5fa11170b0a5
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Mar 8 14:50:54 2019 +0800

    route: set the deleted fnhe fnhe_daddr to 0 in ip_del_fnhe to fix a race
    
    commit ee60ad219f5c7c4fb2f047f88037770063ef785f upstream.
    
    The race occurs in __mkroute_output() when 2 threads lookup a dst:
    
      CPU A                 CPU B
      find_exception()
                            find_exception() [fnhe expires]
                            ip_del_fnhe() [fnhe is deleted]
      rt_bind_exception()
    
    In rt_bind_exception() it will bind a deleted fnhe with the new dst, and
    this dst will get no chance to be freed. It causes a dev defcnt leak and
    consecutive dmesg warnings:
    
      unregister_netdevice: waiting for ethX to become free. Usage count = 1
    
    Especially thanks Jon to identify the issue.
    
    This patch fixes it by setting fnhe_daddr to 0 in ip_del_fnhe() to stop
    binding the deleted fnhe with a new dst when checking fnhe's fnhe_daddr
    and daddr in rt_bind_exception().
    
    It works as both ip_del_fnhe() and rt_bind_exception() are protected by
    fnhe_lock and the fhne is freed by kfree_rcu().
    
    Fixes: deed49df7390 ("route: check and remove route cache when we get route")
    Signed-off-by: Jon Maxwell <jmaxwell37@gmail.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c6811c231798d516cab653b34a1d44d7491edf27
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Mar 7 08:41:22 2019 +0300

    xen, cpu_hotplug: Prevent an out of bounds access
    
    commit 201676095dda7e5b31a5e1d116d10fc22985075e upstream.
    
    The "cpu" variable comes from the sscanf() so Smatch marks it as
    untrusted data.  We can't pass a higher value than "nr_cpu_ids" to
    cpu_possible() or it results in an out of bounds access.
    
    Fixes: d68d82afd4c8 ("xen: implement CPU hotplugging")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c70d1929aa130f2a9fa00dd2ca6ac532bcb599e9
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Thu Mar 7 16:28:18 2019 -0800

    lib/div64.c: off by one in shift
    
    commit cdc94a37493135e355dfc0b0e086d84e3eadb50d upstream.
    
    fls counts bits starting from 1 to 32 (returns 0 for zero argument).  If
    we add 1 we shift right one bit more and loose precision from divisor,
    what cause function incorect results with some numbers.
    
    Corrected code was tested in user-space, see bugzilla:
       https://bugzilla.kernel.org/show_bug.cgi?id=202391
    
    Link: http://lkml.kernel.org/r/1548686944-11891-1-git-send-email-sgruszka@redhat.com
    Fixes: 658716d19f8f ("div64_u64(): improve precision on 32bit platforms")
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Reported-by: Siarhei Volkau <lis8215@gmail.com>
    Tested-by: Siarhei Volkau <lis8215@gmail.com>
    Acked-by: 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 d7ee7a3fcf72cfea7852d101e0223335ff7e9759
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Mar 7 11:22:41 2019 +0100

    cpufreq: pxa2xx: remove incorrect __init annotation
    
    commit 9505b98ccddc454008ca7efff90044e3e857c827 upstream.
    
    pxa_cpufreq_init_voltages() is marked __init but usually inlined into
    the non-__init pxa_cpufreq_init() function. When building with clang,
    it can stay as a standalone function in a discarded section, and produce
    this warning:
    
    WARNING: vmlinux.o(.text+0x616a00): Section mismatch in reference from the function pxa_cpufreq_init() to the function .init.text:pxa_cpufreq_init_voltages()
    The function pxa_cpufreq_init() references
    the function __init pxa_cpufreq_init_voltages().
    This is often because pxa_cpufreq_init lacks a __init
    annotation or the annotation of pxa_cpufreq_init_voltages is wrong.
    
    Fixes: 50e77fcd790e ("ARM: pxa: remove __init from cpufreq_driver->init()")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bc736b1a34c2e297019cac086068dcbe98dc24d9
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Mar 7 09:36:33 2019 -0800

    net/hsr: fix possible crash in add_timer()
    
    commit 1e027960edfaa6a43f9ca31081729b716598112b upstream.
    
    syzbot found another add_timer() issue, this time in net/hsr [1]
    
    Let's use mod_timer() which is safe.
    
    [1]
    kernel BUG at kernel/time/timer.c:1136!
    invalid opcode: 0000 [#1] PREEMPT SMP KASAN
    CPU: 0 PID: 15909 Comm: syz-executor.3 Not tainted 5.0.0+ #97
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    kobject: 'loop2' (00000000f5629718): kobject_uevent_env
    RIP: 0010:add_timer kernel/time/timer.c:1136 [inline]
    RIP: 0010:add_timer+0x654/0xbe0 kernel/time/timer.c:1134
    Code: 0f 94 c5 31 ff 44 89 ee e8 09 61 0f 00 45 84 ed 0f 84 77 fd ff ff e8 bb 5f 0f 00 e8 07 10 a0 ff e9 68 fd ff ff e8 ac 5f 0f 00 <0f> 0b e8 a5 5f 0f 00 0f 0b e8 9e 5f 0f 00 4c 89 b5 58 ff ff ff e9
    RSP: 0018:ffff8880656eeca0 EFLAGS: 00010246
    kobject: 'loop2' (00000000f5629718): fill_kobj_path: path = '/devices/virtual/block/loop2'
    RAX: 0000000000040000 RBX: 1ffff1100caddd9a RCX: ffffc9000c436000
    RDX: 0000000000040000 RSI: ffffffff816056c4 RDI: ffff88806a2f6cc8
    RBP: ffff8880656eed58 R08: ffff888067f4a300 R09: ffff888067f4abc8
    R10: 0000000000000000 R11: 0000000000000000 R12: ffff88806a2f6cc0
    R13: dffffc0000000000 R14: 0000000000000001 R15: ffff8880656eed30
    FS:  00007fc2019bf700(0000) GS:ffff8880ae800000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000738000 CR3: 0000000067e8e000 CR4: 00000000001406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     hsr_check_announce net/hsr/hsr_device.c:99 [inline]
     hsr_check_carrier_and_operstate+0x567/0x6f0 net/hsr/hsr_device.c:120
     hsr_netdev_notify+0x297/0xa00 net/hsr/hsr_main.c:51
     notifier_call_chain+0xc7/0x240 kernel/notifier.c:93
     __raw_notifier_call_chain kernel/notifier.c:394 [inline]
     raw_notifier_call_chain+0x2e/0x40 kernel/notifier.c:401
     call_netdevice_notifiers_info+0x3f/0x90 net/core/dev.c:1739
     call_netdevice_notifiers_extack net/core/dev.c:1751 [inline]
     call_netdevice_notifiers net/core/dev.c:1765 [inline]
     dev_open net/core/dev.c:1436 [inline]
     dev_open+0x143/0x160 net/core/dev.c:1424
     team_port_add drivers/net/team/team.c:1203 [inline]
     team_add_slave+0xa07/0x15d0 drivers/net/team/team.c:1933
     do_set_master net/core/rtnetlink.c:2358 [inline]
     do_set_master+0x1d4/0x230 net/core/rtnetlink.c:2332
     do_setlink+0x966/0x3510 net/core/rtnetlink.c:2493
     rtnl_setlink+0x271/0x3b0 net/core/rtnetlink.c:2747
     rtnetlink_rcv_msg+0x465/0xb00 net/core/rtnetlink.c:5192
     netlink_rcv_skb+0x17a/0x460 net/netlink/af_netlink.c:2485
     rtnetlink_rcv+0x1d/0x30 net/core/rtnetlink.c:5210
     netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
     netlink_unicast+0x536/0x720 net/netlink/af_netlink.c:1336
     netlink_sendmsg+0x8ae/0xd70 net/netlink/af_netlink.c:1925
     sock_sendmsg_nosec net/socket.c:622 [inline]
     sock_sendmsg+0xdd/0x130 net/socket.c:632
     sock_write_iter+0x27c/0x3e0 net/socket.c:923
     call_write_iter include/linux/fs.h:1869 [inline]
     do_iter_readv_writev+0x5e0/0x8e0 fs/read_write.c:680
     do_iter_write fs/read_write.c:956 [inline]
     do_iter_write+0x184/0x610 fs/read_write.c:937
     vfs_writev+0x1b3/0x2f0 fs/read_write.c:1001
     do_writev+0xf6/0x290 fs/read_write.c:1036
     __do_sys_writev fs/read_write.c:1109 [inline]
     __se_sys_writev fs/read_write.c:1106 [inline]
     __x64_sys_writev+0x75/0xb0 fs/read_write.c:1106
     do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x457f29
    Code: ad b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 7b b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fc2019bec78 EFLAGS: 00000246 ORIG_RAX: 0000000000000014
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 0000000000457f29
    RDX: 0000000000000001 RSI: 00000000200000c0 RDI: 0000000000000003
    RBP: 000000000073bf00 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007fc2019bf6d4
    R13: 00000000004c4a60 R14: 00000000004dd218 R15: 00000000ffffffff
    
    Fixes: f421436a591d ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Arvid Brodin <arvid.brodin@alten.se>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 15ae3ceed024acbfa43779c4ff0d573faf4aa53f
Author: Felipe Franciosi <felipe@nutanix.com>
Date:   Wed Feb 27 16:10:34 2019 +0000

    scsi: virtio_scsi: don't send sc payload with tmfs
    
    commit 3722e6a52174d7c3a00e6f5efd006ca093f346c1 upstream.
    
    The virtio scsi spec defines struct virtio_scsi_ctrl_tmf as a set of
    device-readable records and a single device-writable response entry:
    
        struct virtio_scsi_ctrl_tmf
        {
            // Device-readable part
            le32 type;
            le32 subtype;
            u8 lun[8];
            le64 id;
            // Device-writable part
            u8 response;
        }
    
    The above should be organised as two descriptor entries (or potentially
    more if using VIRTIO_F_ANY_LAYOUT), but without any extra data after "le64
    id" or after "u8 response".
    
    The Linux driver doesn't respect that, with virtscsi_abort() and
    virtscsi_device_reset() setting cmd->sc before calling virtscsi_tmf().  It
    results in the original scsi command payload (or writable buffers) added to
    the tmf.
    
    This fixes the problem by leaving cmd->sc zeroed out, which makes
    virtscsi_kick_cmd() add the tmf to the control vq without any payload.
    
    Signed-off-by: Felipe Franciosi <felipe@nutanix.com>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a707bc57cd567bb3a6fc0a72aaafe9675801067c
Author: Halil Pasic <pasic@linux.ibm.com>
Date:   Mon Jan 21 13:19:43 2019 +0100

    s390/virtio: handle find on invalid queue gracefully
    
    commit 3438b2c039b4bf26881786a1f3450f016d66ad11 upstream.
    
    A queue with a capacity of zero is clearly not a valid virtio queue.
    Some emulators report zero queue size if queried with an invalid queue
    index. Instead of crashing in this case let us just return -ENOENT. To
    make that work properly, let us fix the notifier cleanup logic as well.
    
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Signed-off-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ff9465feafe1a0a754b21091c0389b1486a07c59
Author: Daniel Jordan <daniel.m.jordan@oracle.com>
Date:   Tue Mar 5 15:48:19 2019 -0800

    mm, swap: bounds check swap_info array accesses to avoid NULL derefs
    
    commit c10d38cc8d3e43f946b6c2bf4602c86791587f30 upstream.
    
    Dan Carpenter reports a potential NULL dereference in
    get_swap_page_of_type:
    
      Smatch complains that the NULL checks on "si" aren't consistent.  This
      seems like a real bug because we have not ensured that the type is
      valid and so "si" can be NULL.
    
    Add the missing check for NULL, taking care to use a read barrier to
    ensure CPU1 observes CPU0's updates in the correct order:
    
         CPU0                           CPU1
         alloc_swap_info()              if (type >= nr_swapfiles)
           swap_info[type] = p              /* handle invalid entry */
           smp_wmb()                    smp_rmb()
           ++nr_swapfiles               p = swap_info[type]
    
    Without smp_rmb, CPU1 might observe CPU0's write to nr_swapfiles before
    CPU0's write to swap_info[type] and read NULL from swap_info[type].
    
    Ying Huang noticed other places in swapfile.c don't order these reads
    properly.  Introduce swap_type_to_swap_info to encourage correct usage.
    
    Use READ_ONCE and WRITE_ONCE to follow the Linux Kernel Memory Model
    (see tools/memory-model/Documentation/explanation.txt).
    
    This ordering need not be enforced in places where swap_lock is held
    (e.g.  si_swapinfo) because swap_lock serializes updates to nr_swapfiles
    and the swap_info array.
    
    Link: http://lkml.kernel.org/r/20190131024410.29859-1-daniel.m.jordan@oracle.com
    Fixes: ec8acf20afb8 ("swap: add per-partition lock for swapfile")
    Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Suggested-by: "Huang, Ying" <ying.huang@intel.com>
    Reviewed-by: Andrea Parri <andrea.parri@amarulasolutions.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Omar Sandoval <osandov@fb.com>
    Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Shaohua Li <shli@kernel.org>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16:
     - Add swp_swap_info(), as done in upstream commit 0bcac06f27d7
       "mm, swap: skip swapcache for swapin of synchronous device"
     - Use ACCESS_ONCE() instead of {READ,WRITE}_ONCE()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 24c6b38285915c6caef4bed62ac27857fe77f2b3
Author: Hugh Dickins <hughd@google.com>
Date:   Mon Aug 17 17:34:27 2015 -0700

    mm: fix potential data race in SyS_swapon
    
    commit 6f179af88f60b32c2855e7f3e16ea8e336a7043f upstream.
    
    While running KernelThreadSanitizer (ktsan) on upstream kernel with
    trinity, we got a few reports from SyS_swapon, here is one of them:
    
    Read of size 8 by thread T307 (K7621):
     [<     inlined    >] SyS_swapon+0x3c0/0x1850 SYSC_swapon mm/swapfile.c:2395
     [<ffffffff812242c0>] SyS_swapon+0x3c0/0x1850 mm/swapfile.c:2345
     [<ffffffff81e97c8a>] ia32_do_call+0x1b/0x25
    
    Looks like the swap_lock should be taken when iterating through the
    swap_info array on lines 2392 - 2401: q->swap_file may be reset to
    NULL by another thread before it is dereferenced for f_mapping.
    
    But why is that iteration needed at all?  Doesn't the claim_swapfile()
    which follows do all that is needed to check for a duplicate entry -
    FMODE_EXCL on a bdev, testing IS_SWAPFILE under i_mutex on a regfile?
    
    Well, not quite: bd_may_claim() allows the same "holder" to claim the
    bdev again, so we do need to use a different holder than "sys_swapon";
    and we should not replace appropriate -EBUSY by inappropriate -EINVAL.
    
    Index i was reused in a cpu loop further down: renamed cpu there.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c2bf7c6315d9d553211221016b6b911de22924b7
Author: Roman Penyaev <rpenyaev@suse.de>
Date:   Tue Mar 5 15:43:20 2019 -0800

    mm/vmalloc: fix size check for remap_vmalloc_range_partial()
    
    commit 401592d2e095947344e10ec0623adbcd58934dd4 upstream.
    
    When VM_NO_GUARD is not set area->size includes adjacent guard page,
    thus for correct size checking get_vm_area_size() should be used, but
    not area->size.
    
    This fixes possible kernel oops when userspace tries to mmap an area on
    1 page bigger than was allocated by vmalloc_user() call: the size check
    inside remap_vmalloc_range_partial() accounts non-existing guard page
    also, so check successfully passes but vmalloc_to_page() returns NULL
    (guard page does not physically exist).
    
    The following code pattern example should trigger an oops:
    
      static int oops_mmap(struct file *file, struct vm_area_struct *vma)
      {
            void *mem;
    
            mem = vmalloc_user(4096);
            BUG_ON(!mem);
            /* Do not care about mem leak */
    
            return remap_vmalloc_range(vma, mem, 0);
      }
    
    And userspace simply mmaps size + PAGE_SIZE:
    
      mmap(NULL, 8192, PROT_WRITE|PROT_READ, MAP_PRIVATE, fd, 0);
    
    Possible candidates for oops which do not have any explicit size
    checks:
    
       *** drivers/media/usb/stkwebcam/stk-webcam.c:
       v4l_stk_mmap[789]   ret = remap_vmalloc_range(vma, sbuf->buffer, 0);
    
    Or the following one:
    
       *** drivers/video/fbdev/core/fbmem.c
       static int
       fb_mmap(struct file *file, struct vm_area_struct * vma)
            ...
            res = fb->fb_mmap(info, vma);
    
    Where fb_mmap callback calls remap_vmalloc_range() directly without any
    explicit checks:
    
       *** drivers/video/fbdev/vfb.c
       static int vfb_mmap(struct fb_info *info,
                 struct vm_area_struct *vma)
       {
           return remap_vmalloc_range(vma, (void *)info->fix.smem_start, vma->vm_pgoff);
       }
    
    Link: http://lkml.kernel.org/r/20190103145954.16942-2-rpenyaev@suse.de
    Signed-off-by: Roman Penyaev <rpenyaev@suse.de>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: "Luis R. Rodriguez" <mcgrof@kernel.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 edef98ab18e157a428951bf62b2734a4db084bab
Author: Pavel Shilovsky <piastryyy@gmail.com>
Date:   Mon Mar 4 17:48:01 2019 -0800

    CIFS: Fix read after write for files with read caching
    
    commit 6dfbd84684700cb58b34e8602c01c12f3d2595c8 upstream.
    
    When we have a READ lease for a file and have just issued a write
    operation to the server we need to purge the cache and set oplock/lease
    level to NONE to avoid reading stale data. Currently we do that
    only if a write operation succedeed thus not covering cases when
    a request was sent to the server but a negative error code was
    returned later for some other reasons (e.g. -EIOCBQUEUED or -EINTR).
    Fix this by turning off caching regardless of the error code being
    returned.
    
    The patches fixes generic tests 075 and 112 from the xfs-tests.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 70fc1659eb4d23c8c469f7ba307ad1ab5a11dc2a
Author: NeilBrown <neilb@suse.com>
Date:   Mon Mar 4 14:08:22 2019 +1100

    nfsd: fix memory corruption caused by readdir
    
    commit b602345da6cbb135ba68cf042df8ec9a73da7981 upstream.
    
    If the result of an NFSv3 readdir{,plus} request results in the
    "offset" on one entry having to be split across 2 pages, and is sized
    so that the next directory entry doesn't fit in the requested size,
    then memory corruption can happen.
    
    When encode_entry() is called after encoding the last entry that fits,
    it notices that ->offset and ->offset1 are set, and so stores the
    offset value in the two pages as required.  It clears ->offset1 but
    *does not* clear ->offset.
    
    Normally this omission doesn't matter as encode_entry_baggage() will
    be called, and will set ->offset to a suitable value (not on a page
    boundary).
    But in the case where cd->buflen < elen and nfserr_toosmall is
    returned, ->offset is not reset.
    
    This means that nfsd3proc_readdirplus will see ->offset with a value 4
    bytes before the end of a page, and ->offset1 set to NULL.
    It will try to write 8bytes to ->offset.
    If we are lucky, the next page will be read-only, and the system will
      BUG: unable to handle kernel paging request at...
    
    If we are unlucky, some innocent page will have the first 4 bytes
    corrupted.
    
    nfsd3proc_readdir() doesn't even check for ->offset1, it just blindly
    writes 8 bytes to the offset wherever it is.
    
    Fix this by clearing ->offset after it is used, and copying the
    ->offset handling code from nfsd3_proc_readdirplus into
    nfsd3_proc_readdir.
    
    (Note that the commit hash in the Fixes tag is from the 'history'
     tree - this bug predates git).
    
    Fixes: 0b1d57cf7654 ("[PATCH] kNFSd: Fix nfs3 dentry encoding")
    Fixes-URL: https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/commit/?id=0b1d57cf7654
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 588fe29cf5c3c6d6c098ffd6b6afeda91e49d71f
Author: Pavel Shilovsky <piastryyy@gmail.com>
Date:   Wed Feb 13 15:43:08 2019 -0800

    CIFS: Do not reset lease state to NONE on lease break
    
    commit 7b9b9edb49ad377b1e06abf14354c227e9ac4b06 upstream.
    
    Currently on lease break the client sets a caching level twice:
    when oplock is detected and when oplock is processed. While the
    1st attempt sets the level to the value provided by the server,
    the 2nd one resets the level to None unconditionally.
    This happens because the oplock/lease processing code was changed
    to avoid races between page cache flushes and oplock breaks.
    The commit c11f1df5003d534 ("cifs: Wait for writebacks to complete
    before attempting write.") fixed the races for oplocks but didn't
    apply the same changes for leases resulting in overwriting the
    server granted value to None. Fix this by properly processing
    lease breaks.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    [bwh: Backported to 3.16: drop change in smb311_operations]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 98afbb3781467280e5dd99b4484a0efd87291c4b
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Sun Mar 3 07:34:57 2019 +0000

    ip6mr: Do not call __IP6_INC_STATS() from preemptible context
    
    commit 87c11f1ddbbad38ad8bad47af133a8208985fbdf upstream.
    
    Similar to commit 44f49dd8b5a6 ("ipmr: fix possible race resulting from
    improper usage of IP_INC_STATS_BH() in preemptible context."), we cannot
    assume preemption is disabled when incrementing the counter and
    accessing a per-CPU variable.
    
    Preemption can be enabled when we add a route in process context that
    corresponds to packets stored in the unresolved queue, which are then
    forwarded using this route [1].
    
    Fix this by using IP6_INC_STATS() which takes care of disabling
    preemption on architectures where it is needed.
    
    [1]
    [  157.451447] BUG: using __this_cpu_add() in preemptible [00000000] code: smcrouted/2314
    [  157.460409] caller is ip6mr_forward2+0x73e/0x10e0
    [  157.460434] CPU: 3 PID: 2314 Comm: smcrouted Not tainted 5.0.0-rc7-custom-03635-g22f2712113f1 #1336
    [  157.460449] Hardware name: Mellanox Technologies Ltd. MSN2100-CB2FO/SA001017, BIOS 5.6.5 06/07/2016
    [  157.460461] Call Trace:
    [  157.460486]  dump_stack+0xf9/0x1be
    [  157.460553]  check_preemption_disabled+0x1d6/0x200
    [  157.460576]  ip6mr_forward2+0x73e/0x10e0
    [  157.460705]  ip6_mr_forward+0x9a0/0x1510
    [  157.460771]  ip6mr_mfc_add+0x16b3/0x1e00
    [  157.461155]  ip6_mroute_setsockopt+0x3cb/0x13c0
    [  157.461384]  do_ipv6_setsockopt.isra.8+0x348/0x4060
    [  157.462013]  ipv6_setsockopt+0x90/0x110
    [  157.462036]  rawv6_setsockopt+0x4a/0x120
    [  157.462058]  __sys_setsockopt+0x16b/0x340
    [  157.462198]  __x64_sys_setsockopt+0xbf/0x160
    [  157.462220]  do_syscall_64+0x14d/0x610
    [  157.462349]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: 0912ea38de61 ("[IPV6] MROUTE: Add stats in multicast routing module method ip6_mr_forward().")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reported-by: Amit Cohen <amitc@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3c169c57e6c00c36b16c59ccb0e5adbd784b157b
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Sat Mar 2 10:34:55 2019 +0800

    net-sysfs: Fix mem leak in netdev_register_kobject
    
    commit 895a5e96dbd6386c8e78e5b78e067dcc67b7f0ab upstream.
    
    syzkaller report this:
    BUG: memory leak
    unreferenced object 0xffff88837a71a500 (size 256):
      comm "syz-executor.2", pid 9770, jiffies 4297825125 (age 17.843s)
      hex dump (first 32 bytes):
        00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00  .....N..........
        ff ff ff ff ff ff ff ff 20 c0 ef 86 ff ff ff ff  ........ .......
      backtrace:
        [<00000000db12624b>] netdev_register_kobject+0x124/0x2e0 net/core/net-sysfs.c:1751
        [<00000000dc49a994>] register_netdevice+0xcc1/0x1270 net/core/dev.c:8516
        [<00000000e5f3fea0>] tun_set_iff drivers/net/tun.c:2649 [inline]
        [<00000000e5f3fea0>] __tun_chr_ioctl+0x2218/0x3d20 drivers/net/tun.c:2883
        [<000000001b8ac127>] vfs_ioctl fs/ioctl.c:46 [inline]
        [<000000001b8ac127>] do_vfs_ioctl+0x1a5/0x10e0 fs/ioctl.c:690
        [<0000000079b269f8>] ksys_ioctl+0x89/0xa0 fs/ioctl.c:705
        [<00000000de649beb>] __do_sys_ioctl fs/ioctl.c:712 [inline]
        [<00000000de649beb>] __se_sys_ioctl fs/ioctl.c:710 [inline]
        [<00000000de649beb>] __x64_sys_ioctl+0x74/0xb0 fs/ioctl.c:710
        [<000000007ebded1e>] do_syscall_64+0xc8/0x580 arch/x86/entry/common.c:290
        [<00000000db315d36>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
        [<00000000115be9bb>] 0xffffffffffffffff
    
    It should call kset_unregister to free 'dev->queues_kset'
    in error path of register_queue_kobjects, otherwise will cause a mem leak.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: 1d24eb4815d1 ("xps: Transmit Packet Steering")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: net_device pointer is called "net", confusingly]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 66c4b551dca9fa22b3f9464d54f09fd53c5d3d44
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Wed Feb 27 11:45:30 2019 +0000

    powerpc/32: Clear on-stack exception marker upon exception return
    
    commit 9580b71b5a7863c24a9bd18bcd2ad759b86b1eff upstream.
    
    Clear the on-stack STACK_FRAME_REGS_MARKER on exception exit in order
    to avoid confusing stacktrace like the one below.
    
      Call Trace:
      [c0e9dca0] [c01c42a0] print_address_description+0x64/0x2bc (unreliable)
      [c0e9dcd0] [c01c4684] kasan_report+0xfc/0x180
      [c0e9dd10] [c0895130] memchr+0x24/0x74
      [c0e9dd30] [c00a9e38] msg_print_text+0x124/0x574
      [c0e9dde0] [c00ab710] console_unlock+0x114/0x4f8
      [c0e9de40] [c00adc60] vprintk_emit+0x188/0x1c4
      --- interrupt: c0e9df00 at 0x400f330
          LR = init_stack+0x1f00/0x2000
      [c0e9de80] [c00ae3c4] printk+0xa8/0xcc (unreliable)
      [c0e9df20] [c0c27e44] early_irq_init+0x38/0x108
      [c0e9df50] [c0c15434] start_kernel+0x310/0x488
      [c0e9dff0] [00003484] 0x3484
    
    With this patch the trace becomes:
    
      Call Trace:
      [c0e9dca0] [c01c42c0] print_address_description+0x64/0x2bc (unreliable)
      [c0e9dcd0] [c01c46a4] kasan_report+0xfc/0x180
      [c0e9dd10] [c0895150] memchr+0x24/0x74
      [c0e9dd30] [c00a9e58] msg_print_text+0x124/0x574
      [c0e9dde0] [c00ab730] console_unlock+0x114/0x4f8
      [c0e9de40] [c00adc80] vprintk_emit+0x188/0x1c4
      [c0e9de80] [c00ae3e4] printk+0xa8/0xcc
      [c0e9df20] [c0c27e44] early_irq_init+0x38/0x108
      [c0e9df50] [c0c15434] start_kernel+0x310/0x488
      [c0e9dff0] [00003484] 0x3484
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8463eed58e131d0cc4db4c9f84fb8454e09e48dd
Author: Hou Tao <houtao1@huawei.com>
Date:   Thu Jan 24 14:35:13 2019 +0800

    9p: use inode->i_lock to protect i_size_write() under 32-bit
    
    commit 5e3cc1ee1405a7eb3487ed24f786dec01b4cbe1f upstream.
    
    Use inode->i_lock to protect i_size_write(), else i_size_read() in
    generic_fillattr() may loop infinitely in read_seqcount_begin() when
    multiple processes invoke v9fs_vfs_getattr() or v9fs_vfs_getattr_dotl()
    simultaneously under 32-bit SMP environment, and a soft lockup will be
    triggered as show below:
    
      watchdog: BUG: soft lockup - CPU#5 stuck for 22s! [stat:2217]
      Modules linked in:
      CPU: 5 PID: 2217 Comm: stat Not tainted 5.0.0-rc1-00005-g7f702faf5a9e #4
      Hardware name: Generic DT based system
      PC is at generic_fillattr+0x104/0x108
      LR is at 0xec497f00
      pc : [<802b8898>]    lr : [<ec497f00>]    psr: 200c0013
      sp : ec497e20  ip : ed608030  fp : ec497e3c
      r10: 00000000  r9 : ec497f00  r8 : ed608030
      r7 : ec497ebc  r6 : ec497f00  r5 : ee5c1550  r4 : ee005780
      r3 : 0000052d  r2 : 00000000  r1 : ec497f00  r0 : ed608030
      Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
      Control: 10c5387d  Table: ac48006a  DAC: 00000051
      CPU: 5 PID: 2217 Comm: stat Not tainted 5.0.0-rc1-00005-g7f702faf5a9e #4
      Hardware name: Generic DT based system
      Backtrace:
      [<8010d974>] (dump_backtrace) from [<8010dc88>] (show_stack+0x20/0x24)
      [<8010dc68>] (show_stack) from [<80a1d194>] (dump_stack+0xb0/0xdc)
      [<80a1d0e4>] (dump_stack) from [<80109f34>] (show_regs+0x1c/0x20)
      [<80109f18>] (show_regs) from [<801d0a80>] (watchdog_timer_fn+0x280/0x2f8)
      [<801d0800>] (watchdog_timer_fn) from [<80198658>] (__hrtimer_run_queues+0x18c/0x380)
      [<801984cc>] (__hrtimer_run_queues) from [<80198e60>] (hrtimer_run_queues+0xb8/0xf0)
      [<80198da8>] (hrtimer_run_queues) from [<801973e8>] (run_local_timers+0x28/0x64)
      [<801973c0>] (run_local_timers) from [<80197460>] (update_process_times+0x3c/0x6c)
      [<80197424>] (update_process_times) from [<801ab2b8>] (tick_nohz_handler+0xe0/0x1bc)
      [<801ab1d8>] (tick_nohz_handler) from [<80843050>] (arch_timer_handler_virt+0x38/0x48)
      [<80843018>] (arch_timer_handler_virt) from [<80180a64>] (handle_percpu_devid_irq+0x8c/0x240)
      [<801809d8>] (handle_percpu_devid_irq) from [<8017ac20>] (generic_handle_irq+0x34/0x44)
      [<8017abec>] (generic_handle_irq) from [<8017b344>] (__handle_domain_irq+0x6c/0xc4)
      [<8017b2d8>] (__handle_domain_irq) from [<801022e0>] (gic_handle_irq+0x4c/0x88)
      [<80102294>] (gic_handle_irq) from [<80101a30>] (__irq_svc+0x70/0x98)
      [<802b8794>] (generic_fillattr) from [<8056b284>] (v9fs_vfs_getattr_dotl+0x74/0xa4)
      [<8056b210>] (v9fs_vfs_getattr_dotl) from [<802b8904>] (vfs_getattr_nosec+0x68/0x7c)
      [<802b889c>] (vfs_getattr_nosec) from [<802b895c>] (vfs_getattr+0x44/0x48)
      [<802b8918>] (vfs_getattr) from [<802b8a74>] (vfs_statx+0x9c/0xec)
      [<802b89d8>] (vfs_statx) from [<802b9428>] (sys_lstat64+0x48/0x78)
      [<802b93e0>] (sys_lstat64) from [<80101000>] (ret_fast_syscall+0x0/0x28)
    
    [dominique.martinet@cea.fr: updated comment to not refer to a function
    in another subsystem]
    Link: http://lkml.kernel.org/r/20190124063514.8571-2-houtao1@huawei.com
    Fixes: 7549ae3e81cc ("9p: Use the i_size_[read, write]() macros instead of using inode->i_size directly.")
    Reported-by: Xing Gaopeng <xingaopeng@huawei.com>
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 30771a3b62c9dd59525ed34268b93d1cef024e7e
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Fri Mar 1 12:13:34 2019 -0500

    NFSv4.1: Reinitialise sequence results before retransmitting a request
    
    commit c1dffe0bf7f9c3d57d9f237a7cb2a81e62babd2b upstream.
    
    If we have to retransmit a request, we should ensure that we reinitialise
    the sequence results structure, since in the event of a signal
    we need to treat the request as if it had not been sent.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5b4f9ccfd4565b156f11aa4dffdb6c69a290b918
Author: Tony Jones <tonyj@suse.de>
Date:   Wed Feb 27 17:55:32 2019 -0800

    tools lib traceevent: Fix buffer overflow in arg_eval
    
    commit 7c5b019e3a638a5a290b0ec020f6ca83d2ec2aaa upstream.
    
    Fix buffer overflow observed when running perf test.
    
    The overflow is when trying to evaluate "1ULL << (64 - 1)" which is
    resulting in -9223372036854775808 which overflows the 20 character
    buffer.
    
    If is possible this bug has been reported before but I still don't see
    any fix checked in:
    
    See: https://www.spinics.net/lists/linux-perf-users/msg07714.html
    
    Reported-by: Michael Sartain <mikesart@fastmail.com>
    Reported-by: Mathias Krause <minipli@googlemail.com>
    Signed-off-by: Tony Jones <tonyj@suse.de>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Fixes: f7d82350e597 ("tools/events: Add files to create libtraceevent.a")
    Link: http://lkml.kernel.org/r/20190228015532.8941-1-tonyj@suse.de
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3078ec66dcb95f1133680f4bf4cfee4de90f90ee
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu Feb 14 15:17:20 2019 +0000

    Btrfs: fix corruption reading shared and compressed extents after hole punching
    
    commit 8e928218780e2f1cf2f5891c7575e8f0b284fcce upstream.
    
    In the past we had data corruption when reading compressed extents that
    are shared within the same file and they are consecutive, this got fixed
    by commit 005efedf2c7d0 ("Btrfs: fix read corruption of compressed and
    shared extents") and by commit 808f80b46790f ("Btrfs: update fix for read
    corruption of compressed and shared extents"). However there was a case
    that was missing in those fixes, which is when the shared and compressed
    extents are referenced with a non-zero offset. The following shell script
    creates a reproducer for this issue:
    
      #!/bin/bash
    
      mkfs.btrfs -f /dev/sdc &> /dev/null
      mount -o compress /dev/sdc /mnt/sdc
    
      # Create a file with 3 consecutive compressed extents, each has an
      # uncompressed size of 128Kb and a compressed size of 4Kb.
      for ((i = 1; i <= 3; i++)); do
          head -c 4096 /dev/zero
          for ((j = 1; j <= 31; j++)); do
              head -c 4096 /dev/zero | tr '\0' "\377"
          done
      done > /mnt/sdc/foobar
      sync
    
      echo "Digest after file creation:   $(md5sum /mnt/sdc/foobar)"
    
      # Clone the first extent into offsets 128K and 256K.
      xfs_io -c "reflink /mnt/sdc/foobar 0 128K 128K" /mnt/sdc/foobar
      xfs_io -c "reflink /mnt/sdc/foobar 0 256K 128K" /mnt/sdc/foobar
      sync
    
      echo "Digest after cloning:         $(md5sum /mnt/sdc/foobar)"
    
      # Punch holes into the regions that are already full of zeroes.
      xfs_io -c "fpunch 0 4K" /mnt/sdc/foobar
      xfs_io -c "fpunch 128K 4K" /mnt/sdc/foobar
      xfs_io -c "fpunch 256K 4K" /mnt/sdc/foobar
      sync
    
      echo "Digest after hole punching:   $(md5sum /mnt/sdc/foobar)"
    
      echo "Dropping page cache..."
      sysctl -q vm.drop_caches=1
      echo "Digest after hole punching:   $(md5sum /mnt/sdc/foobar)"
    
      umount /dev/sdc
    
    When running the script we get the following output:
    
      Digest after file creation:   5a0888d80d7ab1fd31c229f83a3bbcc8  /mnt/sdc/foobar
      linked 131072/131072 bytes at offset 131072
      128 KiB, 1 ops; 0.0033 sec (36.960 MiB/sec and 295.6830 ops/sec)
      linked 131072/131072 bytes at offset 262144
      128 KiB, 1 ops; 0.0015 sec (78.567 MiB/sec and 628.5355 ops/sec)
      Digest after cloning:         5a0888d80d7ab1fd31c229f83a3bbcc8  /mnt/sdc/foobar
      Digest after hole punching:   5a0888d80d7ab1fd31c229f83a3bbcc8  /mnt/sdc/foobar
      Dropping page cache...
      Digest after hole punching:   fba694ae8664ed0c2e9ff8937e7f1484  /mnt/sdc/foobar
    
    This happens because after reading all the pages of the extent in the
    range from 128K to 256K for example, we read the hole at offset 256K
    and then when reading the page at offset 260K we don't submit the
    existing bio, which is responsible for filling all the page in the
    range 128K to 256K only, therefore adding the pages from range 260K
    to 384K to the existing bio and submitting it after iterating over the
    entire range. Once the bio completes, the uncompressed data fills only
    the pages in the range 128K to 256K because there's no more data read
    from disk, leaving the pages in the range 260K to 384K unfilled. It is
    just a slightly different variant of what was solved by commit
    005efedf2c7d0 ("Btrfs: fix read corruption of compressed and shared
    extents").
    
    Fix this by forcing a bio submit, during readpages(), whenever we find a
    compressed extent map for a page that is different from the extent map
    for the previous page or has a different starting offset (in case it's
    the same compressed extent), instead of the extent map's original start
    offset.
    
    A test case for fstests follows soon.
    
    Reported-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
    Fixes: 808f80b46790f ("Btrfs: update fix for read corruption of compressed and shared extents")
    Fixes: 005efedf2c7d0 ("Btrfs: fix read corruption of compressed and shared extents")
    Tested-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 195f8ed183f67316fa98869451b0fd59987cba8d
Author: Jordan Niethe <jniethe5@gmail.com>
Date:   Wed Feb 27 14:02:29 2019 +1100

    powerpc/powernv: Make opal log only readable by root
    
    commit 7b62f9bd2246b7d3d086e571397c14ba52645ef1 upstream.
    
    Currently the opal log is globally readable. It is kernel policy to
    limit the visibility of physical addresses / kernel pointers to root.
    Given this and the fact the opal log may contain this information it
    would be better to limit the readability to root.
    
    Fixes: bfc36894a48b ("powerpc/powernv: Add OPAL message log interface")
    Signed-off-by: Jordan Niethe <jniethe5@gmail.com>
    Reviewed-by: Stewart Smith <stewart@linux.ibm.com>
    Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit eb594e29f56c28fd2ea513d18013524a7d34e5df
Author: Axel Lin <axel.lin@ingics.com>
Date:   Sun Feb 24 21:16:51 2019 +0800

    regulator: wm831x-dcdc: Fix list of wm831x_dcdc_ilim from mA to uA
    
    commit c25d47888f0fb3d836d68322d4aea2caf31a75a6 upstream.
    
    The wm831x_dcdc_ilim entries needs to be uA because it is used to compare
    with min_uA and max_uA.
    While at it also make the array const and change to use unsigned int.
    
    Fixes: e4ee831f949a ("regulator: Add WM831x DC-DC buck convertor support")
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8b897efd7bfbe26205602083c8ab5e7b5f4eac91
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Sun Feb 24 13:00:53 2019 +0100

    serial: 8250_of: assume reg-shift of 2 for mrvl,mmp-uart
    
    commit f4817843e39ce78aace0195a57d4e8500a65a898 upstream.
    
    There are two other drivers that bind to mrvl,mmp-uart and both of them
    assume register shift of 2 bits. There are device trees that lack the
    property and rely on that assumption.
    
    If this driver wins the race to bind to those devices, it should behave
    the same as the older deprecated driver.
    
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5f2ec3b0fba54db9276f77f22c2fb9ceab6b1101
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Fri Feb 22 20:03:55 2019 +0900

    staging: android: ashmem: Avoid range_alloc() allocation with ashmem_mutex held.
    
    commit ecd182cbf4e107928077866399100228d2359c60 upstream.
    
    ashmem_pin() is calling range_shrink() without checking whether
    range_alloc() succeeded. Also, doing memory allocation with ashmem_mutex
    held should be avoided because ashmem_shrink_scan() tries to hold it.
    
    Therefore, move memory allocation for range_alloc() to ashmem_pin_unpin()
    and make range_alloc() not to fail.
    
    This patch is mostly meant for backporting purpose for fuzz testing on
    stable/distributor kernels, for there is a plan to remove this code in
    near future.
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reviewed-by: Joel Fernandes <joel@joelfernandes.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 283398ed504d1b5b1fd25766aca7375c84e410b2
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Tue Feb 26 13:38:16 2019 +0900

    ALSA: bebob: use more identical mod_alias for Saffire Pro 10 I/O against Liquid Saffire 56
    
    commit 7dc661bd8d3261053b69e4e2d0050cd1ee540fc1 upstream.
    
    ALSA bebob driver has an entry for Focusrite Saffire Pro 10 I/O. The
    entry matches vendor_id in root directory and model_id in unit
    directory of configuration ROM for IEEE 1394 bus.
    
    On the other hand, configuration ROM of Focusrite Liquid Saffire 56
    has the same vendor_id and model_id. This device is an application of
    TCAT Dice (TCD2220 a.k.a Dice Jr.) however ALSA bebob driver can be
    bound to it randomly instead of ALSA dice driver. At present, drivers
    in ALSA firewire stack can not handle this situation appropriately.
    
    This commit uses more identical mod_alias for Focusrite Saffire Pro 10
    I/O in ALSA bebob driver.
    
    $ python2 crpp < /sys/bus/firewire/devices/fw1/config_rom
                   ROM header and bus information block
                   -----------------------------------------------------------------
    400  042a829d  bus_info_length 4, crc_length 42, crc 33437
    404  31333934  bus_name "1394"
    408  f0649222  irmc 1, cmc 1, isc 1, bmc 1, pmc 0, cyc_clk_acc 100,
                   max_rec 9 (1024), max_rom 2, gen 2, spd 2 (S400)
    40c  00130e01  company_id 00130e     |
    410  000606e0  device_id 01000606e0  | EUI-64 00130e01000606e0
    
                   root directory
                   -----------------------------------------------------------------
    414  0009d31c  directory_length 9, crc 54044
    418  04000014  hardware version
    41c  0c0083c0  node capabilities per IEEE 1394
    420  0300130e  vendor
    424  81000012  --> descriptor leaf at 46c
    428  17000006  model
    42c  81000016  --> descriptor leaf at 484
    430  130120c2  version
    434  d1000002  --> unit directory at 43c
    438  d4000006  --> dependent info directory at 450
    
                   unit directory at 43c
                   -----------------------------------------------------------------
    43c  0004707c  directory_length 4, crc 28796
    440  1200a02d  specifier id: 1394 TA
    444  13010001  version: AV/C
    448  17000006  model
    44c  81000013  --> descriptor leaf at 498
    
                   dependent info directory at 450
                   -----------------------------------------------------------------
    450  000637c7  directory_length 6, crc 14279
    454  120007f5  specifier id
    458  13000001  version
    45c  3affffc7  (immediate value)
    460  3b100000  (immediate value)
    464  3cffffc7  (immediate value)
    468  3d600000  (immediate value)
    
                   descriptor leaf at 46c
                   -----------------------------------------------------------------
    46c  00056f3b  leaf_length 5, crc 28475
    470  00000000  textual descriptor
    474  00000000  minimal ASCII
    478  466f6375  "Focu"
    47c  73726974  "srit"
    480  65000000  "e"
    
                   descriptor leaf at 484
                   -----------------------------------------------------------------
    484  0004a165  leaf_length 4, crc 41317
    488  00000000  textual descriptor
    48c  00000000  minimal ASCII
    490  50726f31  "Pro1"
    494  30494f00  "0IO"
    
                   descriptor leaf at 498
                   -----------------------------------------------------------------
    498  0004a165  leaf_length 4, crc 41317
    49c  00000000  textual descriptor
    4a0  00000000  minimal ASCII
    4a4  50726f31  "Pro1"
    4a8  30494f00  "0IO"
    
    $ python2 crpp < /sys/bus/firewire/devices/fw1/config_rom
                   ROM header and bus information block
                   -----------------------------------------------------------------
    400  040442e4  bus_info_length 4, crc_length 4, crc 17124
    404  31333934  bus_name "1394"
    408  e0ff8112  irmc 1, cmc 1, isc 1, bmc 0, pmc 0, cyc_clk_acc 255,
                   max_rec 8 (512), max_rom 1, gen 1, spd 2 (S400)
    40c  00130e04  company_id 00130e     |
    410  018001e9  device_id 04018001e9  | EUI-64 00130e04018001e9
    
                   root directory
                   -----------------------------------------------------------------
    414  00065612  directory_length 6, crc 22034
    418  0300130e  vendor
    41c  8100000a  --> descriptor leaf at 444
    420  17000006  model
    424  8100000e  --> descriptor leaf at 45c
    428  0c0087c0  node capabilities per IEEE 1394
    42c  d1000001  --> unit directory at 430
    
                   unit directory at 430
                   -----------------------------------------------------------------
    430  000418a0  directory_length 4, crc 6304
    434  1200130e  specifier id
    438  13000001  version
    43c  17000006  model
    440  8100000f  --> descriptor leaf at 47c
    
                   descriptor leaf at 444
                   -----------------------------------------------------------------
    444  00056f3b  leaf_length 5, crc 28475
    448  00000000  textual descriptor
    44c  00000000  minimal ASCII
    450  466f6375  "Focu"
    454  73726974  "srit"
    458  65000000  "e"
    
                   descriptor leaf at 45c
                   -----------------------------------------------------------------
    45c  000762c6  leaf_length 7, crc 25286
    460  00000000  textual descriptor
    464  00000000  minimal ASCII
    468  4c495155  "LIQU"
    46c  49445f53  "ID_S"
    470  41464649  "AFFI"
    474  52455f35  "RE_5"
    478  36000000  "6"
    
                   descriptor leaf at 47c
                   -----------------------------------------------------------------
    47c  000762c6  leaf_length 7, crc 25286
    480  00000000  textual descriptor
    484  00000000  minimal ASCII
    488  4c495155  "LIQU"
    48c  49445f53  "ID_S"
    490  41464649  "AFFI"
    494  52455f35  "RE_5"
    498  36000000  "6"
    
    Fixes: 25784ec2d034 ("ALSA: bebob: Add support for Focusrite Saffire/SaffirePro series")
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a707569270f11ad9e7533af779050b5ce21d8133
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Tue Feb 26 10:09:35 2019 +0530

    powerpc/mm/hash: Handle mmap_min_addr correctly in get_unmapped_area topdown search
    
    commit 3b4d07d2674f6b4a9281031f99d1f7efd325b16d upstream.
    
    When doing top-down search the low_limit is not PAGE_SIZE but rather
    max(PAGE_SIZE, mmap_min_addr). This handle cases in which mmap_min_addr >
    PAGE_SIZE.
    
    Fixes: fba2369e6ceb ("mm: use vm_unmapped_area() on powerpc architecture")
    Reviewed-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 60aa8550618a9230b255d8436aa7f2c091373a0b
Author: Dan Robertson <dan@dlrobertson.com>
Date:   Tue Feb 19 02:56:43 2019 +0000

    btrfs: init csum_list before possible free
    
    commit e49be14b8d80e23bb7c53d78c21717a474ade76b upstream.
    
    The scrub_ctx csum_list member must be initialized before scrub_free_ctx
    is called. If the csum_list is not initialized beforehand, the
    list_empty call in scrub_free_csums will result in a null deref if the
    allocation fails in the for loop.
    
    Fixes: a2de733c78fa ("btrfs: scrub")
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Dan Robertson <dan@dlrobertson.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 15b800d8f60d6f063d627de612f01794a29982ed
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Feb 3 00:14:33 2019 +0200

    mmc: omap: fix the maximum timeout setting
    
    commit a6327b5e57fdc679c842588c3be046c0b39cc127 upstream.
    
    When running OMAP1 kernel on QEMU, MMC access is annoyingly noisy:
    
            MMC: CTO of 0xff and 0xfe cannot be used!
            MMC: CTO of 0xff and 0xfe cannot be used!
            MMC: CTO of 0xff and 0xfe cannot be used!
            [ad inf.]
    
    Emulator warnings appear to be valid. The TI document SPRU680 [1]
    ("OMAP5910 Dual-Core Processor MultiMedia Card/Secure Data Memory Card
    (MMC/SD) Reference Guide") page 36 states that the maximum timeout is 253
    cycles and "0xff and 0xfe cannot be used".
    
    Fix by using 0xfd as the maximum timeout.
    
    Tested using QEMU 2.5 (Siemens SX1 machine, OMAP310), and also checked on
    real hardware using Palm TE (OMAP310), Nokia 770 (OMAP1710) and Nokia N810
    (OMAP2420) that MMC works as before.
    
    [1] http://www.ti.com/lit/ug/spru680/spru680.pdf
    
    Fixes: 730c9b7e6630f ("[MMC] Add OMAP MMC host driver")
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8659048945a45cb840333e54851f54ef769c66e0
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Thu Oct 18 11:57:04 2018 +0200

    clocksource/drivers/exynos_mct: Fix error path in timer resources initialization
    
    commit b9307420196009cdf18bad55e762ac49fb9a80f4 upstream.
    
    While freeing interrupt handlers in error path, don't assume that all
    requested interrupts are per-processor interrupts and properly release
    standard interrupts too.
    
    Reported-by: Krzysztof Kozlowski <krzk@kernel.org>
    Fixes: 56a94f13919c ("clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier")
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
    Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0909b0633f13cf7a1e7de50ef5fa52bb4ee17152
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Thu Feb 21 19:08:37 2019 +0000

    powerpc/wii: properly disable use of BATs when requested.
    
    commit 6d183ca8baec983dc4208ca45ece3c36763df912 upstream.
    
    'nobats' kernel parameter or some options like CONFIG_DEBUG_PAGEALLOC
    deny the use of BATS for mapping memory.
    
    This patch makes sure that the specific wii RAM mapping function
    takes it into account as well.
    
    Fixes: de32400dd26e ("wii: use both mem1 and mem2 as ram")
    Reviewed-by: Jonathan Neuschafer <j.neuschaefer@gmx.net>
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 453dd49fd739bf08fe81ed3b4ac3ff6db113abac
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Fri Jan 25 12:03:55 2019 +0000

    powerpc/83xx: Also save/restore SPRG4-7 during suspend
    
    commit 36da5ff0bea2dc67298150ead8d8471575c54c7d upstream.
    
    The 83xx has 8 SPRG registers and uses at least SPRG4
    for DTLB handling LRU.
    
    Fixes: 2319f1239592 ("powerpc/mm: e300c2/c3/c4 TLB errata workaround")
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 88eb67d7cc73b61fad89001b55917f71910c1bf5
Author: Doug Berger <opendmb@gmail.com>
Date:   Wed Feb 20 14:15:28 2019 -0800

    irqchip/brcmstb-l2: Use _irqsave locking variants in non-interrupt code
    
    commit 33517881ede742107f416533b8c3e4abc56763da upstream.
    
    Using the irq_gc_lock/irq_gc_unlock functions in the suspend and
    resume functions creates the opportunity for a deadlock during
    suspend, resume, and shutdown. Using the irq_gc_lock_irqsave/
    irq_gc_unlock_irqrestore variants prevents this possible deadlock.
    
    Fixes: 7f646e92766e2 ("irqchip: brcmstb-l2: Add Broadcom Set Top Box Level-2 interrupt controller")
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    [maz: tidied up $SUBJECT]
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4abe9a864be7e7f72e57e13987590f8b4ac1ac9d
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Jan 30 07:58:38 2019 -0600

    fs/nfs: Fix nfs_parse_devname to not modify it's argument
    
    commit 40cc394be1aa18848b8757e03bd8ed23281f572e upstream.
    
    In the rare and unsupported case of a hostname list nfs_parse_devname
    will modify dev_name.  There is no need to modify dev_name as the all
    that is being computed is the length of the hostname, so the computed
    length can just be shorted.
    
    Fixes: dc04589827f7 ("NFS: Use common device name parsing logic for NFSv4 and NFSv2/v3")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2cf024c9e0237be92e74580823ac214c1f423e12
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Tue Feb 5 13:01:13 2019 -0800

    KVM: x86/mmu: Do not cache MMIO accesses while memslots are in flux
    
    commit ddfd1730fd829743e41213e32ccc8b4aa6dc8325 upstream.
    
    When installing new memslots, KVM sets bit 0 of the generation number to
    indicate that an update is in-progress.  Until the update is complete,
    there are no guarantees as to whether a vCPU will see the old or the new
    memslots.  Explicity prevent caching MMIO accesses so as to avoid using
    an access cached from the old memslots after the new memslots have been
    installed.
    
    Note that it is unclear whether or not disabling caching during the
    update window is strictly necessary as there is no definitive
    documentation as to what ordering guarantees KVM provides with respect
    to updating memslots.  That being said, the MMIO spte code does not
    allow reusing sptes created while an update is in-progress, and the
    associated documentation explicitly states:
    
        We do not want to use an MMIO sptes created with an odd generation
        number, ...  If KVM is unlucky and creates an MMIO spte while the
        low bit is 1, the next access to the spte will always be a cache miss.
    
    At the very least, disabling the per-vCPU MMIO cache during updates will
    make its behavior consistent with the MMIO spte behavior and
    documentation.
    
    Fixes: 56f17dd3fbc4 ("kvm: x86: fix stale mmio cache bug")
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6710f8cd35bb655f59b1127ad5e0ce766b6a06f4
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Feb 19 16:46:47 2019 +0100

    ASoC: fsl: Fix of-node refcount unbalance in fsl_ssi_probe_from_dt()
    
    commit 2757970f6d0d0a112247600b23d38c0c728ceeb3 upstream.
    
    The node obtained from of_find_node_by_path() has to be unreferenced
    after the use, but we forgot it for the root node.
    
    Fixes: f0fba2ad1b6b ("ASoC: multi-component - ASoC Multi-Component Support")
    Cc: Timur Tabi <timur@kernel.org>
    Cc: Nicolin Chen <nicoleotsuka@gmail.com>
    Cc: Xiubo Li <Xiubo.Lee@gmail.com>
    Cc: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    [bwh: Backported to 3.16:
     - Move declaration of root to the top of the function as there is no
       suitable block scope
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d00f3bbd3062b3de78227ba27492c182282122ae
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Fri Feb 15 14:29:26 2019 -0600

    drm/radeon/evergreen_cs: fix missing break in switch statement
    
    commit cc5034a5d293dd620484d1d836aa16c6764a1c8c upstream.
    
    Add missing break statement in order to prevent the code from falling
    through to case CB_TARGET_MASK.
    
    This bug was found thanks to the ongoing efforts to enable
    -Wimplicit-fallthrough.
    
    Fixes: dd220a00e8bd ("drm/radeon/kms: add support for streamout v7")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d57f544eb751b2a0a175ca1a0191342821d76993
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Tue Feb 19 10:58:12 2019 +0100

    perf header: Fix wrong node write in NUMA_TOPOLOGY feature
    
    commit b00ccb27f97367d89e2d7b419ed198b0985be55d upstream.
    
    We are currently passing the node index instead of the real node number.
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: fbe96f29ce4b ("perf tools: Make perf.data more self-descriptive (v8)"
    Link: http://lkml.kernel.org/r/20190219095815.15931-2-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7376423fc82a3c53dcfbb7a7ae1716db84d7d393
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Sun Feb 10 20:47:49 2019 +0100

    libertas_tf: don't set URB_ZERO_PACKET on IN USB transfer
    
    commit 607076a904c435f2677fadaadd4af546279db68b upstream.
    
    It doesn't make sense and the USB core warns on each submit of such
    URB, easily flooding the message buffer with tracebacks.
    
    Analogous issue was fixed in regular libertas driver in commit 6528d8804780
    ("libertas: don't set URB_ZERO_PACKET on IN USB transfer").
    
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Reviewed-by: Steve deRosier <derosier@cal-sierra.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6ee483a1cbac089776f809a243cc92438edbdde1
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Mon Feb 18 22:34:51 2019 +0800

    cdc-wdm: pass return value of recover_from_urb_loss
    
    commit 0742a338f5b3446a26de551ad8273fb41b2787f2 upstream.
    
    'rv' is the correct return value, pass it upstream instead of 0
    
    Fixes: 17d80d562fd7 ("USB: autosuspend for cdc-wdm")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 632a73f422370cdc15d249aab8115405ac07a8a4
Author: S.j. Wang <shengjiu.wang@nxp.com>
Date:   Mon Feb 18 08:29:11 2019 +0000

    ASoC: fsl_esai: fix register setting issue in RIGHT_J mode
    
    commit cc29ea007347f39f4c5a4d27b0b555955a0277f9 upstream.
    
    The ESAI_xCR_xWA is xCR's bit, not the xCCR's bit, driver set it to
    wrong register, correct it.
    
    Fixes 43d24e76b698 ("ASoC: fsl_esai: Add ESAI CPU DAI driver")
    Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Ackedy-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 777401720a27559e54e24737404f602f3e334cbe
Author: Mans Rullgard <mans@mansr.com>
Date:   Thu Feb 14 19:45:33 2019 +0000

    USB: serial: ftdi_sio: add ID for Hjelmslund Electronics USB485
    
    commit 8d7fa3d4ea3f0ca69554215e87411494e6346fdc upstream.
    
    This adds the USB ID of the Hjelmslund Electronics USB485 Iso stick.
    
    Signed-off-by: Mans Rullgard <mans@mansr.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 64af581edc4b8cabaace5803029b3ce68dd2d23d
Author: Michal Kazior <michal@plume.com>
Date:   Mon Feb 11 10:29:27 2019 +0100

    leds: lp55xx: fix null deref on firmware load failure
    
    commit 5ddb0869bfc1bca6cfc592c74c64a026f936638c upstream.
    
    I've stumbled upon a kernel crash and the logs
    pointed me towards the lp5562 driver:
    
    > <4>[306013.841294] lp5562 0-0030: Direct firmware load for lp5562 failed with error -2
    > <4>[306013.894990] lp5562 0-0030: Falling back to user helper
    > ...
    > <3>[306073.924886] lp5562 0-0030: firmware request failed
    > <1>[306073.939456] Unable to handle kernel NULL pointer dereference at virtual address 00000000
    > <4>[306074.251011] PC is at _raw_spin_lock+0x1c/0x58
    > <4>[306074.255539] LR is at release_firmware+0x6c/0x138
    > ...
    
    After taking a look I noticed firmware_release()
    could be called with either NULL or a dangling
    pointer.
    
    Fixes: 10c06d178df11 ("leds-lp55xx: support firmware interface")
    Signed-off-by: Michal Kazior <michal@plume.com>
    Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0f2e97b3ae782285a798f70b66fb6aac384a953b
Author: Jay Dolan <jay.dolan@accesio.com>
Date:   Tue Feb 12 21:43:12 2019 -0800

    serial: 8250_pci: Have ACCES cards that use the four port Pericom PI7C9X7954 chip use the pci_pericom_setup()
    
    commit 78d3820b9bd39028727c6aab7297b63c093db343 upstream.
    
    The four port Pericom chips have the fourth port at the wrong address.
    Make use of quirk to fix it.
    
    Fixes: c8d192428f52 ("serial: 8250: added acces i/o products quad and octal serial cards")
    Signed-off-by: Jay Dolan <jay.dolan@accesio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c48a2fd37a6be1c6323c42311c3b2324eb82315b
Author: Jay Dolan <jay.dolan@accesio.com>
Date:   Tue Feb 12 21:43:11 2019 -0800

    serial: 8250_pci: Fix number of ports for ACCES serial cards
    
    commit b896b03bc7fce43a07012cc6bf5e2ab2fddf3364 upstream.
    
    Have the correct number of ports created for ACCES serial cards. Two port
    cards show up as four ports, and four port cards show up as eight.
    
    Fixes: c8d192428f52 ("serial: 8250: added acces i/o products quad and octal serial cards")
    Signed-off-by: Jay Dolan <jay.dolan@accesio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 75d0967d61910d499e5a92ad3117c5662c664e92
Author: Jia Zhang <zhang.jia@linux.alibaba.com>
Date:   Fri Jan 11 16:59:33 2019 +0800

    tpm: Fix off-by-one when reading binary_bios_measurements
    
    commit 64494d39ff630a63b5308042b20132b491e3706b upstream.
    
    It is unable to read the entry when it is the only one in
    binary_bios_measurements:
    
    00000000  00 00 00 00 08 00 00 00  c4 2f ed ad 26 82 00 cb
    00000010  1d 15 f9 78 41 c3 44 e7  9d ae 33 20 00 00 00 00
    00000020
    
    This is obviously a firmware problem on my linux machine:
    
            Manufacturer: Inspur
            Product Name: SA5212M4
            Version: 01
    
    However, binary_bios_measurements should return it any way,
    rather than nothing, after all its content is completely
    valid.
    
    Fixes: 55a82ab3181b ("tpm: add bios measurement log")
    Signed-off-by: Jia Zhang <zhang.jia@linux.alibaba.com>
    Reviewd-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    [bwh: Backported to 3.16:
     - Fix an additional comparison in tpm1_bios_measurements_start()
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9ffa96a5554fc1e1d4bf31245c5dbfe2c37e9fe4
Author: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date:   Fri Feb 8 18:30:59 2019 +0200

    tpm/tpm_i2c_atmel: Return -E2BIG when the transfer is incomplete
    
    commit 442601e87a4769a8daba4976ec3afa5222ca211d upstream.
    
    Return -E2BIG when the transfer is incomplete. The upper layer does
    not retry, so not doing that is incorrect behaviour.
    
    Fixes: a2871c62e186 ("tpm: Add support for Atmel I2C TPMs")
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
    Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ae46deace3c190e8b84c8f209a64a2d0c753e94f
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Mon Feb 11 12:43:23 2019 -0600

    iscsi_ibft: Fix missing break in switch statement
    
    commit df997abeebadaa4824271009e2d2b526a70a11cb upstream.
    
    Add missing break statement in order to prevent the code from falling
    through to case ISCSI_BOOT_TGT_NAME, which is unnecessary.
    
    This bug was found thanks to the ongoing efforts to enable
    -Wimplicit-fallthrough.
    
    Fixes: b33a84a38477 ("ibft: convert iscsi_ibft module to iscsi boot lib")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 813b4ae11f6bd4a5efd88a82f061811baee60a7c
Author: Jan Kara <jack@suse.cz>
Date:   Mon Feb 11 13:30:32 2019 -0500

    ext4: fix crash during online resizing
    
    commit f96c3ac8dfc24b4e38fc4c2eba5fea2107b929d1 upstream.
    
    When computing maximum size of filesystem possible with given number of
    group descriptor blocks, we forget to include s_first_data_block into
    the number of blocks. Thus for filesystems with non-zero
    s_first_data_block it can happen that computed maximum filesystem size
    is actually lower than current filesystem size which confuses the code
    and eventually leads to a BUG_ON in ext4_alloc_group_tables() hitting on
    flex_gd->count == 0. The problem can be reproduced like:
    
    truncate -s 100g /tmp/image
    mkfs.ext4 -b 1024 -E resize=262144 /tmp/image 32768
    mount -t ext4 -o loop /tmp/image /mnt
    resize2fs /dev/loop0 262145
    resize2fs /dev/loop0 300000
    
    Fix the problem by properly including s_first_data_block into the
    computed number of filesystem blocks.
    
    Fixes: 1c6bd7173d66 "ext4: convert file system to meta_bg if needed..."
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 96274e7dce62e69ea3233406043a3a0afdbba7c6
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Jan 23 16:51:21 2019 +0100

    pinctrl: sh-pfc: sh73a0: Fix fsic_spdif pin groups
    
    commit 0e6e448bdcf896d001a289a6112a704542d51516 upstream.
    
    There are two pin groups for the FSIC SPDIF signal, but the FSIC pin
    group array lists only one, and it refers to a nonexistent group.
    
    Fixes: 2ecd4154c906b7d6 ("sh-pfc: sh73a0: Add FSI pin groups and functions")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7d964a5a7d55e1ded85186afac3d894f80117b65
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Jan 23 17:07:43 2019 +0100

    pinctrl: sh-pfc: r8a7791: Fix scifb2_data_c pin group
    
    commit a4b0350047f1b10207e25e72d7cd3f7826e93769 upstream.
    
    The entry for "scifb2_data_c" in the SCIFB2 pin group array contains a
    typo, thus the group cannot be selected.
    
    Fixes: 5088451962389924 ("pinctrl: sh-pfc: r8a7791 PFC support")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d649a8e6dd1a7db5e8dee6505438001a666a6f37
Author: QiaoChong <qiaochong@loongson.cn>
Date:   Sat Feb 9 20:59:07 2019 +0000

    parport_pc: fix find_superio io compare code, should use equal test.
    
    commit 21698fd57984cd28207d841dbdaa026d6061bceb upstream.
    
    In the original code before 181bf1e815a2 the loop was continuing until
    it finds the first matching superios[i].io and p->base.
    But after 181bf1e815a2 the logic changed and the loop now returns the
    pointer to the first mismatched array element which is then used in
    get_superio_dma() and get_superio_irq() and thus returning the wrong
    value.
    Fix the condition so that it now returns the correct pointer.
    
    Fixes: 181bf1e815a2 ("parport_pc: clean up the modified while loops using for")
    Cc: Alan Cox <alan@linux.intel.com>
    Signed-off-by: QiaoChong <qiaochong@loongson.cn>
    [rewrite the commit message]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5d4e23ebaed66e2e61d6772a79e462eb3489ebe7
Author: yangerkun <yangerkun@huawei.com>
Date:   Mon Feb 11 00:35:06 2019 -0500

    ext4: add mask of ext4 flags to swap
    
    commit abdc644e8cbac2e9b19763680e5a7cf9bab2bee7 upstream.
    
    The reason is that while swapping two inode, we swap the flags too.
    Some flags such as EXT4_JOURNAL_DATA_FL can really confuse the things
    since we're not resetting the address operations structure.  The
    simplest way to keep things sane is to restrict the flags that can be
    swapped.
    
    Signed-off-by: yangerkun <yangerkun@huawei.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4f9fd21c99aca0c26228ba207e95132e9f3cdd24
Author: yangerkun <yangerkun@huawei.com>
Date:   Mon Feb 11 00:14:02 2019 -0500

    ext4: update quota information while swapping boot loader inode
    
    commit aa507b5faf38784defe49f5e64605ac3c4425e26 upstream.
    
    While do swap between two inode, they swap i_data without update
    quota information. Also, swap_inode_boot_loader can do "revert"
    somtimes, so update the quota while all operations has been finished.
    
    Signed-off-by: yangerkun <yangerkun@huawei.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16:
     - Include <linux/quotaops.h>
     - dquot_initialize() does not return an erro
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9b78032ccf3c6f6ce6a181a919ad710605099109
Author: yangerkun <yangerkun@huawei.com>
Date:   Mon Feb 11 00:02:05 2019 -0500

    ext4: fix check of inode in swap_inode_boot_loader
    
    commit 67a11611e1a5211f6569044fbf8150875764d1d0 upstream.
    
    Before really do swap between inode and boot inode, something need to
    check to avoid invalid or not permitted operation, like does this inode
    has inline data. But the condition check should be protected by inode
    lock to avoid change while swapping. Also some other condition will not
    change between swapping, but there has no problem to do this under inode
    lock.
    
    Signed-off-by: yangerkun <yangerkun@huawei.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16: There's no support or test for filesytem encryption]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7c97365120adc6012603814c58d50c7858524b49
Author: zhangyi (F) <yi.zhang@huawei.com>
Date:   Sun Feb 10 23:23:04 2019 -0500

    jbd2: clear dirty flag when revoking a buffer from an older transaction
    
    commit 904cdbd41d749a476863a0ca41f6f396774f26e4 upstream.
    
    Now, we capture a data corruption problem on ext4 while we're truncating
    an extent index block. Imaging that if we are revoking a buffer which
    has been journaled by the committing transaction, the buffer's jbddirty
    flag will not be cleared in jbd2_journal_forget(), so the commit code
    will set the buffer dirty flag again after refile the buffer.
    
    fsx                               kjournald2
                                      jbd2_journal_commit_transaction
    jbd2_journal_revoke                commit phase 1~5...
     jbd2_journal_forget
       belongs to older transaction    commit phase 6
       jbddirty not clear               __jbd2_journal_refile_buffer
                                         __jbd2_journal_unfile_buffer
                                          test_clear_buffer_jbddirty
                                           mark_buffer_dirty
    
    Finally, if the freed extent index block was allocated again as data
    block by some other files, it may corrupt the file data after writing
    cached pages later, such as during unmount time. (In general,
    clean_bdev_aliases() related helpers should be invoked after
    re-allocation to prevent the above corruption, but unfortunately we
    missed it when zeroout the head of extra extent blocks in
    ext4_ext_handle_unwritten_extents()).
    
    This patch mark buffer as freed and set j_next_transaction to the new
    transaction when it already belongs to the committing transaction in
    jbd2_journal_forget(), so that commit code knows it should clear dirty
    bits when it is done with the buffer.
    
    This problem can be reproduced by xfstests generic/455 easily with
    seeds (3246 3247 3248 3249).
    
    Signed-off-by: zhangyi (F) <yi.zhang@huawei.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ab733741f61a9e12946ed1d4d592730c858deef1
Author: Tang Junhui <tang.junhui.linux@gmail.com>
Date:   Sat Feb 9 12:52:58 2019 +0800

    bcache: treat stale && dirty keys as bad keys
    
    commit 58ac323084ebf44f8470eeb8b82660f9d0ee3689 upstream.
    
    Stale && dirty keys can be produced in the follow way:
    After writeback in write_dirty_finish(), dirty keys k1 will
    replace by clean keys k2
    ==>ret = bch_btree_insert(dc->disk.c, &keys, NULL, &w->key);
    ==>btree_insert_fn(struct btree_op *b_op, struct btree *b)
    ==>static int bch_btree_insert_node(struct btree *b,
           struct btree_op *op,
           struct keylist *insert_keys,
           atomic_t *journal_ref,
    Then two steps:
    A) update k1 to k2 in btree node memory;
       bch_btree_insert_keys(b, op, insert_keys, replace_key)
    B) Write the bset(contains k2) to cache disk by a 30s delay work
       bch_btree_leaf_dirty(b, journal_ref).
    But before the 30s delay work write the bset to cache device,
    these things happened:
    A) GC works, and reclaim the bucket k2 point to;
    B) Allocator works, and invalidate the bucket k2 point to,
       and increase the gen of the bucket, and place it into free_inc
       fifo;
    C) Until now, the 30s delay work still does not finish work,
       so in the disk, the key still is k1, it is dirty and stale
       (its gen is smaller than the gen of the bucket). and then the
       machine power off suddenly happens;
    D) When the machine power on again, after the btree reconstruction,
       the stale dirty key appear.
    
    In bch_extent_bad(), when expensive_debug_checks is off, it would
    treat the dirty key as good even it is stale keys, and it would
    cause bellow probelms:
    A) In read_dirty() it would cause machine crash:
       BUG_ON(ptr_stale(dc->disk.c, &w->key, 0));
    B) It could be worse when reads hits stale dirty keys, it would
       read old incorrect data.
    
    This patch tolerate the existence of these stale && dirty keys,
    and treat them as bad key in bch_extent_bad().
    
    (Coly Li: fix indent which was modified by sender's email client)
    
    Signed-off-by: Tang Junhui <tang.junhui.linux@gmail.com>
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 83ac6bd1b3fa1edcefc8866968f8c3559d668ad8
Author: Daniel Axtens <dja@axtens.net>
Date:   Sat Feb 9 12:52:53 2019 +0800

    bcache: never writeback a discard operation
    
    commit 9951379b0ca88c95876ad9778b9099e19a95d566 upstream.
    
    Some users see panics like the following when performing fstrim on a
    bcached volume:
    
    [  529.803060] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
    [  530.183928] #PF error: [normal kernel read fault]
    [  530.412392] PGD 8000001f42163067 P4D 8000001f42163067 PUD 1f42168067 PMD 0
    [  530.750887] Oops: 0000 [#1] SMP PTI
    [  530.920869] CPU: 10 PID: 4167 Comm: fstrim Kdump: loaded Not tainted 5.0.0-rc1+ #3
    [  531.290204] Hardware name: HP ProLiant DL360 Gen9/ProLiant DL360 Gen9, BIOS P89 12/27/2015
    [  531.693137] RIP: 0010:blk_queue_split+0x148/0x620
    [  531.922205] Code: 60 38 89 55 a0 45 31 db 45 31 f6 45 31 c9 31 ff 89 4d 98 85 db 0f 84 7f 04 00 00 44 8b 6d 98 4c 89 ee 48 c1 e6 04 49 03 70 78 <8b> 46 08 44 8b 56 0c 48
    8b 16 44 29 e0 39 d8 48 89 55 a8 0f 47 c3
    [  532.838634] RSP: 0018:ffffb9b708df39b0 EFLAGS: 00010246
    [  533.093571] RAX: 00000000ffffffff RBX: 0000000000046000 RCX: 0000000000000000
    [  533.441865] RDX: 0000000000000200 RSI: 0000000000000000 RDI: 0000000000000000
    [  533.789922] RBP: ffffb9b708df3a48 R08: ffff940d3b3fdd20 R09: 0000000000000000
    [  534.137512] R10: ffffb9b708df3958 R11: 0000000000000000 R12: 0000000000000000
    [  534.485329] R13: 0000000000000000 R14: 0000000000000000 R15: ffff940d39212020
    [  534.833319] FS:  00007efec26e3840(0000) GS:ffff940d1f480000(0000) knlGS:0000000000000000
    [  535.224098] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  535.504318] CR2: 0000000000000008 CR3: 0000001f4e256004 CR4: 00000000001606e0
    [  535.851759] Call Trace:
    [  535.970308]  ? mempool_alloc_slab+0x15/0x20
    [  536.174152]  ? bch_data_insert+0x42/0xd0 [bcache]
    [  536.403399]  blk_mq_make_request+0x97/0x4f0
    [  536.607036]  generic_make_request+0x1e2/0x410
    [  536.819164]  submit_bio+0x73/0x150
    [  536.980168]  ? submit_bio+0x73/0x150
    [  537.149731]  ? bio_associate_blkg_from_css+0x3b/0x60
    [  537.391595]  ? _cond_resched+0x1a/0x50
    [  537.573774]  submit_bio_wait+0x59/0x90
    [  537.756105]  blkdev_issue_discard+0x80/0xd0
    [  537.959590]  ext4_trim_fs+0x4a9/0x9e0
    [  538.137636]  ? ext4_trim_fs+0x4a9/0x9e0
    [  538.324087]  ext4_ioctl+0xea4/0x1530
    [  538.497712]  ? _copy_to_user+0x2a/0x40
    [  538.679632]  do_vfs_ioctl+0xa6/0x600
    [  538.853127]  ? __do_sys_newfstat+0x44/0x70
    [  539.051951]  ksys_ioctl+0x6d/0x80
    [  539.212785]  __x64_sys_ioctl+0x1a/0x20
    [  539.394918]  do_syscall_64+0x5a/0x110
    [  539.568674]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    We have observed it where both:
    1) LVM/devmapper is involved (bcache backing device is LVM volume) and
    2) writeback cache is involved (bcache cache_mode is writeback)
    
    On one machine, we can reliably reproduce it with:
    
     # echo writeback > /sys/block/bcache0/bcache/cache_mode
       (not sure whether above line is required)
     # mount /dev/bcache0 /test
     # for i in {0..10}; do
            file="$(mktemp /test/zero.XXX)"
            dd if=/dev/zero of="$file" bs=1M count=256
            sync
            rm $file
        done
      # fstrim -v /test
    
    Observing this with tracepoints on, we see the following writes:
    
    fstrim-18019 [022] .... 91107.302026: bcache_write: 73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 4260112 + 196352 hit 0 bypass 1
    fstrim-18019 [022] .... 91107.302050: bcache_write: 73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 4456464 + 262144 hit 0 bypass 1
    fstrim-18019 [022] .... 91107.302075: bcache_write: 73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 4718608 + 81920 hit 0 bypass 1
    fstrim-18019 [022] .... 91107.302094: bcache_write: 73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 5324816 + 180224 hit 0 bypass 1
    fstrim-18019 [022] .... 91107.302121: bcache_write: 73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 5505040 + 262144 hit 0 bypass 1
    fstrim-18019 [022] .... 91107.302145: bcache_write: 73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 5767184 + 81920 hit 0 bypass 1
    fstrim-18019 [022] .... 91107.308777: bcache_write: 73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 6373392 + 180224 hit 1 bypass 0
    <crash>
    
    Note the final one has different hit/bypass flags.
    
    This is because in should_writeback(), we were hitting a case where
    the partial stripe condition was returning true and so
    should_writeback() was returning true early.
    
    If that hadn't been the case, it would have hit the would_skip test, and
    as would_skip == s->iop.bypass == true, should_writeback() would have
    returned false.
    
    Looking at the git history from 'commit 72c270612bd3 ("bcache: Write out
    full stripes")', it looks like the idea was to optimise for raid5/6:
    
           * If a stripe is already dirty, force writes to that stripe to
             writeback mode - to help build up full stripes of dirty data
    
    To fix this issue, make sure that should_writeback() on a discard op
    never returns true.
    
    More details of debugging:
    https://www.spinics.net/lists/linux-bcache/msg06996.html
    
    Previous reports:
     - https://bugzilla.kernel.org/show_bug.cgi?id=201051
     - https://bugzilla.kernel.org/show_bug.cgi?id=196103
     - https://www.spinics.net/lists/linux-bcache/msg06885.html
    
    (Coly Li: minor modification to follow maximum 75 chars per line rule)
    
    Cc: Kent Overstreet <koverstreet@google.com>
    Fixes: 72c270612bd3 ("bcache: Write out full stripes")
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [bwh: Backported to 3.16: check REQ_DISCARD flag instead of calling bio_op()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 59bfd25cff984d6a9bb0e7e5f5a5f4b2cdac0edd
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Feb 6 10:31:02 2019 +0000

    rtc: pm8xxx: fix unintended sign extension
    
    commit e42280886018c6f77f0a90190f7cba344b0df3e0 upstream.
    
    Shifting a u8 by 24 will cause the value to be promoted to an integer. If
    the top bit of the u8 is set then the following conversion to an unsigned
    long will sign extend the value causing the upper 32 bits to be set in
    the result.
    
    Fix this by casting the u8 value to an unsigned long before the shift.
    
    Detected by CoverityScan, CID#1309693 ("Unintended sign extension")
    
    Fixes: 9a9a54ad7aa2 ("drivers/rtc: add support for Qualcomm PMIC8xxx RTC")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9b52af9d8f7d3c5ff49f307f015791da5a7292c6
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Feb 6 10:08:11 2019 +0000

    rtc: 88pm80x: fix unintended sign extension
    
    commit fb0b322537a831b5b0cb948c56f8f958ce493d3a upstream.
    
    Shifting a u8 by 24 will cause the value to be promoted to an integer. If
    the top bit of the u8 is set then the following conversion to an unsigned
    long will sign extend the value causing the upper 32 bits to be set in
    the result.
    
    Fix this by casting the u8 value to an unsigned long before the shift.
    
    Detected by CoverityScan, CID#714646-714649 ("Unintended sign extension")
    
    Fixes: 2985c29c1964 ("rtc: Add rtc support to 88PM80X PMIC")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1150ddfbc705e340a62f0c5c41022b7e6c8b913f
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Feb 6 09:50:53 2019 +0000

    rtc: 88pm860x: fix unintended sign extension
    
    commit dc9e47160626cdb58d5c39a4f43dcfdb27a5c004 upstream.
    
    Shifting a u8 by 24 will cause the value to be promoted to an integer. If
    the top bit of the u8 is set then the following conversion to an unsigned
    long will sign extend the value causing the upper 32 bits to be set in
    the result.
    
    Fix this by casting the u8 value to an unsigned long before the shift.
    
    Detected by CoverityScan, CID#144925-144928 ("Unintended sign extension")
    
    Fixes: 008b30408c40 ("mfd: Add rtc support to 88pm860x")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d1bc1078ee8a282b3902ceef35484d8c3b01d4a0
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Jan 31 23:51:41 2019 -0800

    crypto: ahash - fix another early termination in hash walk
    
    commit 77568e535af7c4f97eaef1e555bf0af83772456c upstream.
    
    Hash algorithms with an alignmask set, e.g. "xcbc(aes-aesni)" and
    "michael_mic", fail the improved hash tests because they sometimes
    produce the wrong digest.  The bug is that in the case where a
    scatterlist element crosses pages, not all the data is actually hashed
    because the scatterlist walk terminates too early.  This happens because
    the 'nbytes' variable in crypto_hash_walk_done() is assigned the number
    of bytes remaining in the page, then later interpreted as the number of
    bytes remaining in the scatterlist element.  Fix it.
    
    Fixes: 900a081f6912 ("crypto: ahash - Fix early termination in hash walk")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 820ea17e47d0aea57279053d2c8f01ccadbf038c
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Wed Jan 30 05:09:41 2019 -0500

    media: uvcvideo: Avoid NULL pointer dereference at the end of streaming
    
    commit 9dd0627d8d62a7ddb001a75f63942d92b5336561 upstream.
    
    The UVC video driver converts the timestamp from hardware specific unit
    to one known by the kernel at the time when the buffer is dequeued. This
    is fine in general, but the streamoff operation consists of the
    following steps (among other things):
    
    1. uvc_video_clock_cleanup --- the hardware clock sample array is
       released and the pointer to the array is set to NULL,
    
    2. buffers in active state are returned to the user and
    
    3. buf_finish callback is called on buffers that are prepared.
       buf_finish includes calling uvc_video_clock_update that accesses the
       hardware clock sample array.
    
    The above is serialised by a queue specific mutex. Address the problem
    by skipping the clock conversion if the hardware clock sample array is
    already released.
    
    Fixes: 9c0863b1cc48 ("[media] vb2: call buf_finish from __queue_cancel")
    
    Reported-by: Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com>
    Tested-by: Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 78c05c04a74b47b21c4723cf907338db9f4e40a9
Author: Ivan Mironov <mironov.ivan@gmail.com>
Date:   Wed Feb 6 21:14:13 2019 +0500

    USB: serial: cp210x: add ID for Ingenico 3070
    
    commit dd9d3d86b08d6a106830364879c42c78db85389c upstream.
    
    Here is how this device appears in kernel log:
    
            usb 3-1: new full-speed USB device number 18 using xhci_hcd
            usb 3-1: New USB device found, idVendor=0b00, idProduct=3070
            usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
            usb 3-1: Product: Ingenico 3070
            usb 3-1: Manufacturer: Silicon Labs
            usb 3-1: SerialNumber: 0001
    
    Apparently this is a POS terminal with embedded USB-to-Serial converter.
    
    Signed-off-by: Ivan Mironov <mironov.ivan@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e0b992008a9f6c1e852442c38401c966b285b6ff
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Feb 5 18:04:49 2019 +0000

    rtc: ds1672: fix unintended sign extension
    
    commit f0c04c276739ed8acbb41b4868e942a55b128dca upstream.
    
    Shifting a u8 by 24 will cause the value to be promoted to an integer. If
    the top bit of the u8 is set then the following conversion to an unsigned
    long will sign extend the value causing the upper 32 bits to be set in
    the result.
    
    Fix this by casting the u8 value to an unsigned long before the shift.
    
    Detected by CoverityScan, CID#138801 ("Unintended sign extension")
    
    Fixes: edf1aaa31fc5 ("[PATCH] RTC subsystem: DS1672 driver")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3e45c8554bc7cb3811cfd62347c58863b885736f
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Fri Jan 25 10:34:56 2019 -0800

    scsi: target/iscsi: Avoid iscsit_release_commands_from_conn() deadlock
    
    commit 32e36bfbcf31452a854263e7c7f32fbefc4b44d8 upstream.
    
    When using SCSI passthrough in combination with the iSCSI target driver
    then cmd->t_state_lock may be obtained from interrupt context. Hence, all
    code that obtains cmd->t_state_lock from thread context must disable
    interrupts first. This patch avoids that lockdep reports the following:
    
    WARNING: inconsistent lock state
    4.18.0-dbg+ #1 Not tainted
    --------------------------------
    inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
    iscsi_ttx/1800 [HC1[1]:SC0[2]:HE0:SE0] takes:
    000000006e7b0ceb (&(&cmd->t_state_lock)->rlock){?...}, at: target_complete_cmd+0x47/0x2c0 [target_core_mod]
    {HARDIRQ-ON-W} state was registered at:
     lock_acquire+0xd2/0x260
     _raw_spin_lock+0x32/0x50
     iscsit_close_connection+0x97e/0x1020 [iscsi_target_mod]
     iscsit_take_action_for_connection_exit+0x108/0x200 [iscsi_target_mod]
     iscsi_target_rx_thread+0x180/0x190 [iscsi_target_mod]
     kthread+0x1cf/0x1f0
     ret_from_fork+0x24/0x30
    irq event stamp: 1281
    hardirqs last  enabled at (1279): [<ffffffff970ade79>] __local_bh_enable_ip+0xa9/0x160
    hardirqs last disabled at (1281): [<ffffffff97a008a5>] interrupt_entry+0xb5/0xd0
    softirqs last  enabled at (1278): [<ffffffff977cd9a1>] lock_sock_nested+0x51/0xc0
    softirqs last disabled at (1280): [<ffffffffc07a6e04>] ip6_finish_output2+0x124/0xe40 [ipv6]
    
    other info that might help us debug this:
    Possible unsafe locking scenario:
    
          CPU0
          ----
     lock(&(&cmd->t_state_lock)->rlock);
     <Interrupt>
       lock(&(&cmd->t_state_lock)->rlock);

commit f21ea27a927712e3586ac6bd45a5edc0a7fa1271
Author: Jann Horn <jannh@google.com>
Date:   Wed Jan 23 15:19:17 2019 +0100

    splice: don't merge into linked buffers
    
    commit a0ce2f0aa6ad97c3d4927bf2ca54bcebdf062d55 upstream.
    
    Before this patch, it was possible for two pipes to affect each other after
    data had been transferred between them with tee():
    
    ============
    $ cat tee_test.c
    
    int main(void) {
      int pipe_a[2];
      if (pipe(pipe_a)) err(1, "pipe");
      int pipe_b[2];
      if (pipe(pipe_b)) err(1, "pipe");
      if (write(pipe_a[1], "abcd", 4) != 4) err(1, "write");
      if (tee(pipe_a[0], pipe_b[1], 2, 0) != 2) err(1, "tee");
      if (write(pipe_b[1], "xx", 2) != 2) err(1, "write");
    
      char buf[5];
      if (read(pipe_a[0], buf, 4) != 4) err(1, "read");
      buf[4] = 0;
      printf("got back: '%s'\n", buf);
    }
    $ gcc -o tee_test tee_test.c
    $ ./tee_test
    got back: 'abxx'
    $
    ============
    
    As suggested by Al Viro, fix it by creating a separate type for
    non-mergeable pipe buffers, then changing the types of buffers in
    splice_pipe_to_pipe() and link_pipe().
    
    Fixes: 7c77f0b3f920 ("splice: implement pipe to pipe splicing")
    Fixes: 70524490ee2e ("[PATCH] splice: add support for sys_tee()")
    Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.16: Use generic_pipe_buf_steal(), as for other pipe
     types, since anon_pipe_buf_steal() does not exist here]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4378bfb7b3267ebf730dd90745183c5e139fd719
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Thu Jan 24 17:33:45 2019 +0100

    crypto: arm64/aes-ccm - fix logical bug in AAD MAC handling
    
    commit eaf46edf6ea89675bd36245369c8de5063a0272c upstream.
    
    The NEON MAC calculation routine fails to handle the case correctly
    where there is some data in the buffer, and the input fills it up
    exactly. In this case, we enter the loop at the end with w8 == 0,
    while a negative value is assumed, and so the loop carries on until
    the increment of the 32-bit counter wraps around, which is quite
    obviously wrong.
    
    So omit the loop altogether in this case, and exit right away.
    
    Reported-by: Eric Biggers <ebiggers@kernel.org>
    Fixes: a3fd82105b9d1 ("arm64/crypto: AES in CCM mode using ARMv8 Crypto ...")
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a67f0130ead5b5678c6b5be30b22cc37befbe15f
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Jan 23 20:57:35 2019 -0800

    crypto: testmgr - skip crc32c context test for ahash algorithms
    
    commit eb5e6730db98fcc4b51148b4a819fa4bf864ae54 upstream.
    
    Instantiating "cryptd(crc32c)" causes a crypto self-test failure because
    the crypto_alloc_shash() in alg_test_crc32c() fails.  This is because
    cryptd(crc32c) is an ahash algorithm, not a shash algorithm; so it can
    only be accessed through the ahash API, unlike shash algorithms which
    can be accessed through both the ahash and shash APIs.
    
    As the test is testing the shash descriptor format which is only
    applicable to shash algorithms, skip it for ahash algorithms.
    
    (Note that it's still important to fix crypto self-test failures even
     for weird algorithm instantiations like cryptd(crc32c) that no one
     would really use; in fips_enabled mode unprivileged users can use them
     to panic the kernel, and also they prevent treating a crypto self-test
     failure as a bug when fuzzing the kernel.)
    
    Fixes: 8e3ee85e68c5 ("crypto: crc32c - Test descriptor context format")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1d176a93401c3ec46abe53e9cc85af6d67c2d433
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Tue Jan 29 13:56:19 2019 +0300

    devres: always use dev_name() in devm_ioremap_resource()
    
    commit 8d84b18f5678d3adfdb9375dfb0d968da2dc753d upstream.
    
    devm_ioremap_resource() prefers calling devm_request_mem_region() with a
    resource name instead of a device name -- this looks pretty iff a resource
    name isn't specified via a device tree with a "reg-names" property (in this
    case, a resource name is set to a device node's full name), but if it is,
    it doesn't really scale since these names are only unique to a given device
    node, not globally; so, looking at the output of 'cat /proc/iomem', you do
    not have an idea which memory region belongs to which device (see "dirmap",
    "regs", and "wbuf" lines below):
    
    08000000-0bffffff : dirmap
    48000000-bfffffff : System RAM
      48000000-48007fff : reserved
      48080000-48b0ffff : Kernel code
      48b10000-48b8ffff : reserved
      48b90000-48c7afff : Kernel data
      bc6a4000-bcbfffff : reserved
      bcc0f000-bebfffff : reserved
      bec0e000-bec0efff : reserved
      bec11000-bec11fff : reserved
      bec12000-bec14fff : reserved
      bec15000-bfffffff : reserved
    e6050000-e605004f : gpio@e6050000
    e6051000-e605104f : gpio@e6051000
    e6052000-e605204f : gpio@e6052000
    e6053000-e605304f : gpio@e6053000
    e6054000-e605404f : gpio@e6054000
    e6055000-e605504f : gpio@e6055000
    e6060000-e606050b : pin-controller@e6060000
    e6e60000-e6e6003f : e6e60000.serial
    e7400000-e7400fff : ethernet@e7400000
    ee200000-ee2001ff : regs
    ee208000-ee2080ff : wbuf
    
    I think that devm_request_mem_region() should be called with dev_name()
    despite the region names won't look as pretty as before (however, we gain
    more consistency with e.g. the serial driver:
    
    08000000-0bffffff : ee200000.rpc
    48000000-bfffffff : System RAM
      48000000-48007fff : reserved
      48080000-48b0ffff : Kernel code
      48b10000-48b8ffff : reserved
      48b90000-48c7afff : Kernel data
      bc6a4000-bcbfffff : reserved
      bcc0f000-bebfffff : reserved
      bec0e000-bec0efff : reserved
      bec11000-bec11fff : reserved
      bec12000-bec14fff : reserved
      bec15000-bfffffff : reserved
    e6050000-e605004f : e6050000.gpio
    e6051000-e605104f : e6051000.gpio
    e6052000-e605204f : e6052000.gpio
    e6053000-e605304f : e6053000.gpio
    e6054000-e605404f : e6054000.gpio
    e6055000-e605504f : e6055000.gpio
    e6060000-e606050b : e6060000.pin-controller
    e6e60000-e6e6003f : e6e60000.serial
    e7400000-e7400fff : e7400000.ethernet
    ee200000-ee2001ff : ee200000.rpc
    ee208000-ee2080ff : ee200000.rpc
    
    Fixes: 72f8c0bfa0de ("lib: devres: add convenience function to remap a resource")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2ff1126f0e8d4391de03a66e5527380de2b7c059
Author: Jan Kara <jack@suse.cz>
Date:   Tue Jan 29 17:17:24 2019 +0100

    ext2: Fix underflow in ext2_max_size()
    
    commit 1c2d14212b15a60300a2d4f6364753e87394c521 upstream.
    
    When ext2 filesystem is created with 64k block size, ext2_max_size()
    will return value less than 0. Also, we cannot write any file in this fs
    since the sb->maxbytes is less than 0. The core of the problem is that
    the size of block index tree for such large block size is more than
    i_blocks can carry. So fix the computation to count with this
    possibility.
    
    File size limits computed with the new function for the full range of
    possible block sizes look like:
    
    bits file_size
    10     17247252480
    11    275415851008
    12   2196873666560
    13   2197948973056
    14   2198486220800
    15   2198754754560
    16   2198888906752
    
    Reported-by: yangerkun <yangerkun@huawei.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit edd9501c04fb53d42706486d6a2c85949da7c435
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Wed Jan 30 18:30:51 2019 +0800

    tty: ipwireless: Fix potential NULL pointer dereference
    
    commit 7dd50e205b3348dc7784efbdf85723551de64a25 upstream.
    
    There is a potential NULL pointer dereference in case
    alloc_ctrl_packet() fails and returns NULL.
    
    Fixes: 099dc4fb6265 ("ipwireless: driver for PC Card 3G/UMTS modem")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 692c4f1cae57b407d67ba921f332be610d81bb60
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Wed Jan 23 14:58:27 2019 +0800

    mtd: docg3: Fix passing zero to 'PTR_ERR' warning in doc_probe_device
    
    commit 32937a82f36c7bbe08db4052de94bc7ade4e3c51 upstream.
    
    Fix a static code checker warning:
    drivers/mtd/devices/docg3.c:1875
     doc_probe_device() warn: passing zero to 'ERR_PTR'
    
    Fixes: ae9d4934b2d7 ("mtd: docg3: add multiple floor support")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: Boris Brezillon <bbrezillon@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2b651dccb59faeff3ed6c2f767b0c72161712b1a
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Jun 1 23:10:53 2015 +0200

    mtd: docg3: Fix kasprintf() usage
    
    commit 0eb8618bd07533f423fed47399a0d6387bfe7cac upstream.
    
    kasprintf() does a dynamic memory allocation and can fail.
    We have to handle that case.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 877ea54ae7258dc6ed431d88f8c836e5391df02f
Author: Richard Weinberger <richard@nod.at>
Date:   Mon Jun 1 23:10:52 2015 +0200

    mtd: docg3: Don't leak docg3->bbt in error path
    
    commit 45c2ebd702a468d5037cf16aa4f8ea8d67776f6a upstream.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3e86000e9ee756edb24441c841c5a7a8de3ed281
Author: Zhang, Jun <jun.zhang@intel.com>
Date:   Tue Dec 18 06:55:01 2018 -0800

    rcu: Do RCU GP kthread self-wakeup from softirq and interrupt
    
    commit 1d1f898df6586c5ea9aeaf349f13089c6fa37903 upstream.
    
    The rcu_gp_kthread_wake() function is invoked when it might be necessary
    to wake the RCU grace-period kthread.  Because self-wakeups are normally
    a useless waste of CPU cycles, if rcu_gp_kthread_wake() is invoked from
    this kthread, it naturally refuses to do the wakeup.
    
    Unfortunately, natural though it might be, this heuristic fails when
    rcu_gp_kthread_wake() is invoked from an interrupt or softirq handler
    that interrupted the grace-period kthread just after the final check of
    the wait-event condition but just before the schedule() call.  In this
    case, a wakeup is required, even though the call to rcu_gp_kthread_wake()
    is within the RCU grace-period kthread's context.  Failing to provide
    this wakeup can result in grace periods failing to start, which in turn
    results in out-of-memory conditions.
    
    This race window is quite narrow, but it actually did happen during real
    testing.  It would of course need to be fixed even if it was strictly
    theoretical in nature.
    
    This patch does not Cc stable because it does not apply cleanly to
    earlier kernel versions.
    
    Fixes: 48a7639ce80c ("rcu: Make callers awaken grace-period kthread")
    Reported-by: "He, Bo" <bo.he@intel.com>
    Co-developed-by: "Zhang, Jun" <jun.zhang@intel.com>
    Co-developed-by: "He, Bo" <bo.he@intel.com>
    Co-developed-by: "xiao, jin" <jin.xiao@intel.com>
    Co-developed-by: Bai, Jie A <jie.a.bai@intel.com>
    Signed-off: "Zhang, Jun" <jun.zhang@intel.com>
    Signed-off: "He, Bo" <bo.he@intel.com>
    Signed-off: "xiao, jin" <jin.xiao@intel.com>
    Signed-off: Bai, Jie A <jie.a.bai@intel.com>
    Signed-off-by: "Zhang, Jun" <jun.zhang@intel.com>
    [ paulmck: Switch from !in_softirq() to "!in_interrupt() &&
      !in_serving_softirq() to avoid redundant wakeups and to also handle the
      interrupt-handler scenario as well as the softirq-handler scenario that
      actually occurred in testing. ]
    Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
    Link: https://lkml.kernel.org/r/CD6925E8781EFD4D8E11882D20FC406D52A11F61@SHSMSX104.ccr.corp.intel.com
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 50542932303b239c723ca43be0a85efdc8094b61
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Wed Jan 9 16:05:10 2019 -0600

    applicom: Fix potential Spectre v1 vulnerabilities
    
    commit d7ac3c6ef5d8ce14b6381d52eb7adafdd6c8bb3c upstream.
    
    IndexCard is indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    drivers/char/applicom.c:418 ac_write() warn: potential spectre issue 'apbs' [r]
    drivers/char/applicom.c:728 ac_ioctl() warn: potential spectre issue 'apbs' [r] (local cap)
    
    Fix this by sanitizing IndexCard before using it to index apbs.
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://lore.kernel.org/lkml/20180423164740.GY17484@dhcp22.suse.cz/
    
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a8035bc1421a997470fbe0e1cdf0423fa3c7c168
Author: Buland Singh <bsingh@redhat.com>
Date:   Thu Dec 20 17:35:24 2018 +0530

    hpet: Fix missing '=' character in the __setup() code of hpet_mmap_enable
    
    commit 24d48a61f2666630da130cc2ec2e526eacf229e3 upstream.
    
    Commit '3d035f580699 ("drivers/char/hpet.c: allow user controlled mmap for
    user processes")' introduced a new kernel command line parameter hpet_mmap,
    that is required to expose the memory map of the HPET registers to
    user-space. Unfortunately the kernel command line parameter 'hpet_mmap' is
    broken and never takes effect due to missing '=' character in the __setup()
    code of hpet_mmap_enable.
    
    Before this patch:
    
    dmesg output with the kernel command line parameter hpet_mmap=1
    
    [    0.204152] HPET mmap disabled
    
    dmesg output with the kernel command line parameter hpet_mmap=0
    
    [    0.204192] HPET mmap disabled
    
    After this patch:
    
    dmesg output with the kernel command line parameter hpet_mmap=1
    
    [    0.203945] HPET mmap enabled
    
    dmesg output with the kernel command line parameter hpet_mmap=0
    
    [    0.204652] HPET mmap disabled
    
    Fixes: 3d035f580699 ("drivers/char/hpet.c: allow user controlled mmap for user processes")
    Signed-off-by: Buland Singh <bsingh@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1790573d242ec9043a3abaa57cd6870eaf461ba3
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Jan 16 11:48:53 2019 +0100

    pinctrl: sh-pfc: r8a7778: Fix HSPI pin numbers and names
    
    commit 8e32e881947be98abaa917157fefc4a3319e90af upstream.
    
    When declaring the HSPI RX1_B and TX1_B pins, two mistakes were made:
      - the rows and columns in the BGA pin matrix, from which the pin
        numbers are derived, were exchanged,
      - it was not taken into account that pin row labelling skips
        characters I, O, Q, and S.
    
    Fix the order, and the corresponding pin names.
    
    Notes:
      - The actual values of the pin numbers don't really matter (they just
        have to be unique), so the wrong order didn't have any impact,
      - Changing the names of the pins is user-visible, but there are no
        users in (upstream) DTS files.
    
    Fixes: 4f82e3ee724f1712 ("sh-pfc: Support pins not associated with a GPIO port")
    Fixes: 09cc76a95802e87d ("sh-pfc: r8a7778: add HSPI pin groups")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 84e40712fc57e619fe6bb00df14860d73f6be176
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Wed Jan 16 16:23:24 2019 +1100

    m68k: Add -ffreestanding to CFLAGS
    
    commit 28713169d879b67be2ef2f84dcf54905de238294 upstream.
    
    This patch fixes a build failure when using GCC 8.1:
    
    /usr/bin/ld: block/partitions/ldm.o: in function `ldm_parse_tocblock':
    block/partitions/ldm.c:153: undefined reference to `strcmp'
    
    This is caused by a new optimization which effectively replaces a
    strncmp() call with a strcmp() call. This affects a number of strncmp()
    call sites in the kernel.
    
    The entire class of optimizations is avoided with -fno-builtin, which
    gets enabled by -ffreestanding. This may avoid possible future build
    failures in case new optimizations appear in future compilers.
    
    I haven't done any performance measurements with this patch but I did
    count the function calls in a defconfig build. For example, there are now
    23 more sprintf() calls and 39 fewer strcpy() calls. The effect on the
    other libc functions is smaller.
    
    If this harms performance we can tackle that regression by optimizing
    the call sites, ideally using semantic patches. That way, clang and ICC
    builds might benfit too.
    
    Reference: https://marc.info/?l=linux-m68k&m=154514816222244&w=2
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 469dfbabbd120dad00a31d6fd913660ba8549087
Author: Stefan Agner <stefan@agner.ch>
Date:   Fri Jan 18 10:06:52 2019 +0100

    ASoC: imx-sgtl5000: put of nodes if finding codec fails
    
    commit d9866572486802bc598a3e8576a5231378d190de upstream.
    
    Make sure to properly put the of node in case finding the codec
    fails.
    
    Fixes: 81e8e4926167 ("ASoC: fsl: add sgtl5000 clock support for imx-sgtl5000")
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
    Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7eadb226baa9915d46e40d934e6e0ca788ca15f0
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Jan 10 12:17:58 2019 -0800

    crypto: tgr192 - fix unaligned memory access
    
    commit f990f7fb58ac8ac9a43316f09a48cff1a49dda42 upstream.
    
    Fix an unaligned memory access in tgr192_transform() by using the
    unaligned access helpers.
    
    Fixes: 06ace7a9bafe ("[CRYPTO] Use standard byte order macros wherever possible")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9aa2d96df4fa4f3c875c580aff3bb4d31229003d
Author: Eric Biggers <ebiggers@google.com>
Date:   Sun Jan 6 18:47:42 2019 -0800

    crypto: hash - set CRYPTO_TFM_NEED_KEY if ->setkey() fails
    
    commit ba7d7433a0e998c902132bd47330e355a1eaa894 upstream.
    
    Some algorithms have a ->setkey() method that is not atomic, in the
    sense that setting a key can fail after changes were already made to the
    tfm context.  In this case, if a key was already set the tfm can end up
    in a state that corresponds to neither the old key nor the new key.
    
    It's not feasible to make all ->setkey() methods atomic, especially ones
    that have to key multiple sub-tfms.  Therefore, make the crypto API set
    CRYPTO_TFM_NEED_KEY if ->setkey() fails and the algorithm requires a
    key, to prevent the tfm from being used until a new key is set.
    
    Note: we can't set CRYPTO_TFM_NEED_KEY for OPTIONAL_KEY algorithms, so
    ->setkey() for those must nevertheless be atomic.  That's fine for now
    since only the crc32 and crc32c algorithms set OPTIONAL_KEY, and it's
    not intended that OPTIONAL_KEY be used much.
    
    [Cc stable mainly because when introducing the NEED_KEY flag I changed
     AF_ALG to rely on it; and unlike in-kernel crypto API users, AF_ALG
     previously didn't have this problem.  So these "incompletely keyed"
     states became theoretically accessible via AF_ALG -- though, the
     opportunities for causing real mischief seem pretty limited.]
    
    Fixes: 9fa68f620041 ("crypto: hash - prevent using keyed hashes without setting key")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 872621b2ae8c3c9562c15b26cce059c79f3bf775
Author: Jacopo Mondi <jacopo+renesas@jmondi.org>
Date:   Fri Dec 29 07:22:26 2017 -0500

    media: v4l2: i2c: ov7670: Fix PLL bypass register values
    
    commit 61da76beef1e4f0b6ba7be4f8d0cf0dac7ce1f55 upstream.
    
    The following commits:
    commit f6dd927f34d6 ("[media] media: ov7670: calculate framerate properly for ov7675")
    commit 04ee6d92047e ("[media] media: ov7670: add possibility to bypass pll for ov7675")
    introduced the ability to bypass PLL multiplier and use input clock (xvclk)
    as pixel clock output frequency for ov7675 sensor.
    
    PLL is bypassed using register DBLV[7:6], according to ov7670 and ov7675
    sensor manuals. Macros used to set DBLV register seem wrong in the
    driver, as their values do not match what reported in the datasheet.
    
    Fix by changing DBLV_* macros to use bits [7:6] and set bits [3:0] to
    default 0x0a reserved value (according to datasheets).
    
    While at there, remove a write to DBLV register in
    "ov7675_set_framerate()" that over-writes the previous one to the same
    register that takes "info->pll_bypass" flag into account instead of setting PLL
    multiplier to 4x unconditionally.
    
    And, while at there, since "info->pll_bypass" is only used in
    set/get_framerate() functions used by ov7675 only, it is not necessary
    to check for the device id at probe time to make sure that when using
    ov7670 "info->pll_bypass" is set to false.
    
    Fixes: f6dd927f34d6 ("[media] media: ov7670: calculate framerate properly for ov7675")
    
    Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 62af7ce748a11b81a16dc941ec4caa2d5077dba2
Author: Pawe? Chmiel <pawel.mikolaj.chmiel@gmail.com>
Date:   Wed Jan 9 13:00:41 2019 -0500

    media: s5p-jpeg: Correct step and max values for V4L2_CID_JPEG_RESTART_INTERVAL
    
    commit 19c624c6b29e244c418f8b44a711cbf5e82e3cd4 upstream.
    
    This commit corrects max and step values for v4l2 control for
    V4L2_CID_JPEG_RESTART_INTERVAL. Max should be 0xffff and step should be 1.
    It was found by using v4l2-compliance tool and checking result of
    VIDIOC_QUERY_EXT_CTRL/QUERYMENU test.
    Previously it was complaining that step was bigger than difference
    between max and min.
    
    Fixes: 15f4bc3b1f42 ("[media] s5p-jpeg: Add JPEG controls support")
    
    Signed-off-by: Pawe? Chmiel <pawel.mikolaj.chmiel@gmail.com>
    Reviewed-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f866b661a5be1d0f938a50bc08aae4c524b9231f
Author: Pawe? Chmiel <pawel.mikolaj.chmiel@gmail.com>
Date:   Sat Dec 29 10:46:01 2018 -0500

    media: s5p-jpeg: Check for fmt_ver_flag when doing fmt enumeration
    
    commit 49710c32cd9d6626a77c9f5f978a5f58cb536b35 upstream.
    
    Previously when doing format enumeration, it was returning all
     formats supported by driver, even if they're not supported by hw.
    Add missing check for fmt_ver_flag, so it'll be fixed and only those
     supported by hw will be returned. Similar thing is already done
     in s5p_jpeg_find_format.
    
    It was found by using v4l2-compliance tool and checking result
     of VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS test
    and using v4l2-ctl to get list of all supported formats.
    
    Tested on s5pv210-galaxys (Samsung i9000 phone).
    
    Fixes: bb677f3ac434 ("[media] Exynos4 JPEG codec v4l2 driver")
    
    Signed-off-by: Pawe? Chmiel <pawel.mikolaj.chmiel@gmail.com>
    Reviewed-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    [hverkuil-cisco@xs4all.nl: fix a few alignment issues]
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 61e473039539bd4810001d2143b9b24355f0d8f4
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue Jan 8 11:37:19 2019 +0000

    powerpc/irq: drop arch_early_irq_init()
    
    commit 607ea5090b3fb61fea1d0bc5278e6c1d40ab5bd6 upstream.
    
    arch_early_irq_init() does nothing different than the weak
    arch_early_irq_init() in kernel/softirq.c
    
    Fixes: 089fb442f301 ("powerpc: Use ARCH_IRQ_INIT_FLAGS")
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Acked-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ddc56620045e44327933d04f27457ebe916cf15d
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Jan 3 20:16:13 2019 -0800

    crypto: pcbc - remove bogus memcpy()s with src == dest
    
    commit 251b7aea34ba3c4d4fdfa9447695642eb8b8b098 upstream.
    
    The memcpy()s in the PCBC implementation use walk->iv as both the source
    and destination, which has undefined behavior.  These memcpy()'s are
    actually unneeded, because walk->iv is already used to hold the previous
    plaintext block XOR'd with the previous ciphertext block.  Thus,
    walk->iv is already updated to its final value.
    
    So remove the broken and unnecessary memcpy()s.
    
    Fixes: 91652be5d1b9 ("[CRYPTO] pcbc: Add Propagated CBC template")
    Cc: David Howells <dhowells@redhat.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cf1e870707687a674608836cb9947d033cd255f7
Author: Stephen Smalley <sds@tycho.nsa.gov>
Date:   Wed Dec 12 10:10:55 2018 -0500

    selinux: avoid silent denials in permissive mode under RCU walk
    
    commit 3a28cff3bd4bf43f02be0c4e7933aebf3dc8197e upstream.
    
    commit 0dc1ba24f7fff6 ("SELINUX: Make selinux cache VFS RCU walks safe")
    results in no audit messages at all if in permissive mode because the
    cache is updated during the rcu walk and thus no denial occurs on
    the subsequent ref walk.  Fix this by not updating the cache when
    performing a non-blocking permission check.  This only affects search
    and symlink read checks during rcu walk.
    
    Fixes: 0dc1ba24f7fff6 ("SELINUX: Make selinux cache VFS RCU walks safe")
    Reported-by: BMK <bmktuwien@gmail.com>
    Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    [bwh: Backported to 3.16:
     - Add flags parameter to avc_update_node(), done upstream in commit
       fa1aa143ac4a "selinux: extended permissions for ioctls"
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 872dfecfaf15655f4c77b51d0077792df7c26bcb
Author: NeilBrown <neilb@suse.de>
Date:   Mon Mar 23 13:37:39 2015 +1100

    security/selinux: pass 'flags' arg to avc_audit() and avc_has_perm_flags()
    
    commit 7b20ea2579238f5e0da4bc93276c1b63c960c9ef upstream.
    
    This allows MAY_NOT_BLOCK to be passed, in RCU-walk mode, through
    the new avc_has_perm_flags() to avc_audit() and thence the slow_avc_audit.
    
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.16 as dependency of commit 3a28cff3bd4b
     "selinux: avoid silent denials in permissive mode under RCU walk"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7fe7a3f790837550ffefa96123d04cf876015add
Author: Gal Pressman <galpress@amazon.com>
Date:   Mon Jan 7 17:27:55 2019 +0200

    RDMA/ocrdma: Fix out of bounds index check in query pkey
    
    commit b188940796c7be31c1b8c25a9a0e0842c2e7a49e upstream.
    
    The pkey table size is one element, index should be tested for > 0 instead
    of > 1.
    
    Fixes: fe2caefcdf58 ("RDMA/ocrdma: Add driver for Emulex OneConnect IBoE RDMA adapter")
    Signed-off-by: Gal Pressman <galpress@amazon.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f6fc768f97d08a018e57b405b6151e666b3286ff
Author: Gal Pressman <galpress@amazon.com>
Date:   Mon Jan 7 17:27:54 2019 +0200

    IB/usnic: Fix out of bounds index check in query pkey
    
    commit 4959d5da5737dd804255c75b8cea0a2929ce279a upstream.
    
    The pkey table size is one element, index should be tested for > 0 instead
    of > 1.
    
    Fixes: e3cf00d0a87f ("IB/usnic: Add Cisco VIC low-level hardware driver")
    Signed-off-by: Gal Pressman <galpress@amazon.com>
    Acked-by: Parvi Kaustubhi <pkaustub@cisco.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 215bf080de689930ce95ad026a59a61ab28d664a
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Thu Jan 3 14:14:08 2019 -0600

    ARM: s3c24xx: Fix boolean expressions in osiris_dvs_notify
    
    commit e2477233145f2156434afb799583bccd878f3e9f upstream.
    
    Fix boolean expressions by using logical AND operator '&&' instead of
    bitwise operator '&'.
    
    This issue was detected with the help of Coccinelle.
    
    Fixes: 4fa084af28ca ("ARM: OSIRIS: DVS (Dynamic Voltage Scaling) supoort.")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    [krzk: Fix -Wparentheses warning]
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b429b68647312be7823b6eb17b40ad2f3fdca3f8
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Sat Dec 29 10:49:07 2018 +0800

    drm: Fix error handling in drm_legacy_addctx
    
    commit c39191feed4540fed98badeb484833dcf659bb96 upstream.
    
    'ctx->handle' is unsigned, it never less than zero.
    This patch use int 'tmp_handle' to handle the err condition.
    
    Fixes: 62968144e673 ("drm: convert drm context code to use Linux idr")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181229024907.12852-1-yuehaibing@huawei.com
    [bwh: Backported to 3.16: We only have the "legacy" driver type here]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b9e04b7c6288f1022f66b3f2c177db0c7d59ec47
Author: Jeremy Fertic <jeremyfertic@gmail.com>
Date:   Sat Dec 22 21:57:43 2018 -0700

    staging: iio: adt7316: fix the dac write calculation
    
    commit 78accaea117c1ae878774974fab91ac4a0b0e2b0 upstream.
    
    The lsb calculation is not masking the correct bits from the user input.
    Subtract 1 from (1 << offset) to correctly set up the mask to be applied
    to user input.
    
    The lsb register stores its value starting at the bit 7 position.
    adt7316_store_DAC() currently assumes the value is at the other end of the
    register. Shift the lsb value before storing it in a new variable lsb_reg,
    and write this variable to the lsb register.
    
    Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
    Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cc7c2fefb92133df34a20a9d634103634efa5d85
Author: Jeremy Fertic <jeremyfertic@gmail.com>
Date:   Sat Dec 22 21:57:42 2018 -0700

    staging: iio: adt7316: fix the dac read calculation
    
    commit 45130fb030aec26ac28b4bb23344901df3ec3b7f upstream.
    
    The calculation of the current dac value is using the wrong bits of the
    dac lsb register. Create two macros to shift the lsb register value into
    lsb position, depending on whether the dac is 10 or 12 bit. Initialize
    data to 0 so, with an 8 bit dac, the msb register value can be bitwise
    ORed with data.
    
    Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
    Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9563f2baadc36358cc6962808521b53b881f657c
Author: Jeremy Fertic <jeremyfertic@gmail.com>
Date:   Sat Dec 22 21:57:41 2018 -0700

    staging: iio: adt7316: fix handling of dac high resolution option
    
    commit 76b7fe8d6c4daf4db672eb953c892c6f6572a282 upstream.
    
    The adt7316/7 and adt7516/7 have the option to output voltage proportional
    to temperature on dac a and/or dac b. The default dac resolution in this
    mode is 8 bits with the dac high resolution option enabling 10 bits. None
    of these settings affect dacs c and d. Remove the "1 (12 bits)" output from
    the show function since that is not an option for this mode. Return
    "1 (10 bits)" if the device is one of the above mentioned chips and the dac
    high resolution mode is enabled.
    
    In the store function, the driver currently allows the user to write to the
    ADT7316_DA_HIGH_RESOLUTION bit regardless of the device in use. Add a check
    to return an error in the case of an adt7318 or adt7519. Remove the else
    statement that clears the ADT7316_DA_HIGH_RESOLUTION bit. Instead, clear it
    before conditionally enabling it, depending on user input. This matches the
    typical pattern in the driver when an attribute is a boolean.
    
    Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
    Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 88090a012c069a1b4f0747827e060e3da7c3de2f
Author: Jeremy Fertic <jeremyfertic@gmail.com>
Date:   Sat Dec 22 21:57:40 2018 -0700

    staging: iio: adt7316: fix dac_bits assignment
    
    commit e9de475723de5bf207a5b7b88bdca863393e42c8 upstream.
    
    The value of dac_bits is used in adt7316_show_DAC() and adt7316_store_DAC(),
    and it should be either 8, 10, or 12 bits depending on the device in use. The
    driver currently only assigns a value to dac_bits in
    adt7316_store_da_high_resolution(). The purpose of the dac high resolution
    option is not to change dac resolution for normal operation. Instead, it
    is specific to an optional feature where one or two of the four dacs can
    be set to output voltage proportional to temperature. If the user chooses
    to set dac a and/or dac b to output voltage proportional to temperature,
    the da_high_resolution attribute can optionally be enabled to use 10 bit
    resolution rather than the default 8 bits. This is only available on the
    10 and 12 bit dac devices. If the user attempts to read or write dacs a
    or b under these settings, the driver's current behaviour is to return an
    error. Dacs c and d continue to operate normally under these conditions.
    With the above in mind, remove the dac_bits assignments from this function
    since the value of dac_bits as used in the driver is not dependent on this
    dac high resolution option.
    
    Since the dac_bits assignments discussed above are currently the only ones
    in this driver, the default value of dac_bits is 0. This results in incorrect
    calculations when the dacs are read or written in adt7316_show_DAC() and
    adt7316_store_DAC(). To correct this, assign a value to dac_bits in
    adt7316_probe() to ensure correct operation as soon as the device is
    registered and available to userspace.
    
    Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
    Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2adf06a6e41d634fa52c65674b09f29fc1e53ed4
Author: Yangtao Li <tiny.windzz@gmail.com>
Date:   Wed Dec 26 08:50:13 2018 -0500

    clk: dove: fix refcount leak in dove_clk_init()
    
    commit 8d726c5128298386b907963033be93407b0c4275 upstream.
    
    The of_find_compatible_node() returns a node pointer with refcount
    incremented, but there is the lack of use of the of_node_put() when
    done. Add the missing of_node_put() to release the refcount.
    
    Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
    Reviewed-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Fixes: 8f7fc5450b64 ("clk: mvebu: dove: maintain clock init order")
    Fixes: 63b8d92c793f ("clk: add Dove PLL divider support for GPU, VMeta and AXI clocks")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    [bwh: Backported to 3.16: There is no ddnp variable here]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 75bb57f077ebfa37961fa02dc4d0cf54d3632a49
Author: Yangtao Li <tiny.windzz@gmail.com>
Date:   Wed Dec 26 08:42:26 2018 -0500

    clk: armada-xp: fix refcount leak in axp_clk_init()
    
    commit db20a90a4b6745dad62753f8bd2f66afdd5abc84 upstream.
    
    The of_find_compatible_node() returns a node pointer with refcount
    incremented, but there is the lack of use of the of_node_put() when
    done. Add the missing of_node_put() to release the refcount.
    
    Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
    Reviewed-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Fixes: 0a11a6ae9437 ("clk: mvebu: armada-xp: maintain clock init order")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 88566fe4e98b296a7b4a34322f147366dc0bbdd8
Author: Yangtao Li <tiny.windzz@gmail.com>
Date:   Wed Dec 26 08:40:19 2018 -0500

    clk: kirkwood: fix refcount leak in kirkwood_clk_init()
    
    commit e7beeab9c61591cd0e690d8733d534c3f4278ff8 upstream.
    
    The of_find_compatible_node() returns a node pointer with refcount
    incremented, but there is the lack of use of the of_node_put() when
    done. Add the missing of_node_put() to release the refcount.
    
    Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
    Reviewed-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Fixes: 58d516ae95cb ("clk: mvebu: kirkwood: maintain clock init order")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5f02a65d16726bb32dc284337adf4f3170eef67c
Author: Yangtao Li <tiny.windzz@gmail.com>
Date:   Wed Dec 26 08:36:58 2018 -0500

    clk: armada-370: fix refcount leak in a370_clk_init()
    
    commit a3c24050bdf70c958a8d98c2823b66ea761e6a31 upstream.
    
    The of_find_compatible_node() returns a node pointer with refcount
    incremented, but there is the lack of use of the of_node_put() when
    done. Add the missing of_node_put() to release the refcount.
    
    Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
    Reviewed-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Fixes: 07ad6836fa21 ("clk: mvebu: armada-370: maintain clock init order")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 14e535d7fffd131971f8a6ee79f690951c57a312
Author: Yangtao Li <tiny.windzz@gmail.com>
Date:   Wed Dec 26 08:59:36 2018 -0500

    clk: vf610: fix refcount leak in vf610_clocks_init()
    
    commit 567177024e0313e4f0dcba7ba10c0732e50e655d upstream.
    
    The of_find_compatible_node() returns a node pointer with refcount
    incremented, but there is the lack of use of the of_node_put() when
    done. Add the missing of_node_put() to release the refcount.
    
    Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
    Fixes: 1f2c5fd5f048 ("ARM: imx: add VF610 clock support")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bf8436856123c35b061bd735630cbbf07d506cbb
Author: Yangtao Li <tiny.windzz@gmail.com>
Date:   Wed Dec 26 08:55:10 2018 -0500

    clk: imx6sx: fix refcount leak in imx6sx_clocks_init()
    
    commit 1731e14fb30212dd8c1e9f8fc1af061e56498c55 upstream.
    
    The of_find_compatible_node() returns a node pointer with refcount
    incremented, but there is the lack of use of the of_node_put() when
    done. Add the missing of_node_put() to release the refcount.
    
    Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
    Fixes: d55135689019 ("ARM: imx: add clock driver for imx6sx")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9fd5179660b6737ed239751286270fafbbce724e
Author: Yangtao Li <tiny.windzz@gmail.com>
Date:   Wed Dec 26 08:53:00 2018 -0500

    clk: imx6q: fix refcount leak in imx6q_clocks_init()
    
    commit c9ec1d8fef31b5fc9e90e99f9bd685db5caa7c5e upstream.
    
    The of_find_compatible_node() returns a node pointer with refcount
    incremented, but there is the lack of use of the of_node_put() when
    done. Add the missing of_node_put() to release the refcount.
    
    Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
    Fixes: 2acd1b6f889c ("ARM: i.MX6: implement clocks using common clock framework")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 273910b1603ce0acc9e727ba01596b194d68d34e
Author: Yangtao Li <tiny.windzz@gmail.com>
Date:   Wed Dec 26 08:32:15 2018 -0500

    clk: samsung: exynos4: fix refcount leak in exynos4_get_xom()
    
    commit cee82eb9532090cd1dc953e845d71f9b1445c84e upstream.
    
    The of_find_compatible_node() returns a node pointer with refcount
    incremented, but there is the lack of use of the of_node_put() when
    done. Add the missing of_node_put() to release the refcount.
    
    Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
    Fixes: e062b571777f ("clk: exynos4: register clocks using common clock framework")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b3486c723fe5c2f71ea5ecbafc73203b80edaa82
Author: Yangtao Li <tiny.windzz@gmail.com>
Date:   Wed Dec 26 08:29:02 2018 -0500

    clk: socfpga: fix refcount leak
    
    commit 7f9705beeb3759e69165e7aff588f6488ff6c1ac upstream.
    
    The of_find_compatible_node() returns a node pointer with refcount
    incremented, but there is the lack of use of the of_node_put() when
    done. Add the missing of_node_put() to release the refcount.
    
    Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
    Fixes: 5343325ff3dd ("clk: socfpga: add a clock driver for the Arria 10 platform")
    Fixes: a30d27ed739b ("clk: socfpga: fix clock driver for 3.15")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    [bwh: Backported to 3.16: drop changes in clk-pll-a10.c]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6cbed80aa2856b5c233352931023838175c9157b
Author: Yangtao Li <tiny.windzz@gmail.com>
Date:   Wed Dec 26 08:10:01 2018 -0500

    clk: highbank: fix refcount leak in hb_clk_init()
    
    commit 5eb8ba90958de1285120dae5d3a5d2b1a360b3b4 upstream.
    
    The of_find_compatible_node() returns a node pointer with refcount
    incremented, but there is the lack of use of the of_node_put() when
    done. Add the missing of_node_put() to release the refcount.
    
    Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
    Fixes: 26cae166cff9 ("ARM: highbank: remove custom .init_time hook")
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 68042fcef29db5422b58bb00681f6044fdc528dc
Author: Jeremy Fertic <jeremyfertic@gmail.com>
Date:   Tue Dec 11 17:55:00 2018 -0700

    staging: iio: adt7316: allow adt751x to use internal vref for all dacs
    
    commit 10bfe7cc1739c22f0aa296b39e53f61e9e3f4d99 upstream.
    
    With adt7516/7/9, internal vref is available for dacs a and b, dacs c and
    d, or all dacs. The driver doesn't currently support internal vref for all
    dacs. Change the else if to an if so both bits are checked rather than
    just one or the other.
    
    Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
    Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5cb51beaf6242a37da1180cdca183a28931f7cde
Author: Jeremy Fertic <jeremyfertic@gmail.com>
Date:   Tue Dec 11 17:54:54 2018 -0700

    staging: iio: adt7316: invert the logic of the check for an ldac pin
    
    commit 85a1c11913312132d0800ca2c1c42a011f96ea92 upstream.
    
    ADT7316_DA_EN_VIA_DAC_LDCA is set when the dac and ldac registers are being
    used to update the dacs instead of the ldac pin. ADT7516_SEL_AIN3 is an adc
    input that shares the ldac pin. Only set these bits if an ldac pin is not
    being used.
    
    This could be backported to stable, but note there are various
    other bugs that probably make that a waste of time.
    
    Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
    Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4b36e0ad6dfafa8f48e6d232040d5b437e64a9d5
Author: Jeremy Fertic <jeremyfertic@gmail.com>
Date:   Tue Dec 11 17:54:53 2018 -0700

    staging: iio: adt7316: fix register and bit definitions
    
    commit 53a6f022b4fe8645468adaffca901dbf8c3c547e upstream.
    
    Change two register addresses and one bit definition to match the
    datasheet.
    
    Note that there are many issues in this driver so I would
    not suggest backporting these fixes to stable trees.
    
    Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
    Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>