commit 717bd21f81a3ac5cb50d015b200f3949be1b1923
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Aug 30 10:19:42 2017 +0200

    Linux 4.4.85

commit 12b25d2a52f0ff998ce1d4385c4050e9e9e5d072
Author: James Morse <james.morse@arm.com>
Date:   Thu Mar 16 14:30:39 2017 +0000

    ACPI / APEI: Add missing synchronize_rcu() on NOTIFY_SCI removal
    
    commit 7d64f82cceb21e6d95db312d284f5f195e120154 upstream.
    
    When removing a GHES device notified by SCI, list_del_rcu() is used,
    ghes_remove() should call synchronize_rcu() before it goes on to call
    kfree(ghes), otherwise concurrent RCU readers may still hold this list
    entry after it has been freed.
    
    Signed-off-by: James Morse <james.morse@arm.com>
    Reviewed-by: "Huang, Ying" <ying.huang@intel.com>
    Fixes: 81e88fdc432a (ACPI, APEI, Generic Hardware Error Source POLL/IRQ/NMI notification type support)
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b526de00a9b09eb12f1c68df25a50139f315e400
Author: Joerg Roedel <jroedel@suse.de>
Date:   Wed Mar 22 18:33:23 2017 +0100

    ACPI: ioapic: Clear on-stack resource before using it
    
    commit e3d5092b6756b9e0b08f94bbeafcc7afe19f0996 upstream.
    
    The on-stack resource-window 'win' in setup_res() is not
    properly initialized. This causes the pointers in the
    embedded 'struct resource' to contain stale addresses.
    
    These pointers (in my case the ->child pointer) later get
    propagated to the global iomem_resources list, causing a #GP
    exception when the list is traversed in
    iomem_map_sanity_check().
    
    Fixes: c183619b63ec (x86/irq, ACPI: Implement ACPI driver to support IOAPIC hotplug)
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e5f2c2041503bd0f855b9467de3cd05a8748c91
Author: Logan Gunthorpe <logang@deltatee.com>
Date:   Mon Jun 5 14:00:53 2017 -0600

    ntb_transport: fix bug calculating num_qps_mw
    
    commit 8e8496e0e9564b66165f5219a4e8ed20b0d3fc6b upstream.
    
    A divide by zero error occurs if qp_count is less than mw_count because
    num_qps_mw is calculated to be zero. The calculation appears to be
    incorrect.
    
    The requirement is for num_qps_mw to be set to qp_count / mw_count
    with any remainder divided among the earlier mws.
    
    For example, if mw_count is 5 and qp_count is 12 then mws 0 and 1
    will have 3 qps per window and mws 2 through 4 will have 2 qps per window.
    Thus, when mw_num < qp_count % mw_count, num_qps_mw is 1 higher
    than when mw_num >= qp_count.
    
    Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
    Fixes: e26a5843f7f5 ("NTB: Split ntb_hw_intel and ntb_transport drivers")
    Acked-by: Allen Hubbe <Allen.Hubbe@dell.com>
    Signed-off-by: Jon Mason <jdmason@kudzu.us>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1aac8ffd619f893b93cbd4c28abe43ecee7f82ef
Author: Logan Gunthorpe <logang@deltatee.com>
Date:   Mon Jun 5 14:00:52 2017 -0600

    ntb_transport: fix qp count bug
    
    commit cb827ee6ccc3e480f0d9c0e8e53eef55be5b0414 upstream.
    
    In cases where there are more mw's than spads/2-2, the mw count gets
    reduced to match the limitation. ntb_transport also tries to ensure that
    there are fewer qps than mws but uses the full mw count instead of
    the reduced one. When this happens, the math in
    'ntb_transport_setup_qp_mw' will get confused and result in a kernel
    paging request bug.
    
    This patch fixes the bug by reducing qp_count to the reduced mw count
    instead of the full mw count.
    
    Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
    Fixes: e26a5843f7f5 ("NTB: Split ntb_hw_intel and ntb_transport drivers")
    Acked-by: Allen Hubbe <Allen.Hubbe@dell.com>
    Signed-off-by: Jon Mason <jdmason@kudzu.us>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ec0b2c2d2354ca5322513b83cbf925eec8c38ba
Author: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date:   Thu Feb 25 05:51:12 2016 +0000

    ASoC: rsnd: don't call update callback if it was NULL
    
    commit d7289565483c65094d0473555625a4acd89567d3 upstream.
    
    Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
    Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95fc5ef85428cc435c82b041a49631f6a680e44b
Author: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date:   Tue Nov 17 08:28:11 2015 +0000

    ASoC: rsnd: ssi: 24bit data needs right-aligned settings
    
    commit f46a93b820eb3707faf238cd769a004e2504515f upstream.
    
    Data left/right aligned is controlled by PDTA bit on SSICR.
    But default is left-aligned. Thus 24bit sound will be very small sound
    without this patch.
    
    Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
    Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd504621fa52c9474d03aead381fca4155c66e5d
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Oct 28 16:03:48 2015 +0100

    ASoC: rsnd: Add missing initialization of ADG req_rate
    
    commit 8b27418f300cafbdbbb8cfa9c29d398ed34d6723 upstream.
    
    If the "clock-frequency" DT property is not found, req_rate is used
    uninitialized, and the "audio_clkout" clock will be created with an
    arbitrary clock rate.
    
    This uninitialized kernel stack data may leak to userspace through
    /sys/kernel/debug/clk/clk_summary, cfr. the value in the "rate" column:
    
           clock     enable_cnt  prepare_cnt        rate   accuracy   phase
        --------------------------------------------------------------------
         audio_clkout         0            0  4001836240          0 0
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
    Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e974777b2ecb525cfa43408ee57e22f80abacaaa
Author: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date:   Mon Oct 26 08:41:53 2015 +0000

    ASoC: rsnd: avoid pointless loop in rsnd_mod_interrupt()
    
    commit 2daf71ad8da6cb57f919c9c876ee7e42530371df upstream.
    
    Current Renesas sound driver doesn't have 1:1 relationship between
    stream <-> mod because it is supporting MIX. Because of this reason
    rsnd_mod_interrupt() is searching correspond mod by for loop.
    But this loop is not needed, because each mod has own type.
    This patch avoid pointless loop by using mod->type.
    
    This patch is good for SSI-parent support, because stream might have
    2 SSI as SSI-parent/child. SSI interrupt handler will be called twice
    if stream has SSI-parent without this patch.
    
    Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
    Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fdc568a4224a21988ad5092959dd00b4614fbec5
Author: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date:   Mon Oct 26 08:40:59 2015 +0000

    ASoC: rsnd: disable SRC.out only when stop timing
    
    commit b761bf272bce6dff4d8a7ccf4385c9f3d4018094 upstream.
    
    Because SRC is connected to DMA and DMA want to keep dreq when stop
    timing. This patch makes SRC stop SRC.out only when stop timing. And
    it stops both SRC.out/SRC.in when quit timing
    
    Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
    Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfba69dc30abfe54f4f424ad40065a6b429308a6
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Jan 24 00:36:40 2016 +0200

    ASoC: simple-card: don't fail if sysclk setting is not supported
    
    commit ee43a1a0cd2a8f33cddfa1323a60b5cfcf865ba0 upstream.
    
    Commit e22579713ae1 ("ASoC: simple card: set cpu-dai sysclk
    with mclk-fs") added sysclk / SND_SOC_CLOCK_OUT setting, that makes
    asoc_simple_card_hw_params fail if the operation is not supported,
    although the intention clearly was to ignore ENOTSUPP. Fix it.
    
    The patch fixes audio playback on Kirkwood / OpenRD client,
    where the following errors are seen:
    
            asoc-simple-card sound: ASoC: machine hw_params failed: -524
            alsa-lib: /alsa-lib-1.0.28/src/pcm/pcm_hw.c:327:(snd_pcm_hw_hw_params) SNDRV_PCM_IOCTL_HW_PARAMS failed (-524): Unknown error 524
    
    Fixes: e22579713ae1 ("ASoC: simple card: set cpu-dai sysclk with mclk-fs")
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
    Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb2ba09b05a6cdb521b32305890772e618f04783
Author: Charles Milette <charlesmilette@gmail.com>
Date:   Fri Aug 18 16:30:34 2017 -0400

    staging: rtl8188eu: add RNX-N150NUB support
    
    commit f299aec6ebd747298e35934cff7709c6b119ca52 upstream.
    
    Add support for USB Device Rosewill RNX-N150NUB.
    VendorID: 0x0bda, ProductID: 0xffef
    
    Signed-off-by: Charles Milette <charles.milette@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d7e8cf01e2ed35ccded43b46a01c72ea29e9f15
Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date:   Sat Aug 12 09:09:21 2017 -0700

    iio: hid-sensor-trigger: Fix the race with user space powering up sensors
    
    commit f1664eaacec31035450132c46ed2915fd2b2049a upstream.
    
    It has been reported for a while that with iio-sensor-proxy service the
    rotation only works after one suspend/resume cycle. This required a wait
    in the systemd unit file to avoid race. I found a Yoga 900 where I could
    reproduce this.
    
    The problem scenerio is:
    - During sensor driver init, enable run time PM and also set a
      auto-suspend for 3 seconds.
            This result in one runtime resume. But there is a check to avoid
    a powerup in this sequence, but rpm is active
    - User space iio-sensor-proxy tries to power up the sensor. Since rpm is
      active it will simply return. But sensors were not actually
    powered up in the prior sequence, so actaully the sensors will not work
    - After 3 seconds the auto suspend kicks
    
    If we add a wait in systemd service file to fire iio-sensor-proxy after
    3 seconds, then now everything will work as the runtime resume will
    actually powerup the sensor as this is a user request.
    
    To avoid this:
    - Remove the check to match user requested state, this will cause a
      brief powerup, but if the iio-sensor-proxy starts immediately it will
    still work as the sensors are ON.
    - Also move the autosuspend delay to place when user requested turn off
      of sensors, like after user finished raw read or buffer disable
    
    Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Tested-by: Bastien Nocera <hadess@hadess.net>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2c072cb638d3d1a8b34e824266969ab9372bbd5
Author: Dragos Bogdan <dragos.bogdan@analog.com>
Date:   Fri Aug 4 01:37:27 2017 +0300

    iio: imu: adis16480: Fix acceleration scale factor for adis16480
    
    commit fdd0d32eb95f135041236a6885d9006315aa9a1d upstream.
    
    According to the datasheet, the range of the acceleration is [-10 g, + 10 g],
    so the scale factor should be 10 instead of 5.
    
    Signed-off-by: Dragos Bogdan <dragos.bogdan@analog.com>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9dac44d5d4b0a7fffe04ad505e0a082e900ad767
Author: Martijn Coenen <maco@android.com>
Date:   Fri Jul 28 13:56:08 2017 +0200

    ANDROID: binder: fix proc->tsk check.
    
    commit b2a6d1b999a4c13e5997bb864694e77172d45250 upstream.
    
    Commit c4ea41ba195d ("binder: use group leader instead of open thread")'
    was incomplete and didn't update a check in binder_mmap(), causing all
    mmap() calls into the binder driver to fail.
    
    Signed-off-by: Martijn Coenen <maco@android.com>
    Tested-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1792d6c17cb282fd8e5cd197a8b33cb78484eb6a
Author: Riley Andrews <riandrews@google.com>
Date:   Thu Jun 29 12:01:37 2017 -0700

    binder: Use wake up hint for synchronous transactions.
    
    commit 00b40d613352c623aaae88a44e5ded7c912909d7 upstream.
    
    Use wake_up_interruptible_sync() to hint to the scheduler binder
    transactions are synchronous wakeups. Disable preemption while waking
    to avoid ping-ponging on the binder lock.
    
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Signed-off-by: Omprakash Dhyade <odhyade@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 596b97ec2e5e24c966b9cb4aa9a9766e53ecdd43
Author: Todd Kjos <tkjos@android.com>
Date:   Thu Jun 29 12:01:36 2017 -0700

    binder: use group leader instead of open thread
    
    commit c4ea41ba195d01c9af66fb28711a16cc97caa9c5 upstream.
    
    The binder allocator assumes that the thread that
    called binder_open will never die for the lifetime of
    that proc. That thread is normally the group_leader,
    however it may not be. Use the group_leader instead
    of current.
    
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1c7a447883305fd757ca76950d5ef2b4155cebc
Author: Jeffy Chen <jeffy.chen@rock-chips.com>
Date:   Tue Jun 27 17:34:42 2017 +0800

    Bluetooth: bnep: fix possible might sleep error in bnep_session
    
    commit 25717382c1dd0ddced2059053e3ca5088665f7a5 upstream.
    
    It looks like bnep_session has same pattern as the issue reported in
    old rfcomm:
    
            while (1) {
                    set_current_state(TASK_INTERRUPTIBLE);
                    if (condition)
                            break;
                    // may call might_sleep here
                    schedule();
            }
            __set_current_state(TASK_RUNNING);
    
    Which fixed at:
            dfb2fae Bluetooth: Fix nested sleeps
    
    So let's fix it at the same way, also follow the suggestion of:
    https://lwn.net/Articles/628628/
    
    Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: AL Yu-Chen Cho <acho@suse.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9adf422b99309894fca52767acfa1dcdc094e84
Author: Jeffy Chen <jeffy.chen@rock-chips.com>
Date:   Tue Jun 27 17:34:43 2017 +0800

    Bluetooth: cmtp: fix possible might sleep error in cmtp_session
    
    commit f06d977309d09253c744e54e75c5295ecc52b7b4 upstream.
    
    It looks like cmtp_session has same pattern as the issue reported in
    old rfcomm:
    
            while (1) {
                    set_current_state(TASK_INTERRUPTIBLE);
                    if (condition)
                            break;
                    // may call might_sleep here
                    schedule();
            }
            __set_current_state(TASK_RUNNING);
    
    Which fixed at:
            dfb2fae Bluetooth: Fix nested sleeps
    
    So let's fix it at the same way, also follow the suggestion of:
    https://lwn.net/Articles/628628/
    
    Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: AL Yu-Chen Cho <acho@suse.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 172bbb8ee44a5a0f48fe4f06b09ec9bd7c1678f9
Author: Jeffy Chen <jeffy.chen@rock-chips.com>
Date:   Tue Jun 27 17:34:44 2017 +0800

    Bluetooth: hidp: fix possible might sleep error in hidp_session_thread
    
    commit 5da8e47d849d3d37b14129f038782a095b9ad049 upstream.
    
    It looks like hidp_session_thread has same pattern as the issue reported in
    old rfcomm:
    
            while (1) {
                    set_current_state(TASK_INTERRUPTIBLE);
                    if (condition)
                            break;
                    // may call might_sleep here
                    schedule();
            }
            __set_current_state(TASK_RUNNING);
    
    Which fixed at:
            dfb2fae Bluetooth: Fix nested sleeps
    
    So let's fix it at the same way, also follow the suggestion of:
    https://lwn.net/Articles/628628/
    
    Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
    Tested-by: AL Yu-Chen Cho <acho@suse.com>
    Tested-by: Rohit Vaswani <rvaswani@nvidia.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 708d19eaf303065d72d6cbdc0a937a5be02cc9c1
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Thu Jun 22 15:41:38 2017 +0100

    perf/core: Fix group {cpu,task} validation
    
    commit 64aee2a965cf2954a038b5522f11d2cd2f0f8f3e upstream.
    
    Regardless of which events form a group, it does not make sense for the
    events to target different tasks and/or CPUs, as this leaves the group
    inconsistent and impossible to schedule. The core perf code assumes that
    these are consistent across (successfully intialised) groups.
    
    Core perf code only verifies this when moving SW events into a HW
    context. Thus, we can violate this requirement for pure SW groups and
    pure HW groups, unless the relevant PMU driver happens to perform this
    verification itself. These mismatched groups subsequently wreak havoc
    elsewhere.
    
    For example, we handle watchpoints as SW events, and reserve watchpoint
    HW on a per-CPU basis at pmu::event_init() time to ensure that any event
    that is initialised is guaranteed to have a slot at pmu::add() time.
    However, the core code only checks the group leader's cpu filter (via
    event_filter_match()), and can thus install follower events onto CPUs
    violating thier (mismatched) CPU filters, potentially installing them
    into a CPU without sufficient reserved slots.
    
    This can be triggered with the below test case, resulting in warnings
    from arch backends.
    
      #define _GNU_SOURCE
      #include <linux/hw_breakpoint.h>
      #include <linux/perf_event.h>
      #include <sched.h>
      #include <stdio.h>
      #include <sys/prctl.h>
      #include <sys/syscall.h>
      #include <unistd.h>
    
      static int perf_event_open(struct perf_event_attr *attr, pid_t pid, int cpu,
                               int group_fd, unsigned long flags)
      {
            return syscall(__NR_perf_event_open, attr, pid, cpu, group_fd, flags);
      }
    
      char watched_char;
    
      struct perf_event_attr wp_attr = {
            .type = PERF_TYPE_BREAKPOINT,
            .bp_type = HW_BREAKPOINT_RW,
            .bp_addr = (unsigned long)&watched_char,
            .bp_len = 1,
            .size = sizeof(wp_attr),
      };
    
      int main(int argc, char *argv[])
      {
            int leader, ret;
            cpu_set_t cpus;
    
            /*
             * Force use of CPU0 to ensure our CPU0-bound events get scheduled.
             */
            CPU_ZERO(&cpus);
            CPU_SET(0, &cpus);
            ret = sched_setaffinity(0, sizeof(cpus), &cpus);
            if (ret) {
                    printf("Unable to set cpu affinity\n");
                    return 1;
            }
    
            /* open leader event, bound to this task, CPU0 only */
            leader = perf_event_open(&wp_attr, 0, 0, -1, 0);
            if (leader < 0) {
                    printf("Couldn't open leader: %d\n", leader);
                    return 1;
            }
    
            /*
             * Open a follower event that is bound to the same task, but a
             * different CPU. This means that the group should never be possible to
             * schedule.
             */
            ret = perf_event_open(&wp_attr, 0, 1, leader, 0);
            if (ret < 0) {
                    printf("Couldn't open mismatched follower: %d\n", ret);
                    return 1;
            } else {
                    printf("Opened leader/follower with mismastched CPUs\n");
            }
    
            /*
             * Open as many independent events as we can, all bound to the same
             * task, CPU0 only.
             */
            do {
                    ret = perf_event_open(&wp_attr, 0, 0, -1, 0);
            } while (ret >= 0);
    
            /*
             * Force enable/disble all events to trigger the erronoeous
             * installation of the follower event.
             */
            printf("Opened all events. Toggling..\n");
            for (;;) {
                    prctl(PR_TASK_PERF_EVENTS_DISABLE, 0, 0, 0, 0);
                    prctl(PR_TASK_PERF_EVENTS_ENABLE, 0, 0, 0, 0);
            }
    
            return 0;
      }
    
    Fix this by validating this requirement regardless of whether we're
    moving events.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Zhou Chengming <zhouchengming1@huawei.com>
    Link: http://lkml.kernel.org/r/1498142498-15758-1-git-send-email-mark.rutland@arm.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87ac57ff972ae029baf54c6766ae1bc55e873854
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Aug 18 11:12:19 2017 -0400

    nfsd: Limit end of page list when decoding NFSv4 WRITE
    
    commit fc788f64f1f3eb31e87d4f53bcf1ab76590d5838 upstream.
    
    When processing an NFSv4 WRITE operation, argp->end should never
    point past the end of the data in the final page of the page list.
    Otherwise, nfsd4_decode_compound can walk into uninitialized memory.
    
    More critical, nfsd4_decode_write is failing to increment argp->pagelen
    when it increments argp->pagelist.  This can cause later xdr decoders
    to assume more data is available than really is, which can cause server
    crashes on malformed requests.
    
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6066962ca46d6aca02e061dc266816cd6d72e2d
Author: Ronnie Sahlberg <lsahlber@redhat.com>
Date:   Wed Aug 23 14:48:14 2017 +1000

    cifs: return ENAMETOOLONG for overlong names in cifs_open()/cifs_lookup()
    
    commit d3edede29f74d335f81d95a4588f5f136a9f7dcf upstream.
    
    Add checking for the path component length and verify it is <= the maximum
    that the server advertizes via FileFsAttributeInformation.
    
    With this patch cifs.ko will now return ENAMETOOLONG instead of ENOENT
    when users to access an overlong path.
    
    To test this, try to cd into a (non-existing) directory on a CIFS share
    that has a too long name:
    cd /mnt/aaaaaaaaaaaaaaa...
    
    and it now should show a good error message from the shell:
    bash: cd: /mnt/aaaaaaaaaaaaaaaa...aaaaaa: File name too long
    
    rh bz 1153996
    
    Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 210b41b4971e7e0e368fef790eca2e4f410d9b07
Author: Sachin Prabhu <sprabhu@redhat.com>
Date:   Thu Aug 3 13:09:03 2017 +0530

    cifs: Fix df output for users with quota limits
    
    commit 42bec214d8bd432be6d32a1acb0a9079ecd4d142 upstream.
    
    The df for a SMB2 share triggers a GetInfo call for
    FS_FULL_SIZE_INFORMATION. The values returned are used to populate
    struct statfs.
    
    The problem is that none of the information returned by the call
    contains the total blocks available on the filesystem. Instead we use
    the blocks available to the user ie. quota limitation when filling out
    statfs.f_blocks. The information returned does contain Actual free units
    on the filesystem and is used to populate statfs.f_bfree. For users with
    quota enabled, it can lead to situations where the total free space
    reported is more than the total blocks on the system ending up with df
    reports like the following
    
     # df -h /mnt/a
    Filesystem         Size  Used Avail Use% Mounted on
    //192.168.22.10/a  2.5G -2.3G  2.5G    - /mnt/a
    
    To fix this problem, we instead populate both statfs.f_bfree with the
    same value as statfs.f_bavail ie. CallerAvailableAllocationUnits. This
    is similar to what is done already in the code for cifs and df now
    reports the quota information for the user used to mount the share.
    
     # df --si /mnt/a
    Filesystem         Size  Used Avail Use% Mounted on
    //192.168.22.10/a  2.7G  101M  2.6G   4% /mnt/a
    
    Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
    Signed-off-by: Pierguido Lambri <plambri@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f57741b44babe107b51fe8252e90e8d7bfb6003
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Aug 23 12:46:27 2017 -0400

    tracing: Fix freeing of filter in create_filter() when set_str is false
    
    commit 8b0db1a5bdfcee0dbfa89607672598ae203c9045 upstream.
    
    Performing the following task with kmemleak enabled:
    
     # cd /sys/kernel/tracing/events/irq/irq_handler_entry/
     # echo 'enable_event:kmem:kmalloc:3 if irq >' > trigger
     # echo 'enable_event:kmem:kmalloc:3 if irq > 31' > trigger
     # echo scan > /sys/kernel/debug/kmemleak
     # cat /sys/kernel/debug/kmemleak
    unreferenced object 0xffff8800b9290308 (size 32):
      comm "bash", pid 1114, jiffies 4294848451 (age 141.139s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff81cef5aa>] kmemleak_alloc+0x4a/0xa0
        [<ffffffff81357938>] kmem_cache_alloc_trace+0x158/0x290
        [<ffffffff81261c09>] create_filter_start.constprop.28+0x99/0x940
        [<ffffffff812639c9>] create_filter+0xa9/0x160
        [<ffffffff81263bdc>] create_event_filter+0xc/0x10
        [<ffffffff812655e5>] set_trigger_filter+0xe5/0x210
        [<ffffffff812660c4>] event_enable_trigger_func+0x324/0x490
        [<ffffffff812652e2>] event_trigger_write+0x1a2/0x260
        [<ffffffff8138cf87>] __vfs_write+0xd7/0x380
        [<ffffffff8138f421>] vfs_write+0x101/0x260
        [<ffffffff8139187b>] SyS_write+0xab/0x130
        [<ffffffff81cfd501>] entry_SYSCALL_64_fastpath+0x1f/0xbe
        [<ffffffffffffffff>] 0xffffffffffffffff
    
    The function create_filter() is passed a 'filterp' pointer that gets
    allocated, and if "set_str" is true, it is up to the caller to free it, even
    on error. The problem is that the pointer is not freed by create_filter()
    when set_str is false. This is a bug, and it is not up to the caller to free
    the filter on error if it doesn't care about the string.
    
    Link: http://lkml.kernel.org/r/1502705898-27571-2-git-send-email-chuhu@redhat.com
    
    Fixes: 38b78eb85 ("tracing: Factorize filter creation")
    Reported-by: Chunyu Hu <chuhu@redhat.com>
    Tested-by: Chunyu Hu <chuhu@redhat.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d2b7767611fc1762140614452e21d558aa5e462
Author: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
Date:   Mon May 16 11:28:15 2016 +0900

    drm: rcar-du: Fix H/V sync signal polarity configuration
    
    commit fd1adef3bff0663c5ac31b45bc4a05fafd43d19b upstream.
    
    The VSL and HSL bits in the DSMR register set the corresponding
    horizontal and vertical sync signal polarity to active high. The code
    got it the wrong way around, fix it.
    
    Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
    Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64f3c534e7acab041e39cb2429b54d8c5141e89a
Author: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
Date:   Mon Apr 18 16:31:30 2016 +0900

    drm: rcar-du: Fix display timing controller parameter
    
    commit 9cdced8a39c04cf798ddb2a27cb5952f7d39f633 upstream.
    
    There is a bug in the setting of the DES (Display Enable Signal)
    register. This current setting occurs 1 dot left shift. The DES
    register should be set minus one value about the specifying value
    with H/W specification. This patch corrects it.
    
    Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
    Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbf583912145e9096815a14f1554f44cfaab7059
Author: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Date:   Mon Oct 3 20:03:22 2016 +0300

    drm: rcar-du: Fix crash in encoder failure error path
    
    commit 05ee29e94acf0d4b3998c3f93374952de8f90176 upstream.
    
    When an encoder fails to initialize the driver prints an error message
    to the kernel log. The message contains the name of the encoder's DT
    node, which is NULL for internal encoders. Use the of_node_full_name()
    macro to avoid dereferencing a NULL pointer, print the output number to
    add more context to the error, and make sure we still own a reference to
    the encoder's DT node by delaying the of_node_put() call.
    
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
    Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 766a097cbfea9a2527d881b67b835bf223d5f79d
Author: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Date:   Mon Sep 7 15:28:17 2015 +0300

    drm: rcar-du: lvds: Rename PLLEN bit to PLLON
    
    commit 82e7c5e4964545352accff4b44bbcaa2c38e7fc1 upstream.
    
    The bit is named PLLON in the datasheet, rename it.
    
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
    Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b60c153ff3d922e0be3fa9dbe3d53fbc8c78cdb
Author: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Date:   Mon Sep 7 16:03:25 2015 +0300

    drm: rcar-du: lvds: Fix PLL frequency-related configuration
    
    commit 5e1ac3bdc6bbb4f378251b87625b8acfbfc4ae82 upstream.
    
    The frequency checks don't match the datasheet, fix them.
    
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
    Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3416ee45a8cbeb5bc4b13a754873fbb26a27dccb
Author: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Date:   Tue Aug 15 11:57:06 2017 +0200

    drm/atomic: If the atomic check fails, return its value first
    
    commit a0ffc51e20e90e0c1c2491de2b4b03f48b6caaba upstream.
    
    The last part of drm_atomic_check_only is testing whether we need to
    fail with -EINVAL when modeset is not allowed, but forgets to return
    the value when atomic_check() fails first.
    
    This results in -EDEADLK being replaced by -EINVAL, and the sanity
    check in drm_modeset_drop_locks kicks in:
    
    [  308.531734] ------------[ cut here ]------------
    [  308.531791] WARNING: CPU: 0 PID: 1886 at drivers/gpu/drm/drm_modeset_lock.c:217 drm_modeset_drop_locks+0x33/0xc0 [drm]
    [  308.531828] Modules linked in:
    [  308.532050] CPU: 0 PID: 1886 Comm: kms_atomic Tainted: G     U  W 4.13.0-rc5-patser+ #5225
    [  308.532082] Hardware name: NUC5i7RYB, BIOS RYBDWi35.86A.0246.2015.0309.1355 03/09/2015
    [  308.532124] task: ffff8800cd9dae00 task.stack: ffff8800ca3b8000
    [  308.532168] RIP: 0010:drm_modeset_drop_locks+0x33/0xc0 [drm]
    [  308.532189] RSP: 0018:ffff8800ca3bf980 EFLAGS: 00010282
    [  308.532211] RAX: dffffc0000000000 RBX: ffff8800ca3bfaf8 RCX: 0000000013a171e6
    [  308.532235] RDX: 1ffff10019477f69 RSI: ffffffffa8ba4fa0 RDI: ffff8800ca3bfb48
    [  308.532258] RBP: ffff8800ca3bf998 R08: 0000000000000000 R09: 0000000000000003
    [  308.532281] R10: 0000000079dbe066 R11: 00000000f760b34b R12: 0000000000000001
    [  308.532304] R13: dffffc0000000000 R14: 00000000ffffffea R15: ffff880096889680
    [  308.532328] FS:  00007ff00959cec0(0000) GS:ffff8800d4e00000(0000) knlGS:0000000000000000
    [  308.532359] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  308.532380] CR2: 0000000000000008 CR3: 00000000ca2e3000 CR4: 00000000003406f0
    [  308.532402] Call Trace:
    [  308.532440]  drm_mode_atomic_ioctl+0x19fa/0x1c00 [drm]
    [  308.532488]  ? drm_atomic_set_property+0x1220/0x1220 [drm]
    [  308.532565]  ? avc_has_extended_perms+0xc39/0xff0
    [  308.532593]  ? lock_downgrade+0x610/0x610
    [  308.532640]  ? drm_atomic_set_property+0x1220/0x1220 [drm]
    [  308.532680]  drm_ioctl_kernel+0x154/0x1a0 [drm]
    [  308.532755]  drm_ioctl+0x624/0x8f0 [drm]
    [  308.532858]  ? drm_atomic_set_property+0x1220/0x1220 [drm]
    [  308.532976]  ? drm_getunique+0x210/0x210 [drm]
    [  308.533061]  do_vfs_ioctl+0xd92/0xe40
    [  308.533121]  ? ioctl_preallocate+0x1b0/0x1b0
    [  308.533160]  ? selinux_capable+0x20/0x20
    [  308.533191]  ? do_fcntl+0x1b1/0xbf0
    [  308.533219]  ? kasan_slab_free+0xa2/0xb0
    [  308.533249]  ? f_getown+0x4b/0xa0
    [  308.533278]  ? putname+0xcf/0xe0
    [  308.533309]  ? security_file_ioctl+0x57/0x90
    [  308.533342]  SyS_ioctl+0x4e/0x80
    [  308.533374]  entry_SYSCALL_64_fastpath+0x18/0xad
    [  308.533405] RIP: 0033:0x7ff00779e4d7
    [  308.533431] RSP: 002b:00007fff66a043d8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    [  308.533481] RAX: ffffffffffffffda RBX: 000000e7c7ca5910 RCX: 00007ff00779e4d7
    [  308.533560] RDX: 00007fff66a04430 RSI: 00000000c03864bc RDI: 0000000000000003
    [  308.533608] RBP: 00007ff007a5fb00 R08: 000000e7c7ca4620 R09: 000000e7c7ca5e60
    [  308.533647] R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000070
    [  308.533685] R13: 0000000000000000 R14: 0000000000000000 R15: 000000e7c7ca5930
    [  308.533770] Code: ff df 55 48 89 e5 41 55 41 54 53 48 89 fb 48 83 c7
    50 48 89 fa 48 c1 ea 03 80 3c 02 00 74 05 e8 94 d4 16 e7 48 83 7b 50 00
    74 02 <0f> ff 4c 8d 6b 58 48 b8 00 00 00 00 00 fc ff df 4c 89 ea 48 c1
    [  308.534086] ---[ end trace 77f11e53b1df44ad ]---
    
    Solve this by adding the missing return.
    
    This is also a bugfix because we could end up rejecting updates with
    -EINVAL because of a early -EDEADLK, while if atomic_check ran to
    completion it might have downgraded the modeset to a fastset.
    
    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Testcase: kms_atomic
    Link: https://patchwork.freedesktop.org/patch/msgid/20170815095706.23624-1-maarten.lankhorst@linux.intel.com
    Fixes: d34f20d6e2f2 ("drm: Atomic modeset ioctl")
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a9d7664ffb2c223c488058ee6bee61512db9396
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sat Aug 19 13:05:58 2017 +0100

    drm: Release driver tracking before making the object available again
    
    commit fe4600a548f2763dec91b3b27a1245c370ceee2a upstream.
    
    This is the same bug as we fixed in commit f6cd7daecff5 ("drm: Release
    driver references to handle before making it available again"), but now
    the exposure is via the PRIME lookup tables. If we remove the
    object/handle from the PRIME lut, then a new request for the same
    object/fd will generate a new handle, thus for a short window that
    object is known to userspace by two different handles. Fix this by
    releasing the driver tracking before PRIME.
    
    Fixes: 0ff926c7d4f0 ("drm/prime: add exported buffers to current fprivs
    imported buffer list (v2)")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Daniel Vetter <daniel.vetter@intel.com>
    Cc: Rob Clark <robdclark@gmail.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Thierry Reding <treding@nvidia.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170819120558.6465-1-chris@chris-wilson.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 33e4c6378417fe0dbc8777e214be2aa35bb48901
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Wed Aug 9 15:28:22 2017 +0200

    i2c: designware: Fix system suspend
    
    commit a23318feeff662c8d25d21623daebdd2e55ec221 upstream.
    
    The commit 8503ff166504 ("i2c: designware: Avoid unnecessary resuming
    during system suspend"), may suggest to the PM core to try out the so
    called direct_complete path for system sleep. In this path, the PM core
    treats a runtime suspended device as it's already in a proper low power
    state for system sleep, which makes it skip calling the system sleep
    callbacks for the device, except for the ->prepare() and the ->complete()
    callbacks.
    
    However, the PM core may unset the direct_complete flag for a parent
    device, in case its child device are being system suspended before. In this
    scenario, the PM core invokes the system sleep callbacks, no matter if the
    device is runtime suspended or not.
    
    Particularly in cases of an existing i2c slave device, the above path is
    triggered, which breaks the assumption that the i2c device is always
    runtime resumed whenever the dw_i2c_plat_suspend() is being called.
    
    More precisely, dw_i2c_plat_suspend() calls clk_core_disable() and
    clk_core_unprepare(), for an already disabled/unprepared clock, leading to
    a splat in the log about clocks calls being wrongly balanced and breaking
    system sleep.
    
    To still allow the direct_complete path in cases when it's possible, but
    also to keep the fix simple, let's runtime resume the i2c device in the
    ->suspend() callback, before continuing to put the device into low power
    state.
    
    Note, in cases when the i2c device is attached to the ACPI PM domain, this
    problem doesn't occur, because ACPI's ->suspend() callback, assigned to
    acpi_subsys_suspend(), already calls pm_runtime_resume() for the device.
    
    It should also be noted that this change does not fix commit 8503ff166504
    ("i2c: designware: Avoid unnecessary resuming during system suspend").
    Because for the non-ACPI case, the system sleep support was already broken
    prior that point.
    
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Tested-by: John Stultz <john.stultz@linaro.org>
    Tested-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10814c149eeb7f604e2ec7cff51b42267beffb38
Author: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
Date:   Tue Aug 1 12:58:47 2017 +0300

    ARCv2: PAE40: Explicitly set MSB counterpart of SLC region ops addresses
    
    commit 7d79cee2c6540ea64dd917a14e2fd63d4ac3d3c0 upstream.
    
    It is necessary to explicitly set both SLC_AUX_RGN_START1 and SLC_AUX_RGN_END1
    which hold MSB bits of the physical address correspondingly of region start
    and end otherwise SLC region operation is executed in unpredictable manner
    
    Without this patch, SLC flushes on HSDK (IOC disabled) were taking
    seconds.
    
    Reported-by: Vladimir Kondratiev <vladimir.kondratiev@intel.com>
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    [vgupta: PAR40 regs only written if PAE40 exist]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b1c81dd7fdbfe2f855454d0329c70222deb29d4
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Aug 23 09:30:17 2017 +0200

    ALSA: hda - Add stereo mic quirk for Lenovo G50-70 (17aa:3978)
    
    commit bbba6f9d3da357bbabc6fda81e99ff5584500e76 upstream.
    
    Lenovo G50-70 (17aa:3978) with Conexant codec chip requires the
    similar workaround for the inverted stereo dmic like other Lenovo
    models.
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1020657
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 099e57fcb03fb46ec707c9627ebc5e8b6f1ffcdc
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Aug 22 08:15:13 2017 +0200

    ALSA: core: Fix unexpected error at replacing user TLV
    
    commit 88c54cdf61f508ebcf8da2d819f5dfc03e954d1d upstream.
    
    When user tries to replace the user-defined control TLV, the kernel
    checks the change of its content via memcmp().  The problem is that
    the kernel passes the return value from memcmp() as is.  memcmp()
    gives a non-zero negative value depending on the comparison result,
    and this shall be recognized as an error code.
    
    The patch covers that corner-case, return 1 properly for the changed
    TLV.
    
    Fixes: 8aa9b586e420 ("[ALSA] Control API - more robust TLV implementation")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07051c1754775c95306ef75730efbaa321a97523
Author: KT Liao <kt.liao@emc.com.tw>
Date:   Fri Aug 18 16:58:15 2017 -0700

    Input: elan_i2c - add ELAN0602 ACPI ID to support Lenovo Yoga310
    
    commit 1d2226e45040ed4aee95b633cbd64702bf7fc2a1 upstream.
    
    Add ELAN0602 to the list of known ACPI IDs to enable support for ELAN
    touchpads found in Lenovo Yoga310.
    
    Signed-off-by: KT Liao <kt.liao@emc.com.tw>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5609ae96bcd6eca6c356d257aa5e7597c9e4284c
Author: Aaron Ma <aaron.ma@canonical.com>
Date:   Fri Aug 18 12:17:21 2017 -0700

    Input: trackpoint - add new trackpoint firmware ID
    
    commit ec667683c532c93fb41e100e5d61a518971060e2 upstream.
    
    Synaptics add new TP firmware ID: 0x2 and 0x3, for now both lower 2 bits
    are indicated as TP. Change the constant to bitwise values.
    
    This makes trackpoint to be recognized on Lenovo Carbon X1 Gen5 instead
    of it being identified as "PS/2 Generic Mouse".
    
    Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a56800ae1c5779e31b795341cc736afa2908b55e
Author: Tomas Winkler <tomas.winkler@intel.com>
Date:   Tue Nov 29 16:49:27 2016 +0200

    mei: me: add lewisburg device ids
    
    commit 9ff2007bea1f1bfc53ac0bc7ccf8200bb275fd52 upstream.
    
    Add MEI Lewisburg PCH IDs for Purley based workstations.
    
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 707352e687452e2d14b49fdd02ddf9b5fd6af621
Author: Tomas Winkler <tomas.winkler@intel.com>
Date:   Mon Feb 29 22:03:23 2016 +0200

    mei: me: add broxton pci device ids
    
    commit dd16f6cdeb4e02a728863d3cf99aaab352f0d761 upstream.
    
    Add device ids for Broxton SoC based devices.
    
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58079f56b30227c37709e9db7e9b51204e81f4ea
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Sat Aug 19 15:37:07 2017 +0300

    net_sched: fix order of queue length updates in qdisc_replace()
    
    
    [ Upstream commit 68a66d149a8c78ec6720f268597302883e48e9fa ]
    
    This important to call qdisc_tree_reduce_backlog() after changing queue
    length. Parent qdisc should deactivate class in ->qlen_notify() called from
    qdisc_tree_reduce_backlog() but this happens only if qdisc->q.qlen in zero.
    
    Missed class deactivations leads to crashes/warnings at picking packets
    from empty qdisc and corrupting state at reactivating this class in future.
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Fixes: 86a7996cc8a0 ("net_sched: introduce qdisc_replace() helper")
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 248af6aa226c5e3d503a26e109db944a1cabdb48
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Aug 18 11:01:36 2017 +0800

    net: sched: fix NULL pointer dereference when action calls some targets
    
    
    [ Upstream commit 4f8a881acc9d1adaf1e552349a0b1df28933a04c ]
    
    As we know in some target's checkentry it may dereference par.entryinfo
    to check entry stuff inside. But when sched action calls xt_check_target,
    par.entryinfo is set with NULL. It would cause kernel panic when calling
    some targets.
    
    It can be reproduce with:
      # tc qd add dev eth1 ingress handle ffff:
      # tc filter add dev eth1 parent ffff: u32 match u32 0 0 action xt \
        -j ECN --ecn-tcp-remove
    
    It could also crash kernel when using target CLUSTERIP or TPROXY.
    
    By now there's no proper value for par.entryinfo in ipt_init_target,
    but it can not be set with NULL. This patch is to void all these
    panics by setting it with an ipt_entry obj with all members = 0.
    
    Note that this issue has been there since the very beginning.
    
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eece6c91dd33da40509e300b4da75f9c1f989269
Author: Colin Ian King <colin.king@canonical.com>
Date:   Thu Aug 17 23:14:58 2017 +0100

    irda: do not leak initialized list.dev to userspace
    
    
    [ Upstream commit b024d949a3c24255a7ef1a470420eb478949aa4c ]
    
    list.dev has not been initialized and so the copy_to_user is copying
    data from the stack back to user space which is a potential
    information leak. Fix this ensuring all of list is initialized to
    zero.
    
    Detected by CoverityScan, CID#1357894 ("Uninitialized scalar variable")
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e39b7409f3b852ae95e580207b4aec93965834c
Author: Neal Cardwell <ncardwell@google.com>
Date:   Wed Aug 16 17:53:36 2017 -0400

    tcp: when rearming RTO, if RTO time is in past then fire RTO ASAP
    
    
    [ Upstream commit cdbeb633ca71a02b7b63bfeb94994bf4e1a0b894 ]
    
    In some situations tcp_send_loss_probe() can realize that it's unable
    to send a loss probe (TLP), and falls back to calling tcp_rearm_rto()
    to schedule an RTO timer. In such cases, sometimes tcp_rearm_rto()
    realizes that the RTO was eligible to fire immediately or at some
    point in the past (delta_us <= 0). Previously in such cases
    tcp_rearm_rto() was scheduling such "overdue" RTOs to happen at now +
    icsk_rto, which caused needless delays of hundreds of milliseconds
    (and non-linear behavior that made reproducible testing
    difficult). This commit changes the logic to schedule "overdue" RTOs
    ASAP, rather than at now + icsk_rto.
    
    Fixes: 6ba8a3b19e76 ("tcp: Tail loss probe (TLP)")
    Suggested-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    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 ece3ff173731fa87fec618fbf8734ca867eb8e42
Author: Wei Wang <weiwan@google.com>
Date:   Fri Aug 18 17:14:49 2017 -0700

    ipv6: repair fib6 tree in failure case
    
    
    [ Upstream commit 348a4002729ccab8b888b38cbc099efa2f2a2036 ]
    
    In fib6_add(), it is possible that fib6_add_1() picks an intermediate
    node and sets the node's fn->leaf to NULL in order to add this new
    route. However, if fib6_add_rt2node() fails to add the new
    route for some reason, fn->leaf will be left as NULL and could
    potentially cause crash when fn->leaf is accessed in fib6_locate().
    This patch makes sure fib6_repair_tree() is called to properly repair
    fn->leaf in the above failure case.
    
    Here is the syzkaller reported general protection fault in fib6_locate:
    kasan: CONFIG_KASAN_INLINE enabled
    kasan: GPF could be caused by NULL-ptr deref or user memory access
    general protection fault: 0000 [#1] SMP KASAN
    Modules linked in:
    CPU: 0 PID: 40937 Comm: syz-executor3 Not tainted
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    task: ffff8801d7d64100 ti: ffff8801d01a0000 task.ti: ffff8801d01a0000
    RIP: 0010:[<ffffffff82a3e0e1>]  [<ffffffff82a3e0e1>] __ipv6_prefix_equal64_half include/net/ipv6.h:475 [inline]
    RIP: 0010:[<ffffffff82a3e0e1>]  [<ffffffff82a3e0e1>] ipv6_prefix_equal include/net/ipv6.h:492 [inline]
    RIP: 0010:[<ffffffff82a3e0e1>]  [<ffffffff82a3e0e1>] fib6_locate_1 net/ipv6/ip6_fib.c:1210 [inline]
    RIP: 0010:[<ffffffff82a3e0e1>]  [<ffffffff82a3e0e1>] fib6_locate+0x281/0x3c0 net/ipv6/ip6_fib.c:1233
    RSP: 0018:ffff8801d01a36a8  EFLAGS: 00010202
    RAX: 0000000000000020 RBX: ffff8801bc790e00 RCX: ffffc90002983000
    RDX: 0000000000001219 RSI: ffff8801d01a37a0 RDI: 0000000000000100
    RBP: ffff8801d01a36f0 R08: 00000000000000ff R09: 0000000000000000
    R10: 0000000000000003 R11: 0000000000000000 R12: 0000000000000001
    R13: dffffc0000000000 R14: ffff8801d01a37a0 R15: 0000000000000000
    FS:  00007f6afd68c700(0000) GS:ffff8801db400000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000004c6340 CR3: 00000000ba41f000 CR4: 00000000001426f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Stack:
     ffff8801d01a37a8 ffff8801d01a3780 ffffed003a0346f5 0000000c82a23ea0
     ffff8800b7bd7700 ffff8801d01a3780 ffff8800b6a1c940 ffffffff82a23ea0
     ffff8801d01a3920 ffff8801d01a3748 ffffffff82a223d6 ffff8801d7d64988
    Call Trace:
     [<ffffffff82a223d6>] ip6_route_del+0x106/0x570 net/ipv6/route.c:2109
     [<ffffffff82a23f9d>] inet6_rtm_delroute+0xfd/0x100 net/ipv6/route.c:3075
     [<ffffffff82621359>] rtnetlink_rcv_msg+0x549/0x7a0 net/core/rtnetlink.c:3450
     [<ffffffff8274c1d1>] netlink_rcv_skb+0x141/0x370 net/netlink/af_netlink.c:2281
     [<ffffffff82613ddf>] rtnetlink_rcv+0x2f/0x40 net/core/rtnetlink.c:3456
     [<ffffffff8274ad38>] netlink_unicast_kernel net/netlink/af_netlink.c:1206 [inline]
     [<ffffffff8274ad38>] netlink_unicast+0x518/0x750 net/netlink/af_netlink.c:1232
     [<ffffffff8274b83e>] netlink_sendmsg+0x8ce/0xc30 net/netlink/af_netlink.c:1778
     [<ffffffff82564aff>] sock_sendmsg_nosec net/socket.c:609 [inline]
     [<ffffffff82564aff>] sock_sendmsg+0xcf/0x110 net/socket.c:619
     [<ffffffff82564d62>] sock_write_iter+0x222/0x3a0 net/socket.c:834
     [<ffffffff8178523d>] new_sync_write+0x1dd/0x2b0 fs/read_write.c:478
     [<ffffffff817853f4>] __vfs_write+0xe4/0x110 fs/read_write.c:491
     [<ffffffff81786c38>] vfs_write+0x178/0x4b0 fs/read_write.c:538
     [<ffffffff817892a9>] SYSC_write fs/read_write.c:585 [inline]
     [<ffffffff817892a9>] SyS_write+0xd9/0x1b0 fs/read_write.c:577
     [<ffffffff82c71e32>] entry_SYSCALL_64_fastpath+0x12/0x17
    
    Note: there is no "Fixes" tag as this seems to be a bug introduced
    very early.
    
    Signed-off-by: Wei Wang <weiwan@google.com>
    Acked-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 6415a71ddf15b54939937581a5e35a4ab07883a0
Author: Wei Wang <weiwan@google.com>
Date:   Wed Aug 16 11:18:09 2017 -0700

    ipv6: reset fn->rr_ptr when replacing route
    
    
    [ Upstream commit 383143f31d7d3525a1dbff733d52fff917f82f15 ]
    
    syzcaller reported the following use-after-free issue in rt6_select():
    BUG: KASAN: use-after-free in rt6_select net/ipv6/route.c:755 [inline] at addr ffff8800bc6994e8
    BUG: KASAN: use-after-free in ip6_pol_route.isra.46+0x1429/0x1470 net/ipv6/route.c:1084 at addr ffff8800bc6994e8
    Read of size 4 by task syz-executor1/439628
    CPU: 0 PID: 439628 Comm: syz-executor1 Not tainted 4.3.5+ #8
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
     0000000000000000 ffff88018fe435b0 ffffffff81ca384d ffff8801d3588c00
     ffff8800bc699380 ffff8800bc699500 dffffc0000000000 ffff8801d40a47c0
     ffff88018fe435d8 ffffffff81735751 ffff88018fe43660 ffff8800bc699380
    Call Trace:
     [<ffffffff81ca384d>] __dump_stack lib/dump_stack.c:15 [inline]
     [<ffffffff81ca384d>] dump_stack+0xc1/0x124 lib/dump_stack.c:51
    sctp: [Deprecated]: syz-executor0 (pid 439615) Use of struct sctp_assoc_value in delayed_ack socket option.
    Use struct sctp_sack_info instead
     [<ffffffff81735751>] kasan_object_err+0x21/0x70 mm/kasan/report.c:158
     [<ffffffff817359c4>] print_address_description mm/kasan/report.c:196 [inline]
     [<ffffffff817359c4>] kasan_report_error+0x1b4/0x4a0 mm/kasan/report.c:285
     [<ffffffff81735d93>] kasan_report mm/kasan/report.c:305 [inline]
     [<ffffffff81735d93>] __asan_report_load4_noabort+0x43/0x50 mm/kasan/report.c:325
     [<ffffffff82a28e39>] rt6_select net/ipv6/route.c:755 [inline]
     [<ffffffff82a28e39>] ip6_pol_route.isra.46+0x1429/0x1470 net/ipv6/route.c:1084
     [<ffffffff82a28fb1>] ip6_pol_route_output+0x81/0xb0 net/ipv6/route.c:1203
     [<ffffffff82ab0a50>] fib6_rule_action+0x1f0/0x680 net/ipv6/fib6_rules.c:95
     [<ffffffff8265cbb6>] fib_rules_lookup+0x2a6/0x7a0 net/core/fib_rules.c:223
     [<ffffffff82ab1430>] fib6_rule_lookup+0xd0/0x250 net/ipv6/fib6_rules.c:41
     [<ffffffff82a22006>] ip6_route_output+0x1d6/0x2c0 net/ipv6/route.c:1224
     [<ffffffff829e83d2>] ip6_dst_lookup_tail+0x4d2/0x890 net/ipv6/ip6_output.c:943
     [<ffffffff829e889a>] ip6_dst_lookup_flow+0x9a/0x250 net/ipv6/ip6_output.c:1079
     [<ffffffff82a9f7d8>] ip6_datagram_dst_update+0x538/0xd40 net/ipv6/datagram.c:91
     [<ffffffff82aa0978>] __ip6_datagram_connect net/ipv6/datagram.c:251 [inline]
     [<ffffffff82aa0978>] ip6_datagram_connect+0x518/0xe50 net/ipv6/datagram.c:272
     [<ffffffff82aa1313>] ip6_datagram_connect_v6_only+0x63/0x90 net/ipv6/datagram.c:284
     [<ffffffff8292f790>] inet_dgram_connect+0x170/0x1f0 net/ipv4/af_inet.c:564
     [<ffffffff82565547>] SYSC_connect+0x1a7/0x2f0 net/socket.c:1582
     [<ffffffff8256a649>] SyS_connect+0x29/0x30 net/socket.c:1563
     [<ffffffff82c72032>] entry_SYSCALL_64_fastpath+0x12/0x17
    Object at ffff8800bc699380, in cache ip6_dst_cache size: 384
    
    The root cause of it is that in fib6_add_rt2node(), when it replaces an
    existing route with the new one, it does not update fn->rr_ptr.
    This commit resets fn->rr_ptr to NULL when it points to a route which is
    replaced in fib6_add_rt2node().
    
    Fixes: 27596472473a ("ipv6: fix ECMP route replacement")
    Signed-off-by: Wei Wang <weiwan@google.com>
    Acked-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 69827c395d25abc61023b96cbddaa3af1f3acea6
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Aug 16 09:41:54 2017 -0700

    tipc: fix use-after-free
    
    
    [ Upstream commit 5bfd37b4de5c98e86b12bd13be5aa46c7484a125 ]
    
    syszkaller reported use-after-free in tipc [1]
    
    When msg->rep skb is freed, set the pointer to NULL,
    so that caller does not free it again.
    
    [1]
    
    ==================================================================
    BUG: KASAN: use-after-free in skb_push+0xd4/0xe0 net/core/skbuff.c:1466
    Read of size 8 at addr ffff8801c6e71e90 by task syz-executor5/4115
    
    CPU: 1 PID: 4115 Comm: syz-executor5 Not tainted 4.13.0-rc4+ #32
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:52
     print_address_description+0x73/0x250 mm/kasan/report.c:252
     kasan_report_error mm/kasan/report.c:351 [inline]
     kasan_report+0x24e/0x340 mm/kasan/report.c:409
     __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:430
     skb_push+0xd4/0xe0 net/core/skbuff.c:1466
     tipc_nl_compat_recv+0x833/0x18f0 net/tipc/netlink_compat.c:1209
     genl_family_rcv_msg+0x7b7/0xfb0 net/netlink/genetlink.c:598
     genl_rcv_msg+0xb2/0x140 net/netlink/genetlink.c:623
     netlink_rcv_skb+0x216/0x440 net/netlink/af_netlink.c:2397
     genl_rcv+0x28/0x40 net/netlink/genetlink.c:634
     netlink_unicast_kernel net/netlink/af_netlink.c:1265 [inline]
     netlink_unicast+0x4e8/0x6f0 net/netlink/af_netlink.c:1291
     netlink_sendmsg+0xa4a/0xe60 net/netlink/af_netlink.c:1854
     sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     sock_write_iter+0x31a/0x5d0 net/socket.c:898
     call_write_iter include/linux/fs.h:1743 [inline]
     new_sync_write fs/read_write.c:457 [inline]
     __vfs_write+0x684/0x970 fs/read_write.c:470
     vfs_write+0x189/0x510 fs/read_write.c:518
     SYSC_write fs/read_write.c:565 [inline]
     SyS_write+0xef/0x220 fs/read_write.c:557
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    RIP: 0033:0x4512e9
    RSP: 002b:00007f3bc8184c08 EFLAGS: 00000216 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512e9
    RDX: 0000000000000020 RSI: 0000000020fdb000 RDI: 0000000000000006
    RBP: 0000000000000086 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004b5e76
    R13: 00007f3bc8184b48 R14: 00000000004b5e86 R15: 0000000000000000
    
    Allocated by task 4115:
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:551
     kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:489
     kmem_cache_alloc_node+0x13d/0x750 mm/slab.c:3651
     __alloc_skb+0xf1/0x740 net/core/skbuff.c:219
     alloc_skb include/linux/skbuff.h:903 [inline]
     tipc_tlv_alloc+0x26/0xb0 net/tipc/netlink_compat.c:148
     tipc_nl_compat_dumpit+0xf2/0x3c0 net/tipc/netlink_compat.c:248
     tipc_nl_compat_handle net/tipc/netlink_compat.c:1130 [inline]
     tipc_nl_compat_recv+0x756/0x18f0 net/tipc/netlink_compat.c:1199
     genl_family_rcv_msg+0x7b7/0xfb0 net/netlink/genetlink.c:598
     genl_rcv_msg+0xb2/0x140 net/netlink/genetlink.c:623
     netlink_rcv_skb+0x216/0x440 net/netlink/af_netlink.c:2397
     genl_rcv+0x28/0x40 net/netlink/genetlink.c:634
     netlink_unicast_kernel net/netlink/af_netlink.c:1265 [inline]
     netlink_unicast+0x4e8/0x6f0 net/netlink/af_netlink.c:1291
     netlink_sendmsg+0xa4a/0xe60 net/netlink/af_netlink.c:1854
     sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     sock_write_iter+0x31a/0x5d0 net/socket.c:898
     call_write_iter include/linux/fs.h:1743 [inline]
     new_sync_write fs/read_write.c:457 [inline]
     __vfs_write+0x684/0x970 fs/read_write.c:470
     vfs_write+0x189/0x510 fs/read_write.c:518
     SYSC_write fs/read_write.c:565 [inline]
     SyS_write+0xef/0x220 fs/read_write.c:557
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    Freed by task 4115:
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     kasan_slab_free+0x71/0xc0 mm/kasan/kasan.c:524
     __cache_free mm/slab.c:3503 [inline]
     kmem_cache_free+0x77/0x280 mm/slab.c:3763
     kfree_skbmem+0x1a1/0x1d0 net/core/skbuff.c:622
     __kfree_skb net/core/skbuff.c:682 [inline]
     kfree_skb+0x165/0x4c0 net/core/skbuff.c:699
     tipc_nl_compat_dumpit+0x36a/0x3c0 net/tipc/netlink_compat.c:260
     tipc_nl_compat_handle net/tipc/netlink_compat.c:1130 [inline]
     tipc_nl_compat_recv+0x756/0x18f0 net/tipc/netlink_compat.c:1199
     genl_family_rcv_msg+0x7b7/0xfb0 net/netlink/genetlink.c:598
     genl_rcv_msg+0xb2/0x140 net/netlink/genetlink.c:623
     netlink_rcv_skb+0x216/0x440 net/netlink/af_netlink.c:2397
     genl_rcv+0x28/0x40 net/netlink/genetlink.c:634
     netlink_unicast_kernel net/netlink/af_netlink.c:1265 [inline]
     netlink_unicast+0x4e8/0x6f0 net/netlink/af_netlink.c:1291
     netlink_sendmsg+0xa4a/0xe60 net/netlink/af_netlink.c:1854
     sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     sock_write_iter+0x31a/0x5d0 net/socket.c:898
     call_write_iter include/linux/fs.h:1743 [inline]
     new_sync_write fs/read_write.c:457 [inline]
     __vfs_write+0x684/0x970 fs/read_write.c:470
     vfs_write+0x189/0x510 fs/read_write.c:518
     SYSC_write fs/read_write.c:565 [inline]
     SyS_write+0xef/0x220 fs/read_write.c:557
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    The buggy address belongs to the object at ffff8801c6e71dc0
     which belongs to the cache skbuff_head_cache of size 224
    The buggy address is located 208 bytes inside of
     224-byte region [ffff8801c6e71dc0, ffff8801c6e71ea0)
    The buggy address belongs to the page:
    page:ffffea00071b9c40 count:1 mapcount:0 mapping:ffff8801c6e71000 index:0x0
    flags: 0x200000000000100(slab)
    raw: 0200000000000100 ffff8801c6e71000 0000000000000000 000000010000000c
    raw: ffffea0007224a20 ffff8801d98caf48 ffff8801d9e79040 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8801c6e71d80: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
     ffff8801c6e71e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff8801c6e71e80: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc
                             ^
     ffff8801c6e71f00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff8801c6e71f80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    ==================================================================
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov  <dvyukov@google.com>
    Cc: Jon Maloy <jon.maloy@ericsson.com>
    Cc: Ying Xue <ying.xue@windriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e8d62861552b5691e97d61ecee226000a0519ad
Author: Alexander Potapenko <glider@google.com>
Date:   Wed Aug 16 20:16:40 2017 +0200

    sctp: fully initialize the IPv6 address in sctp_v6_to_addr()
    
    
    [ Upstream commit 15339e441ec46fbc3bf3486bb1ae4845b0f1bb8d ]
    
    KMSAN reported use of uninitialized sctp_addr->v4.sin_addr.s_addr and
    sctp_addr->v6.sin6_scope_id in sctp_v6_cmp_addr() (see below).
    Make sure all fields of an IPv6 address are initialized, which
    guarantees that the IPv4 fields are also initialized.
    
    ==================================================================
     BUG: KMSAN: use of uninitialized memory in sctp_v6_cmp_addr+0x8d4/0x9f0
     net/sctp/ipv6.c:517
     CPU: 2 PID: 31056 Comm: syz-executor1 Not tainted 4.11.0-rc5+ #2944
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
     01/01/2011
     Call Trace:
      dump_stack+0x172/0x1c0 lib/dump_stack.c:42
      is_logbuf_locked mm/kmsan/kmsan.c:59 [inline]
      kmsan_report+0x12a/0x180 mm/kmsan/kmsan.c:938
      native_save_fl arch/x86/include/asm/irqflags.h:18 [inline]
      arch_local_save_flags arch/x86/include/asm/irqflags.h:72 [inline]
      arch_local_irq_save arch/x86/include/asm/irqflags.h:113 [inline]
      __msan_warning_32+0x61/0xb0 mm/kmsan/kmsan_instr.c:467
      sctp_v6_cmp_addr+0x8d4/0x9f0 net/sctp/ipv6.c:517
      sctp_v6_get_dst+0x8c7/0x1630 net/sctp/ipv6.c:290
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
      sctp_assoc_add_peer+0x66d/0x16f0 net/sctp/associola.c:651
      sctp_sendmsg+0x35a5/0x4f90 net/sctp/socket.c:1871
      inet_sendmsg+0x498/0x670 net/ipv4/af_inet.c:762
      sock_sendmsg_nosec net/socket.c:633 [inline]
      sock_sendmsg net/socket.c:643 [inline]
      SYSC_sendto+0x608/0x710 net/socket.c:1696
      SyS_sendto+0x8a/0xb0 net/socket.c:1664
      entry_SYSCALL_64_fastpath+0x13/0x94
     RIP: 0033:0x44b479
     RSP: 002b:00007f6213f21c08 EFLAGS: 00000286 ORIG_RAX: 000000000000002c
     RAX: ffffffffffffffda RBX: 0000000020000000 RCX: 000000000044b479
     RDX: 0000000000000041 RSI: 0000000020edd000 RDI: 0000000000000006
     RBP: 00000000007080a8 R08: 0000000020b85fe4 R09: 000000000000001c
     R10: 0000000000040005 R11: 0000000000000286 R12: 00000000ffffffff
     R13: 0000000000003760 R14: 00000000006e5820 R15: 0000000000ff8000
     origin description: ----dst_saddr@sctp_v6_get_dst
     local variable created at:
      sk_fullsock include/net/sock.h:2321 [inline]
      inet6_sk include/linux/ipv6.h:309 [inline]
      sctp_v6_get_dst+0x91/0x1630 net/sctp/ipv6.c:241
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
    ==================================================================
     BUG: KMSAN: use of uninitialized memory in sctp_v6_cmp_addr+0x8d4/0x9f0
     net/sctp/ipv6.c:517
     CPU: 2 PID: 31056 Comm: syz-executor1 Not tainted 4.11.0-rc5+ #2944
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
     01/01/2011
     Call Trace:
      dump_stack+0x172/0x1c0 lib/dump_stack.c:42
      is_logbuf_locked mm/kmsan/kmsan.c:59 [inline]
      kmsan_report+0x12a/0x180 mm/kmsan/kmsan.c:938
      native_save_fl arch/x86/include/asm/irqflags.h:18 [inline]
      arch_local_save_flags arch/x86/include/asm/irqflags.h:72 [inline]
      arch_local_irq_save arch/x86/include/asm/irqflags.h:113 [inline]
      __msan_warning_32+0x61/0xb0 mm/kmsan/kmsan_instr.c:467
      sctp_v6_cmp_addr+0x8d4/0x9f0 net/sctp/ipv6.c:517
      sctp_v6_get_dst+0x8c7/0x1630 net/sctp/ipv6.c:290
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
      sctp_assoc_add_peer+0x66d/0x16f0 net/sctp/associola.c:651
      sctp_sendmsg+0x35a5/0x4f90 net/sctp/socket.c:1871
      inet_sendmsg+0x498/0x670 net/ipv4/af_inet.c:762
      sock_sendmsg_nosec net/socket.c:633 [inline]
      sock_sendmsg net/socket.c:643 [inline]
      SYSC_sendto+0x608/0x710 net/socket.c:1696
      SyS_sendto+0x8a/0xb0 net/socket.c:1664
      entry_SYSCALL_64_fastpath+0x13/0x94
     RIP: 0033:0x44b479
     RSP: 002b:00007f6213f21c08 EFLAGS: 00000286 ORIG_RAX: 000000000000002c
     RAX: ffffffffffffffda RBX: 0000000020000000 RCX: 000000000044b479
     RDX: 0000000000000041 RSI: 0000000020edd000 RDI: 0000000000000006
     RBP: 00000000007080a8 R08: 0000000020b85fe4 R09: 000000000000001c
     R10: 0000000000040005 R11: 0000000000000286 R12: 00000000ffffffff
     R13: 0000000000003760 R14: 00000000006e5820 R15: 0000000000ff8000
     origin description: ----dst_saddr@sctp_v6_get_dst
     local variable created at:
      sk_fullsock include/net/sock.h:2321 [inline]
      inet6_sk include/linux/ipv6.h:309 [inline]
      sctp_v6_get_dst+0x91/0x1630 net/sctp/ipv6.c:241
      sctp_transport_route+0x101/0x570 net/sctp/transport.c:292
    ==================================================================
    
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bd54371388c0c1e24e3ffa8afde9e130c5799b9
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Aug 16 11:09:12 2017 -0700

    ipv4: better IP_MAX_MTU enforcement
    
    
    [ Upstream commit c780a049f9bf442314335372c9abc4548bfe3e44 ]
    
    While working on yet another syzkaller report, I found
    that our IP_MAX_MTU enforcements were not properly done.
    
    gcc seems to reload dev->mtu for min(dev->mtu, IP_MAX_MTU), and
    final result can be bigger than IP_MAX_MTU :/
    
    This is a problem because device mtu can be changed on other cpus or
    threads.
    
    While this patch does not fix the issue I am working on, it is
    probably worth addressing it.
    
    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 7e1fe0062c24b1cdfb58fb494d03741a6b0a4ac8
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Tue Aug 15 16:37:04 2017 +0300

    net_sched/sfq: update hierarchical backlog when drop packet
    
    
    [ Upstream commit 325d5dc3f7e7c2840b65e4a2988c082c2c0025c5 ]
    
    When sfq_enqueue() drops head packet or packet from another queue it
    have to update backlog at upper qdiscs too.
    
    Fixes: 2ccccf5fb43f ("net_sched: update hierarchical backlog too")
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Acked-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 114414b8547525709851b5901b41fda25f9382b1
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Aug 15 05:26:17 2017 -0700

    ipv4: fix NULL dereference in free_fib_info_rcu()
    
    
    [ Upstream commit 187e5b3ac84d3421d2de3aca949b2791fbcad554 ]
    
    If fi->fib_metrics could not be allocated in fib_create_info()
    we attempt to dereference a NULL pointer in free_fib_info_rcu() :
    
        m = fi->fib_metrics;
        if (m != &dst_default_metrics && atomic_dec_and_test(&m->refcnt))
                kfree(m);
    
    Before my recent patch, we used to call kfree(NULL) and nothing wrong
    happened.
    
    Instead of using RCU to defer freeing while we are under memory stress,
    it seems better to take immediate action.
    
    This was reported by syzkaller team.
    
    Fixes: 3fb07daff8e9 ("ipv4: add reference counting to metrics")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c207ec46b3010d147d9b1363849fe43a818fa696
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Aug 16 07:03:15 2017 -0700

    dccp: defer ccid_hc_tx_delete() at dismantle time
    
    
    [ Upstream commit 120e9dabaf551c6dc03d3a10a1f026376cb1811c ]
    
    syszkaller team reported another problem in DCCP [1]
    
    Problem here is that the structure holding RTO timer
    (ccid2_hc_tx_rto_expire() handler) is freed too soon.
    
    We can not use del_timer_sync() to cancel the timer
    since this timer wants to grab socket lock (that would risk a dead lock)
    
    Solution is to defer the freeing of memory when all references to
    the socket were released. Socket timers do own a reference, so this
    should fix the issue.
    
    [1]
    
    ==================================================================
    BUG: KASAN: use-after-free in ccid2_hc_tx_rto_expire+0x51c/0x5c0 net/dccp/ccids/ccid2.c:144
    Read of size 4 at addr ffff8801d2660540 by task kworker/u4:7/3365
    
    CPU: 1 PID: 3365 Comm: kworker/u4:7 Not tainted 4.13.0-rc4+ #3
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: events_unbound call_usermodehelper_exec_work
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:52
     print_address_description+0x73/0x250 mm/kasan/report.c:252
     kasan_report_error mm/kasan/report.c:351 [inline]
     kasan_report+0x24e/0x340 mm/kasan/report.c:409
     __asan_report_load4_noabort+0x14/0x20 mm/kasan/report.c:429
     ccid2_hc_tx_rto_expire+0x51c/0x5c0 net/dccp/ccids/ccid2.c:144
     call_timer_fn+0x233/0x830 kernel/time/timer.c:1268
     expire_timers kernel/time/timer.c:1307 [inline]
     __run_timers+0x7fd/0xb90 kernel/time/timer.c:1601
     run_timer_softirq+0x21/0x80 kernel/time/timer.c:1614
     __do_softirq+0x2f5/0xba3 kernel/softirq.c:284
     invoke_softirq kernel/softirq.c:364 [inline]
     irq_exit+0x1cc/0x200 kernel/softirq.c:405
     exiting_irq arch/x86/include/asm/apic.h:638 [inline]
     smp_apic_timer_interrupt+0x76/0xa0 arch/x86/kernel/apic/apic.c:1044
     apic_timer_interrupt+0x93/0xa0 arch/x86/entry/entry_64.S:702
    RIP: 0010:arch_local_irq_enable arch/x86/include/asm/paravirt.h:824 [inline]
    RIP: 0010:__raw_write_unlock_irq include/linux/rwlock_api_smp.h:267 [inline]
    RIP: 0010:_raw_write_unlock_irq+0x56/0x70 kernel/locking/spinlock.c:343
    RSP: 0018:ffff8801cd50eaa8 EFLAGS: 00000286 ORIG_RAX: ffffffffffffff10
    RAX: dffffc0000000000 RBX: ffffffff85a090c0 RCX: 0000000000000006
    RDX: 1ffffffff0b595f3 RSI: 1ffff1003962f989 RDI: ffffffff85acaf98
    RBP: ffff8801cd50eab0 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffff8801cc96ea60
    R13: dffffc0000000000 R14: ffff8801cc96e4c0 R15: ffff8801cc96e4c0
     </IRQ>
     release_task+0xe9e/0x1a40 kernel/exit.c:220
     wait_task_zombie kernel/exit.c:1162 [inline]
     wait_consider_task+0x29b8/0x33c0 kernel/exit.c:1389
     do_wait_thread kernel/exit.c:1452 [inline]
     do_wait+0x441/0xa90 kernel/exit.c:1523
     kernel_wait4+0x1f5/0x370 kernel/exit.c:1665
     SYSC_wait4+0x134/0x140 kernel/exit.c:1677
     SyS_wait4+0x2c/0x40 kernel/exit.c:1673
     call_usermodehelper_exec_sync kernel/kmod.c:286 [inline]
     call_usermodehelper_exec_work+0x1a0/0x2c0 kernel/kmod.c:323
     process_one_work+0xbf3/0x1bc0 kernel/workqueue.c:2097
     worker_thread+0x223/0x1860 kernel/workqueue.c:2231
     kthread+0x35e/0x430 kernel/kthread.c:231
     ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:425
    
    Allocated by task 21267:
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:551
     kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:489
     kmem_cache_alloc+0x127/0x750 mm/slab.c:3561
     ccid_new+0x20e/0x390 net/dccp/ccid.c:151
     dccp_hdlr_ccid+0x27/0x140 net/dccp/feat.c:44
     __dccp_feat_activate+0x142/0x2a0 net/dccp/feat.c:344
     dccp_feat_activate_values+0x34e/0xa90 net/dccp/feat.c:1538
     dccp_rcv_request_sent_state_process net/dccp/input.c:472 [inline]
     dccp_rcv_state_process+0xed1/0x1620 net/dccp/input.c:677
     dccp_v4_do_rcv+0xeb/0x160 net/dccp/ipv4.c:679
     sk_backlog_rcv include/net/sock.h:911 [inline]
     __release_sock+0x124/0x360 net/core/sock.c:2269
     release_sock+0xa4/0x2a0 net/core/sock.c:2784
     inet_wait_for_connect net/ipv4/af_inet.c:557 [inline]
     __inet_stream_connect+0x671/0xf00 net/ipv4/af_inet.c:643
     inet_stream_connect+0x58/0xa0 net/ipv4/af_inet.c:682
     SYSC_connect+0x204/0x470 net/socket.c:1642
     SyS_connect+0x24/0x30 net/socket.c:1623
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    Freed by task 3049:
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     kasan_slab_free+0x71/0xc0 mm/kasan/kasan.c:524
     __cache_free mm/slab.c:3503 [inline]
     kmem_cache_free+0x77/0x280 mm/slab.c:3763
     ccid_hc_tx_delete+0xc5/0x100 net/dccp/ccid.c:190
     dccp_destroy_sock+0x1d1/0x2b0 net/dccp/proto.c:225
     inet_csk_destroy_sock+0x166/0x3f0 net/ipv4/inet_connection_sock.c:833
     dccp_done+0xb7/0xd0 net/dccp/proto.c:145
     dccp_time_wait+0x13d/0x300 net/dccp/minisocks.c:72
     dccp_rcv_reset+0x1d1/0x5b0 net/dccp/input.c:160
     dccp_rcv_state_process+0x8fc/0x1620 net/dccp/input.c:663
     dccp_v4_do_rcv+0xeb/0x160 net/dccp/ipv4.c:679
     sk_backlog_rcv include/net/sock.h:911 [inline]
     __sk_receive_skb+0x33e/0xc00 net/core/sock.c:521
     dccp_v4_rcv+0xef1/0x1c00 net/dccp/ipv4.c:871
     ip_local_deliver_finish+0x2e2/0xba0 net/ipv4/ip_input.c:216
     NF_HOOK include/linux/netfilter.h:248 [inline]
     ip_local_deliver+0x1ce/0x6d0 net/ipv4/ip_input.c:257
     dst_input include/net/dst.h:477 [inline]
     ip_rcv_finish+0x8db/0x19c0 net/ipv4/ip_input.c:397
     NF_HOOK include/linux/netfilter.h:248 [inline]
     ip_rcv+0xc3f/0x17d0 net/ipv4/ip_input.c:488
     __netif_receive_skb_core+0x19af/0x33d0 net/core/dev.c:4417
     __netif_receive_skb+0x2c/0x1b0 net/core/dev.c:4455
     process_backlog+0x203/0x740 net/core/dev.c:5130
     napi_poll net/core/dev.c:5527 [inline]
     net_rx_action+0x792/0x1910 net/core/dev.c:5593
     __do_softirq+0x2f5/0xba3 kernel/softirq.c:284
    
    The buggy address belongs to the object at ffff8801d2660100
     which belongs to the cache ccid2_hc_tx_sock of size 1240
    The buggy address is located 1088 bytes inside of
     1240-byte region [ffff8801d2660100, ffff8801d26605d8)
    The buggy address belongs to the page:
    page:ffffea0007499800 count:1 mapcount:0 mapping:ffff8801d2660100 index:0x0 compound_mapcount: 0
    flags: 0x200000000008100(slab|head)
    raw: 0200000000008100 ffff8801d2660100 0000000000000000 0000000100000005
    raw: ffffea00075271a0 ffffea0007538820 ffff8801d3aef9c0 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8801d2660400: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8801d2660480: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff8801d2660500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                               ^
     ffff8801d2660580: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
     ffff8801d2660600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    ==================================================================
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Gerrit Renker <gerrit@erg.abdn.ac.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c65eca7ddd88c6af4761f9d965fa600a0a9557cc
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Aug 14 14:10:25 2017 -0700

    dccp: purge write queue in dccp_destroy_sock()
    
    
    [ Upstream commit 7749d4ff88d31b0be17c8683143135adaaadc6a7 ]
    
    syzkaller reported that DCCP could have a non empty
    write queue at dismantle time.
    
    WARNING: CPU: 1 PID: 2953 at net/core/stream.c:199 sk_stream_kill_queues+0x3ce/0x520 net/core/stream.c:199
    Kernel panic - not syncing: panic_on_warn set ...
    
    CPU: 1 PID: 2953 Comm: syz-executor0 Not tainted 4.13.0-rc4+ #2
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:52
     panic+0x1e4/0x417 kernel/panic.c:180
     __warn+0x1c4/0x1d9 kernel/panic.c:541
     report_bug+0x211/0x2d0 lib/bug.c:183
     fixup_bug+0x40/0x90 arch/x86/kernel/traps.c:190
     do_trap_no_signal arch/x86/kernel/traps.c:224 [inline]
     do_trap+0x260/0x390 arch/x86/kernel/traps.c:273
     do_error_trap+0x120/0x390 arch/x86/kernel/traps.c:310
     do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:323
     invalid_op+0x1e/0x30 arch/x86/entry/entry_64.S:846
    RIP: 0010:sk_stream_kill_queues+0x3ce/0x520 net/core/stream.c:199
    RSP: 0018:ffff8801d182f108 EFLAGS: 00010297
    RAX: ffff8801d1144140 RBX: ffff8801d13cb280 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: ffffffff85137b00 RDI: ffff8801d13cb280
    RBP: ffff8801d182f148 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffff8801d13cb4d0
    R13: ffff8801d13cb3b8 R14: ffff8801d13cb300 R15: ffff8801d13cb3b8
     inet_csk_destroy_sock+0x175/0x3f0 net/ipv4/inet_connection_sock.c:835
     dccp_close+0x84d/0xc10 net/dccp/proto.c:1067
     inet_release+0xed/0x1c0 net/ipv4/af_inet.c:425
     sock_release+0x8d/0x1e0 net/socket.c:597
     sock_close+0x16/0x20 net/socket.c:1126
     __fput+0x327/0x7e0 fs/file_table.c:210
     ____fput+0x15/0x20 fs/file_table.c:246
     task_work_run+0x18a/0x260 kernel/task_work.c:116
     exit_task_work include/linux/task_work.h:21 [inline]
     do_exit+0xa32/0x1b10 kernel/exit.c:865
     do_group_exit+0x149/0x400 kernel/exit.c:969
     get_signal+0x7e8/0x17e0 kernel/signal.c:2330
     do_signal+0x94/0x1ee0 arch/x86/kernel/signal.c:808
     exit_to_usermode_loop+0x21c/0x2d0 arch/x86/entry/common.c:157
     prepare_exit_to_usermode arch/x86/entry/common.c:194 [inline]
     syscall_return_slowpath+0x3a7/0x450 arch/x86/entry/common.c:263
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0cd9201c0c0d1a2f31de8b18271dd9e30fa14f4
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Aug 14 10:16:45 2017 -0700

    af_key: do not use GFP_KERNEL in atomic contexts
    
    
    [ Upstream commit 36f41f8fc6d8aa9f8c9072d66ff7cf9055f5e69b ]
    
    pfkey_broadcast() might be called from non process contexts,
    we can not use GFP_KERNEL in these cases [1].
    
    This patch partially reverts commit ba51b6be38c1 ("net: Fix RCU splat in
    af_key"), only keeping the GFP_ATOMIC forcing under rcu_read_lock()
    section.
    
    [1] : syzkaller reported :
    
    in_atomic(): 1, irqs_disabled(): 0, pid: 2932, name: syzkaller183439
    3 locks held by syzkaller183439/2932:
     #0:  (&net->xfrm.xfrm_cfg_mutex){+.+.+.}, at: [<ffffffff83b43888>] pfkey_sendmsg+0x4c8/0x9f0 net/key/af_key.c:3649
     #1:  (&pfk->dump_lock){+.+.+.}, at: [<ffffffff83b467f6>] pfkey_do_dump+0x76/0x3f0 net/key/af_key.c:293
     #2:  (&(&net->xfrm.xfrm_policy_lock)->rlock){+...+.}, at: [<ffffffff83957632>] spin_lock_bh include/linux/spinlock.h:304 [inline]
     #2:  (&(&net->xfrm.xfrm_policy_lock)->rlock){+...+.}, at: [<ffffffff83957632>] xfrm_policy_walk+0x192/0xa30 net/xfrm/xfrm_policy.c:1028
    CPU: 0 PID: 2932 Comm: syzkaller183439 Not tainted 4.13.0-rc4+ #24
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:52
     ___might_sleep+0x2b2/0x470 kernel/sched/core.c:5994
     __might_sleep+0x95/0x190 kernel/sched/core.c:5947
     slab_pre_alloc_hook mm/slab.h:416 [inline]
     slab_alloc mm/slab.c:3383 [inline]
     kmem_cache_alloc+0x24b/0x6e0 mm/slab.c:3559
     skb_clone+0x1a0/0x400 net/core/skbuff.c:1037
     pfkey_broadcast_one+0x4b2/0x6f0 net/key/af_key.c:207
     pfkey_broadcast+0x4ba/0x770 net/key/af_key.c:281
     dump_sp+0x3d6/0x500 net/key/af_key.c:2685
     xfrm_policy_walk+0x2f1/0xa30 net/xfrm/xfrm_policy.c:1042
     pfkey_dump_sp+0x42/0x50 net/key/af_key.c:2695
     pfkey_do_dump+0xaa/0x3f0 net/key/af_key.c:299
     pfkey_spddump+0x1a0/0x210 net/key/af_key.c:2722
     pfkey_process+0x606/0x710 net/key/af_key.c:2814
     pfkey_sendmsg+0x4d6/0x9f0 net/key/af_key.c:3650
    sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     ___sys_sendmsg+0x755/0x890 net/socket.c:2035
     __sys_sendmsg+0xe5/0x210 net/socket.c:2069
     SYSC_sendmsg net/socket.c:2080 [inline]
     SyS_sendmsg+0x2d/0x50 net/socket.c:2076
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    RIP: 0033:0x445d79
    RSP: 002b:00007f32447c1dc8 EFLAGS: 00000202 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 0000000000445d79
    RDX: 0000000000000000 RSI: 000000002023dfc8 RDI: 0000000000000008
    RBP: 0000000000000086 R08: 00007f32447c2700 R09: 00007f32447c2700
    R10: 00007f32447c2700 R11: 0000000000000202 R12: 0000000000000000
    R13: 00007ffe33edec4f R14: 00007f32447c29c0 R15: 0000000000000000
    
    Fixes: ba51b6be38c1 ("net: Fix RCU splat in af_key")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: David Ahern <dsa@cumulusnetworks.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>