commit 018ab995e277c547e49199171133e513a163deba
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed May 16 10:12:36 2018 +0200

    Linux 4.16.9

commit 4a361fa40b39fc93bf832ffad34351c62fe8d834
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 20 14:08:58 2018 +0200

    perf/x86: Fix possible Spectre-v1 indexing for x86_pmu::event_map()
    
    commit 46b1b577229a091b137831becaa0fae8690ee15a upstream.
    
    > arch/x86/events/intel/cstate.c:307 cstate_pmu_event_init() warn: potential spectre issue 'pkg_msr' (local cap)
    > arch/x86/events/intel/core.c:337 intel_pmu_event_map() warn: potential spectre issue 'intel_perfmon_event_map'
    > arch/x86/events/intel/knc.c:122 knc_pmu_event_map() warn: potential spectre issue 'knc_perfmon_event_map'
    > arch/x86/events/intel/p4.c:722 p4_pmu_event_map() warn: potential spectre issue 'p4_general_events'
    > arch/x86/events/intel/p6.c:116 p6_pmu_event_map() warn: potential spectre issue 'p6_perfmon_event_map'
    > arch/x86/events/amd/core.c:132 amd_pmu_event_map() warn: potential spectre issue 'amd_perfmon_event_map'
    
    Userspace controls @attr, sanitize @attr->config before passing it on
    to x86_pmu::event_map().
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 953a486c108600f9178a5df79be519db2de335f5
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 20 14:03:18 2018 +0200

    perf/core: Fix possible Spectre-v1 indexing for ->aux_pages[]
    
    commit 4411ec1d1993e8dbff2898390e3fed280d88e446 upstream.
    
    > kernel/events/ring_buffer.c:871 perf_mmap_to_page() warn: potential spectre issue 'rb->aux_pages'
    
    Userspace controls @pgoff through the fault address. Sanitize the
    array index before doing the array dereference.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d40cb48f65a9527ce07725ec1808abd0277fad0
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 20 14:23:36 2018 +0200

    perf/x86/msr: Fix possible Spectre-v1 indexing in the MSR driver
    
    commit 06ce6e9b6d6c09d4129c6e24a1314a395d816c10 upstream.
    
    > arch/x86/events/msr.c:178 msr_event_init() warn: potential spectre issue 'msr' (local cap)
    
    Userspace controls @attr, sanitize cfg (attr->config) before using it
    to index an array.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 419eb44fbde8e691139eb0def60d1842e0b4bc5a
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 20 14:25:48 2018 +0200

    perf/x86/cstate: Fix possible Spectre-v1 indexing for pkg_msr
    
    commit a5f81290ce475489fa2551c01a07470c1a4c932e upstream.
    
    > arch/x86/events/intel/cstate.c:307 cstate_pmu_event_init() warn: potential spectre issue 'pkg_msr' (local cap)
    
    Userspace controls @attr, sanitize cfg (attr->config) before using it
    to index an array.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a1faf67b7e8a5b07e37a188846efeff1875d96f
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 20 14:06:29 2018 +0200

    perf/x86: Fix possible Spectre-v1 indexing for hw_perf_event cache_*
    
    commit ef9ee4ad38445a30909c48998624861716f2a994 upstream.
    
    > arch/x86/events/core.c:319 set_ext_hw_attr() warn: potential spectre issue 'hw_cache_event_ids[cache_type]' (local cap)
    > arch/x86/events/core.c:319 set_ext_hw_attr() warn: potential spectre issue 'hw_cache_event_ids' (local cap)
    > arch/x86/events/core.c:328 set_ext_hw_attr() warn: potential spectre issue 'hw_cache_extra_regs[cache_type]' (local cap)
    > arch/x86/events/core.c:328 set_ext_hw_attr() warn: potential spectre issue 'hw_cache_extra_regs' (local cap)
    
    Userspace controls @config which contains 3 (byte) fields used for a 3
    dimensional array deref.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 500a846cd788e925aad4f2c5b0a54c678a9105ce
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Tue Apr 10 21:20:08 2018 +0900

    tracing/uprobe_event: Fix strncpy corner case
    
    commit 50268a3d266ecfdd6c5873d62b2758d9732fc598 upstream.
    
    Fix string fetch function to terminate with NUL.
    It is OK to drop the rest of string.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: security@kernel.org
    Cc: 范龙飞 <long7573@126.com>
    Fixes: 5baaa59ef09e ("tracing/probes: Implement 'memory' fetch method for uprobes")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8577c7a3191dd08b9e5a246630cdd628f248a94f
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 20 15:03:45 2018 +0200

    sched/autogroup: Fix possible Spectre-v1 indexing for sched_prio_to_weight[]
    
    commit 354d7793070611b4df5a79fbb0f12752d0ed0cc5 upstream.
    
    > kernel/sched/autogroup.c:230 proc_sched_autogroup_set_nice() warn: potential spectre issue 'sched_prio_to_weight'
    
    Userspace controls @nice, sanitize the array index.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: <stable@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d728a4ecab107668f241c6d2a10cc9380830c25
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Apr 20 14:29:51 2018 +0200

    sched/core: Fix possible Spectre-v1 indexing for sched_prio_to_weight[]
    
    commit 7281c8dec8a87685cb54d503d8cceef5a0fc2fdd upstream.
    
    > kernel/sched/core.c:6921 cpu_weight_nice_write_s64() warn: potential spectre issue 'sched_prio_to_weight'
    
    Userspace controls @nice, so sanitize the value before using it to
    index an array.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62e16d89b4cf9b64436c33c6383df321eca91bec
Author: Jean Delvare <jdelvare@suse.de>
Date:   Sat May 12 11:57:37 2018 +0200

    swiotlb: silent unwanted warning "buffer is full"
    
    commit 05e13bb57e6f181d7605f8608181c7e6fb7f591d upstream.
    
    If DMA_ATTR_NO_WARN is passed to swiotlb_alloc_buffer(), it should be
    passed further down to swiotlb_tbl_map_single(). Otherwise we escape
    half of the warnings but still log the other half.
    
    This is one of the multiple causes of spurious warnings reported at:
    https://bugs.freedesktop.org/show_bug.cgi?id=104082
    
    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Fixes: 0176adb00406 ("swiotlb: refactor coherent buffer allocation")
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: Michel Dänzer <michel@daenzer.net>
    Cc: Takashi Iwai <tiwai@suse.de>
    Cc: stable@vger.kernel.org # v4.16
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 940f0fab9d9e3417acc1d035d79bd5b8b4c15454
Author: Steve French <smfrench@gmail.com>
Date:   Thu May 10 10:59:37 2018 -0500

    smb3: directory sync should not return an error
    
    commit 6e70c267e68d77679534dcf4aaf84e66f2cf1425 upstream.
    
    As with NFS, which ignores sync on directory handles,
    fsync on a directory handle is a noop for CIFS/SMB3.
    Do not return an error on it.  It breaks some database
    apps otherwise.
    
    Signed-off-by: Steve French <smfrench@gmail.com>
    CC: Stable <stable@vger.kernel.org>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4dc9278eb7022011e55e7e876efdbaef790eafcd
Author: Charles Machalow <charles.machalow@intel.com>
Date:   Thu May 10 16:01:38 2018 -0700

    nvme: Fix sync controller reset return
    
    commit 4e50d9ebaeaa3c6761d2b513ef7039510c8cf213 upstream.
    
    If a controller reset is requested while the device has no namespaces,
    we were incorrectly returning ENETRESET. This patch adds the check for
    ADMIN_ONLY controller state to indicate a successful reset.
    
    Fixes: 8000d1fdb0  ("nvme-rdma: fix sysfs invoked reset_ctrl error flow ")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Charles Machalow <charles.machalow@intel.com>
    [changelog]
    Signed-off-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4af6b3c49a745e2587abaff1b2fa39109e2ee288
Author: Jens Axboe <axboe@kernel.dk>
Date:   Tue May 8 10:25:15 2018 -0600

    nvme: add quirk to force medium priority for SQ creation
    
    commit 9abd68ef454c824bfd18629033367b4382b5f390 upstream.
    
    Some P3100 drives have a bug where they think WRRU (weighted round robin)
    is always enabled, even though the host doesn't set it. Since they think
    it's enabled, they also look at the submission queue creation priority. We
    used to set that to MEDIUM by default, but that was removed in commit
    81c1cd98351b. This causes various issues on that drive. Add a quirk to
    still set MEDIUM priority for that controller.
    
    Fixes: 81c1cd98351b ("nvme/pci: Don't set reserved SQ create flags")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66832455217f187edcb1184c7a31bcd860f4e185
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Mon Apr 16 12:11:53 2018 +0200

    thermal: exynos: Propagate error value from tmu_read()
    
    commit c8da6cdef57b459ac0fd5d9d348f8460a575ae90 upstream.
    
    tmu_read() in case of Exynos4210 might return error for out of bound
    values. Current code ignores such value, what leads to reporting critical
    temperature value. Add proper error code propagation to exynos_get_temp()
    function.
    
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    CC: stable@vger.kernel.org # v4.6+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0f8fc1ff5f3ecc9c445a89049c3215a73bac379
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Mon Apr 16 12:11:52 2018 +0200

    thermal: exynos: Reading temperature makes sense only when TMU is turned on
    
    commit 88fc6f73fddf64eb507b04f7b2bd01d7291db514 upstream.
    
    When thermal sensor is not yet enabled, reading temperature might return
    random value. This might even result in stopping system booting when such
    temperature is higher than the critical value. Fix this by checking if TMU
    has been actually enabled before reading the temperature.
    
    This change fixes booting of Exynos4210-based board with TMU enabled (for
    example Samsung Trats board), which was broken since v4.4 kernel release.
    
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Fixes: 9e4249b40340 ("thermal: exynos: Fix first temperature read after registering sensor")
    CC: stable@vger.kernel.org # v4.6+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e8af7930534d2601d5509c2d09d82ee931c7c8a
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Apr 27 11:26:43 2018 +0200

    Bluetooth: btusb: Only check needs_reset_resume DMI table for QCA rome chipsets
    
    commit fc54910280eb38bde923cdf0898e74687d8e6989 upstream.
    
    Jeremy Cline correctly points out in rhbz#1514836 that a device where the
    QCA rome chipset needs the USB_QUIRK_RESET_RESUME quirk, may also ship
    with a different wifi/bt chipset in some configurations.
    
    If that is the case then we are needlessly penalizing those other chipsets
    with a reset-resume quirk, typically causing 0.4W extra power use because
    this disables runtime-pm.
    
    This commit moves the DMI table check to a btusb_check_needs_reset_resume()
    helper (so that we can easily also call it for other chipsets) and calls
    this new helper only for QCA_ROME chipsets for now.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1514836
    Cc: stable@vger.kernel.org
    Cc: Jeremy Cline <jcline@redhat.com>
    Suggested-by: Jeremy Cline <jcline@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6350ed0be4e046cf91e61ed67ec8c34e59239f09
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Apr 26 20:52:06 2018 +0200

    Bluetooth: btusb: Add Dell XPS 13 9360 to btusb_needs_reset_resume_table
    
    commit 596b07a9a22656493726edf1739569102bd3e136 upstream.
    
    The Dell XPS 13 9360 uses a QCA Rome chip which needs to be reset
    (and have its firmware reloaded) for bluetooth to work after
    suspend/resume.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1514836
    Cc: stable@vger.kernel.org
    Cc: Garrett LeSage <glesage@redhat.com>
    Reported-and-tested-by: Garrett LeSage <glesage@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c20458849c6215eda48ff68d4474104dd52d6bf
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Apr 26 14:18:19 2018 +0200

    Revert "Bluetooth: btusb: Fix quirk for Atheros 1525/QCA6174"
    
    commit 544a591668813583021474fa5c7ff4942244d654 upstream.
    
    Commit f44cb4b19ed4 ("Bluetooth: btusb: Fix quirk for Atheros
    1525/QCA6174") is causing bluetooth to no longer work for several
    people, see: https://bugzilla.redhat.com/show_bug.cgi?id=1568911
    
    So lets revert it for now and try to find another solution for
    devices which need the modified quirk.
    
    Cc: stable@vger.kernel.org
    Cc: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93afa266fcdf0a5254381c5bc149eaea14adcd67
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Wed Apr 25 16:50:40 2018 +0200

    arm: dts: imx[35]*: declare flexcan devices to be compatible to imx25's flexcan
    
    commit 9a62dcf486c10daf5366f29df1c799f69b1510f9 upstream.
    
    Commit d50f4630c2e1 ("arm: dts: Remove p1010-flexcan compatible from imx
    series dts") removed the fallback compatible "fsl,p1010-flexcan" from
    the imx device trees. As the flexcan cores on i.MX25, i.MX35 and i.MX53
    are identical, introduce the first as fallback for the two latter ones.
    
    Fixes: d50f4630c2e1 ("arm: dts: Remove p1010-flexcan compatible from imx series dts")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Cc: linux-stable <stable@vger.kernel.org> # >= v4.16
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e775e2787269cfcdd89b8f78f0e37ba8013ba9c3
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed May 9 11:44:56 2018 +0200

    cpufreq: schedutil: Avoid using invalid next_freq
    
    commit 97739501f207efe33145b918817f305b822987f8 upstream.
    
    If the next_freq field of struct sugov_policy is set to UINT_MAX,
    it shouldn't be used for updating the CPU frequency (this is a
    special "invalid" value), but after commit b7eaf1aab9f8 (cpufreq:
    schedutil: Avoid reducing frequency of busy CPUs prematurely) it
    may be passed as the new frequency to sugov_update_commit() in
    sugov_update_single().
    
    Fix that by adding an extra check for the special UINT_MAX value
    of next_freq to sugov_update_single().
    
    Fixes: b7eaf1aab9f8 (cpufreq: schedutil: Avoid reducing frequency of busy CPUs prematurely)
    Reported-by: Viresh Kumar <viresh.kumar@linaro.org>
    Cc: 4.12+ <stable@vger.kernel.org> # 4.12+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3c4529e82f6e1c10b442263343487ef5add12c7
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed May 9 00:18:32 2018 +0200

    PCI / PM: Check device_may_wakeup() in pci_enable_wake()
    
    commit cfcadfaad7251d8b640713724b388164d75465b2 upstream.
    
    Commit 0847684cfc5f0 (PCI / PM: Simplify device wakeup settings code)
    went too far and dropped the device_may_wakeup() check from
    pci_enable_wake() which causes wakeup to be enabled during system
    suspend, hibernation or shutdown for some PCI devices that are not
    allowed by user space to wake up the system from sleep (or power off).
    
    As a result of this, excessive power is drawn by some of the affected
    systems while in sleep states or off.
    
    Restore the device_may_wakeup() check in pci_enable_wake(), but make
    sure that the PCI bus type's runtime suspend callback will not call
    device_may_wakeup() which is about system wakeup from sleep and not
    about device wakeup from runtime suspend.
    
    Fixes: 0847684cfc5f0 (PCI / PM: Simplify device wakeup settings code)
    Reported-by: Joseph Salisbury <joseph.salisbury@canonical.com>
    Cc: 4.13+ <stable@vger.kernel.org> # 4.13+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9a1108e2fb8de517c704dedc88a2d7c45910f87
Author: Kai Heng Feng <kai.heng.feng@canonical.com>
Date:   Mon May 7 14:11:20 2018 +0800

    PCI / PM: Always check PME wakeup capability for runtime wakeup support
    
    commit 8feaec33b9868582654cd3d5355225dcb79aeca6 upstream.
    
    USB controller ASM1042 stops working after commit de3ef1eb1cd0 (PM /
    core: Drop run_wake flag from struct dev_pm_info).
    
    The device in question is not power managed by platform firmware,
    furthermore, it only supports PME# from D3cold:
    Capabilities: [78] Power Management version 3
           Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
           Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
    
    Before commit de3ef1eb1cd0, the device never gets runtime suspended.
    After that commit, the device gets runtime suspended to D3hot, which can
    not generate any PME#.
    
    usb_hcd_pci_probe() unconditionally calls device_wakeup_enable(), hence
    device_can_wakeup() in pci_dev_run_wake() always returns true.
    
    So pci_dev_run_wake() needs to check PME wakeup capability as its first
    condition.
    
    In addition, change wakeup flag passed to pci_target_state() from false
    to true, because we want to find the deepest state different from D3cold
    that the device can still generate PME#. In this case, it's D0 for the
    device in question.
    
    Fixes: de3ef1eb1cd0 (PM / core: Drop run_wake flag from struct dev_pm_info)
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Cc: 4.13+ <stable@vger.kernel.org> # 4.13+
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc6501ddccad4d0124adffbcb2a219e461ff9abf
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Thu May 3 13:17:12 2018 -0500

    atm: zatm: Fix potential Spectre v1
    
    commit 2be147f7459db5bbf292e0a6f135037b55e20b39 upstream.
    
    pool can be indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    drivers/atm/zatm.c:1462 zatm_ioctl() warn: potential spectre issue
    'zatm_dev->pool_info' (local cap)
    
    Fix this by sanitizing pool before using it to index
    zatm_dev->pool_info
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25c859f9b04d64a7d58c374243bc6fffc7bd3d9d
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Thu May 3 13:45:58 2018 -0500

    net: atm: Fix potential Spectre v1
    
    commit acf784bd0ce257fe43da7ca266f7a10b837479d2 upstream.
    
    ioc_data.dev_num can be controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    net/atm/lec.c:702 lec_vcc_attach() warn: potential spectre issue
    'dev_lec'
    
    Fix this by sanitizing ioc_data.dev_num before using it to index
    dev_lec. Also, notice that there is another instance in which array
    dev_lec is being indexed using ioc_data.dev_num at line 705:
    lec_vcc_added(netdev_priv(dev_lec[ioc_data.dev_num]),
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4209b7ac47823c83dd8ba646691731f9377a82b5
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Wed May 2 21:32:47 2018 +0300

    drm/atomic: Clean private obj old_state/new_state in drm_atomic_state_default_clear()
    
    commit b5cb2e5a1f64d882a155add7522247ab0523051e upstream.
    
    Clear the old_state and new_state pointers for private objects
    in drm_atomic_state_default_clear(). We don't actually have
    functions to get the new/old state for private objects so
    getting access to the potentially stale pointers requires a
    bit more manual labour than for other object types. But let's
    clear the pointers for private objects as well, if only to
    avoid future surprises when someone decides to add the functions
    to get at them.
    
    v2: Split private objs to a separate patch (Daniel)
    
    Cc: <stable@vger.kernel.org> # v4.14+
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Abhay Kumar <abhay.kumar@intel.com>
    Fixes: a4370c777406 (drm/atomic: Make private objs proper objects)
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180502183247.5746-1-ville.syrjala@linux.intel.com
    Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Sean Paul <seanpaul@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21f49229963389ec6f28dbe5d381a47d4170a658
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Wed May 2 21:32:47 2018 +0300

    drm/atomic: Clean old_state/new_state in drm_atomic_state_default_clear()
    
    commit f0b408eebc993310bea3f2daae286c40bd3f063b upstream.
    
    Clear the old_state and new_state pointers for every object in
    drm_atomic_state_default_clear(). Otherwise
    drm_atomic_get_{new,old}_*_state() will hand out stale pointers to
    anyone who hasn't first confirmed that the object is in fact part of
    the current atomic transcation, if they are called after we've done
    the ww backoff dance while hanging on to the same drm_atomic_state.
    
    For example, handle_conflicting_encoders() looks like it could hit
    this since it iterates the full connector list and just calls
    drm_atomic_get_new_connector_state() for each.
    
    And I believe we have now witnessed this happening at least once in
    i915 check_digital_port_conflicts(). Commit 8b69449d2663 ("drm/i915:
    Remove last references to drm_atomic_get_existing* macros") changed
    the safe drm_atomic_get_existing_connector_state() to the unsafe
    drm_atomic_get_new_connector_state(), which opened the doors for
    this particular bug there as well.
    
    v2: Split private objs out to a separate patch (Daniel)
    
    Cc: stable@vger.kernel.org
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Abhay Kumar <abhay.kumar@intel.com>
    Fixes: 581e49fe6b41 ("drm/atomic: Add new iterators over all state, v3.")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180502183247.5746-1-ville.syrjala@linux.intel.com
    Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Sean Paul <seanpaul@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d1a7b103fc497961b51bc589b426b968f2b1981
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Tue May 8 20:39:47 2018 +1000

    drm/nouveau/ttm: don't dereference nvbo::cli, it can outlive client
    
    commit 0d5a03c3d9254813ca76d7886ff9ed76a0aea545 upstream.
    
    Potentially responsible for some random OOPSes.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Cc: stable@vger.kernel.org [v4.15+]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4c34cdf29f09929caea3f927d52c816f098dd7d
Author: Lyude Paul <lyude@redhat.com>
Date:   Wed May 2 19:38:48 2018 -0400

    drm/nouveau: Fix deadlock in nv50_mstm_register_connector()
    
    commit 352672db857290ab5b0e2b6a99c414f92bee024c upstream.
    
    Currently; we're grabbing all of the modesetting locks before adding MST
    connectors to fbdev. This isn't actually necessary, and causes a
    deadlock as well:
    
    ======================================================
    WARNING: possible circular locking dependency detected
    4.17.0-rc3Lyude-Test+ #1 Tainted: G           O
    ------------------------------------------------------
    kworker/1:0/18 is trying to acquire lock:
    00000000c832f62d (&helper->lock){+.+.}, at: drm_fb_helper_add_one_connector+0x2a/0x60 [drm_kms_helper]
    
    but task is already holding lock:
    00000000942e28e2 (crtc_ww_class_mutex){+.+.}, at: drm_modeset_backoff+0x8e/0x1c0 [drm]
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #3 (crtc_ww_class_mutex){+.+.}:
           ww_mutex_lock+0x43/0x80
           drm_modeset_lock+0x71/0x130 [drm]
           drm_helper_probe_single_connector_modes+0x7d/0x6b0 [drm_kms_helper]
           drm_setup_crtcs+0x15e/0xc90 [drm_kms_helper]
           __drm_fb_helper_initial_config_and_unlock+0x29/0x480 [drm_kms_helper]
           nouveau_fbcon_init+0x138/0x1a0 [nouveau]
           nouveau_drm_load+0x173/0x7e0 [nouveau]
           drm_dev_register+0x134/0x1c0 [drm]
           drm_get_pci_dev+0x8e/0x160 [drm]
           nouveau_drm_probe+0x1a9/0x230 [nouveau]
           pci_device_probe+0xcd/0x150
           driver_probe_device+0x30b/0x480
           __driver_attach+0xbc/0xe0
           bus_for_each_dev+0x67/0x90
           bus_add_driver+0x164/0x260
           driver_register+0x57/0xc0
           do_one_initcall+0x4d/0x323
           do_init_module+0x5b/0x1f8
           load_module+0x20e5/0x2ac0
           __do_sys_finit_module+0xb7/0xd0
           do_syscall_64+0x60/0x1b0
           entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    -> #2 (crtc_ww_class_acquire){+.+.}:
           drm_helper_probe_single_connector_modes+0x58/0x6b0 [drm_kms_helper]
           drm_setup_crtcs+0x15e/0xc90 [drm_kms_helper]
           __drm_fb_helper_initial_config_and_unlock+0x29/0x480 [drm_kms_helper]
           nouveau_fbcon_init+0x138/0x1a0 [nouveau]
           nouveau_drm_load+0x173/0x7e0 [nouveau]
           drm_dev_register+0x134/0x1c0 [drm]
           drm_get_pci_dev+0x8e/0x160 [drm]
           nouveau_drm_probe+0x1a9/0x230 [nouveau]
           pci_device_probe+0xcd/0x150
           driver_probe_device+0x30b/0x480
           __driver_attach+0xbc/0xe0
           bus_for_each_dev+0x67/0x90
           bus_add_driver+0x164/0x260
           driver_register+0x57/0xc0
           do_one_initcall+0x4d/0x323
           do_init_module+0x5b/0x1f8
           load_module+0x20e5/0x2ac0
           __do_sys_finit_module+0xb7/0xd0
           do_syscall_64+0x60/0x1b0
           entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    -> #1 (&dev->mode_config.mutex){+.+.}:
           drm_setup_crtcs+0x10c/0xc90 [drm_kms_helper]
           __drm_fb_helper_initial_config_and_unlock+0x29/0x480 [drm_kms_helper]
           nouveau_fbcon_init+0x138/0x1a0 [nouveau]
           nouveau_drm_load+0x173/0x7e0 [nouveau]
           drm_dev_register+0x134/0x1c0 [drm]
           drm_get_pci_dev+0x8e/0x160 [drm]
           nouveau_drm_probe+0x1a9/0x230 [nouveau]
           pci_device_probe+0xcd/0x150
           driver_probe_device+0x30b/0x480
           __driver_attach+0xbc/0xe0
           bus_for_each_dev+0x67/0x90
           bus_add_driver+0x164/0x260
           driver_register+0x57/0xc0
           do_one_initcall+0x4d/0x323
           do_init_module+0x5b/0x1f8
           load_module+0x20e5/0x2ac0
           __do_sys_finit_module+0xb7/0xd0
           do_syscall_64+0x60/0x1b0
           entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    -> #0 (&helper->lock){+.+.}:
           __mutex_lock+0x70/0x9d0
           drm_fb_helper_add_one_connector+0x2a/0x60 [drm_kms_helper]
           nv50_mstm_register_connector+0x2c/0x50 [nouveau]
           drm_dp_add_port+0x2f5/0x420 [drm_kms_helper]
           drm_dp_send_link_address+0x155/0x1e0 [drm_kms_helper]
           drm_dp_add_port+0x33f/0x420 [drm_kms_helper]
           drm_dp_send_link_address+0x155/0x1e0 [drm_kms_helper]
           drm_dp_check_and_send_link_address+0x87/0xd0 [drm_kms_helper]
           drm_dp_mst_link_probe_work+0x4d/0x80 [drm_kms_helper]
           process_one_work+0x20d/0x650
           worker_thread+0x3a/0x390
           kthread+0x11e/0x140
           ret_from_fork+0x3a/0x50
    
    other info that might help us debug this:
    Chain exists of:
      &helper->lock --> crtc_ww_class_acquire --> crtc_ww_class_mutex
     Possible unsafe locking scenario:
           CPU0                    CPU1
           ----                    ----
      lock(crtc_ww_class_mutex);
                                   lock(crtc_ww_class_acquire);
                                   lock(crtc_ww_class_mutex);
      lock(&helper->lock);
    
     *** DEADLOCK ***
    5 locks held by kworker/1:0/18:
     #0: 000000004a05cd50 ((wq_completion)"events_long"){+.+.}, at: process_one_work+0x187/0x650
     #1: 00000000601c11d1 ((work_completion)(&mgr->work)){+.+.}, at: process_one_work+0x187/0x650
     #2: 00000000586ca0df (&dev->mode_config.mutex){+.+.}, at: drm_modeset_lock_all+0x3a/0x1b0 [drm]
     #3: 00000000d3ca0ffa (crtc_ww_class_acquire){+.+.}, at: drm_modeset_lock_all+0x44/0x1b0 [drm]
     #4: 00000000942e28e2 (crtc_ww_class_mutex){+.+.}, at: drm_modeset_backoff+0x8e/0x1c0 [drm]
    
    stack backtrace:
    CPU: 1 PID: 18 Comm: kworker/1:0 Tainted: G           O      4.17.0-rc3Lyude-Test+ #1
    Hardware name: Gateway FX6840/FX6840, BIOS P01-A3         05/17/2010
    Workqueue: events_long drm_dp_mst_link_probe_work [drm_kms_helper]
    Call Trace:
     dump_stack+0x85/0xcb
     print_circular_bug.isra.38+0x1ce/0x1db
     __lock_acquire+0x128f/0x1350
     ? lock_acquire+0x9f/0x200
     ? lock_acquire+0x9f/0x200
     ? __ww_mutex_lock.constprop.13+0x8f/0x1000
     lock_acquire+0x9f/0x200
     ? drm_fb_helper_add_one_connector+0x2a/0x60 [drm_kms_helper]
     ? drm_fb_helper_add_one_connector+0x2a/0x60 [drm_kms_helper]
     __mutex_lock+0x70/0x9d0
     ? drm_fb_helper_add_one_connector+0x2a/0x60 [drm_kms_helper]
     ? ww_mutex_lock+0x43/0x80
     ? _cond_resched+0x15/0x30
     ? ww_mutex_lock+0x43/0x80
     ? drm_modeset_lock+0xb2/0x130 [drm]
     ? drm_fb_helper_add_one_connector+0x2a/0x60 [drm_kms_helper]
     drm_fb_helper_add_one_connector+0x2a/0x60 [drm_kms_helper]
     nv50_mstm_register_connector+0x2c/0x50 [nouveau]
     drm_dp_add_port+0x2f5/0x420 [drm_kms_helper]
     ? mark_held_locks+0x50/0x80
     ? kfree+0xcf/0x2a0
     ? drm_dp_check_mstb_guid+0xd6/0x120 [drm_kms_helper]
     ? trace_hardirqs_on_caller+0xed/0x180
     ? drm_dp_check_mstb_guid+0xd6/0x120 [drm_kms_helper]
     drm_dp_send_link_address+0x155/0x1e0 [drm_kms_helper]
     drm_dp_add_port+0x33f/0x420 [drm_kms_helper]
     ? nouveau_connector_aux_xfer+0x7c/0xb0 [nouveau]
     ? find_held_lock+0x2d/0x90
     ? drm_dp_dpcd_access+0xd9/0xf0 [drm_kms_helper]
     ? __mutex_unlock_slowpath+0x3b/0x280
     ? drm_dp_dpcd_access+0xd9/0xf0 [drm_kms_helper]
     drm_dp_send_link_address+0x155/0x1e0 [drm_kms_helper]
     drm_dp_check_and_send_link_address+0x87/0xd0 [drm_kms_helper]
     drm_dp_mst_link_probe_work+0x4d/0x80 [drm_kms_helper]
     process_one_work+0x20d/0x650
     worker_thread+0x3a/0x390
     ? process_one_work+0x650/0x650
     kthread+0x11e/0x140
     ? kthread_create_worker_on_cpu+0x50/0x50
     ret_from_fork+0x3a/0x50
    
    Taking example from i915, the only time we need to hold any modesetting
    locks is when changing the port on the mstc, and in that case we only
    need to hold the connection mutex.
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Cc: Karol Herbst <kherbst@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b554e152bd1b8c65e49c61906a845340703d065b
Author: Rodrigo Vivi <rodrigo.vivi@intel.com>
Date:   Wed May 2 10:52:55 2018 -0700

    drm/i915: Adjust eDP's logical vco in a reliable place.
    
    commit 9d219554d9bf59875b4e571a0392d620e8954879 upstream.
    
    On intel_dp_compute_config() we were calculating the needed vco
    for eDP on gen9 and we stashing it in
    intel_atomic_state.cdclk.logical.vco
    
    However few moments later on intel_modeset_checks() we fully
    replace entire intel_atomic_state.cdclk.logical with
    dev_priv->cdclk.logical fully overwriting the logical desired
    vco for eDP on gen9.
    
    So, with wrong VCO value we end up with wrong desired cdclk, but
    also it will raise a lot of WARNs: On gen9, when we read
    CDCLK_CTL to verify if we configured properly the desired
    frequency the CD Frequency Select bits [27:26] == 10b can mean
    337.5 or 308.57 MHz depending on the VCO. So if we have wrong
    VCO value stashed we will believe the frequency selection didn't
    stick and start to raise WARNs of cdclk mismatch.
    
    [   42.857519] [drm:intel_dump_cdclk_state [i915]] Changing CDCLK to 308571 kHz, VCO 8640000 kHz, ref 24000 kHz, bypass 24000 kHz, voltage level 0
    [   42.897269] cdclk state doesn't match!
    [   42.901052] WARNING: CPU: 5 PID: 1116 at drivers/gpu/drm/i915/intel_cdclk.c:2084 intel_set_cdclk+0x5d/0x110 [i915]
    [   42.938004] RIP: 0010:intel_set_cdclk+0x5d/0x110 [i915]
    [   43.155253] WARNING: CPU: 5 PID: 1116 at drivers/gpu/drm/i915/intel_cdclk.c:2084 intel_set_cdclk+0x5d/0x110 [i915]
    [   43.170277] [drm:intel_dump_cdclk_state [i915]] [hw state] 337500 kHz, VCO 8100000 kHz, ref 24000 kHz, bypass 24000 kHz, voltage level 0
    [   43.182566] [drm:intel_dump_cdclk_state [i915]] [sw state] 308571 kHz, VCO 8640000 kHz, ref 24000 kHz, bypass 24000 kHz, voltage level 0
    
    v2: Move the entire eDP's vco logical adjustment to inside
        the skl_modeset_calc_cdclk as suggested by Ville.
    
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Fixes: bb0f4aab0e76 ("drm/i915: Track full cdclk state for the logical and actual cdclk frequencies")
    Cc: <stable@vger.kernel.org> # v4.12+
    Link: https://patchwork.freedesktop.org/patch/msgid/20180502175255.5344-1-rodrigo.vivi@intel.com
    (cherry picked from commit 3297234a05ab1e90091b0574db4c397ef0e90d5f)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7b575c4f6f135cd71351b4f7986b0e68a09aeb7
Author: Florent Flament <contact@florentflament.com>
Date:   Thu Apr 19 19:07:00 2018 +0300

    drm/i915: Fix drm:intel_enable_lvds ERROR message in kernel log
    
    commit e8f48f96db7e482995743f461b3e8a5c1a102533 upstream.
    
    Fix `[drm:intel_enable_lvds] *ERROR* timed out waiting for panel to
    power on` in kernel log at boot time.
    
    Toshiba Satellite Z930 laptops needs between 1 and 2 seconds to power
    on its screen during Intel i915 DRM initialization. This currently
    results in a `[drm:intel_enable_lvds] *ERROR* timed out waiting for
    panel to power on` message appearing in the kernel log during boot
    time and when stopping the machine.
    
    This change increases the timeout of the `intel_enable_lvds` function
    from 1 to 5 seconds, letting enough time for the Satellite 930 LCD
    screen to power on, and suppressing the error message from the kernel
    log.
    
    This patch has been successfully tested on Linux 4.14 running on a
    Toshiba Satellite Z930.
    
    [vsyrjala: bump the timeout from 2 to 5 seconds to match the DP
     code and properly cover the max hw timeout of ~4 seconds, and
     drop the comment about the specific machine since this is not
     a particulary surprising issue, nor specific to that one machine]
    
    Signed-off-by: Florent Flament <contact@florentflament.com>
    Cc: stable@vger.kernel.org
    Cc: Pavel Petrovic <ppetrovic@acm.org>
    Cc: Sérgio M. Basto <sergio@serjux.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103414
    References: https://bugzilla.kernel.org/show_bug.cgi?id=57591
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180419160700.19828-1-ville.syrjala@linux.intel.com
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    (cherry picked from commit 280b54ade5914d3b4abe4f0ebe083ddbd4603246)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29726db820d1d8830bec169f717cd086de8fa498
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Wed Apr 25 17:32:10 2018 +0200

    drm/ttm: Use GFP_TRANSHUGE_LIGHT for allocating huge pages
    
    commit da291320baec914f0bb4e65a9dccb86bd6c728f2 upstream.
    
    GFP_TRANSHUGE tries very hard to allocate huge pages, which can result
    in long delays with high memory pressure. I have observed firefox
    freezing for up to around a minute due to this while restic was taking
    a full system backup.
    
    Since we don't really need huge pages, use GFP_TRANSHUGE_LIGHT |
    __GFP_NORETRY instead, in order to fail quickly when there are no huge
    pages available.
    
    Set __GFP_KSWAPD_RECLAIM as well, in order for huge pages to be freed
    up in the background if necessary.
    
    With these changes, I'm no longer seeing freezes during a restic backup.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 694d8e21ed19345fdfa34da1c0aa260c446ce151
Author: Boris Brezillon <boris.brezillon@bootlin.com>
Date:   Mon May 7 14:13:03 2018 +0200

    drm/vc4: Fix scaling of uni-planar formats
    
    commit 9a0e9802217291e54c4dd1fc5462f189a4be14ec upstream.
    
    When using uni-planar formats (like RGB), the scaling parameters are
    stored in plane 0, not plane 1.
    
    Fixes: fc04023fafec ("drm/vc4: Add support for YUV planes.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180507121303.5610-1-boris.brezillon@bootlin.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 373f328dfcd9bb8294f8c8362b75cb7f761cc941
Author: Miquel Raynal <miquel.raynal@bootlin.com>
Date:   Thu May 3 12:00:27 2018 +0200

    mtd: rawnand: marvell: fix command xtype in BCH write hook
    
    commit a2ee41fd953e7c3ff6c55a3038c80354d191a318 upstream.
    
    One layout supported by the Marvell NAND controller supports NAND pages
    of 2048 bytes, all handled in one single chunk when using BCH with a
    strength of 4-bit per 512 bytes. In this case, instead of the generic
    XTYPE_WRITE_DISPATCH/XTYPE_LAST_NAKED_RW couple, the controller expects
    to receive XTYPE_MONOLITHIC_RW.
    
    This fixes problems at boot like:
    
    [    1.315475] Scanning device for bad blocks
    [    3.203108] marvell-nfc f10d0000.flash: Timeout waiting for RB signal
    [    3.209564] nand_bbt: error while writing BBT block -110
    [    4.243106] marvell-nfc f10d0000.flash: Timeout waiting for RB signal
    [    5.283106] marvell-nfc f10d0000.flash: Timeout waiting for RB signal
    [    5.289562] nand_bbt: error -110 while marking block 2047 bad
    [    6.323106] marvell-nfc f10d0000.flash: Timeout waiting for RB signal
    [    6.329559] nand_bbt: error while writing BBT block -110
    [    7.363106] marvell-nfc f10d0000.flash: Timeout waiting for RB signal
    [    8.403105] marvell-nfc f10d0000.flash: Timeout waiting for RB signal
    [    8.409559] nand_bbt: error -110 while marking block 2046 bad
    ...
    
    Fixes: 02f26ecf8c772 ("mtd: nand: add reworked Marvell NAND controller driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Tested-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ce38a1bcb47ae064ef81d4e23eb88fd4d0c11d4
Author: Chris Packham <chris.packham@alliedtelesis.co.nz>
Date:   Thu May 3 14:21:28 2018 +1200

    mtd: rawnand: marvell: pass ms delay to wait_op
    
    commit b76401fc4ba720f0f38f7b1f9d54d5c2308bc18d upstream.
    
    marvell_nfc_wait_op() expects the delay to be expressed in milliseconds
    but nand_sdr_timings uses picoseconds. Use PSEC_TO_MSEC when passing
    tPROG_max to marvell_nfc_wait_op().
    
    Fixes: 02f26ecf8c772 ("mtd: nand: add reworked Marvell NAND controller driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37be6761ece7db918969b55a647d5265d0ae5cb0
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed May 9 14:43:43 2018 +0200

    can: hi311x: Work around TX complete interrupt erratum
    
    commit 32bee8f48fa048a3198109de50e51c092507ff52 upstream.
    
    When sending packets as fast as possible using "cangen -g 0 -i -x", the
    HI-3110 occasionally latches the interrupt pin high on completion of a
    packet, but doesn't set the TXCPLT bit in the INTF register.  The INTF
    register contains 0x00 as if no interrupt has occurred.  Even waiting
    for a few milliseconds after the interrupt doesn't help.
    
    Work around this apparent erratum by instead checking the TXMTY bit in
    the STATF register ("TX FIFO empty").  We know that we've queued up a
    packet for transmission if priv->tx_len is nonzero.  If the TX FIFO is
    empty, transmission of that packet must have completed.
    
    Note that this is congruent with our handling of received packets, which
    likewise gleans from the STATF register whether a packet is waiting in
    the RX FIFO, instead of looking at the INTF register.
    
    Cc: Mathias Duckeck <m.duckeck@kunbus.de>
    Cc: Akshay Bhat <akshay.bhat@timesys.com>
    Cc: Casey Fitzpatrick <casey.fitzpatrick@timesys.com>
    Cc: stable@vger.kernel.org # v4.12+
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Acked-by: Akshay Bhat <akshay.bhat@timesys.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3cda1f6aed6463af0bbb0a3eca9815bd9f834cef
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed May 9 14:38:43 2018 +0200

    can: hi311x: Acquire SPI lock on ->do_get_berr_counter
    
    commit 5cec9425b41dcf834c3d48776900d6acb7e96f38 upstream.
    
    hi3110_get_berr_counter() may run concurrently to the rest of the driver
    but neglects to acquire the lock protecting access to the SPI device.
    As a result, it and the rest of the driver may clobber each other's tx
    and rx buffers.
    
    We became aware of this issue because transmission of packets with
    "cangen -g 0 -i -x" frequently hung.  It turns out that agetty executes
    ->do_get_berr_counter every few seconds via the following call stack:
    
        CPU: 2 PID: 1605 Comm: agetty
        [<7f3f7500>] (hi3110_get_berr_counter [hi311x])
        [<7f130204>] (can_fill_info [can_dev])
        [<80693bc0>] (rtnl_fill_ifinfo)
        [<806949ec>] (rtnl_dump_ifinfo)
        [<806b4834>] (netlink_dump)
        [<806b4bc8>] (netlink_recvmsg)
        [<8065f180>] (sock_recvmsg)
        [<80660f90>] (___sys_recvmsg)
        [<80661e7c>] (__sys_recvmsg)
        [<80661ec0>] (SyS_recvmsg)
        [<80108b20>] (ret_fast_syscall+0x0/0x1c)
    
    agetty listens to netlink messages in order to update the login prompt
    when IP addresses change (if /etc/issue contains \4 or \6 escape codes):
    https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/commit/?id=e36deb6424e8
    
    It's a useful feature, though it seems questionable that it causes CAN
    bit error statistics to be queried.
    
    Be that as it may, if hi3110_get_berr_counter() is invoked while a frame
    is sent by hi3110_hw_tx(), bogus SPI transfers like the following may
    occur:
    
        => 12 00             (hi3110_get_berr_counter() wanted to transmit
                              EC 00 to query the transmit error counter,
                              but the first byte was overwritten by
                              hi3110_hw_tx_frame())
    
        => EA 00 3E 80 01 FB (hi3110_hw_tx_frame() wanted to transmit a
                              frame, but the first byte was overwritten by
                              hi3110_get_berr_counter() because it wanted
                              to query the receive error counter)
    
    This sequence hangs the transmission because the driver believes it has
    sent a frame and waits for the interrupt signaling completion, but in
    reality the chip has never sent away the frame since the commands it
    received were malformed.
    
    Fix by acquiring the SPI lock in hi3110_get_berr_counter().
    
    I've scrutinized the entire driver for further unlocked SPI accesses but
    found no others.
    
    Cc: Mathias Duckeck <m.duckeck@kunbus.de>
    Cc: Akshay Bhat <akshay.bhat@timesys.com>
    Cc: Casey Fitzpatrick <casey.fitzpatrick@timesys.com>
    Cc: Stef Walter <stefw@redhat.com>
    Cc: Karel Zak <kzak@redhat.com>
    Cc: stable@vger.kernel.org # v4.12+
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Reviewed-by: Akshay Bhat <akshay.bhat@timesys.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7828ab9addf0e9cbca3780165203d85403d18103
Author: Jimmy Assarsson <extja@kvaser.com>
Date:   Fri Apr 20 14:38:46 2018 +0200

    can: kvaser_usb: Increase correct stats counter in kvaser_usb_rx_can_msg()
    
    commit 6ee00865ffe4e8c8ba4a68d26db53c7ec09bbb89 upstream.
    
    Increase rx_dropped, if alloc_can_skb() fails, not tx_dropped.
    
    Signed-off-by: Jimmy Assarsson <extja@kvaser.com>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f28874ccb2ff5b909d9b0c3a4736edf7e856cdf
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Wed Apr 25 16:50:39 2018 +0200

    can: flexcan: fix endianess detection
    
    commit 0e030a373df3b8792b8991740fc31fe0629c6e58 upstream.
    
    In commit 88462d2a7830 ("can: flexcan: Remodel FlexCAN register r/w APIs
    for big endian FlexCAN controllers.") the following logic was
    implemented:
    
            if the dt property "big-endian" is given or
               the device is compatible to "fsl,p1010-flexcan":
                    use big-endian mode;
            else
                    use little-endian mode;
    
    This relies on commit d50f4630c2e1 ("arm: dts: Remove p1010-flexcan
    compatible from imx series dts") which was applied a few commits later.
    Without this commit (or an old device tree used for booting a new
    kernel) the flexcan devices on i.MX25, i.MX28, i.MX35 and i.MX53 match
    the 'the device is compatible to "fsl,p1010-flexcan"' test and so are
    switched erroneously to big endian mode.
    
    Instead of the check above put a quirk in devtype data and rely on
    of_match_device yielding the most compatible match
    
    Fixes: 88462d2a7830 ("can: flexcan: Remodel FlexCAN register r/w APIs for big endian FlexCAN controllers.")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Tested-by: Gavin Schenk <g.schenk@eckelmann.de>
    Cc: linux-stable <stable@vger.kernel.org> # >= v4.16
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c205ef7667cecc48dfa4e1fe3f4701666717846
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Thu May 3 16:10:09 2018 +0200

    ceph: fix rsize/wsize capping in ceph_direct_read_write()
    
    commit 3a15b38fd2efc1d648cb33186bf71e9138c93491 upstream.
    
    rsize/wsize cap should be applied before ceph_osdc_new_request() is
    called.  Otherwise, if the size is limited by the cap instead of the
    stripe unit, ceph_osdc_new_request() would setup an extent op that is
    bigger than what dio_get_pages_alloc() would pin and add to the page
    vector, triggering asserts in the messenger.
    
    Cc: stable@vger.kernel.org
    Fixes: 95cca2b44e54 ("ceph: limit osd write size")
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 092d4bd6bdf55899d238737d6870adef6f225211
Author: David Rientjes <rientjes@google.com>
Date:   Fri May 11 16:02:04 2018 -0700

    mm, oom: fix concurrent munlock and oom reaper unmap, v3
    
    commit 27ae357fa82be5ab73b2ef8d39dcb8ca2563483a upstream.
    
    Since exit_mmap() is done without the protection of mm->mmap_sem, it is
    possible for the oom reaper to concurrently operate on an mm until
    MMF_OOM_SKIP is set.
    
    This allows munlock_vma_pages_all() to concurrently run while the oom
    reaper is operating on a vma.  Since munlock_vma_pages_range() depends
    on clearing VM_LOCKED from vm_flags before actually doing the munlock to
    determine if any other vmas are locking the same memory, the check for
    VM_LOCKED in the oom reaper is racy.
    
    This is especially noticeable on architectures such as powerpc where
    clearing a huge pmd requires serialize_against_pte_lookup().  If the pmd
    is zapped by the oom reaper during follow_page_mask() after the check
    for pmd_none() is bypassed, this ends up deferencing a NULL ptl or a
    kernel oops.
    
    Fix this by manually freeing all possible memory from the mm before
    doing the munlock and then setting MMF_OOM_SKIP.  The oom reaper can not
    run on the mm anymore so the munlock is safe to do in exit_mmap().  It
    also matches the logic that the oom reaper currently uses for
    determining when to set MMF_OOM_SKIP itself, so there's no new risk of
    excessive oom killing.
    
    This issue fixes CVE-2018-1000200.
    
    Link: http://lkml.kernel.org/r/alpine.DEB.2.21.1804241526320.238665@chino.kir.corp.google.com
    Fixes: 212925802454 ("mm: oom: let oom_reap_task and exit_mmap run concurrently")
    Signed-off-by: David Rientjes <rientjes@google.com>
    Suggested-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: <stable@vger.kernel.org>    [4.14+]
    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 707cd0193a3d4b288c74d1ad050648e29db7fa99
Author: Pavel Tatashin <pasha.tatashin@oracle.com>
Date:   Fri May 11 16:01:50 2018 -0700

    mm: sections are not offlined during memory hotremove
    
    commit 27227c733852f71008e9bf165950bb2edaed3a90 upstream.
    
    Memory hotplug and hotremove operate with per-block granularity.  If the
    machine has a large amount of memory (more than 64G), the size of a
    memory block can span multiple sections.  By mistake, during hotremove
    we set only the first section to offline state.
    
    The bug was discovered because kernel selftest started to fail:
      https://lkml.kernel.org/r/20180423011247.GK5563@yexl-desktop
    
    After commit, "mm/memory_hotplug: optimize probe routine".  But, the bug
    is older than this commit.  In this optimization we also added a check
    for sections to be in a proper state during hotplug operation.
    
    Link: http://lkml.kernel.org/r/20180427145257.15222-1-pasha.tatashin@oracle.com
    Fixes: 2d070eab2e82 ("mm: consider zone which is not fully populated to have holes")
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Steven Sistare <steven.sistare@oracle.com>
    Cc: Daniel Jordan <daniel.m.jordan@oracle.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.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 53f7f2d2e6a2f9a1c9068d31afad2d2195029e39
Author: Vitaly Wool <vitalywool@gmail.com>
Date:   Fri May 11 16:01:46 2018 -0700

    z3fold: fix reclaim lock-ups
    
    commit 6098d7e136692f9c6e23ae362c62ec822343e4d5 upstream.
    
    Do not try to optimize in-page object layout while the page is under
    reclaim.  This fixes lock-ups on reclaim and improves reclaim
    performance at the same time.
    
    [akpm@linux-foundation.org: coding-style fixes]
    Link: http://lkml.kernel.org/r/20180430125800.444cae9706489f412ad12621@gmail.com
    Signed-off-by: Vitaly Wool <vitaly.vul@sony.com>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Cc: <Oleksiy.Avramchenko@sony.com>
    Cc: Matthew Wilcox <mawilcox@microsoft.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 e0651dd4ba8b85731efe0cd2f8b228cb83f2d9ca
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed May 9 11:59:32 2018 -0400

    tracing: Fix regex_match_front() to not over compare the test string
    
    commit dc432c3d7f9bceb3de6f5b44fb9c657c9810ed6d upstream.
    
    The regex match function regex_match_front() in the tracing filter logic,
    was fixed to test just the pattern length from testing the entire test
    string. That is, it went from strncmp(str, r->pattern, len) to
    strcmp(str, r->pattern, r->len).
    
    The issue is that str is not guaranteed to be nul terminated, and if r->len
    is greater than the length of str, it can access more memory than is
    allocated.
    
    The solution is to add a simple test if (len < r->len) return 0.
    
    Cc: stable@vger.kernel.org
    Fixes: 285caad415f45 ("tracing/filters: Fix MATCH_FRONT_ONLY filter matching")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 827ef297771746fd5e4923001108e38a7c9fb515
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Apr 17 18:32:26 2018 -0400

    dm integrity: use kvfree for kvmalloc'd memory
    
    commit fc8cec113904a47396bf0a1afc62920d66319d36 upstream.
    
    Use kvfree instead of kfree because the array is allocated with kvmalloc.
    
    Fixes: 7eada909bfd7a ("dm: add integrity target")
    Cc: stable@vger.kernel.org # v4.12+
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 159de287e3ccf24a18894bd3eb10177a7db2db74
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Apr 26 22:32:21 2018 +0200

    libata: Apply NOLPM quirk for SanDisk SD7UB3Q*G1001 SSDs
    
    commit 184add2ca23ce5edcac0ab9c3b9be13f91e7b567 upstream.
    
    Richard Jones has reported that using med_power_with_dipm on a T450s
    with a Sandisk SD7UB3Q256G1001 SSD (firmware version X2180501) is
    causing the machine to hang.
    
    Switching the LPM to max_performance fixes this, so it seems that
    this Sandisk SSD does not handle LPM well.
    
    Note in the past there have been bug-reports about the following
    Sandisk models not working with min_power, so we may need to extend
    the quirk list in the future: name - firmware
    Sandisk SD6SB2M512G1022I   - X210400
    Sandisk SD6PP4M-256G-1006  - A200906
    
    Cc: stable@vger.kernel.org
    Cc: Richard W.M. Jones <rjones@redhat.com>
    Reported-and-tested-by: Richard W.M. Jones <rjones@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb4401e4ac3eaea3e5e592b62394c6cacb1f429a
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Apr 26 09:31:52 2018 +0200

    rfkill: gpio: fix memory leak in probe error path
    
    commit 4bf01ca21e2e0e4561d1a03c48c3d740418702db upstream.
    
    Make sure to free the rfkill device in case registration fails during
    probe.
    
    Fixes: 5e7ca3937fbe ("net: rfkill: gpio: convert to resource managed allocation")
    Cc: stable <stable@vger.kernel.org>     # 3.13
    Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16b6c4d490d428036491e7599e6f7204fd79b3c0
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Mon Apr 16 13:17:53 2018 +0200

    gpio: fix error path in lineevent_create
    
    commit f001cc351ad3309ec8736c374e90e5a4bc472d41 upstream.
    
    If gpiod_request() fails the cleanup must not call gpiod_free().
    
    Cc: stable@vger.kernel.org
    Fixes: 61f922db7221 ("gpio: userspace ABI for reading GPIO line events")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5faab0a2f35880c6b4b840d5f2e1b8dbd35467a
Author: Govert Overgaauw <govert.overgaauw@prodrive-technologies.com>
Date:   Fri Apr 6 14:41:35 2018 +0200

    gpio: fix aspeed_gpio unmask irq
    
    commit f241632fd087d3d9fbd5450f4d8c8604badd8348 upstream.
    
    The unmask function disables all interrupts in a bank when unmasking an
    interrupt. Only disable the given interrupt.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Govert Overgaauw <govert.overgaauw@prodrive-technologies.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ab26f26a292728a251d4201374aa35862268037
Author: Timur Tabi <timur@codeaurora.org>
Date:   Thu Mar 29 13:29:12 2018 -0500

    gpioib: do not free unrequested descriptors
    
    commit ab3dbcf78f60f46d6a0ad63b1f4b690b7a427140 upstream.
    
    If the main loop in linehandle_create() encounters an error, it
    unwinds completely by freeing all previously requested GPIO
    descriptors.  However, if the error occurs in the beginning of
    the loop before that GPIO is requested, then the exit code
    attempts to free a null descriptor.  If extrachecks is enabled,
    gpiod_free() triggers a WARN_ON.
    
    Instead, keep a separate count of legitimate GPIOs so that only
    those are freed.
    
    Cc: stable@vger.kernel.org
    Fixes: d7c51b47ac11 ("gpio: userspace ABI for reading/writing GPIO lines")
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Timur Tabi <timur@codeaurora.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c2117b6ee880d70dbed1845e187225303317928
Author: Jann Horn <jannh@google.com>
Date:   Fri May 11 02:19:01 2018 +0200

    compat: fix 4-byte infoleak via uninitialized struct field
    
    commit 0a0b98734479aa5b3c671d5190e86273372cab95 upstream.
    
    Commit 3a4d44b61625 ("ntp: Move adjtimex related compat syscalls to
    native counterparts") removed the memset() in compat_get_timex().  Since
    then, the compat adjtimex syscall can invoke do_adjtimex() with an
    uninitialized ->tai.
    
    If do_adjtimex() doesn't write to ->tai (e.g.  because the arguments are
    invalid), compat_put_timex() then copies the uninitialized ->tai field
    to userspace.
    
    Fix it by adding the memset() back.
    
    Fixes: 3a4d44b61625 ("ntp: Move adjtimex related compat syscalls to native counterparts")
    Signed-off-by: Jann Horn <jannh@google.com>
    Acked-by: Kees Cook <keescook@chromium.org>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c38ba2d8ea6a40451056d14c9baac00954beb82f
Author: Jan Kara <jack@suse.cz>
Date:   Thu May 3 18:26:26 2018 +0200

    bdi: Fix oops in wb_workfn()
    
    commit b8b784958eccbf8f51ebeee65282ca3fd59ea391 upstream.
    
    Syzbot has reported that it can hit a NULL pointer dereference in
    wb_workfn() due to wb->bdi->dev being NULL. This indicates that
    wb_workfn() was called for an already unregistered bdi which should not
    happen as wb_shutdown() called from bdi_unregister() should make sure
    all pending writeback works are completed before bdi is unregistered.
    Except that wb_workfn() itself can requeue the work with:
    
            mod_delayed_work(bdi_wq, &wb->dwork, 0);
    
    and if this happens while wb_shutdown() is waiting in:
    
            flush_delayed_work(&wb->dwork);
    
    the dwork can get executed after wb_shutdown() has finished and
    bdi_unregister() has cleared wb->bdi->dev.
    
    Make wb_workfn() use wakeup_wb() for requeueing the work which takes all
    the necessary precautions against racing with bdi unregistration.
    
    CC: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    CC: Tejun Heo <tj@kernel.org>
    Fixes: 839a8e8660b6777e7fe4e80af1a048aebe2b5977
    Reported-by: syzbot <syzbot+9873874c735f2892e7e9@syzkaller.appspotmail.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c25ed3941e2d8ba90509be9e666059e4484b727e
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Mon Apr 23 11:21:03 2018 +0900

    bdi: Fix use after free bug in debugfs_remove()
    
    commit f53823c18131e755905b4f654196fd2cc3953f6e upstream.
    
    syzbot is reporting use after free bug in debugfs_remove() [1].
    
    This is because fault injection made memory allocation for
    debugfs_create_file() from bdi_debug_register() from bdi_register_va()
    fail and continued with setting WB_registered. But when debugfs_remove()
    is called from debugfs_remove(bdi->debug_dir) from bdi_debug_unregister()
     from bdi_unregister() from release_bdi() because WB_registered was set
    by bdi_register_va(), IS_ERR_OR_NULL(bdi->debug_dir) == false despite
    debugfs_remove(bdi->debug_dir) was already called from bdi_register_va().
    
    Fix this by making IS_ERR_OR_NULL(bdi->debug_dir) == true.
    
    [1] https://syzkaller.appspot.com/bug?id=5ab4efd91a96dcea9b68104f159adf4af2a6dfc1
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reported-by: syzbot <syzbot+049cb4ae097049dac137@syzkaller.appspotmail.com>
    Fixes: 97f07697932e6faf ("bdi: convert bdi_debug_register to int")
    Cc: weiping zhang <zhangweiping@didichuxing.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c35c8733243fa478a457fd3a1d3dbb93e046c29
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Wed May 2 07:07:55 2018 +0900

    bdi: wake up concurrent wb_shutdown() callers.
    
    commit 8236b0ae31c837d2b3a2565c5f8d77f637e824cc upstream.
    
    syzbot is reporting hung tasks at wait_on_bit(WB_shutting_down) in
    wb_shutdown() [1]. This seems to be because commit 5318ce7d46866e1d ("bdi:
    Shutdown writeback on all cgwbs in cgwb_bdi_destroy()") forgot to call
    wake_up_bit(WB_shutting_down) after clear_bit(WB_shutting_down).
    
    Introduce a helper function clear_and_wake_up_bit() and use it, in order
    to avoid similar errors in future.
    
    [1] https://syzkaller.appspot.com/bug?id=b297474817af98d5796bc544e1bb806fc3da0e5e
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reported-by: syzbot <syzbot+c0cf869505e03bdf1a24@syzkaller.appspotmail.com>
    Fixes: 5318ce7d46866e1d ("bdi: Shutdown writeback on all cgwbs in cgwb_bdi_destroy()")
    Cc: Tejun Heo <tj@kernel.org>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1007acaa5b7e6d18fdc6443be7fa46837f3a6b1
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Apr 29 18:55:20 2018 -0700

    tcp: fix TCP_REPAIR_QUEUE bound checking
    
    commit bf2acc943a45d2b2e8a9f1a5ddff6b6e43cc69d9 upstream.
    
    syzbot is able to produce a nasty WARN_ON() in tcp_verify_left_out()
    with following C-repro :
    
    socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
    setsockopt(3, SOL_TCP, TCP_REPAIR, [1], 4) = 0
    setsockopt(3, SOL_TCP, TCP_REPAIR_QUEUE, [-1], 4) = 0
    bind(3, {sa_family=AF_INET, sin_port=htons(20002), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
    sendto(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
            1242, MSG_FASTOPEN, {sa_family=AF_INET, sin_port=htons(20002), sin_addr=inet_addr("127.0.0.1")}, 16) = 1242
    setsockopt(3, SOL_TCP, TCP_REPAIR_WINDOW, "\4\0\0@+\205\0\0\377\377\0\0\377\377\377\177\0\0\0\0", 20) = 0
    writev(3, [{"\270", 1}], 1)             = 1
    setsockopt(3, SOL_TCP, TCP_REPAIR_OPTIONS, "\10\0\0\0\0\0\0\0\0\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 386) = 0
    writev(3, [{"\210v\r[\226\320t\231qwQ\204\264l\254\t\1\20\245\214p\350H\223\254;\\\37\345\307p$"..., 3144}], 1) = 3144
    
    The 3rd system call looks odd :
    setsockopt(3, SOL_TCP, TCP_REPAIR_QUEUE, [-1], 4) = 0
    
    This patch makes sure bound checking is using an unsigned compare.
    
    Fixes: ee9952831cfd ("tcp: Initial repair mode")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Pavel Emelyanov <xemul@parallels.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1de578f80c66cabccf0b6d24d33ec1929044674
Author: Alexander Popov <alex.popov@linux.com>
Date:   Thu Apr 19 15:29:22 2018 +0300

    i2c: dev: prevent ZERO_SIZE_PTR deref in i2cdev_ioctl_rdwr()
    
    commit 23a27722b5292ef0b27403c87a109feea8296a5c upstream.
    
    i2cdev_ioctl_rdwr() allocates i2c_msg.buf using memdup_user(), which
    returns ZERO_SIZE_PTR if i2c_msg.len is zero.
    
    Currently i2cdev_ioctl_rdwr() always dereferences the buf pointer in case
    of I2C_M_RD | I2C_M_RECV_LEN transfer. That causes a kernel oops in
    case of zero len.
    
    Let's check the len against zero before dereferencing buf pointer.
    
    This issue was triggered by syzkaller.
    
    Signed-off-by: Alexander Popov <alex.popov@linux.com>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    [wsa: use '< 1' instead of '!' for easier readability]
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f289a74702070a54ddda0dae589cf7db80e0a038
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Sun Apr 15 11:23:52 2018 +0200

    perf: Remove superfluous allocation error check
    
    commit bfb3d7b8b906b66551424d7636182126e1d134c8 upstream.
    
    If the get_callchain_buffers fails to allocate the buffer it will
    decrease the nr_callchain_events right away.
    
    There's no point of checking the allocation error for
    nr_callchain_events > 1. Removing that check.
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: syzkaller-bugs@googlegroups.com
    Cc: x86@kernel.org
    Link: http://lkml.kernel.org/r/20180415092352.12403-3-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df2d8c39a894d86a50e61e30310e61413fc10f55
Author: Michal Hocko <mhocko@suse.com>
Date:   Tue Apr 10 16:29:52 2018 -0700

    memcg: fix per_node_info cleanup
    
    commit 4eaf431f6f71bbed40a4c733ffe93a7e8cedf9d9 upstream.
    
    syzbot has triggered a NULL ptr dereference when allocation fault
    injection enforces a failure and alloc_mem_cgroup_per_node_info
    initializes memcg->nodeinfo only half way through.
    
    But __mem_cgroup_free still tries to free all per-node data and
    dereferences pn->lruvec_stat_cpu unconditioanlly even if the specific
    per-node data hasn't been initialized.
    
    The bug is quite unlikely to hit because small allocations do not fail
    and we would need quite some numa nodes to make struct
    mem_cgroup_per_node large enough to cross the costly order.
    
    Link: http://lkml.kernel.org/r/20180406100906.17790-1-mhocko@kernel.org
    Reported-by: syzbot+8a5de3cce7cdc70e9ebe@syzkaller.appspotmail.com
    Fixes: 00f3ca2c2d66 ("mm: memcontrol: per-lruvec stats infrastructure")
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Johannes Weiner <hannes@cmpxchg.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 d3c6a0c203b564ad77246d00b697b771e3a542c6
Author: Yonghong Song <yhs@fb.com>
Date:   Tue Apr 10 09:37:32 2018 -0700

    bpf/tracing: fix a deadlock in perf_event_detach_bpf_prog
    
    commit 3a38bb98d9abdc3856f26b5ed4332803065cd7cf upstream.
    
    syzbot reported a possible deadlock in perf_event_detach_bpf_prog.
    The error details:
      ======================================================
      WARNING: possible circular locking dependency detected
      4.16.0-rc7+ #3 Not tainted
      ------------------------------------------------------
      syz-executor7/24531 is trying to acquire lock:
       (bpf_event_mutex){+.+.}, at: [<000000008a849b07>] perf_event_detach_bpf_prog+0x92/0x3d0 kernel/trace/bpf_trace.c:854
    
      but task is already holding lock:
       (&mm->mmap_sem){++++}, at: [<0000000038768f87>] vm_mmap_pgoff+0x198/0x280 mm/util.c:353
    
      which lock already depends on the new lock.
    
      the existing dependency chain (in reverse order) is:
    
      -> #1 (&mm->mmap_sem){++++}:
           __might_fault+0x13a/0x1d0 mm/memory.c:4571
           _copy_to_user+0x2c/0xc0 lib/usercopy.c:25
           copy_to_user include/linux/uaccess.h:155 [inline]
           bpf_prog_array_copy_info+0xf2/0x1c0 kernel/bpf/core.c:1694
           perf_event_query_prog_array+0x1c7/0x2c0 kernel/trace/bpf_trace.c:891
           _perf_ioctl kernel/events/core.c:4750 [inline]
           perf_ioctl+0x3e1/0x1480 kernel/events/core.c:4770
           vfs_ioctl fs/ioctl.c:46 [inline]
           do_vfs_ioctl+0x1b1/0x1520 fs/ioctl.c:686
           SYSC_ioctl fs/ioctl.c:701 [inline]
           SyS_ioctl+0x8f/0xc0 fs/ioctl.c:692
           do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
           entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
      -> #0 (bpf_event_mutex){+.+.}:
           lock_acquire+0x1d5/0x580 kernel/locking/lockdep.c:3920
           __mutex_lock_common kernel/locking/mutex.c:756 [inline]
           __mutex_lock+0x16f/0x1a80 kernel/locking/mutex.c:893
           mutex_lock_nested+0x16/0x20 kernel/locking/mutex.c:908
           perf_event_detach_bpf_prog+0x92/0x3d0 kernel/trace/bpf_trace.c:854
           perf_event_free_bpf_prog kernel/events/core.c:8147 [inline]
           _free_event+0xbdb/0x10f0 kernel/events/core.c:4116
           put_event+0x24/0x30 kernel/events/core.c:4204
           perf_mmap_close+0x60d/0x1010 kernel/events/core.c:5172
           remove_vma+0xb4/0x1b0 mm/mmap.c:172
           remove_vma_list mm/mmap.c:2490 [inline]
           do_munmap+0x82a/0xdf0 mm/mmap.c:2731
           mmap_region+0x59e/0x15a0 mm/mmap.c:1646
           do_mmap+0x6c0/0xe00 mm/mmap.c:1483
           do_mmap_pgoff include/linux/mm.h:2223 [inline]
           vm_mmap_pgoff+0x1de/0x280 mm/util.c:355
           SYSC_mmap_pgoff mm/mmap.c:1533 [inline]
           SyS_mmap_pgoff+0x462/0x5f0 mm/mmap.c:1491
           SYSC_mmap arch/x86/kernel/sys_x86_64.c:100 [inline]
           SyS_mmap+0x16/0x20 arch/x86/kernel/sys_x86_64.c:91
           do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
           entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
      other info that might help us debug this:
    
       Possible unsafe locking scenario:
    
             CPU0                    CPU1
             ----                    ----
        lock(&mm->mmap_sem);
                                     lock(bpf_event_mutex);
                                     lock(&mm->mmap_sem);
        lock(bpf_event_mutex);
    
       *** DEADLOCK ***
      ======================================================
    
    The bug is introduced by Commit f371b304f12e ("bpf/tracing: allow
    user space to query prog array on the same tp") where copy_to_user,
    which requires mm->mmap_sem, is called inside bpf_event_mutex lock.
    At the same time, during perf_event file descriptor close,
    mm->mmap_sem is held first and then subsequent
    perf_event_detach_bpf_prog needs bpf_event_mutex lock.
    Such a senario caused a deadlock.
    
    As suggested by Daniel, moving copy_to_user out of the
    bpf_event_mutex lock should fix the problem.
    
    Fixes: f371b304f12e ("bpf/tracing: allow user space to query prog array on the same tp")
    Reported-by: syzbot+dc5ca0e4c9bfafaf2bae@syzkaller.appspotmail.com
    Signed-off-by: Yonghong Song <yhs@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 358029eec4637b86a56a82a3f8db7f749caad34d
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Apr 9 06:43:27 2018 -0700

    inetpeer: fix uninit-value in inet_getpeer
    
    commit b6a37e5e25414df4b8e9140a5c6f5ee0ec6f3b90 upstream.
    
    syzbot/KMSAN reported that p->dtime was read while it was
    not yet initialized in :
    
            delta = (__u32)jiffies - p->dtime;
            if (delta < ttl || !refcount_dec_if_one(&p->refcnt))
                    gc_stack[i] = NULL;
    
    This is a false positive, because the inetpeer wont be erased
    from rb-tree if the refcount_dec_if_one(&p->refcnt) does not
    succeed. And this wont happen before first inet_putpeer() call
    for this inetpeer has been done, and ->dtime field is written
    exactly before the refcount_dec_and_test(&p->refcnt).
    
    The KMSAN report was :
    
    BUG: KMSAN: uninit-value in inet_peer_gc net/ipv4/inetpeer.c:163 [inline]
    BUG: KMSAN: uninit-value in inet_getpeer+0x1567/0x1e70 net/ipv4/inetpeer.c:228
    CPU: 0 PID: 9494 Comm: syz-executor5 Not tainted 4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     inet_peer_gc net/ipv4/inetpeer.c:163 [inline]
     inet_getpeer+0x1567/0x1e70 net/ipv4/inetpeer.c:228
     inet_getpeer_v4 include/net/inetpeer.h:110 [inline]
     icmpv4_xrlim_allow net/ipv4/icmp.c:330 [inline]
     icmp_send+0x2b44/0x3050 net/ipv4/icmp.c:725
     ip_options_compile+0x237c/0x29f0 net/ipv4/ip_options.c:472
     ip_rcv_options net/ipv4/ip_input.c:284 [inline]
     ip_rcv_finish+0xda8/0x16d0 net/ipv4/ip_input.c:365
     NF_HOOK include/linux/netfilter.h:288 [inline]
     ip_rcv+0x119d/0x16f0 net/ipv4/ip_input.c:493
     __netif_receive_skb_core+0x47cf/0x4a80 net/core/dev.c:4562
     __netif_receive_skb net/core/dev.c:4627 [inline]
     netif_receive_skb_internal+0x49d/0x630 net/core/dev.c:4701
     netif_receive_skb+0x230/0x240 net/core/dev.c:4725
     tun_rx_batched drivers/net/tun.c:1555 [inline]
     tun_get_user+0x6d88/0x7580 drivers/net/tun.c:1962
     tun_chr_write_iter+0x1d4/0x330 drivers/net/tun.c:1990
     do_iter_readv_writev+0x7bb/0x970 include/linux/fs.h:1776
     do_iter_write+0x30d/0xd40 fs/read_write.c:932
     vfs_writev fs/read_write.c:977 [inline]
     do_writev+0x3c9/0x830 fs/read_write.c:1012
     SYSC_writev+0x9b/0xb0 fs/read_write.c:1085
     SyS_writev+0x56/0x80 fs/read_write.c:1082
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x455111
    RSP: 002b:00007fae0365cba0 EFLAGS: 00000293 ORIG_RAX: 0000000000000014
    RAX: ffffffffffffffda RBX: 000000000000002e RCX: 0000000000455111
    RDX: 0000000000000001 RSI: 00007fae0365cbf0 RDI: 00000000000000fc
    RBP: 0000000020000040 R08: 00000000000000fc R09: 0000000000000000
    R10: 000000000000002e R11: 0000000000000293 R12: 00000000ffffffff
    R13: 0000000000000658 R14: 00000000006fc8e0 R15: 0000000000000000
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:188
     kmsan_kmalloc+0x94/0x100 mm/kmsan/kmsan.c:314
     kmem_cache_alloc+0xaab/0xb90 mm/slub.c:2756
     inet_getpeer+0xed8/0x1e70 net/ipv4/inetpeer.c:210
     inet_getpeer_v4 include/net/inetpeer.h:110 [inline]
     ip4_frag_init+0x4d1/0x740 net/ipv4/ip_fragment.c:153
     inet_frag_alloc net/ipv4/inet_fragment.c:369 [inline]
     inet_frag_create net/ipv4/inet_fragment.c:385 [inline]
     inet_frag_find+0x7da/0x1610 net/ipv4/inet_fragment.c:418
     ip_find net/ipv4/ip_fragment.c:275 [inline]
     ip_defrag+0x448/0x67a0 net/ipv4/ip_fragment.c:676
     ip_check_defrag+0x775/0xda0 net/ipv4/ip_fragment.c:724
     packet_rcv_fanout+0x2a8/0x8d0 net/packet/af_packet.c:1447
     deliver_skb net/core/dev.c:1897 [inline]
     deliver_ptype_list_skb net/core/dev.c:1912 [inline]
     __netif_receive_skb_core+0x314a/0x4a80 net/core/dev.c:4545
     __netif_receive_skb net/core/dev.c:4627 [inline]
     netif_receive_skb_internal+0x49d/0x630 net/core/dev.c:4701
     netif_receive_skb+0x230/0x240 net/core/dev.c:4725
     tun_rx_batched drivers/net/tun.c:1555 [inline]
     tun_get_user+0x6d88/0x7580 drivers/net/tun.c:1962
     tun_chr_write_iter+0x1d4/0x330 drivers/net/tun.c:1990
     do_iter_readv_writev+0x7bb/0x970 include/linux/fs.h:1776
     do_iter_write+0x30d/0xd40 fs/read_write.c:932
     vfs_writev fs/read_write.c:977 [inline]
     do_writev+0x3c9/0x830 fs/read_write.c:1012
     SYSC_writev+0x9b/0xb0 fs/read_write.c:1085
     SyS_writev+0x56/0x80 fs/read_write.c:1082
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    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 6996a998c669b3a81cd02715affe21801defff92
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:43 2018 -0700

    soreuseport: initialise timewait reuseport field
    
    commit 3099a52918937ab86ec47038ad80d377ba16c531 upstream.
    
    syzbot reported an uninit-value in inet_csk_bind_conflict() [1]
    
    It turns out we never propagated sk->sk_reuseport into timewait socket.
    
    [1]
    BUG: KMSAN: uninit-value in inet_csk_bind_conflict+0x5f9/0x990 net/ipv4/inet_connection_sock.c:151
    CPU: 1 PID: 3589 Comm: syzkaller008242 Not tainted 4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     inet_csk_bind_conflict+0x5f9/0x990 net/ipv4/inet_connection_sock.c:151
     inet_csk_get_port+0x1d28/0x1e40 net/ipv4/inet_connection_sock.c:320
     inet6_bind+0x121c/0x1820 net/ipv6/af_inet6.c:399
     SYSC_bind+0x3f2/0x4b0 net/socket.c:1474
     SyS_bind+0x54/0x80 net/socket.c:1460
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x4416e9
    RSP: 002b:00007ffce6d15c88 EFLAGS: 00000217 ORIG_RAX: 0000000000000031
    RAX: ffffffffffffffda RBX: 0100000000000000 RCX: 00000000004416e9
    RDX: 000000000000001c RSI: 0000000020402000 RDI: 0000000000000004
    RBP: 0000000000000000 R08: 00000000e6d15e08 R09: 00000000e6d15e08
    R10: 0000000000000004 R11: 0000000000000217 R12: 0000000000009478
    R13: 00000000006cd448 R14: 0000000000000000 R15: 0000000000000000
    
    Uninit was stored to memory at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_save_stack mm/kmsan/kmsan.c:293 [inline]
     kmsan_internal_chain_origin+0x12b/0x210 mm/kmsan/kmsan.c:684
     __msan_chain_origin+0x69/0xc0 mm/kmsan/kmsan_instr.c:521
     tcp_time_wait+0xf17/0xf50 net/ipv4/tcp_minisocks.c:283
     tcp_rcv_state_process+0xebe/0x6490 net/ipv4/tcp_input.c:6003
     tcp_v6_do_rcv+0x11dd/0x1d90 net/ipv6/tcp_ipv6.c:1331
     sk_backlog_rcv include/net/sock.h:908 [inline]
     __release_sock+0x2d6/0x680 net/core/sock.c:2271
     release_sock+0x97/0x2a0 net/core/sock.c:2786
     tcp_close+0x277/0x18f0 net/ipv4/tcp.c:2269
     inet_release+0x240/0x2a0 net/ipv4/af_inet.c:427
     inet6_release+0xaf/0x100 net/ipv6/af_inet6.c:435
     sock_release net/socket.c:595 [inline]
     sock_close+0xe0/0x300 net/socket.c:1149
     __fput+0x49e/0xa10 fs/file_table.c:209
     ____fput+0x37/0x40 fs/file_table.c:243
     task_work_run+0x243/0x2c0 kernel/task_work.c:113
     exit_task_work include/linux/task_work.h:22 [inline]
     do_exit+0x10e1/0x38d0 kernel/exit.c:867
     do_group_exit+0x1a0/0x360 kernel/exit.c:970
     SYSC_exit_group+0x21/0x30 kernel/exit.c:981
     SyS_exit_group+0x25/0x30 kernel/exit.c:979
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    Uninit was stored to memory at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_save_stack mm/kmsan/kmsan.c:293 [inline]
     kmsan_internal_chain_origin+0x12b/0x210 mm/kmsan/kmsan.c:684
     __msan_chain_origin+0x69/0xc0 mm/kmsan/kmsan_instr.c:521
     inet_twsk_alloc+0xaef/0xc00 net/ipv4/inet_timewait_sock.c:182
     tcp_time_wait+0xd9/0xf50 net/ipv4/tcp_minisocks.c:258
     tcp_rcv_state_process+0xebe/0x6490 net/ipv4/tcp_input.c:6003
     tcp_v6_do_rcv+0x11dd/0x1d90 net/ipv6/tcp_ipv6.c:1331
     sk_backlog_rcv include/net/sock.h:908 [inline]
     __release_sock+0x2d6/0x680 net/core/sock.c:2271
     release_sock+0x97/0x2a0 net/core/sock.c:2786
     tcp_close+0x277/0x18f0 net/ipv4/tcp.c:2269
     inet_release+0x240/0x2a0 net/ipv4/af_inet.c:427
     inet6_release+0xaf/0x100 net/ipv6/af_inet6.c:435
     sock_release net/socket.c:595 [inline]
     sock_close+0xe0/0x300 net/socket.c:1149
     __fput+0x49e/0xa10 fs/file_table.c:209
     ____fput+0x37/0x40 fs/file_table.c:243
     task_work_run+0x243/0x2c0 kernel/task_work.c:113
     exit_task_work include/linux/task_work.h:22 [inline]
     do_exit+0x10e1/0x38d0 kernel/exit.c:867
     do_group_exit+0x1a0/0x360 kernel/exit.c:970
     SYSC_exit_group+0x21/0x30 kernel/exit.c:981
     SyS_exit_group+0x25/0x30 kernel/exit.c:979
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:188
     kmsan_kmalloc+0x94/0x100 mm/kmsan/kmsan.c:314
     kmem_cache_alloc+0xaab/0xb90 mm/slub.c:2756
     inet_twsk_alloc+0x13b/0xc00 net/ipv4/inet_timewait_sock.c:163
     tcp_time_wait+0xd9/0xf50 net/ipv4/tcp_minisocks.c:258
     tcp_rcv_state_process+0xebe/0x6490 net/ipv4/tcp_input.c:6003
     tcp_v6_do_rcv+0x11dd/0x1d90 net/ipv6/tcp_ipv6.c:1331
     sk_backlog_rcv include/net/sock.h:908 [inline]
     __release_sock+0x2d6/0x680 net/core/sock.c:2271
     release_sock+0x97/0x2a0 net/core/sock.c:2786
     tcp_close+0x277/0x18f0 net/ipv4/tcp.c:2269
     inet_release+0x240/0x2a0 net/ipv4/af_inet.c:427
     inet6_release+0xaf/0x100 net/ipv6/af_inet6.c:435
     sock_release net/socket.c:595 [inline]
     sock_close+0xe0/0x300 net/socket.c:1149
     __fput+0x49e/0xa10 fs/file_table.c:209
     ____fput+0x37/0x40 fs/file_table.c:243
     task_work_run+0x243/0x2c0 kernel/task_work.c:113
     exit_task_work include/linux/task_work.h:22 [inline]
     do_exit+0x10e1/0x38d0 kernel/exit.c:867
     do_group_exit+0x1a0/0x360 kernel/exit.c:970
     SYSC_exit_group+0x21/0x30 kernel/exit.c:981
     SyS_exit_group+0x25/0x30 kernel/exit.c:979
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Fixes: da5e36308d9f ("soreuseport: TCP/IPv4 implementation")
    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 be098d28f86d547845b39b547c8603b156fa48b5
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:42 2018 -0700

    ipv4: fix uninit-value in ip_route_output_key_hash_rcu()
    
    commit d0ea2b12500543535be3f54e17920fffc9bb45f6 upstream.
    
    syzbot complained that res.type could be used while not initialized.
    
    Using RTN_UNSPEC as initial value seems better than using garbage.
    
    BUG: KMSAN: uninit-value in __mkroute_output net/ipv4/route.c:2200 [inline]
    BUG: KMSAN: uninit-value in ip_route_output_key_hash_rcu+0x31f0/0x3940 net/ipv4/route.c:2493
    CPU: 1 PID: 12207 Comm: syz-executor0 Not tainted 4.16.0+ #81
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     __mkroute_output net/ipv4/route.c:2200 [inline]
     ip_route_output_key_hash_rcu+0x31f0/0x3940 net/ipv4/route.c:2493
     ip_route_output_key_hash net/ipv4/route.c:2322 [inline]
     __ip_route_output_key include/net/route.h:126 [inline]
     ip_route_output_flow+0x1eb/0x3c0 net/ipv4/route.c:2577
     raw_sendmsg+0x1861/0x3ed0 net/ipv4/raw.c:653
     inet_sendmsg+0x48d/0x740 net/ipv4/af_inet.c:764
     sock_sendmsg_nosec net/socket.c:630 [inline]
     sock_sendmsg net/socket.c:640 [inline]
     SYSC_sendto+0x6c3/0x7e0 net/socket.c:1747
     SyS_sendto+0x8a/0xb0 net/socket.c:1715
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x455259
    RSP: 002b:00007fdc0625dc68 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00007fdc0625e6d4 RCX: 0000000000455259
    RDX: 0000000000000000 RSI: 0000000020000040 RDI: 0000000000000013
    RBP: 000000000072bea0 R08: 0000000020000080 R09: 0000000000000010
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 00000000000004f7 R14: 00000000006fa7c8 R15: 0000000000000000
    
    Local variable description: ----res.i.i@ip_route_output_flow
    Variable was created at:
     ip_route_output_flow+0x75/0x3c0 net/ipv4/route.c:2576
     raw_sendmsg+0x1861/0x3ed0 net/ipv4/raw.c:653
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bb619f4684c37b6eee23c412c31232ca4556b3f
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:41 2018 -0700

    dccp: initialize ireq->ir_mark
    
    commit b855ff827476adbdc2259e9895681d82b7b26065 upstream.
    
    syzbot reported an uninit-value read of skb->mark in iptable_mangle_hook()
    
    Thanks to the nice report, I tracked the problem to dccp not caring
    of ireq->ir_mark for passive sessions.
    
    BUG: KMSAN: uninit-value in ipt_mangle_out net/ipv4/netfilter/iptable_mangle.c:66 [inline]
    BUG: KMSAN: uninit-value in iptable_mangle_hook+0x5e5/0x720 net/ipv4/netfilter/iptable_mangle.c:84
    CPU: 0 PID: 5300 Comm: syz-executor3 Not tainted 4.16.0+ #81
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     ipt_mangle_out net/ipv4/netfilter/iptable_mangle.c:66 [inline]
     iptable_mangle_hook+0x5e5/0x720 net/ipv4/netfilter/iptable_mangle.c:84
     nf_hook_entry_hookfn include/linux/netfilter.h:120 [inline]
     nf_hook_slow+0x158/0x3d0 net/netfilter/core.c:483
     nf_hook include/linux/netfilter.h:243 [inline]
     __ip_local_out net/ipv4/ip_output.c:113 [inline]
     ip_local_out net/ipv4/ip_output.c:122 [inline]
     ip_queue_xmit+0x1d21/0x21c0 net/ipv4/ip_output.c:504
     dccp_transmit_skb+0x15eb/0x1900 net/dccp/output.c:142
     dccp_xmit_packet+0x814/0x9e0 net/dccp/output.c:281
     dccp_write_xmit+0x20f/0x480 net/dccp/output.c:363
     dccp_sendmsg+0x12ca/0x12d0 net/dccp/proto.c:818
     inet_sendmsg+0x48d/0x740 net/ipv4/af_inet.c:764
     sock_sendmsg_nosec net/socket.c:630 [inline]
     sock_sendmsg net/socket.c:640 [inline]
     ___sys_sendmsg+0xec0/0x1310 net/socket.c:2046
     __sys_sendmsg net/socket.c:2080 [inline]
     SYSC_sendmsg+0x2a3/0x3d0 net/socket.c:2091
     SyS_sendmsg+0x54/0x80 net/socket.c:2087
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x455259
    RSP: 002b:00007f1a4473dc68 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 00007f1a4473e6d4 RCX: 0000000000455259
    RDX: 0000000000000000 RSI: 0000000020b76fc8 RDI: 0000000000000015
    RBP: 000000000072bea0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 00000000000004f0 R14: 00000000006fa720 R15: 0000000000000000
    
    Uninit was stored to memory at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_save_stack mm/kmsan/kmsan.c:293 [inline]
     kmsan_internal_chain_origin+0x12b/0x210 mm/kmsan/kmsan.c:684
     __msan_chain_origin+0x69/0xc0 mm/kmsan/kmsan_instr.c:521
     ip_queue_xmit+0x1e35/0x21c0 net/ipv4/ip_output.c:502
     dccp_transmit_skb+0x15eb/0x1900 net/dccp/output.c:142
     dccp_xmit_packet+0x814/0x9e0 net/dccp/output.c:281
     dccp_write_xmit+0x20f/0x480 net/dccp/output.c:363
     dccp_sendmsg+0x12ca/0x12d0 net/dccp/proto.c:818
     inet_sendmsg+0x48d/0x740 net/ipv4/af_inet.c:764
     sock_sendmsg_nosec net/socket.c:630 [inline]
     sock_sendmsg net/socket.c:640 [inline]
     ___sys_sendmsg+0xec0/0x1310 net/socket.c:2046
     __sys_sendmsg net/socket.c:2080 [inline]
     SYSC_sendmsg+0x2a3/0x3d0 net/socket.c:2091
     SyS_sendmsg+0x54/0x80 net/socket.c:2087
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    Uninit was stored to memory at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_save_stack mm/kmsan/kmsan.c:293 [inline]
     kmsan_internal_chain_origin+0x12b/0x210 mm/kmsan/kmsan.c:684
     __msan_chain_origin+0x69/0xc0 mm/kmsan/kmsan_instr.c:521
     inet_csk_clone_lock+0x503/0x580 net/ipv4/inet_connection_sock.c:797
     dccp_create_openreq_child+0x7f/0x890 net/dccp/minisocks.c:92
     dccp_v4_request_recv_sock+0x22c/0xe90 net/dccp/ipv4.c:408
     dccp_v6_request_recv_sock+0x290/0x2000 net/dccp/ipv6.c:414
     dccp_check_req+0x7b9/0x8f0 net/dccp/minisocks.c:197
     dccp_v4_rcv+0x12e4/0x2630 net/dccp/ipv4.c:840
     ip_local_deliver_finish+0x6ed/0xd40 net/ipv4/ip_input.c:216
     NF_HOOK include/linux/netfilter.h:288 [inline]
     ip_local_deliver+0x43c/0x4e0 net/ipv4/ip_input.c:257
     dst_input include/net/dst.h:449 [inline]
     ip_rcv_finish+0x1253/0x16d0 net/ipv4/ip_input.c:397
     NF_HOOK include/linux/netfilter.h:288 [inline]
     ip_rcv+0x119d/0x16f0 net/ipv4/ip_input.c:493
     __netif_receive_skb_core+0x47cf/0x4a80 net/core/dev.c:4562
     __netif_receive_skb net/core/dev.c:4627 [inline]
     process_backlog+0x62d/0xe20 net/core/dev.c:5307
     napi_poll net/core/dev.c:5705 [inline]
     net_rx_action+0x7c1/0x1a70 net/core/dev.c:5771
     __do_softirq+0x56d/0x93d kernel/softirq.c:285
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:188
     kmsan_kmalloc+0x94/0x100 mm/kmsan/kmsan.c:314
     kmem_cache_alloc+0xaab/0xb90 mm/slub.c:2756
     reqsk_alloc include/net/request_sock.h:88 [inline]
     inet_reqsk_alloc+0xc4/0x7f0 net/ipv4/tcp_input.c:6145
     dccp_v4_conn_request+0x5cc/0x1770 net/dccp/ipv4.c:600
     dccp_v6_conn_request+0x299/0x1880 net/dccp/ipv6.c:317
     dccp_rcv_state_process+0x2ea/0x2410 net/dccp/input.c:612
     dccp_v4_do_rcv+0x229/0x340 net/dccp/ipv4.c:682
     dccp_v6_do_rcv+0x16d/0x1220 net/dccp/ipv6.c:578
     sk_backlog_rcv include/net/sock.h:908 [inline]
     __sk_receive_skb+0x60e/0xf20 net/core/sock.c:513
     dccp_v4_rcv+0x24d4/0x2630 net/dccp/ipv4.c:874
     ip_local_deliver_finish+0x6ed/0xd40 net/ipv4/ip_input.c:216
     NF_HOOK include/linux/netfilter.h:288 [inline]
     ip_local_deliver+0x43c/0x4e0 net/ipv4/ip_input.c:257
     dst_input include/net/dst.h:449 [inline]
     ip_rcv_finish+0x1253/0x16d0 net/ipv4/ip_input.c:397
     NF_HOOK include/linux/netfilter.h:288 [inline]
     ip_rcv+0x119d/0x16f0 net/ipv4/ip_input.c:493
     __netif_receive_skb_core+0x47cf/0x4a80 net/core/dev.c:4562
     __netif_receive_skb net/core/dev.c:4627 [inline]
     process_backlog+0x62d/0xe20 net/core/dev.c:5307
     napi_poll net/core/dev.c:5705 [inline]
     net_rx_action+0x7c1/0x1a70 net/core/dev.c:5771
     __do_softirq+0x56d/0x93d kernel/softirq.c:285
    
    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 d33f1af67ecad57fb4088734c26c1a62fe61ad6b
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:40 2018 -0700

    net: fix uninit-value in __hw_addr_add_ex()
    
    commit 77d36398d99f2565c0a8d43a86fd520a82e64bb8 upstream.
    
    syzbot complained :
    
    BUG: KMSAN: uninit-value in memcmp+0x119/0x180 lib/string.c:861
    CPU: 0 PID: 3 Comm: kworker/0:0 Not tainted 4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: ipv6_addrconf addrconf_dad_work
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     memcmp+0x119/0x180 lib/string.c:861
     __hw_addr_add_ex net/core/dev_addr_lists.c:60 [inline]
     __dev_mc_add+0x1c2/0x8e0 net/core/dev_addr_lists.c:670
     dev_mc_add+0x6d/0x80 net/core/dev_addr_lists.c:687
     igmp6_group_added+0x2db/0xa00 net/ipv6/mcast.c:662
     ipv6_dev_mc_inc+0xe9e/0x1130 net/ipv6/mcast.c:914
     addrconf_join_solict net/ipv6/addrconf.c:2078 [inline]
     addrconf_dad_begin net/ipv6/addrconf.c:3828 [inline]
     addrconf_dad_work+0x427/0x2150 net/ipv6/addrconf.c:3954
     process_one_work+0x12c6/0x1f60 kernel/workqueue.c:2113
     worker_thread+0x113c/0x24f0 kernel/workqueue.c:2247
     kthread+0x539/0x720 kernel/kthread.c:239
    
    Fixes: f001fde5eadd ("net: introduce a list of device addresses dev_addr_list (v6)")
    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 f919b4b0586b47343c1ac11c31e620daf4c90af2
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:39 2018 -0700

    net: initialize skb->peeked when cloning
    
    commit b13dda9f9aa7caceeee61c080c2e544d5f5d85e5 upstream.
    
    syzbot reported __skb_try_recv_from_queue() was using skb->peeked
    while it was potentially unitialized.
    
    We need to clear it in __skb_clone()
    
    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 733bcbd3db47e9dc8b8c4a126f6e4198d3a6b1f0
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:38 2018 -0700

    net: fix rtnh_ok()
    
    commit b1993a2de12c9e75c35729e2ffbc3a92d50c0d31 upstream.
    
    syzbot reported :
    
    BUG: KMSAN: uninit-value in rtnh_ok include/net/nexthop.h:11 [inline]
    BUG: KMSAN: uninit-value in fib_count_nexthops net/ipv4/fib_semantics.c:469 [inline]
    BUG: KMSAN: uninit-value in fib_create_info+0x554/0x8d20 net/ipv4/fib_semantics.c:1091
    
    @remaining is an integer, coming from user space.
    If it is negative we want rtnh_ok() to return false.
    
    Fixes: 4e902c57417c ("[IPv4]: FIB configuration using struct fib_config")
    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 4b016f0e749538bfebdfa5bea6aeebcd37ea9a0c
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:37 2018 -0700

    netlink: fix uninit-value in netlink_sendmsg
    
    commit 6091f09c2f79730d895149bcfe3d66140288cd0e upstream.
    
    syzbot reported :
    
    BUG: KMSAN: uninit-value in ffs arch/x86/include/asm/bitops.h:432 [inline]
    BUG: KMSAN: uninit-value in netlink_sendmsg+0xb26/0x1310 net/netlink/af_netlink.c:1851
    
    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 d7309c4e42449247ab242eb5dc06a45b4c8be943
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 13:42:36 2018 -0700

    crypto: af_alg - fix possible uninit-value in alg_bind()
    
    commit a466856e0b7ab269cdf9461886d007e88ff575b0 upstream.
    
    syzbot reported :
    
    BUG: KMSAN: uninit-value in alg_bind+0xe3/0xd90 crypto/af_alg.c:162
    
    We need to check addr_len before dereferencing sa (or uaddr)
    
    Fixes: bb30b8848c85 ("crypto: af_alg - whitelist mask and type")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Stephan Mueller <smueller@chronox.de>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24cd9a6e95b762f35ac4ebc767bfce6063efee9c
Author: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Date:   Thu Mar 15 03:54:26 2018 -0700

    rds: tcp: must use spin_lock_irq* and not spin_lock_bh with rds_tcp_conn_lock
    
    commit 53d0e83f9329aa51dcc205b514dbee05cb4df309 upstream.
    
    rds_tcp_connection allocation/free management has the potential to be
    called from __rds_conn_create after IRQs have been disabled, so
    spin_[un]lock_bh cannot be used with rds_tcp_conn_lock.
    
    Bottom-halves that need to synchronize for critical sections protected
    by rds_tcp_conn_lock should instead use rds_destroy_pending() correctly.
    
    Reported-by: syzbot+c68e51bb5e699d3f8d91@syzkaller.appspotmail.com
    Fixes: ebeeb1ad9b8a ("rds: tcp: use rds_destroy_pending() to synchronize
           netns/module teardown and rds connection/workq management")
    Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58908eeb9b968895d245d5be01e807d7cad19aef
Author: Tom Herbert <tom@quantonium.net>
Date:   Wed Feb 14 09:22:42 2018 -0800

    kcm: Call strp_stop before strp_done in kcm_attach
    
    commit dff8baa261174de689a44572d0ea182d7aa70598 upstream.
    
    In kcm_attach strp_done is called when sk_user_data is already
    set to fail the attach. strp_done needs the strp to be stopped and
    warns if it isn't. Call strp_stop in this case to eliminate the
    warning message.
    
    Reported-by: syzbot+88dfb55e4c8b770d86e3@syzkaller.appspotmail.com
    Fixes: e5571240236c5652f ("kcm: Check if sk_user_data already set in kcm_attach"
    Signed-off-by: Tom Herbert <tom@quantonium.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66b8e0fe5aa561daab21338599bbfbf2bf6cb688
Author: Tero Kristo <t-kristo@ti.com>
Date:   Tue Mar 27 20:47:04 2018 +0300

    clk: ti: fix flag space conflict with clkctrl clocks
    
    commit 269bd202bc0fd04e841cb123867fd3f49e04ace9 upstream.
    
    The introduction of support for CLK_SET_RATE_PARENT flag for clkctrl
    clocks used a generic clock flag, which causes a conflict with the
    rest of the clkctrl flags, namely the NO_IDLEST flag. This can cause
    boot failures on certain platforms where this flag is introduced, by
    omitting the wait for the clockctrl module to be fully enabled before
    proceeding with rest of the code.
    
    Fix this by moving all the clkctrl specific flags to their own bit-range.
    
    Signed-off-by: Tero Kristo <t-kristo@ti.com>
    Fixes: 49159a9dc3da ("clk: ti: add support for CLK_SET_RATE_PARENT flag")
    Reported-by: Christophe Lyon <christophe.lyon@linaro.org>
    Tested-by: Tony Lindgren <tony@atomide.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa3e0449d8680b066542f3fd959f973e3561f6e2
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Apr 4 21:13:30 2018 +0200

    netfilter: ebtables: don't attempt to allocate 0-sized compat array
    
    commit 3f1e53abff84cf40b1adb3455d480dd295bf42e8 upstream.
    
    Dmitry reports 32bit ebtables on 64bit kernel got broken by
    a recent change that returns -EINVAL when ruleset has no entries.
    
    ebtables however only counts user-defined chains, so for the
    initial table nentries will be 0.
    
    Don't try to allocate the compat array in this case, as no user
    defined rules exist no rule will need 64bit translation.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Fixes: 7d7d7e02111e9 ("netfilter: compat: reject huge allocation requests")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f609a27c721dbf0fabee442940cab22441ea6b2
Author: Julian Anastasov <ja@ssi.bg>
Date:   Sat Apr 7 15:50:47 2018 +0300

    ipvs: fix rtnl_lock lockups caused by start_sync_thread
    
    commit 5c64576a77894a50be80be0024bed27171b55989 upstream.
    
    syzkaller reports for wrong rtnl_lock usage in sync code [1] and [2]
    
    We have 2 problems in start_sync_thread if error path is
    taken, eg. on memory allocation error or failure to configure
    sockets for mcast group or addr/port binding:
    
    1. recursive locking: holding rtnl_lock while calling sock_release
    which in turn calls again rtnl_lock in ip_mc_drop_socket to leave
    the mcast group, as noticed by Florian Westphal. Additionally,
    sock_release can not be called while holding sync_mutex (ABBA
    deadlock).
    
    2. task hung: holding rtnl_lock while calling kthread_stop to
    stop the running kthreads. As the kthreads do the same to leave
    the mcast group (sock_release -> ip_mc_drop_socket -> rtnl_lock)
    they hang.
    
    Fix the problems by calling rtnl_unlock early in the error path,
    now sock_release is called after unlocking both mutexes.
    
    Problem 3 (task hung reported by syzkaller [2]) is variant of
    problem 2: use _trylock to prevent one user to call rtnl_lock and
    then while waiting for sync_mutex to block kthreads that execute
    sock_release when they are stopped by stop_sync_thread.
    
    [1]
    IPVS: stopping backup sync thread 4500 ...
    WARNING: possible recursive locking detected
    4.16.0-rc7+ #3 Not tainted
    --------------------------------------------
    syzkaller688027/4497 is trying to acquire lock:
      (rtnl_mutex){+.+.}, at: [<00000000bb14d7fb>] rtnl_lock+0x17/0x20
    net/core/rtnetlink.c:74
    
    but task is already holding lock:
    IPVS: stopping backup sync thread 4495 ...
      (rtnl_mutex){+.+.}, at: [<00000000bb14d7fb>] rtnl_lock+0x17/0x20
    net/core/rtnetlink.c:74
    
    other info that might help us debug this:
      Possible unsafe locking scenario:
    
            CPU0
            ----
       lock(rtnl_mutex);
       lock(rtnl_mutex);
    
      *** DEADLOCK ***
    
      May be due to missing lock nesting notation
    
    2 locks held by syzkaller688027/4497:
      #0:  (rtnl_mutex){+.+.}, at: [<00000000bb14d7fb>] rtnl_lock+0x17/0x20
    net/core/rtnetlink.c:74
      #1:  (ipvs->sync_mutex){+.+.}, at: [<00000000703f78e3>]
    do_ip_vs_set_ctl+0x10f8/0x1cc0 net/netfilter/ipvs/ip_vs_ctl.c:2388
    
    stack backtrace:
    CPU: 1 PID: 4497 Comm: syzkaller688027 Not tainted 4.16.0-rc7+ #3
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    Call Trace:
      __dump_stack lib/dump_stack.c:17 [inline]
      dump_stack+0x194/0x24d lib/dump_stack.c:53
      print_deadlock_bug kernel/locking/lockdep.c:1761 [inline]
      check_deadlock kernel/locking/lockdep.c:1805 [inline]
      validate_chain kernel/locking/lockdep.c:2401 [inline]
      __lock_acquire+0xe8f/0x3e00 kernel/locking/lockdep.c:3431
      lock_acquire+0x1d5/0x580 kernel/locking/lockdep.c:3920
      __mutex_lock_common kernel/locking/mutex.c:756 [inline]
      __mutex_lock+0x16f/0x1a80 kernel/locking/mutex.c:893
      mutex_lock_nested+0x16/0x20 kernel/locking/mutex.c:908
      rtnl_lock+0x17/0x20 net/core/rtnetlink.c:74
      ip_mc_drop_socket+0x88/0x230 net/ipv4/igmp.c:2643
      inet_release+0x4e/0x1c0 net/ipv4/af_inet.c:413
      sock_release+0x8d/0x1e0 net/socket.c:595
      start_sync_thread+0x2213/0x2b70 net/netfilter/ipvs/ip_vs_sync.c:1924
      do_ip_vs_set_ctl+0x1139/0x1cc0 net/netfilter/ipvs/ip_vs_ctl.c:2389
      nf_sockopt net/netfilter/nf_sockopt.c:106 [inline]
      nf_setsockopt+0x67/0xc0 net/netfilter/nf_sockopt.c:115
      ip_setsockopt+0x97/0xa0 net/ipv4/ip_sockglue.c:1261
      udp_setsockopt+0x45/0x80 net/ipv4/udp.c:2406
      sock_common_setsockopt+0x95/0xd0 net/core/sock.c:2975
      SYSC_setsockopt net/socket.c:1849 [inline]
      SyS_setsockopt+0x189/0x360 net/socket.c:1828
      do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
      entry_SYSCALL_64_after_hwframe+0x42/0xb7
    RIP: 0033:0x446a69
    RSP: 002b:00007fa1c3a64da8 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 0000000000446a69
    RDX: 000000000000048b RSI: 0000000000000000 RDI: 0000000000000003
    RBP: 00000000006e29fc R08: 0000000000000018 R09: 0000000000000000
    R10: 00000000200000c0 R11: 0000000000000246 R12: 00000000006e29f8
    R13: 00676e697279656b R14: 00007fa1c3a659c0 R15: 00000000006e2b60
    
    [2]
    IPVS: sync thread started: state = BACKUP, mcast_ifn = syz_tun, syncid = 4,
    id = 0
    IPVS: stopping backup sync thread 25415 ...
    INFO: task syz-executor7:25421 blocked for more than 120 seconds.
           Not tainted 4.16.0-rc6+ #284
    "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    syz-executor7   D23688 25421   4408 0x00000004
    Call Trace:
      context_switch kernel/sched/core.c:2862 [inline]
      __schedule+0x8fb/0x1ec0 kernel/sched/core.c:3440
      schedule+0xf5/0x430 kernel/sched/core.c:3499
      schedule_timeout+0x1a3/0x230 kernel/time/timer.c:1777
      do_wait_for_common kernel/sched/completion.c:86 [inline]
      __wait_for_common kernel/sched/completion.c:107 [inline]
      wait_for_common kernel/sched/completion.c:118 [inline]
      wait_for_completion+0x415/0x770 kernel/sched/completion.c:139
      kthread_stop+0x14a/0x7a0 kernel/kthread.c:530
      stop_sync_thread+0x3d9/0x740 net/netfilter/ipvs/ip_vs_sync.c:1996
      do_ip_vs_set_ctl+0x2b1/0x1cc0 net/netfilter/ipvs/ip_vs_ctl.c:2394
      nf_sockopt net/netfilter/nf_sockopt.c:106 [inline]
      nf_setsockopt+0x67/0xc0 net/netfilter/nf_sockopt.c:115
      ip_setsockopt+0x97/0xa0 net/ipv4/ip_sockglue.c:1253
      sctp_setsockopt+0x2ca/0x63e0 net/sctp/socket.c:4154
      sock_common_setsockopt+0x95/0xd0 net/core/sock.c:3039
      SYSC_setsockopt net/socket.c:1850 [inline]
      SyS_setsockopt+0x189/0x360 net/socket.c:1829
      do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
      entry_SYSCALL_64_after_hwframe+0x42/0xb7
    RIP: 0033:0x454889
    RSP: 002b:00007fc927626c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
    RAX: ffffffffffffffda RBX: 00007fc9276276d4 RCX: 0000000000454889
    RDX: 000000000000048c RSI: 0000000000000000 RDI: 0000000000000017
    RBP: 000000000072bf58 R08: 0000000000000018 R09: 0000000000000000
    R10: 0000000020000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 000000000000051c R14: 00000000006f9b40 R15: 0000000000000001
    
    Showing all locks held in the system:
    2 locks held by khungtaskd/868:
      #0:  (rcu_read_lock){....}, at: [<00000000a1a8f002>]
    check_hung_uninterruptible_tasks kernel/hung_task.c:175 [inline]
      #0:  (rcu_read_lock){....}, at: [<00000000a1a8f002>] watchdog+0x1c5/0xd60
    kernel/hung_task.c:249
      #1:  (tasklist_lock){.+.+}, at: [<0000000037c2f8f9>]
    debug_show_all_locks+0xd3/0x3d0 kernel/locking/lockdep.c:4470
    1 lock held by rsyslogd/4247:
      #0:  (&f->f_pos_lock){+.+.}, at: [<000000000d8d6983>]
    __fdget_pos+0x12b/0x190 fs/file.c:765
    2 locks held by getty/4338:
      #0:  (&tty->ldisc_sem){++++}, at: [<00000000bee98654>]
    ldsem_down_read+0x37/0x40 drivers/tty/tty_ldsem.c:365
      #1:  (&ldata->atomic_read_lock){+.+.}, at: [<00000000c1d180aa>]
    n_tty_read+0x2ef/0x1a40 drivers/tty/n_tty.c:2131
    2 locks held by getty/4339:
      #0:  (&tty->ldisc_sem){++++}, at: [<00000000bee98654>]
    ldsem_down_read+0x37/0x40 drivers/tty/tty_ldsem.c:365
      #1:  (&ldata->atomic_read_lock){+.+.}, at: [<00000000c1d180aa>]
    n_tty_read+0x2ef/0x1a40 drivers/tty/n_tty.c:2131
    2 locks held by getty/4340:
      #0:  (&tty->ldisc_sem){++++}, at: [<00000000bee98654>]
    ldsem_down_read+0x37/0x40 drivers/tty/tty_ldsem.c:365
      #1:  (&ldata->atomic_read_lock){+.+.}, at: [<00000000c1d180aa>]
    n_tty_read+0x2ef/0x1a40 drivers/tty/n_tty.c:2131
    2 locks held by getty/4341:
      #0:  (&tty->ldisc_sem){++++}, at: [<00000000bee98654>]
    ldsem_down_read+0x37/0x40 drivers/tty/tty_ldsem.c:365
      #1:  (&ldata->atomic_read_lock){+.+.}, at: [<00000000c1d180aa>]
    n_tty_read+0x2ef/0x1a40 drivers/tty/n_tty.c:2131
    2 locks held by getty/4342:
      #0:  (&tty->ldisc_sem){++++}, at: [<00000000bee98654>]
    ldsem_down_read+0x37/0x40 drivers/tty/tty_ldsem.c:365
      #1:  (&ldata->atomic_read_lock){+.+.}, at: [<00000000c1d180aa>]
    n_tty_read+0x2ef/0x1a40 drivers/tty/n_tty.c:2131
    2 locks held by getty/4343:
      #0:  (&tty->ldisc_sem){++++}, at: [<00000000bee98654>]
    ldsem_down_read+0x37/0x40 drivers/tty/tty_ldsem.c:365
      #1:  (&ldata->atomic_read_lock){+.+.}, at: [<00000000c1d180aa>]
    n_tty_read+0x2ef/0x1a40 drivers/tty/n_tty.c:2131
    2 locks held by getty/4344:
      #0:  (&tty->ldisc_sem){++++}, at: [<00000000bee98654>]
    ldsem_down_read+0x37/0x40 drivers/tty/tty_ldsem.c:365
      #1:  (&ldata->atomic_read_lock){+.+.}, at: [<00000000c1d180aa>]
    n_tty_read+0x2ef/0x1a40 drivers/tty/n_tty.c:2131
    3 locks held by kworker/0:5/6494:
      #0:  ((wq_completion)"%s"("ipv6_addrconf")){+.+.}, at:
    [<00000000a062b18e>] work_static include/linux/workqueue.h:198 [inline]
      #0:  ((wq_completion)"%s"("ipv6_addrconf")){+.+.}, at:
    [<00000000a062b18e>] set_work_data kernel/workqueue.c:619 [inline]
      #0:  ((wq_completion)"%s"("ipv6_addrconf")){+.+.}, at:
    [<00000000a062b18e>] set_work_pool_and_clear_pending kernel/workqueue.c:646
    [inline]
      #0:  ((wq_completion)"%s"("ipv6_addrconf")){+.+.}, at:
    [<00000000a062b18e>] process_one_work+0xb12/0x1bb0 kernel/workqueue.c:2084
      #1:  ((addr_chk_work).work){+.+.}, at: [<00000000278427d5>]
    process_one_work+0xb89/0x1bb0 kernel/workqueue.c:2088
      #2:  (rtnl_mutex){+.+.}, at: [<00000000066e35ac>] rtnl_lock+0x17/0x20
    net/core/rtnetlink.c:74
    1 lock held by syz-executor7/25421:
      #0:  (ipvs->sync_mutex){+.+.}, at: [<00000000d414a689>]
    do_ip_vs_set_ctl+0x277/0x1cc0 net/netfilter/ipvs/ip_vs_ctl.c:2393
    2 locks held by syz-executor7/25427:
      #0:  (rtnl_mutex){+.+.}, at: [<00000000066e35ac>] rtnl_lock+0x17/0x20
    net/core/rtnetlink.c:74
      #1:  (ipvs->sync_mutex){+.+.}, at: [<00000000e6d48489>]
    do_ip_vs_set_ctl+0x10f8/0x1cc0 net/netfilter/ipvs/ip_vs_ctl.c:2388
    1 lock held by syz-executor7/25435:
      #0:  (rtnl_mutex){+.+.}, at: [<00000000066e35ac>] rtnl_lock+0x17/0x20
    net/core/rtnetlink.c:74
    1 lock held by ipvs-b:2:0/25415:
      #0:  (rtnl_mutex){+.+.}, at: [<00000000066e35ac>] rtnl_lock+0x17/0x20
    net/core/rtnetlink.c:74
    
    Reported-and-tested-by: syzbot+a46d6abf9d56b1365a72@syzkaller.appspotmail.com
    Reported-and-tested-by: syzbot+5fe074c01b2032ce9618@syzkaller.appspotmail.com
    Fixes: e0b26cc997d5 ("ipvs: call rtnl_lock early")
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Cc: Zubin Mithra <zsm@chromium.org>
    Cc: Guenter Roeck <groeck@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>