commit d7f6728f57e3ecbb7ef34eb7d9f564d514775d75
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Sep 7 08:35:12 2016 +0200

    Linux 4.7.3

commit 6b553b7ac74ddc1450e8b0a52dfdcfab9129d4c2
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Sat Jul 16 11:47:00 2016 -0400

    SUNRPC: Fix infinite looping in rpc_clnt_iterate_for_each_xprt
    
    commit bdc54d8e3cb4a41dddcabfd86d9eb3aa5f622b75 upstream.
    
    If there were less than 2 entries in the multipath list, then
    xprt_iter_next_entry_multiple() would never advance beyond the
    first entry, which is correct for round robin behaviour, but not
    for the list iteration.
    
    The end result would be infinite looping in rpc_clnt_iterate_for_each_xprt()
    as we would never see the xprt == NULL condition fulfilled.
    
    Reported-by: Oleg Drokin <green@linuxhacker.ru>
    Fixes: 80b14d5e61ca ("SUNRPC: Add a structure to track multiple transports")
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Cc: Jason L Tibbitts III <tibbs@math.uh.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95f837790b66c770d94625206e0cc178df984635
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Wed Jun 22 21:42:16 2016 +0300

    sysfs: correctly handle read offset on PREALLOC attrs
    
    commit 17d0774f80681020eccc9638d925a23f1fc4f671 upstream.
    
    Attributes declared with __ATTR_PREALLOC use sysfs_kf_read() which returns
    zero bytes for non-zero offset. This breaks script checkarray in mdadm tool
    in debian where /bin/sh is 'dash' because its builtin 'read' reads only one
    byte at a time. Script gets 'i' instead of 'idle' when reads current action
    from /sys/block/$dev/md/sync_action and as a result does nothing.
    
    This patch adds trivial implementation of partial read: generate whole
    string and move required part into buffer head.
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Fixes: 4ef67a8c95f3 ("sysfs/kernfs: make read requests on pre-alloc files use the buffer.")
    Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=787950
    Acked-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34242c449ae7753772b68436efef5679a0726cf4
Author: Quentin Schulz <quentin.schulz@free-electrons.com>
Date:   Tue Jul 26 09:47:09 2016 +0200

    hwmon: (iio_hwmon) fix memory leak in name attribute
    
    commit 5d17d3b4bbf3becb89fd48b74340a50a39736f6d upstream.
    
    The "name" variable's memory is now freed when the device is destructed
    thanks to devm function.
    
    Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Fixes: e0f8a24e0edfd ("staging:iio::hwmon interface client driver.")
    Fixes: 61bb53bcbdd86 ("hwmon: (iio_hwmon) Add support for humidity sensors")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6814e92876b85752813b6180ef2fe2250fe0b6ae
Author: Jean Delvare <jdelvare@suse.de>
Date:   Mon Aug 29 13:18:23 2016 +0200

    hwmon: (it87) Add missing sysfs attribute group terminator
    
    commit 3c3292634fc2de1ab97b6aa3222fee647f737adb upstream.
    
    Attribute array it87_attributes_in lacks its NULL terminator,
    causing random behavior when operating on the attribute group.
    
    Fixes: 52929715634a ("hwmon: (it87) Use is_visible for voltage sensors")
    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Cc: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c926ec5e0404b08c98d3b39ffad42cab192d8e5
Author: Andrej Krutak <dev@andree.sk>
Date:   Thu Aug 18 23:52:12 2016 +0200

    ALSA: line6: Fix POD sysfs attributes segfault
    
    commit b027d11263836a0cd335520175257dcb99b43757 upstream.
    
    The commit 02fc76f6a changed base of the sysfs attributes from device to card.
    The "show" callbacks dereferenced wrong objects because of this.
    
    Fixes: 02fc76f6a7db ('ALSA: line6: Create sysfs via snd_card_add_dev_attr()')
    Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com>
    Signed-off-by: Andrej Krutak <dev@andree.sk>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 906c9e0f1444b7c9b28d08458b56da25df3d6e6e
Author: Andrej Krutak <dev@andree.sk>
Date:   Thu Aug 18 23:52:11 2016 +0200

    ALSA: line6: Give up on the lock while URBs are released.
    
    commit adc8a43a6d6688272ebffa81789fa857e603dec6 upstream.
    
    Done, because line6_stream_stop() locks and calls line6_unlink_audio_urbs(),
    which in turn invokes audio_out_callback(), which tries to lock 2nd time.
    
    Fixes:
    
    =============================================
    [ INFO: possible recursive locking detected ]
    4.4.15+ #15 Not tainted
    ---------------------------------------------
    mplayer/3591 is trying to acquire lock:
     (&(&line6pcm->out.lock)->rlock){-.-...}, at: [<bfa27655>] audio_out_callback+0x70/0x110 [snd_usb_line6]
    
    but task is already holding lock:
     (&(&line6pcm->out.lock)->rlock){-.-...}, at: [<bfa26aad>] line6_stream_stop+0x24/0x5c [snd_usb_line6]
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
    
           CPU0
           ----
      lock(&(&line6pcm->out.lock)->rlock);
      lock(&(&line6pcm->out.lock)->rlock);
    
     *** DEADLOCK ***
    
     May be due to missing lock nesting notation
    
    3 locks held by mplayer/3591:
     #0:  (snd_pcm_link_rwlock){.-.-..}, at: [<bf8d49a7>] snd_pcm_stream_lock+0x1e/0x40 [snd_pcm]
     #1:  (&(&substream->self_group.lock)->rlock){-.-...}, at: [<bf8d49af>] snd_pcm_stream_lock+0x26/0x40 [snd_pcm]
     #2:  (&(&line6pcm->out.lock)->rlock){-.-...}, at: [<bfa26aad>] line6_stream_stop+0x24/0x5c [snd_usb_line6]
    
    stack backtrace:
    CPU: 0 PID: 3591 Comm: mplayer Not tainted 4.4.15+ #15
    Hardware name: Generic AM33XX (Flattened Device Tree)
    [<c0015d85>] (unwind_backtrace) from [<c001253d>] (show_stack+0x11/0x14)
    [<c001253d>] (show_stack) from [<c02f1bdf>] (dump_stack+0x8b/0xac)
    [<c02f1bdf>] (dump_stack) from [<c0076f43>] (__lock_acquire+0xc8b/0x1780)
    [<c0076f43>] (__lock_acquire) from [<c007810d>] (lock_acquire+0x99/0x1c0)
    [<c007810d>] (lock_acquire) from [<c06171e7>] (_raw_spin_lock_irqsave+0x3f/0x4c)
    [<c06171e7>] (_raw_spin_lock_irqsave) from [<bfa27655>] (audio_out_callback+0x70/0x110 [snd_usb_line6])
    [<bfa27655>] (audio_out_callback [snd_usb_line6]) from [<c04294db>] (__usb_hcd_giveback_urb+0x53/0xd0)
    [<c04294db>] (__usb_hcd_giveback_urb) from [<c046388d>] (musb_giveback+0x3d/0x98)
    [<c046388d>] (musb_giveback) from [<c04647f5>] (musb_urb_dequeue+0x6d/0x114)
    [<c04647f5>] (musb_urb_dequeue) from [<c042ac11>] (usb_hcd_unlink_urb+0x39/0x98)
    [<c042ac11>] (usb_hcd_unlink_urb) from [<bfa26a87>] (line6_unlink_audio_urbs+0x6a/0x6c [snd_usb_line6])
    [<bfa26a87>] (line6_unlink_audio_urbs [snd_usb_line6]) from [<bfa26acb>] (line6_stream_stop+0x42/0x5c [snd_usb_line6])
    [<bfa26acb>] (line6_stream_stop [snd_usb_line6]) from [<bfa26fe7>] (snd_line6_trigger+0xb6/0xf4 [snd_usb_line6])
    [<bfa26fe7>] (snd_line6_trigger [snd_usb_line6]) from [<bf8d47b7>] (snd_pcm_do_stop+0x36/0x38 [snd_pcm])
    [<bf8d47b7>] (snd_pcm_do_stop [snd_pcm]) from [<bf8d462f>] (snd_pcm_action_single+0x22/0x40 [snd_pcm])
    [<bf8d462f>] (snd_pcm_action_single [snd_pcm]) from [<bf8d46f9>] (snd_pcm_action+0xac/0xb0 [snd_pcm])
    [<bf8d46f9>] (snd_pcm_action [snd_pcm]) from [<bf8d4b61>] (snd_pcm_drop+0x38/0x64 [snd_pcm])
    [<bf8d4b61>] (snd_pcm_drop [snd_pcm]) from [<bf8d6233>] (snd_pcm_common_ioctl1+0x7fe/0xbe8 [snd_pcm])
    [<bf8d6233>] (snd_pcm_common_ioctl1 [snd_pcm]) from [<bf8d6779>] (snd_pcm_playback_ioctl1+0x15c/0x51c [snd_pcm])
    [<bf8d6779>] (snd_pcm_playback_ioctl1 [snd_pcm]) from [<bf8d6b59>] (snd_pcm_playback_ioctl+0x20/0x28 [snd_pcm])
    [<bf8d6b59>] (snd_pcm_playback_ioctl [snd_pcm]) from [<c016714b>] (do_vfs_ioctl+0x3af/0x5c8)
    
    Fixes: 63e20df1e5b2 ('ALSA: line6: Reorganize PCM stream handling')
    Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com>
    Signed-off-by: Andrej Krutak <dev@andree.sk>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c869384f1168b67bc183af2a803a26a25dce4ff5
Author: Andrej Krutak <dev@andree.sk>
Date:   Thu Aug 18 23:52:10 2016 +0200

    ALSA: line6: Remove double line6_pcm_release() after failed acquire.
    
    commit 7e4379eae0e31994ea645db1d13006ea8e5ce539 upstream.
    
    If there's an error, pcm is released in line6_pcm_acquire already.
    
    Fixes: 247d95ee6dd2 ('ALSA: line6: Handle error from line6_pcm_acquire()')
    Reviewed-by: Stefan Hajnoczi <stefanha@gmail.com>
    Signed-off-by: Andrej Krutak <dev@andree.sk>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04790a5d92b5827082b8159e8a0202354c147a3d
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Tue Aug 16 16:59:53 2016 +0100

    ACPI / drivers: replace acpi_probe_lock spinlock with mutex
    
    commit 5331d9cab32ef640b4cd38a43b0858874fbb7168 upstream.
    
    Commit e647b532275b ("ACPI: Add early device probing infrastructure")
    introduced code that allows inserting driver specific
    struct acpi_probe_entry probe entries into ACPI linker sections
    (one per-subsystem, eg irqchip, clocksource) that are then walked
    to retrieve the data and function hooks required to probe the
    respective kernel components.
    
    Probing for all entries in a section is triggered through
    the __acpi_probe_device_table() function, that in turn, according
    to the table ID a given probe entry reports parses the table
    with the function retrieved from the respective section structures
    (ie struct acpi_probe_entry). Owing to the current ACPI table
    parsing implementation, the __acpi_probe_device_table() function
    has to share global variables with the acpi_match_madt() function, so
    in order to guarantee mutual exclusion locking is required
    between the two functions.
    
    Current kernel code implements the locking through the acpi_probe_lock
    spinlock; this has the side effect of requiring all code called
    within the lock (ie struct acpi_probe_entry.probe_{table/subtbl} hooks)
    not to sleep.
    
    However, kernel subsystems that make use of the early probing
    infrastructure are relying on kernel APIs that may sleep (eg
    irq_domain_alloc_fwnode(), among others) in the function calls
    pointed at by struct acpi_probe_entry.{probe_table/subtbl} entries
    (eg gic_v2_acpi_init()), which is a bug.
    
    Since __acpi_probe_device_table() is called from context
    that is allowed to sleep the acpi_probe_lock spinlock can be replaced
    with a mutex; this fixes the issue whilst still guaranteeing
    mutual exclusion.
    
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Fixes: e647b532275b (ACPI: Add early device probing infrastructure)
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aeeae06593de55a83a90a833a0b394702d7021e5
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Tue Aug 16 16:59:52 2016 +0100

    ACPI / drivers: fix typo in ACPI_DECLARE_PROBE_ENTRY macro
    
    commit 3feab13c919f99b0a17d0ca22ae00cf90f5d3fd1 upstream.
    
    When the ACPI_DECLARE_PROBE_ENTRY macro was added in
    commit e647b532275b ("ACPI: Add early device probing infrastructure"),
    a stub macro adding an unused entry was added for the !CONFIG_ACPI
    Kconfig option case to make sure kernel code making use of the
    macro did not require to be guarded within CONFIG_ACPI in order to
    be compiled.
    
    The stub macro was never used since all kernel code that defines
    ACPI_DECLARE_PROBE_ENTRY entries is currently guarded within
    CONFIG_ACPI; it contains a typo that should be nonetheless fixed.
    
    Fix the typo in the stub (ie !CONFIG_ACPI) ACPI_DECLARE_PROBE_ENTRY()
    macro so that it can actually be used if needed.
    
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Fixes: e647b532275b (ACPI: Add early device probing infrastructure)
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e13820b88fa15a8a64f2c0e9036b955b68bb36f
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Wed Jul 20 17:07:34 2016 +0100

    staging: comedi: ni_mio_common: fix wrong insn_write handler
    
    commit 5ca05345c56cb979e1a25ab6146437002f95cac8 upstream.
    
    For counter subdevices, the `s->insn_write` handler is being set to the
    wrong function, `ni_tio_insn_read()`.  It should be
    `ni_tio_insn_write()`.
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Reported-by: Éric Piel <piel@delmic.com>
    Fixes: 10f74377eec3 ("staging: comedi: ni_tio: make ni_tio_winsn() a
      proper comedi (*insn_write)"
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fdb162d36c90911a1d89dd365b395ee272a8a678
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Tue Jul 19 12:17:39 2016 +0100

    staging: comedi: ni_mio_common: fix AO inttrig backwards compatibility
    
    commit f0f4b0cc3a8cffd983f5940d46cd0227f3f5710a upstream.
    
    Commit ebb657babfa9 ("staging: comedi: ni_mio_common: clarify the
    cmd->start_arg validation and use") introduced a backwards compatibility
    issue in the use of asynchronous commands on the AO subdevice when
    `start_src` is `TRIG_EXT`.  Valid values for `start_src` are `TRIG_INT`
    (for internal, software trigger), and `TRIG_EXT` (for external trigger).
    When set to `TRIG_EXT`.  In both cases, the driver relies on an
    internal, software trigger to set things up (allowing the user
    application to write sufficient samples to the data buffer before the
    trigger), so it acts as a software "pre-trigger" in the `TRIG_EXT` case.
    The software trigger is handled by `ni_ao_inttrig()`.
    
    Prior to the above change, when `start_src` was `TRIG_INT`, `start_arg`
    was required to be 0, and `ni_ao_inttrig()` checked that the software
    trigger number was also 0.  After the above change, when `start_src` was
    `TRIG_INT`, any value was allowed for `start_arg`, and `ni_ao_inttrig()`
    checked that the software trigger number matched this `start_arg` value.
    The backwards compatibility issue is that the internal trigger number
    now has to match `start_arg` when `start_src` is `TRIG_EXT` when it
    previously had to be 0.
    
    Fix the backwards compatibility issue in `ni_ao_inttrig()` by always
    allowing software trigger number 0 when `start_src` is something other
    than `TRIG_INT`.
    
    Thanks to Spencer Olson for reporting the issue.
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Reported-by: Spencer Olson <olsonse@umich.edu>
    Fixes: ebb657babfa9 ("staging: comedi: ni_mio_common: clarify the cmd->start_arg validation and use")
    Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91ccea767a0d693e79c96351e4b04bf96f0aed1c
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Thu Jun 30 19:58:32 2016 +0100

    staging: comedi: comedi_test: fix timer race conditions
    
    commit 403fe7f34e3327ddac2e06a15e76a293d613381e upstream.
    
    Commit 73e0e4dfed4c ("staging: comedi: comedi_test: fix timer lock-up")
    fixed a lock-up in the timer routine `waveform_ai_timer()` (which was
    called `waveform_ai_interrupt()` at the time) caused by
    commit 240512474424 ("staging: comedi: comedi_test: use
    comedi_handle_events()").  However, it introduced a race condition that
    can result in the timer routine misbehaving, such as accessing freed
    memory or dereferencing a NULL pointer.
    
    73e0... changed the timer routine to do nothing unless a
    `WAVEFORM_AI_RUNNING` flag was set, and changed `waveform_ai_cancel()`
    to clear the flag and replace a call to `del_timer_sync()` with a call
    to `del_timer()`.  `waveform_ai_cancel()` may be called from the timer
    routine itself (via `comedi_handle_events()`), or from `do_cancel()`.
    (`do_cancel()` is called as a result of a file operation (usually a
    `COMEDI_CANCEL` ioctl command, or a release), or during device removal.)
    When called from `do_cancel()`, the call to `waveform_ai_cancel()` is
    followed by a call to `do_become_nonbusy()`, which frees up stuff for
    the current asynchronous command under the assumption that it is now
    safe to do so.  The race condition occurs when the timer routine
    `waveform_ai_timer()` checks the `WAVEFORM_AI_RUNNING` flag just before
    it is cleared by `waveform_ai_cancel()`, and is still running during the
    call to `do_become_nonbusy()`.  In particular, it can lead to a NULL
    pointer dereference:
    
    BUG: unable to handle kernel NULL pointer dereference at (null)
    IP: [<ffffffffc0c63add>] waveform_ai_timer+0x17d/0x290 [comedi_test]
    
    That corresponds to this line in `waveform_ai_timer()`:
    
                    unsigned int chanspec = cmd->chanlist[async->cur_chan];
    
    but `do_become_nonbusy()` frees `cmd->chanlist` and sets it to `NULL`.
    
    Fix the race by calling `del_timer_sync()` instead of `del_timer()` in
    `waveform_ai_cancel()` when not in an interrupt context.  The only time
    `waveform_ai_cancel()` is called in an interrupt context is when it is
    called from the timer routine itself, via `comedi_handle_events()`.
    
    There is no longer any need for the `WAVEFORM_AI_RUNNING` flag, so get
    rid of it.
    
    The bug was copied from the AI subdevice to the AO when support for
    commands on the AO subdevice was added by commit 0cf55bbef2f9 ("staging:
    comedi: comedi_test: implement commands on AO subdevice").  That
    involves the timer routine `waveform_ao_timer()`, the comedi "cancel"
    routine `waveform_ao_cancel()`, and the flag `WAVEFORM_AO_RUNNING`.  Fix
    it in the same way as for the AI subdevice.
    
    Fixes: 73e0e4dfed4c ("staging: comedi: comedi_test: fix timer lock-up")
    Fixes: 0cf55bbef2f9 ("staging: comedi: comedi_test: implement commands
     on AO subdevice")
    Reported-by: Éric Piel <piel@delmic.com>
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Cc: Éric Piel <piel@delmic.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f231fe0fea6e7df74bb06ab1d84baf24c5998410
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Wed Jun 29 20:27:44 2016 +0100

    staging: comedi: daqboard2000: bug fix board type matching code
    
    commit 80e162ee9b31d77d851b10f8c5299132be1e120f upstream.
    
    `daqboard2000_find_boardinfo()` is supposed to check if the
    DaqBoard/2000 series model is supported, based on the PCI subvendor and
    subdevice ID.  The current code is wrong as it is comparing the PCI
    device's subdevice ID to an expected, fixed value for the subvendor ID.
    It should be comparing the PCI device's subvendor ID to this fixed
    value.  Correct it.
    
    Fixes: 7e8401b23e7f ("staging: comedi: daqboard2000: add back subsystem_device check")
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d04f44366ee632169750fec623eef1b50ff8503
Author: Oleg Drokin <green@linuxhacker.ru>
Date:   Thu Jul 14 23:40:21 2016 -0400

    staging/lustre/llite: Close atomic_open race with several openers
    
    commit 99f1c013194e64d4b67d5d318148303b0e1585e1 upstream.
    
    Right now, if it's an open of a negative dentry, a race is possible
    with several openers who all try to instantiate/rehash the same
    dentry and would hit a BUG_ON in d_add.
    But in fact if we got a negative dentry in atomic_open, that means
    we just revalidated it so no point in talking to MDS at all,
    just return ENOENT and make the race go away completely.
    
    Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc2a4c2ec6a585e6c8cb87fa66532ad1e8e59fd4
Author: Aleksandr Makarov <aleksandr.o.makarov@gmail.com>
Date:   Wed Aug 24 13:06:22 2016 +0300

    USB: serial: option: add WeTelecom 0x6802 and 0x6803 products
    
    commit 40d9c32525cba79130612650b1abc47c0c0f19a8 upstream.
    
    These product IDs are listed in Windows driver.
    0x6803 corresponds to WeTelecom WM-D300.
    0x6802 name is unknown.
    
    Signed-off-by: Aleksandr Makarov <aleksandr.o.makarov@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 017bbbecc4124229ba4a88a837429991598699ff
Author: Aleksandr Makarov <aleksandr.o.makarov@gmail.com>
Date:   Sat Aug 20 13:29:41 2016 +0300

    USB: serial: option: add WeTelecom WM-D200
    
    commit 6695593e4a7659db49ac6eca98c164f7b5589f72 upstream.
    
    Add support for WeTelecom WM-D200.
    
    T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
    D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=22de ProdID=6801 Rev=00.00
    S:  Manufacturer=WeTelecom Incorporated
    S:  Product=WeTelecom Mobile Products
    C:  #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#= 3 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
    
    Signed-off-by: Aleksandr Makarov <aleksandr.o.makarov@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c20b7fb1efbec192b64a29662e77d51bbd8d557
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Fri Aug 12 01:05:09 2016 +0300

    USB: serial: mos7840: fix non-atomic allocation in write path
    
    commit 3b7c7e52efda0d4640060de747768360ba70a7c0 upstream.
    
    There is an allocation with GFP_KERNEL flag in mos7840_write(),
    while it may be called from interrupt context.
    
    Follow-up for commit 191252837626 ("USB: kobil_sct: fix non-atomic
    allocation in write path")
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48e477e5a4492ed67a19b8c481defa8828da0c05
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Fri Aug 12 01:05:08 2016 +0300

    USB: serial: mos7720: fix non-atomic allocation in write path
    
    commit 5a5a1d614287a647b36dff3f40c2b0ceabbc83ec upstream.
    
    There is an allocation with GFP_KERNEL flag in mos7720_write(),
    while it may be called from interrupt context.
    
    Follow-up for commit 191252837626 ("USB: kobil_sct: fix non-atomic
    allocation in write path")
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8951e13689dfb782eea05d9431489d8d5bcfad97
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Wed Aug 24 14:33:27 2016 +0300

    usb: gadget: udc: core: don't starve DMA resources
    
    commit 23fd537c9508fb6e3b93ddf23982f51afc087781 upstream.
    
    Always unmap all SG entries as required by DMA API
    
    Fixes: a698908d3b3b ("usb: gadget: add generic map/unmap request utilities")
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01e62b1ed5a7f85ca333329a49a3bc405668a1e0
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Aug 22 16:58:53 2016 -0400

    USB: fix typo in wMaxPacketSize validation
    
    commit 6c73358c83ce870c0cf32413e5cadb3b9a39c606 upstream.
    
    The maximum value allowed for wMaxPacketSize of a high-speed interrupt
    endpoint is 1024 bytes, not 1023.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Fixes: aed9d65ac327 ("USB: validate wMaxPacketValue entries in endpoint descriptors")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99ecbb456e08f92e630c45d97dae7f5ed5deb7d3
Author: Li Jun <jun.li@nxp.com>
Date:   Tue Aug 16 19:19:11 2016 +0800

    usb: chipidea: udc: don't touch DP when controller is in host mode
    
    commit c4e94174983a86c935be1537a73e496b778b0287 upstream.
    
    When the controller is configured to be dual role and it's in host mode,
    if bind udc and gadgt driver, those gadget operations will do gadget
    disconnect and finally pull down DP line, which will break host function.
    
    Signed-off-by: Li Jun <jun.li@nxp.com>
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c417741ff403dddde8460af7ea4c07165ff5051
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Aug 23 15:32:51 2016 -0400

    USB: avoid left shift by -1
    
    commit 53e5f36fbd2453ad69a3369a1db62dc06c30a4aa upstream.
    
    UBSAN complains about a left shift by -1 in proc_do_submiturb().  This
    can occur when an URB is submitted for a bulk or control endpoint on
    a high-speed device, since the code doesn't bother to check the
    endpoint type; normally only interrupt or isochronous endpoints have
    a nonzero bInterval value.
    
    Aside from the fact that the operation is illegal, it shouldn't matter
    because the result isn't used.  Still, in theory it could cause a
    hardware exception or other problem, so we should work around it.
    This patch avoids doing the left shift unless the shift amount is >= 0.
    
    The same piece of code has another problem.  When checking the device
    speed (the exponential encoding for interrupt endpoints is used only
    by high-speed or faster devices), we need to look for speed >=
    USB_SPEED_SUPER as well as speed == USB_SPEED HIGH.  The patch adds
    this check.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Vittorio Zecca <zeccav@gmail.com>
    Tested-by: Vittorio Zecca <zeccav@gmail.com>
    Suggested-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eab164f31e4177b8d1a10fd4857c290de5fd1428
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Thu Aug 4 19:59:41 2016 +0900

    dmaengine: usb-dmac: check CHCR.DE bit in usb_dmac_isr_channel()
    
    commit 626d2f07de89bf6be3d7301524d0ab3375b81b9c upstream.
    
    The USB-DMAC's interruption happens even if the CHCR.DE is not set to 1
    because CHCR.NULLE is set to 1. So, this driver should call
    usb_dmac_isr_transfer_end() if the DE bit is set to 1 only. Otherwise,
    the desc is possible to be NULL in the usb_dmac_isr_transfer_end().
    
    Fixes: 0c1c8ff32fa2 ("dmaengine: usb-dmac: Add Renesas USB DMA Controller (USB-DMAC) driver)
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 607cbfe122e3ecdddf55d73c56d7f97308ff7bf4
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Thu Aug 18 19:53:36 2016 +0100

    crypto: qat - fix aes-xts key sizes
    
    commit 10bb087ce381c812cd81a65ffd5e6f83e6399291 upstream.
    
    Increase value of supported key sizes for qat_aes_xts.
    aes-xts keys consists of keys of equal size concatenated.
    
    Fixes: def14bfaf30d ("crypto: qat - add support for ctr(aes) and xts(aes)")
    Reported-by: Wenqian Yu <wenqian.yu@intel.com>
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5e60a31f1fc4ccc6d527f05f927bd4364e014ce
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Jul 15 14:09:13 2016 +0300

    crypto: nx - off by one bug in nx_of_update_msc()
    
    commit e514cc0a492a3f39ef71b31590a7ef67537ee04b upstream.
    
    The props->ap[] array is defined like this:
    
            struct alg_props ap[NX_MAX_FC][NX_MAX_MODE][3];
    
    So we can see that if msc->fc and msc->mode are == to NX_MAX_FC or
    NX_MAX_MODE then we're off by one.
    
    Fixes: ae0222b7289d ('powerpc/crypto: nx driver code supporting nx encryption')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad315d3cf53c2395260fb293d9046f6ffe7a2a09
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Tue Aug 16 17:38:54 2016 -0700

    Input: i8042 - set up shared ps2_cmd_mutex for AUX ports
    
    commit 47af45d684b5f3ae000ad448db02ce4f13f73273 upstream.
    
    The commit 4097461897df ("Input: i8042 - break load dependency ...")
    correctly set up ps2_cmd_mutex pointer for the KBD port but forgot to do
    the same for AUX port(s), which results in communication on KBD and AUX
    ports to clash with each other.
    
    Fixes: 4097461897df ("Input: i8042 - break load dependency ...")
    Reported-by: Bruno Wolff III <bruno@wolff.to>
    Tested-by: Bruno Wolff III <bruno@wolff.to>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9014507fff0801b53a14ab05e436610c1459a4a6
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Mon Jul 25 11:36:54 2016 -0700

    Input: i8042 - break load dependency between atkbd/psmouse and i8042
    
    commit 4097461897df91041382ff6fcd2bfa7ee6b2448c upstream.
    
    As explained in 1407814240-4275-1-git-send-email-decui@microsoft.com we
    have a hard load dependency between i8042 and atkbd which prevents
    keyboard from working on Gen2 Hyper-V VMs.
    
    > hyperv_keyboard invokes serio_interrupt(), which needs a valid serio
    > driver like atkbd.c.  atkbd.c depends on libps2.c because it invokes
    > ps2_command().  libps2.c depends on i8042.c because it invokes
    > i8042_check_port_owner().  As a result, hyperv_keyboard actually
    > depends on i8042.c.
    >
    > For a Generation 2 Hyper-V VM (meaning no i8042 device emulated), if a
    > Linux VM (like Arch Linux) happens to configure CONFIG_SERIO_I8042=m
    > rather than =y, atkbd.ko can't load because i8042.ko can't load(due to
    > no i8042 device emulated) and finally hyperv_keyboard can't work and
    > the user can't input: https://bugs.archlinux.org/task/39820
    > (Ubuntu/RHEL/SUSE aren't affected since they use CONFIG_SERIO_I8042=y)
    
    To break the dependency we move away from using i8042_check_port_owner()
    and instead allow serio port owner specify a mutex that clients should use
    to serialize PS/2 command stream.
    
    Reported-by: Mark Laws <mdl@60hz.org>
    Tested-by: Mark Laws <mdl@60hz.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95162d7fa0ec9e213bd8d97a18b2e2cdcb3f6537
Author: Andrew Duggan <aduggan@synaptics.com>
Date:   Mon Aug 22 11:28:11 2016 -0700

    Input: synaptics-rmi4 - fix register descriptor subpacket map construction
    
    commit 3e29d6bb6433ebfa4e187b1164b80baf720d58c3 upstream.
    
    The map_offset variable is specific to the register and needs to be reset
    in the loop. Otherwise, subsequent register's subpacket maps will have
    their bits set at the wrong index.
    
    Signed-off-by: Andrew Duggan <aduggan@synaptics.com>
    Tested-by: Nitin Chaudhary <nitinchaudhary1289@gmail.com>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb2afc2c5a12f5f78aab9b016b6d0cb433c74094
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Mon Aug 22 13:25:56 2016 -0700

    Input: tegra-kbc - fix inverted reset logic
    
    commit fae16989be77b09bab86c79233e4b511ea769cea upstream.
    
    Commit fe6b0dfaba68 ("Input: tegra-kbc - use reset framework")
    accidentally converted _deassert to _assert, so there is no code
    to wake up this hardware.
    
    Fixes: fe6b0dfaba68 ("Input: tegra-kbc - use reset framework")
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Acked-by: Laxman Dewangan <ldewangan@nvidia.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e0af957499ee15afb7e0ce2e9fa83b5708808fd
Author: Jens Axboe <axboe@fb.com>
Date:   Thu Aug 25 08:56:44 2016 -0600

    Revert "floppy: fix open(O_ACCMODE) for ioctl-only open"
    
    commit 468c298ad3ed3f0d94a65f8ca00f6bfc6c2b4e33 upstream.
    
    This reverts commit ff06db1efb2ad6db06eb5b99b88a0c15a9cc9b0e.
    
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff3235105fc7e4ecf04eb308940821d4a098c08d
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Wed Aug 17 21:58:33 2016 -0400

    btrfs: don't create or leak aliased root while cleaning up orphans
    
    commit 35bbb97fc898aeb874cb7c8b746f091caa359994 upstream.
    
    commit 909c3a22da3 (Btrfs: fix loading of orphan roots leading to BUG_ON)
    avoids the BUG_ON but can add an aliased root to the dead_roots list or
    leak the root.
    
    Since we've already been loading roots into the radix tree, we should
    use it before looking the root up on disk.
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64563a38fde57a26f4d68d488d0d4918f843547c
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Mon Aug 15 12:10:33 2016 -0400

    btrfs: properly track when rescan worker is running
    
    commit d2c609b834d62f1e91f1635a27dca29f7806d3d6 upstream.
    
    The qgroup_flags field is overloaded such that it reflects the on-disk
    status of qgroups and the runtime state.  The BTRFS_QGROUP_STATUS_FLAG_RESCAN
    flag is used to indicate that a rescan operation is in progress, but if
    the file system is unmounted while a rescan is running, the rescan
    operation is paused.  If the file system is then mounted read-only,
    the flag will still be present but the rescan operation will not have
    been resumed.  When we go to umount, btrfs_qgroup_wait_for_completion
    will see the flag and interpret it to mean that the rescan worker is
    still running and will wait for a completion that will never come.
    
    This patch uses a separate flag to indicate when the worker is
    running.  The locking and state surrounding the qgroup rescan worker
    needs a lot of attention beyond this patch but this is enough to
    avoid a hung umount.
    
    Signed-off-by; Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    Signed-off-by: Chris Mason <clm@fb.com>

commit 69b69167965e108a775ef20decabcc76fbe4fc08
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Mon Aug 8 22:08:06 2016 -0400

    btrfs: waiting on qgroup rescan should not always be interruptible
    
    commit d06f23d6a947c9abae41dc46be69a56baf36f436 upstream.
    
    We wait on qgroup rescan completion in three places: file system
    shutdown, the quota disable ioctl, and the rescan wait ioctl.  If the
    user sends a signal while we're waiting, we continue happily along.  This
    is expected behavior for the rescan wait ioctl.  It's racy in the shutdown
    path but mostly works due to other unrelated synchronization points.
    In the quota disable path, it Oopses the kernel pretty much immediately.
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c46ca4b75de7501d8b78da2aacb41ef06f906677
Author: Ross Zwisler <ross.zwisler@linux.intel.com>
Date:   Thu Aug 25 15:17:17 2016 -0700

    mm: silently skip readahead for DAX inodes
    
    commit 11bd969fdefea3ac0cb9791224f1e09784e21e58 upstream.
    
    For DAX inodes we need to be careful to never have page cache pages in
    the mapping->page_tree.  This radix tree should be composed only of DAX
    exceptional entries and zero pages.
    
    ltp's readahead02 test was triggering a warning because we were trying
    to insert a DAX exceptional entry but found that a page cache page had
    already been inserted into the tree.  This page was being inserted into
    the radix tree in response to a readahead(2) call.
    
    Readahead doesn't make sense for DAX inodes, but we don't want it to
    report a failure either.  Instead, we just return success and don't do
    any work.
    
    Link: http://lkml.kernel.org/r/20160824221429.21158-1-ross.zwisler@linux.intel.com
    Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
    Reported-by: Jeff Moyer <jmoyer@redhat.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dave Chinner <david@fromorbit.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Jan Kara <jack@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6115cb45eeecd89151830e693d2b5c83dee7120
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Thu Aug 25 15:17:14 2016 -0700

    dax: fix device-dax region base
    
    commit d0e5845561c238619de9f5b77e0d763f4c331ca5 upstream.
    
    The data offset for a dax region needs to account for a reservation in
    the resource range.  Otherwise, device-dax is allowing mappings directly
    into the memmap or device-info-block area with crash signatures like the
    following:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
     IP: get_zone_device_page+0x11/0x30
     Call Trace:
       follow_devmap_pmd+0x298/0x2c0
       follow_page_mask+0x275/0x530
       __get_user_pages+0xe3/0x750
       __gfn_to_pfn_memslot+0x1b2/0x450 [kvm]
       tdp_page_fault+0x130/0x280 [kvm]
       kvm_mmu_page_fault+0x5f/0xf0 [kvm]
       handle_ept_violation+0x94/0x180 [kvm_intel]
       vmx_handle_exit+0x1d3/0x1440 [kvm_intel]
       kvm_arch_vcpu_ioctl_run+0x81d/0x16a0 [kvm]
       kvm_vcpu_ioctl+0x33c/0x620 [kvm]
       do_vfs_ioctl+0xa2/0x5d0
       SyS_ioctl+0x79/0x90
       entry_SYSCALL_64_fastpath+0x1a/0xa4
    
    Fixes: ab68f2622136 ("/dev/dax, pmem: direct access to persistent memory")
    Link: http://lkml.kernel.org/r/147205536732.1606.8994275381938837346.stgit@dwillia2-desk3.amr.corp.intel.com
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Reported-by: Abhilash Kumar Mulumudi <m.abhilash-kumar@hpe.com>
    Reported-by: Toshi Kani <toshi.kani@hpe.com>
    Tested-by: Toshi Kani <toshi.kani@hpe.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 769619f4f7bbf0055f74ebaed9e6eb4cfcf23019
Author: Andrea Arcangeli <aarcange@redhat.com>
Date:   Thu Aug 25 15:16:57 2016 -0700

    soft_dirty: fix soft_dirty during THP split
    
    commit 804dd150468cfd920d92d4b3cf00536fedef3902 upstream.
    
    While adding proper userfaultfd_wp support with bits in pagetable and
    swap entry to avoid false positives WP userfaults through swap/fork/
    KSM/etc, I've been adding a framework that mostly mirrors soft dirty.
    
    So I noticed in one place I had to add uffd_wp support to the pagetables
    that wasn't covered by soft_dirty and I think it should have.
    
    Example: in the THP migration code migrate_misplaced_transhuge_page()
    pmd_mkdirty is called unconditionally after mk_huge_pmd.
    
            entry = mk_huge_pmd(new_page, vma->vm_page_prot);
            entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
    
    That sets soft dirty too (it's a false positive for soft dirty, the soft
    dirty bit could be more finegrained and transfer the bit like uffd_wp
    will do..  pmd/pte_uffd_wp() enforces the invariant that when it's set
    pmd/pte_write is not set).
    
    However in the THP split there's no unconditional pmd_mkdirty after
    mk_huge_pmd and pte_swp_mksoft_dirty isn't called after the migration
    entry is created.  The code sets the dirty bit in the struct page
    instead of setting it in the pagetable (which is fully equivalent as far
    as the real dirty bit is concerned, as the whole point of pagetable bits
    is to be eventually flushed out of to the page, but that is not
    equivalent for the soft-dirty bit that gets lost in translation).
    
    This was found by code review only and totally untested as I'm working
    to actually replace soft dirty and I don't have time to test potential
    soft dirty bugfixes as well :).
    
    Transfer the soft_dirty from pmd to pte during THP splits.
    
    This fix avoids losing the soft_dirty bit and avoids userland memory
    corruption in the checkpoint.
    
    Fixes: eef1b3ba053aa6 ("thp: implement split_huge_pmd()")
    Link: http://lkml.kernel.org/r/1471610515-30229-2-git-send-email-aarcange@redhat.com
    Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
    Acked-by: Pavel Emelyanov <xemul@virtuozzo.com>
    Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
    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 7186b85b2ef084d5c47b2ac8b6347847517702b4
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Thu Aug 25 15:17:11 2016 -0700

    fs/seq_file: fix out-of-bounds read
    
    commit 088bf2ff5d12e2e32ee52a4024fec26e582f44d3 upstream.
    
    seq_read() is a nasty piece of work, not to mention buggy.
    
    It has (I think) an old bug which allows unprivileged userspace to read
    beyond the end of m->buf.
    
    I was getting these:
    
        BUG: KASAN: slab-out-of-bounds in seq_read+0xcd2/0x1480 at addr ffff880116889880
        Read of size 2713 by task trinity-c2/1329
        CPU: 2 PID: 1329 Comm: trinity-c2 Not tainted 4.8.0-rc1+ #96
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
        Call Trace:
          kasan_object_err+0x1c/0x80
          kasan_report_error+0x2cb/0x7e0
          kasan_report+0x4e/0x80
          check_memory_region+0x13e/0x1a0
          kasan_check_read+0x11/0x20
          seq_read+0xcd2/0x1480
          proc_reg_read+0x10b/0x260
          do_loop_readv_writev.part.5+0x140/0x2c0
          do_readv_writev+0x589/0x860
          vfs_readv+0x7b/0xd0
          do_readv+0xd8/0x2c0
          SyS_readv+0xb/0x10
          do_syscall_64+0x1b3/0x4b0
          entry_SYSCALL64_slow_path+0x25/0x25
        Object at ffff880116889100, in cache kmalloc-4096 size: 4096
        Allocated:
        PID = 1329
          save_stack_trace+0x26/0x80
          save_stack+0x46/0xd0
          kasan_kmalloc+0xad/0xe0
          __kmalloc+0x1aa/0x4a0
          seq_buf_alloc+0x35/0x40
          seq_read+0x7d8/0x1480
          proc_reg_read+0x10b/0x260
          do_loop_readv_writev.part.5+0x140/0x2c0
          do_readv_writev+0x589/0x860
          vfs_readv+0x7b/0xd0
          do_readv+0xd8/0x2c0
          SyS_readv+0xb/0x10
          do_syscall_64+0x1b3/0x4b0
          return_from_SYSCALL_64+0x0/0x6a
        Freed:
        PID = 0
        (stack is not available)
        Memory state around the buggy address:
         ffff88011688a000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
         ffff88011688a080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        >ffff88011688a100: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                           ^
         ffff88011688a180: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
         ffff88011688a200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
        ==================================================================
        Disabling lock debugging due to kernel taint
    
    This seems to be the same thing that Dave Jones was seeing here:
    
      https://lkml.org/lkml/2016/8/12/334
    
    There are multiple issues here:
    
      1) If we enter the function with a non-empty buffer, there is an attempt
         to flush it. But it was not clearing m->from after doing so, which
         means that if we try to do this flush twice in a row without any call
         to traverse() in between, we are going to be reading from the wrong
         place -- the splat above, fixed by this patch.
    
      2) If there's a short write to userspace because of page faults, the
         buffer may already contain multiple lines (i.e. pos has advanced by
         more than 1), but we don't save the progress that was made so the
         next call will output what we've already returned previously. Since
         that is a much less serious issue (and I have a headache after
         staring at seq_read() for the past 8 hours), I'll leave that for now.
    
    Link: http://lkml.kernel.org/r/1471447270-32093-1-git-send-email-vegard.nossum@oracle.com
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Reported-by: Dave Jones <davej@codemonkey.org.uk>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    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 bd8349b2cf491f57b6442250b0583e33310d9c4e
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Mon Aug 8 15:58:56 2016 +0200

    gpio: max730x: set gpiochip data pointer before using it
    
    commit 6f4deb18a505523eb7925d646574a95f9e982ff7 upstream.
    
    gpiochip_add_data() has to be called before calling
    max7301_direction_input()
    
    [    4.389883] Unable to handle kernel paging request for data at address 0x00000018
    [    4.397282] Faulting instruction address: 0xc01a8cbc
    [    4.402023] Oops: Kernel access of bad area, sig: 11 [#1]
    [    4.407331] PREEMPT CMPC885
    [    4.410131] CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted 4.5.0-gacdfdee #39
    [    4.418592] Workqueue: deferwq deferred_probe_work_func
    [    4.423711] task: c60798b0 ti: c608a000 task.ti: c608a000
    [    4.429038] NIP: c01a8cbc LR: c01a8e24 CTR: c01ff028
    [    4.433953] REGS: c608bad0 TRAP: 0300   Not tainted  (4.5.0-s3k-dev-gacdfdee-svn-dirty)
    [    4.441847] MSR: 00009032 <EE,ME,IR,DR,RI>  CR: 33039553  XER: a000f940
    [    4.448395] DAR: 00000018 DSISR: c0000000
    GPR00: c01a8e24 c608bb80 c60798b0 c60d6f6c 00000004 00000002 07de2900 00700000
    GPR08: 00000000 00000000 c608a000 00001032 35039553 00000000 c002f37c c6010b64
    GPR16: c6010a48 c6010a14 c6010a00 00000000 c0450000 c0453568 c0453438 c050db14
    GPR24: c62662bc 00000009 ffffffaa c60d6f5d 00000001 00000000 00000000 00000000
    [    4.480371] NIP [c01a8cbc] max7301_direction_input+0x20/0x9c
    [    4.485951] LR [c01a8e24] __max730x_probe+0xec/0x138
    [    4.490812] Call Trace:
    [    4.493268] [c608bba0] [c01a8e24] __max730x_probe+0xec/0x138
    [    4.498878] [c608bbc0] [c01cc368] driver_probe_device+0x190/0x38c
    [    4.504895] [c608bbf0] [c01ca918] bus_for_each_drv+0x58/0xb4
    [    4.510489] [c608bc20] [c01cc04c] __device_attach+0x8c/0x110
    [    4.516082] [c608bc50] [c01cab80] bus_probe_device+0x34/0xb8
    [    4.521673] [c608bc70] [c01c96c8] device_add+0x3c0/0x598
    [    4.526925] [c608bcb0] [c0200f90] spi_add_device+0x114/0x160
    [    4.532512] [c608bcd0] [c02018d0] spi_register_master+0x6e0/0x7c8
    [    4.538537] [c608bd20] [c02019fc] devm_spi_register_master+0x44/0x8c
    [    4.544824] [c608bd40] [c0203854] of_fsl_spi_probe+0x458/0x57c
    [    4.550587] [c608bda0] [c01cd828] platform_drv_probe+0x30/0x74
    [    4.556366] [c608bdb0] [c01cc368] driver_probe_device+0x190/0x38c
    [    4.562383] [c608bde0] [c01ca918] bus_for_each_drv+0x58/0xb4
    [    4.567977] [c608be10] [c01cc04c] __device_attach+0x8c/0x110
    [    4.573572] [c608be40] [c01cab80] bus_probe_device+0x34/0xb8
    [    4.579170] [c608be60] [c01cb9b4] deferred_probe_work_func+0xa4/0xc4
    [    4.585438] [c608be80] [c0029c04] process_one_work+0x22c/0x414
    [    4.591201] [c608bea0] [c002a100] worker_thread+0x314/0x5c0
    [    4.596722] [c608bef0] [c002f444] kthread+0xc8/0xcc
    [    4.601538] [c608bf40] [c000af84] ret_from_kernel_thread+0x5c/0x64
    [    4.607596] Instruction dump:
    [    4.610530] 7c0803a6 bba10014 38210020 4e800020 7c0802a6 9421ffe0 38840004 bf810010
    [    4.618188] 90010024 549cf0be 83c30010 549d0f7c <813e0018> 7fc3f378 7d3f2430 57ff07fe
    [    4.626041] ---[ end trace 303adb021dd4caf2 ]---
    
    fixes: 5e45e01916197 ("gpio: max730x: use gpiochip data pointer")
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98715f78da3d61fa32f2b14406711dd78956a4b5
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Tue Aug 16 09:58:25 2016 +0200

    gpio: Fix OF build problem on UM
    
    commit 2527ecc9195e9c66252af24c4689e8a67cd4ccb9 upstream.
    
    The UserMode (UM) Linux build was failing in gpiolib-of as it requires
    ioremap()/iounmap() to exist, which is absent from UM. The non-existence
    of IO memory is negatively defined as CONFIG_NO_IOMEM which means we
    need to depend on HAS_IOMEM.
    
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Reported-by: kbuild test robot <fengguang.wu@intel.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bb779a230b8e10ca3833c5a3a59f7528d36e0d3
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Fri Aug 5 12:29:06 2016 -0400

    dm round robin: do not use this_cpu_ptr() without having preemption disabled
    
    commit 802934b2cfde463b72cc1b9bc1c081895a90be53 upstream.
    
    Use local_irq_save() to disable preemption before calling
    this_cpu_ptr().
    
    Reported-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Fixes: b0b477c7e0dd ("dm round robin: use percpu 'repeat_count' and 'current_path'")
    Suggested-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 395b2913861889d766ca8c28d0262658b265ceac
Author: Wei Yongjun <weiyj.lk@gmail.com>
Date:   Sat Aug 13 01:28:24 2016 +0000

    usb: renesas_usbhs: gadget: fix return value check in usbhs_mod_gadget_probe()
    
    commit 3295235fd70ed6d594aadee8c892a14f6a4b2d2e upstream.
    
    In case of error, the function usb_get_phy() returns ERR_PTR() and never
    returns NULL. The NULL test in the return value check should be replaced
    with IS_ERR().
    
    Fixes: b5a2875605ca ("usb: renesas_usbhs: Allow an OTG PHY driver to
            provide VBUS")
    Acked-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Wei Yongjun <weiyj.lk@gmail.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a20e12c78170ba7705b102559c734e5df095bff
Author: Yinghai Lu <yinghai@kernel.org>
Date:   Fri Aug 5 23:37:34 2016 -0700

    megaraid_sas: Fix probing cards without io port
    
    commit e7f851684efb3377e9c93aca7fae6e76212e5680 upstream.
    
    Found one megaraid_sas HBA probe fails,
    
    [  187.235190] scsi host2: Avago SAS based MegaRAID driver
    [  191.112365] megaraid_sas 0000:89:00.0: BAR 0: can't reserve [io  0x0000-0x00ff]
    [  191.120548] megaraid_sas 0000:89:00.0: IO memory region busy!
    
    and the card has resource like,
    [  125.097714] pci 0000:89:00.0: [1000:005d] type 00 class 0x010400
    [  125.104446] pci 0000:89:00.0: reg 0x10: [io  0x0000-0x00ff]
    [  125.110686] pci 0000:89:00.0: reg 0x14: [mem 0xce400000-0xce40ffff 64bit]
    [  125.118286] pci 0000:89:00.0: reg 0x1c: [mem 0xce300000-0xce3fffff 64bit]
    [  125.125891] pci 0000:89:00.0: reg 0x30: [mem 0xce200000-0xce2fffff pref]
    
    that does not io port resource allocated from BIOS, and kernel can not
    assign one as io port shortage.
    
    The driver is only looking for MEM, and should not fail.
    
    It turns out megasas_init_fw() etc are using bar index as mask.  index 1
    is used as mask 1, so that pci_request_selected_regions() is trying to
    request BAR0 instead of BAR1.
    
    Fix all related reference.
    
    Fixes: b6d5d8808b4c ("megaraid_sas: Use lowest memory bar for SR-IOV VF support")
    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    Acked-by: Kashyap Desai <kashyap.desai@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 404b74f0475907c973e4256d2dc894aada709240
Author: Greg Edwards <gedwards@fireweed.org>
Date:   Sat Jul 30 10:06:26 2016 -0600

    mpt3sas: Fix resume on WarpDrive flash cards
    
    commit ce7c6c9e1d997a2670aead3a7b87f4df32c11118 upstream.
    
    mpt3sas crashes on resume after suspend with WarpDrive flash cards.  The
    reply_post_host_index array is not set back up after the resume, and we
    deference a stale pointer in _base_interrupt().
    
    [   47.309711] BUG: unable to handle kernel paging request at ffffc90001f8006c
    [   47.318289] IP: [<ffffffffc00863ef>] _base_interrupt+0x49f/0xa30 [mpt3sas]
    [   47.326749] PGD 41ccaa067 PUD 41ccab067 PMD 3466c067 PTE 0
    [   47.333848] Oops: 0002 [#1] SMP
    ...
    [   47.452708] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.7.0 #6
    [   47.460506] Hardware name: Dell Inc. OptiPlex 990/06D7TR, BIOS A18 09/24/2013
    [   47.469629] task: ffffffff81c0d500 ti: ffffffff81c00000 task.ti: ffffffff81c00000
    [   47.479112] RIP: 0010:[<ffffffffc00863ef>]  [<ffffffffc00863ef>] _base_interrupt+0x49f/0xa30 [mpt3sas]
    [   47.490466] RSP: 0018:ffff88041d203e30  EFLAGS: 00010002
    [   47.497801] RAX: 0000000000000001 RBX: ffff880033f4c000 RCX: 0000000000000001
    [   47.506973] RDX: ffffc90001f8006c RSI: 0000000000000082 RDI: 0000000000000082
    [   47.516141] RBP: ffff88041d203eb0 R08: ffff8804118e2820 R09: 0000000000000001
    [   47.525300] R10: 0000000000000001 R11: 00000000100c0000 R12: 0000000000000000
    [   47.534457] R13: ffff880412c487e0 R14: ffff88041a8987d8 R15: 0000000000000001
    [   47.543632] FS:  0000000000000000(0000) GS:ffff88041d200000(0000) knlGS:0000000000000000
    [   47.553796] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   47.561632] CR2: ffffc90001f8006c CR3: 0000000001c06000 CR4: 00000000000406f0
    [   47.570883] Stack:
    [   47.575015]  000000001d211228 ffff88041d2100c0 ffff8800c47d8130 0000000000000100
    [   47.584625]  ffff8804100c0000 100c000000000000 ffff88041a8992a0 ffff88041a8987f8
    [   47.594230]  ffff88041d203e00 ffffffff81111e55 000000000000038c ffff880414ad4280
    [   47.603862] Call Trace:
    [   47.608474]  <IRQ>
    [   47.610413]  [<ffffffff81111e55>] ? call_timer_fn+0x35/0x120
    [   47.620539]  [<ffffffff81100a1f>] handle_irq_event_percpu+0x7f/0x1c0
    [   47.629061]  [<ffffffff81100b8c>] handle_irq_event+0x2c/0x50
    [   47.636859]  [<ffffffff81103fff>] handle_edge_irq+0x6f/0x130
    [   47.644654]  [<ffffffff8102fbf3>] handle_irq+0x73/0x120
    [   47.652011]  [<ffffffff810c6ada>] ? atomic_notifier_call_chain+0x1a/0x20
    [   47.660854]  [<ffffffff817e374b>] do_IRQ+0x4b/0xd0
    [   47.667777]  [<ffffffff817e160c>] common_interrupt+0x8c/0x8c
    [   47.675635]  <EOI>
    
    Move the reply_post_host_index array setup into
    mpt3sas_base_map_resources(), which is also in the resume path.
    
    Signed-off-by: Greg Edwards <gedwards@fireweed.org>
    Acked-by: Chaitra P B <chaitra.basappa@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ec200c6bf6fcf5035e03ecc165ce49ec599b7e8
Author: Gavin Li <git@thegavinli.com>
Date:   Fri Aug 12 00:52:56 2016 -0700

    cdc-acm: fix wrong pipe type on rx interrupt xfers
    
    commit add125054b8727103631dce116361668436ef6a7 upstream.
    
    This fixes the "BOGUS urb xfer" warning logged by usb_submit_urb().
    
    Signed-off-by: Gavin Li <git@thegavinli.com>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 751f5ae670247c68619230b6f3d35b3c2282d25b
Author: Brian Norris <briannorris@chromium.org>
Date:   Wed Aug 10 13:37:18 2016 -0700

    i2c: cros-ec-tunnel: Fix usage of cros_ec_cmd_xfer()
    
    commit 4d01d88019261d05ec3bff5f1a6013393faa3b9e upstream.
    
    cros_ec_cmd_xfer returns success status if the command transport
    completes successfully, but the execution result is incorrectly ignored.
    In many cases, the execution result is assumed to be successful, leading
    to ignored errors and operating on uninitialized data.
    
    We've recently introduced the cros_ec_cmd_xfer_status() helper to avoid these
    problems. Let's use it.
    
    [Regarding the 'Fixes' tag; there is significant refactoring since the driver's
    introduction, but the underlying logical error exists throughout I believe]
    
    Fixes: 9d230c9e4f4e ("i2c: ChromeOS EC tunnel driver")
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5523d7e90280a5f75f4666114639c69c20ea68b9
Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date:   Fri Jul 15 16:28:41 2016 -0700

    mfd: cros_ec: Add cros_ec_cmd_xfer_status() helper
    
    commit 9798ac6d32c1a32d6d92d853ff507d2d39c4300c upstream.
    
    So that callers of cros_ec_cmd_xfer() don't have to repeat boilerplate
    code when checking for errors from the EC side.
    
    Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
    Reviewed-by: Benson Leung <bleung@chromium.org>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Acked-by: Lee Jones <lee.jones@linaro.org>
    Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37e0f46b779f3081fc4719956eb44cacbb5a294f
Author: Dave Carroll <david.carroll@microsemi.com>
Date:   Fri Aug 5 13:44:10 2016 -0600

    aacraid: Check size values after double-fetch from user
    
    commit fa00c437eef8dc2e7b25f8cd868cfa405fcc2bb3 upstream.
    
    In aacraid's ioctl_send_fib() we do two fetches from userspace, one the
    get the fib header's size and one for the fib itself. Later we use the
    size field from the second fetch to further process the fib. If for some
    reason the size from the second fetch is different than from the first
    fix, we may encounter an out-of- bounds access in aac_fib_send(). We
    also check the sender size to insure it is not out of bounds. This was
    reported in https://bugzilla.kernel.org/show_bug.cgi?id=116751 and was
    assigned CVE-2016-6480.
    
    Reported-by: Pengfei Wang <wpengfeinudt@gmail.com>
    Fixes: 7c00ffa31 '[SCSI] 2.6 aacraid: Variable FIB size (updated patch)'
    Signed-off-by: Dave Carroll <david.carroll@microsemi.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 205537dfc68cf22c295f98ea989532d503a92cc0
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Mon Jun 13 16:38:27 2016 +0200

    ARC: Elide redundant setup of DMA callbacks
    
    commit 45c3b08a117e2232fc8d7b9e849ead36386f4f96 upstream.
    
    For resources shared by all cores such as SLC and IOC, only the master
    core needs to do any setups / enabling / disabling etc.
    
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5534e7e3572b5924dafbef14675287e452f69ce9
Author: Daniel Mentz <danielmentz@google.com>
Date:   Thu Aug 4 17:56:53 2016 -0700

    ARC: Call trace_hardirqs_on() before enabling irqs
    
    commit 18b43e89d295cc65151c505c643c98fb2c320e59 upstream.
    
    trace_hardirqs_on_caller() in lockdep.c expects to be called before, not
    after interrupts are actually enabled.
    
    The following comment in kernel/locking/lockdep.c substantiates this
    claim:
    
    "
    /*
     * We're enabling irqs and according to our state above irqs weren't
     * already enabled, yet we find the hardware thinks they are in fact
     * enabled.. someone messed up their IRQ state tracing.
     */
    "
    
    An example can be found in include/linux/irqflags.h:
    
            do { trace_hardirqs_on(); raw_local_irq_enable(); } while (0)
    
    Without this change, we hit the following DEBUG_LOCKS_WARN_ON.
    
    [    7.760000] ------------[ cut here ]------------
    [    7.760000] WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:2711 resume_user_mode_begin+0x48/0xf0
    [    7.770000] DEBUG_LOCKS_WARN_ON(!irqs_disabled())
    [    7.780000] Modules linked in:
    [    7.780000] CPU: 0 PID: 1 Comm: init Not tainted 4.7.0-00003-gc668bb9-dirty #366
    [    7.790000]
    [    7.790000] Stack Trace:
    [    7.790000]   arc_unwind_core.constprop.1+0xa4/0x118
    [    7.800000]   warn_slowpath_fmt+0x72/0x158
    [    7.800000]   resume_user_mode_begin+0x48/0xf0
    [    7.810000] ---[ end trace 6f6a7a8fae20d2f0 ]---
    
    Signed-off-by: Daniel Mentz <danielmentz@google.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f428c0df4b0dcf701fc116fee91ee401610ac43c
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Tue Aug 16 18:27:07 2016 -0700

    ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS
    
    commit 1c3c909303924d30145601f47b6c058fdd2cbc2e upstream.
    
    |  CC      mm/memory.o
    | In file included from ../mm/memory.c:53:0:
    | ../include/linux/pfn_t.h: In function ‘pfn_t_pte’:
    | ../include/linux/pfn_t.h:78:2: error: conversion to non-scalar type requested
    |  return pfn_pte(pfn_t_to_pfn(pfn), pgprot);
    
    With STRICT_MM_TYPECHECKS pte_t is a struct and the offending code
    forces a cast which ends up shifting a struct and hence the gcc warning.
    
    Note that in recent past some of the arches (aarch64, s390) made
    STRICT_MM_TYPECHECKS default, but we don't for ARC as this leads to slightly
    worse generated code, given ARC ABI definition of returning structs
    (which pte_t would become)
    
    Quoting from ARC ABI...
    
      "Results of type struct are returned in a caller-supplied temporary
      variable whose address is passed in r0.
      For such functions, the arguments are shifted so that they are
      passed in r1 and up."
    
    So
     - struct to be returned would be allocated on stack requiring extra
       code at call sites
     - callee updates stack memory to facilitate the return (vs. simple
       MOV into return reg r0)
    
    Hence STRICT_MM_TYPECHECKS is not enabled by default for ARC
    
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17352937b380c3b09c43987ab370b4e0ca21ff7d
Author: Liav Rehana <liavr@mellanox.com>
Date:   Tue Aug 16 10:55:35 2016 +0300

    ARC: use correct offset in pt_regs for saving/restoring user mode r25
    
    commit 86147e3cfa5e118b61e78f4f0bf29e920dcbd477 upstream.
    
    User mode callee regs are explicitly collected before signal delivery or
    breakpoint trap. r25 is special for kernel as it serves as task pointer,
    so user mode value is clobbered very early. It is saved in pt_regs where
    generally only scratch (aka caller saved) regs are saved.
    
    The code to access the corresponding pt_regs location had a subtle bug as
    it was using load/store with scaling of offset, whereas the offset was already
    byte wise correct. So fix this by replacing LD.AS with a standard LD
    
    Signed-off-by: Liav Rehana <liavr@mellanox.com>
    Reviewed-by: Alexey Brodkin <abrodkin@synopsys.com>
    [vgupta: rewrote title and commit log]
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9f310064a12e6bbafd0025e501de1624e1b891b
Author: Lyude <cpaul@redhat.com>
Date:   Tue Jun 21 17:03:44 2016 -0400

    drm/i915: Enable polling when we don't have hpd
    
    commit 84c8e0963da434d37355079b568465cd121af295 upstream.
    
    Unfortunately, there's two situations where we lose hpd right now:
    - Runtime suspend
    - When we've shut off all of the power wells on Valleyview/Cherryview
    
    While it would be nice if this didn't cause issues, this has the
    ability to get us in some awkward states where a user won't be able to
    get their display to turn on. For instance; if we boot a Valleyview
    system without any monitors connected, it won't need any of it's power
    wells and thus shut them off. Since this causes us to lose HPD, this
    means that unless the user knows how to ssh into their machine and do a
    manual reprobe for monitors, none of the monitors they connect after
    booting will actually work.
    
    Eventually we should come up with a better fix then having to enable
    polling for this, since this makes rpm a lot less useful, but for now
    the infrastructure in i915 just isn't there yet to get hpd in these
    situations.
    
    Changes since v1:
     - Add comment explaining the addition of the if
       (!mode_config->poll_running) in intel_hpd_init()
     - Remove unneeded if (!dev->mode_config.poll_enabled) in
       i915_hpd_poll_init_work()
     - Call to drm_helper_hpd_irq_event() after we disable polling
     - Add cancel_work_sync() call to intel_hpd_cancel_work()
    
    Changes since v2:
     - Apparently dev->mode_config.poll_running doesn't actually reflect
       whether or not a poll is currently in progress, and is actually used
       for dynamic module paramter enabling/disabling. So now we instead
       keep track of our own poll_running variable in dev_priv->hotplug
     - Clean i915_hpd_poll_init_work() a little bit
    
    Changes since v3:
     - Remove the now-redundant connector loop in intel_hpd_init(), just
       rely on intel_hpd_poll_enable() for setting connector->polled
       correctly on each connector
     - Get rid of poll_running
     - Don't assign enabled in i915_hpd_poll_init_work before we actually
       lock dev->mode_config.mutex
     - Wrap enabled assignment in i915_hpd_poll_init_work() in READ_ONCE()
       for doc purposes
     - Do the same for dev_priv->hotplug.poll_enabled with WRITE_ONCE in
       intel_hpd_poll_enable()
     - Add some comments about racing not mattering in intel_hpd_poll_enable
    
    Changes since v4:
     - Rename intel_hpd_poll_enable() to intel_hpd_poll_init()
     - Drop the bool argument from intel_hpd_poll_init()
     - Remove redundant calls to intel_hpd_poll_init()
     - Rename poll_enable_work to poll_init_work
     - Add some kerneldoc for intel_hpd_poll_init()
     - Cross-reference intel_hpd_poll_init() in intel_hpd_init()
     - Just copy the loop from intel_hpd_init() in intel_hpd_poll_init()
    
    Changes since v5:
     - Minor kerneldoc nitpicks
    
    Cc: stable@vger.kernel.org
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Lyude <cpaul@redhat.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    (cherry picked from commit 19625e85c6ec56038368aa72c44f5f55b221f0fc)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14c1c9e690326f13f807915229fdba63ac4926ba
Author: Lyude <cpaul@redhat.com>
Date:   Tue Jun 21 17:03:43 2016 -0400

    drm/i915/vlv: Disable HPD in valleyview_crt_detect_hotplug()
    
    commit 21842ea84f161ae37ba25f0250c377fd19c5b307 upstream.
    
    One of the things preventing us from using polling is the fact that
    calling valleyview_crt_detect_hotplug() when there's a VGA cable
    connected results in sending another hotplug. With polling enabled when
    HPD is disabled, this results in a scenario like this:
    
    - We enable power wells and reset the ADPA
    - output_poll_exec does force probe on VGA, triggering a hpd
    - HPD handler waits for poll to unlock dev->mode_config.mutex
    - output_poll_exec shuts off the ADPA, unlocks dev->mode_config.mutex
    - HPD handler runs, resets ADPA and brings us back to the start
    
    This results in an endless irq storm getting sent from the ADPA
    whenever a VGA connector gets detected in the middle of polling.
    
    Somewhat based off of the "drm/i915: Disable CRT HPD around force
    trigger" patch Ville Syrjälä sent a while back
    
    Cc: stable@vger.kernel.org
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Lyude <cpaul@redhat.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    (cherry picked from commit b236d7c8421969ac0693fc571e47ee5c2a62fb90)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a9742c280b7d54cd146f28c9eebfb7d7a7beecb
Author: Lyude <cpaul@redhat.com>
Date:   Tue Jun 21 17:03:42 2016 -0400

    drm/i915/vlv: Reset the ADPA in vlv_display_power_well_init()
    
    commit 4c732e6ee9e71903934d75b12a021eb3520b6197 upstream.
    
    While VGA hotplugging worked(ish) before, it looks like that was mainly
    because we'd unintentionally enable it in
    valleyview_crt_detect_hotplug() when we did a force trigger. This
    doesn't work reliably enough because whenever the display powerwell on
    vlv gets disabled, the values set in VLV_ADPA get cleared and
    consequently VGA hotplugging gets disabled. This causes bugs such as one
    we found on an Intel NUC, where doing the following sequence of
    hotplugs:
    
          - Disconnect all monitors
          - Connect VGA
          - Disconnect VGA
          - Connect HDMI
    
    Would result in VGA hotplugging becoming disabled, due to the powerwells
    getting toggled in the process of connecting HDMI.
    
    Changes since v3:
     - Expose intel_crt_reset() through intel_drv.h and call that in
       vlv_display_power_well_init() instead of
       encoder->base.funcs->reset(&encoder->base);
    
    Changes since v2:
     - Use intel_encoder structs instead of drm_encoder structs
    
    Changes since v1:
     - Instead of handling the register writes ourself, we just reuse
       intel_crt_detect()
     - Instead of resetting the ADPA during display IRQ installation, we now
       reset them in vlv_display_power_well_init()
    
    Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Lyude <cpaul@redhat.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    [danvet: Rebase over dev_priv/drm_device embedding.]
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    (cherry picked from commit 9504a89247595b6c066c68aea0c34af1fc78d021)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1dd21ec992c6d20ee3c7465cedd06dc8c65baafc
Author: Lyude <cpaul@redhat.com>
Date:   Tue Jun 21 17:03:41 2016 -0400

    drm/i915/vlv: Make intel_crt_reset() per-encoder
    
    commit 4570d833390b10043d082fe535375d4a0e071d9c upstream.
    
    This lets call intel_crt_reset() in contexts where IRQs are disabled and
    as such, can't hold the locks required to work with the connectors.
    
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Lyude <cpaul@redhat.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    (cherry picked from commit 28cf71ce3e206db1c3f30b3da31e7b48b2269e4c)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ba1f8590d8b43b8471b9aa6d77a41b33b11b2fb
Author: Matthew Auld <matthew.auld@intel.com>
Date:   Fri Aug 5 19:04:40 2016 +0100

    drm/i915: fix aliasing_ppgtt leak
    
    commit 3871f42a57efcdc6a9da751a8cb6fa196c212289 upstream.
    
    In i915_ggtt_cleanup_hw we need to remember to free aliasing_ppgtt. This
    fixes the following kmemleak message:
    
    unreferenced object 0xffff880213cca000 (size 8192):
      comm "modprobe", pid 1298, jiffies 4294745402 (age 703.930s)
      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:
        [<ffffffff817c808e>] kmemleak_alloc+0x4e/0xb0
        [<ffffffff8121f9c2>] kmem_cache_alloc_trace+0x142/0x1d0
        [<ffffffffa06d11ef>] i915_gem_init_ggtt+0x10f/0x210 [i915]
        [<ffffffffa06d71bb>] i915_gem_init+0x5b/0xd0 [i915]
        [<ffffffffa069749a>] i915_driver_load+0x97a/0x1460 [i915]
        [<ffffffffa06a26ef>] i915_pci_probe+0x4f/0x70 [i915]
        [<ffffffff81423015>] local_pci_probe+0x45/0xa0
        [<ffffffff81424463>] pci_device_probe+0x103/0x150
        [<ffffffff81515e6c>] driver_probe_device+0x22c/0x440
        [<ffffffff81516151>] __driver_attach+0xd1/0xf0
        [<ffffffff8151379c>] bus_for_each_dev+0x6c/0xc0
        [<ffffffff8151555e>] driver_attach+0x1e/0x20
        [<ffffffff81514fa3>] bus_add_driver+0x1c3/0x280
        [<ffffffff81516aa0>] driver_register+0x60/0xe0
        [<ffffffff8142297c>] __pci_register_driver+0x4c/0x50
        [<ffffffffa013605b>] 0xffffffffa013605b
    
    Signed-off-by: Matthew Auld <matthew.auld@intel.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Fixes: b18b6bde300e ("drm/i915/bdw: Free PPGTT struct")
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1470420280-21417-1-git-send-email-matthew.auld@intel.com
    (cherry picked from commit cb7f27601c81a1e0454e9461e96f65b31fafbea0)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d400acdefd9bc64f85f9f410468f92b42851734b
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Aug 3 17:09:00 2016 +0100

    drm/i915: Acquire audio powerwell for HD-Audio registers
    
    commit 3cffb0a44750726cdc1cc07399efe3cbb45e028b upstream.
    
    On Haswell/Broadwell, the HD-Audio block is inside the HDMI/display
    power well and so the sna-hda audio codec acquires the display power
    well while it is operational. However, Skylake separates the powerwells
    again, but yet we still need the audio powerwell to setup the registers.
    (But then the hardware uses those registers even while powered off???)
    
    Acquiring the powerwell around setting the chicken bits when setting up
    the audio channel does at least silence the WARNs from touching our
    registers whilst unpowered. We silence our own test cases, but maybe
    there is a latent bug in using the audio channel?
    
    v2: Grab both rpm wakelock and audio wakelock
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96214
    Fixes: 03b135cebc47 "ALSA: hda - remove dependency on i915 power well for SKL")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Libin Yang <libin.yang@intel.com>
    Cc: Takashi Iwai <tiwai@suse.de>
    Cc: Marius Vlad <marius.c.vlad@intel.com>
    Tested-by: Hans de Goede <hdegoede@redhat.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1470240540-29004-1-git-send-email-chris@chris-wilson.co.uk
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    (cherry picked from commit d838a110f0b310d408ebe6b5a97e36ec27555ebf)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9c1711efe6f0adb2cfa25bf1d00fdb6f194277a
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Tue Aug 2 15:21:57 2016 +0300

    drm/i915: Fix iboost setting for SKL Y/U DP DDI buffer translation entry 2
    
    commit 85bf59d188721dca37bc8276457e68351213f38f upstream.
    
    The spec was recently fixed to have the correct iboost setting for the
    SKL Y/U DP DDI buffer translation table entry 2. Update our tables
    to match.
    
    Cc: David Weinehall <david.weinehall@linux.intel.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1470140517-13011-1-git-send-email-ville.syrjala@linux.intel.com
    Reviewed-by: David Weinehall <david.weinehall@linux.intel.com>
    (cherry picked from commit 5ac9056753e79ac5ad1ccc3c99b311688e46e8c9)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d943a089f8a8689c80fbd663006bbae442127800
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Tue Jul 12 15:59:30 2016 +0300

    drm/i915: Program iboost settings for HDMI/DVI on SKL
    
    commit 7ff9a55614712adf13ce7990565be0263e620f5e upstream.
    
    Currently we fail to program the iboost stuff for HDMI/DVI. Let's remedy
    that.
    
    Fixes: f8896f5d58e6 ("drm/i915/skl: Buffer translation improvements")
    Cc: David Weinehall <david.weinehall@linux.intel.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1468328376-6380-4-git-send-email-ville.syrjala@linux.intel.com
    Reviewed-by: David Weinehall <david.weinehall@linux.intel.com>
    (cherry picked from commit 8d8bb85eb7d859aa9bbe36e588690a1d22af7608)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a42c51043b8b8eff78527ac977bfd1dbb36be952
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Tue Jul 12 15:59:28 2016 +0300

    drm/i915: Fix iboost setting for DDI with 4 lanes on SKL
    
    commit 5728e0de741a3581e9900c5cbee3a51425daf211 upstream.
    
    Bspec says:
    "For DDIA with x4 capability (DDI_BUF_CTL DDIA Lane Capability Control =
     DDIA x4), the I_boost value has to be programmed in both
     tx_blnclegsctl_0 and tx_blnclegsctl_4."
    
    Currently we only program tx_blnclegsctl_0. Let's do the other one as
    well.
    
    Fixes: f8896f5d58e6 ("drm/i915/skl: Buffer translation improvements")
    Cc: David Weinehall <david.weinehall@linux.intel.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1468328376-6380-2-git-send-email-ville.syrjala@linux.intel.com
    Reviewed-by: David Weinehall <david.weinehall@linux.intel.com>
    (cherry picked from commit a7d8dbc07c8f0faaace983b1e4c6e9495dd0aa75)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d0a5983c0a850bee1b0accd38cfae630731ca30
Author: Chunming Zhou <David1.Zhou@amd.com>
Date:   Tue Aug 30 17:59:11 2016 +0800

    drm/amdgpu: record error code when ring test failed
    
    commit 1f703e6679f373f5bba4efe7093aa82e91af4037 upstream.
    
    Otherwise we may miss errors.
    
    Signed-off-by: Chunming Zhou <David1.Zhou@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a183960a65cdbde3d643eed2026707568cf05534
Author: jimqu <Jim.Qu@amd.com>
Date:   Tue Aug 30 09:03:16 2016 +0800

    drm/amd/amdgpu: compute ring test fail during S4 on CI
    
    commit 53960b4f89db58bc155d6f8aa0a44ccc59ccb26f upstream.
    
    unhalt Instrction Fetch Unit after all rings are inited.
    
    Signed-off-by: JimQu <Jim.Qu@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3406c2a44e8ca588a446aae149c7f772b28c8aad
Author: jimqu <Jim.Qu@amd.com>
Date:   Tue Aug 30 08:59:42 2016 +0800

    drm/amd/amdgpu: sdma resume fail during S4 on CI
    
    commit 10ea9434065e56fe14287f89258ecf2fb684ed1a upstream.
    
    SDMA could be fail in the thaw() and restore() processes, do software reset
    if each SDMA engine is busy.
    
    Signed-off-by: JimQu <Jim.Qu@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82ca7ee54274b355e46416a61c765fc0621ea130
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Aug 24 13:04:15 2016 -0400

    drm/amdgpu: skip TV/CV in display parsing
    
    commit 611a1507fe8569ce1adab3abc982ea58ab559fb9 upstream.
    
    No asics supported by amdgpu support analog TV.
    
    Workaround for bug:
    https://bugs.freedesktop.org/show_bug.cgi?id=97460
    
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b24e675dc73ad099447b8e32a3a0eb444abf596
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Aug 24 12:31:36 2016 -0400

    drm/amdgpu: avoid a possible array overflow
    
    commit e1718d97aa88ea44a6a8f50ff464253dd0dacf01 upstream.
    
    When looking up the connector type make sure the index
    is valid.  Avoids a later crash if we read past the end
    of the array.
    
    Workaround for bug:
    https://bugs.freedesktop.org/show_bug.cgi?id=97460
    
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7715b24f7da6bbdd2f7bc27fcfb79299525d7927
Author: Christian König <christian.koenig@amd.com>
Date:   Wed Aug 17 13:44:20 2016 +0200

    drm/amdgpu: fix lru size grouping v2
    
    commit 5661538749511d4c2f7d33e1e179f10c545b24d5 upstream.
    
    Adding a BO can make it the insertion point for larger sizes as well.
    
    v2: add a comment about the guard structure.
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e80c1324c1dd0c915cb13f16f929c2f827694a1c
Author: Christian König <christian.koenig@amd.com>
Date:   Wed Aug 17 09:45:25 2016 +0200

    drm/amdgpu: fix amdgpu_move_blit on 32bit systems
    
    commit 815d27a46f3119f74fe01fe10bf683aa5bc55597 upstream.
    
    This bug seems to be present for a very long time.
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3c9485556d9be297a9f274e3025250a923319ca
Author: Felix Kuehling <Felix.Kuehling@amd.com>
Date:   Fri Aug 12 19:25:21 2016 -0400

    drm/amdgpu: Change GART offset to 64-bit
    
    commit cab0b8d50e9bbef62c04067072c953433a87a9ff upstream.
    
    The GART aperture size can be bigger than 4GB. Therefore the offset
    used in amdgpu_gart_bind and amdgpu_gart_unbind must be 64-bit.
    
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0127ef0d139b7caed72332ab7175b581c0dac4ad
Author: Brian Norris <briannorris@chromium.org>
Date:   Mon Aug 8 17:19:38 2016 -0700

    iio: fix sched WARNING "do not call blocking ops when !TASK_RUNNING"
    
    commit fcf68f3c0bb2a541aa47a2a38b8939edf84fd529 upstream.
    
    When using CONFIG_DEBUG_ATOMIC_SLEEP, the scheduler nicely points out
    that we're calling sleeping primitives within the wait_event loop, which
    means we might clobber the task state:
    
    [   10.831289] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffc00026b610>]
    [   10.845531] ------------[ cut here ]------------
    [   10.850161] WARNING: at kernel/sched/core.c:7630
    ...
    [   12.164333] ---[ end trace 45409966a9a76438 ]---
    [   12.168942] Call trace:
    [   12.171391] [<ffffffc00024ed44>] __might_sleep+0x64/0x90
    [   12.176699] [<ffffffc000954774>] mutex_lock_nested+0x50/0x3fc
    [   12.182440] [<ffffffc0007b9424>] iio_kfifo_buf_data_available+0x28/0x4c
    [   12.189043] [<ffffffc0007b76ac>] iio_buffer_ready+0x60/0xe0
    [   12.194608] [<ffffffc0007b7834>] iio_buffer_read_first_n_outer+0x108/0x1a8
    [   12.201474] [<ffffffc000370d48>] __vfs_read+0x58/0x114
    [   12.206606] [<ffffffc000371740>] vfs_read+0x94/0x118
    [   12.211564] [<ffffffc0003720f8>] SyS_read+0x64/0xb4
    [   12.216436] [<ffffffc000203cb4>] el0_svc_naked+0x24/0x28
    
    To avoid this, we should (a la https://lwn.net/Articles/628628/) use the
    wait_woken() function, which avoids the nested sleeping while still
    handling races between waiting / wake-events.
    
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dac02e35f3112548ea8faa34735fa93c665f8d3c
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Mon Aug 15 18:38:42 2016 +0200

    sched/cputime: Fix NO_HZ_FULL getrusage() monotonicity regression
    
    commit 173be9a14f7b2e901cf77c18b1aafd4d672e9d9e upstream.
    
    Mike reports:
    
     Roughly 10% of the time, ltp testcase getrusage04 fails:
     getrusage04    0  TINFO  :  Expected timers granularity is 4000 us
     getrusage04    0  TINFO  :  Using 1 as multiply factor for max [us]time increment (1000+4000us)!
     getrusage04    0  TINFO  :  utime:           0us; stime:         179us
     getrusage04    0  TINFO  :  utime:        3751us; stime:           0us
     getrusage04    1  TFAIL  :  getrusage04.c:133: stime increased > 5000us:
    
    And tracked it down to the case where the task simply doesn't get
    _any_ [us]time ticks.
    
    Update the code to assume all rtime is utime when we lack information,
    thus ensuring a task that elides the tick gets time accounted.
    
    Reported-by: Mike Galbraith <umgwanakikbuti@gmail.com>
    Tested-by: Mike Galbraith <umgwanakikbuti@gmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Fredrik Markstrom <fredrik.markstrom@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Radim <rkrcmar@redhat.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: Wanpeng Li <wanpeng.li@hotmail.com>
    Fixes: 9d7fb0427648 ("sched/cputime: Guarantee stime + utime == rtime")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ada4606e166e930ade9ed1e3815ed5817f128fc3
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Mon Aug 15 14:58:43 2016 +0200

    of: fix reference counting in of_graph_get_endpoint_by_regs
    
    commit 34276bb062b8449b3b0a208c9b848a1a27920075 upstream.
    
    The called of_graph_get_next_endpoint() already decrements the refcount
    of the prev node, so it is wrong to do it again in the calling function.
    
    Use the for_each_endpoint_of_node() helper to interate through the
    endpoint OF nodes, which already does the right thing and simplifies
    the code a bit.
    
    Fixes: 8ccd0d0ca041
    (of: add helper for getting endpoint node of specific identifiers)
    Reported-by: David Jander <david@protonic.nl>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d066c41d10f0b2c6f8c6fb477e7d3152fdf5a8d8
Author: James Morse <james.morse@arm.com>
Date:   Fri Aug 26 16:03:42 2016 +0100

    arm64: kernel: Fix unmasked debug exceptions when restoring mdscr_el1
    
    commit 744c6c37cc18705d19e179622f927f5b781fe9cc upstream.
    
    Changes to make the resume from cpu_suspend() code behave more like
    secondary boot caused debug exceptions to be unmasked early by
    __cpu_setup(). We then go on to restore mdscr_el1 in cpu_do_resume(),
    potentially taking break or watch points based on uninitialised registers.
    
    Mask debug exceptions in cpu_do_resume(), which is specific to resume
    from cpu_suspend(). Debug exceptions will be restored to their original
    state by local_dbg_restore() in cpu_suspend(), which runs after
    hw_breakpoint_restore() has re-initialised the other registers.
    
    Reported-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Fixes: cabe1c81ea5b ("arm64: Change cpu_resume() to enable mmu early then access sleep_sp by va")
    Signed-off-by: James Morse <james.morse@arm.com>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02d7cb95e7e45aee58bb3228b0e8f3c3f9d75473
Author: Caesar Wang <wxt@rock-chips.com>
Date:   Wed Jul 27 22:24:06 2016 +0800

    arm64: dts: rockchip: add reset saradc node for rk3368 SoCs
    
    commit 78ec79bfd59e126e1cb394302bfa531a420b3ecd upstream.
    
    SARADC controller needs to be reset before programming it, otherwise
    it will not function properly.
    
    Signed-off-by: Caesar Wang <wxt@rock-chips.com>
    Acked-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf436012e7195f16b8a0e2626560869c8bc6c2a1
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Wed Aug 24 18:02:08 2016 +0100

    arm64: avoid TLB conflict with CONFIG_RANDOMIZE_BASE
    
    commit fd363bd417ddb6103564c69cfcbd92d9a7877431 upstream.
    
    When CONFIG_RANDOMIZE_BASE is selected, we modify the page tables to remap the
    kernel at a newly-chosen VA range. We do this with the MMU disabled, but do not
    invalidate TLBs prior to re-enabling the MMU with the new tables. Thus the old
    mappings entries may still live in TLBs, and we risk violating
    Break-Before-Make requirements, leading to TLB conflicts and/or other issues.
    
    We invalidate TLBs when we uninsall the idmap in early setup code, but prior to
    this we are subject to issues relating to the Break-Before-Make violation.
    
    Avoid these issues by invalidating the TLBs before the new mappings can be
    used by the hardware.
    
    Fixes: f80fb3a3d508 ("arm64: add support for kernel ASLR")
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6cdff5a9d1be0aaac57a9026790383a947291162
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Wed Aug 17 17:54:41 2016 +0200

    arm64: kernel: avoid literal load of virtual address with MMU off
    
    commit bc9f3d7788a88d080a30599bde68f383daf8f8a5 upstream.
    
    Literal loads of virtual addresses are subject to runtime relocation when
    CONFIG_RELOCATABLE=y, and given that the relocation routines run with the
    MMU and caches enabled, literal loads of relocated values performed with
    the MMU off are not guaranteed to return the latest value unless the
    memory covering the literal is cleaned to the PoC explicitly.
    
    So defer the literal load until after the MMU has been enabled, just like
    we do for primary_switch() and secondary_switch() in head.S.
    
    Fixes: 1e48ef7fcc37 ("arm64: add support for building vmlinux as a relocatable PIE binary")
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07b081a8f7237810859edb732e93d88f097d1dd3
Author: Felix Fietkau <nbd@nbd.name>
Date:   Tue Aug 2 11:13:41 2016 +0200

    mac80211: fix purging multicast PS buffer queue
    
    commit 6b07d9ca9b5363dda959b9582a3fc9c0b89ef3b5 upstream.
    
    The code currently assumes that buffered multicast PS frames don't have
    a pending ACK frame for tx status reporting.
    However, hostapd sends a broadcast deauth frame on teardown for which tx
    status is requested. This can lead to the "Have pending ack frames"
    warning on module reload.
    Fix this by using ieee80211_free_txskb/ieee80211_purge_tx_queue.
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9723996829cedded04e87faf2a7dfa6b35ed4858
Author: Stefan Haberland <sth@linux.vnet.ibm.com>
Date:   Mon Aug 8 14:08:17 2016 +0200

    s390/dasd: fix hanging device after clear subchannel
    
    commit 9ba333dc55cbb9523553df973adb3024d223e905 upstream.
    
    When a device is in a status where CIO has killed all I/O by itself the
    interrupt for a clear request may not contain an irb to determine the
    clear function. Instead it contains an error pointer -EIO.
    This was ignored by the DASD int_handler leading to a hanging device
    waiting for a clear interrupt.
    
    Handle -EIO error pointer correctly for requests that are clear pending and
    treat the clear as successful.
    
    Signed-off-by: Stefan Haberland <sth@linux.vnet.ibm.com>
    Reviewed-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0703a69155e126a983e271c24638d56d448c29f
Author: Lukasz Odzioba <lukasz.odzioba@intel.com>
Date:   Sat Jul 23 01:44:49 2016 +0200

    EDAC, sb_edac: Fix channel reporting on Knights Landing
    
    commit c5b48fa7e298b9a8968a1c1fc0ef013069ca2dd2 upstream.
    
    On Intel Xeon Phi Knights Landing processor family the channels of the
    memory controller have untypical arrangement - MC0 is mapped to CH3,4,5
    and MC1 is mapped to CH0,1,2. This causes the EDAC driver to report the
    channel name incorrectly.
    
    We missed this change earlier, so the code already contains similar
    comment, but the translation function is incorrect.
    
    Without this patch:
      errors in DIMM_A and DIMM_D were reported in DIMM_D
      errors in DIMM_B and DIMM_E were reported in DIMM_E
      errors in DIMM_C and DIMM_F were reported in DIMM_F
    
    Correct this.
    
    Hubert Chrzaniuk:
     - rebased to 4.8
     - comments and code cleanup
    
    Fixes: d0cdf9003140 ("sb_edac: Add Knights Landing (Xeon Phi gen 2) support")
    Reviewed-by: Tony Luck <tony.luck@intel.com>
    Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
    Cc: Hubert Chrzaniuk <hubert.chrzaniuk@intel.com>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Cc: lukasz.anaczkowski@intel.com
    Cc: lukasz.odzioba@intel.com
    Cc: mchehab@kernel.org
    Link: http://lkml.kernel.org/r/1469231089-22837-1-git-send-email-lukasz.odzioba@intel.com
    Signed-off-by: Lukasz Odzioba <lukasz.odzioba@intel.com>
    [ Boris: Simplify a bit by removing char mc. ]
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c3535b0d533a480bd445f7a4d76cce77acacf24
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Fri Aug 12 18:40:23 2016 +0200

    i2c: mux: demux-pinctrl: properly roll back when adding adapter fails
    
    commit ce8cb803d8b90458495f23606c706f0c0c857cdc upstream.
    
    We also need to revert the dynamic OF change, so we get a consistent
    state again. Otherwise, we might have two devices enabled e.g. after
    pinctrl setup fails.
    
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e375b488d87a24a201b874fb5790eef7ed670497
Author: Agrawal, Nitesh-kumar <Nitesh-kumar.Agrawal@amd.com>
Date:   Tue Jul 26 08:28:19 2016 +0000

    pinctrl/amd: Remove the default de-bounce time
    
    commit 8cf4345575a416e6856a6856ac6eaa31ad883126 upstream.
    
    In the function amd_gpio_irq_enable() and
    amd_gpio_direction_input(), remove the code which is setting
    the default de-bounce time to 2.75ms.
    
    The driver code shall use the same settings as specified in
    BIOS. Any default assignment impacts TouchPad behaviour when
    the LevelTrig is set to EDGE FALLING.
    
    Reviewed-by:  Ken Xue <Ken.Xue@amd.com>
    Signed-off-by: Nitesh Kumar Agrawal <Nitesh-kumar.Agrawal@amd.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78b20161c76b6b551fdd96fc1ad95490d9ae134a
Author: Wei Yongjun <weiyj.lk@gmail.com>
Date:   Tue Jul 26 14:51:58 2016 +0000

    pinctrl: meson: Drop pinctrl_unregister for devm_ registered device
    
    commit 5b236d0fde21d88351420ef0b9a6cb7aeeea0c54 upstream.
    
    It's not necessary to unregister pin controller device registered
    with devm_pinctrl_register() and using pinctrl_unregister() leads
    to a double free.
    
    This is detected by Coccinelle semantic patch.
    
    Fixes: e649f7ec8c5f ("pinctrl: meson: Use devm_pinctrl_register() for pinctrl registration")
    Signed-off-by: Wei Yongjun <weiyj.lk@gmail.com>
    Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Acked-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fcc5540e61a150782fce77e3086bf9409614a789
Author: Will Deacon <will.deacon@arm.com>
Date:   Tue Aug 16 14:29:16 2016 +0100

    iommu/arm-smmu: Don't BUG() if we find aborting STEs with disable_bypass
    
    commit 5bc0a11664e17e9f9551983f5b660bd48b57483c upstream.
    
    The disable_bypass cmdline option changes the SMMUv3 driver to put down
    faulting stream table entries by default, as opposed to bypassing
    transactions from unconfigured devices.
    
    In this mode of operation, it is entirely expected to see aborting
    entries in the stream table if and when we come to installing a valid
    translation, so don't trigger a BUG() as a result of misdiagnosing these
    entries as stream table corruption.
    
    Fixes: 48ec83bcbcf5 ("iommu/arm-smmu: Add initial driver support for ARM SMMUv3 devices")
    Tested-by: Robin Murphy <robin.murphy@arm.com>
    Reported-by: Robin Murphy <robin.murphy@arm.com>
    Reviewed-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d182fcb5ad4172d26bcd5a4af71fc08c0cb85481
Author: Will Deacon <will.deacon@arm.com>
Date:   Fri Aug 5 19:49:45 2016 +0100

    iommu/arm-smmu: Disable stalling faults for all endpoints
    
    commit 3714ce1d6655098ee69ede632883e5874d67e4ab upstream.
    
    Enabling stalling faults can result in hardware deadlock on poorly
    designed systems, particularly those with a PCI root complex upstream of
    the SMMU.
    
    Although it's not really Linux's job to save hardware integrators from
    their own misfortune, it *is* our job to stop userspace (e.g. VFIO
    clients) from hosing the system for everybody else, even if they might
    already be required to have elevated privileges.
    
    Given that the fault handling code currently executes entirely in IRQ
    context, there is nothing that can sensibly be done to recover from
    things like page faults anyway, so let's rip this code out for now and
    avoid the potential for deadlock.
    
    Fixes: 48ec83bcbcf5 ("iommu/arm-smmu: Add initial driver support for ARM SMMUv3 devices")
    Reported-by: Matt Evans <matt.evans@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2b15a151773fee378a31e33fbb43b9aaaa08468
Author: Will Deacon <will.deacon@arm.com>
Date:   Fri Jul 29 11:15:37 2016 +0100

    iommu/arm-smmu: Fix CMDQ error handling
    
    commit aea2037e0d3e23c3be1498feae29f71ca997d9e6 upstream.
    
    In the unlikely event of a global command queue error, the ARM SMMUv3
    driver attempts to convert the problematic command into a CMD_SYNC and
    resume the command queue. Unfortunately, this code is pretty badly
    broken:
    
      1. It uses the index into the error string table as the CMDQ index,
         so we probably read the wrong entry out of the queue
    
      2. The arguments to queue_write are the wrong way round, so we end up
         writing from the queue onto the stack.
    
    These happily cancel out, so the kernel is likely to stay alive, but
    the command queue will probably fault again when we resume.
    
    This patch fixes the error handling code to use the correct queue index
    and write back the CMD_SYNC to the faulting entry.
    
    Fixes: 48ec83bcbcf5 ("iommu/arm-smmu: Add initial driver support for ARM SMMUv3 devices")
    Reported-by: Diwakar Subraveti <Diwakar.Subraveti@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4e36058b87370095d2875f56b9408c7cd779a71
Author: Robin Murphy <robin.murphy@arm.com>
Date:   Thu Aug 11 17:44:05 2016 +0100

    iommu/io-pgtable-arm-v7s: Fix attributes when splitting blocks
    
    commit e633fc7a1347528c3b4a6bbdeb41f5d63988242c upstream.
    
    Due to the attribute bits being all over the place in the different
    types of short-descriptor PTEs, when remapping an existing entry, e.g.
    splitting a section into pages, we take the approach of decomposing
    the PTE attributes back to the IOMMU API flags to start from scratch.
    
    On inspection, though, the existing code seems to have got the read-only
    bit backwards and ignored the XN bit. How embarrassing...
    
    Fortunately the primary user so far, the Mediatek IOMMU, both never
    splits blocks (because it only serves non-overlapping DMA API calls) and
    also ignores permissions anyway, but let's put things right before any
    future users trip up.
    
    Fixes: e5fc9753b1a8 ("iommu/io-pgtable: Add ARMv7 short descriptor support")
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0576f96da62c90a3dda029d96afdae3e18845c1
Author: Robin Murphy <robin.murphy@arm.com>
Date:   Tue Aug 9 16:23:17 2016 +0100

    iommu/dma: Don't put uninitialised IOVA domains
    
    commit 3ec60043f7c02e1f79e4a90045ff2d2e80042941 upstream.
    
    Due to the limitations of having to wait until we see a device's DMA
    restrictions before we know how we want an IOVA domain initialised,
    there is a window for error if a DMA ops domain is allocated but later
    freed without ever being used. In that case, init_iova_domain() was
    never called, so calling put_iova_domain() from iommu_put_dma_cookie()
    ends up trying to take an uninitialised lock and crashing.
    
    Make things robust by skipping the call unless the IOVA domain actually
    has been initialised, as we probably should have done from the start.
    
    Fixes: 0db2e5d18f76 ("iommu: Implement common IOMMU ops for DMA mapping")
    Reported-by: Nate Watterson <nwatters@codeaurora.org>
    Reviewed-by: Nate Watterson <nwatters@codeaurora.org>
    Tested-by: Nate Watterson <nwatters@codeaurora.org>
    Reviewed-by: Eric Auger <eric.auger@redhat.com>
    Tested-by: Eric Auger <eric.auger@redhat.com>
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ed792ef77bfd08054cd39b1b8e9c7eb0652e033
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Thu Aug 11 10:50:57 2016 +0200

    perf tools mem: Fix -t store option for record command
    
    commit 33da54fa86e29b87fe1e83bd0f15b4ef2be53ecb upstream.
    
    Michael reported 'perf mem -t store record' being broken.  The reason is
    latest rework of this area:
    
      commit acbe613e0c03 ("perf tools: Add monitored events array")
    
    We don't mark perf_mem_events store record when -t store option is
    specified.
    
    Committer notes:
    
    Before:
    
      # perf mem -t store record usleep 1
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.020 MB perf.data (7 samples) ]
      # perf evlist
      cycles:ppp
      #
    
    After:
    
      # perf mem -t store record usleep 1
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.020 MB perf.data (7 samples) ]
      # perf evlist
      cpu/mem-stores/P
      #
    
    Reported-by: Michael Petlan <mpetlan@redhat.com>
    Signed-off-by: Jiri Olsa <jolsa@redhat.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Fixes: acbe613e0c03 ("perf tools: Add monitored events array")
    Link: http://lkml.kernel.org/r/1470905457-18311-1-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5193d39ea3ee1c86f84ea740ef10ea9877b118c
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Aug 16 13:33:26 2016 +0200

    perf/core: Fix event_function_local()
    
    commit cca2094605efe6ccf43ff2876dd5bccc799202d8 upstream.
    
    Vincent reported triggering the WARN_ON_ONCE() in event_function_local().
    
    While thinking through cases I noticed that by using event_function()
    directly, we miss the inactive case usually handled by
    event_function_call().
    
    Therefore construct a blend of event_function_call() and
    event_function() that handles the cases relevant to
    event_function_local().
    
    Reported-by: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.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>
    Fixes: fae3fde65138 ("perf: Collapse and fix event_function_call() users")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40ec4f0aae6c7c7bbe9df0d2290d3a39539aa868
Author: Anton Blanchard <anton@samba.org>
Date:   Sat Aug 13 11:55:33 2016 +1000

    perf symbols: Fix annotation of objects with debuginfo files
    
    commit 50de1a0c54cdbc69a6dbcbc323f53daf95a4050e upstream.
    
    Commit 73cdf0c6ea9c ("perf symbols: Record text offset in dso
    to calculate objdump address") started storing the offset of
    the text section for all DSOs:
    
           if (elf_section_by_name(elf, &ehdr, &tshdr, ".text", NULL))
                   dso->text_offset = tshdr.sh_addr - tshdr.sh_offset;
    
    Unfortunately this breaks debuginfo files, because we need to calculate
    the offset of the text section in the associated executable file. As a
    result perf annotate returns junk for all debuginfo files.
    
    Fix this by using runtime_ss->elf which should point at the executable
    when parsing a debuginfo file.
    
    Signed-off-by: Anton Blanchard <anton@samba.org>
    Reviewed-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Tested-by: Wang Nan <wangnan0@huawei.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Fixes: 73cdf0c6ea9c ("perf symbols: Record text offset in dso to calculate objdump address")
    Link: http://lkml.kernel.org/r/20160813115533.6de17912@kryten
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89079b8f528ba895df729fbead49090ef8115ff2
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Wed Aug 17 17:36:29 2016 +0200

    uprobes: Fix the memcg accounting
    
    commit 6c4687cc17a788a6dd8de3e27dbeabb7cbd3e066 upstream.
    
    __replace_page() wronlgy calls mem_cgroup_cancel_charge() in "success" path,
    it should only do this if page_check_address() fails.
    
    This means that every enable/disable leads to unbalanced mem_cgroup_uncharge()
    from put_page(old_page), it is trivial to underflow the page_counter->count
    and trigger OOM.
    
    Reported-and-tested-by: Brenden Blanco <bblanco@plumgrid.com>
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Reviewed-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Michal Hocko <mhocko@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    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: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vladimir Davydov <vdavydov@virtuozzo.com>
    Fixes: 00501b531c47 ("mm: memcontrol: rewrite charge API")
    Link: http://lkml.kernel.org/r/20160817153629.GB29724@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 416563f1e3de9f29de1fb6dd2ef8c57e95033969
Author: Robert Deliën <robert@delien.nl>
Date:   Thu Jul 28 18:52:55 2016 +0000

    USB: serial: ftdi_sio: add PIDs for Ivium Technologies devices
    
    commit 6977495c06f7f47636a076ee5a0ca571279d9697 upstream.
    
    Ivium Technologies uses the FTDI VID with custom PIDs for their line of
    electrochemical interfaces and the PalmSens they developed for PalmSens
    BV.
    
    Signed-off-by: Robert Delien <robert@delien.nl>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 09681826e68855515ee8261b9b702ecbfd1c3ecb
Author: Sheng-Hui J. Chu <s.jeffrey.chu@gmail.com>
Date:   Thu Jul 28 17:01:45 2016 -0400

    USB: serial: ftdi_sio: add device ID for WICED USB UART dev board
    
    commit ae34d12cc1e212ffcd92e069030e54dae69c832f upstream.
    
    BCM20706V2_EVAL is a WICED dev board designed with FT2232H USB 2.0
    UART/FIFO IC.
    
    To support BCM920706V2_EVAL dev board for WICED development on Linux.
    Add the VID(0a5c) and PID(6422) to ftdi_sio driver to allow loading
    ftdi_sio for this board.
    
    Signed-off-by: Sheng-Hui J. Chu <s.jeffrey.chu@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40c5e983849c203fd455315854b5760968a70d36
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Tue Aug 2 11:29:25 2016 +0200

    USB: serial: option: add support for Telit LE920A4
    
    commit 01d7956b58e644ea0d2e8d9340c5727a8fc39d70 upstream.
    
    This patch adds a set of compositions for Telit LE920A4.
    
    Compositions in short are:
    
    0x1207: tty + tty
    0x1208: tty + adb + tty + tty
    0x1211: tty + adb + ecm
    0x1212: tty + adb
    0x1213: ecm + tty
    0x1214: tty + adb + ecm + tty
    
    telit_le922_blacklist_usbcfg3 is reused for compositions 0x1211
    and 0x1214 due to the same interfaces positions.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bd27f7c748e6b42f9149d3029807c511ae558ad
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Sun Jul 24 13:53:30 2016 +0200

    USB: serial: option: add D-Link DWM-156/A3
    
    commit cf1b18030de29e4e5b0a57695ae5db4a89da0ff7 upstream.
    
    The device has four interfaces; the three serial ports ought to be
    handled by this driver:
    
    00 Diagnostic interface serial port
    01 NMEA device serial port
    02 Mass storage (sd card)
    03 Modem serial port
    
    The other product ids listed in the Windows driver are present already.
    
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1123aaa76db9813b41cf472855ac36c30f514cf
Author: Alexey Klimov <klimov.linux@gmail.com>
Date:   Mon Aug 8 02:34:46 2016 +0100

    USB: serial: fix memleak in driver-registration error path
    
    commit 647024a7df36014bbc4479d92d88e6b77c0afcf6 upstream.
    
    udriver struct allocated by kzalloc() will not be freed
    if usb_register() and next calls fail. This patch fixes this
    by adding one more step with kfree(udriver) in error path.
    
    Signed-off-by: Alexey Klimov <klimov.linux@gmail.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b133cf379697101af902fd476c5bd8706a6c4c8c
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Aug 16 10:18:06 2016 +0300

    xhci: don't dereference a xhci member after removing xhci
    
    commit f1f6d9a8b540df22b87a5bf6bc104edaade81f47 upstream.
    
    Remove the hcd after checking for the xhci last quirks, not before.
    
    This caused a hang on a Alpine Ridge xhci based maching which remove
    the whole xhci controller when unplugging the last usb device
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78f9f703d8151d3741fd30bf5c048ae876f8d662
Author: Jim Lin <jilin@nvidia.com>
Date:   Tue Aug 16 10:18:05 2016 +0300

    usb: xhci: Fix panic if disconnect
    
    commit 88716a93766b8f095cdef37a8e8f2c93aa233b21 upstream.
    
    After a device is disconnected, xhci_stop_device() will be invoked
    in xhci_bus_suspend().
    Also the "disconnect" IRQ will have ISR to invoke
    xhci_free_virt_device() in this sequence.
    xhci_irq -> xhci_handle_event -> handle_cmd_completion ->
    xhci_handle_cmd_disable_slot -> xhci_free_virt_device
    
    If xhci->devs[slot_id] has been assigned to NULL in
    xhci_free_virt_device(), then virt_dev->eps[i].ring in
    xhci_stop_device() may point to an invlid address to cause kernel
    panic.
    
    virt_dev = xhci->devs[slot_id];
    :
    if (virt_dev->eps[i].ring && virt_dev->eps[i].ring->dequeue)
    
    [] Unable to handle kernel paging request at virtual address 00001a68
    [] pgd=ffffffc001430000
    [] [00001a68] *pgd=000000013c807003, *pud=000000013c807003,
    *pmd=000000013c808003, *pte=0000000000000000
    [] Internal error: Oops: 96000006 [#1] PREEMPT SMP
    [] CPU: 0 PID: 39 Comm: kworker/0:1 Tainted: G     U
    [] Workqueue: pm pm_runtime_work
    [] task: ffffffc0bc0e0bc0 ti: ffffffc0bc0ec000 task.ti:
    ffffffc0bc0ec000
    [] PC is at xhci_stop_device.constprop.11+0xb4/0x1a4
    
    This issue is found when running with realtek ethernet device
    (0bda:8153).
    
    Signed-off-by: Jim Lin <jilin@nvidia.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8da0048bc02efd81e11c70f27b232709b913eda4
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Aug 16 10:18:03 2016 +0300

    xhci: always handle "Command Ring Stopped" events
    
    commit 33be126510974e2eb9679f1ca9bca4f67ee4c4c7 upstream.
    
    Fix "Command completion event does not match command" errors by always
    handling the command ring stopped events.
    
    The command ring stopped event is generated as a result of aborting
    or stopping the command ring with a register write. It is not caused
    by a command in the command queue, and thus won't have a matching command
    in the comman list.
    
    Solve it by handling the command ring stopped event before checking for a
    matching command.
    
    In most command time out cases we abort the command ring, and get
    a command ring stopped event. The events command pointer will point at
    the current command ring dequeue, which in most cases matches the timed
    out command in the command list, and no error messages are seen.
    
    If we instead get a command aborted event before the command ring stopped
    event, the abort event will increse the command ring dequeue pointer, and
    the following command ring stopped events command pointer will point at the
    next, not yet queued command. This case triggered the error message
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 329469d06e4b502244079bf6590796f1bb1488cf
Author: Mathieu Laurendeau <mat.lau@laposte.net>
Date:   Fri Jul 15 14:58:41 2016 +0200

    usb/gadget: fix gadgetfs aio support.
    
    commit 327b21da884fe1a29f733e41792ddd53e4a30379 upstream.
    
    Fix io submissions failing with ENODEV.
    
    Signed-off-by: Mathieu Laurendeau <mat.lau@laposte.net>
    Fixes: 7fe3976e0f3a ("gadget: switch ep_io_operations to ->read_iter/->write_iter")
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 446ce10bc609708651f9c426b36147283663d8f8
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jul 13 13:14:33 2016 +0300

    usb: gadget: fsl_qe_udc: off by one in setup_received_handle()
    
    commit 7442e6db5bdd0dce4615205508301f9b22e502d6 upstream.
    
    The udc->eps[] array has USB_MAX_ENDPOINTS elements so > should be >=.
    
    Fixes: 3948f0e0c999 ('usb: add Freescale QE/CPM USB peripheral controller driver')
    Acked-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e9f9f31dd418fd6a1837396a4ee224a03504c8e
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Aug 1 15:25:56 2016 -0400

    USB: validate wMaxPacketValue entries in endpoint descriptors
    
    commit aed9d65ac3278d4febd8665bd7db59ef53e825fe upstream.
    
    Erroneous or malicious endpoint descriptors may have non-zero bits in
    reserved positions, or out-of-bounds values.  This patch helps prevent
    these from causing problems by bounds-checking the wMaxPacketValue
    entries in endpoint descriptors and capping the values at the maximum
    allowed.
    
    This issue was first discovered and tests were conducted by Jake Lamberson
    <jake.lamberson1@gmail.com>, an intern working for Rosie Hall.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: roswest <roswest@cisco.com>
    Tested-by: roswest <roswest@cisco.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 857acd147e496e56dfb05c63438d4085f18b78df
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Aug 10 09:29:43 2016 +0200

    clk: renesas: r8a7795: Fix SD clocks
    
    commit e0cb1b84163720ec67ff0e54397fd3f57ad4a4dd upstream.
    
    According to the datasheet, SDn clocks are from the SDSRC clock. And
    the SDSRC has a 1/2 divider. So, we should have ".sdsrc" as an internal
    core clock. Otherwise, since the sdhi driver will calculate clock for
    a sd card using the wrong parent clock rate, and then performance will
    be not good.
    
    Fixes: 90c073e53909da85 ("clk: shmobile: r8a7795: Add SD divider support")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Acked-by: Dirk Behme <dirk.behme@de.bosch.com>
    Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75a09b0a5b3079578486a7f160e1113d6c8601be
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Mon Aug 8 21:50:53 2016 +0900

    usb: renesas_usbhs: Use dmac only if the pipe type is bulk
    
    commit 700aa7ff8d2c2b9cc669c99375e2ccd06d3cd38d upstream.
    
    This patch fixes an issue that isochronous transfer's data is possible to
    be lost as a workaround. Since this driver uses a workqueue to start
    the dmac, the transfer is possible to be delayed when system load is high.
    
    Fixes: 6e4b74e4690d ("usb: renesas: fix scheduling in atomic context bug")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d1cbc91594e92bd22a8c23dfb9c9b1077329db5
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Mon Aug 8 21:50:52 2016 +0900

    usb: renesas_usbhs: clear the BRDYSTS in usbhsg_ep_enable()
    
    commit 9ab967e6db7412b675ecbff80d5371d53c82cb2e upstream.
    
    This patch fixes an issue that unexpected BRDY interruption happens
    when the usb_ep_{enable,disable}() are called with different direction.
    In this case, the driver will cause the following message:
    
     renesas_usbhs e6590000.usb: irq_ready run_error 1 : -16
    
    This issue causes the followings:
     1) A pipe is enabled as transmission
     2) The pipe sent a data
     3) The pipe is disabled and re-enabled as reception.
     4) The pipe got a queue
    
    Since the driver doesn't clear the BRDYSTS flags after 2) above, the issue
    happens. If we add such clearing the flags into the driver, the code will
    become complicate. So, this patch clears the BRDYSTS flag of reception in
    usbhsg_ep_enable() to avoid complicate.
    
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a86ea1f108c85a516a921e8c9eebfceb7b092c7
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Mon Aug 8 21:50:51 2016 +0900

    usb: renesas_usbhs: Fix receiving data corrupt on R-Car Gen3 with dmac
    
    commit 772ce81264b179c0e61340998e3b29e900b2fa6d upstream.
    
    Since R-Car Gen3 SoC has the USB-DMAC, this driver should set
    dparam->has_usb_dmac to 1. Otherwise, behavior of this driver and
    the usb-dmac driver will be mismatch, then sometimes receiving data will
    be corrupt.
    
    Fixes: de18757e272d ("usb: renesas_usbhs: add R-Car Gen3 power control")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b35501412a534bfb303c1b1d0ef50ad08c724f76
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Aug 5 11:51:30 2016 -0400

    USB: hub: change the locking in hub_activate
    
    commit 07d316a22e119fa301fd7dba7f1e1adfd4f72c05 upstream.
    
    The locking in hub_activate() is not adequate to provide full mutual
    exclusion with hub_quiesce().  The subroutine locks the hub's
    usb_interface, but the callers of hub_quiesce() (such as
    hub_pre_reset() and hub_event()) hold the lock to the hub's
    usb_device.
    
    This patch changes hub_activate() to make it acquire the same lock as
    those other routines.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9410c4ae8ae156ebc1666c598560a360319063d5
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Aug 5 11:49:45 2016 -0400

    USB: hub: fix up early-exit pathway in hub_activate
    
    commit ca5cbc8b02f9b21cc8cd1ab36668763ec34f9ee8 upstream.
    
    The early-exit pathway in hub_activate, added by commit e50293ef9775
    ("USB: fix invalid memory access in hub_activate()") needs
    improvement.  It duplicates code that is already present at the end of
    the subroutine, and it neglects to undo the effect of a
    usb_autopm_get_interface_no_resume() call.
    
    This patch fixes both problems by making the early-exit pathway jump
    directly to the end of the subroutine.  It simplifies the code at the
    end by merging two conditionals that actually test the same condition
    although they appear different: If type < HUB_INIT3 then type must be
    either HUB_INIT2 or HUB_INIT, and it can't be HUB_INIT because in that
    case the subroutine would have exited earlier.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab192810eccde2fb7dae0b975eb65cb65567cb81
Author: Viresh Kumar <viresh.kumar@linaro.org>
Date:   Thu Aug 4 13:32:22 2016 -0700

    usb: hub: Fix unbalanced reference count/memory leak/deadlocks
    
    commit 6bb47e8ab98accb1319bd43c64966340ba3bba9a upstream.
    
    Memory leak and unbalanced reference count:
    
    If the hub gets disconnected while the core is still activating it, this
    can result in leaking memory of few USB structures.
    
    This will happen if we have done a kref_get() from hub_activate() and
    scheduled a delayed work item for HUB_INIT2/3. Now if hub_disconnect()
    gets called before the delayed work expires, then we will cancel the
    work from hub_quiesce(), but wouldn't do a kref_put(). And so the
    unbalance.
    
    kmemleak reports this as (with the commit e50293ef9775 backported to
    3.10 kernel with other changes, though the same is true for mainline as
    well):
    
    unreferenced object 0xffffffc08af5b800 (size 1024):
      comm "khubd", pid 73, jiffies 4295051211 (age 6482.350s)
      hex dump (first 32 bytes):
        30 68 f3 8c c0 ff ff ff 00 a0 b2 2e c0 ff ff ff  0h..............
        01 00 00 00 00 00 00 00 00 94 7d 40 c0 ff ff ff  ..........}@....
      backtrace:
        [<ffffffc0003079ec>] create_object+0x148/0x2a0
        [<ffffffc000cc150c>] kmemleak_alloc+0x80/0xbc
        [<ffffffc000303a7c>] kmem_cache_alloc_trace+0x120/0x1ac
        [<ffffffc0006fa610>] hub_probe+0x120/0xb84
        [<ffffffc000702b20>] usb_probe_interface+0x1ec/0x298
        [<ffffffc0005d50cc>] driver_probe_device+0x160/0x374
        [<ffffffc0005d5308>] __device_attach+0x28/0x4c
        [<ffffffc0005d3164>] bus_for_each_drv+0x78/0xac
        [<ffffffc0005d4ee0>] device_attach+0x6c/0x9c
        [<ffffffc0005d42b8>] bus_probe_device+0x28/0xa0
        [<ffffffc0005d23a4>] device_add+0x324/0x604
        [<ffffffc000700fcc>] usb_set_configuration+0x660/0x6cc
        [<ffffffc00070a350>] generic_probe+0x44/0x84
        [<ffffffc000702914>] usb_probe_device+0x54/0x74
        [<ffffffc0005d50cc>] driver_probe_device+0x160/0x374
        [<ffffffc0005d5308>] __device_attach+0x28/0x4c
    
    Deadlocks:
    
    If the hub gets disconnected early enough (i.e. before INIT2/INIT3 are
    finished and the init_work is still queued), the core may call
    hub_quiesce() after acquiring interface device locks and it will wait
    for the work to be cancelled synchronously. But if the work handler is
    already running in parallel, it may try to acquire the same interface
    device lock and this may result in deadlock.
    
    Fix both the issues by removing the call to cancel_delayed_work_sync().
    
    Fixes: e50293ef9775 ("USB: fix invalid memory access in hub_activate()")
    Reported-by: Manu Gautam <mgautam@codeaurora.org>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1eced36850fa879d7ae31959fd9956797df15b2e
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Wed Aug 10 12:35:30 2016 +0300

    usb: dwc3: gadget: always cleanup all TRBs
    
    commit 7c705dfe2ebe731c8fd068623b6b4df2d3512c08 upstream.
    
    If we stop earlier due to short packet, we will
    not be able to giveback all TRBs.
    
    Cc: Brian E Rogers <brian.e.rogers@intel.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07616b5a84b5f628ac03c2c9d84155f817490dc0
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Wed Aug 10 11:13:26 2016 +0300

    usb: dwc3: gadget: fix for short pkts during chained xfers
    
    commit e5b36ae2f851024d43c76e51f395d32ce8d769ce upstream.
    
    DWC3 has one interesting peculiarity with chained
    transfers. If we setup N chained transfers and we
    get a short packet before processing all N TRBs,
    DWC3 will (conditionally) issue a XferComplete or
    XferInProgress event and retire all TRBs from the
    one which got a short packet to the last without
    clearing their HWO bits.
    
    This means SW must clear HWO bit manually, which
    this patch is doing.
    
    Cc: Brian E Rogers <brian.e.rogers@intel.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 421f2109fa52802d2472d970bd3ec87b8485e5ba
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Fri Jul 29 03:17:58 2016 +0300

    usb: dwc3: gadget: increment request->actual once
    
    commit c7de573471832dff7d31f0c13b0f143d6f017799 upstream.
    
    When using SG lists, we would end up setting
    request->actual to:
    
            num_mapped_sgs * (request->length - count)
    
    Let's fix that up by incrementing request->actual
    only once.
    
    Reported-by: Brian E Rogers <brian.e.rogers@intel.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1c594095fea96bc54eb3b19aa2a75db7511692f
Author: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Date:   Fri Apr 1 17:13:11 2016 +0300

    usb: dwc3: pci: add Intel Kabylake PCI ID
    
    commit 4491ed5042f0419b22a4b08331adb54af31e2caa upstream.
    
    Intel Kabylake PCH has the same DWC3 than Intel
    Sunrisepoint. Add the new ID to the supported devices.
    
    Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1832e0059dfdf08fa893856f44da615c128764f
Author: Peter Chen <peter.chen@nxp.com>
Date:   Tue Jul 26 16:01:30 2016 +0800

    usb: misc: usbtest: usbtest_do_ioctl may return positive integer
    
    commit 528d28138f91009f230903bd89ccd44719667831 upstream.
    
    For case 14 and case 21, their correct return value is the number
    of bytes transferred, so it is a positive integer. But in usbtest_ioctl,
    it takes non-zero as false return value for usbtest_do_ioctl, so
    it will treat the correct test as wrong test, then the time on
    tests will be the minus value.
    
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Fixes: 18fc4ebdc705 ("usb: misc: usbtest: Remove timeval usage")
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ea2706a2a5fa8c1c9fb4b8a1d47c16200369897
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Thu Aug 11 10:31:14 2016 +0800

    usb: misc: usbtest: add fix for driver hang
    
    commit 539587511835ea12d8daa444cbed766cf2bc3612 upstream.
    
    In sg_timeout(), req->status is set to "-ETIMEDOUT" before calling
    into usb_sg_cancel(). usb_sg_cancel() will do nothing and return
    directly if req->status has been set to a non-zero value. This will
    cause driver hang whenever transfer time out is triggered.
    
    This patch fixes this issue. It could be backported to stable kernel
    with version later than v3.15.
    
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Suggested-by: Alan Stern <stern@rowland.harvard.edu>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d21eb34d018a9153180ca12e40f2db43c7901e1c
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Wed Jun 15 15:56:11 2016 +0200

    usb: devio, do not warn when allocation fails
    
    commit 70f7ca9a0262784d0b80727860a63d64ab228e7b upstream.
    
    usbdev_mmap allocates a buffer. The size of the buffer is determined
    by a user. So with this code (no need to be root):
    
            int fd = open("/dev/bus/usb/001/001", O_RDONLY);
            mmap(NULL, 0x800000, PROT_READ, MAP_SHARED, fd, 0);
    
    we can see a warning:
    
    WARNING: CPU: 0 PID: 21771 at ../mm/page_alloc.c:3563 __alloc_pages_slowpath+0x1036/0x16e0()
    ...
    Call Trace:
     [<ffffffff8117a3ae>] ? warn_slowpath_null+0x2e/0x40
     [<ffffffff815178b6>] ? __alloc_pages_slowpath+0x1036/0x16e0
     [<ffffffff81516880>] ? warn_alloc_failed+0x250/0x250
     [<ffffffff8151226b>] ? get_page_from_freelist+0x75b/0x28b0
     [<ffffffff815184e3>] ? __alloc_pages_nodemask+0x583/0x6b0
     [<ffffffff81517f60>] ? __alloc_pages_slowpath+0x16e0/0x16e0
     [<ffffffff810565d4>] ? dma_generic_alloc_coherent+0x104/0x220
     [<ffffffffa0269e56>] ? hcd_buffer_alloc+0x1d6/0x3e0 [usbcore]
     [<ffffffffa0269c80>] ? hcd_buffer_destroy+0xa0/0xa0 [usbcore]
     [<ffffffffa0228f05>] ? usb_alloc_coherent+0x65/0x90 [usbcore]
     [<ffffffffa0275c05>] ? usbdev_mmap+0x1a5/0x770 [usbcore]
    ...
    
    Allocations like this one should be marked as __GFP_NOWARN. So do so.
    
    The size could be also clipped by something like:
            if (size >= (1 << (MAX_ORDER + PAGE_SHIFT - 1)))
                    return -ENOMEM;
    But I think the overall limit of 16M (by usbfs_increase_memory_usage)
    is enough, so that we only silence the warning here.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Steinar H. Gunderson <sesse@google.com>
    Cc: Markus Rechberger <mrechberger@gmail.com>
    Fixes: f7d34b445a (USB: Add support for usbfs zerocopy.)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a76864de5bad513c394f28ef85f821c2bcf1316
Author: Marc Ohlf <ohlf@mkt-sys.de>
Date:   Wed Aug 3 11:51:54 2016 +0200

    usb: ehci: change order of register cleanup during shutdown
    
    commit bc337b51508beb2d039aff5074a76cfe1c212030 upstream.
    
    In ehci_turn_off_all_ports() all EHCI port registers are cleared to zero.
    On some hardware, this can lead to an system hang,
    when ehci_port_power() accesses the already cleared registers.
    
    This patch changes the order of cleanup.
    First call ehci_port_power() which respects the current bits in
    port status registers
    and afterwards cleanup the hard way by setting everything to zero.
    
    Signed-off-by: Marc Ohlf <ohlf@mkt-sys.de>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8294e0c541511f85d74e15ad1ce99627cd339ef
Author: Helge Deller <deller@gmx.de>
Date:   Fri Aug 19 22:39:02 2016 +0200

    parisc: Fix automatic selection of cr16 clocksource
    
    commit ae141830b118c3fb5b7eab6fa7c8ab7b7224b0a4 upstream.
    
    Commit 54b66800907 (parisc: Add native high-resolution sched_clock()
    implementation) added support to use the CPU-internal cr16 counters as reliable
    clocksource with the help of HAVE_UNSTABLE_SCHED_CLOCK.
    
    Sadly the commit missed to remove the hack which prevented cr16 to become the
    default clocksource even on SMP systems.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24d5f2420a327696585d092c4cdb59eb527dbc63
Author: Horia Geantă <horia.geanta@nxp.com>
Date:   Thu Aug 4 20:02:47 2016 +0300

    crypto: caam - defer aead_set_sh_desc in case of zero authsize
    
    commit 2fdea258fde036a87d3396ec9c0ef66f10768530 upstream.
    
    To be able to generate shared descriptors for AEAD, the authentication size
    needs to be known. However, there is no imposed order of calling .setkey,
    .setauthsize callbacks.
    
    Thus, in case authentication size is not known at .setkey time, defer it
    until .setauthsize is called.
    
    The authsize != 0 check was incorrectly removed when converting the driver
    to the new AEAD interface.
    
    Fixes: 479bcc7c5b9e ("crypto: caam - Convert authenc to new AEAD interface")
    Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf84cfceb14405d8a3b1a8b774957db17bdb3e1a
Author: Horia Geantă <horia.geanta@nxp.com>
Date:   Thu Aug 4 20:02:46 2016 +0300

    crypto: caam - fix echainiv(authenc) encrypt shared descriptor
    
    commit 1d2d87e81ea21f64c19b95ef228b865a6880e17e upstream.
    
    There are a few things missed by the conversion to the
    new AEAD interface:
    
    1 - echainiv(authenc) encrypt shared descriptor
    
    The shared descriptor is incorrect: due to the order of operations,
    at some point in time MATH3 register is being overwritten.
    
    2 - buffer used for echainiv(authenc) encrypt shared descriptor
    
    Encrypt and givencrypt shared descriptors (for AEAD ops) are mutually
    exclusive and thus use the same buffer in context state: sh_desc_enc.
    
    However, there's one place missed by s/sh_desc_givenc/sh_desc_enc,
    leading to errors when echainiv(authenc(...)) algorithms are used:
    DECO: desc idx 14: Header Error. Invalid length or parity, or
    certain other problems.
    
    While here, also fix a typo: dma_mapping_error() is checking
    for validity of sh_desc_givenc_dma instead of sh_desc_enc_dma.
    
    Fixes: 479bcc7c5b9e ("crypto: caam - Convert authenc to new AEAD interface")
    Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49f5b9089d0881737f771c40e3135624bb887ab1
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Tue Aug 9 08:27:17 2016 +0100

    crypto: caam - fix non-hmac hashes
    
    commit a0118c8b2be9297aed8e915c60b4013326b256d4 upstream.
    
    Since 6de62f15b581 ("crypto: algif_hash - Require setkey before
    accept(2)"), the AF_ALG interface requires userspace to provide a key
    to any algorithm that has a setkey method.  However, the non-HMAC
    algorithms are not keyed, so setting a key is unnecessary.
    
    Fix this by removing the setkey method from the non-keyed hash
    algorithms.
    
    Fixes: 6de62f15b581 ("crypto: algif_hash - Require setkey before accept(2)")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2aa5512c4144ac4c20f326006bb918c42a3ad596
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Wed Jul 13 17:18:33 2016 +0100

    genirq/msi: Make sure PCI MSIs are activated early
    
    commit f3b0946d629c8bfbd3e5f038e30cb9c711a35f10 upstream.
    
    Bharat Kumar Gogada reported issues with the generic MSI code, where the
    end-point ended up with garbage in its MSI configuration (both for the vector
    and the message).
    
    It turns out that the two MSI paths in the kernel are doing slightly different
    things:
    
    generic MSI: disable MSI -> allocate MSI -> enable MSI -> setup EP
    PCI MSI: disable MSI -> allocate MSI -> setup EP -> enable MSI
    
    And it turns out that end-points are allowed to latch the content of the MSI
    configuration registers as soon as MSIs are enabled.  In Bharat's case, the
    end-point ends up using whatever was there already, which is not what you
    want.
    
    In order to make things converge, we introduce a new MSI domain flag
    (MSI_FLAG_ACTIVATE_EARLY) that is unconditionally set for PCI/MSI. When set,
    this flag forces the programming of the end-point as soon as the MSIs are
    allocated.
    
    A consequence of this is that we have an extra activate in irq_startup, but
    that should be without much consequence.
    
    tglx:
    
     - Several people reported a VMWare regression with PCI/MSI-X passthrough. It
       turns out that the patch also cures that issue.
    
     - We need to have a look at the MSI disable interrupt path, where we write
       the msg to all zeros without disabling MSI in the PCI device. Is that
       correct?
    
    Fixes: 52f518a3a7c2 "x86/MSI: Use hierarchical irqdomains to manage MSI interrupts"
    Reported-and-tested-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
    Reported-and-tested-by: Foster Snowhill <forst@forstwoof.ru>
    Reported-by: Matthias Prager <linux@matthiasprager.de>
    Reported-by: Jason Taylor <jason.taylor@simplivity.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Cc: linux-pci@vger.kernel.org
    Link: http://lkml.kernel.org/r/1468426713-31431-1-git-send-email-marc.zyngier@arm.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25b00c788a4012c66ae01615883bf5b012701b73
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Jul 4 17:39:22 2016 +0900

    genirq/msi: Remove unused MSI_FLAG_IDENTITY_MAP
    
    commit b6140914fd079e43ea75a53429b47128584f033a upstream.
    
    No user and we definitely don't want to grow one.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: linux-block@vger.kernel.org
    Cc: linux-pci@vger.kernel.org
    Cc: linux-nvme@lists.infradead.org
    Cc: axboe@fb.com
    Cc: agordeev@redhat.com
    Link: http://lkml.kernel.org/r/1467621574-8277-2-git-send-email-hch@lst.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0defab81437c88567be6ea8044123f19b966766e
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Wed Aug 17 18:10:11 2016 +0300

    um: Don't discard .text.exit section
    
    commit dad2232844073295c64e9cc2d734a0ade043e0f6 upstream.
    
    Commit e41f501d3912 ("vmlinux.lds: account for destructor sections")
    added '.text.exit' to EXIT_TEXT which is discarded at link time by default.
    This breaks compilation of UML:
         `.text.exit' referenced in section `.fini_array' of
         /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libc.a(sdlerror.o):
         defined in discarded section `.text.exit' of
         /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libc.a(sdlerror.o)
    
    Apparently UML doesn't want to discard exit text, so let's place all EXIT_TEXT
    sections in .exit.text.
    
    Fixes: e41f501d3912 ("vmlinux.lds: account for destructor sections")
    Reported-by: Stefan Traby <stefan@hello-penguin.com>
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Acked-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69c84af1e6c8368f4d036c9173c1109a9c4ab333
Author: Hoan Tran <hotran@apm.com>
Date:   Wed May 25 12:09:23 2016 -0700

    ACPI / CPPC: Prevent cpc_desc_ptr points to the invalid data
    
    commit 2324d15447a9db168b1f85e3feac635b1ff8edb8 upstream.
    
    When CPPC fails to request a PCC channel, the CPC data is freed
    and cpc_desc_ptr points to the invalid data.
    
    Avoid this issue by moving the cpc_desc_ptr assignment after the PCC
    channel request.
    
    Signed-off-by: Hoan Tran <hotran@apm.com>
    Acked-by: Ashwin Chaugule <ashwin.chaugule@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 822c7edad9b7ca0feca4de5f4ecbdb1355723376
Author: Hoan Tran <hotran@apm.com>
Date:   Fri Jun 17 15:16:31 2016 -0700

    ACPI: CPPC: Return error if _CPC is invalid on a CPU
    
    commit 8343c40d3de32ebfe8f48b043964e4ba0e7701f7 upstream.
    
    Based on 8.4.7.1 section of ACPI 6.1 specification, if the platform
    supports CPPC, the _CPC object must exist under all processor objects.
    If cpc_desc_ptr pointer is invalid on any CPUs, acpi_get_psd_map()
    should return error and CPPC cpufreq driver can not be registered.
    
    Signed-off-by: Hoan Tran <hotran@apm.com>
    Reviewed-by: Prashanth Prakash <pprakash@codeaurora.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a794c7a9f23f303578bef01ca99aee557468f8fc
Author: Ross Zwisler <ross.zwisler@linux.intel.com>
Date:   Fri Jul 29 14:59:12 2016 -0600

    libnvdimm, nd_blk: mask off reserved status bits
    
    commit 68202c9f0ad6e16ee806fbadbc5838d55fe5aa5c upstream.
    
    The "NVDIMM Block Window Driver Writer's Guide":
    
        http://pmem.io/documents/NVDIMM_DriverWritersGuide-July-2016.pdf
    
    ...defines the layout of the block window status register.  For the July
    2016 version of the spec linked to above, this happens in Figure 4 on
    page 26.
    
    The only bits defined in this spec are bits 31, 5, 4, 2, 1 and 0.  The
    rest of the bits in the status register are reserved, and there is a
    warning following the diagram that says:
    
        Note: The driver cannot assume the value of the RESERVED bits in the
        status register are zero. These reserved bits need to be masked off, and
        the driver must avoid checking the state of those bits.
    
    This change ensures that for hardware implementations that set these
    reserved bits in the status register, the driver won't incorrectly fail the
    block I/Os.
    
    Reviewed-by: Lee, Chun-Yi <jlee@suse.com>
    Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af8ff84d43d6308fa6861b33e0315a18f61a538e
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Aug 15 10:23:04 2016 +0300

    perf intel-pt: Fix occasional decoding errors when tracing system-wide
    
    commit 3d918fb13abdbeca7947578f5d7e426eafad7f5e upstream.
    
    In order to successfully decode Intel PT traces, context switch events
    are needed from the moment the trace starts. Currently that is ensured
    by using the 'immediate' flag which enables the switch event when it is
    opened.
    
    However, since commit 86c2786994bd ("perf intel-pt: Add support for
    PERF_RECORD_SWITCH") that might not always happen. When tracing
    system-wide the context switch event is added to the tracking event
    which was not set as 'immediate'. Change that so it is.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Fixes: 86c2786994bd ("perf intel-pt: Add support for PERF_RECORD_SWITCH")
    Link: http://lkml.kernel.org/r/1471245784-22580-1-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 077801111d6481855ff1cd2b432541568d899bb0
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Fri Aug 5 12:41:52 2016 -0400

    tracing: Fix tick_stop tracepoint symbols for user export
    
    commit c87edb36118664f1fa275107c1138b6f47793240 upstream.
    
    The symbols used in the tick_stop tracepoint were not being converted
    properly into integers in the trace_stop format file. Instead we had this:
    
    print fmt: "success=%d dependency=%s", REC->success,
        __print_symbolic(REC->dependency, { 0, "NONE" },
         { (1 << TICK_DEP_BIT_POSIX_TIMER), "POSIX_TIMER" },
         { (1 << TICK_DEP_BIT_PERF_EVENTS), "PERF_EVENTS" },
         { (1 << TICK_DEP_BIT_SCHED), "SCHED" },
         { (1 << TICK_DEP_BIT_CLOCK_UNSTABLE), "CLOCK_UNSTABLE" })
    
    User space tools have no idea how to parse "TICK_DEP_BIT_SCHED" or the other
    symbols used to do the bit shifting. The reason is that the conversion was
    done with using the TICK_DEP_MASK_* symbols which are just macros that
    convert to the BIT shift itself (with the exception of NONE, which was
    converted properly, because it doesn't use bits, and is defined as zero).
    
    The TICK_DEP_BIT_* needs to be denoted by TRACE_DEFINE_ENUM() in order to
    have this properly converted for user space tools to parse this event.
    
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Fixes: e6e6cc22e067 ("nohz: Use enum code for tick stop failure tracing message")
    Reported-by: Luiz Capitulino <lcapitulino@redhat.com>
    Tested-by: Luiz Capitulino <lcapitulino@redhat.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71a3276e1a96b5df1bdc3ccaf9cba0f874004dcb
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Mon Aug 8 16:16:23 2016 -0600

    vfio/pci: Fix NULL pointer oops in error interrupt setup handling
    
    commit c8952a707556e04374d7b2fdb3a079d63ddf6f2f upstream.
    
    There are multiple cases in vfio_pci_set_ctx_trigger_single() where
    we assume we can safely read from our data pointer without actually
    checking whether the user has passed any data via the count field.
    VFIO_IRQ_SET_DATA_NONE in particular is entirely broken since we
    attempt to pull an int32_t file descriptor out before even checking
    the data type.  The other data types assume the data pointer contains
    one element of their type as well.
    
    In part this is good news because we were previously restricted from
    doing much sanitization of parameters because it was missed in the
    past and we didn't want to break existing users.  Clearly DATA_NONE
    is completely broken, so it must not have any users and we can fix
    it up completely.  For DATA_BOOL and DATA_EVENTFD, we'll just
    protect ourselves, returning error when count is zero since we
    previously would have oopsed.
    
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Reported-by: Chris Thompson <the_cartographer@hotmail.com>
    Reviewed-by: Eric Auger <eric.auger@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6279bc952372fe47a06e13a1f7be34711854fd5
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Aug 10 16:27:58 2016 -0700

    mm/slub.c: run free_partial() outside of the kmem_cache_node->list_lock
    
    commit 6039892396d845b18228935561960441900cffca upstream.
    
    With debugobjects enabled and using SLAB_DESTROY_BY_RCU, when a
    kmem_cache_node is destroyed the call_rcu() may trigger a slab
    allocation to fill the debug object pool (__debug_object_init:fill_pool).
    
    Everywhere but during kmem_cache_destroy(), discard_slab() is performed
    outside of the kmem_cache_node->list_lock and avoids a lockdep warning
    about potential recursion:
    
      =============================================
      [ INFO: possible recursive locking detected ]
      4.8.0-rc1-gfxbench+ #1 Tainted: G     U
      ---------------------------------------------
      rmmod/8895 is trying to acquire lock:
       (&(&n->list_lock)->rlock){-.-...}, at: [<ffffffff811c80d7>] get_partial_node.isra.63+0x47/0x430
    
      but task is already holding lock:
       (&(&n->list_lock)->rlock){-.-...}, at: [<ffffffff811cbda4>] __kmem_cache_shutdown+0x54/0x320
    
      other info that might help us debug this:
      Possible unsafe locking scenario:
            CPU0
            ----
       lock(&(&n->list_lock)->rlock);
       lock(&(&n->list_lock)->rlock);
    
       *** DEADLOCK ***
       May be due to missing lock nesting notation
       5 locks held by rmmod/8895:
       #0:  (&dev->mutex){......}, at: driver_detach+0x42/0xc0
       #1:  (&dev->mutex){......}, at: driver_detach+0x50/0xc0
       #2:  (cpu_hotplug.dep_map){++++++}, at: get_online_cpus+0x2d/0x80
       #3:  (slab_mutex){+.+.+.}, at: kmem_cache_destroy+0x3c/0x220
       #4:  (&(&n->list_lock)->rlock){-.-...}, at: __kmem_cache_shutdown+0x54/0x320
    
      stack backtrace:
      CPU: 6 PID: 8895 Comm: rmmod Tainted: G     U          4.8.0-rc1-gfxbench+ #1
      Hardware name: Gigabyte Technology Co., Ltd. H87M-D3H/H87M-D3H, BIOS F11 08/18/2015
      Call Trace:
        __lock_acquire+0x1646/0x1ad0
        lock_acquire+0xb2/0x200
        _raw_spin_lock+0x36/0x50
        get_partial_node.isra.63+0x47/0x430
        ___slab_alloc.constprop.67+0x1a7/0x3b0
        __slab_alloc.isra.64.constprop.66+0x43/0x80
        kmem_cache_alloc+0x236/0x2d0
        __debug_object_init+0x2de/0x400
        debug_object_activate+0x109/0x1e0
        __call_rcu.constprop.63+0x32/0x2f0
        call_rcu+0x12/0x20
        discard_slab+0x3d/0x40
        __kmem_cache_shutdown+0xdb/0x320
        shutdown_cache+0x19/0x60
        kmem_cache_destroy+0x1ae/0x220
        i915_gem_load_cleanup+0x14/0x40 [i915]
        i915_driver_unload+0x151/0x180 [i915]
        i915_pci_remove+0x14/0x20 [i915]
        pci_device_remove+0x34/0xb0
        __device_release_driver+0x95/0x140
        driver_detach+0xb6/0xc0
        bus_remove_driver+0x53/0xd0
        driver_unregister+0x27/0x50
        pci_unregister_driver+0x25/0x70
        i915_exit+0x1a/0x1e2 [i915]
        SyS_delete_module+0x193/0x1f0
        entry_SYSCALL_64_fastpath+0x1c/0xac
    
    Fixes: 52b4b950b507 ("mm: slab: free kmem_cache_node after destroy sysfs file")
    Link: http://lkml.kernel.org/r/1470759070-18743-1-git-send-email-chris@chris-wilson.co.uk
    Reported-by: Dave Gordon <david.s.gordon@intel.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Vladimir Davydov <vdavydov@virtuozzo.com>
    Acked-by: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Dave Gordon <david.s.gordon@intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1711824f43eb72e4e8e724414e539e1cd10cc42e
Author: Wei Yongjun <weiyj.lk@gmail.com>
Date:   Tue Aug 2 14:16:31 2016 +0000

    virtio: fix memory leak in virtqueue_add()
    
    commit 58625edf9e2515ed41dac2a24fa8004030a87b87 upstream.
    
    When using the indirect buffers feature, 'desc' is allocated in
    virtqueue_add() but isn't freed before leaving on a ring full error,
    causing a memory leak.
    
    For example, it seems rather clear that this can trigger
    with virtio net if mergeable buffers are not used.
    
    Signed-off-by: Wei Yongjun <weiyj.lk@gmail.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 928f8268f32cec1be5c022789629455a7618713b
Author: Helge Deller <deller@gmx.de>
Date:   Sat Aug 20 11:51:38 2016 +0200

    parisc: Fix order of EREFUSED define in errno.h
    
    commit 3eb53b20d7bd1374598cfb1feaa081fcac0e76cd upstream.
    
    When building gccgo in userspace, errno.h gets parsed and the go include file
    sysinfo.go is generated.
    
    Since EREFUSED is defined to the same value as ECONNREFUSED, and ECONNREFUSED
    is defined later on in errno.h, this leads to go complaining that EREFUSED
    isn't defined yet.
    
    Fix this trivial problem by moving the define of EREFUSED down after
    ECONNREFUSED in errno.h (and clean up the indenting while touching this line).
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2358544bddffdc69cb67dde78a5f834194d1275
Author: Austin Christ <austinwc@codeaurora.org>
Date:   Thu Aug 11 11:42:00 2016 +0100

    efi/capsule: Allocate whole capsule into virtual memory
    
    commit 6862e6ad95e984991a6ceec592cf67831658f928 upstream.
    
    According to UEFI 2.6 section 7.5.3, the capsule should be in contiguous
    virtual memory and firmware may consume the capsule immediately. To
    correctly implement this functionality, the kernel driver needs to vmap
    the entire capsule at the time it is made available to firmware.
    
    The virtual allocation of the capsule update has been changed from kmap,
    which was only allocating the first page of the update, to vmap, and
    allocates the entire data payload.
    
    Signed-off-by: Austin Christ <austinwc@codeaurora.org>
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Reviewed-by: Matt Fleming <matt@codeblueprint.co.uk>
    Reviewed-by: Lee, Chun-Yi <jlee@suse.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Bryan O'Donoghue <pure.logic@nexus-software.ie>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Kweh Hock Leong <hock.leong.kweh@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/1470912120-22831-3-git-send-email-matt@codeblueprint.co.uk
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7408eca94745c441acb1c6b55ebeb08b735bf1f
Author: James Hogan <james.hogan@imgtec.com>
Date:   Mon Jul 25 16:59:52 2016 +0100

    arm64: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO
    
    commit 3146bc64d12377a74dbda12b96ea32da3774ae07 upstream.
    
    AT_VECTOR_SIZE_ARCH should be defined with the maximum number of
    NEW_AUX_ENT entries that ARCH_DLINFO can contain, but it wasn't defined
    for arm64 at all even though ARCH_DLINFO will contain one NEW_AUX_ENT
    for the VDSO address.
    
    This shouldn't be a problem as AT_VECTOR_SIZE_BASE includes space for
    AT_BASE_PLATFORM which arm64 doesn't use, but lets define it now and add
    the comment above ARCH_DLINFO as found in several other architectures to
    remind future modifiers of ARCH_DLINFO to keep AT_VECTOR_SIZE_ARCH up to
    date.
    
    Fixes: f668cd1673aa ("arm64: ELF definitions")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ecb3bdbed6535305929945ba6da79f77121bd3a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Aug 4 22:38:36 2016 +0200

    ALSA: hda - Manage power well properly for resume
    
    commit a52ff34e5ec61749c62c6618b76a9d6dbecee450 upstream.
    
    For SKL and later Intel chips, we control the power well per codec
    basis via link_power callback since the commit [03b135cebc47: ALSA:
    hda - remove dependency on i915 power well for SKL].
    However, there are a few exceptional cases where the gfx registers are
    accessed from the audio driver: namely the wakeup override bit
    toggling at (both system and runtime) resume.  This seems causing a
    kernel warning when accessed during the power well down (and likely
    resulting in the bogus register accesses).
    
    This patch puts the proper power up / down sequence around the resume
    code so that the wakeup bit is fiddled properly while the power is
    up.  (The other callback, sync_audio_rate, is used only in the PCM
    callback, so it's guaranteed in the power-on.)
    
    Also, by this proper power up/down, the instantaneous flip of wakeup
    bit in the resume callback that was introduced by the commit
    [033ea349a7cd: ALSA: hda - Fix Skylake codec timeout] becomes
    superfluous, as snd_hdac_display_power() already does it.  So we can
    clean it up together.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96214
    Fixes: 03b135cebc47 ('ALSA: hda - remove dependency on i915 power well for SKL')
    Tested-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e9e90806841b971ed1a6b09f15cf052bf7a888c
Author: Vittorio Gambaletta (VittGam) <linuxbugs@vittgam.net>
Date:   Mon Aug 8 12:35:40 2016 +0200

    ALSA: usb-audio: Add quirk for ELP HD USB Camera
    
    commit 41f5e3bdbf706a9e98194bf0c4b62a875c02f170 upstream.
    
    The ELP HD USB Camera (05a3:9420) needs this quirk for suppressing
    the unsupported sample rate inquiry.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=98481
    Signed-off-by: Vittorio Gambaletta <linuxbugs@vittgam.net>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6be84fb45138c57a046d3409c0362bca4e34a3b9
Author: Piotr Karasinski <peter.karasinski@gmail.com>
Date:   Sat Aug 6 21:23:05 2016 +0200

    ALSA: usb-audio: Add a sample rate quirk for Creative Live! Cam Socialize HD (VF0610)
    
    commit 7627e40c66b5547e12b6c5673646ceea84797a74 upstream.
    
    VF0610 does not support reading the sample rate which leads to many
    lines of "cannot get freq at ep 0x82". This patch adds the USB ID
    (0x041E:4080) to snd_usb_get_sample_rate_quirk() list.
    
    Signed-off-by: Piotr Karasinski <peter.karasinski@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4fd2aa1137cecde98b0895775ff8472bc5e08ef4
Author: Olga Kornievskaia <kolga@netapp.com>
Date:   Wed Aug 3 20:19:48 2016 -0400

    SUNRPC: allow for upcalls for same uid but different gss service
    
    commit 9130b8dbc6ac20f2dc5846e1647f5b60eafab6e3 upstream.
    
    It's possible to have simultaneous upcalls for the same UIDs but
    different GSS service. In that case, we need to allow for the
    upcall to gssd to proceed so that not the same context is used
    by two different GSS services. Some servers lock the use of context
    to the GSS service.
    
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 071f3ed4bd40e7d12130fa3e0ecf2e3acea55ce5
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Mon Aug 1 13:36:08 2016 -0400

    SUNRPC: Handle EADDRNOTAVAIL on connection failures
    
    commit 1f4c17a03ba7f430d63dba8c8e08ff1e2712581d upstream.
    
    If the connect attempt immediately fails with an EADDRNOTAVAIL error, then
    that means our choice of source port number was bad.
    This error is expected when we set the SO_REUSEPORT socket option and we
    have 2 sockets sharing the same source and destination address and port
    combinations.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Fixes: 402e23b4ed9ed ("SUNRPC: Fix stupid typo in xs_sock_set_reuseport")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2be379d41482d05529c480a4a369245a5d27fa88
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Wed Aug 10 15:59:09 2016 -0700

    tools/testing/nvdimm: fix SIGTERM vs hotplug crash
    
    commit d8d378fa1a0c98ecb50ca52c9bf3bc14e25aa2d2 upstream.
    
    The unit tests crash when hotplug races the previous probe. This race
    requires that the loading of the nfit_test module be terminated with
    SIGTERM, and the module to be unloaded while the ars scan is still
    running.
    
    In contrast to the normal nfit driver, the unit test calls
    acpi_nfit_init() twice to simulate hotplug, whereas the nominal case
    goes through the acpi_nfit_notify() event handler.  The
    acpi_nfit_notify() path is careful to flush the previous region
    registration before servicing the hotplug event. The unit test was
    missing this guarantee.
    
     BUG: unable to handle kernel NULL pointer dereference at           (null)
     IP: [<ffffffff810cdce7>] pwq_activate_delayed_work+0x47/0x170
     [..]
     Call Trace:
      [<ffffffff810ce186>] pwq_dec_nr_in_flight+0x66/0xa0
      [<ffffffff810ce490>] process_one_work+0x2d0/0x680
      [<ffffffff810ce331>] ? process_one_work+0x171/0x680
      [<ffffffff810ce88e>] worker_thread+0x4e/0x480
      [<ffffffff810ce840>] ? process_one_work+0x680/0x680
      [<ffffffff810ce840>] ? process_one_work+0x680/0x680
      [<ffffffff810d5343>] kthread+0xf3/0x110
      [<ffffffff8199846f>] ret_from_fork+0x1f/0x40
      [<ffffffff810d5250>] ? kthread_create_on_node+0x230/0x230
    
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 942e1a1c56c4ccc006fe9fa4a9a2c6bfffcbaca4
Author: Alex Thorlton <athorlton@sgi.com>
Date:   Thu Aug 11 11:41:59 2016 +0100

    x86/platform/uv: Skip UV runtime services mapping in the efi_runtime_disabled case
    
    commit f72075c9eda8a43aeea2f9dbb8d187afd4a76f0b upstream.
    
    This problem has actually been in the UV code for a while, but we didn't
    catch it until recently, because we had been relying on EFI_OLD_MEMMAP
    to allow our systems to boot for a period of time.  We noticed the issue
    when trying to kexec a recent community kernel, where we hit this NULL
    pointer dereference in efi_sync_low_kernel_mappings():
    
     [    0.337515] BUG: unable to handle kernel NULL pointer dereference at 0000000000000880
     [    0.346276] IP: [<ffffffff8105df8d>] efi_sync_low_kernel_mappings+0x5d/0x1b0
    
    The problem doesn't show up with EFI_OLD_MEMMAP because we skip the
    chunk of setup_efi_state() that sets the efi_loader_signature for the
    kexec'd kernel.  When the kexec'd kernel boots, it won't set EFI_BOOT in
    setup_arch, so we completely avoid the bug.
    
    We always kexec with noefi on the command line, so this shouldn't be an
    issue, but since we're not actually checking for efi_runtime_disabled in
    uv_bios_init(), we end up trying to do EFI runtime callbacks when we
    shouldn't be. This patch just adds a check for efi_runtime_disabled in
    uv_bios_init() so that we don't map in uv_systab when runtime_disabled ==
    true.
    
    Signed-off-by: Alex Thorlton <athorlton@sgi.com>
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Travis <travis@sgi.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Russ Anderson <rja@sgi.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/1470912120-22831-2-git-send-email-matt@codeblueprint.co.uk
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f05d37706e2086f82c5a4ab98a0561afcfa82fbf
Author: Denys Vlasenko <dvlasenk@redhat.com>
Date:   Thu Aug 11 17:45:21 2016 +0200

    uprobes/x86: Fix RIP-relative handling of EVEX-encoded instructions
    
    commit 68187872c76a96ed4db7bfb064272591f02e208b upstream.
    
    Since instruction decoder now supports EVEX-encoded instructions, two fixes
    are needed to correctly handle them in uprobes.
    
    Extended bits for MODRM.rm field need to be sanitized just like we do it
    for VEX3, to avoid encoding wrong register for register-relative access.
    
    EVEX has _two_ extended bits: b and x. Theoretically, EVEX.x should be
    ignored by the CPU (since GPRs go only up to 15, not 31), but let's be
    paranoid here: proper encoding for register-relative access
    should have EVEX.x = 1.
    
    Secondly, we should fetch vex.vvvv for EVEX too.
    This is now super easy because instruction decoder populates
    vex_prefix.bytes[2] for all flavors of (e)vex encodings, even for VEX2.
    
    Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jim Keniston <jkenisto@us.ibm.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    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>
    Cc: linux-kernel@vger.kernel.org
    Fixes: 8a764a875fe3 ("x86/asm/decoder: Create artificial 3rd byte for 2-byte VEX")
    Link: http://lkml.kernel.org/r/20160811154521.20469-1-dvlasenk@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2585f9d04e15509073de827f32a458cca3d64d2
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Fri Aug 5 15:37:39 2016 +0200

    x86/mm: Disable preemption during CR3 read+write
    
    commit 5cf0791da5c162ebc14b01eb01631cfa7ed4fa6e upstream.
    
    There's a subtle preemption race on UP kernels:
    
    Usually current->mm (and therefore mm->pgd) stays the same during the
    lifetime of a task so it does not matter if a task gets preempted during
    the read and write of the CR3.
    
    But then, there is this scenario on x86-UP:
    
    TaskA is in do_exit() and exit_mm() sets current->mm = NULL followed by:
    
     -> mmput()
     -> exit_mmap()
     -> tlb_finish_mmu()
     -> tlb_flush_mmu()
     -> tlb_flush_mmu_tlbonly()
     -> tlb_flush()
     -> flush_tlb_mm_range()
     -> __flush_tlb_up()
     -> __flush_tlb()
     ->  __native_flush_tlb()
    
    At this point current->mm is NULL but current->active_mm still points to
    the "old" mm.
    
    Let's preempt taskA _after_ native_read_cr3() by taskB. TaskB has its
    own mm so CR3 has changed.
    
    Now preempt back to taskA. TaskA has no ->mm set so it borrows taskB's
    mm and so CR3 remains unchanged. Once taskA gets active it continues
    where it was interrupted and that means it writes its old CR3 value
    back. Everything is fine because userland won't need its memory
    anymore.
    
    Now the fun part:
    
    Let's preempt taskA one more time and get back to taskB. This
    time switch_mm() won't do a thing because oldmm (->active_mm)
    is the same as mm (as per context_switch()). So we remain
    with a bad CR3 / PGD and return to userland.
    
    The next thing that happens is handle_mm_fault() with an address for
    the execution of its code in userland. handle_mm_fault() realizes that
    it has a PTE with proper rights so it returns doing nothing. But the
    CPU looks at the wrong PGD and insists that something is wrong and
    faults again. And again. And one more time…
    
    This pagefault circle continues until the scheduler gets tired of it and
    puts another task on the CPU. It gets little difficult if the task is a
    RT task with a high priority. The system will either freeze or it gets
    fixed by the software watchdog thread which usually runs at RT-max prio.
    But waiting for the watchdog will increase the latency of the RT task
    which is no good.
    
    Fix this by disabling preemption across the critical code section.
    
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Rik van Riel <riel@redhat.com>
    Acked-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/1470404259-26290-1-git-send-email-bigeasy@linutronix.de
    [ Prettified the changelog. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>