commit e6a95d8851f1e993269b2172595107061f9371ae
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Jun 9 09:18:21 2019 +0200

    Linux 4.14.124

commit 04d3e9c446e2caf80b19e0332e58cec0a2693f7f
Author: Nadav Amit <namit@vmware.com>
Date:   Mon Jun 4 09:47:13 2018 -0400

    media: uvcvideo: Fix uvc_alloc_entity() allocation alignment
    
    commit 89dd34caf73e28018c58cd193751e41b1f8bdc56 upstream.
    
    The use of ALIGN() in uvc_alloc_entity() is incorrect, since the size of
    (entity->pads) is not a power of two. As a stop-gap, until a better
    solution is adapted, use roundup() instead.
    
    Found by a static assertion. Compile-tested only.
    
    Fixes: 4ffc2d89f38a ("uvcvideo: Register subdevices for each entity")
    
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Cc: Doug Anderson <dianders@chromium.org>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2a035d7822ac8d2870cd6dbaadc1ab407713b83
Author: Todd Kjos <tkjos@android.com>
Date:   Wed Jun 5 09:37:46 2019 -0700

    binder: fix race between munmap() and direct reclaim
    
    commit 5cec2d2e5839f9c0fec319c523a911e0a7fd299f upstream.
    
    An munmap() on a binder device causes binder_vma_close() to be called
    which clears the alloc->vma pointer.
    
    If direct reclaim causes binder_alloc_free_page() to be called, there
    is a race where alloc->vma is read into a local vma pointer and then
    used later after the mm->mmap_sem is acquired. This can result in
    calling zap_page_range() with an invalid vma which manifests as a
    use-after-free in zap_page_range().
    
    The fix is to check alloc->vma after acquiring the mmap_sem (which we
    were acquiring anyway) and skip zap_page_range() if it has changed
    to NULL.
    
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
    Cc: stable <stable@vger.kernel.org> # 4.14
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 046f1166fb7ed28e064b24c666aa7312e1d75a0e
Author: Todd Kjos <tkjos@android.com>
Date:   Wed Jun 5 09:37:45 2019 -0700

    Revert "binder: fix handling of misaligned binder object"
    
    This reverts commit 33c6b9ca70a8b066a613e2a3d0331ae8f82aa31a.
    
    The commit message is for a different patch. Reverting and then adding
    the same patch back with the correct commit message.
    
    Reported-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Cc: stable <stable@vger.kernel.org> # 4.14
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e984ff3e1559579c289e9c918d573e5b721ab5c
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jun 5 20:40:30 2019 +0200

    Revert "x86/build: Move _etext to actual end of .text"
    
    This reverts commit 392bef709659abea614abfe53cf228e7a59876a4.
    
    It seems to cause lots of problems when using the gold linker, and no
    one really needs this at the moment, so just revert it from the stable
    trees.
    
    Cc: Sami Tolvanen <samitolvanen@google.com>
    Reported-by: Kees Cook <keescook@chromium.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Reported-by: Alec Ari <neotheuser@gmail.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08aaa79ba25bd0ec125c3a7d3a7c4a933875dc7e
Author: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Date:   Sat Jan 19 20:59:34 2019 +0100

    include/linux/module.h: copy __init/__exit attrs to init/cleanup_module
    
    commit a6e60d84989fa0e91db7f236eda40453b0e44afa upstream.
    
    The upcoming GCC 9 release extends the -Wmissing-attributes warnings
    (enabled by -Wall) to C and aliases: it warns when particular function
    attributes are missing in the aliases but not in their target.
    
    In particular, it triggers for all the init/cleanup_module
    aliases in the kernel (defined by the module_init/exit macros),
    ending up being very noisy.
    
    These aliases point to the __init/__exit functions of a module,
    which are defined as __cold (among other attributes). However,
    the aliases themselves do not have the __cold attribute.
    
    Since the compiler behaves differently when compiling a __cold
    function as well as when compiling paths leading to calls
    to __cold functions, the warning is trying to point out
    the possibly-forgotten attribute in the alias.
    
    In order to keep the warning enabled, we decided to silence
    this case. Ideally, we would mark the aliases directly
    as __init/__exit. However, there are currently around 132 modules
    in the kernel which are missing __init/__exit in their init/cleanup
    functions (either because they are missing, or for other reasons,
    e.g. the functions being called from somewhere else); and
    a section mismatch is a hard error.
    
    A conservative alternative was to mark the aliases as __cold only.
    However, since we would like to eventually enforce __init/__exit
    to be always marked,  we chose to use the new __copy function
    attribute (introduced by GCC 9 as well to deal with this).
    With it, we copy the attributes used by the target functions
    into the aliases. This way, functions that were not marked
    as __init/__exit won't have their aliases marked either,
    and therefore there won't be a section mismatch.
    
    Note that the warning would go away marking either the extern
    declaration, the definition, or both. However, we only mark
    the definition of the alias, since we do not want callers
    (which only see the declaration) to be compiled as if the function
    was __cold (and therefore the paths leading to those calls
    would be assumed to be unlikely).
    
    Link: https://lore.kernel.org/lkml/20190123173707.GA16603@gmail.com/
    Link: https://lore.kernel.org/lkml/20190206175627.GA20399@gmail.com/
    Suggested-by: Martin Sebor <msebor@gcc.gnu.org>
    Acked-by: Jessica Yu <jeyu@kernel.org>
    Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b00c958ceb6c2656b3c58266363ae9020398ebf0
Author: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Date:   Fri Feb 8 23:51:05 2019 +0100

    Compiler Attributes: add support for __copy (gcc >= 9)
    
    commit c0d9782f5b6d7157635ae2fd782a4b27d55a6013 upstream.
    
    From the GCC manual:
    
      copy
      copy(function)
    
        The copy attribute applies the set of attributes with which function
        has been declared to the declaration of the function to which
        the attribute is applied. The attribute is designed for libraries
        that define aliases or function resolvers that are expected
        to specify the same set of attributes as their targets. The copy
        attribute can be used with functions, variables, or types. However,
        the kind of symbol to which the attribute is applied (either
        function or variable) must match the kind of symbol to which
        the argument refers. The copy attribute copies only syntactic and
        semantic attributes but not attributes that affect a symbol’s
        linkage or visibility such as alias, visibility, or weak.
        The deprecated attribute is also not copied.
    
      https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
    
    The upcoming GCC 9 release extends the -Wmissing-attributes warnings
    (enabled by -Wall) to C and aliases: it warns when particular function
    attributes are missing in the aliases but not in their target, e.g.:
    
        void __cold f(void) {}
        void __alias("f") g(void);
    
    diagnoses:
    
        warning: 'g' specifies less restrictive attribute than
        its target 'f': 'cold' [-Wmissing-attributes]
    
    Using __copy(f) we can copy the __cold attribute from f to g:
    
        void __cold f(void) {}
        void __copy(f) __alias("f") g(void);
    
    This attribute is most useful to deal with situations where an alias
    is declared but we don't know the exact attributes the target has.
    
    For instance, in the kernel, the widely used module_init/exit macros
    define the init/cleanup_module aliases, but those cannot be marked
    always as __init/__exit since some modules do not have their
    functions marked as such.
    
    Suggested-by: Martin Sebor <msebor@gcc.gnu.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd05d94b97332598ef28756293a4e643e60a9757
Author: Vicente Bergas <vicencb@gmail.com>
Date:   Tue Apr 2 13:37:53 2019 +0200

    drm/rockchip: shutdown drm subsystem on shutdown
    
    commit b8f9d7f37b6af829c34c49d1a4f73ce6ed58e403 upstream.
    
    As explained by Robin Murphy:
    > the IOMMU shutdown disables paging, so if the VOP is still
    > scanning out then that will result in whatever IOVAs it was using now going
    > straight out onto the bus as physical addresses.
    
    We had a more radical approach before in commit
    7f3ef5dedb14 ("drm/rockchip: Allow driver to be shutdown on reboot/kexec")
    but that resulted in new warnings and oopses on shutdown on rk3399
    chromeos devices.
    
    So second try is resurrecting Vicentes shutdown change which should
    achieve the same result but in a less drastic way.
    
    Fixes: 63238173b2fa ("Revert "drm/rockchip: Allow driver to be shutdown on reboot/kexec"")
    Cc: Jeffy Chen <jeffy.chen@rock-chips.com>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Brian Norris <briannorris@chromium.org>
    Cc: Doug Anderson <dianders@chromium.org>
    Cc: stable@vger.kernel.org
    Suggested-by: JeffyChen <jeffy.chen@rock-chips.com>
    Suggested-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Vicente Bergas <vicencb@gmail.com>
    [adapted commit message to explain the history]
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Tested-by: Brian Norris <briannorris@chromium.org>
    Tested-by: Douglas Anderson <dianders@chromium.org>
    Acked-by: Marc Zyngier <marc.zyngier@arm.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190402113753.10118-1-heiko@sntech.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 481a47563bed963a73c64fc810f63c1d69552022
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Tue May 7 11:07:53 2019 +0200

    drm/vmwgfx: Don't send drm sysfs hotplug events on initial master set
    
    commit 63cb44441826e842b7285575b96db631cc9f2505 upstream.
    
    This may confuse user-space clients like plymouth that opens a drm
    file descriptor as a result of a hotplug event and then generates a
    new event...
    
    Cc: <stable@vger.kernel.org>
    Fixes: 5ea1734827bb ("drm/vmwgfx: Send a hotplug event at master_set")
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Deepak Rawat <drawat@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed69b64c3c3c517b347d85b456169f266464bb34
Author: Kees Cook <keescook@chromium.org>
Date:   Mon May 20 11:50:42 2019 -0700

    gcc-plugins: Fix build failures under Darwin host
    
    commit 7210e060155b9cf557fb13128353c3e494fa5ed3 upstream.
    
    The gcc-common.h file did not take into account certain macros that
    might have already been defined in the build environment. This updates
    the header to avoid redefining the macros, as seen on a Darwin host
    using gcc 4.9.2:
    
     HOSTCXX -fPIC scripts/gcc-plugins/arm_ssp_per_task_plugin.o - due to: scripts/gcc-plugins/gcc-common.h
    In file included from scripts/gcc-plugins/arm_ssp_per_task_plugin.c:3:0:
    scripts/gcc-plugins/gcc-common.h:153:0: warning: "__unused" redefined
    ^
    In file included from /usr/include/stdio.h:64:0,
                    from /Users/hns/Documents/Projects/QuantumSTEP/System/Library/Frameworks/System.framework/Versions-jessie/x86_64-apple-darwin15.0.0/gcc/arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabi/4.9.2/plugin/include/system.h:40,
                    from /Users/hns/Documents/Projects/QuantumSTEP/System/Library/Frameworks/System.framework/Versions-jessie/x86_64-apple-darwin15.0.0/gcc/arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabi/4.9.2/plugin/include/gcc-plugin.h:28,
                    from /Users/hns/Documents/Projects/QuantumSTEP/System/Library/Frameworks/System.framework/Versions-jessie/x86_64-apple-darwin15.0.0/gcc/arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabi/4.9.2/plugin/include/plugin.h:23,
                    from scripts/gcc-plugins/gcc-common.h:9,
                    from scripts/gcc-plugins/arm_ssp_per_task_plugin.c:3:
    /usr/include/sys/cdefs.h:161:0: note: this is the location of the previous definition
    ^
    
    Reported-and-tested-by: "H. Nikolaus Schaller" <hns@goldelico.com>
    Fixes: 189af4657186 ("ARM: smp: add support for per-task stack canaries")
    Cc: stable@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3420dcefabd8e909f3d31284baa9ef276d04fbdb
Author: Benjamin Coddington <bcodding@redhat.com>
Date:   Mon May 20 10:33:07 2019 -0400

    Revert "lockd: Show pid of lockd for remote locks"
    
    commit 141731d15d6eb2fd9aaefbf9b935ce86ae243074 upstream.
    
    This reverts most of commit b8eee0e90f97 ("lockd: Show pid of lockd for
    remote locks"), which caused remote locks to not be differentiated between
    remote processes for NLM.
    
    We retain the fixup for setting the client's fl_pid to a negative value.
    
    Fixes: b8eee0e90f97 ("lockd: Show pid of lockd for remote locks")
    Cc: stable@vger.kernel.org
    
    Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
    Reviewed-by: XueWei Zhang <xueweiz@google.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dea5d380e22c1bd754cd3f02ac75ca544b4f656e
Author: Roberto Bergantinos Corpas <rbergant@redhat.com>
Date:   Tue May 28 09:38:14 2019 +0200

    CIFS: cifs_read_allocate_pages: don't iterate through whole page array on ENOMEM
    
    commit 31fad7d41e73731f05b8053d17078638cf850fa6 upstream.
    
     In cifs_read_allocate_pages, in case of ENOMEM, we go through
    whole rdata->pages array but we have failed the allocation before
    nr_pages, therefore we may end up calling put_page with NULL
    pointer, causing oops
    
    Signed-off-by: Roberto Bergantinos Corpas <rbergant@redhat.com>
    Acked-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f205a917143120bd0caceb79f68331ebb59edffb
Author: Tim Collier <osdevtc@gmail.com>
Date:   Sat May 11 18:40:46 2019 +0100

    staging: wlan-ng: fix adapter initialization failure
    
    commit a67fedd788182764dc8ed59037c604b7e60349f1 upstream.
    
    Commit e895f00a8496 ("Staging: wlan-ng: hfa384x_usb.c Fixed too long
    code line warnings.") moved the retrieval of the transfer buffer from
    the URB from the top of function hfa384x_usbin_callback to a point
    after reposting of the URB via a call to submit_rx_urb. The reposting
    of the URB allocates a new transfer buffer so the new buffer is
    retrieved instead of the buffer containing the response passed into
    the callback. This results in failure to initialize the adapter with
    an error reported in the system log (something like "CTLX[1] error:
    state(Request failed)").
    
    This change moves the retrieval to just before the point where the URB
    is reposted so that the correct transfer buffer is retrieved and
    initialization of the device succeeds.
    
    Signed-off-by: Tim Collier <osdevtc@gmail.com>
    Fixes: e895f00a8496 ("Staging: wlan-ng: hfa384x_usb.c Fixed too long code line warnings.")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5a14bba22ae32bb075617d3afb0f1eb4d6f3444
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed May 15 12:38:33 2019 +0300

    staging: vc04_services: prevent integer overflow in create_pagelist()
    
    commit ca641bae6da977d638458e78cd1487b6160a2718 upstream.
    
    The create_pagelist() "count" parameter comes from the user in
    vchiq_ioctl() and it could overflow.  If you look at how create_page()
    is called in vchiq_prepare_bulk_data(), then the "size" variable is an
    int so it doesn't make sense to allow negatives or larger than INT_MAX.
    
    I don't know this code terribly well, but I believe that typical values
    of "count" are typically quite low and I don't think this check will
    affect normal valid uses at all.
    
    The "pagelist_size" calculation can also overflow on 32 bit systems, but
    not on 64 bit systems.  I have added an integer overflow check for that
    as well.
    
    The Raspberry PI doesn't offer the same level of memory protection that
    x86 does so these sorts of bugs are probably not super critical to fix.
    
    Fixes: 71bad7f08641 ("staging: add bcm2708 vchiq driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b69101c243a20781c7c0839c0026bc5dfe18fcea
Author: George G. Davis <george_davis@mentor.com>
Date:   Tue May 14 23:29:34 2019 -0400

    serial: sh-sci: disable DMA for uart_console
    
    commit 099506cbbc79c0bd52b19cb6b930f256dabc3950 upstream.
    
    As noted in commit 84b40e3b57ee ("serial: 8250: omap: Disable DMA for
    console UART"), UART console lines use low-level PIO only access functions
    which will conflict with use of the line when DMA is enabled, e.g. when
    the console line is also used for systemd messages. So disable DMA
    support for UART console lines.
    
    Reported-by: Michael Rodin <mrodin@de.adit-jv.com>
    Link: https://patchwork.kernel.org/patch/10929511/
    Tested-by: Eugeniu Rosca <erosca@de.adit-jv.com>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: stable@vger.kernel.org
    Signed-off-by: George G. Davis <george_davis@mentor.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8eb37017409967c658041b806b1c4817e69924b3
Author: Roberto Sassu <roberto.sassu@huawei.com>
Date:   Wed May 29 15:30:35 2019 +0200

    ima: show rules with IMA_INMASK correctly
    
    commit 8cdc23a3d9ec0944000ad43bad588e36afdc38cd upstream.
    
    Show the '^' character when a policy rule has flag IMA_INMASK.
    
    Fixes: 80eae209d63ac ("IMA: allow reading back the current IMA policy")
    Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 732c9e41486baa174c30602968d42f558f0974e5
Author: Jonathan Corbet <corbet@lwn.net>
Date:   Tue May 21 14:23:43 2019 -0600

    doc: Cope with Sphinx logging deprecations
    
    commit 096ea522e84ea68f8e6c41e5e7294731a81e29bc upstream.
    
    Recent versions of sphinx will emit messages like:
    
      Documentation/sphinx/kerneldoc.py:103:
         RemovedInSphinx20Warning: app.warning() is now deprecated.
         Use sphinx.util.logging instead.
    
    Switch to sphinx.util.logging to make this unsightly message go away.
    Alas, that interface was only added in version 1.6, so we have to add a
    version check to keep things working with older sphinxes.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ddc65cba192a0dbfd994856e64f0e1175635bd6
Author: Jonathan Corbet <corbet@lwn.net>
Date:   Tue May 21 14:42:34 2019 -0600

    doc: Cope with the deprecation of AutoReporter
    
    commit 2404dad1f67f8917e30fc22a85e0dbcc85b99955 upstream.
    
    AutoReporter is going away; recent versions of sphinx emit a warning like:
    
      Documentation/sphinx/kerneldoc.py:125:
          RemovedInSphinx20Warning: AutodocReporter is now deprecated.
          Use sphinx.util.docutils.switch_source_input() instead.
    
    Make the switch.  But switch_source_input() only showed up in 1.7, so we
    have to do ugly version checks to keep things working in older versions.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7dbf1a7bef3e5ec586b050c81a2afbb8eac18ce6
Author: Jonathan Corbet <corbet@lwn.net>
Date:   Wed May 22 14:30:45 2019 -0600

    docs: Fix conf.py for Sphinx 2.0
    
    commit 3bc8088464712fdcb078eefb68837ccfcc413c88 upstream.
    
    Our version check in Documentation/conf.py never envisioned a world where
    Sphinx moved beyond 1.x.  Now that the unthinkable has happened, fix our
    version check to handle higher version numbers correctly.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3213acb17a4bbf4da3eaf5206579fab6dcf554d7
Author: Zhenliang Wei <weizhenliang@huawei.com>
Date:   Fri May 31 22:30:52 2019 -0700

    kernel/signal.c: trace_signal_deliver when signal_group_exit
    
    commit 98af37d624ed8c83f1953b1b6b2f6866011fc064 upstream.
    
    In the fixes commit, removing SIGKILL from each thread signal mask and
    executing "goto fatal" directly will skip the call to
    "trace_signal_deliver".  At this point, the delivery tracking of the
    SIGKILL signal will be inaccurate.
    
    Therefore, we need to add trace_signal_deliver before "goto fatal" after
    executing sigdelset.
    
    Note: SEND_SIG_NOINFO matches the fact that SIGKILL doesn't have any info.
    
    Link: http://lkml.kernel.org/r/20190425025812.91424-1-weizhenliang@huawei.com
    Fixes: cf43a757fd4944 ("signal: Restore the stop PTRACE_EVENT_EXIT")
    Signed-off-by: Zhenliang Wei <weizhenliang@huawei.com>
    Reviewed-by: Christian Brauner <christian@brauner.io>
    Reviewed-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Ivan Delalande <colona@arista.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Deepa Dinamani <deepa.kernel@gmail.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bd33537171499e1ed0528442d31fc1d5698b4c8
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Fri May 31 22:30:26 2019 -0700

    memcg: make it work on sparse non-0-node systems
    
    commit 3e8589963773a5c23e2f1fe4bcad0e9a90b7f471 upstream.
    
    We have a single node system with node 0 disabled:
      Scanning NUMA topology in Northbridge 24
      Number of physical nodes 2
      Skipping disabled node 0
      Node 1 MemBase 0000000000000000 Limit 00000000fbff0000
      NODE_DATA(1) allocated [mem 0xfbfda000-0xfbfeffff]
    
    This causes crashes in memcg when system boots:
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
      #PF error: [normal kernel read fault]
    ...
      RIP: 0010:list_lru_add+0x94/0x170
    ...
      Call Trace:
       d_lru_add+0x44/0x50
       dput.part.34+0xfc/0x110
       __fput+0x108/0x230
       task_work_run+0x9f/0xc0
       exit_to_usermode_loop+0xf5/0x100
    
    It is reproducible as far as 4.12.  I did not try older kernels.  You have
    to have a new enough systemd, e.g.  241 (the reason is unknown -- was not
    investigated).  Cannot be reproduced with systemd 234.
    
    The system crashes because the size of lru array is never updated in
    memcg_update_all_list_lrus and the reads are past the zero-sized array,
    causing dereferences of random memory.
    
    The root cause are list_lru_memcg_aware checks in the list_lru code.  The
    test in list_lru_memcg_aware is broken: it assumes node 0 is always
    present, but it is not true on some systems as can be seen above.
    
    So fix this by avoiding checks on node 0.  Remember the memcg-awareness by
    a bool flag in struct list_lru.
    
    Link: http://lkml.kernel.org/r/20190522091940.3615-1-jslaby@suse.cz
    Fixes: 60d3fd32a7a9 ("list_lru: introduce per-memcg lists")
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Suggested-by: Vladimir Davydov <vdavydov.dev@gmail.com>
    Acked-by: Vladimir Davydov <vdavydov.dev@gmail.com>
    Reviewed-by: Shakeel Butt <shakeelb@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d3494aa6609d2acc5e37f09a95a13bc41868af8
Author: Joe Burmeister <joe.burmeister@devtank.co.uk>
Date:   Mon May 13 11:23:57 2019 +0100

    tty: max310x: Fix external crystal register setup
    
    commit 5d24f455c182d5116dd5db8e1dc501115ecc9c2c upstream.
    
    The datasheet states:
    
      Bit 4: ClockEnSet the ClockEn bit high to enable an external clocking
    (crystal or clock generator at XIN). Set the ClockEn bit to 0 to disable
    clocking
      Bit 1: CrystalEnSet the CrystalEn bit high to enable the crystal
    oscillator. When using an external clock source at XIN, CrystalEn must
    be set low.
    
    The bit 4, MAX310X_CLKSRC_EXTCLK_BIT, should be set and was not.
    
    This was required to make the MAX3107 with an external crystal on our
    board able to send or receive data.
    
    Signed-off-by: Joe Burmeister <joe.burmeister@devtank.co.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7dba5f1072b588e4b924fc7d16dda0fc86715a56
Author: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Date:   Mon May 20 20:38:48 2019 +0200

    tty: serial: msm_serial: Fix XON/XOFF
    
    commit 61c0e37950b88bad590056286c1d766b1f167f4e upstream.
    
    When the tty layer requests the uart to throttle, the current code
    executing in msm_serial will trigger "Bad mode in Error Handler" and
    generate an invalid stack frame in pstore before rebooting (that is if
    pstore is indeed configured: otherwise the user shall just notice a
    reboot with no further information dumped to the console).
    
    This patch replaces the PIO byte accessor with the word accessor
    already used in PIO mode.
    
    Fixes: 68252424a7c7 ("tty: serial: msm: Support big-endian CPUs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73cc49c261d8ce6734511f863e99c2e6af2b6959
Author: Lyude Paul <lyude@redhat.com>
Date:   Tue Apr 9 16:23:30 2019 -0400

    drm/nouveau/i2c: Disable i2c bus access after ->fini()
    
    commit 342406e4fbba9a174125fbfe6aeac3d64ef90f76 upstream.
    
    For a while, we've had the problem of i2c bus access not grabbing
    a runtime PM ref when it's being used in userspace by i2c-dev, resulting
    in nouveau spamming the kernel log with errors if anything attempts to
    access the i2c bus while the GPU is in runtime suspend. An example:
    
    [  130.078386] nouveau 0000:01:00.0: i2c: aux 000d: begin idle timeout ffffffff
    
    Since the GPU is in runtime suspend, the MMIO region that the i2c bus is
    on isn't accessible. On x86, the standard behavior for accessing an
    unavailable MMIO region is to just return ~0.
    
    Except, that turned out to be a lie. While computers with a clean
    concious will return ~0 in this scenario, some machines will actually
    completely hang a CPU on certian bad MMIO accesses. This was witnessed
    with someone's Lenovo ThinkPad P50, where sensors-detect attempting to
    access the i2c bus while the GPU was suspended would result in a CPU
    hang:
    
      CPU: 5 PID: 12438 Comm: sensors-detect Not tainted 5.0.0-0.rc4.git3.1.fc30.x86_64 #1
      Hardware name: LENOVO 20EQS64N17/20EQS64N17, BIOS N1EET74W (1.47 ) 11/21/2017
      RIP: 0010:ioread32+0x2b/0x30
      Code: 81 ff ff ff 03 00 77 20 48 81 ff 00 00 01 00 76 05 0f b7 d7 ed c3
      48 c7 c6 e1 0c 36 96 e8 2d ff ff ff b8 ff ff ff ff c3 8b 07 <c3> 0f 1f
      40 00 49 89 f0 48 81 fe ff ff 03 00 76 04 40 88 3e c3 48
      RSP: 0018:ffffaac3c5007b48 EFLAGS: 00000292 ORIG_RAX: ffffffffffffff13
      RAX: 0000000001111000 RBX: 0000000001111000 RCX: 0000043017a97186
      RDX: 0000000000000aaa RSI: 0000000000000005 RDI: ffffaac3c400e4e4
      RBP: ffff9e6443902c00 R08: ffffaac3c400e4e4 R09: ffffaac3c5007be7
      R10: 0000000000000004 R11: 0000000000000001 R12: ffff9e6445dd0000
      R13: 000000000000e4e4 R14: 00000000000003c4 R15: 0000000000000000
      FS:  00007f253155a740(0000) GS:ffff9e644f600000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00005630d1500358 CR3: 0000000417c44006 CR4: 00000000003606e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       g94_i2c_aux_xfer+0x326/0x850 [nouveau]
       nvkm_i2c_aux_i2c_xfer+0x9e/0x140 [nouveau]
       __i2c_transfer+0x14b/0x620
       i2c_smbus_xfer_emulated+0x159/0x680
       ? _raw_spin_unlock_irqrestore+0x1/0x60
       ? rt_mutex_slowlock.constprop.0+0x13d/0x1e0
       ? __lock_is_held+0x59/0xa0
       __i2c_smbus_xfer+0x138/0x5a0
       i2c_smbus_xfer+0x4f/0x80
       i2cdev_ioctl_smbus+0x162/0x2d0 [i2c_dev]
       i2cdev_ioctl+0x1db/0x2c0 [i2c_dev]
       do_vfs_ioctl+0x408/0x750
       ksys_ioctl+0x5e/0x90
       __x64_sys_ioctl+0x16/0x20
       do_syscall_64+0x60/0x1e0
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      RIP: 0033:0x7f25317f546b
      Code: 0f 1e fa 48 8b 05 1d da 0c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff
      ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa b8 10 00 00 00 0f 05 <48> 3d 01
      f0 ff ff 73 01 c3 48 8b 0d ed d9 0c 00 f7 d8 64 89 01 48
      RSP: 002b:00007ffc88caab68 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 00005630d0fe7260 RCX: 00007f25317f546b
      RDX: 00005630d1598e80 RSI: 0000000000000720 RDI: 0000000000000003
      RBP: 00005630d155b968 R08: 0000000000000001 R09: 00005630d15a1da0
      R10: 0000000000000070 R11: 0000000000000246 R12: 00005630d1598e80
      R13: 00005630d12f3d28 R14: 0000000000000720 R15: 00005630d12f3ce0
      watchdog: BUG: soft lockup - CPU#5 stuck for 23s! [sensors-detect:12438]
    
    Yikes! While I wanted to try to make it so that accessing an i2c bus on
    nouveau would wake up the GPU as needed, airlied pointed out that pretty
    much any usecase for userspace accessing an i2c bus on a GPU (mainly for
    the DDC brightness control that some displays have) is going to only be
    useful while there's at least one display enabled on the GPU anyway, and
    the GPU never sleeps while there's displays running.
    
    Since teaching the i2c bus to wake up the GPU on userspace accesses is a
    good deal more difficult than it might seem, mostly due to the fact that
    we have to use the i2c bus during runtime resume of the GPU, we instead
    opt for the easiest solution: don't let userspace access i2c busses on
    the GPU at all while it's in runtime suspend.
    
    Changes since v1:
    * Also disable i2c busses that run over DP AUX
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 527919d0cc5188c98b89f8357f7f7b36085c1a2c
Author: Thomas Huth <thuth@redhat.com>
Date:   Thu May 23 18:43:08 2019 +0200

    KVM: s390: Do not report unusabled IDs via KVM_CAP_MAX_VCPU_ID
    
    commit a86cb413f4bf273a9d341a3ab2c2ca44e12eb317 upstream.
    
    KVM_CAP_MAX_VCPU_ID is currently always reporting KVM_MAX_VCPU_ID on all
    architectures. However, on s390x, the amount of usable CPUs is determined
    during runtime - it is depending on the features of the machine the code
    is running on. Since we are using the vcpu_id as an index into the SCA
    structures that are defined by the hardware (see e.g. the sca_add_vcpu()
    function), it is not only the amount of CPUs that is limited by the hard-
    ware, but also the range of IDs that we can use.
    Thus KVM_CAP_MAX_VCPU_ID must be determined during runtime on s390x, too.
    So the handling of KVM_CAP_MAX_VCPU_ID has to be moved from the common
    code into the architecture specific code, and on s390x we have to return
    the same value here as for KVM_CAP_MAX_VCPUS.
    This problem has been discovered with the kvm_create_max_vcpus selftest.
    With this change applied, the selftest now passes on s390x, too.
    
    Reviewed-by: Andrew Jones <drjones@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Thomas Huth <thuth@redhat.com>
    Message-Id: <20190523164309.13345-9-thuth@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 163f75676ac2d4ddafd75e64fa22d7aae4291ad9
Author: Kailang Yang <kailang@realtek.com>
Date:   Thu May 23 14:43:04 2019 +0800

    ALSA: hda/realtek - Set default power save node to 0
    
    commit 317d9313925cd8388304286c0d3c8dda7f060a2d upstream.
    
    I measured power consumption between power_save_node=1 and power_save_node=0.
    It's almost the same.
    Codec will enter to runtime suspend and suspend.
    That pin also will enter to D3. Don't need to enter to D3 by single pin.
    So, Disable power_save_node as default. It will avoid more issues.
    Windows Driver also has not this option at runtime PM.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ba2bcc86045447ff9b79a294a726a75ac339052
Author: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
Date:   Sat May 11 08:12:17 2019 +0530

    powerpc/perf: Fix MMCRA corruption by bhrb_filter
    
    commit 3202e35ec1c8fc19cea24253ff83edf702a60a02 upstream.
    
    Consider a scenario where user creates two events:
    
      1st event:
        attr.sample_type |= PERF_SAMPLE_BRANCH_STACK;
        attr.branch_sample_type = PERF_SAMPLE_BRANCH_ANY;
        fd = perf_event_open(attr, 0, 1, -1, 0);
    
      This sets cpuhw->bhrb_filter to 0 and returns valid fd.
    
      2nd event:
        attr.sample_type |= PERF_SAMPLE_BRANCH_STACK;
        attr.branch_sample_type = PERF_SAMPLE_BRANCH_CALL;
        fd = perf_event_open(attr, 0, 1, -1, 0);
    
      It overrides cpuhw->bhrb_filter to -1 and returns with error.
    
    Now if power_pmu_enable() gets called by any path other than
    power_pmu_add(), ppmu->config_bhrb(-1) will set MMCRA to -1.
    
    Fixes: 3925f46bb590 ("powerpc/perf: Enable branch stack sampling framework")
    Cc: stable@vger.kernel.org # v3.10+
    Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Reviewed-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86a8f713e67a5130a94facc2bb623162456981ee
Author: Cédric Le Goater <clg@kaod.org>
Date:   Tue May 28 14:17:15 2019 +0200

    KVM: PPC: Book3S HV: XIVE: Do not clear IRQ data of passthrough interrupts
    
    commit ef9740204051d0e00f5402fe96cf3a43ddd2bbbf upstream.
    
    The passthrough interrupts are defined at the host level and their IRQ
    data should not be cleared unless specifically deconfigured (shutdown)
    by the host. They differ from the IPI interrupts which are allocated
    by the XIVE KVM device and reserved to the guest usage only.
    
    This fixes a host crash when destroying a VM in which a PCI adapter
    was passed-through. In this case, the interrupt is cleared and freed
    by the KVM device and then shutdown by vfio at the host level.
    
    [ 1007.360265] BUG: Kernel NULL pointer dereference at 0x00000d00
    [ 1007.360285] Faulting instruction address: 0xc00000000009da34
    [ 1007.360296] Oops: Kernel access of bad area, sig: 7 [#1]
    [ 1007.360303] LE PAGE_SIZE=64K MMU=Radix MMU=Hash SMP NR_CPUS=2048 NUMA PowerNV
    [ 1007.360314] Modules linked in: vhost_net vhost iptable_mangle ipt_MASQUERADE iptable_nat nf_nat xt_conntrack nf_conntrack nf_defrag_ipv4 ipt_REJECT nf_reject_ipv4 tun bridge stp llc kvm_hv kvm xt_tcpudp iptable_filter squashfs fuse binfmt_misc vmx_crypto ib_iser rdma_cm iw_cm ib_cm libiscsi scsi_transport_iscsi nfsd ip_tables x_tables autofs4 btrfs zstd_decompress zstd_compress lzo_compress raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq multipath mlx5_ib ib_uverbs ib_core crc32c_vpmsum mlx5_core
    [ 1007.360425] CPU: 9 PID: 15576 Comm: CPU 18/KVM Kdump: loaded Not tainted 5.1.0-gad7e7d0ef #4
    [ 1007.360454] NIP:  c00000000009da34 LR: c00000000009e50c CTR: c00000000009e5d0
    [ 1007.360482] REGS: c000007f24ccf330 TRAP: 0300   Not tainted  (5.1.0-gad7e7d0ef)
    [ 1007.360500] MSR:  900000000280b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE>  CR: 24002484  XER: 00000000
    [ 1007.360532] CFAR: c00000000009da10 DAR: 0000000000000d00 DSISR: 00080000 IRQMASK: 1
    [ 1007.360532] GPR00: c00000000009e62c c000007f24ccf5c0 c000000001510600 c000007fe7f947c0
    [ 1007.360532] GPR04: 0000000000000d00 0000000000000000 0000000000000000 c000005eff02d200
    [ 1007.360532] GPR08: 0000000000400000 0000000000000000 0000000000000000 fffffffffffffffd
    [ 1007.360532] GPR12: c00000000009e5d0 c000007fffff7b00 0000000000000031 000000012c345718
    [ 1007.360532] GPR16: 0000000000000000 0000000000000008 0000000000418004 0000000000040100
    [ 1007.360532] GPR20: 0000000000000000 0000000008430000 00000000003c0000 0000000000000027
    [ 1007.360532] GPR24: 00000000000000ff 0000000000000000 00000000000000ff c000007faa90d98c
    [ 1007.360532] GPR28: c000007faa90da40 00000000000fe040 ffffffffffffffff c000007fe7f947c0
    [ 1007.360689] NIP [c00000000009da34] xive_esb_read+0x34/0x120
    [ 1007.360706] LR [c00000000009e50c] xive_do_source_set_mask.part.0+0x2c/0x50
    [ 1007.360732] Call Trace:
    [ 1007.360738] [c000007f24ccf5c0] [c000000000a6383c] snooze_loop+0x15c/0x270 (unreliable)
    [ 1007.360775] [c000007f24ccf5f0] [c00000000009e62c] xive_irq_shutdown+0x5c/0xe0
    [ 1007.360795] [c000007f24ccf630] [c00000000019e4a0] irq_shutdown+0x60/0xe0
    [ 1007.360813] [c000007f24ccf660] [c000000000198c44] __free_irq+0x3a4/0x420
    [ 1007.360831] [c000007f24ccf700] [c000000000198dc8] free_irq+0x78/0xe0
    [ 1007.360849] [c000007f24ccf730] [c00000000096c5a8] vfio_msi_set_vector_signal+0xa8/0x350
    [ 1007.360878] [c000007f24ccf7f0] [c00000000096c938] vfio_msi_set_block+0xe8/0x1e0
    [ 1007.360899] [c000007f24ccf850] [c00000000096cae0] vfio_msi_disable+0xb0/0x110
    [ 1007.360912] [c000007f24ccf8a0] [c00000000096cd04] vfio_pci_set_msi_trigger+0x1c4/0x3d0
    [ 1007.360922] [c000007f24ccf910] [c00000000096d910] vfio_pci_set_irqs_ioctl+0xa0/0x170
    [ 1007.360941] [c000007f24ccf930] [c00000000096b400] vfio_pci_disable+0x80/0x5e0
    [ 1007.360963] [c000007f24ccfa10] [c00000000096b9bc] vfio_pci_release+0x5c/0x90
    [ 1007.360991] [c000007f24ccfa40] [c000000000963a9c] vfio_device_fops_release+0x3c/0x70
    [ 1007.361012] [c000007f24ccfa70] [c0000000003b5668] __fput+0xc8/0x2b0
    [ 1007.361040] [c000007f24ccfac0] [c0000000001409b0] task_work_run+0x140/0x1b0
    [ 1007.361059] [c000007f24ccfb20] [c000000000118f8c] do_exit+0x3ac/0xd00
    [ 1007.361076] [c000007f24ccfc00] [c0000000001199b0] do_group_exit+0x60/0x100
    [ 1007.361094] [c000007f24ccfc40] [c00000000012b514] get_signal+0x1a4/0x8f0
    [ 1007.361112] [c000007f24ccfd30] [c000000000021cc8] do_notify_resume+0x1a8/0x430
    [ 1007.361141] [c000007f24ccfe20] [c00000000000e444] ret_from_except_lite+0x70/0x74
    [ 1007.361159] Instruction dump:
    [ 1007.361175] 38422c00 e9230000 712a0004 41820010 548a2036 7d442378 78840020 71290020
    [ 1007.361194] 4082004c e9230010 7c892214 7c0004ac <e9240000> 0c090000 4c00012c 792a0022
    
    Cc: stable@vger.kernel.org # v4.12+
    Fixes: 5af50993850a ("KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller")
    Signed-off-by: Cédric Le Goater <clg@kaod.org>
    Signed-off-by: Greg Kurz <groug@kaod.org>
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2f017bb0e9a750b52ee0cb4c91d64408ae81179
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon May 20 09:55:42 2019 +0100

    Btrfs: incremental send, fix file corruption when no-holes feature is enabled
    
    commit 6b1f72e5b82a5c2a4da4d1ebb8cc01913ddbea21 upstream.
    
    When using the no-holes feature, if we have a file with prealloc extents
    with a start offset beyond the file's eof, doing an incremental send can
    cause corruption of the file due to incorrect hole detection. Such case
    requires that the prealloc extent(s) exist in both the parent and send
    snapshots, and that a hole is punched into the file that covers all its
    extents that do not cross the eof boundary.
    
    Example reproducer:
    
      $ mkfs.btrfs -f -O no-holes /dev/sdb
      $ mount /dev/sdb /mnt/sdb
    
      $ xfs_io -f -c "pwrite -S 0xab 0 500K" /mnt/sdb/foobar
      $ xfs_io -c "falloc -k 1200K 800K" /mnt/sdb/foobar
    
      $ btrfs subvolume snapshot -r /mnt/sdb /mnt/sdb/base
    
      $ btrfs send -f /tmp/base.snap /mnt/sdb/base
    
      $ xfs_io -c "fpunch 0 500K" /mnt/sdb/foobar
    
      $ btrfs subvolume snapshot -r /mnt/sdb /mnt/sdb/incr
    
      $ btrfs send -p /mnt/sdb/base -f /tmp/incr.snap /mnt/sdb/incr
    
      $ md5sum /mnt/sdb/incr/foobar
      816df6f64deba63b029ca19d880ee10a   /mnt/sdb/incr/foobar
    
      $ mkfs.btrfs -f /dev/sdc
      $ mount /dev/sdc /mnt/sdc
    
      $ btrfs receive -f /tmp/base.snap /mnt/sdc
      $ btrfs receive -f /tmp/incr.snap /mnt/sdc
    
      $ md5sum /mnt/sdc/incr/foobar
      cf2ef71f4a9e90c2f6013ba3b2257ed2   /mnt/sdc/incr/foobar
    
        --> Different checksum, because the prealloc extent beyond the
            file's eof confused the hole detection code and it assumed
            a hole starting at offset 0 and ending at the offset of the
            prealloc extent (1200Kb) instead of ending at the offset
            500Kb (the file's size).
    
    Fix this by ensuring we never cross the file's size when issuing the
    write operations for a hole.
    
    Fixes: 16e7549f045d33 ("Btrfs: incompatible format change to remove hole extents")
    CC: stable@vger.kernel.org # 3.14+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69e14cf845aedaac19a085a9041529a836ba077d
Author: Filipe Manana <fdmanana@suse.com>
Date:   Thu May 16 15:48:55 2019 +0100

    Btrfs: fix fsync not persisting changed attributes of a directory
    
    commit 60d9f50308e5df19bc18c2fefab0eba4a843900a upstream.
    
    While logging an inode we follow its ancestors and for each one we mark
    it as logged in the current transaction, even if we have not logged it.
    As a consequence if we change an attribute of an ancestor, such as the
    UID or GID for example, and then explicitly fsync it, we end up not
    logging the inode at all despite returning success to user space, which
    results in the attribute being lost if a power failure happens after
    the fsync.
    
    Sample reproducer:
    
      $ mkfs.btrfs -f /dev/sdb
      $ mount /dev/sdb /mnt
    
      $ mkdir /mnt/dir
      $ chown 6007:6007 /mnt/dir
    
      $ sync
    
      $ chown 9003:9003 /mnt/dir
      $ touch /mnt/dir/file
      $ xfs_io -c fsync /mnt/dir/file
    
      # fsync our directory after fsync'ing the new file, should persist the
      # new values for the uid and gid.
      $ xfs_io -c fsync /mnt/dir
    
      <power failure>
    
      $ mount /dev/sdb /mnt
      $ stat -c %u:%g /mnt/dir
      6007:6007
    
        --> should be 9003:9003, the uid and gid were not persisted, despite
            the explicit fsync on the directory prior to the power failure
    
    Fix this by not updating the logged_trans field of ancestor inodes when
    logging an inode, since we have not logged them. Let only future calls to
    btrfs_log_inode() to mark inodes as logged.
    
    This could be triggered by my recent fsync fuzz tester for fstests, for
    which an fstests patch exists titled "fstests: generic, fsync fuzz tester
    with fsstress".
    
    Fixes: 12fcfd22fe5b ("Btrfs: tree logging unlink/rename fixes")
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3562d6e223550a26d7f2455acf462d1d9e5a979f
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed May 15 16:03:17 2019 +0100

    Btrfs: fix race updating log root item during fsync
    
    commit 06989c799f04810f6876900d4760c0edda369cf7 upstream.
    
    When syncing the log, the final phase of a fsync operation, we need to
    either create a log root's item or update the existing item in the log
    tree of log roots, and that depends on the current value of the log
    root's log_transid - if it's 1 we need to create the log root item,
    otherwise it must exist already and we update it. Since there is no
    synchronization between updating the log_transid and checking it for
    deciding whether the log root's item needs to be created or updated, we
    end up with a tiny race window that results in attempts to update the
    item to fail because the item was not yet created:
    
                  CPU 1                                    CPU 2
    
      btrfs_sync_log()
    
        lock root->log_mutex
    
        set log root's log_transid to 1
    
        unlock root->log_mutex
    
                                                   btrfs_sync_log()
    
                                                     lock root->log_mutex
    
                                                     sets log root's
                                                     log_transid to 2
    
                                                     unlock root->log_mutex
    
        update_log_root()
    
          sees log root's log_transid
          with a value of 2
    
            calls btrfs_update_root(),
            which fails with -EUCLEAN
            and causes transaction abort
    
    Until recently the race lead to a BUG_ON at btrfs_update_root(), but after
    the recent commit 7ac1e464c4d47 ("btrfs: Don't panic when we can't find a
    root key") we just abort the current transaction.
    
    A sample trace of the BUG_ON() on a SLE12 kernel:
    
      ------------[ cut here ]------------
      kernel BUG at ../fs/btrfs/root-tree.c:157!
      Oops: Exception in kernel mode, sig: 5 [#1]
      SMP NR_CPUS=2048 NUMA pSeries
      (...)
      Supported: Yes, External
      CPU: 78 PID: 76303 Comm: rtas_errd Tainted: G                 X 4.4.156-94.57-default #1
      task: c00000ffa906d010 ti: c00000ff42b08000 task.ti: c00000ff42b08000
      NIP: d000000036ae5cdc LR: d000000036ae5cd8 CTR: 0000000000000000
      REGS: c00000ff42b0b860 TRAP: 0700   Tainted: G                 X  (4.4.156-94.57-default)
      MSR: 8000000002029033 <SF,VEC,EE,ME,IR,DR,RI,LE>  CR: 22444484  XER: 20000000
      CFAR: d000000036aba66c SOFTE: 1
      GPR00: d000000036ae5cd8 c00000ff42b0bae0 d000000036bda220 0000000000000054
      GPR04: 0000000000000001 0000000000000000 c00007ffff8d37c8 0000000000000000
      GPR08: c000000000e19c00 0000000000000000 0000000000000000 3736343438312079
      GPR12: 3930373337303434 c000000007a3a800 00000000007fffff 0000000000000023
      GPR16: c00000ffa9d26028 c00000ffa9d261f8 0000000000000010 c00000ffa9d2ab28
      GPR20: c00000ff42b0bc48 0000000000000001 c00000ff9f0d9888 0000000000000001
      GPR24: c00000ffa9d26000 c00000ffa9d261e8 c00000ffa9d2a800 c00000ff9f0d9888
      GPR28: c00000ffa9d26028 c00000ffa9d2aa98 0000000000000001 c00000ffa98f5b20
      NIP [d000000036ae5cdc] btrfs_update_root+0x25c/0x4e0 [btrfs]
      LR [d000000036ae5cd8] btrfs_update_root+0x258/0x4e0 [btrfs]
      Call Trace:
      [c00000ff42b0bae0] [d000000036ae5cd8] btrfs_update_root+0x258/0x4e0 [btrfs] (unreliable)
      [c00000ff42b0bba0] [d000000036b53610] btrfs_sync_log+0x2d0/0xc60 [btrfs]
      [c00000ff42b0bce0] [d000000036b1785c] btrfs_sync_file+0x44c/0x4e0 [btrfs]
      [c00000ff42b0bd80] [c00000000032e300] vfs_fsync_range+0x70/0x120
      [c00000ff42b0bdd0] [c00000000032e44c] do_fsync+0x5c/0xb0
      [c00000ff42b0be10] [c00000000032e8dc] SyS_fdatasync+0x2c/0x40
      [c00000ff42b0be30] [c000000000009488] system_call+0x3c/0x100
      Instruction dump:
      7f43d378 4bffebb9 60000000 88d90008 3d220000 e8b90000 3b390009 e87a01f0
      e8898e08 e8f90000 4bfd48e5 60000000 <0fe00000> e95b0060 39200004 394a0ea0
      ---[ end trace 8f2dc8f919cabab8 ]---
    
    So fix this by doing the check of log_transid and updating or creating the
    log root's item while holding the root's log_mutex.
    
    Fixes: 7237f1833601d ("Btrfs: fix tree logs parallel sync")
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab4dfb10217f630eb2165a9dfa7b459fe9fd24c7
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed May 15 16:02:47 2019 +0100

    Btrfs: fix wrong ctime and mtime of a directory after log replay
    
    commit 5338e43abbab13791144d37fd8846847062351c6 upstream.
    
    When replaying a log that contains a new file or directory name that needs
    to be added to its parent directory, we end up updating the mtime and the
    ctime of the parent directory to the current time after we have set their
    values to the correct ones (set at fsync time), efectivelly losing them.
    
    Sample reproducer:
    
      $ mkfs.btrfs -f /dev/sdb
      $ mount /dev/sdb /mnt
    
      $ mkdir /mnt/dir
      $ touch /mnt/dir/file
    
      # fsync of the directory is optional, not needed
      $ xfs_io -c fsync /mnt/dir
      $ xfs_io -c fsync /mnt/dir/file
    
      $ stat -c %Y /mnt/dir
      1557856079
    
      <power failure>
    
      $ sleep 3
      $ mount /dev/sdb /mnt
      $ stat -c %Y /mnt/dir
      1557856082
    
        --> should have been 1557856079, the mtime is updated to the current
            time when replaying the log
    
    Fix this by not updating the mtime and ctime to the current time at
    btrfs_add_link() when we are replaying a log tree.
    
    This could be triggered by my recent fsync fuzz tester for fstests, for
    which an fstests patch exists titled "fstests: generic, fsync fuzz tester
    with fsstress".
    
    Fixes: e02119d5a7b43 ("Btrfs: Add a write ahead tree log to optimize synchronous operations")
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e31752f79e11e57101b66e531dcd7eeff7b0c990
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu May 23 15:23:46 2019 +0200

    scsi: zfcp: fix to prevent port_remove with pure auto scan LUNs (only sdevs)
    
    commit ef4021fe5fd77ced0323cede27979d80a56211ca upstream.
    
    When the user tries to remove a zfcp port via sysfs, we only rejected it if
    there are zfcp unit children under the port. With purely automatically
    scanned LUNs there are no zfcp units but only SCSI devices. In such cases,
    the port_remove erroneously continued. We close the port and this
    implicitly closes all LUNs under the port. The SCSI devices survive with
    their private zfcp_scsi_dev still holding a reference to the "removed"
    zfcp_port (still allocated but invisible in sysfs) [zfcp_get_port_by_wwpn
    in zfcp_scsi_slave_alloc]. This is not a problem as long as the fc_rport
    stays blocked. Once (auto) port scan brings back the removed port, we
    unblock its fc_rport again by design.  However, there is no mechanism that
    would recover (open) the LUNs under the port (no "ersfs_3" without
    zfcp_unit [zfcp_erp_strategy_followup_success]).  Any pending or new I/O to
    such LUN leads to repeated:
    
      Done: NEEDS_RETRY Result: hostbyte=DID_IMM_RETRY driverbyte=DRIVER_OK
    
    See also v4.10 commit 6f2ce1c6af37 ("scsi: zfcp: fix rport unblock race
    with LUN recovery"). Even a manual LUN recovery
    (echo 0 > /sys/bus/scsi/devices/H:C:T:L/zfcp_failed)
    does not help, as the LUN links to the old "removed" port which remains
    to lack ZFCP_STATUS_COMMON_RUNNING [zfcp_erp_required_act].
    The only workaround is to first ensure that the fc_rport is blocked
    (e.g. port_remove again in case it was re-discovered by (auto) port scan),
    then delete the SCSI devices, and finally re-discover by (auto) port scan.
    The port scan includes an fc_rport unblock, which in turn triggers
    a new scan on the scsi target to freshly get new pure auto scan LUNs.
    
    Fix this by rejecting port_remove also if there are SCSI devices
    (even without any zfcp_unit) under this port. Re-use mechanics from v3.7
    commit d99b601b6338 ("[SCSI] zfcp: restore refcount check on port_remove").
    However, we have to give up zfcp_sysfs_port_units_mutex earlier in unit_add
    to prevent a deadlock with scsi_host scan taking shost->scan_mutex first
    and then zfcp_sysfs_port_units_mutex now in our zfcp_scsi_slave_alloc().
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Fixes: b62a8d9b45b9 ("[SCSI] zfcp: Use SCSI device data zfcp scsi dev instead of zfcp unit")
    Fixes: f8210e34887e ("[SCSI] zfcp: Allow midlayer to scan for LUNs when running in NPIV mode")
    Cc: <stable@vger.kernel.org> #2.6.37+
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9efbdd2d6bb72f61d3a1d2632211f3557efc82e
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu May 23 15:23:45 2019 +0200

    scsi: zfcp: fix missing zfcp_port reference put on -EBUSY from port_remove
    
    commit d27e5e07f9c49bf2a6a4ef254ce531c1b4fb5a38 upstream.
    
    With this early return due to zfcp_unit child(ren), we don't use the
    zfcp_port reference from the earlier zfcp_get_port_by_wwpn() anymore and
    need to put it.
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Fixes: d99b601b6338 ("[SCSI] zfcp: restore refcount check on port_remove")
    Cc: <stable@vger.kernel.org> #3.7+
    Reviewed-by: Jens Remus <jremus@linux.ibm.com>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b22f4cea240c9b69fd52cfe961dfaf91fbe5fea0
Author: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Date:   Fri May 24 10:59:43 2019 -0400

    media: smsusb: better handle optional alignment
    
    commit a47686636d84eaec5c9c6e84bd5f96bed34d526d upstream.
    
    Most Siano devices require an alignment for the response.
    
    Changeset f3be52b0056a ("media: usb: siano: Fix general protection fault in smsusb")
    changed the logic with gets such aligment, but it now produces a
    sparce warning:
    
    drivers/media/usb/siano/smsusb.c: In function 'smsusb_init_device':
    drivers/media/usb/siano/smsusb.c:447:37: warning: 'in_maxp' may be used uninitialized in this function [-Wmaybe-uninitialized]
      447 |   dev->response_alignment = in_maxp - sizeof(struct sms_msg_hdr);
          |                             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    The sparse message itself is bogus, but a broken (or fake) USB
    eeprom could produce a negative value for response_alignment.
    
    So, change the code in order to check if the result is not
    negative.
    
    Fixes: 31e0456de5be ("media: usb: siano: Fix general protection fault in smsusb")
    CC: <stable@vger.kernel.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 629b11aac24da3b0017e86d76c51789b52c05af3
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue May 21 11:38:07 2019 -0400

    media: usb: siano: Fix false-positive "uninitialized variable" warning
    
    commit 45457c01171fd1488a7000d1751c06ed8560ee38 upstream.
    
    GCC complains about an apparently uninitialized variable recently
    added to smsusb_init_device().  It's a false positive, but to silence
    the warning this patch adds a trivial initialization.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: kbuild test robot <lkp@intel.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a7adcda3de26a44fc0fa3f68199358b1527daf4
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue May 7 12:39:47 2019 -0400

    media: usb: siano: Fix general protection fault in smsusb
    
    commit 31e0456de5be379b10fea0fa94a681057114a96e upstream.
    
    The syzkaller USB fuzzer found a general-protection-fault bug in the
    smsusb part of the Siano DVB driver.  The fault occurs during probe
    because the driver assumes without checking that the device has both
    IN and OUT endpoints and the IN endpoint is ep1.
    
    By slightly rearranging the driver's initialization code, we can make
    the appropriate checks early on and thus avoid the problem.  If the
    expected endpoints aren't present, the new code safely returns -ENODEV
    from the probe routine.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: syzbot+53f029db71c19a47325a@syzkaller.appspotmail.com
    CC: <stable@vger.kernel.org>
    Reviewed-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a86fef3f7df963b45d0eb5dfb225e3a69f639fad
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu May 9 11:30:59 2019 +0200

    USB: rio500: fix memory leak in close after disconnect
    
    commit e0feb73428b69322dd5caae90b0207de369b5575 upstream.
    
    If a disconnected device is closed, rio_close() must free
    the buffers.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f18227d08e6b50717e1560a86fbebda0ca911507
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu May 9 11:30:58 2019 +0200

    USB: rio500: refuse more than one device at a time
    
    commit 3864d33943b4a76c6e64616280e98d2410b1190f upstream.
    
    This driver is using a global variable. It cannot handle more than
    one device at a time. The issue has been existing since the dawn
    of the driver.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Reported-by: syzbot+35f04d136fc975a70da4@syzkaller.appspotmail.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fd6e7c10c779aa31d3999a10e3a126df26eb7b9
Author: Maximilian Luz <luzmaximilian@gmail.com>
Date:   Thu May 16 17:08:31 2019 +0200

    USB: Add LPM quirk for Surface Dock GigE adapter
    
    commit ea261113385ac0a71c2838185f39e8452d54b152 upstream.
    
    Without USB_QUIRK_NO_LPM ethernet will not work and rtl8152 will
    complain with
    
        r8152 <device...>: Stop submitting intr, status -71
    
    Adding the quirk resolves this. As the dock is externally powered, this
    should not have any drawbacks.
    
    Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47ffaae93ea154ae149315389a30780fa3189caf
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu May 9 14:41:50 2019 +0200

    USB: sisusbvga: fix oops in error path of sisusb_probe
    
    commit 9a5729f68d3a82786aea110b1bfe610be318f80a upstream.
    
    The pointer used to log a failure of usb_register_dev() must
    be set before the error is logged.
    
    v2: fix that minor is not available before registration
    
    Signed-off-by: oliver Neukum <oneukum@suse.com>
    Reported-by: syzbot+a0cbdbd6d169020c8959@syzkaller.appspotmail.com
    Fixes: 7b5cd5fefbe02 ("USB: SisUSB2VGA: Convert printk to dev_* macros")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b005cb1afa801c510fbe02628e8c7d53a9b45f61
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon May 13 13:14:29 2019 -0400

    USB: Fix slab-out-of-bounds write in usb_get_bos_descriptor
    
    commit a03ff54460817c76105f81f3aa8ef655759ccc9a upstream.
    
    The syzkaller USB fuzzer found a slab-out-of-bounds write bug in the
    USB core, caused by a failure to check the actual size of a BOS
    descriptor.  This patch adds a check to make sure the descriptor is at
    least as large as it is supposed to be, so that the code doesn't
    inadvertently access memory beyond the end of the allocated region
    when assigning to dev->bos->desc->bNumDeviceCaps later on.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: syzbot+71f1e64501a309fcc012@syzkaller.appspotmail.com
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea887c4fae9ae696120b356816298562452a52a3
Author: Shuah Khan <skhan@linuxfoundation.org>
Date:   Wed May 29 13:46:15 2019 -0600

    usbip: usbip_host: fix stub_dev lock context imbalance regression
    
    commit 3ea3091f1bd8586125848c62be295910e9802af0 upstream.
    
    Fix the following sparse context imbalance regression introduced in
    a patch that fixed sleeping function called from invalid context bug.
    
    kbuild test robot reported on:
    
    tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git  usb-linus
    
    Regressions in current branch:
    
    drivers/usb/usbip/stub_dev.c:399:9: sparse: sparse: context imbalance in 'stub_probe' - different lock contexts for basic block
    drivers/usb/usbip/stub_dev.c:418:13: sparse: sparse: context imbalance in 'stub_disconnect' - different lock contexts for basic block
    drivers/usb/usbip/stub_dev.c:464:1-10: second lock on line 476
    
    Error ids grouped by kconfigs:
    
    recent_errors
    ├── i386-allmodconfig
    │   └── drivers-usb-usbip-stub_dev.c:second-lock-on-line
    ├── x86_64-allmodconfig
    │   ├── drivers-usb-usbip-stub_dev.c:sparse:sparse:context-imbalance-in-stub_disconnect-different-lock-contexts-for-basic-block
    │   └── drivers-usb-usbip-stub_dev.c:sparse:sparse:context-imbalance-in-stub_probe-different-lock-contexts-for-basic-block
    └── x86_64-allyesconfig
        └── drivers-usb-usbip-stub_dev.c:second-lock-on-line
    
    This is a real problem in an error leg where spin_lock() is called on an
    already held lock.
    
    Fix the imbalance in stub_probe() and stub_disconnect().
    
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Fixes: 0c9e8b3cad65 ("usbip: usbip_host: fix BUG: sleeping function called from invalid context")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db8698b47c9ee27cae0c10a5cf9fcf74e37fd02a
Author: Shuah Khan <skhan@linuxfoundation.org>
Date:   Thu May 2 13:47:02 2019 -0600

    usbip: usbip_host: fix BUG: sleeping function called from invalid context
    
    commit 0c9e8b3cad654bfc499c10b652fbf8f0b890af8f upstream.
    
    stub_probe() and stub_disconnect() call functions which could call
    sleeping function in invalid context whil holding busid_lock.
    
    Fix the problem by refining the lock holds to short critical sections
    to change the busid_priv fields. This fix restructures the code to
    limit the lock holds in stub_probe() and stub_disconnect().
    
    stub_probe():
    
    [15217.927028] BUG: sleeping function called from invalid context at mm/slab.h:418
    [15217.927038] in_atomic(): 1, irqs_disabled(): 0, pid: 29087, name: usbip
    [15217.927044] 5 locks held by usbip/29087:
    [15217.927047]  #0: 0000000091647f28 (sb_writers#6){....}, at: vfs_write+0x191/0x1c0
    [15217.927062]  #1: 000000008f9ba75b (&of->mutex){....}, at: kernfs_fop_write+0xf7/0x1b0
    [15217.927072]  #2: 00000000872e5b4b (&dev->mutex){....}, at: __device_driver_lock+0x3b/0x50
    [15217.927082]  #3: 00000000e74ececc (&dev->mutex){....}, at: __device_driver_lock+0x46/0x50
    [15217.927090]  #4: 00000000b20abbe0 (&(&busid_table[i].busid_lock)->rlock){....}, at: get_busid_priv+0x48/0x60 [usbip_host]
    [15217.927103] CPU: 3 PID: 29087 Comm: usbip Tainted: G        W         5.1.0-rc6+ #40
    [15217.927106] Hardware name: Dell Inc. OptiPlex 790/0HY9JP, BIOS A18 09/24/2013
    [15217.927109] Call Trace:
    [15217.927118]  dump_stack+0x63/0x85
    [15217.927127]  ___might_sleep+0xff/0x120
    [15217.927133]  __might_sleep+0x4a/0x80
    [15217.927143]  kmem_cache_alloc_trace+0x1aa/0x210
    [15217.927156]  stub_probe+0xe8/0x440 [usbip_host]
    [15217.927171]  usb_probe_device+0x34/0x70
    
    stub_disconnect():
    
    [15279.182478] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:908
    [15279.182487] in_atomic(): 1, irqs_disabled(): 0, pid: 29114, name: usbip
    [15279.182492] 5 locks held by usbip/29114:
    [15279.182494]  #0: 0000000091647f28 (sb_writers#6){....}, at: vfs_write+0x191/0x1c0
    [15279.182506]  #1: 00000000702cf0f3 (&of->mutex){....}, at: kernfs_fop_write+0xf7/0x1b0
    [15279.182514]  #2: 00000000872e5b4b (&dev->mutex){....}, at: __device_driver_lock+0x3b/0x50
    [15279.182522]  #3: 00000000e74ececc (&dev->mutex){....}, at: __device_driver_lock+0x46/0x50
    [15279.182529]  #4: 00000000b20abbe0 (&(&busid_table[i].busid_lock)->rlock){....}, at: get_busid_priv+0x48/0x60 [usbip_host]
    [15279.182541] CPU: 0 PID: 29114 Comm: usbip Tainted: G        W         5.1.0-rc6+ #40
    [15279.182543] Hardware name: Dell Inc. OptiPlex 790/0HY9JP, BIOS A18 09/24/2013
    [15279.182546] Call Trace:
    [15279.182554]  dump_stack+0x63/0x85
    [15279.182561]  ___might_sleep+0xff/0x120
    [15279.182566]  __might_sleep+0x4a/0x80
    [15279.182574]  __mutex_lock+0x55/0x950
    [15279.182582]  ? get_busid_priv+0x48/0x60 [usbip_host]
    [15279.182587]  ? reacquire_held_locks+0xec/0x1a0
    [15279.182591]  ? get_busid_priv+0x48/0x60 [usbip_host]
    [15279.182597]  ? find_held_lock+0x94/0xa0
    [15279.182609]  mutex_lock_nested+0x1b/0x20
    [15279.182614]  ? mutex_lock_nested+0x1b/0x20
    [15279.182618]  kernfs_remove_by_name_ns+0x2a/0x90
    [15279.182625]  sysfs_remove_file_ns+0x15/0x20
    [15279.182629]  device_remove_file+0x19/0x20
    [15279.182634]  stub_disconnect+0x6d/0x180 [usbip_host]
    [15279.182643]  usb_unbind_device+0x27/0x60
    
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc8409d061757cc8ffe5b06cfeae81f21bcc1ae5
Author: Carsten Schmid <carsten_schmid@mentor.com>
Date:   Wed May 22 14:33:59 2019 +0300

    usb: xhci: avoid null pointer deref when bos field is NULL
    
    commit 7aa1bb2ffd84d6b9b5f546b079bb15cd0ab6e76e upstream.
    
    With defective USB sticks we see the following error happen:
    usb 1-3: new high-speed USB device number 6 using xhci_hcd
    usb 1-3: device descriptor read/64, error -71
    usb 1-3: device descriptor read/64, error -71
    usb 1-3: new high-speed USB device number 7 using xhci_hcd
    usb 1-3: device descriptor read/64, error -71
    usb 1-3: unable to get BOS descriptor set
    usb 1-3: New USB device found, idVendor=0781, idProduct=5581
    usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    ...
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
    
    This comes from the following place:
    [ 1660.215380] IP: xhci_set_usb2_hardware_lpm+0xdf/0x3d0 [xhci_hcd]
    [ 1660.222092] PGD 0 P4D 0
    [ 1660.224918] Oops: 0000 [#1] PREEMPT SMP NOPTI
    [ 1660.425520] CPU: 1 PID: 38 Comm: kworker/1:1 Tainted: P     U  W  O    4.14.67-apl #1
    [ 1660.434277] Workqueue: usb_hub_wq hub_event [usbcore]
    [ 1660.439918] task: ffffa295b6ae4c80 task.stack: ffffad4580150000
    [ 1660.446532] RIP: 0010:xhci_set_usb2_hardware_lpm+0xdf/0x3d0 [xhci_hcd]
    [ 1660.453821] RSP: 0018:ffffad4580153c70 EFLAGS: 00010046
    [ 1660.459655] RAX: 0000000000000000 RBX: ffffa295b4d7c000 RCX: 0000000000000002
    [ 1660.467625] RDX: 0000000000000002 RSI: ffffffff984a55b2 RDI: ffffffff984a55b2
    [ 1660.475586] RBP: ffffad4580153cc8 R08: 0000000000d6520a R09: 0000000000000001
    [ 1660.483556] R10: ffffad4580a004a0 R11: 0000000000000286 R12: ffffa295b4d7c000
    [ 1660.491525] R13: 0000000000010648 R14: ffffa295a84e1800 R15: 0000000000000000
    [ 1660.499494] FS:  0000000000000000(0000) GS:ffffa295bfc80000(0000) knlGS:0000000000000000
    [ 1660.508530] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1660.514947] CR2: 0000000000000008 CR3: 000000025a114000 CR4: 00000000003406a0
    [ 1660.522917] Call Trace:
    [ 1660.525657]  usb_set_usb2_hardware_lpm+0x3d/0x70 [usbcore]
    [ 1660.531792]  usb_disable_device+0x242/0x260 [usbcore]
    [ 1660.537439]  usb_disconnect+0xc1/0x2b0 [usbcore]
    [ 1660.542600]  hub_event+0x596/0x18f0 [usbcore]
    [ 1660.547467]  ? trace_preempt_on+0xdf/0x100
    [ 1660.552040]  ? process_one_work+0x1c1/0x410
    [ 1660.556708]  process_one_work+0x1d2/0x410
    [ 1660.561184]  ? preempt_count_add.part.3+0x21/0x60
    [ 1660.566436]  worker_thread+0x2d/0x3f0
    [ 1660.570522]  kthread+0x122/0x140
    [ 1660.574123]  ? process_one_work+0x410/0x410
    [ 1660.578792]  ? kthread_create_on_node+0x60/0x60
    [ 1660.583849]  ret_from_fork+0x3a/0x50
    [ 1660.587839] Code: 00 49 89 c3 49 8b 84 24 50 16 00 00 8d 4a ff 48 8d 04 c8 48 89 ca 4c 8b 10 45 8b 6a 04 48 8b 00 48 89 45 c0 49 8b 86 80 03 00 00 <48> 8b 40 08 8b 40 03 0f 1f 44 00 00 45 85 ff 0f 84 81 01 00 00
    [ 1660.608980] RIP: xhci_set_usb2_hardware_lpm+0xdf/0x3d0 [xhci_hcd] RSP: ffffad4580153c70
    [ 1660.617921] CR2: 0000000000000008
    
    Tracking this down shows that udev->bos is NULL in the following code:
    (xhci.c, in xhci_set_usb2_hardware_lpm)
            field = le32_to_cpu(udev->bos->ext_cap->bmAttributes);  <<<<<<< here
    
            xhci_dbg(xhci, "%s port %d USB2 hardware LPM\n",
                            enable ? "enable" : "disable", port_num + 1);
    
            if (enable) {
                    /* Host supports BESL timeout instead of HIRD */
                    if (udev->usb2_hw_lpm_besl_capable) {
                            /* if device doesn't have a preferred BESL value use a
                             * default one which works with mixed HIRD and BESL
                             * systems. See XHCI_DEFAULT_BESL definition in xhci.h
                             */
                            if ((field & USB_BESL_SUPPORT) &&
                                (field & USB_BESL_BASELINE_VALID))
                                    hird = USB_GET_BESL_BASELINE(field);
                            else
                                    hird = udev->l1_params.besl;
    
    The failing case is when disabling LPM. So it is sufficient to avoid
    access to udev->bos by moving the instruction into the "enable" clause.
    
    Cc: Stable <stable@vger.kernel.org>
    Signed-off-by: Carsten Schmid <carsten_schmid@mentor.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e0847376ec4436bbfdbc3b232f0a9e6c3acdce4d
Author: Andrey Smirnov <andrew.smirnov@gmail.com>
Date:   Wed May 22 14:34:01 2019 +0300

    xhci: Convert xhci_handshake() to use readl_poll_timeout_atomic()
    
    commit f7fac17ca925faa03fc5eb854c081a24075f8bad upstream.
    
    Xhci_handshake() implements the algorithm already captured by
    readl_poll_timeout_atomic(). Convert the former to use the latter to
    avoid repetition.
    
    Turned out this patch also fixes a bug on the AMD Stoneyridge platform
    where usleep(1) sometimes takes over 10ms.
    This means a 5 second timeout can easily take over 15 seconds which will
    trigger the watchdog and reboot the system.
    
    [Add info about patch fixing a bug to commit message -Mathias]
    Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
    Tested-by: Raul E Rangel <rrangel@chromium.org>
    Reviewed-by: Raul E Rangel <rrangel@chromium.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b2eabf811d2cd6984c7e2a209106a257eaabc0c
Author: Fabio Estevam <festevam@gmail.com>
Date:   Wed May 22 10:35:29 2019 -0300

    xhci: Use %zu for printing size_t type
    
    commit c1a145a3ed9a40f3b6145feb97789e8eb49c5566 upstream.
    
    Commit 597c56e372da ("xhci: update bounce buffer with correct sg num")
    caused the following build warnings:
    
    drivers/usb/host/xhci-ring.c:676:19: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'size_t {aka unsigned int}' [-Wformat=]
    
    Use %zu for printing size_t type in order to fix the warnings.
    
    Fixes: 597c56e372da ("xhci: update bounce buffer with correct sg num")
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: Fabio Estevam <festevam@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 418d0e4657949e62cff69b1b33730f6365591e73
Author: Henry Lin <henryl@nvidia.com>
Date:   Wed May 22 14:33:57 2019 +0300

    xhci: update bounce buffer with correct sg num
    
    commit 597c56e372dab2c7f79b8d700aad3a5deebf9d1b upstream.
    
    This change fixes a data corruption issue occurred on USB hard disk for
    the case that bounce buffer is used during transferring data.
    
    While updating data between sg list and bounce buffer, current
    implementation passes mapped sg number (urb->num_mapped_sgs) to
    sg_pcopy_from_buffer() and sg_pcopy_to_buffer(). This causes data
    not get copied if target buffer is located in the elements after
    mapped sg elements. This change passes sg number for full list to
    fix issue.
    
    Besides, for copying data from bounce buffer, calling dma_unmap_single()
    on the bounce buffer before copying data to sg list can avoid cache issue.
    
    Fixes: f9c589e142d0 ("xhci: TD-fragment, align the unsplittable case with a bounce buffer")
    Cc: <stable@vger.kernel.org> # v4.8+
    Signed-off-by: Henry Lin <henryl@nvidia.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03f6cbbde2a760bdd73477c4463ad66e271e8258
Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Date:   Tue May 14 15:43:27 2019 -0700

    include/linux/bitops.h: sanitize rotate primitives
    
    commit ef4d6f6b275c498f8e5626c99dbeefdc5027f843 upstream.
    
    The ror32 implementation (word >> shift) | (word << (32 - shift) has
    undefined behaviour if shift is outside the [1, 31] range.  Similarly
    for the 64 bit variants.  Most callers pass a compile-time constant
    (naturally in that range), but there's an UBSAN report that these may
    actually be called with a shift count of 0.
    
    Instead of special-casing that, we can make them DTRT for all values of
    shift while also avoiding UB.  For some reason, this was already partly
    done for rol32 (which was well-defined for [0, 31]).  gcc 8 recognizes
    these patterns as rotates, so for example
    
      __u32 rol32(__u32 word, unsigned int shift)
      {
            return (word << (shift & 31)) | (word >> ((-shift) & 31));
      }
    
    compiles to
    
    0000000000000020 <rol32>:
      20:   89 f8                   mov    %edi,%eax
      22:   89 f1                   mov    %esi,%ecx
      24:   d3 c0                   rol    %cl,%eax
      26:   c3                      retq
    
    Older compilers unfortunately do not do as well, but this only affects
    the small minority of users that don't pass constants.
    
    Due to integer promotions, ro[lr]8 were already well-defined for shifts
    in [0, 8], and ro[lr]16 were mostly well-defined for shifts in [0, 16]
    (only mostly - u16 gets promoted to _signed_ int, so if bit 15 is set,
    word << 16 is undefined).  For consistency, update those as well.
    
    Link: http://lkml.kernel.org/r/20190410211906.2190-1-linux@rasmusvillemoes.dk
    Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Reported-by: Ido Schimmel <idosch@mellanox.com>
    Tested-by: Ido Schimmel <idosch@mellanox.com>
    Reviewed-by: Will Deacon <will.deacon@arm.com>
    Cc: Vadim Pasternak <vadimp@mellanox.com>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    Cc: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34fc0e89a2139ef7ccf7be8569ce617e8abe12fa
Author: James Clarke <jrtc27@jrtc27.com>
Date:   Wed May 29 22:31:31 2019 +0100

    sparc64: Fix regression in non-hypervisor TLB flush xcall
    
    commit d3c976c14ad8af421134c428b0a89ff8dd3bd8f8 upstream.
    
    Previously, %g2 would end up with the value PAGE_SIZE, but after the
    commit mentioned below it ends up with the value 1 due to being reused
    for a different purpose. We need it to be PAGE_SIZE as we use it to step
    through pages in our demap loop, otherwise we set different flags in the
    low 12 bits of the address written to, thereby doing things other than a
    nucleus page flush.
    
    Fixes: a74ad5e660a9 ("sparc64: Handle extremely large kernel TLB range flushes more gracefully.")
    Reported-by: Meelis Roos <mroos@linux.ee>
    Tested-by: Meelis Roos <mroos@linux.ee>
    Signed-off-by: James Clarke <jrtc27@jrtc27.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d93fb604c0798538b86e10e2509ff5abb144b203
Author: Junwei Hu <hujunwei4@huawei.com>
Date:   Mon May 20 14:43:59 2019 +0800

    tipc: fix modprobe tipc failed after switch order of device registration
    
    commit 526f5b851a96566803ee4bee60d0a34df56c77f8 upstream.
    
    Error message printed:
    modprobe: ERROR: could not insert 'tipc': Address family not
    supported by protocol.
    when modprobe tipc after the following patch: switch order of
    device registration, commit 7e27e8d6130c
    ("tipc: switch order of device registration to fix a crash")
    
    Because sock_create_kern(net, AF_TIPC, ...) called by
    tipc_topsrv_create_listener() in the initialization process
    of tipc_init_net(), so tipc_socket_init() must be execute before that.
    Meanwhile, tipc_net_id need to be initialized when sock_create()
    called, and tipc_socket_init() is no need to be called for each namespace.
    
    I add a variable tipc_topsrv_net_ops, and split the
    register_pernet_subsys() of tipc into two parts, and split
    tipc_socket_init() with initialization of pernet params.
    
    By the way, I fixed resources rollback error when tipc_bcast_init()
    failed in tipc_init_net().
    
    Fixes: 7e27e8d6130c ("tipc: switch order of device registration to fix a crash")
    Signed-off-by: Junwei Hu <hujunwei4@huawei.com>
    Reported-by: Wang Wang <wangwang2@huawei.com>
    Reported-by: syzbot+1e8114b61079bfe9cbc5@syzkaller.appspotmail.com
    Reviewed-by: Kang Zhou <zhoukang7@huawei.com>
    Reviewed-by: Suanming Mou <mousuanming@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f61e651e39b3e5d06405514353862f060d452905
Author: David S. Miller <davem@davemloft.net>
Date:   Fri May 17 12:15:05 2019 -0700

    Revert "tipc: fix modprobe tipc failed after switch order of device registration"
    
    commit 5593530e56943182ebb6d81eca8a3be6db6dbba4 upstream.
    
    This reverts commit 532b0f7ece4cb2ffd24dc723ddf55242d1188e5e.
    
    More revisions coming up.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a81ed535517f93869d74f565ee18940f47e45104
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Wed Feb 13 18:21:31 2019 -0500

    xen/pciback: Don't disable PCI_COMMAND on PCI device reset.
    
    commit 7681f31ec9cdacab4fd10570be924f2cef6669ba upstream.
    
    There is no need for this at all. Worst it means that if
    the guest tries to write to BARs it could lead (on certain
    platforms) to PCI SERR errors.
    
    Please note that with af6fc858a35b90e89ea7a7ee58e66628c55c776b
    "xen-pciback: limit guest control of command register"
    a guest is still allowed to enable those control bits (safely), but
    is not allowed to disable them and that therefore a well behaved
    frontend which enables things before using them will still
    function correctly.
    
    This is done via an write to the configuration register 0x4 which
    triggers on the backend side:
    command_write
      \- pci_enable_device
         \- pci_enable_device_flags
            \- do_pci_enable_device
               \- pcibios_enable_device
                  \-pci_enable_resourcess
                    [which enables the PCI_COMMAND_MEMORY|PCI_COMMAND_IO]
    
    However guests (and drivers) which don't do this could cause
    problems, including the security issues which XSA-120 sought
    to address.
    
    Reported-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Prarit Bhargava <prarit@redhat.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9d1de1879ab07167b88324173b257c990c118bf
Author: Daniel Axtens <dja@axtens.net>
Date:   Fri May 17 01:40:02 2019 +1000

    crypto: vmx - ghash: do nosimd fallback manually
    
    commit 357d065a44cdd77ed5ff35155a989f2a763e96ef upstream.
    
    VMX ghash was using a fallback that did not support interleaving simd
    and nosimd operations, leading to failures in the extended test suite.
    
    If I understood correctly, Eric's suggestion was to use the same
    data format that the generic code uses, allowing us to call into it
    with the same contexts. I wasn't able to get that to work - I think
    there's a very different key structure and data layout being used.
    
    So instead steal the arm64 approach and perform the fallback
    operations directly if required.
    
    Fixes: cc333cd68dfa ("crypto: vmx - Adding GHASH routines for VMX module")
    Cc: stable@vger.kernel.org # v4.1+
    Reported-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Tested-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 691e5202d3c66d00633c17da5d1a42371c4d126a
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Tue May 28 10:34:42 2019 +0100

    net: phy: marvell10g: report if the PHY fails to boot firmware
    
    [ Upstream commit 3d3ced2ec5d71b99d72ae6910fbdf890bc2eccf0 ]
    
    Some boards do not have the PHY firmware programmed in the 3310's flash,
    which leads to the PHY not working as expected.  Warn the user when the
    PHY fails to boot the firmware and refuse to initialise.
    
    Fixes: 20b2af32ff3f ("net: phy: add Marvell Alaska X 88X3310 10Gigabit PHY support")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Tested-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8d0aa7401a2d477bd1723c0f04879eece779675
Author: Antoine Tenart <antoine.tenart@bootlin.com>
Date:   Wed May 29 15:59:48 2019 +0200

    net: mvpp2: fix bad MVPP2_TXQ_SCHED_TOKEN_CNTR_REG queue value
    
    [ Upstream commit 21808437214637952b61beaba6034d97880fbeb3 ]
    
    MVPP2_TXQ_SCHED_TOKEN_CNTR_REG() expects the logical queue id but
    the current code is passing the global tx queue offset, so it ends
    up writing to unknown registers (between 0x8280 and 0x82fc, which
    seemed to be unused by the hardware). This fixes the issue by using
    the logical queue id instead.
    
    Fixes: 3f518509dedc ("ethernet: Add new driver for Marvell Armada 375 network unit")
    Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9119b6a7ad996d5bff95df36cd08513b35cfab9
Author: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
Date:   Mon May 27 11:04:17 2019 +0000

    net: mvneta: Fix err code path of probe
    
    [ Upstream commit d484e06e25ebb937d841dac02ac1fe76ec7d4ddd ]
    
    Fix below issues in err code path of probe:
    1. we don't need to unregister_netdev() because the netdev isn't
    registered.
    2. when register_netdev() fails, we also need to destroy bm pool for
    HWBM case.
    
    Fixes: dc35a10f68d3 ("net: mvneta: bm: add support for hardware buffer management")
    Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 163d73542aa44a6f00144d51528c8665aa4a8712
Author: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Date:   Wed May 29 07:02:11 2019 +0000

    net: dsa: mv88e6xxx: fix handling of upper half of STATS_TYPE_PORT
    
    [ Upstream commit 84b3fd1fc9592d431e23b077e692fa4e3fd0f086 ]
    
    Currently, the upper half of a 4-byte STATS_TYPE_PORT statistic ends
    up in bits 47:32 of the return value, instead of bits 31:16 as they
    should.
    
    Fixes: 6e46e2d821bb ("net: dsa: mv88e6xxx: Fix u64 statistics")
    Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
    Reviewed-by: Vivien Didelot <vivien.didelot@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47842fc63e3c670354301080f20d6c31a26e8049
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed May 22 18:35:16 2019 -0700

    ipv4/igmp: fix build error if !CONFIG_IP_MULTICAST
    
    [ Upstream commit 903869bd10e6719b9df6718e785be7ec725df59f ]
    
    ip_sf_list_clear_all() needs to be defined even if !CONFIG_IP_MULTICAST
    
    Fixes: 3580d04aa674 ("ipv4/igmp: fix another memory leak in igmpv3_del_delrec()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e5fda4b1480d8bd5136eeeb56269b3daec0163d
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed May 22 16:51:22 2019 -0700

    ipv4/igmp: fix another memory leak in igmpv3_del_delrec()
    
    [ Upstream commit 3580d04aa674383c42de7b635d28e52a1e5bc72c ]
    
    syzbot reported memory leaks [1] that I have back tracked to
    a missing cleanup from igmpv3_del_delrec() when
    (im->sfmode != MCAST_INCLUDE)
    
    Add ip_sf_list_clear_all() and kfree_pmc() helpers to explicitely
    handle the cleanups before freeing.
    
    [1]
    
    BUG: memory leak
    unreferenced object 0xffff888123e32b00 (size 64):
      comm "softirq", pid 0, jiffies 4294942968 (age 8.010s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 e0 00 00 01 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<000000006105011b>] kmemleak_alloc_recursive include/linux/kmemleak.h:55 [inline]
        [<000000006105011b>] slab_post_alloc_hook mm/slab.h:439 [inline]
        [<000000006105011b>] slab_alloc mm/slab.c:3326 [inline]
        [<000000006105011b>] kmem_cache_alloc_trace+0x13d/0x280 mm/slab.c:3553
        [<000000004bba8073>] kmalloc include/linux/slab.h:547 [inline]
        [<000000004bba8073>] kzalloc include/linux/slab.h:742 [inline]
        [<000000004bba8073>] ip_mc_add1_src net/ipv4/igmp.c:1961 [inline]
        [<000000004bba8073>] ip_mc_add_src+0x36b/0x400 net/ipv4/igmp.c:2085
        [<00000000a46a65a0>] ip_mc_msfilter+0x22d/0x310 net/ipv4/igmp.c:2475
        [<000000005956ca89>] do_ip_setsockopt.isra.0+0x1795/0x1930 net/ipv4/ip_sockglue.c:957
        [<00000000848e2d2f>] ip_setsockopt+0x3b/0xb0 net/ipv4/ip_sockglue.c:1246
        [<00000000b9db185c>] udp_setsockopt+0x4e/0x90 net/ipv4/udp.c:2616
        [<000000003028e438>] sock_common_setsockopt+0x38/0x50 net/core/sock.c:3130
        [<0000000015b65589>] __sys_setsockopt+0x98/0x120 net/socket.c:2078
        [<00000000ac198ef0>] __do_sys_setsockopt net/socket.c:2089 [inline]
        [<00000000ac198ef0>] __se_sys_setsockopt net/socket.c:2086 [inline]
        [<00000000ac198ef0>] __x64_sys_setsockopt+0x26/0x30 net/socket.c:2086
        [<000000000a770437>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:301
        [<00000000d3adb93b>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 9c8bb163ae78 ("igmp, mld: Fix memory leak in igmpv3/mld_del_delrec()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Hangbin Liu <liuhangbin@gmail.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a2ba766ee22b2e4a6af0c4e21fc49afd34e2563
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Wed May 22 19:12:54 2019 -0400

    bnxt_en: Fix aggregation buffer leak under OOM condition.
    
    [ Upstream commit 296d5b54163964b7ae536b8b57dfbd21d4e868e1 ]
    
    For every RX packet, the driver replenishes all buffers used for that
    packet and puts them back into the RX ring and RX aggregation ring.
    In one code path where the RX packet has one RX buffer and one or more
    aggregation buffers, we missed recycling the aggregation buffer(s) if
    we are unable to allocate a new SKB buffer.  This leads to the
    aggregation ring slowly running out of buffers over time.  Fix it
    by properly recycling the aggregation buffers.
    
    Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
    Reported-by: Rakesh Hemnani <rhemnani@fb.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75c0ab09750d834c868a2390df4446e2d0560617
Author: Parav Pandit <parav@mellanox.com>
Date:   Fri May 10 10:40:08 2019 -0500

    net/mlx5: Allocate root ns memory using kzalloc to match kfree
    
    [ Upstream commit 25fa506b70cadb580c1e9cbd836d6417276d4bcd ]
    
    root ns is yet another fs core node which is freed using kfree() by
    tree_put_node().
    Rest of the other fs core objects are also allocated using kmalloc
    variants.
    
    However, root ns memory is allocated using kvzalloc().
    Hence allocate root ns memory using kzalloc().
    
    Fixes: 2530236303d9e ("net/mlx5_core: Flow steering tree initialization")
    Signed-off-by: Parav Pandit <parav@mellanox.com>
    Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
    Reviewed-by: Mark Bloch <markb@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39c2bc5a9d9eef2f3d807707ae8f14907d5d9b8d
Author: Chris Packham <chris.packham@alliedtelesis.co.nz>
Date:   Mon May 20 15:45:36 2019 +1200

    tipc: Avoid copying bytes beyond the supplied data
    
    TLV_SET is called with a data pointer and a len parameter that tells us
    how many bytes are pointed to by data. When invoking memcpy() we need
    to careful to only copy len bytes.
    
    Previously we would copy TLV_LENGTH(len) bytes which would copy an extra
    4 bytes past the end of the data pointer which newer GCC versions
    complain about.
    
     In file included from test.c:17:
     In function 'TLV_SET',
         inlined from 'test' at test.c:186:5:
     /usr/include/linux/tipc_config.h:317:3:
     warning: 'memcpy' forming offset [33, 36] is out of the bounds [0, 32]
     of object 'bearer_name' with type 'char[32]' [-Warray-bounds]
         memcpy(TLV_DATA(tlv_ptr), data, tlv_len);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     test.c: In function 'test':
     test.c::161:10: note:
     'bearer_name' declared here
         char bearer_name[TIPC_MAX_BEARER_NAME];
              ^~~~~~~~~~~
    
    We still want to ensure any padding bytes at the end are initialised, do
    this with a explicit memset() rather than copy bytes past the end of
    data. Apply the same logic to TCM_SET.
    
    Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f6d1607ece7eb987c4b3ada58e7b33ddf8386a8
Author: Kloetzke Jan <Jan.Kloetzke@preh.de>
Date:   Tue May 21 13:18:40 2019 +0000

    usbnet: fix kernel crash after disconnect
    
    [ Upstream commit ad70411a978d1e6e97b1e341a7bde9a79af0c93d ]
    
    When disconnecting cdc_ncm the kernel sporadically crashes shortly
    after the disconnect:
    
      [   57.868812] Unable to handle kernel NULL pointer dereference at virtual address 00000000
      ...
      [   58.006653] PC is at 0x0
      [   58.009202] LR is at call_timer_fn+0xec/0x1b4
      [   58.013567] pc : [<0000000000000000>] lr : [<ffffff80080f5130>] pstate: 00000145
      [   58.020976] sp : ffffff8008003da0
      [   58.024295] x29: ffffff8008003da0 x28: 0000000000000001
      [   58.029618] x27: 000000000000000a x26: 0000000000000100
      [   58.034941] x25: 0000000000000000 x24: ffffff8008003e68
      [   58.040263] x23: 0000000000000000 x22: 0000000000000000
      [   58.045587] x21: 0000000000000000 x20: ffffffc68fac1808
      [   58.050910] x19: 0000000000000100 x18: 0000000000000000
      [   58.056232] x17: 0000007f885aff8c x16: 0000007f883a9f10
      [   58.061556] x15: 0000000000000001 x14: 000000000000006e
      [   58.066878] x13: 0000000000000000 x12: 00000000000000ba
      [   58.072201] x11: ffffffc69ff1db30 x10: 0000000000000020
      [   58.077524] x9 : 8000100008001000 x8 : 0000000000000001
      [   58.082847] x7 : 0000000000000800 x6 : ffffff8008003e70
      [   58.088169] x5 : ffffffc69ff17a28 x4 : 00000000ffff138b
      [   58.093492] x3 : 0000000000000000 x2 : 0000000000000000
      [   58.098814] x1 : 0000000000000000 x0 : 0000000000000000
      ...
      [   58.205800] [<          (null)>]           (null)
      [   58.210521] [<ffffff80080f5298>] expire_timers+0xa0/0x14c
      [   58.215937] [<ffffff80080f542c>] run_timer_softirq+0xe8/0x128
      [   58.221702] [<ffffff8008081120>] __do_softirq+0x298/0x348
      [   58.227118] [<ffffff80080a6304>] irq_exit+0x74/0xbc
      [   58.232009] [<ffffff80080e17dc>] __handle_domain_irq+0x78/0xac
      [   58.237857] [<ffffff8008080cf4>] gic_handle_irq+0x80/0xac
      ...
    
    The crash happens roughly 125..130ms after the disconnect. This
    correlates with the 'delay' timer that is started on certain USB tx/rx
    errors in the URB completion handler.
    
    The problem is a race of usbnet_stop() with usbnet_start_xmit(). In
    usbnet_stop() we call usbnet_terminate_urbs() to cancel all URBs in
    flight. This only makes sense if no new URBs are submitted
    concurrently, though. But the usbnet_start_xmit() can run at the same
    time on another CPU which almost unconditionally submits an URB. The
    error callback of the new URB will then schedule the timer after it was
    already stopped.
    
    The fix adds a check if the tx queue is stopped after the tx list lock
    has been taken. This should reliably prevent the submission of new URBs
    while usbnet_terminate_urbs() does its job. The same thing is done on
    the rx side even though it might be safe due to other flags that are
    checked there.
    
    Signed-off-by: Jan Klötzke <Jan.Kloetzke@preh.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03069e85acc2de39c38718ffb2388a4c545a3047
Author: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
Date:   Wed May 22 10:05:09 2019 +0000

    net: stmmac: fix reset gpio free missing
    
    [ Upstream commit 49ce881c0d4c4a7a35358d9dccd5f26d0e56fc61 ]
    
    Commit 984203ceff27 ("net: stmmac: mdio: remove reset gpio free")
    removed the reset gpio free, when the driver is unbinded or rmmod,
    we miss the gpio free.
    
    This patch uses managed API to request the reset gpio, so that the
    gpio could be freed properly.
    
    Fixes: 984203ceff27 ("net: stmmac: mdio: remove reset gpio free")
    Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 385ee66eaf88e1f04be973f623b81e4bf0ec0c6f
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed May 29 15:36:10 2019 -0700

    net-gro: fix use-after-free read in napi_gro_frags()
    
    [ Upstream commit a4270d6795b0580287453ea55974d948393e66ef ]
    
    If a network driver provides to napi_gro_frags() an
    skb with a page fragment of exactly 14 bytes, the call
    to gro_pull_from_frag0() will 'consume' the fragment
    by calling skb_frag_unref(skb, 0), and the page might
    be freed and reused.
    
    Reading eth->h_proto at the end of napi_frags_skb() might
    read mangled data, or crash under specific debugging features.
    
    BUG: KASAN: use-after-free in napi_frags_skb net/core/dev.c:5833 [inline]
    BUG: KASAN: use-after-free in napi_gro_frags+0xc6f/0xd10 net/core/dev.c:5841
    Read of size 2 at addr ffff88809366840c by task syz-executor599/8957
    
    CPU: 1 PID: 8957 Comm: syz-executor599 Not tainted 5.2.0-rc1+ #32
    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+0x172/0x1f0 lib/dump_stack.c:113
     print_address_description.cold+0x7c/0x20d mm/kasan/report.c:188
     __kasan_report.cold+0x1b/0x40 mm/kasan/report.c:317
     kasan_report+0x12/0x20 mm/kasan/common.c:614
     __asan_report_load_n_noabort+0xf/0x20 mm/kasan/generic_report.c:142
     napi_frags_skb net/core/dev.c:5833 [inline]
     napi_gro_frags+0xc6f/0xd10 net/core/dev.c:5841
     tun_get_user+0x2f3c/0x3ff0 drivers/net/tun.c:1991
     tun_chr_write_iter+0xbd/0x156 drivers/net/tun.c:2037
     call_write_iter include/linux/fs.h:1872 [inline]
     do_iter_readv_writev+0x5f8/0x8f0 fs/read_write.c:693
     do_iter_write fs/read_write.c:970 [inline]
     do_iter_write+0x184/0x610 fs/read_write.c:951
     vfs_writev+0x1b3/0x2f0 fs/read_write.c:1015
     do_writev+0x15b/0x330 fs/read_write.c:1058
    
    Fixes: a50e233c50db ("net-gro: restore frag0 optimization")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5fa8de5de8e1ec3a55d3ac0e55876cf2057641e
Author: Andy Duan <fugang.duan@nxp.com>
Date:   Thu May 23 01:55:28 2019 +0000

    net: fec: fix the clk mismatch in failed_reset path
    
    [ Upstream commit ce8d24f9a5965a58c588f9342689702a1024433c ]
    
    Fix the clk mismatch in the error path "failed_reset" because
    below error path will disable clk_ahb and clk_ipg directly, it
    should use pm_runtime_put_noidle() instead of pm_runtime_put()
    to avoid to call runtime resume callback.
    
    Reported-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
    Tested-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c5453993245bd4d661903e468940196ab0c1b0f
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon May 27 17:35:52 2019 -0700

    llc: fix skb leak in llc_build_and_send_ui_pkt()
    
    [ Upstream commit 8fb44d60d4142cd2a440620cd291d346e23c131e ]
    
    If llc_mac_hdr_init() returns an error, we must drop the skb
    since no llc_build_and_send_ui_pkt() caller will take care of this.
    
    BUG: memory leak
    unreferenced object 0xffff8881202b6800 (size 2048):
      comm "syz-executor907", pid 7074, jiffies 4294943781 (age 8.590s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        1a 00 07 40 00 00 00 00 00 00 00 00 00 00 00 00  ...@............
      backtrace:
        [<00000000e25b5abe>] kmemleak_alloc_recursive include/linux/kmemleak.h:55 [inline]
        [<00000000e25b5abe>] slab_post_alloc_hook mm/slab.h:439 [inline]
        [<00000000e25b5abe>] slab_alloc mm/slab.c:3326 [inline]
        [<00000000e25b5abe>] __do_kmalloc mm/slab.c:3658 [inline]
        [<00000000e25b5abe>] __kmalloc+0x161/0x2c0 mm/slab.c:3669
        [<00000000a1ae188a>] kmalloc include/linux/slab.h:552 [inline]
        [<00000000a1ae188a>] sk_prot_alloc+0xd6/0x170 net/core/sock.c:1608
        [<00000000ded25bbe>] sk_alloc+0x35/0x2f0 net/core/sock.c:1662
        [<000000002ecae075>] llc_sk_alloc+0x35/0x170 net/llc/llc_conn.c:950
        [<00000000551f7c47>] llc_ui_create+0x7b/0x140 net/llc/af_llc.c:173
        [<0000000029027f0e>] __sock_create+0x164/0x250 net/socket.c:1430
        [<000000008bdec225>] sock_create net/socket.c:1481 [inline]
        [<000000008bdec225>] __sys_socket+0x69/0x110 net/socket.c:1523
        [<00000000b6439228>] __do_sys_socket net/socket.c:1532 [inline]
        [<00000000b6439228>] __se_sys_socket net/socket.c:1530 [inline]
        [<00000000b6439228>] __x64_sys_socket+0x1e/0x30 net/socket.c:1530
        [<00000000cec820c1>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:301
        [<000000000c32554f>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    BUG: memory leak
    unreferenced object 0xffff88811d750d00 (size 224):
      comm "syz-executor907", pid 7074, jiffies 4294943781 (age 8.600s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 f0 0c 24 81 88 ff ff 00 68 2b 20 81 88 ff ff  ...$.....h+ ....
      backtrace:
        [<0000000053026172>] kmemleak_alloc_recursive include/linux/kmemleak.h:55 [inline]
        [<0000000053026172>] slab_post_alloc_hook mm/slab.h:439 [inline]
        [<0000000053026172>] slab_alloc_node mm/slab.c:3269 [inline]
        [<0000000053026172>] kmem_cache_alloc_node+0x153/0x2a0 mm/slab.c:3579
        [<00000000fa8f3c30>] __alloc_skb+0x6e/0x210 net/core/skbuff.c:198
        [<00000000d96fdafb>] alloc_skb include/linux/skbuff.h:1058 [inline]
        [<00000000d96fdafb>] alloc_skb_with_frags+0x5f/0x250 net/core/skbuff.c:5327
        [<000000000a34a2e7>] sock_alloc_send_pskb+0x269/0x2a0 net/core/sock.c:2225
        [<00000000ee39999b>] sock_alloc_send_skb+0x32/0x40 net/core/sock.c:2242
        [<00000000e034d810>] llc_ui_sendmsg+0x10a/0x540 net/llc/af_llc.c:933
        [<00000000c0bc8445>] sock_sendmsg_nosec net/socket.c:652 [inline]
        [<00000000c0bc8445>] sock_sendmsg+0x54/0x70 net/socket.c:671
        [<000000003b687167>] __sys_sendto+0x148/0x1f0 net/socket.c:1964
        [<00000000922d78d9>] __do_sys_sendto net/socket.c:1976 [inline]
        [<00000000922d78d9>] __se_sys_sendto net/socket.c:1972 [inline]
        [<00000000922d78d9>] __x64_sys_sendto+0x2a/0x30 net/socket.c:1972
        [<00000000cec820c1>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:301
        [<000000000c32554f>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b77654713a3c696afa7c81b3e4c81b0234223857
Author: Mike Manning <mmanning@vyatta.att-mail.com>
Date:   Mon May 20 19:57:17 2019 +0100

    ipv6: Consider sk_bound_dev_if when binding a raw socket to an address
    
    [ Upstream commit 72f7cfab6f93a8ea825fab8ccfb016d064269f7f ]
    
    IPv6 does not consider if the socket is bound to a device when binding
    to an address. The result is that a socket can be bound to eth0 and
    then bound to the address of eth1. If the device is a VRF, the result
    is that a socket can only be bound to an address in the default VRF.
    
    Resolve by considering the device if sk_bound_dev_if is set.
    
    Signed-off-by: Mike Manning <mmanning@vyatta.att-mail.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Tested-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e10789acbe6a76b304f45cbc8bb77a926ae4f201
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Mar 27 12:40:33 2019 -0700

    inet: switch IP ID generator to siphash
    
    [ Upstream commit df453700e8d81b1bdafdf684365ee2b9431fb702 ]
    
    According to Amit Klein and Benny Pinkas, IP ID generation is too weak
    and might be used by attackers.
    
    Even with recent net_hash_mix() fix (netns: provide pure entropy for net_hash_mix())
    having 64bit key and Jenkins hash is risky.
    
    It is time to switch to siphash and its 128bit keys.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Amit Klein <aksecurity@gmail.com>
    Reported-by: Benny Pinkas <benny@pinkas.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>