commit 1a1a512b983108015ced1e7a7c7775cfeec42d8c
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed May 4 14:50:15 2016 -0700

    Linux 4.4.9

commit b393b9da446626170a39bcd79c52e8ebadb19c8c
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Feb 4 14:36:09 2016 +0300

    extcon: max77843: Use correct size for reading the interrupt register
    
    commit c4924e92442d7218bd725e47fa3988c73aae84c9 upstream.
    
    The info->status[] array has 3 elements.  We are using size
    MAX77843_MUIC_IRQ_NUM (16) instead of MAX77843_MUIC_STATUS_NUM (3) as
    intended.
    
    Fixes: 135d9f7d135a ('extcon: max77843: Clear IRQ bits state before request IRQ')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Jaewon Kim <jaewon02.kim@samsung.com>
    Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    [cw00.choi: Modify the patch title]
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4b1d0a9a3f4291ba4ab48dd27efd01d3775d7f6
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Dec 22 17:25:17 2015 +0200

    stm class: Select CONFIG_SRCU
    
    commit 042d4460b5b4379a12f375045ff9065cf6758735 upstream.
    
    The newly added STM code uses SRCU, but does not ensure that
    this code is part of the kernel:
    
    drivers/built-in.o: In function `stm_source_link_show':
    include/linux/srcu.h:221: undefined reference to `__srcu_read_lock'
    include/linux/srcu.h:238: undefined reference to `__srcu_read_unlock'
    drivers/built-in.o: In function `stm_source_link_drop':
    include/linux/srcu.h:221: undefined reference to `__srcu_read_lock'
    include/linux/srcu.h:238: undefined reference to `__srcu_read_unlock'
    
    This adds a Kconfig 'select' statement like all the other SRCU using
    drivers have.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 7bd1d4093c2f ("stm class: Introduce an abstraction for System Trace Module devices")
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b6e810f352b00c7bf5e7e32557a39b6d550458a
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Mar 14 15:29:45 2016 +0100

    megaraid_sas: add missing curly braces in ioctl handler
    
    commit 3deb9438d34a09f6796639b652a01d110aca9f75 upstream.
    
    gcc-6 found a dubious indentation in the megasas_mgmt_fw_ioctl
    function:
    
    drivers/scsi/megaraid/megaraid_sas_base.c: In function 'megasas_mgmt_fw_ioctl':
    drivers/scsi/megaraid/megaraid_sas_base.c:6658:4: warning: statement is indented as if it were guarded by... [-Wmisleading-indentation]
        kbuff_arr[i] = NULL;
        ^~~~~~~~~
    drivers/scsi/megaraid/megaraid_sas_base.c:6653:3: note: ...this 'if' clause, but it is not
       if (kbuff_arr[i])
       ^~
    
    The code is actually correct, as there is no downside in clearing a NULL
    pointer again.
    
    This clarifies the code and avoids the warning by adding extra curly
    braces.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 90dc9d98f01b ("megaraid_sas : MFI MPT linked list corruption fix")
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Acked-by: Sumit Saxena <sumit.saxena@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03d86237007729b006808e8eab90e96a565deee4
Author: NeilBrown <neilb@suse.com>
Date:   Fri Mar 4 17:20:13 2016 +1100

    sunrpc/cache: drop reference when sunrpc_cache_pipe_upcall() detects a race
    
    commit a6ab1e8126d205238defbb55d23661a3a5c6a0d8 upstream.
    
    sunrpc_cache_pipe_upcall() can detect a race if CACHE_PENDING is no longer
    set.  In this case it aborts the queuing of the upcall.
    However it has already taken a new counted reference on "h" and
    doesn't "put" it, even though it frees the data structure holding the reference.
    
    So let's delay the "cache_get" until we know we need it.
    
    Fixes: f9e1aedc6c79 ("sunrpc/cache: remove races with queuing an upcall.")
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f5c4e0cb83cde427f1b8b95aa9a2a42e249fd53
Author: Caesar Wang <wxt@rock-chips.com>
Date:   Mon Feb 15 15:33:28 2016 +0800

    thermal: rockchip: fix a impossible condition caused by the warning
    
    commit 43b4eb9fe719b107c8e5d49d1edbff0c135a42cb upstream.
    
    As the Dan report the smatch check the thermal driver warning:
    drivers/thermal/rockchip_thermal.c:551 rockchip_configure_from_dt()
    warn: impossible condition '(thermal->tshut_temp > ((~0 >> 1))) =>
    (s32min-s32max > s32max)'
    
    Although The shut_temp read from DT is u32,the temperature is currently
    represented as int not long in the thermal driver.
    Let's change to make shut_temp instead of the thermal->tshut_temp for
    the condition.
    
    Fixes: commit 437df2172e8d
    ("thermal: rockchip: consistently use int for temperatures")
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Caesar Wang <wxt@rock-chips.com>
    Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22327f609cef2a3f9bf0781fb2e9dda07ec64c98
Author: Al Viro <viro@ZenIV.linux.org.uk>
Date:   Thu Jan 14 18:13:49 2016 +0000

    unbreak allmodconfig KCONFIG_ALLCONFIG=...
    
    commit 6b87b70c5339f30e3c5b32085e69625906513dc2 upstream.
    
    	Prior to 3.13 make allmodconfig KCONFIG_ALLCONFIG=/dev/null used
    to be equivalent to make allmodconfig; these days it hardwires MODULES to n.
    In fact, any KCONFIG_ALLCONFIG that doesn't set MODULES explicitly is
    treated as if it set it to n.
    
    	Regression had been introduced by commit cfa98f ("kconfig: do not
    override symbols already set"); what happens is that conf_read_simple()
    does sym_calc_value(modules_sym) on exit, which leaves SYMBOL_VALID set and
    has conf_set_all_new_symbols() skip modules_sym.
    
    	It's pretty easy to fix - simply move that call of sym_calc_value()
    into the callers, except for the ones in KCONFIG_ALLCONFIG handling.
    Objections?
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Fixes: cfa98f2e0ae9 ("kconfig: do not override symbols already set")
    Signed-off-by: Michal Marek <mmarek@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e91b1dbdc1f064872a6a2bb2375ae9202dd5e6e0
Author: Guo-Fu Tseng <cooldavid@cooldavid.org>
Date:   Sat Mar 5 08:11:56 2016 +0800

    jme: Fix device PM wakeup API usage
    
    commit 81422e672f8181d7ad1ee6c60c723aac649f538f upstream.
    
    According to Documentation/power/devices.txt
    
    The driver should not use device_set_wakeup_enable() which is the policy
    for user to decide.
    
    Using device_init_wakeup() to initialize dev->power.should_wakeup and
    dev->power.can_wakeup on driver initialization.
    
    And use device_may_wakeup() on suspend to decide if WoL function should
    be enabled on NIC.
    
    Reported-by: Diego Viola <diego.viola@gmail.com>
    Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b06e9942d51804170631351ada984947e87f042
Author: Guo-Fu Tseng <cooldavid@cooldavid.org>
Date:   Sat Mar 5 08:11:55 2016 +0800

    jme: Do not enable NIC WoL functions on S0
    
    commit 0772a99b818079e628a1da122ac7ee023faed83e upstream.
    
    Otherwise it might be back on resume right after going to suspend in
    some hardware.
    
    Reported-by: Diego Viola <diego.viola@gmail.com>
    Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c565897ffe54ec0e36854db7fcfe88014e05ce41
Author: Fabio Estevam <fabio.estevam@nxp.com>
Date:   Mon Feb 22 09:01:53 2016 -0300

    bus: imx-weim: Take the 'status' property value into account
    
    commit 33b96d2c9579213cf3f36d7b29841b1e464750c4 upstream.
    
    Currently we have an incorrect behaviour when multiple devices
    are present under the weim node. For example:
    
    &weim {
    	...
    	status = "okay";
    
    	sram@0,0 {
    		...
            	status = "okay";
    	};
    
    	mram@0,0 {
    		...
            	status = "disabled";
        	};
    };
    
    In this case only the 'sram' device should be probed and not 'mram'.
    
    However what happens currently is that the status variable is ignored,
    causing the 'sram' device to be disabled and 'mram' to be enabled.
    
    Change the weim_parse_dt() function to use
    for_each_available_child_of_node()so that the devices marked with
    'status = disabled' are not probed.
    
    Suggested-by: Wolfgang Netbal <wolfgang.netbal@sigmatek.at>
    Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
    Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de>
    Acked-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb7f1c5fb5c8e888ca8b728e17e71426ea809590
Author: Robert Jarzmik <robert.jarzmik@free.fr>
Date:   Sat Feb 13 00:49:20 2016 +0100

    ARM: dts: pxa: fix dma engine node to pxa3xx-nand
    
    commit 07c6b2d01d351f0512ed7145625265e435ab3240 upstream.
    
    Since the switch from mmp_pdma to pxa_dma driver for pxa architectures,
    the pxa_dma requires 2 arguments, namely the requestor line and the
    requested priority.
    
    Fix the only left device node which was still passing only one argument,
    making the pxa3xx-nand driver misbehave in a device-tree configuration,
    ie. failing all data transfers.
    
    Fixes: c943646d1f49 ("ARM: dts: pxa: add dma engine node to pxa3xx-nand")
    Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea075ae7f00c6416b12d68abf29b6a57a15b3916
Author: Lior Amsalem <alior@marvell.com>
Date:   Wed Feb 10 17:29:15 2016 +0100

    ARM: dts: armada-375: use armada-370-sata for SATA
    
    commit b3a7f31eb7375633cd6a742f19488fc5a4208b36 upstream.
    
    The Armada 375 has the same SATA IP as Armada 370 and Armada XP, which
    requires the PHY speed to be set in the LP_PHY_CTL register for SATA
    hotplug to work.
    
    Therefore, this commit updates the compatible string used to describe
    the SATA IP in Armada 375 from marvell,orion-sata to
    marvell,armada-370-sata.
    
    Fixes: 4de59085091f753d08c8429d756b46756ab94665 ("ARM: mvebu: add Device Tree description of the Armada 375 SoC")
    Signed-off-by: Lior Amsalem <alior@marvell.com>
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit abc48d066b7b5063db56f4a81e367c84b9582882
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Jan 29 15:50:38 2016 +0100

    ARM: EXYNOS: select THERMAL_OF
    
    commit dc7eb9d589e595954792cc192bcbb92932e5c2ff upstream.
    
    We cannot select a symbol that has disabled dependencies, so
    we get a warning if we ever enable EXYNOS_THERMAL without
    also turning on THERMAL_OF:
    
    warning: (ARCH_EXYNOS) selects EXYNOS_THERMAL which has unmet direct dependencies (THERMAL && (ARCH_EXYNOS || COMPILE_TEST) && THERMAL_OF)
    
    This adds another 'select' in the platform code to avoid that
    case. Alternatively, we could decide to not select EXYNOS_THERMAL
    here and instead make it a user option.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: f87e6bd3f740 ("thermal: exynos: Add the dependency of CONFIG_THERMAL_OF instead of CONFIG_OF")
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 159c52e15f95712dd22aa5d64b17a79a7fd8f939
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sat Nov 28 23:56:47 2015 +0100

    ARM: prima2: always enable reset controller
    
    commit ef2b1d777d643af227a22309d8b79898b90b123c upstream.
    
    The atlas7 clock controller driver registers a reset controller
    for itself, which causes a link error when the subsystem is
    disabled:
    
    drivers/built-in.o: In function `atlas7_clk_init':
    drivers/clk/sirf/clk-atlas7.c:1681: undefined reference to `reset_controller_register'
    
    As the clk driver does not have a Kconfig symbol for itself
    but it always built-in when the platform is enabled, we have
    to ensure that the reset controller subsystem is also built-in
    in this case.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
    Fixes: 301c5d29402e ("clk: sirf: add CSR atlas7 clk and reset support")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40cab474b47b2fc87911812687e83f8cd21aea1b
Author: Pali Rohár <pali.rohar@gmail.com>
Date:   Fri Feb 19 10:35:39 2016 -0800

    ARM: OMAP3: Add cpuidle parameters table for omap3430
    
    commit 98f42221501353067251fbf11e732707dbb68ce3 upstream.
    
    Based on CPU type choose generic omap3 or omap3430 specific cpuidle
    parameters. Parameters for omap3430 were measured on Nokia N900 device and
    added by commit 5a1b1d3a9efa ("OMAP3: RX-51: Pass cpu idle parameters")
    which were later removed by commit 231900afba52 ("ARM: OMAP3: cpuidle -
    remove rx51 cpuidle parameters table") due to huge code complexity.
    
    This patch brings cpuidle parameters for omap3430 devices again, but uses
    simple condition based on CPU type.
    
    Fixes: 231900afba52 ("ARM: OMAP3: cpuidle - remove rx51 cpuidle
    parameters table")
    Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
    Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21228341bf17496062b0e6a1b37265f6bcf5c8f3
Author: Jan Kara <jack@suse.com>
Date:   Mon Dec 7 14:34:49 2015 -0500

    ext4: fix races of writeback with punch hole and zero range
    
    commit 011278485ecc3cd2a3954b5d4c73101d919bf1fa upstream.
    
    When doing delayed allocation, update of on-disk inode size is postponed
    until IO submission time. However hole punch or zero range fallocate
    calls can end up discarding the tail page cache page and thus on-disk
    inode size would never be properly updated.
    
    Make sure the on-disk inode size is updated before truncating page
    cache.
    
    Signed-off-by: Jan Kara <jack@suse.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f7b7e9a4ba3d60af27c78a149743d269e6fb848
Author: Jan Kara <jack@suse.com>
Date:   Mon Dec 7 14:31:11 2015 -0500

    ext4: fix races between buffered IO and collapse / insert range
    
    commit 32ebffd3bbb4162da5ff88f9a35dd32d0a28ea70 upstream.
    
    Current code implementing FALLOC_FL_COLLAPSE_RANGE and
    FALLOC_FL_INSERT_RANGE is prone to races with buffered writes and page
    faults. If buffered write or write via mmap manages to squeeze between
    filemap_write_and_wait_range() and truncate_pagecache() in the fallocate
    implementations, the written data is simply discarded by
    truncate_pagecache() although it should have been shifted.
    
    Fix the problem by moving filemap_write_and_wait_range() call inside
    i_mutex and i_mmap_sem. That way we are protected against races with
    both buffered writes and page faults.
    
    Signed-off-by: Jan Kara <jack@suse.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e096ade68c13011ba6548a542c1fc00e14555f5c
Author: Jan Kara <jack@suse.com>
Date:   Mon Dec 7 14:29:17 2015 -0500

    ext4: move unlocked dio protection from ext4_alloc_file_blocks()
    
    commit 17048e8a083fec7ad841d88ef0812707fbc7e39f upstream.
    
    Currently ext4_alloc_file_blocks() was handling protection against
    unlocked DIO. However we now need to sometimes call it under i_mmap_sem
    and sometimes not and DIO protection ranks above it (although strictly
    speaking this cannot currently create any deadlocks). Also
    ext4_zero_range() was actually getting & releasing unlocked DIO
    protection twice in some cases. Luckily it didn't introduce any real bug
    but it was a land mine waiting to be stepped on.  So move DIO protection
    out from ext4_alloc_file_blocks() into the two callsites.
    
    Signed-off-by: Jan Kara <jack@suse.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b680de452570274716c2c9990903acea525f0d0
Author: Jan Kara <jack@suse.com>
Date:   Mon Dec 7 14:28:03 2015 -0500

    ext4: fix races between page faults and hole punching
    
    commit ea3d7209ca01da209cda6f0dea8be9cc4b7a933b upstream.
    
    Currently, page faults and hole punching are completely unsynchronized.
    This can result in page fault faulting in a page into a range that we
    are punching after truncate_pagecache_range() has been called and thus
    we can end up with a page mapped to disk blocks that will be shortly
    freed. Filesystem corruption will shortly follow. Note that the same
    race is avoided for truncate by checking page fault offset against
    i_size but there isn't similar mechanism available for punching holes.
    
    Fix the problem by creating new rw semaphore i_mmap_sem in inode and
    grab it for writing over truncate, hole punching, and other functions
    removing blocks from extent tree and for read over page faults. We
    cannot easily use i_data_sem for this since that ranks below transaction
    start and we need something ranking above it so that it can be held over
    the whole truncate / hole punching operation. Also remove various
    workarounds we had in the code to reduce race window when page fault
    could have created pages with stale mapping information.
    
    Signed-off-by: Jan Kara <jack@suse.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7b60bafb195dd349821e422b1dbc8b897eeb368
Author: Borislav Petkov <bp@suse.de>
Date:   Mon Mar 7 16:44:44 2016 -0300

    perf stat: Document --detailed option
    
    commit f594bae08183fb6b57db55387794ece3e1edf6f6 upstream.
    
    I'm surprised this remained undocumented since at least 2011. And it is
    actually a very useful switch, as Steve and I came to realize recently.
    
    Add the text from
    
      2cba3ffb9a9d ("perf stat: Add -d -d and -d -d -d options to show more CPU events")
    
    which added the incrementing aspect to -d.
    
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Davidlohr Bueso <dbueso@suse.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mel Gorman <mgorman@suse.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 2cba3ffb9a9d ("perf stat: Add -d -d and -d -d -d options to show more CPU events")
    Link: http://lkml.kernel.org/r/1457347294-32546-1-git-send-email-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcfdb38c41385bc3cb7be295eb5b9d4b00ea1177
Author: Marcin Åšlusarz <marcin.slusarz@gmail.com>
Date:   Tue Jan 19 20:03:03 2016 +0100

    perf tools: handle spaces in file names obtained from /proc/pid/maps
    
    commit 89fee59b504f86925894fcc9ba79d5c933842f93 upstream.
    
    Steam frequently puts game binaries in folders with spaces.
    
    Note: "(deleted)" markers are now treated as part of the file name.
    
    Signed-off-by: Marcin Åšlusarz <marcin.slusarz@gmail.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Fixes: 6064803313ba ("perf tools: Use sscanf for parsing /proc/pid/maps")
    Link: http://lkml.kernel.org/r/20160119190303.GA17579@marcin-Inspiron-7720
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3173539ec17901391863321e1eaf335b0029a09
Author: Namhyung Kim <namhyung@kernel.org>
Date:   Thu Jan 21 19:50:09 2016 -0300

    perf hists browser: Only offer symbol scripting when a symbol is under the cursor
    
    commit c221acb0f970d3b80d72c812cda19c121acf5d52 upstream.
    
    When this feature was introduced a check was made if there was a
    resolved symbol under the cursor, it got lost in commit ea7cd5923309
    ("perf hists browser: Split popup menu actions - part 2"), reinstate it.
    
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>,
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: ea7cd5923309 ("perf hists browser: Split popup menu actions - part 2")
    Link: http://lkml.kernel.org/r/1452960197-5323-9-git-send-email-namhyung@kernel.org
    [ Carved out from a  larger patch ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35bfb7949b7f23cdbfda12d83a8038f640b49141
Author: Ezequiel García <ezequiel@vanguardiasur.com.ar>
Date:   Fri Apr 1 18:29:23 2016 -0300

    mtd: nand: Drop mtd.owner requirement in nand_scan
    
    commit 20c07a5bf094198ff2382aa5e7c930b3c9807792 upstream.
    
    Since commit 807f16d4db95 ("mtd: core: set some defaults
    when dev.parent is set"), it's now legal for drivers
    to call nand_scan and nand_scan_ident without setting
    mtd.owner.
    
    Drop the check and while at it remove the BUG() abuse.
    
    Fixes: 807f16d4db95 ("mtd: core: set some defaults when dev.parent is set")
    Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
    Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    [Brian: editorial note - while commit 807f16d4db95 wasn't explicitly
        broken, some follow-up commits in the v4.4 release broke a few
        drivers, since they would hit this BUG() if they used nand_scan()
        and were built as modules]
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67891850e58b0190005441cf4f54da957fed8e01
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Wed Feb 24 16:07:23 2016 -0800

    mtd: brcmnand: Fix v7.1 register offsets
    
    commit d267aefc54a28efc5bda7f009598dc83b5f98734 upstream.
    
    The BRCMNAND controller revision 7.1 is almost 100% compatible with the
    previous v6.0 register offset layout, except for the Correctable Error
    Reporting Threshold registers. Fix this by adding another table with the
    correct offsets for CORR_THRESHOLD and CORR_THRESHOLD_EXT.
    
    Fixes: 27c5b17cd1b1 ("mtd: nand: add NAND driver "library" for Broadcom STB NAND controller")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87261de30fd8e5ebd441cd2f05df73ddf04c2af2
Author: Cyrille Pitchen <cyrille.pitchen@atmel.com>
Date:   Wed Feb 3 14:26:46 2016 +0100

    mtd: spi-nor: remove micron_quad_enable()
    
    commit 3b5394a3ccffbfa1d1d448d48742853a862822c4 upstream.
    
    This patch remove the micron_quad_enable() function which force the Quad
    SPI mode. However, once this mode is enabled, the Micron memory expect ALL
    commands to use the SPI 4-4-4 protocol. Hence a failure does occur when
    calling spi_nor_wait_till_ready() right after the update of the Enhanced
    Volatile Configuration Register (EVCR) in the micron_quad_enable() as
    the SPI controller driver is not aware about the protocol change.
    
    Since there is almost no performance increase using Fast Read 4-4-4
    commands instead of Fast Read 1-1-4 commands, we rather keep on using the
    Extended SPI mode than enabling the Quad SPI mode.
    
    Let's take the example of the pretty standard use of 8 dummy cycles during
    Fast Read operations on 64KB erase sectors:
    
    Fast Read 1-1-4 requires 8 cycles for the command, then 24 cycles for the
    3byte address followed by 8 dummy clock cycles and finally 65536*2 cycles
    for the read data; so 131112 clock cycles.
    
    On the other hand the Fast Read 4-4-4 would require 2 cycles for the
    command, then 6 cycles for the 3byte address followed by 8 dummy clock
    cycles and finally 65536*2 cycles for the read data. So 131088 clock
    cycles. The theorical bandwidth increase is 0.0%.
    
    Now using Fast Read operations on 512byte pages:
    Fast Read 1-1-4 needs 8+24+8+(512*2) = 1064 clock cycles whereas Fast
    Read 4-4-4 would requires 2+6+8+(512*2) = 1040 clock cycles. Hence the
    theorical bandwidth increase is 2.3%.
    Consecutive reads for non sequential pages is not a relevant use case so
    The Quad SPI mode is not worth it.
    
    mtd_speedtest seems to confirm these figures.
    
    Signed-off-by: Cyrille Pitchen <cyrille.pitchen@atmel.com>
    Fixes: 548cd3ab54da ("mtd: spi-nor: Add quad I/O support for Micron SPI NOR")
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 447ea0a34b78213dd668bf7d0a2b7add1c5675e6
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Jan 5 19:36:37 2016 +0100

    serial: sh-sci: Remove cpufreq notifier to fix crash/deadlock
    
    commit ff1cab374ad98f4b9f408525ca9c08992b4ed784 upstream.
    
    The BSP team noticed that there is spin/mutex lock issue on sh-sci when
    CPUFREQ is used.  The issue is that the notifier function may call
    mutex_lock() while the spinlock is held, which can lead to a BUG().
    This may happen if CPUFREQ is changed while another CPU calls
    clk_get_rate().
    
    Taking the spinlock was added to the notifier function in commit
    e552de2413edad1a ("sh-sci: add platform device private data"), to
    protect the list of serial ports against modification during traversal.
    At that time the Common Clock Framework didn't exist yet, and
    clk_get_rate() just returned clk->rate without taking a mutex.
    Note that since commit d535a2305facf9b4 ("serial: sh-sci: Require a
    device per port mapping."), there's no longer a list of serial ports to
    traverse, and taking the spinlock became superfluous.
    
    To fix the issue, just remove the cpufreq notifier:
      1. The notifier doesn't work correctly: all it does is update stored
         clock rates; it does not update the divider in the hardware.
         The divider will only be updated when calling sci_set_termios().
         I believe this was broken back in 2004, when the old
         drivers/char/sh-sci.c driver (where the notifier did update the
         divider) was replaced by drivers/serial/sh-sci.c (where the
         notifier just updated port->uartclk).
         Cfr. full-history-linux commits 6f8deaef2e9675d9 ("[PATCH] sh: port
         sh-sci driver to the new API") and 3f73fe878dc9210a ("[PATCH]
         Remove old sh-sci driver").
      2. On modern SoCs, the sh-sci parent clock rate is no longer related
         to the CPU clock rate anyway, so using a cpufreq notifier is
         futile.
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c745297ba18668f8a760493d7d769563c818616e
Author: Eryu Guan <guaneryu@gmail.com>
Date:   Sat Mar 12 21:40:32 2016 -0500

    ext4: fix NULL pointer dereference in ext4_mark_inode_dirty()
    
    commit 5e1021f2b6dff1a86a468a1424d59faae2bc63c1 upstream.
    
    ext4_reserve_inode_write() in ext4_mark_inode_dirty() could fail on
    error (e.g. EIO) and iloc.bh can be NULL in this case. But the error is
    ignored in the following "if" condition and ext4_expand_extra_isize()
    might be called with NULL iloc.bh set, which triggers NULL pointer
    dereference.
    
    This is uncovered by commit 8b4953e13f4c ("ext4: reserve code points for
    the project quota feature"), which enlarges the ext4_inode size, and
    run the following script on new kernel but with old mke2fs:
    
      #/bin/bash
      mnt=/mnt/ext4
      devname=ext4-error
      dev=/dev/mapper/$devname
      fsimg=/home/fs.img
    
      trap cleanup 0 1 2 3 9 15
    
      cleanup()
      {
              umount $mnt >/dev/null 2>&1
              dmsetup remove $devname
              losetup -d $backend_dev
              rm -f $fsimg
              exit 0
      }
    
      rm -f $fsimg
      fallocate -l 1g $fsimg
      backend_dev=`losetup -f --show $fsimg`
      devsize=`blockdev --getsz $backend_dev`
    
      good_tab="0 $devsize linear $backend_dev 0"
      error_tab="0 $devsize error $backend_dev 0"
    
      dmsetup create $devname --table "$good_tab"
    
      mkfs -t ext4 $dev
      mount -t ext4 -o errors=continue,strictatime $dev $mnt
    
      dmsetup load $devname --table "$error_tab" && dmsetup resume $devname
      echo 3 > /proc/sys/vm/drop_caches
      ls -l $mnt
      exit 0
    
    [ Patch changed to simplify the function a tiny bit. -- Ted ]
    
    Signed-off-by: Eryu Guan <guaneryu@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8481fdf6dc13e3a2b3f7e75e414b5eab3771329d
Author: Karol Herbst <nouveau@karolherbst.de>
Date:   Thu Mar 3 02:03:11 2016 +0100

    x86/mm/kmmio: Fix mmiotrace for hugepages
    
    commit cfa52c0cfa4d727aa3e457bf29aeff296c528a08 upstream.
    
    Because Linux might use bigger pages than the 4K pages to handle those mmio
    ioremaps, the kmmio code shouldn't rely on the pade id as it currently does.
    
    Using the memory address instead of the page id lets us look up how big the
    page is and what its base address is, so that we won't get a page fault
    within the same page twice anymore.
    
    Tested-by: Pierre Moreau <pierre.morrow@free.fr>
    Signed-off-by: Karol Herbst <nouveau@karolherbst.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcgrof@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: linux-mm@kvack.org
    Cc: linux-x86_64@vger.kernel.org
    Cc: nouveau@lists.freedesktop.org
    Cc: pq@iki.fi
    Cc: rostedt@goodmis.org
    Link: http://lkml.kernel.org/r/1456966991-6861-1-git-send-email-nouveau@karolherbst.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36828721fbbe4b53a53d62847b476f314123c819
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Wed Feb 17 10:57:19 2016 -0300

    perf evlist: Reference count the cpu and thread maps at set_maps()
    
    commit a55e5663761366fb883f6f25375dd68bc958b9db upstream.
    
    We were dropping the reference we possibly held but not obtaining one
    for the new maps, which we will drop at perf_evlist__delete(), fix it.
    
    This was caught by Steven Noonan in some of the machines which would
    produce this output when caught by glibc debug mechanisms:
    
      $ sudo perf test 21
      21: Test object code reading                                 :***
      Error in `perf': corrupted double-linked list: 0x00000000023ffcd0 ***
      ======= Backtrace: =========
      /usr/lib/libc.so.6(+0x72055)[0x7f25be0f3055]
      /usr/lib/libc.so.6(+0x779b6)[0x7f25be0f89b6]
      /usr/lib/libc.so.6(+0x7a0ed)[0x7f25be0fb0ed]
      /usr/lib/libc.so.6(__libc_calloc+0xba)[0x7f25be0fceda]
      perf(parse_events_lex_init_extra+0x38)[0x4cfff8]
      perf(parse_events+0x55)[0x4a0615]
      perf(perf_evlist__config+0xcf)[0x4eeb2f]
      perf[0x479f82]
      perf(test__code_reading+0x1e)[0x47ad4e]
      perf(cmd_test+0x5dd)[0x46452d]
      perf[0x47f4e3]
      perf(main+0x603)[0x42c723]
      /usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7f25be0a1610]
      perf(_start+0x29)[0x42c859]
    
    Further investigation using valgrind led to the reference count imbalance fixed
    in this patch.
    
    Reported-and-Tested-by: Steven Noonan <steven@uplinklabs.net>
    Report-Link: http://lkml.kernel.org/r/CAKbGBLjC2Dx5vshxyGmQkcD+VwiAQLbHoXA9i7kvRB2-2opHZQ@mail.gmail.com
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: f30a79b012e5 ("perf tools: Add reference counting for cpu_map object")
    Link: http://lkml.kernel.org/n/tip-j0u1bdhr47sa511sgg76kb8h@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab2c82dcd6cdb4d4871b151123f1523f2285a27e
Author: Michael Hennerich <michael.hennerich@analog.com>
Date:   Mon Feb 22 10:20:24 2016 +0100

    drivers/misc/ad525x_dpot: AD5274 fix RDAC read back errors
    
    commit f3df53e4d70b5736368a8fe8aa1bb70c1cb1f577 upstream.
    
    Fix RDAC read back errors caused by a typo. Value must shift by 2.
    
    Fixes: a4bd394956f2 ("drivers/misc/ad525x_dpot.c: new features")
    Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f55131145b8d16d942ddb363c3e1b72cf4775384
Author: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Date:   Thu Feb 4 09:26:35 2016 +0900

    rtc: max77686: Properly handle regmap_irq_get_virq() error code
    
    commit fb166ba1d7f0a662f7332f4ff660a0d6f4d76915 upstream.
    
    The regmap_irq_get_virq() can return 0 or -EINVAL in error conditions
    but driver checked only for value of 0.
    
    This could lead to a cast of -EINVAL to an unsigned int used as a
    interrupt number for devm_request_threaded_irq(). Although this is not
    yet fatal (devm_request_threaded_irq() will just fail with -EINVAL) but
    might be a misleading when diagnosing errors.
    
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Fixes: 6f1c1e71d933 ("mfd: max77686: Convert to use regmap_irq")
    Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11dd7f9a1ed13794cc77bd144b3aa9dd17c4030f
Author: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Date:   Thu Jan 21 13:24:21 2016 +0100

    rtc: rx8025: remove rv8803 id
    
    commit aaa3cee5deffa28415a6e1852c5afae0f5d210e2 upstream.
    
    The rv8803 has its own driver that should be used. Remove its id from
    the rx8025 driver.
    
    Fixes: b1f9d790b59dc04f8813a49a92ddd8651770ffee
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83fe55baa881f1d7fed118b4f4ec3bf325d7285a
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Mar 2 13:07:45 2016 +0300

    rtc: ds1685: passing bogus values to irq_restore
    
    commit 8c09b9fdecab1f4a289f07b46e2ad174b6641928 upstream.
    
    We call spin_lock_irqrestore with "flags" set to zero instead of to the
    value from spin_lock_irqsave().
    
    Fixes: aaaf5fbf56f1 ('rtc: add driver for DS1685 family of real time clocks')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 041f2ca3ff039ebe10a48a775b29bf3fa7c993fa
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Tue Mar 1 09:50:01 2016 +0100

    rtc: vr41xx: Wire up alarm_irq_enable
    
    commit a25f4a95ec3cded34c1250364eba704c5e4fdac4 upstream.
    
    drivers/rtc/rtc-vr41xx.c:229: warning: ‘vr41xx_rtc_alarm_irq_enable’ defined but not used
    
    Apparently the conversion to alarm_irq_enable forgot to wire up the
    callback.
    
    Fixes: 16380c153a69c378 ("RTC: Convert rtc drivers to use the alarm_irq_enable method")
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1392ec2a303a53512ad16dcf1ab31e77b08c52d9
Author: Alexander Kochetkov <al.kochet@gmail.com>
Date:   Sun Mar 6 12:43:57 2016 +0300

    rtc: hym8563: fix invalid year calculation
    
    commit d5861262210067fc01b2fb4f7af2fd85a3453f15 upstream.
    
    Year field must be in BCD format, according to
    hym8563 datasheet.
    
    Due to the bug year 2016 became 2010.
    
    Fixes: dcaf03849352 ("rtc: add hym8563 rtc-driver")
    Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cab4c949ade11ac67f69bc05124c9d6ffef31917
Author: Jon Hunter <jonathanh@nvidia.com>
Date:   Fri Mar 4 10:55:14 2016 +0000

    PM / Domains: Fix removal of a subdomain
    
    commit beda5fc1ff9b527059290a97b672d2ee0eb7b92f upstream.
    
    Commit 30e7a65b3fdb (PM / Domains: Ensure subdomain is not in use
    before removing) added a test to ensure that a subdomain is not a
    master to another subdomain or if any devices are using the subdomain
    before removing. This change incorrectly used the "slave_links" list to
    determine if the subdomain is a master to another subdomain, where it
    should have been using the "master_links" list instead. The
    "slave_links" list will never be empty for a subdomain and so a
    subdomain can never be removed. Fix this by testing if the
    "master_links" list is empty instead.
    
    Fixes: 30e7a65b3fdb (PM / Domains: Ensure subdomain is not in use before removing)
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Reviewed-by: Thierry Reding <treding@nvidia.com>
    Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
    Acked-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dabe14168a929839b4757f496ad6886489078997
Author: Viresh Kumar <viresh.kumar@linaro.org>
Date:   Mon Feb 15 10:21:53 2016 +0530

    PM / OPP: Initialize u_volt_min/max to a valid value
    
    commit c88c395f4a6485f23f81e385c79945d68bcd5c5d upstream.
    
    We kept u_volt_min/max initialized to 0, when only the target voltage is
    present in DT, instead of the target/min/max triplet.
    
    This didn't go well with the regulator framework, as on few calls the
    min voltage was set to target and max was set to 0 and so resulted in a
    kernel crash like below:
    
    kernel BUG at ../drivers/regulator/core.c:216!
    
    [<c0684af4>] (regulator_check_voltage) from [<c06857ac>] (regulator_set_voltage_unlocked+0x58/0x230)
    [<c06857ac>] (regulator_set_voltage_unlocked) from [<c06859ac>] (regulator_set_voltage+0x28/0x54)
    [<c06859ac>] (regulator_set_voltage) from [<c0775b28>] (_set_opp_voltage+0x30/0x98)
    [<c0775b28>] (_set_opp_voltage) from [<c0776630>] (dev_pm_opp_set_rate+0xf0/0x28c)
    [<c0776630>] (dev_pm_opp_set_rate) from [<c096f784>] (__cpufreq_driver_target+0x184/0x2b4)
    [<c096f784>] (__cpufreq_driver_target) from [<c0973760>] (dbs_check_cpu+0x1b0/0x1f4)
    [<c0973760>] (dbs_check_cpu) from [<c0973f30>] (cpufreq_governor_dbs+0x324/0x5c4)
    [<c0973f30>] (cpufreq_governor_dbs) from [<c0970958>] (__cpufreq_governor+0xe4/0x1ec)
    [<c0970958>] (__cpufreq_governor) from [<c09711e0>] (cpufreq_init_policy+0x64/0x8c)
    [<c09711e0>] (cpufreq_init_policy) from [<c09718cc>] (cpufreq_online+0x2fc/0x708)
    [<c09718cc>] (cpufreq_online) from [<c0765ff0>] (subsys_interface_register+0x94/0xd8)
    [<c0765ff0>] (subsys_interface_register) from [<c0970530>] (cpufreq_register_driver+0x14c/0x19c)
    [<c0970530>] (cpufreq_register_driver) from [<c09746dc>] (dt_cpufreq_probe+0x70/0xec)
    [<c09746dc>] (dt_cpufreq_probe) from [<c076907c>] (platform_drv_probe+0x4c/0xb0)
    [<c076907c>] (platform_drv_probe) from [<c07678e0>] (driver_probe_device+0x214/0x2c0)
    [<c07678e0>] (driver_probe_device) from [<c0767a18>] (__driver_attach+0x8c/0x90)
    [<c0767a18>] (__driver_attach) from [<c0765c2c>] (bus_for_each_dev+0x68/0x9c)
    [<c0765c2c>] (bus_for_each_dev) from [<c0766d78>] (bus_add_driver+0x1a0/0x218)
    [<c0766d78>] (bus_add_driver) from [<c076810c>] (driver_register+0x78/0xf8)
    [<c076810c>] (driver_register) from [<c0301d74>] (do_one_initcall+0x90/0x1d8)
    [<c0301d74>] (do_one_initcall) from [<c1100e14>] (kernel_init_freeable+0x15c/0x1fc)
    [<c1100e14>] (kernel_init_freeable) from [<c0b27a0c>] (kernel_init+0x8/0xf0)
    [<c0b27a0c>] (kernel_init) from [<c0307d78>] (ret_from_fork+0x14/0x3c)
    Code: e1550004 baffffeb e3a00000 e8bd8070 (e7f001f2)
    
    Fix that by initializing u_volt_min/max to the target voltage in such cases.
    
    Reported-and-tested-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Fixes: 274659029c9d (PM / OPP: Add support to parse "operating-points-v2" bindings)
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f8e29e7547be52fa24b0cdc7cf69baac9d82328
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Oct 19 14:19:01 2015 +0300

    misc: mic/scif: fix wrap around tests
    
    commit 7b64dbf849abdd7e769820e25120758f956a7f13 upstream.
    
    Signed integer overflow is undefined.  Also I added a check for
    "(offset < 0)" in scif_unregister() because that makes it match the
    other conditions and because I didn't want to subtract a negative.
    
    Fixes: ba612aa8b487 ('misc: mic: SCIF memory registration and unregistration')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01c8261c5ec46183e14dec7df335ee88bb037e30
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Mon Dec 14 14:29:23 2015 +0000

    misc/bmp085: Enable building as a module
    
    commit 50e6315dba721cbc24ccd6d7b299f1782f210a98 upstream.
    
    Commit 985087dbcb02 'misc: add support for bmp18x chips to the bmp085
    driver' changed the BMP085 config symbol to a boolean.  I see no
    reason why the shared code cannot be built as a module, so change it
    back to tristate.
    
    Fixes: 985087dbcb02 ("misc: add support for bmp18x chips to the bmp085 driver")
    Cc: Eric Andersson <eric.andersson@unixphere.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81b3a56ed84b0f2c1e2ff75ee2e05d5d4cd2462b
Author: Michal Marek <mmarek@suse.com>
Date:   Wed Feb 17 14:46:59 2016 +0100

    lib/mpi: Endianness fix
    
    commit 3ee0cb5fb5eea2110db1b5cb7f67029b7be8a376 upstream.
    
    The limbs are integers in the host endianness, so we can't simply
    iterate over the individual bytes. The current code happens to work on
    little-endian, because the order of the limbs in the MPI array is the
    same as the order of the bytes in each limb, but it breaks on
    big-endian.
    
    Fixes: 0f74fbf77d45 ("MPI: Fix mpi_read_buffer")
    Signed-off-by: Michal Marek <mmarek@suse.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0658e8c5e8cc02f12f9ae3df1f3b87ee7283bb24
Author: Sushaanth Srirangapathi <sushaanth.s@ti.com>
Date:   Mon Feb 29 18:42:19 2016 +0530

    fbdev: da8xx-fb: fix videomodes of lcd panels
    
    commit 713fced8d10fa1c759c8fb6bf9aaa681bae68cad upstream.
    
    Commit 028cd86b794f4a ("video: da8xx-fb: fix the polarities of the
    hsync/vsync pulse") fixes polarities of HSYNC/VSYNC pulse but
    forgot to update known_lcd_panels[] which had sync values
    according to old logic. This breaks LCD at least on DA850 EVM.
    
    This patch fixes this issue and I have tested this for panel
    "Sharp_LK043T1DG01" using DA850 EVM board.
    
    Fixes: 028cd86b794f4a ("video: da8xx-fb: fix the polarities of the hsync/vsync pulse")
    Signed-off-by: Sushaanth Srirangapathi <sushaanth.s@ti.com>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d9fefc8283a2bda6c7daeaab3b310965cb35f85
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jan 27 16:57:23 2016 +0100

    scsi_dh: force modular build if SCSI is a module
    
    commit 0c994c03c926d26ce48e6bbabbbe60366044fcae upstream.
    
    When the scsi_dh core was moved into the scsi core module,
    CONFIG_SCSI_DH became a 'bool' option, and now anything depending on it
    can be built-in even when CONFIG_SCSI=m. This of course cannot link
    successfully:
    
    drivers/scsi/built-in.o: In function `rdac_init':
    scsi_dh_alua.c:(.init.text+0x14): undefined reference to `scsi_register_device_handler'
    scsi_dh_alua.c:(.init.text+0x64): undefined reference to `scsi_unregister_device_handler'
    drivers/scsi/built-in.o: In function `alua_init':
    scsi_dh_alua.c:(.init.text+0xb0): undefined reference to `scsi_register_device_handler'
    
    As a workaround, this adds an extra dependency on CONFIG_SCSI, so
    Kconfig can figure out whether built-in is allowed or not.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 086b91d052eb ("scsi_dh: integrate into the core SCSI code")
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aea6995abbe4e13299d8606679cfe1b92fa45932
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Mar 15 14:53:29 2016 -0700

    paride: make 'verbose' parameter an 'int' again
    
    commit dec63a4dec2d6d01346fd5d96062e67c0636852b upstream.
    
    gcc-6.0 found an ancient bug in the paride driver, which had a
    "module_param(verbose, bool, 0);" since before 2.6.12, but actually uses
    it to accept '0', '1' or '2' as arguments:
    
      drivers/block/paride/pd.c: In function 'pd_init_dev_parms':
      drivers/block/paride/pd.c:298:29: warning: comparison of constant '1' with boolean expression is always false [-Wbool-compare]
       #define DBMSG(msg) ((verbose>1)?(msg):NULL)
    
    In 2012, Rusty did a cleanup patch that also changed the type of the
    variable to 'bool', which introduced what is now a gcc warning.
    
    This changes the type back to 'int' and adapts the module_param() line
    instead, so it should work as documented in case anyone ever cares about
    running the ancient driver with debugging.
    
    Fixes: 90ab5ee94171 ("module_param: make bool parameters really bool (drivers & misc)")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Rusty Russell <rusty@rustcorp.com.au>
    Cc: Tim Waugh <tim@cyberelk.net>
    Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Jens Axboe <axboe@fb.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72291d619e2928556db1d446f0b4afff330276a7
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Feb 16 15:53:11 2016 +0100

    regulator: s5m8767: fix get_register() error handling
    
    commit e07ff9434167981c993a26d2edbbcb8e13801dbb upstream.
    
    The s5m8767_pmic_probe() function calls s5m8767_get_register() to
    read data without checking the return code, which produces a compile-time
    warning when that data is accessed:
    
    drivers/regulator/s5m8767.c: In function 's5m8767_pmic_probe':
    drivers/regulator/s5m8767.c:924:7: error: 'enable_reg' may be used uninitialized in this function [-Werror=maybe-uninitialized]
    drivers/regulator/s5m8767.c:944:30: error: 'enable_val' may be used uninitialized in this function [-Werror=maybe-uninitialized]
    
    This changes the s5m8767_get_register() function to return a -EINVAL
    not just for an invalid register number but also for an invalid
    regulator number, as both would result in returning uninitialized
    data. The s5m8767_pmic_probe() function is then changed accordingly
    to fail on a read error, as all the other callers of s5m8767_get_register()
    already do.
    
    In practice this probably cannot happen, as we don't call
    s5m8767_get_register() with invalid arguments, but the gcc
    warning seems valid in principle, in terms writing safe
    error checking.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 9c4c60554acf ("regulator: s5m8767: Convert to use regulator_[enable|disable|is_enabled]_regmap")
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e60711a18bccf26d0159b263dfb05b374532caf5
Author: Vladimir Zapolskiy <vz@mleia.com>
Date:   Wed Mar 9 03:21:40 2016 +0200

    irqchip/mxs: Fix error check of of_io_request_and_map()
    
    commit edf8fcdc6b254236be005851af35ea5e826e7e09 upstream.
    
    The of_io_request_and_map() returns a valid pointer in iomem region or
    ERR_PTR(), check for NULL always fails and may cause a NULL pointer
    dereference on error path.
    
    Fixes: 25e34b44313b ("irqchip/mxs: Prepare driver for hardware with different offsets")
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Oleksij Rempel <linux@rempel-privat.de>
    Cc: Sascha Hauer <kernel@pengutronix.de>
    Cc: Shawn Guo <shawnguo@kernel.org>
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1457486500-10237-1-git-send-email-vz@mleia.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd66dc5d5123672069acba5cb5856e7b0aa9e6d4
Author: Vladimir Zapolskiy <vz@mleia.com>
Date:   Wed Mar 9 03:21:29 2016 +0200

    irqchip/sunxi-nmi: Fix error check of of_io_request_and_map()
    
    commit cfe199afefe6201e998ddc07102fc1fdb55f196c upstream.
    
    The of_io_request_and_map() returns a valid pointer in iomem region or
    ERR_PTR(), check for NULL always fails and may cause a NULL pointer
    dereference on error path.
    
    Fixes: 0e841b04c829 ("irqchip/sunxi-nmi: Switch to of_io_request_and_map() from of_iomap()")
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Chen-Yu Tsai <wens@csie.org>
    Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1457486489-10189-1-git-send-email-vz@mleia.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 791e8462e48c6259375f59acf905b05884d648c3
Author: Huibin Hong <huibin.hong@rock-chips.com>
Date:   Wed Feb 24 18:00:04 2016 +0800

    spi/rockchip: Make sure spi clk is on in rockchip_spi_set_cs
    
    commit b920cc3191d7612f26f36ee494e05b5ffd9044c0 upstream.
    
    Rockchip_spi_set_cs could be called by spi_setup, but
    spi_setup may be called by device driver after runtime suspend.
    Then the spi clock is closed, rockchip_spi_set_cs may access the
    spi registers, which causes cpu block in some socs.
    
    Fixes: 64e36824b32 ("spi/rockchip: add driver for Rockchip RK3xxx")
    Signed-off-by: Huibin Hong <huibin.hong@rock-chips.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23a67ddd4636584816e2dc2c6393511d55944974
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Mon Feb 1 15:11:28 2016 +0100

    locking/mcs: Fix mcs_spin_lock() ordering
    
    commit 920c720aa5aa3900a7f1689228fdfc2580a91e7e upstream.
    
    Similar to commit b4b29f94856a ("locking/osq: Fix ordering of node
    initialisation in osq_lock") the use of xchg_acquire() is
    fundamentally broken with MCS like constructs.
    
    Furthermore, it turns out we rely on the global transitivity of this
    operation because the unlock path observes the pointer with a
    READ_ONCE(), not an smp_load_acquire().
    
    This is non-critical because the MCS code isn't actually used and
    mostly serves as documentation, a stepping stone to the more complex
    things we've build on top of the idea.
    
    Reported-by: Andrea Parri <parri.andrea@gmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Fixes: 3552a07a9c4a ("locking/mcs: Use acquire/release semantics")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a58f809d731c23c0b898d2021903db8dee4466f
Author: Thierry Reding <treding@nvidia.com>
Date:   Wed Dec 2 16:54:50 2015 +0100

    regulator: core: Fix nested locking of supplies
    
    commit 70a7fb80e85ae7f78f8e90cec3fbd862ea6a4d4b upstream.
    
    Commit fa731ac7ea04 ("regulator: core: avoid unused variable warning")
    introduced a subtle change in how supplies are locked. Where previously
    code was always locking the regulator of the current iteration, the new
    implementation only locks the regulator if it has a supply. For any
    given power tree that means that the root will never get locked.
    
    On the other hand the regulator_unlock_supply() will still release all
    the locks, which in turn causes the lock debugging code to warn about a
    mutex being unlocked which wasn't locked.
    
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Fixes: fa731ac7ea04 ("regulator: core: avoid unused variable warning")
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29c9f634cb132107df3e4f07c8e48b35d04b527b
Author: Mark Brown <broonie@kernel.org>
Date:   Tue Dec 1 15:51:52 2015 +0000

    regulator: core: Ensure we lock all regulators
    
    commit 49a6bb7a1c0963f260e4b0dcc2c0e56ec65a28b2 upstream.
    
    The latest workaround for the lockdep interface's not using the second
    argument of mutex_lock_nested() changed the loop missed locking the last
    regulator due to a thinko with the loop termination condition exiting
    one regulator too soon.
    
    Reported-by: Tyler Baker <tyler.baker@linaro.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f500da32a1663c1bb2587ff04be08d5220b3afca
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Nov 27 14:46:41 2015 +0100

    regulator: core: fix regulator_lock_supply regression
    
    commit bb41897e38c53458a88b271f2fbcd905ee1f9584 upstream.
    
    As noticed by Geert Uytterhoeven, my patch to avoid a harmless build warning
    in regulator_lock_supply() was total crap and introduced a real bug:
    
    > [ BUG: bad unlock balance detected! ]
    > kworker/u4:0/6 is trying to release lock (&rdev->mutex) at:
    > [<c0247b84>] regulator_set_voltage+0x38/0x50
    
    we still lock the regulator supplies, but not the actual regulators,
    so we are missing a lock, and the unlock is unbalanced.
    
    This rectifies it by first locking the regulator device itself before
    using the same loop as before to lock its supplies.
    
    Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 716fec9d1965 ("[SUBMITTED] regulator: core: avoid unused variable warning")
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34af67eb941ae5371110c9adbd5392c7a3aa841e
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon May 2 11:14:34 2016 -0700

    Revert "regulator: core: Fix nested locking of supplies"
    
    This reverts commit b1999fa6e8145305a6c8bda30ea20783717708e6 which was
    commit 70a7fb80e85ae7f78f8e90cec3fbd862ea6a4d4b upstream.
    
    It causes run-time breakage in the 4.4-stable tree and more patches are
    needed to be applied first before this one in order to resolve the
    issue.
    
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Thierry Reding <treding@nvidia.com>
    Cc: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19a4e46b4513bab7d6b368175be2e24ad4665e5a
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Sun Apr 3 16:31:03 2016 -0300

    videobuf2-v4l2: Verify planes array in buffer dequeueing
    
    commit 2c1f6951a8a82e6de0d82b1158b5e493fc6c54ab upstream.
    
    When a buffer is being dequeued using VIDIOC_DQBUF IOCTL, the exact buffer
    which will be dequeued is not known until the buffer has been removed from
    the queue. The number of planes is specific to a buffer, not to the queue.
    
    This does lead to the situation where multi-plane buffers may be requested
    and queued with n planes, but VIDIOC_DQBUF IOCTL may be passed an argument
    struct with fewer planes.
    
    __fill_v4l2_buffer() however uses the number of planes from the dequeued
    videobuf2 buffer, overwriting kernel memory (the m.planes array allocated
    in video_usercopy() in v4l2-ioctl.c)  if the user provided fewer
    planes than the dequeued buffer had. Oops!
    
    Fixes: b0e0e1f83de3 ("[media] media: videobuf2: Prepare to divide videobuf2")
    
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a4b3d187dba0255cbbb749f64c3b71f8105f44f
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Sun Apr 3 16:15:00 2016 -0300

    videobuf2-core: Check user space planes array in dqbuf
    
    commit e7e0c3e26587749b62d17b9dd0532874186c77f7 upstream.
    
    The number of planes in videobuf2 is specific to a buffer. In order to
    verify that the planes array provided by the user is long enough, a new
    vb2_buf_op is required.
    
    Call __verify_planes_array() when the dequeued buffer is known. Return an
    error to the caller if there was one, otherwise remove the buffer from the
    done list.
    
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a1bb501e4b65908b102f0b371b0621ff18ad5c3
Author: Ignat Korchagin <ignat.korchagin@gmail.com>
Date:   Thu Mar 17 18:00:29 2016 +0000

    USB: usbip: fix potential out-of-bounds write
    
    commit b348d7dddb6c4fbfc810b7a0626e8ec9e29f7cbb upstream.
    
    Fix potential out-of-bounds write to urb->transfer_buffer
    usbip handles network communication directly in the kernel. When receiving a
    packet from its peer, usbip code parses headers according to protocol. As
    part of this parsing urb->actual_length is filled. Since the input for
    urb->actual_length comes from the network, it should be treated as untrusted.
    Any entity controlling the network may put any value in the input and the
    preallocated urb->transfer_buffer may not be large enough to hold the data.
    Thus, the malicious entity is able to write arbitrary data to kernel memory.
    
    Signed-off-by: Ignat Korchagin <ignat.korchagin@gmail.com>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c6266d57c4c4fa02588070347acf21b610bbd96
Author: Tejun Heo <tj@kernel.org>
Date:   Thu Jan 21 15:32:15 2016 -0500

    cgroup: make sure a parent css isn't freed before its children
    
    commit 8bb5ef79bc0f4016ecf79e8dce6096a3c63603e4 upstream.
    
    There are three subsystem callbacks in css shutdown path -
    css_offline(), css_released() and css_free().  Except for
    css_released(), cgroup core didn't guarantee the order of invocation.
    css_offline() or css_free() could be called on a parent css before its
    children.  This behavior is unexpected and led to bugs in cpu and
    memory controller.
    
    The previous patch updated ordering for css_offline() which fixes the
    cpu controller issue.  While there currently isn't a known bug caused
    by misordering of css_free() invocations, let's fix it too for
    consistency.
    
    css_free() ordering can be trivially fixed by moving putting of the
    parent css below css_free() invocation.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36abe7272a248a7e47a4cec8d8ec9c76ef387bac
Author: Minchan Kim <minchan@kernel.org>
Date:   Thu Apr 28 16:18:44 2016 -0700

    mm/hwpoison: fix wrong num_poisoned_pages accounting
    
    commit d7e69488bd04de165667f6bc741c1c0ec6042ab9 upstream.
    
    Currently, migration code increses num_poisoned_pages on *failed*
    migration page as well as successfully migrated one at the trial of
    memory-failure.  It will make the stat wrong.  As well, it marks the
    page as PG_HWPoison even if the migration trial failed.  It would mean
    we cannot recover the corrupted page using memory-failure facility.
    
    This patches fixes it.
    
    Signed-off-by: Minchan Kim <minchan@kernel.org>
    Reported-by: Vlastimil Babka <vbabka@suse.cz>
    Acked-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.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 87c855f150be9317b9b6ad82c1611ed8d577d986
Author: Minchan Kim <minchan@kernel.org>
Date:   Thu Apr 28 16:18:38 2016 -0700

    mm: vmscan: reclaim highmem zone if buffer_heads is over limit
    
    commit 7bf52fb891b64b8d61caf0b82060adb9db761aec upstream.
    
    We have been reclaimed highmem zone if buffer_heads is over limit but
    commit 6b4f7799c6a5 ("mm: vmscan: invoke slab shrinkers from
    shrink_zone()") changed the behavior so it doesn't reclaim highmem zone
    although buffer_heads is over the limit.  This patch restores the logic.
    
    Fixes: 6b4f7799c6a5 ("mm: vmscan: invoke slab shrinkers from shrink_zone()")
    Signed-off-by: Minchan Kim <minchan@kernel.org>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e513b90a9aef91e6399decb8e9592f2d75f7ebad
Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Date:   Thu Apr 28 16:18:35 2016 -0700

    numa: fix /proc/<pid>/numa_maps for THP
    
    commit 28093f9f34cedeaea0f481c58446d9dac6dd620f upstream.
    
    In gather_pte_stats() a THP pmd is cast into a pte, which is wrong
    because the layouts may differ depending on the architecture.  On s390
    this will lead to inaccurate numa_maps accounting in /proc because of
    misguided pte_present() and pte_dirty() checks on the fake pte.
    
    On other architectures pte_present() and pte_dirty() may work by chance,
    but there may be an issue with direct-access (dax) mappings w/o
    underlying struct pages when HAVE_PTE_SPECIAL is set and THP is
    available.  In vm_normal_page() the fake pte will be checked with
    pte_special() and because there is no "special" bit in a pmd, this will
    always return false and the VM_PFNMAP | VM_MIXEDMAP checking will be
    skipped.  On dax mappings w/o struct pages, an invalid struct page
    pointer would then be returned that can crash the kernel.
    
    This patch fixes the numa_maps THP handling by introducing new "_pmd"
    variants of the can_gather_numa_stats() and vm_normal_page() functions.
    
    Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: "Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Konstantin Khlebnikov <koct9i@gmail.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Jerome Marchand <jmarchan@redhat.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Michael Holzheu <holzheu@linux.vnet.ibm.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 be591a683e3b4cc58466e08cd6b5e4a71c02b19a
Author: Konstantin Khlebnikov <koct9i@gmail.com>
Date:   Thu Apr 28 16:18:32 2016 -0700

    mm/huge_memory: replace VM_NO_THP VM_BUG_ON with actual VMA check
    
    commit 3486b85a29c1741db99d0c522211c82d2b7a56d0 upstream.
    
    Khugepaged detects own VMAs by checking vm_file and vm_ops but this way
    it cannot distinguish private /dev/zero mappings from other special
    mappings like /dev/hpet which has no vm_ops and popultes PTEs in mmap.
    
    This fixes false-positive VM_BUG_ON and prevents installing THP where
    they are not expected.
    
    Link: http://lkml.kernel.org/r/CACT4Y+ZmuZMV5CjSFOeXviwQdABAgT7T+StKfTqan9YDtgEi5g@mail.gmail.com
    Fixes: 78f11a255749 ("mm: thp: fix /dev/zero MAP_PRIVATE and vm_flags cleanups")
    Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Andrea Arcangeli <aarcange@redhat.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 52526076a5a686906a0acc22d27530ecb9364d84
Author: Tejun Heo <tj@kernel.org>
Date:   Thu Apr 21 19:09:02 2016 -0400

    memcg: relocate charge moving from ->attach to ->post_attach
    
    commit 264a0ae164bc0e9144bebcd25ff030d067b1a878 upstream.
    
    Hello,
    
    So, this ended up a lot simpler than I originally expected.  I tested
    it lightly and it seems to work fine.  Petr, can you please test these
    two patches w/o the lru drain drop patch and see whether the problem
    is gone?
    
    Thanks.
    ------ 8< ------
    If charge moving is used, memcg performs relabeling of the affected
    pages from its ->attach callback which is called under both
    cgroup_threadgroup_rwsem and thus can't create new kthreads.  This is
    fragile as various operations may depend on workqueues making forward
    progress which relies on the ability to create new kthreads.
    
    There's no reason to perform charge moving from ->attach which is deep
    in the task migration path.  Move it to ->post_attach which is called
    after the actual migration is finished and cgroup_threadgroup_rwsem is
    dropped.
    
    * move_charge_struct->mm is added and ->can_attach is now responsible
      for pinning and recording the target mm.  mem_cgroup_clear_mc() is
      updated accordingly.  This also simplifies mem_cgroup_move_task().
    
    * mem_cgroup_move_task() is now called from ->post_attach instead of
      ->attach.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Michal Hocko <mhocko@kernel.org>
    Debugged-and-tested-by: Petr Mladek <pmladek@suse.com>
    Reported-by: Cyril Hrubis <chrubis@suse.cz>
    Reported-by: Johannes Weiner <hannes@cmpxchg.org>
    Fixes: 1ed1328792ff ("sched, cgroup: replace signal_struct->group_rwsem with a global percpu_rwsem")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d52097476caeb14f4d7e3417dda08220d2813cc4
Author: Tejun Heo <tj@kernel.org>
Date:   Thu Apr 21 19:06:48 2016 -0400

    cgroup, cpuset: replace cpuset_post_attach_flush() with cgroup_subsys->post_attach callback
    
    commit 5cf1cacb49aee39c3e02ae87068fc3c6430659b0 upstream.
    
    Since e93ad19d0564 ("cpuset: make mm migration asynchronous"), cpuset
    kicks off asynchronous NUMA node migration if necessary during task
    migration and flushes it from cpuset_post_attach_flush() which is
    called at the end of __cgroup_procs_write().  This is to avoid
    performing migration with cgroup_threadgroup_rwsem write-locked which
    can lead to deadlock through dependency on kworker creation.
    
    memcg has a similar issue with charge moving, so let's convert it to
    an official callback rather than the current one-off cpuset specific
    function.  This patch adds cgroup_subsys->post_attach callback and
    makes cpuset register cpuset_post_attach_flush() as its ->post_attach.
    
    The conversion is mostly one-to-one except that the new callback is
    called under cgroup_mutex.  This is to guarantee that no other
    migration operations are started before ->post_attach callbacks are
    finished.  cgroup_mutex is one of the outermost mutex in the system
    and has never been and shouldn't be a problem.  We can add specialized
    synchronization around __cgroup_procs_write() but I don't think
    there's any noticeable benefit.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Li Zefan <lizefan@huawei.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4e25ff31103e7c9084904418cb95596e3e9d9cf
Author: Jesper Dangaard Brouer <brouer@redhat.com>
Date:   Tue Mar 15 14:53:32 2016 -0700

    slub: clean up code for kmem cgroup support to kmem_cache_free_bulk
    
    commit 376bf125ac781d32e202760ed7deb1ae4ed35d31 upstream.
    
    This change is primarily an attempt to make it easier to realize the
    optimizations the compiler performs in-case CONFIG_MEMCG_KMEM is not
    enabled.
    
    Performance wise, even when CONFIG_MEMCG_KMEM is compiled in, the
    overhead is zero.  This is because, as long as no process have enabled
    kmem cgroups accounting, the assignment is replaced by asm-NOP
    operations.  This is possible because memcg_kmem_enabled() uses a
    static_key_false() construct.
    
    It also helps readability as it avoid accessing the p[] array like:
    p[size - 1] which "expose" that the array is processed backwards inside
    helper function build_detached_freelist().
    
    Lastly this also makes the code more robust, in error case like passing
    NULL pointers in the array.  Which were previously handled before commit
    033745189b1b ("slub: add missing kmem cgroup support to
    kmem_cache_free_bulk").
    
    Fixes: 033745189b1b ("slub: add missing kmem cgroup support to kmem_cache_free_bulk")
    Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Cc: 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: Vladimir Davydov <vdavydov@virtuozzo.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 2da9606aea5a8fd1b710f8c8dd5295da4825e9cd
Author: Roman Pen <roman.penyaev@profitbricks.com>
Date:   Tue Apr 26 13:15:35 2016 +0200

    workqueue: fix ghost PENDING flag while doing MQ IO
    
    commit 346c09f80459a3ad97df1816d6d606169a51001a upstream.
    
    The bug in a workqueue leads to a stalled IO request in MQ ctx->rq_list
    with the following backtrace:
    
    [  601.347452] INFO: task kworker/u129:5:1636 blocked for more than 120 seconds.
    [  601.347574]       Tainted: G           O    4.4.5-1-storage+ #6
    [  601.347651] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [  601.348142] kworker/u129:5  D ffff880803077988     0  1636      2 0x00000000
    [  601.348519] Workqueue: ibnbd_server_fileio_wq ibnbd_dev_file_submit_io_worker [ibnbd_server]
    [  601.348999]  ffff880803077988 ffff88080466b900 ffff8808033f9c80 ffff880803078000
    [  601.349662]  ffff880807c95000 7fffffffffffffff ffffffff815b0920 ffff880803077ad0
    [  601.350333]  ffff8808030779a0 ffffffff815b01d5 0000000000000000 ffff880803077a38
    [  601.350965] Call Trace:
    [  601.351203]  [<ffffffff815b0920>] ? bit_wait+0x60/0x60
    [  601.351444]  [<ffffffff815b01d5>] schedule+0x35/0x80
    [  601.351709]  [<ffffffff815b2dd2>] schedule_timeout+0x192/0x230
    [  601.351958]  [<ffffffff812d43f7>] ? blk_flush_plug_list+0xc7/0x220
    [  601.352208]  [<ffffffff810bd737>] ? ktime_get+0x37/0xa0
    [  601.352446]  [<ffffffff815b0920>] ? bit_wait+0x60/0x60
    [  601.352688]  [<ffffffff815af784>] io_schedule_timeout+0xa4/0x110
    [  601.352951]  [<ffffffff815b3a4e>] ? _raw_spin_unlock_irqrestore+0xe/0x10
    [  601.353196]  [<ffffffff815b093b>] bit_wait_io+0x1b/0x70
    [  601.353440]  [<ffffffff815b056d>] __wait_on_bit+0x5d/0x90
    [  601.353689]  [<ffffffff81127bd0>] wait_on_page_bit+0xc0/0xd0
    [  601.353958]  [<ffffffff81096db0>] ? autoremove_wake_function+0x40/0x40
    [  601.354200]  [<ffffffff81127cc4>] __filemap_fdatawait_range+0xe4/0x140
    [  601.354441]  [<ffffffff81127d34>] filemap_fdatawait_range+0x14/0x30
    [  601.354688]  [<ffffffff81129a9f>] filemap_write_and_wait_range+0x3f/0x70
    [  601.354932]  [<ffffffff811ced3b>] blkdev_fsync+0x1b/0x50
    [  601.355193]  [<ffffffff811c82d9>] vfs_fsync_range+0x49/0xa0
    [  601.355432]  [<ffffffff811cf45a>] blkdev_write_iter+0xca/0x100
    [  601.355679]  [<ffffffff81197b1a>] __vfs_write+0xaa/0xe0
    [  601.355925]  [<ffffffff81198379>] vfs_write+0xa9/0x1a0
    [  601.356164]  [<ffffffff811c59d8>] kernel_write+0x38/0x50
    
    The underlying device is a null_blk, with default parameters:
    
      queue_mode    = MQ
      submit_queues = 1
    
    Verification that nullb0 has something inflight:
    
    root@pserver8:~# cat /sys/block/nullb0/inflight
           0        1
    root@pserver8:~# find /sys/block/nullb0/mq/0/cpu* -name rq_list -print -exec cat {} \;
    ...
    /sys/block/nullb0/mq/0/cpu2/rq_list
    CTX pending:
            ffff8838038e2400
    ...
    
    During debug it became clear that stalled request is always inserted in
    the rq_list from the following path:
    
       save_stack_trace_tsk + 34
       blk_mq_insert_requests + 231
       blk_mq_flush_plug_list + 281
       blk_flush_plug_list + 199
       wait_on_page_bit + 192
       __filemap_fdatawait_range + 228
       filemap_fdatawait_range + 20
       filemap_write_and_wait_range + 63
       blkdev_fsync + 27
       vfs_fsync_range + 73
       blkdev_write_iter + 202
       __vfs_write + 170
       vfs_write + 169
       kernel_write + 56
    
    So blk_flush_plug_list() was called with from_schedule == true.
    
    If from_schedule is true, that means that finally blk_mq_insert_requests()
    offloads execution of __blk_mq_run_hw_queue() and uses kblockd workqueue,
    i.e. it calls kblockd_schedule_delayed_work_on().
    
    That means, that we race with another CPU, which is about to execute
    __blk_mq_run_hw_queue() work.
    
    Further debugging shows the following traces from different CPUs:
    
      CPU#0                                  CPU#1
      ----------------------------------     -------------------------------
      reqeust A inserted
      STORE hctx->ctx_map[0] bit marked
      kblockd_schedule...() returns 1
      <schedule to kblockd workqueue>
                                             request B inserted
                                             STORE hctx->ctx_map[1] bit marked
                                             kblockd_schedule...() returns 0
      *** WORK PENDING bit is cleared ***
      flush_busy_ctxs() is executed, but
      bit 1, set by CPU#1, is not observed
    
    As a result request B pended forever.
    
    This behaviour can be explained by speculative LOAD of hctx->ctx_map on
    CPU#0, which is reordered with clear of PENDING bit and executed _before_
    actual STORE of bit 1 on CPU#1.
    
    The proper fix is an explicit full barrier <mfence>, which guarantees
    that clear of PENDING bit is to be executed before all possible
    speculative LOADS or STORES inside actual work function.
    
    Signed-off-by: Roman Pen <roman.penyaev@profitbricks.com>
    Cc: Gioh Kim <gi-oh.kim@profitbricks.com>
    Cc: Michael Wang <yun.wang@profitbricks.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: linux-block@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01d5ccd341290e771ac6b94b08c220df6f81a630
Author: Keith Busch <keith.busch@intel.com>
Date:   Wed Apr 27 14:22:32 2016 -0600

    x86/apic: Handle zero vector gracefully in clear_vector_irq()
    
    commit 1bdb8970392a68489b469c3a330a1adb5ef61beb upstream.
    
    If x86_vector_alloc_irq() fails x86_vector_free_irqs() is invoked to cleanup
    the already allocated vectors. This subsequently calls clear_vector_irq().
    
    The failed irq has no vector assigned, which triggers the BUG_ON(!vector) in
    clear_vector_irq().
    
    We cannot suppress the call to x86_vector_free_irqs() for the failed
    interrupt, because the other data related to this irq must be cleaned up as
    well. So calling clear_vector_irq() with vector == 0 is legitimate.
    
    Remove the BUG_ON and return if vector is zero,
    
    [ tglx: Massaged changelog ]
    
    Fixes: b5dc8e6c21e7 "x86/irq: Use hierarchical irqdomain to manage CPU interrupt vectors"
    Signed-off-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8f80ba7e09ca1945946d4a6d7391c0795ff99f7
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Mon Feb 1 22:06:55 2016 +0000

    efi: Expose non-blocking set_variable() wrapper to efivars
    
    commit 9c6672ac9c91f7eb1ec436be1442b8c26d098e55 upstream.
    
    Commit 6d80dba1c9fe ("efi: Provide a non-blocking SetVariable()
    operation") implemented a non-blocking alternative for the UEFI
    SetVariable() invocation performed by efivars, since it may
    occur in atomic context. However, this version of the function
    was never exposed via the efivars struct, so the non-blocking
    versions was not actually callable. Fix that.
    
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.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
    Fixes: 6d80dba1c9fe ("efi: Provide a non-blocking SetVariable() operation")
    Link: http://lkml.kernel.org/r/1454364428-494-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 513f5c33b5208dbd090f56c843aead053cb3d7a3
Author: Laszlo Ersek <lersek@redhat.com>
Date:   Thu Apr 21 18:21:11 2016 +0200

    efi: Fix out-of-bounds read in variable_matches()
    
    commit 630ba0cc7a6dbafbdee43795617c872b35cde1b4 upstream.
    
    The variable_matches() function can currently read "var_name[len]", for
    example when:
    
     - var_name[0] == 'a',
     - len == 1
     - match_name points to the NUL-terminated string "ab".
    
    This function is supposed to accept "var_name" inputs that are not
    NUL-terminated (hence the "len" parameter"). Document the function, and
    access "var_name[*match]" only if "*match" is smaller than "len".
    
    Reported-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Laszlo Ersek <lersek@redhat.com>
    Cc: Peter Jones <pjones@redhat.com>
    Cc: Matthew Garrett <mjg59@coreos.com>
    Cc: Jason Andryuk <jandryuk@gmail.com>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Link: http://thread.gmane.org/gmane.comp.freedesktop.xorg.drivers.intel/86906
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c92003c18feb8159cbf64bc0afa7b048869fe3c6
Author: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Date:   Sun Apr 10 19:13:13 2016 -0600

    IB/security: Restrict use of the write() interface
    
    commit e6bd18f57aad1a2d1ef40e646d03ed0f2515c9e3 upstream.
    
    The drivers/infiniband stack uses write() as a replacement for
    bi-directional ioctl().  This is not safe. There are ways to
    trigger write calls that result in the return structure that
    is normally written to user space being shunted off to user
    specified kernel memory instead.
    
    For the immediate repair, detect and deny suspicious accesses to
    the write API.
    
    For long term, update the user space libraries and the kernel API
    to something that doesn't present the same security vulnerabilities
    (likely a structured ioctl() interface).
    
    The impacted uAPI interfaces are generally only available if
    hardware from drivers/infiniband is installed in the system.
    
    Reported-by: Jann Horn <jann@thejh.net>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    [ Expanded check to all known write() entry points ]
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29ebbba744cf8951202b5f4ea62b4a297f4662c1
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Thu Mar 31 19:03:25 2016 +0300

    IB/mlx5: Expose correct max_sge_rd limit
    
    commit 986ef95ecdd3eb6fa29433e68faa94c7624083be upstream.
    
    mlx5 devices (Connect-IB, ConnectX-4, ConnectX-4-LX) has a limitation
    where rdma read work queue entries cannot exceed 512 bytes.
    A rdma_read wqe needs to fit in 512 bytes:
    - wqe control segment (16 bytes)
    - rdma segment (16 bytes)
    - scatter elements (16 bytes each)
    
    So max_sge_rd should be: (512 - 16 - 16) / 16 = 30.
    
    Reported-by: Christoph Hellwig <hch@lst.de>
    Tested-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sagi Grimberg <sagig@grimberg.me>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b184522f688a31765a24081ed231e480e76edae6
Author: Michael Neuling <mikey@neuling.org>
Date:   Fri Apr 22 14:57:48 2016 +1000

    cxl: Keep IRQ mappings on context teardown
    
    commit d6776bba44d9752f6cdf640046070e71ee4bba7b upstream.
    
    Keep IRQ mappings on context teardown.  This won't leak IRQs as if we
    allocate the mapping again, the generic code will give the same
    mapping used last time.
    
    Doing this works around a race in the generic code. Masking the
    interrupt introduces a race which can crash the kernel or result in
    IRQ that is never EOIed. The lost of EOI results in all subsequent
    mappings to the same HW IRQ never receiving an interrupt.
    
    We've seen this race with cxl test cases which are doing heavy context
    startup and teardown at the same time as heavy interrupt load.
    
    A fix to the generic code is being investigated also.
    
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Tested-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Acked-by: Ian Munsie <imunsie@au1.ibm.com>
    Tested-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9da0b3dc72e074a2f84fad5f176750968a76bdb
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Fri Apr 22 04:00:50 2016 -0300

    v4l2-dv-timings.h: fix polarity for 4k formats
    
    commit 3020ca711871fdaf0c15c8bab677a6bc302e28fe upstream.
    
    The VSync polarity was negative instead of positive for the 4k CEA formats.
    I probably copy-and-pasted these from the DMT 4k format, which does have a
    negative VSync polarity.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Reported-by: Martin Bugge <marbugge@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4ea6cf4883569a7c9c0297305033e9e678a03e4
Author: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Date:   Thu Mar 3 16:12:48 2016 -0300

    vb2-memops: Fix over allocation of frame vectors
    
    commit 89a095668304e8a02502ffd35edacffdbf49aa8c upstream.
    
    On page unaligned frames, create_framevec forces get_vaddr_frames to
    allocate an extra page at the end of the buffer. Under some
    circumstances, this leads to -EINVAL on VIDIOC_QBUF.
    
    E.g:
    We have vm_a that vm_area that goes from 0x1000 to 0x3000. And a
    frame that goes from 0x1800 to 0x2800, i.e. 2 pages.
    
    frame_vector_create will be called with the following params:
    
    get_vaddr_frames(0x1800, 2, write, 1, vec);
    
    get_vaddr will allocate the first page after checking that the memory
    0x1800-0x27ff is valid, but it will not allocate the second page because
    the range 0x2800-0x37ff is out of the vm_a range. This results in
    create_framevec returning -EFAULT
    
    Error Trace:
    [ 9083.793015] video0: VIDIOC_QBUF: 00:00:00.00000000 index=1,
    type=vid-cap, flags=0x00002002, field=any, sequence=0,
    memory=userptr, bytesused=0, offset/userptr=0x7ff2b023ca80, length=5765760
    [ 9083.793028] timecode=00:00:00 type=0, flags=0x00000000,
    frames=0, userbits=0x00000000
    [ 9083.793117] video0: VIDIOC_QBUF: error -22: 00:00:00.00000000
    index=2, type=vid-cap, flags=0x00000000, field=any, sequence=0,
    memory=userptr, bytesused=0, offset/userptr=0x7ff2b07bc500, length=5765760
    
    Also use true instead of 1 since that argument is a bool in the
    get_vaddr_frames() prototype.
    
    Fixes: 21fb0cb7ec65 ("[media] vb2: Provide helpers for mapping virtual addresses")
    
    Reported-by: Albert Antony <albert@newtec.dk>
    Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    [hans.verkuil@cisco.com: merged the 'bool' change into this patch]
    Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>

commit d74252fd2010e660b0f4b2b7bca0feccaf0214c9
Author: Sugar Zhang <sugar.zhang@rock-chips.com>
Date:   Fri Mar 18 14:54:22 2016 +0800

    ASoC: rt5640: Correct the digital interface data select
    
    commit 653aa4645244042826f105aab1be3d01b3d493ca upstream.
    
    this patch corrects the interface adc/dac control register definition
    according to datasheet.
    
    Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99070b6b5154f69e1f85a6547e8113b03986de7f
Author: Mark Brown <broonie@kernel.org>
Date:   Fri Mar 18 12:04:23 2016 +0000

    ASoC: dapm: Make sure we have a card when displaying component widgets
    
    commit 47325078f2a3e543150e7df967e45756b2fff7ec upstream.
    
    The dummy component is reused for all cards so we special case and don't
    bind it to any of them.  This means that code like that displaying the
    component widgets that tries to look at the card will crash.  In the
    future we will fix this by ensuring that the dummy component looks like
    other components but that is invasive and so not suitable for a fix.
    Instead add a special case check here.
    
    Reported-by: Harry Pan <harry.pan@intel.com>
    Suggested-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c276b2c81f2a10f6d74e5cb1cb7d6b6c7ff85e74
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Wed Jan 27 14:26:18 2016 +0100

    ASoC: ssm4567: Reset device before regcache_sync()
    
    commit 712a8038cc24dba668afe82f0413714ca87184e0 upstream.
    
    When the ssm4567 is powered up the driver calles regcache_sync() to restore
    the register map content. regcache_sync() assumes that the device is in its
    power-on reset state. Make sure that this is the case by explicitly
    resetting the ssm4567 register map before calling regcache_sync() otherwise
    we might end up with a incorrect register map which leads to undefined
    behaviour.
    
    One such undefined behaviour was observed when returning from system
    suspend while a playback stream is active, in that case the ssm4567 was
    kept muted after resume.
    
    Fixes: 1ee44ce03011 ("ASoC: ssm4567: Add driver for Analog Devices SSM4567 amplifier")
    Reported-by: Harsha Priya <harshapriya.n@intel.com>
    Tested-by: Fang, Yang A <yang.a.fang@intel.com>
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d3e910464dbeaae0746ef29c0192caa3e0418c3
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Jan 25 18:07:33 2016 +0100

    ASoC: s3c24xx: use const snd_soc_component_driver pointer
    
    commit ba4bc32eaa39ba7687f0958ae90eec94da613b46 upstream.
    
    An older patch to convert the API in the s3c i2s driver
    ended up passing a const pointer into a function that takes
    a non-const pointer, so we now get a warning:
    
    sound/soc/samsung/s3c2412-i2s.c: In function 's3c2412_iis_dev_probe':
    sound/soc/samsung/s3c2412-i2s.c:172:9: error: passing argument 3 of 's3c_i2sv2_register_component' discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
    
    However, the s3c_i2sv2_register_component() function again
    passes the pointer into another function taking a const, so
    we just need to change its prototype.
    
    Fixes: eca3b01d0885 ("ASoC: switch over to use snd_soc_register_component() on s3c i2s")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d32650fcd8c9097fa0f69d39f0aae80a4b7fd79
Author: Tony Luck <tony.luck@intel.com>
Date:   Fri Apr 29 15:42:25 2016 +0200

    EDAC: i7core, sb_edac: Don't return NOTIFY_BAD from mce_decoder callback
    
    commit c4fc1956fa31003bfbe4f597e359d751568e2954 upstream.
    
    Both of these drivers can return NOTIFY_BAD, but this terminates
    processing other callbacks that were registered later on the chain.
    Since the driver did nothing to log the error it seems wrong to prevent
    other interested parties from seeing it. E.g. neither of them had even
    bothered to check the type of the error to see if it was a memory error
    before the return NOTIFY_BAD.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Acked-by: Aristeu Rozanski <aris@redhat.com>
    Acked-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Link: http://lkml.kernel.org/r/72937355dd92318d2630979666063f8a2853495b.1461864507.git.tony.luck@intel.com
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f8150d728eef82de079ce4fc9e8b4c47aca101e
Author: Azael Avalos <coproscefalo@gmail.com>
Date:   Fri Apr 22 09:29:36 2016 -0600

    toshiba_acpi: Fix regression caused by hotkey enabling value
    
    commit a30b8f81d9d6fe24eab8a023794548b048f08e3c upstream.
    
    Commit 52cbae0127ad ("toshiba_acpi: Change default Hotkey enabling value")
    changed the hotkeys enabling value, as it was the same value Windows uses,
    however, it turns out that the value tells the EC that the driver will now
    take care of the hardware events like the physical RFKill switch or the
    pointing device toggle button.
    
    This patch reverts such commit by changing the default hotkey enabling
    value to 0x09, which enables hotkey events only, making the hardware
    buttons working again.
    
    Fixes bugs 113331 and 114941.
    
    Signed-off-by: Azael Avalos <coproscefalo@gmail.com>
    Signed-off-by: Darren Hart <dvhart@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b566a5c38b7311a545ac536a3b43944153918d2
Author: Javier Martinez Canillas <javier@osg.samsung.com>
Date:   Sat Apr 16 21:14:52 2016 -0400

    i2c: exynos5: Fix possible ABBA deadlock by keeping I2C clock prepared
    
    commit 10ff4c5239a137abfc896ec73ef3d15a0f86a16a upstream.
    
    The exynos5 I2C controller driver always prepares and enables a clock
    before using it and then disables unprepares it when the clock is not
    used anymore.
    
    But this can cause a possible ABBA deadlock in some scenarios since a
    driver that uses regmap to access its I2C registers, will first grab
    the regmap lock and then the I2C xfer function will grab the prepare
    lock when preparing the I2C clock. But since the clock driver also
    uses regmap for I2C accesses, preparing a clock will first grab the
    prepare lock and then the regmap lock when using the regmap API.
    
    An example of this happens on the Exynos5422 Odroid XU4 board where a
    s2mps11 PMIC is used and both the s2mps11 regulators and clk drivers
    share the same I2C regmap.
    
    The possible deadlock is reported by the kernel lockdep:
    
      Possible unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
       lock(sec_core:428:(regmap)->lock);
                                    lock(prepare_lock);
                                    lock(sec_core:428:(regmap)->lock);
       lock(prepare_lock);
    
      *** DEADLOCK ***
    
    Fix it by leaving the code prepared on probe and use {en,dis}able in
    the I2C transfer function.
    
    This patch is similar to commit 34e81ad5f0b6 ("i2c: s3c2410: fix ABBA
    deadlock by keeping clock prepared") that fixes the same bug in other
    driver for an I2C controller found in Samsung SoCs.
    
    Reported-by: Anand Moon <linux.amoon@gmail.com>
    Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Reviewed-by: Anand Moon <linux.amoon@gmail.com>
    Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46b9a1550e0ecf73b83c02c8435eedc01dde2055
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed Apr 13 13:59:14 2016 +1000

    i2c: cpm: Fix build break due to incompatible pointer types
    
    commit 609d5a1b2b35bb62b4b3750396e55453160c2a17 upstream.
    
    Since commit ea8daa7b9784 ("kbuild: Add option to turn incompatible
    pointer check into error"), assignments from an incompatible pointer
    types have become a hard error, eg:
    
      drivers/i2c/busses/i2c-cpm.c:545:91: error: passing argument 3 of
      'dma_alloc_coherent' from incompatible pointer type
    
    Fix the build break by converting txdma & rxdma to dma_addr_t.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Fixes: ea8daa7b9784
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ea82073cb5e7039299350aba5bc135994c8cbda
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Apr 18 13:57:48 2016 +0300

    perf intel-pt: Fix segfault tracing transactions
    
    commit 1342e0b7a6c1a060c593037fbac9f4b717f1cb3b upstream.
    
    Tracing a workload that uses transactions gave a seg fault as follows:
    
      perf record -e intel_pt// workload
      perf report
      Program received signal SIGSEGV, Segmentation fault.
      0x000000000054b58c in intel_pt_reset_last_branch_rb (ptq=0x1a36110)
      	at util/intel-pt.c:929
      929 ptq->last_branch_rb->nr = 0;
      (gdb) p ptq->last_branch_rb
      $1 = (struct branch_stack *) 0x0
      (gdb) up
      1148 intel_pt_reset_last_branch_rb(ptq);
      (gdb) l
      1143 if (ret)
      1144 pr_err("Intel Processor Trace: failed to deliver transaction event
      1145 ret);
      1146
      1147 if (pt->synth_opts.callchain)
      1148 intel_pt_reset_last_branch_rb(ptq);
      1149
      1150 return ret;
      1151 }
      1152
      (gdb) p pt->synth_opts.callchain
      $2 = true
      (gdb)
      (gdb) bt
       #0 0x000000000054b58c in intel_pt_reset_last_branch_rb (ptq=0x1a36110)
       #1 0x000000000054c1e0 in intel_pt_synth_transaction_sample (ptq=0x1a36110)
       #2 0x000000000054c5b2 in intel_pt_sample (ptq=0x1a36110)
    
    Caused by checking the 'callchain' flag when it should have been the
    'last_branch' flag.  Fix that.
    
    Reported-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Fixes: f14445ee72c5 ("perf intel-pt: Support generating branch stack")
    Link: http://lkml.kernel.org/r/1460977068-11566-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 f4276d5753538996fa93a34646554bfd92f6e071
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Apr 14 14:39:02 2016 +0300

    drm/i915: Use fw_domains_put_with_fifo() on HSW
    
    commit 31318a922395ec9e78d6e2ddf70779355afc7594 upstream.
    
    HSW still has the wake FIFO, so let's check it.
    
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: Deepak S <deepak.s@linux.intel.com>
    Fixes: 05a2fb157e44 ("drm/i915: Consolidate forcewake code")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1460633942-24013-1-git-send-email-ville.syrjala@linux.intel.com
    Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
    (cherry picked from commit 3d7d0c85e41afb5a05e98b3a8a72c38357f02594)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e0a2d244dcb6068887ef7d3c3af302fe9152298f
Author: Akash Goel <akash.goel@intel.com>
Date:   Fri Mar 11 14:56:42 2016 +0530

    drm/i915: Fixup the free space logic in ring_prepare
    
    commit d43f3ebf12f59c57782ec652da65ef61c2662b40 upstream.
    
    Currently for the case where there is enough space at the end of Ring
    buffer for accommodating only the base request, the wrapround is done
    immediately and as a result the base request gets added at the start
    of Ring buffer. But there may not be enough free space at the beginning
    to accommodate the base request, as before the wraparound, the wait was
    effectively done for the reserved_size free space from the start of
    Ring buffer. In such a case there is a potential of Ring buffer overflow,
    the instructions at the head of Ring (ACTHD) can get overwritten.
    
    Since the base request can fit in the remaining space, there is no need
    to wraparound immediately. The wraparound will anyway happen later when
    the reserved part starts getting used.
    
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Akash Goel <akash.goel@intel.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Link: http://patchwork.freedesktop.org/patch/msgid/1457688402-10411-1-git-send-email-akash.goel@intel.com
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    (cherry picked from commit 782f6bc0aba037436d6a04d19b23f8b61020a576)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20d948d8b63538e5a1af20b275c4562a5a6bc470
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Mar 11 10:51:51 2016 +0300

    drm/amdkfd: uninitialized variable in dbgdev_wave_control_set_registers()
    
    commit 93fce954427effee89e44a976299b15dd75b4bbc upstream.
    
    At the end of the function we expect "status" to be zero, but it's
    either -EINVAL or uninitialized.
    
    Fixes: 788bf83db301 ('drm/amdkfd: Add wave control operation to debugger')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80220c4827ddde2b1c49ababa6c1ab0ad0691112
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Oct 15 17:01:58 2015 +0300

    drm/i915: skl_update_scaler() wants a rotation bitmask instead of bit number
    
    commit fa5a7970d372c9c9beb3a0ce79ee1d0c23387d0a upstream.
    
    Pass BIT(DRM_ROTATE_0) instead of DRM_ROTATE_0 to skl_update_scaler().
    The former is a mask, the latter just the bit number.
    
    Fortunately the only thing skl_update_scaler() does with the rotation
    is check if it's 90/270 degrees or not, and so in this case it would
    still do the right thing.
    
    Cc: Chandra Konduru <chandra.konduru@intel.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1444917718-28495-1-git-send-email-ville.syrjala@linux.intel.com
    Fixes: 6156a45602f9 ("drm/i915: skylake primary plane scaling using shared scalers")
    Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39fa719753bcef274084502c1ec8cfefc556209f
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Mon Jan 11 20:48:32 2016 +0200

    drm/i915: Cleanup phys status page too
    
    commit 7d3fdfff23852fe458a0d0979a3555fe60f1e563 upstream.
    
    Restore the lost phys status page cleanup.
    
    Fixes the following splat with DMA_API_DEBUG=y:
    
    WARNING: CPU: 0 PID: 21615 at ../lib/dma-debug.c:974 dma_debug_device_change+0x190/0x1f0()
    pci 0000:00:02.0: DMA-API: device driver has pending DMA allocations while released from device [count=1]
                   One of leaked entries details: [device address=0x0000000023163000] [size=4096 bytes] [mapped with DMA_BIDIRECTIONAL] [mapped as coherent]
    Modules linked in: i915(-) i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm sha256_generic hmac drbg ctr ccm sch_fq_codel binfmt_misc joydev mousedev arc4 ath5k iTCO_wdt mac80211 smsc_ircc2 ath snd_intel8x0m snd_intel8x0 snd_ac97_codec ac97_bus psmouse snd_pcm input_leds i2c_i801 pcspkr snd_timer cfg80211 snd soundcore i2c_core ehci_pci firewire_ohci ehci_hcd firewire_core lpc_ich 8139too rfkill crc_itu_t mfd_core mii usbcore rng_core intel_agp intel_gtt usb_common agpgart irda crc_ccitt fujitsu_laptop led_class parport_pc video parport evdev backlight
    CPU: 0 PID: 21615 Comm: rmmod Tainted: G     U          4.4.0-rc4-mgm-ovl+ #4
    Hardware name: FUJITSU SIEMENS LIFEBOOK S6120/FJNB16C, BIOS Version 1.26  05/10/2004
     e31a3de0 e31a3de0 e31a3d9c c128d4bd e31a3dd0 c1045a0c c15e00c4 e31a3dfc
     0000546f c15dfad2 000003ce c12b3740 000003ce c12b3740 00000000 00000001
     f61fb8a0 e31a3de8 c1045a83 00000009 e31a3de0 c15e00c4 e31a3dfc e31a3e4c
    Call Trace:
     [<c128d4bd>] dump_stack+0x16/0x19
     [<c1045a0c>] warn_slowpath_common+0x8c/0xd0
     [<c12b3740>] ? dma_debug_device_change+0x190/0x1f0
     [<c12b3740>] ? dma_debug_device_change+0x190/0x1f0
     [<c1045a83>] warn_slowpath_fmt+0x33/0x40
     [<c12b3740>] dma_debug_device_change+0x190/0x1f0
     [<c1065499>] notifier_call_chain+0x59/0x70
     [<c10655af>] __blocking_notifier_call_chain+0x3f/0x80
     [<c106560f>] blocking_notifier_call_chain+0x1f/0x30
     [<c134cfb3>] __device_release_driver+0xc3/0xf0
     [<c134d0d7>] driver_detach+0x97/0xa0
     [<c134c440>] bus_remove_driver+0x40/0x90
     [<c134db18>] driver_unregister+0x28/0x60
     [<c1079e8c>] ? trace_hardirqs_on_caller+0x12c/0x1d0
     [<c12c0618>] pci_unregister_driver+0x18/0x80
     [<f83e96e7>] drm_pci_exit+0x87/0xb0 [drm]
     [<f8b3be2d>] i915_exit+0x1b/0x1ee [i915]
     [<c10b999c>] SyS_delete_module+0x14c/0x210
     [<c1079e8c>] ? trace_hardirqs_on_caller+0x12c/0x1d0
     [<c115a9bd>] ? ____fput+0xd/0x10
     [<c1002014>] do_fast_syscall_32+0xa4/0x450
     [<c149f6fa>] sysenter_past_esp+0x3b/0x5d
    ---[ end trace c2ecbc77760f10a0 ]---
    Mapped at:
     [<c12b3183>] debug_dma_alloc_coherent+0x33/0x90
     [<f83e989c>] drm_pci_alloc+0x18c/0x1e0 [drm]
     [<f8acd59f>] intel_init_ring_buffer+0x2af/0x490 [i915]
     [<f8acd8b0>] intel_init_render_ring_buffer+0x130/0x750 [i915]
     [<f8aaea4e>] i915_gem_init_rings+0x1e/0x110 [i915]
    
    v2: s/BUG_ON/WARN_ON/ since dim doens't like the former anymore
    
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Fixes: 5c6c600 ("drm/i915: Remove DRI1 ring accessors and API")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> (v1)
    Link: http://patchwork.freedesktop.org/patch/msgid/1452538112-5331-1-git-send-email-ville.syrjala@linux.intel.com
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 194de738b69315721adc4e6dbafe81c790b318c8
Author: Vladimir Zapolskiy <vz@mleia.com>
Date:   Sun Mar 6 03:21:46 2016 +0200

    pwm: brcmstb: Fix check of devm_ioremap_resource() return code
    
    commit c5857e3f94ab2719dfac649a146cb5dd6f21fcf3 upstream.
    
    The change fixes potential oops while accessing iomem on invalid address
    if devm_ioremap_resource() fails due to some reason.
    
    The devm_ioremap_resource() function returns ERR_PTR() and never returns
    NULL, which makes useless a following check for NULL.
    
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Fixes: 3a9f5957020f ("pwm: Add Broadcom BCM7038 PWM controller support")
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 385af1d58254412e42d06b19e3cbe60b55cf34a6
Author: cpaul@redhat.com <cpaul@redhat.com>
Date:   Fri Apr 22 16:08:46 2016 -0400

    drm/dp/mst: Get validated port ref in drm_dp_update_payload_part1()
    
    commit 263efde31f97c498e1ebad30e4d2906609d7ad6b upstream.
    
    We can thank KASAN for finding this, otherwise I probably would have spent
    hours on it. This fixes a somewhat harder to trigger kernel panic, occuring
    while enabling MST where the port we were currently updating the payload on
    would have all of it's refs dropped before we finished what we were doing:
    
    ==================================================================
    BUG: KASAN: use-after-free in drm_dp_update_payload_part1+0xb3f/0xdb0 [drm_kms_helper] at addr ffff8800d29de018
    Read of size 4 by task Xorg/973
    =============================================================================
    BUG kmalloc-2048 (Tainted: G    B   W      ): kasan: bad access detected
    -----------------------------------------------------------------------------
    
    INFO: Allocated in drm_dp_add_port+0x1aa/0x1ed0 [drm_kms_helper] age=16477 cpu=0 pid=2175
    	___slab_alloc+0x472/0x490
    	__slab_alloc+0x20/0x40
    	kmem_cache_alloc_trace+0x151/0x190
    	drm_dp_add_port+0x1aa/0x1ed0 [drm_kms_helper]
    	drm_dp_send_link_address+0x526/0x960 [drm_kms_helper]
    	drm_dp_check_and_send_link_address+0x1ac/0x210 [drm_kms_helper]
    	drm_dp_mst_link_probe_work+0x77/0xd0 [drm_kms_helper]
    	process_one_work+0x562/0x1350
    	worker_thread+0xd9/0x1390
    	kthread+0x1c5/0x260
    	ret_from_fork+0x22/0x40
    INFO: Freed in drm_dp_free_mst_port+0x50/0x60 [drm_kms_helper] age=7521 cpu=0 pid=2175
    	__slab_free+0x17f/0x2d0
    	kfree+0x169/0x180
    	drm_dp_free_mst_port+0x50/0x60 [drm_kms_helper]
    	drm_dp_destroy_connector_work+0x2b8/0x490 [drm_kms_helper]
    	process_one_work+0x562/0x1350
    	worker_thread+0xd9/0x1390
    	kthread+0x1c5/0x260
    	ret_from_fork+0x22/0x40
    
    which on this T460s, would eventually lead to kernel panics in somewhat
    random places later in intel_mst_enable_dp() if we got lucky enough.
    
    Signed-off-by: Lyude <cpaul@redhat.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ae01ae65df95a372451e476725ce278bec8787c
Author: Lyude <cpaul@redhat.com>
Date:   Wed Apr 13 16:50:18 2016 -0400

    drm/dp/mst: Restore primary hub guid on resume
    
    commit 9dc0487d96a0396367a1451b31873482080b527f upstream.
    
    Some hubs are forgetful, and end up forgetting whatever GUID we set
    previously after we do a suspend/resume cycle. This can lead to
    hotplugging breaking (along with probably other things) since the hub
    will start sending connection notifications with the wrong GUID. As
    such, we need to check on resume whether or not the GUID the hub is
    giving us is valid.
    
    Signed-off-by: Lyude <cpaul@redhat.com>
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1460580618-7421-1-git-send-email-cpaul@redhat.com
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e51d7655d3dcac3ea2185fec178872b11b9f03be
Author: cpaul@redhat.com <cpaul@redhat.com>
Date:   Mon Apr 4 19:58:47 2016 -0400

    drm/dp/mst: Validate port in drm_dp_payload_send_msg()
    
    commit deba0a2af9592b2022a0bce7b085a318b53ce1db upstream.
    
    With the joys of things running concurrently, there's always a chance
    that the port we get passed in drm_dp_payload_send_msg() isn't actually
    valid anymore. Because of this, we need to make sure we validate the
    reference to the port before we use it otherwise we risk running into
    various race conditions. For instance, on the Dell MST monitor I have
    here for testing, hotplugging it enough times causes us to kernel panic:
    
    [drm:intel_mst_enable_dp] 1
    [drm:drm_dp_update_payload_part2] payload 0 1
    [drm:intel_get_hpd_pins] hotplug event received, stat 0x00200000, dig 0x10101011, pins 0x00000020
    [drm:intel_hpd_irq_handler] digital hpd port B - short
    [drm:intel_dp_hpd_pulse] got hpd irq on port B - short
    [drm:intel_dp_check_mst_status] got esi 00 10 00
    [drm:drm_dp_update_payload_part2] payload 1 1
    general protection fault: 0000 [#1] SMP
    …
    Call Trace:
     [<ffffffffa012b632>] drm_dp_update_payload_part2+0xc2/0x130 [drm_kms_helper]
     [<ffffffffa032ef08>] intel_mst_enable_dp+0xf8/0x180 [i915]
     [<ffffffffa0310dbd>] haswell_crtc_enable+0x3ed/0x8c0 [i915]
     [<ffffffffa030c84d>] intel_atomic_commit+0x5ad/0x1590 [i915]
     [<ffffffffa01db877>] ? drm_atomic_set_crtc_for_connector+0x57/0xe0 [drm]
     [<ffffffffa01dc4e7>] drm_atomic_commit+0x37/0x60 [drm]
     [<ffffffffa0130a3a>] drm_atomic_helper_set_config+0x7a/0xb0 [drm_kms_helper]
     [<ffffffffa01cc482>] drm_mode_set_config_internal+0x62/0x100 [drm]
     [<ffffffffa01d02ad>] drm_mode_setcrtc+0x3cd/0x4e0 [drm]
     [<ffffffffa01c18e3>] drm_ioctl+0x143/0x510 [drm]
     [<ffffffffa01cfee0>] ? drm_mode_setplane+0x1b0/0x1b0 [drm]
     [<ffffffff810f79a7>] ? hrtimer_start_range_ns+0x1b7/0x3a0
     [<ffffffff81212962>] do_vfs_ioctl+0x92/0x570
     [<ffffffff81590852>] ? __sys_recvmsg+0x42/0x80
     [<ffffffff81212eb9>] SyS_ioctl+0x79/0x90
     [<ffffffff816b4e32>] entry_SYSCALL_64_fastpath+0x1a/0xa4
    RIP  [<ffffffffa012b026>] drm_dp_payload_send_msg+0x146/0x1f0 [drm_kms_helper]
    
    Which occurs because of the hotplug event shown in the log, which ends
    up causing DRM's dp helpers to drop the port we're updating the payload
    on and panic.
    
    Signed-off-by: Lyude <cpaul@redhat.com>
    Reviewed-by: David Airlie <airlied@linux.ie>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20a32ec7ae6c46768d91c61d99228f13c2a7912b
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Fri Apr 22 10:05:21 2016 +1000

    drm/nouveau/gr/gf100: select a stream master to fixup tfb offset queries
    
    commit 28dca90533750c7e31e8641c3df426bad9c12941 upstream.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7973c7c36e96d9c2afda1df9e4f4c2518cbe6588
Author: Huacai Chen <chenhc@lemote.com>
Date:   Tue Apr 19 19:19:11 2016 +0800

    drm: Loongson-3 doesn't fully support wc memory
    
    commit 221004c66a58949a0f25c937a6789c0839feb530 upstream.
    
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b6b0008f9dd3f18ac1d42c28e25dc09715ebc66
Author: Vitaly Prosyak <vitaly.prosyak@amd.com>
Date:   Thu Apr 14 13:34:03 2016 -0400

    drm/radeon: fix vertical bars appear on monitor (v2)
    
    commit 5d5b7803c49bbb01bdf4c6e95e8314d0515b9484 upstream.
    
    When crtc/timing is disabled on boot the dig block
    should be stopped in order ignore timing from crtc,
    reset the steering fifo otherwise we get display
    corruption or hung in dp sst mode.
    
    v2: agd: fix coding style
    
    Signed-off-by: Vitaly Prosyak <vitaly.prosyak@amd.com>
    Signed-off-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 7946284184695f2ba338b5c8c45a40f0b732fb2a
Author: Jérôme Glisse <jglisse@redhat.com>
Date:   Tue Apr 19 09:07:50 2016 -0400

    drm/radeon: forbid mapping of userptr bo through radeon device file
    
    commit b5dcec693f87cb8475f2291c0075b2422addd3d6 upstream.
    
    Allowing userptr bo which are basicly a list of page from some vma
    (so either anonymous page or file backed page) would lead to serious
    corruption of kernel structures and counters (because we overwrite
    the page->mapping field when mapping buffer).
    
    This will already block if the buffer was populated before anyone does
    try to mmap it because then TTM_PAGE_FLAG_SG would be set in in the
    ttm_tt flags. But that flag is check before ttm_tt_populate in the ttm
    vm fault handler.
    
    So to be safe just add a check to verify_access() callback.
    
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ae4d4093977f2f29af5c92d6e0627eca3a97e20
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Apr 13 12:08:27 2016 -0400

    drm/radeon: fix initial connector audio value
    
    commit 7403c515c49c033fec33df0814fffdc977e6acdc upstream.
    
    This got lost somewhere along the way.  This fixes
    audio not working until set_property was called.
    
    Noticed-by: Hyungwon Hwang <hyungwon.hwang7@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a37564fa5a495a9e3f59fb648315ad33085476cd
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu Apr 14 14:15:16 2016 -0400

    drm/radeon: add a quirk for a XFX R9 270X
    
    commit bcb31eba4a4ea356fd61cbd5dec5511c3883f57e upstream.
    
    bug:
    https://bugs.freedesktop.org/show_bug.cgi?id=76490
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 038cf9c1977ed3bd71b107bbabe72cff8e5bb12f
Author: Grigori Goronzy <greg@chown.ath.cx>
Date:   Tue Mar 22 15:48:18 2016 -0400

    drm/amdgpu: fix regression on CIK (v2)
    
    This fix was written against drm-next, but when it was
    backported to 4.5 as a stable fix, the driver internal
    structure change was missed.  Fix that up here to avoid
    a hang due to waiting for the wrong sequence number.
    
    v2: agd: fix up commit message
    
    Signed-off-by: Grigori Goronzy <greg@chown.ath.cx>
    Cc: stable@vger.kernel.org
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

commit fe98d45db9b84d436284ed156e4f5c2f78bb7999
Author: Sonny Jiang <sonny.jiang@amd.com>
Date:   Mon Apr 18 16:05:04 2016 -0400

    amdgpu/uvd: add uvd fw version for amdgpu
    
    commit 562e2689baebaa2ac25b7ec934385480ed1cb7d6 upstream.
    
    Was previously always hardcoded to 0.
    
    Signed-off-by: Sonny Jiang <sonny.jiang@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 25d1be8d9fbc1a1a479483c29345f578687c478a
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Apr 18 18:25:34 2016 -0400

    drm/amdgpu: bump the afmt limit for CZ, ST, Polaris
    
    commit 83c5cda2ccf40a7a7e4bb674321509b346e23d5a upstream.
    
    Fixes array overflow on these chips.
    
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57c17683f013be3aca2bf937516da9169e3b6727
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Apr 18 18:09:57 2016 -0400

    drm/amdgpu: use defines for CRTCs and AMFT blocks
    
    commit 3ea25f858fd5aeee888059952bbb8e910541eebb upstream.
    
    Prerequiste for the next patch which ups the limits.
    
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7cf6750c05ac80df28d1d66ecd949011f7e0d4b
Author: Rex Zhu <Rex.Zhu@amd.com>
Date:   Tue Apr 12 19:25:52 2016 +0800

    drm/amdgpu: when suspending, if uvd/vce was running. need to cancel delay work.
    
    commit 85cc88f02eb0ecf44493c1b2ebb6f206cd5fc321 upstream.
    
    fix the issue that when resume back, uvd/vce
    dpm was disabled and uvd/vce's performace
    dropped.
    
    Signed-off-by: Rex Zhu <Rex.Zhu@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 e05cff2aa31766746f02c932e11b6b2ae357464c
Author: Robin Murphy <robin.murphy@arm.com>
Date:   Thu Mar 10 19:28:12 2016 +0000

    iommu/dma: Restore scatterlist offsets correctly
    
    commit 07b48ac4bbe527e68cfc555f2b2b206908437141 upstream.
    
    With the change to stashing just the IOVA-page-aligned remainder of the
    CPU-page offset rather than the whole thing, the failure path in
    __invalidate_sg() also needs tweaking to account for that in the case of
    differing page sizes where the two offsets may not be equivalent.
    Similarly in __finalise_sg(), lest the architecture-specific wrappers
    later get the wrong address for cache maintenance on sync or unmap.
    
    Fixes: 164afb1d85b8 ("iommu/dma: Use correct offset in map_sg")
    Reported-by: Magnus Damm <damm+renesas@opensource.se>
    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 99067b8e854211316200b3d6375a664448c2fabd
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Apr 8 15:12:24 2016 +0200

    iommu/amd: Fix checking of pci dma aliases
    
    commit e3156048346c28c695f5cf9db67a8cf88c90f947 upstream.
    
    Commit 61289cb ('iommu/amd: Remove old alias handling code')
    removed the old alias handling code from the AMD IOMMU
    driver because this is now handled by the IOMMU core code.
    
    But this also removed the handling of PCI aliases, which is
    not handled by the core code. This caused issues with PCI
    devices that have hidden PCIe-to-PCI bridges that rewrite
    the request-id.
    
    Fix this bug by re-introducing some of the removed functions
    from commit 61289cbaf6c8 and add a alias field
    'struct iommu_dev_data'. This field carrys the return value
    of the get_alias() function and uses that instead of the
    amd_iommu_alias_table[] array in the code.
    
    Fixes: 61289cbaf6c8 ('iommu/amd: Remove old alias handling code')
    Tested-by: Tomasz Golinski <tomaszg@math.uwb.edu.pl>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee6a1e9eefed56308fcbd5619cb02b926b7ec630
Author: Keerthy <j-keerthy@ti.com>
Date:   Thu Apr 14 10:29:16 2016 +0530

    pinctrl: single: Fix pcs_parse_bits_in_pinctrl_entry to use __ffs than ffs
    
    commit 56b367c0cd67d4c3006738e7dc9dda9273fd2bfe upstream.
    
    pcs_parse_bits_in_pinctrl_entry uses ffs which gives bit indices
    ranging from 1 to MAX. This leads to a corner case where we try to request
    the pin number = MAX and fails.
    
    bit_pos value is being calculted using ffs. pin_num_from_lsb uses
    bit_pos value. pins array is populated with:
    
    pin + pin_num_from_lsb.
    
    The above is 1 more than usual bit indices as bit_pos uses ffs to compute
    first set bit. Hence the last of the pins array is populated with the MAX
    value and not MAX - 1 which causes error when we call pin_request.
    
    mask_pos is rightly calculated as ((pcs->fmask) << (bit_pos - 1))
    Consequently val_pos and submask are correct.
    
    Hence use __ffs which gives (ffs(x) - 1) as the first bit set.
    
    fixes: 4e7e8017a8 ("pinctrl: pinctrl-single: enhance to configure multiple pins of different modules")
    Signed-off-by: Keerthy <j-keerthy@ti.com>
    Acked-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7ce82609fda7214292998e3a38901d3944b6c16
Author: Yingjoe Chen <yingjoe.chen@mediatek.com>
Date:   Sat Apr 2 14:57:49 2016 +0800

    pinctrl: mediatek: correct debounce time unit in mtk_gpio_set_debounce
    
    commit 5fedbb923936174ab4d1d5cc92bca1cf6b2e0ca2 upstream.
    
    The debounce time unit for gpio_chip.set_debounce is us but
    mtk_gpio_set_debounce regard it as ms.
    Fix this by correct debounce time array dbnc_arr so it can find correct
    debounce setting. Debounce time for first debounce setting is 500us,
    correct this as well.
    
    While I'm at it, also change the debounce time array name to
    "debounce_time" for readability.
    
    Signed-off-by: Yingjoe Chen <yingjoe.chen@mediatek.com>
    Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
    Acked-by: Hongzhou Yang <hongzhou.yang@mediatek.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e8d89e8bb8828faf3c955fe9a50e1ae54918326
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Feb 16 16:03:23 2016 +0100

    xen kconfig: don't "select INPUT_XEN_KBDDEV_FRONTEND"
    
    commit 13aa38e291bdd4e4018f40dd2f75e464814dcbf3 upstream.
    
    The Xen framebuffer driver selects the xen keyboard driver, so the latter
    will be built-in if XEN_FBDEV_FRONTEND=y. However, when CONFIG_INPUT
    is a loadable module, this configuration cannot work. On mainline kernels,
    the symbol will be enabled but not used, while in combination with
    a patch I have to detect such useless configurations, we get the
    expected link failure:
    
    drivers/input/built-in.o: In function `xenkbd_remove':
    xen-kbdfront.c:(.text+0x2f0): undefined reference to `input_unregister_device'
    xen-kbdfront.c:(.text+0x30e): undefined reference to `input_unregister_device'
    
    This removes the extra "select", as it just causes more trouble than
    it helps. In theory, some defconfig file might break if it has
    XEN_FBDEV_FRONTEND in it but not INPUT_XEN_KBDDEV_FRONTEND. The Kconfig
    fragment we ship in the kernel (kernel/configs/xen.config) however
    already enables both, and anyone using an old .config file would
    keep having both enabled.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Suggested-by: David Vrabel <david.vrabel@citrix.com>
    Fixes: 36c1132e34bd ("xen kconfig: fix select INPUT_XEN_KBDDEV_FRONTEND")
    Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 506788dafb7d27c31703991f0b5f7b87bd9a942c
Author: Stephen Boyd <sboyd@codeaurora.org>
Date:   Sun Apr 17 05:21:42 2016 -0700

    Input: pmic8xxx-pwrkey - fix algorithm for converting trigger delay
    
    commit eda5ecc0a6b865561997e177c393f0b0136fe3b7 upstream.
    
    The trigger delay algorithm that converts from microseconds to
    the register value looks incorrect. According to most of the PMIC
    documentation, the equation is
    
    	delay (Seconds) = (1 / 1024) * 2 ^ (x + 4)
    
    except for one case where the documentation looks to have a
    formatting issue and the equation looks like
    
    	delay (Seconds) = (1 / 1024) * 2 x + 4
    
    Most likely this driver was written with the improper
    documentation to begin with. According to the downstream sources
    the valid delays are from 2 seconds to 1/64 second, and the
    latter equation just doesn't make sense for that. Let's fix the
    algorithm and the range check to match the documentation and the
    downstream sources.
    
    Reported-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Fixes: 92d57a73e410 ("input: Add support for Qualcomm PMIC8XXX power key")
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Tested-by: John Stultz <john.stultz@linaro.org>
    Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 197b6c5f0d976420c3eeacc7589ebc5869d2d70f
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Thu Mar 31 10:53:42 2016 -0700

    Input: gtco - fix crash on detecting device without endpoints
    
    commit 162f98dea487206d9ab79fc12ed64700667a894d upstream.
    
    The gtco driver expects at least one valid endpoint. If given malicious
    descriptors that specify 0 for the number of endpoints, it will crash in
    the probe function. Ensure there is at least one endpoint on the interface
    before using it.
    
    Also let's fix a minor coding style issue.
    
    The full correct report of this issue can be found in the public
    Red Hat Bugzilla:
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1283385
    
    Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95415ac5786f483c7c69145ae644bc64c2240776
Author: Dmitry Ivanov <dmitrijs.ivanovs@ubnt.com>
Date:   Thu Apr 7 09:31:38 2016 +0200

    netlink: don't send NETLINK_URELEASE for unbound sockets
    
    commit e27260203912b40751fa353d009eaa5a642c739f upstream.
    
    All existing users of NETLINK_URELEASE use it to clean up resources that
    were previously allocated to a socket via some command. As a result, no
    users require getting this notification for unbound sockets.
    
    Sending it for unbound sockets, however, is a problem because any user
    (including unprivileged users) can create a socket that uses the same ID
    as an existing socket. Binding this new socket will fail, but if the
    NETLINK_URELEASE notification is generated for such sockets, the users
    thereof will be tricked into thinking the socket that they allocated the
    resources for is closed.
    
    In the nl80211 case, this will cause destruction of virtual interfaces
    that still belong to an existing hostapd process; this is the case that
    Dmitry noticed. In the NFC case, it will cause a poll abort. In the case
    of netlink log/queue it will cause them to stop reporting events, as if
    NFULNL_CFG_CMD_UNBIND/NFQNL_CFG_CMD_UNBIND had been called.
    
    Fix this problem by checking that the socket is bound before generating
    the NETLINK_URELEASE notification.
    
    Signed-off-by: Dmitry Ivanov <dima@ubnt.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56b8eaa38b04f147a6b825a73a31b826b6051604
Author: Dmitry Ivanov <dmitrijs.ivanovs@ubnt.com>
Date:   Wed Apr 6 17:23:18 2016 +0300

    nl80211: check netlink protocol in socket release notification
    
    commit 8f815cdde3e550e10c2736990d791f60c2ce43eb upstream.
    
    A non-privileged user can create a netlink socket with the same port_id as
    used by an existing open nl80211 netlink socket (e.g. as used by a hostapd
    process) with a different protocol number.
    
    Closing this socket will then lead to the notification going to nl80211's
    socket release notification handler, and possibly cause an action such as
    removing a virtual interface.
    
    Fix this issue by checking that the netlink protocol is NETLINK_GENERIC.
    Since generic netlink has no notifier chain of its own, we can't fix the
    problem more generically.
    
    Fixes: 026331c4d9b5 ("cfg80211/mac80211: allow registering for and sending action frames")
    Signed-off-by: Dmitry Ivanov <dima@ubnt.com>
    [rewrite commit message]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c89c3225062d64c63532c127c374ea962f336e6b
Author: Anton Blanchard <anton@samba.org>
Date:   Fri Apr 15 12:08:19 2016 +1000

    powerpc: Update TM user feature bits in scan_features()
    
    commit 4705e02498d6d5a7ab98dfee9595cd5e91db2017 upstream.
    
    We need to update the user TM feature bits (PPC_FEATURE2_HTM and
    PPC_FEATURE2_HTM) to mirror what we do with the kernel TM feature
    bit.
    
    At the moment, if firmware reports TM is not available we turn off
    the kernel TM feature bit but leave the userspace ones on. Userspace
    thinks it can execute TM instructions and it dies trying.
    
    This (together with a QEMU patch) fixes PR KVM, which doesn't currently
    support TM.
    
    Signed-off-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08c9b94505bbe09ed42f658de2a4dbe274fa7468
Author: Anton Blanchard <anton@samba.org>
Date:   Fri Apr 15 12:07:24 2016 +1000

    powerpc: Update cpu_user_features2 in scan_features()
    
    commit beff82374b259d726e2625ec6c518a5f2613f0ae upstream.
    
    scan_features() updates cpu_user_features but not cpu_user_features2.
    
    Amongst other things, cpu_user_features2 contains the user TM feature
    bits which we must keep in sync with the kernel TM feature bit.
    
    Signed-off-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53f3e26b3d09ae40318877b74e0d6c1af767a07f
Author: Anton Blanchard <anton@samba.org>
Date:   Fri Apr 15 12:06:13 2016 +1000

    powerpc: scan_features() updates incorrect bits for REAL_LE
    
    commit 6997e57d693b07289694239e52a10d2f02c3a46f upstream.
    
    The REAL_LE feature entry in the ibm_pa_feature struct is missing an MMU
    feature value, meaning all the remaining elements initialise the wrong
    values.
    
    This means instead of checking for byte 5, bit 0, we check for byte 0,
    bit 0, and then we incorrectly set the CPU feature bit as well as MMU
    feature bit 1 and CPU user feature bits 0 and 2 (5).
    
    Checking byte 0 bit 0 (IBM numbering), means we're looking at the
    "Memory Management Unit (MMU)" feature - ie. does the CPU have an MMU.
    In practice that bit is set on all platforms which have the property.
    
    This means we set CPU_FTR_REAL_LE always. In practice that seems not to
    matter because all the modern cpus which have this property also
    implement REAL_LE, and we've never needed to disable it.
    
    We're also incorrectly setting MMU feature bit 1, which is:
    
      #define MMU_FTR_TYPE_8xx		0x00000002
    
    Luckily the only place that looks for MMU_FTR_TYPE_8xx is in Book3E
    code, which can't run on the same cpus as scan_features(). So this also
    doesn't matter in practice.
    
    Finally in the CPU user feature mask, we're setting bits 0 and 2. Bit 2
    is not currently used, and bit 0 is:
    
      #define PPC_FEATURE_PPC_LE		0x00000001
    
    Which says the CPU supports the old style "PPC Little Endian" mode.
    Again this should be harmless in practice as no 64-bit CPUs implement
    that mode.
    
    Fix the code by adding the missing initialisation of the MMU feature.
    
    Also add a comment marking CPU user feature bit 2 (0x4) as reserved. It
    would be unsafe to start using it as old kernels incorrectly set it.
    
    Fixes: 44ae3ab3358e ("powerpc: Free up some CPU feature bits by moving out MMU-related features")
    Signed-off-by: Anton Blanchard <anton@samba.org>
    [mpe: Flesh out changelog, add comment reserving 0x4]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd7803563938ce36988e6bc494b8f6610c1537af
Author: Horia Geant? <horia.geanta@nxp.com>
Date:   Tue Apr 19 20:33:48 2016 +0300

    crypto: talitos - fix AEAD tcrypt tests
    
    commit 340ff60ae93a5db2b2be6f38868df9a1293b6007 upstream.
    
    After conversion to new AEAD interface, tcrypt tests fail as follows:
    
    [...]
    [    1.145414] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-aes-talitos
    [    1.153564] 00000000: 53 69 6e 67 6c 65 20 62 6c 6f 63 6b 20 6d 73 67
    [    1.160041] 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [    1.166509] 00000020: 00 00 00 00
    [...]
    
    Fix them by providing the correct cipher in & cipher out pointers,
    i.e. must skip over associated data in src and dst S/G.
    
    While here, fix a problem with the HW S/G table index usage:
    tbl_off must be updated after the pointer to the table entries is set.
    
    Fixes: aeb4c132f33d ("crypto: talitos - Convert to new AEAD interface")
    Reported-by: Jonas Eymann <J.Eymann@gmx.net>
    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 0dedb763d08e6fa0da9c1ee14fb5d8522a85e846
Author: Jonas Eymann <J.Eymann@gmx.net>
Date:   Tue Apr 19 20:33:47 2016 +0300

    crypto: talitos - fix crash in talitos_cra_init()
    
    commit 89d124cb61b39900959e2839ac06b6339b6a54cb upstream.
    
    Conversion of talitos driver to the new AEAD interface
    hasn't been properly tested.
    
    AEAD algorithms crash in talitos_cra_init as follows:
    
    [...]
    [    1.141095] talitos ffe30000.crypto: hwrng
    [    1.145381] Unable to handle kernel paging request for data at address 0x00000058
    [    1.152913] Faulting instruction address: 0xc02accc0
    [    1.157910] Oops: Kernel access of bad area, sig: 11 [#1]
    [    1.163315] SMP NR_CPUS=2 P1020 RDB
    [    1.166810] Modules linked in:
    [    1.169875] CPU: 0 PID: 1007 Comm: cryptomgr_test Not tainted 4.4.6 #1
    [    1.176415] task: db5ec200 ti: db4d6000 task.ti: db4d6000
    [    1.181821] NIP: c02accc0 LR: c02acd18 CTR: c02acd04
    [    1.186793] REGS: db4d7d30 TRAP: 0300   Not tainted  (4.4.6)
    [    1.192457] MSR: 00029000 <CE,EE,ME>  CR: 95009359  XER: e0000000
    [    1.198585] DEAR: 00000058 ESR: 00000000
    GPR00: c017bdc0 db4d7de0 db5ec200 df424b48 00000000 00000000 df424bfc db75a600
    GPR08: df424b48 00000000 db75a628 db4d6000 00000149 00000000 c0044cac db5acda0
    GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 00000400 df424940
    GPR24: df424900 00003083 00000400 c0180000 db75a640 c03e9f84 df424b40 df424b48
    [    1.230978] NIP [c02accc0] talitos_cra_init+0x28/0x6c
    [    1.236039] LR [c02acd18] talitos_cra_init_aead+0x14/0x28
    [    1.241443] Call Trace:
    [    1.243894] [db4d7de0] [c03e9f84] 0xc03e9f84 (unreliable)
    [    1.249322] [db4d7df0] [c017bdc0] crypto_create_tfm+0x5c/0xf0
    [    1.255083] [db4d7e10] [c017beec] crypto_alloc_tfm+0x98/0xf8
    [    1.260769] [db4d7e40] [c0186a20] alg_test_aead+0x28/0xc8
    [    1.266181] [db4d7e60] [c0186718] alg_test+0x260/0x2e0
    [    1.271333] [db4d7ee0] [c0183860] cryptomgr_test+0x30/0x54
    [    1.276843] [db4d7ef0] [c0044d80] kthread+0xd4/0xd8
    [    1.281741] [db4d7f40] [c000e4a4] ret_from_kernel_thread+0x5c/0x64
    [    1.287930] Instruction dump:
    [    1.290902] 38600000 4e800020 81230028 7c681b78 81490010 38e9ffc0 3929ffe8 554a073e
    [    1.298691] 2b8a000a 7d474f9e 812a0008 91230030 <80e90058> 39270060 7c0004ac 7cc04828
    
    Fixes: aeb4c132f33d ("crypto: talitos - Convert to new AEAD interface")
    Signed-off-by: Jonas Eymann <J.Eymann@gmx.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    Fix typo - replaced parameter of __crypto_ahash_alg(): s/tfm/alg
    Remove checkpatch warnings.
    Add commit message.
    
    Signed-off-by: Horia Geant? <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

commit 9a10dfc8bf95270073c6c2e2be3de26a652d730a
Author: Xiaodong Liu <xiaodong.liu@intel.com>
Date:   Tue Apr 12 09:45:51 2016 +0000

    crypto: sha1-mb - use corrcet pointer while completing jobs
    
    commit 0851561d9c965df086ef8a53f981f5f95a57c2c8 upstream.
    
    In sha_complete_job, incorrect mcryptd_hash_request_ctx pointer is used
    when check and complete other jobs. If the memory of first completed req
    is freed, while still completing other jobs in the func, kernel will
    crash since NULL pointer is assigned to RIP.
    
    Signed-off-by: Xiaodong Liu <xiaodong.liu@intel.com>
    Acked-by: Tim Chen <tim.c.chen@linux.intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1575fcd167e3452cadbcf7d04ad6277c875a482f
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Wed Apr 13 10:52:25 2016 -0500

    crypto: ccp - Prevent information leakage on export
    
    commit f709b45ec461b548c41a00044dba1f1b572783bf upstream.
    
    Prevent information from leaking to userspace by doing a memset to 0 of
    the export state structure before setting the structure values and copying
    it. This prevents un-initialized padding areas from being copied into the
    export area.
    
    Reported-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72b847aa95584d9e0718c9e3ee38a627bbb24c17
Author: Matti Gottlieb <matti.gottlieb@intel.com>
Date:   Tue Mar 15 13:46:47 2016 +0200

    iwlwifi: mvm: fix memory leak in paging
    
    commit 7fdf9663261cc77a516396fec82cee8a8ea07e76 upstream.
    
    Currently paging download buffer is freed during the
    the unloading of the opmode which happens when the driver
    is unloaded.
    
    This causes a memory leak since the paging download
    buffer is allocated every time we enable the
    interface, so the download buffer can be allocated many
    times, but only be freed once.
    
    Free paging download buffer during disabling of the
    interface.
    
    Signed-off-by: Matti Gottlieb <matti.gottlieb@intel.com>
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0dec867402c0ce4eee7ca0055a99d634fe32a72b
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Date:   Thu Mar 10 13:07:17 2016 +0200

    iwlwifi: pcie: lower the debug level for RSA semaphore access
    
    commit 9fc515bc9e735c10cd327f05c20f5ef69474188d upstream.
    
    IWL_INFO is not an error but still printed by default.
    "can't access the RSA semaphore it is write protected" seems
    worrisome but it is not really a problem.
    
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d22ac3a9403bc2a60662ec117dc83f72564d61f9
Author: Sebastian Ott <sebott@linux.vnet.ibm.com>
Date:   Thu Mar 31 11:48:31 2016 +0200

    s390/pci: add extra padding to function measurement block
    
    commit 9d89d9e61d361f3adb75e1aebe4bb367faf16cfa upstream.
    
    Newer machines might use a different (larger) format for function
    measurement blocks. To ensure that we comply with the alignment
    requirement on these machines and prevent memory corruption (when
    firmware writes more data than we expect) add 16 padding bytes
    at the end of the fmb.
    
    Signed-off-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 61fe67520c4394c90f688c61c5c16dd63824cd42
Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date:   Fri Apr 22 19:53:59 2016 -0700

    cpufreq: intel_pstate: Fix processing for turbo activation ratio
    
    commit 1becf03545a0859ceaaf9e8c2d9861882a71cb01 upstream.
    
    When the config TDP level is not nominal (level = 0), the MSR values for
    reading level 1 and level 2 ratios contain power in low 14 bits and actual
    ratio bits are at bits [23:16]. The current processing for level 1 and
    level 2 is wrong as there is no shift done to get actual ratio.
    
    Fixes: 6a35fc2d6c22 (cpufreq: intel_pstate: get P1 from TAR when available)
    Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54aeb5854ec03315a721268b8c207fcdcd7f298f
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Apr 25 13:12:18 2016 -0400

    Revert "drm/amdgpu: disable runtime pm on PX laptops without dGPU power control"
    
    commit e9bef455af8eb0e837e179aab8988ae2649fd8d3 upstream.
    
    This reverts commit bedf2a65c1aa8fb29ba8527fd00c0f68ec1f55f1.
    
    See the radeon revert for an extended description.
    
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67fb098f6f23ebab7b47ae517c161032dc161cd9
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Apr 18 11:19:19 2016 -0400

    Revert "drm/radeon: disable runtime pm on PX laptops without dGPU power control"
    
    commit bfaddd9fc8ac048b99475f000dbef6f08297417f upstream.
    
    This reverts commit e64c952efb8e0c15ae82cec8e455ab4910690ef1.
    
    ATPX is the ACPI method for controlling AMD PowerXpress laptops.
    There are flags to indicate which methods are supported.  If
    the dGPU power down flag is not supported, the driver needs to
    implement the dGPU power down manually.  We had previously
    always forced the driver to assume the ATPX dGPU power down
    was present, but this causes problems on boards where it is
    not, leading to GPU hangs when attempting to power down the
    dGPU.  Manual dGPU power down is not currently supported in
    the Linux driver.  Some laptops indicate that the ATPX
    dGPU power down method is not present, but it actually
    apparently is.  I'm not sure if this is a bios bug and it should
    be set or if there is a reason it was unset and the method should
    not be used.  This is not an issue on other OSes since both the
    ATPX and the manual driver power down methods are supported.
    
    This is apparently fairly widespread, so just revert for now.
    
    bugs:
    https://bugzilla.kernel.org/show_bug.cgi?id=115321
    https://bugzilla.kernel.org/show_bug.cgi?id=116581
    https://bugzilla.kernel.org/show_bug.cgi?id=116251
    
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67df493c5557c6f34f33c4a3d52784d7ba46312a
Author: Lyude <cpaul@redhat.com>
Date:   Wed Mar 16 15:18:04 2016 -0400

    drm/i915: Fix race condition in intel_dp_destroy_mst_connector()
    
    commit 9e60290dbafdf577766e5fc5f2fdb3be450cf9a6 upstream.
    
    After unplugging a DP MST display from the system, we have to go through
    and destroy all of the DRM connectors associated with it since none of
    them are valid anymore. Unfortunately, intel_dp_destroy_mst_connector()
    doesn't do a good enough job of ensuring that throughout the destruction
    process that no modesettings can be done with the connectors. As it is
    right now, intel_dp_destroy_mst_connector() works like this:
    
    * Take all modeset locks
    * Clear the configuration of the crtc on the connector, if there is one
    * Drop all modeset locks, this is required because of circular
      dependency issues that arise with trying to remove the connector from
      sysfs with modeset locks held
    * Unregister the connector
    * Take all modeset locks, again
    * Do the rest of the required cleaning for destroying the connector
    * Finally drop all modeset locks for good
    
    This only works sometimes. During the destruction process, it's very
    possible that a userspace application will attempt to do a modesetting
    using the connector. When we drop the modeset locks, an ioctl handler
    such as drm_mode_setcrtc has the oppurtunity to take all of the modeset
    locks from us. When this happens, one thing leads to another and
    eventually we end up committing a mode with the non-existent connector:
    
    	[drm:intel_dp_link_training_clock_recovery [i915]] *ERROR* failed to enable link training
    	[drm:intel_dp_aux_ch] dp_aux_ch timeout status 0x7cf0001f
    	[drm:intel_dp_start_link_train [i915]] *ERROR* failed to start channel equalization
    	[drm:intel_dp_aux_ch] dp_aux_ch timeout status 0x7cf0001f
    	[drm:intel_mst_pre_enable_dp [i915]] *ERROR* failed to allocate vcpi
    
    And in some cases, such as with the T460s using an MST dock, this
    results in breaking modesetting and/or panicking the system.
    
    To work around this, we now unregister the connector at the very
    beginning of intel_dp_destroy_mst_connector(), grab all the modesetting
    locks, and then hold them until we finish the rest of the function.
    
    Signed-off-by: Lyude <cpaul@redhat.com>
    Signed-off-by: Rob Clark <rclark@redhat.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1458155884-13877-1-git-send-email-cpaul@redhat.com
    (cherry picked from commit 1f7717552ef1306be3b7ed28c66c6eff550e3a23)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20fd4b1bbfbea603fff1d756b39cffc67048aec5
Author: John Keeping <john@metanate.com>
Date:   Wed Nov 18 11:17:25 2015 +0000

    drm/qxl: fix cursor position with non-zero hotspot
    
    commit d59a1f71ff1aeda4b4630df92d3ad4e3b1dfc885 upstream.
    
    The SPICE protocol considers the position of a cursor to be the location
    of its active pixel on the display, so the cursor is drawn with its
    top-left corner at "(x - hot_spot_x, y - hot_spot_y)" but the DRM cursor
    position gives the location where the top-left corner should be drawn,
    with the hotspot being a hint for drivers that need it.
    
    This fixes the location of the window resize cursors when using Fluxbox
    with the QXL DRM driver and both the QXL and modesetting X drivers.
    
    Signed-off-by: John Keeping <john@metanate.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1447845445-2116-1-git-send-email-john@metanate.com
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06e38eaf1a24332b15748f33039d5bf15799c5cb
Author: Ilia Mirkin <imirkin@alum.mit.edu>
Date:   Sun Mar 6 16:06:06 2016 -0500

    drm/nouveau/core: use vzalloc for allocating ramht
    
    commit 78a121d82da8aff3aca2a6a1c40f5061081760f0 upstream.
    
    Most calls to nvkm_ramht_new use 0x8000 as the size. This results in a
    fairly sizeable chunk of memory to be allocated, which may not be
    available with kzalloc. Since this is done fairly rarely (once per
    channel), use vzalloc instead.
    
    Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Cc: Sven Joachim <svenjoac@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad4b209d192624e8587f4988171d624346913ddd
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Wed Apr 20 20:09:24 2016 -0700

    futex: Acknowledge a new waiter in counter before plist
    
    commit fe1bce9e2107ba3a8faffe572483b6974201a0e6 upstream.
    
    Otherwise an incoming waker on the dest hash bucket can miss
    the waiter adding itself to the plist during the lockless
    check optimization (small window but still the correct way
    of doing this); similarly to the decrement counterpart.
    
    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: bigeasy@linutronix.de
    Cc: dvhart@infradead.org
    Link: http://lkml.kernel.org/r/1461208164-29150-1-git-send-email-dave@stgolabs.net
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61fc0ae42c498f8eb782733065d93da6817d28b4
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Fri Apr 15 14:35:39 2016 +0200

    futex: Handle unlock_pi race gracefully
    
    commit 89e9e66ba1b3bde9d8ea90566c2aee20697ad681 upstream.
    
    If userspace calls UNLOCK_PI unconditionally without trying the TID -> 0
    transition in user space first then the user space value might not have the
    waiters bit set. This opens the following race:
    
    CPU0	    	      	    CPU1
    uval = get_user(futex)
    			    lock(hb)
    lock(hb)
    			    futex |= FUTEX_WAITERS
    			    ....
    			    unlock(hb)
    
    cmpxchg(futex, uval, newval)
    
    So the cmpxchg fails and returns -EINVAL to user space, which is wrong because
    the futex value is valid.
    
    To handle this (yes, yet another) corner case gracefully, check for a flag
    change and retry.
    
    [ tglx: Massaged changelog and slightly reworked implementation ]
    
    Fixes: ccf9e6a80d9e ("futex: Make unlock_pi more robust")
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Darren Hart <dvhart@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1460723739-5195-1-git-send-email-bigeasy@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4fad26a279caad671287e502e9b6d2487a56b270
Author: Romain Perier <romain.perier@free-electrons.com>
Date:   Thu Apr 14 15:36:03 2016 +0200

    asm-generic/futex: Re-enable preemption in futex_atomic_cmpxchg_inatomic()
    
    commit fba7cd681b6155e2d93e7862fcd6f970336b83c3 upstream.
    
    The recent decoupling of pagefault disable and preempt disable added an
    explicit preempt_disable/enable() pair to the futex_atomic_cmpxchg_inatomic()
    implementation in asm-generic/futex.h. But it forgot to add preempt_enable()
    calls to the error handling code pathes, which results in a preemption count
    imbalance.
    
    This is observable on boot when the test for atomic_cmpxchg() is calling
    futex_atomic_cmpxchg_inatomic() on a NULL pointer.
    
    Add the missing preempt_enable() calls to the error handling code pathes.
    
    [ tglx: Massaged changelog ]
    
    Fixes: d9b9ff8c1889 ("sched/preempt, futex: Disable preemption in UP futex_atomic_cmpxchg_inatomic() explicitly")
    Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
    Cc: linux-arch@vger.kernel.org
    Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1460640963-690-1-git-send-email-romain.perier@free-electrons.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dd069c221e299db24ea5937c6130433109d6499
Author: Conrad Kostecki <ck+linuxkernel@bl4ckb0x.de>
Date:   Tue Apr 26 10:08:10 2016 +0200

    ALSA: hda - Add dock support for ThinkPad X260
    
    commit 037e119738120c1cdc460c6ae33871c3000531f3 upstream.
    
    Fixes audio output on a ThinkPad X260, when using Lenovo CES 2013
    docking station series (basic, pro, ultra).
    
    Signed-off-by: Conrad Kostecki <ck+linuxkernel@bl4ckb0x.de>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 519aef523513a58f958e0aa432855e7b2a57a611
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Apr 21 17:37:54 2016 +0200

    ALSA: pcxhr: Fix missing mutex unlock
    
    commit 67f3754b51f22b18c4820fb84062f658c30e8644 upstream.
    
    The commit [9bef72bdb26e: ALSA: pcxhr: Use nonatomic PCM ops]
    converted to non-atomic PCM ops, but shamelessly with an unbalanced
    mutex locking, which leads to the hangup easily.  Fix it.
    
    Fixes: 9bef72bdb26e ('ALSA: pcxhr: Use nonatomic PCM ops')
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=116441
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79dc55bd02a8dc0b6adf7598c4f8a7356594c363
Author: Lu, Han <han.lu@intel.com>
Date:   Wed Apr 20 10:08:43 2016 +0800

    ALSA: hda - add PCI ID for Intel Broxton-T
    
    commit 9859a971ca228725425238756ee89c6133306ec8 upstream.
    
    Add HD Audio Device PCI ID for the Intel Broxton-T platform.
    It is an HDA Intel PCH controller.
    
    Signed-off-by: Lu, Han <han.lu@intel.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0df9987a2ec6bc37440b9c4fa176f360039a8b8e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 19 22:07:50 2016 +0200

    ALSA: hda - Keep powering up ADCs on Cirrus codecs
    
    commit de3df8a986b635082a1d94bae2c361d043c57106 upstream.
    
    Although one weird behavior about the input path (inconsistent D0/D3
    switch) on Cirrus CS420x codecs was fixed in the previous commit,
    there is still an issue on some Mac machines: the capture stream
    stalls when switching the ADCs on the fly.  More badly, this keeps
    stuck until the next reboot.
    
    The dynamic ADC switching is already a bit fragile and assuming
    optimistically that the chip accepts the frequent power changes.  On
    Cirrus codecs, this doesn't seem applicable.
    
    As a quick workaround, we pin down the ADCs to keep up in D0 when
    spec->dyn_adc_switch is set.  In this way, the ADCs are kept up only
    for the system that were confirmed to be broken.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=116171
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a38ae6bb1473a02c5e7501fefe2a5ff42ad736c5
Author: Bastien Nocera <hadess@hadess.net>
Date:   Mon Apr 18 11:10:42 2016 +0200

    ALSA: hda/realtek - Add ALC3234 headset mode for Optiplex 9020m
    
    commit afecb146d8d8a60a1dde9cdf570c278649617fde upstream.
    
    The Optiplex 9020m with Haswell-DT processor needs a quirk for the
    headset jack at the front of the machine to be able to use microphones.
    
    A quirk for this model was originally added in 3127899, but c77900e
    removed it in favour of a more generic version.
    
    Unfortunately, pin configurations can changed based on firmware/BIOS
    versions, and the generic version doesn't have any effect on newer
    versions of the machine/firmware anymore.
    
    With help from David Henningsson <diwic@ubuntu.com>
    
    Signed-off-by: Bastien Nocera <hadess@hadess.net>
    Tested-by: Bastien Nocera <hadess@hadess.net>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66b7be5743d88c9b8fa69e5ba7d06d33d14de8c7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Apr 17 09:39:41 2016 +0200

    ALSA: hda - Don't trust the reported actual power state
    
    commit 50fd4987c4f3c3ebf0ce94d932732011bbdc7c71 upstream.
    
    We've got a regression report that the recording on Mac with a cirrus
    codec doesn't work any longer.  This turned out to be the missing
    power up to D0 by power_save_node enablement.
    
    After analyzing the traces, we found out that the culprit is that the
    codec advertises the "actual" power state of a few nodes to be D0
    while the "target" power state is D3.  This inconsistency is usually
    OK, as it implies the power transition.  But in the case of cirrus
    codec, this seems to be stuck to D3 while it's not actually D0.
    
    This patch addresses the issue by checking the power state difference
    more strictly.  It sends the power-state change verb unless both the
    target and the actual power states show the given value.
    
    We may introduce yet another flag indicating the possible broken
    hardware power state, but it's anyway safer to set the proper power
    state even in a transition (at least it's harmless as long as the
    target state is same).  So this simpler change was applied now.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=116171
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5582eb00f5b2362234cccf542232101db61ffc8b
Author: Tony Luck <tony.luck@intel.com>
Date:   Thu Apr 14 10:21:52 2016 -0700

    x86 EDAC, sb_edac.c: Repair damage introduced when "fixing" channel address
    
    commit ff15e95c82768d589957dbb17d7eb7dba7904659 upstream.
    
    In commit:
    
      eb1af3b71f9d ("Fix computation of channel address")
    
    I switched the "sck_way" variable from holding the log2 value read
    from the h/w to instead be the actual number. Unfortunately it
    is needed in log2 form when used to shift the address.
    
    Tested-by: Patrick Geary <patrickg@supermicro.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Acked-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Cc: Aristeu Rozanski <arozansk@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-edac@vger.kernel.org
    Fixes: eb1af3b71f9d ("Fix computation of channel address")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27b3cc048a5275c53e26c15ffcab3fcf9a03cda0
Author: Jan Beulich <JBeulich@suse.com>
Date:   Thu Apr 21 00:27:04 2016 -0600

    x86/mm/xen: Suppress hugetlbfs in PV guests
    
    commit 103f6112f253017d7062cd74d17f4a514ed4485c upstream.
    
    Huge pages are not normally available to PV guests. Not suppressing
    hugetlbfs use results in an endless loop of page faults when user mode
    code tries to access a hugetlbfs mapped area (since the hypervisor
    denies such PTEs to be created, but error indications can't be
    propagated out of xen_set_pte_at(), just like for various of its
    siblings), and - once killed in an oops like this:
    
      kernel BUG at .../fs/hugetlbfs/inode.c:428!
      invalid opcode: 0000 [#1] SMP
      ...
      RIP: e030:[<ffffffff811c333b>]  [<ffffffff811c333b>] remove_inode_hugepages+0x25b/0x320
      ...
      Call Trace:
       [<ffffffff811c3415>] hugetlbfs_evict_inode+0x15/0x40
       [<ffffffff81167b3d>] evict+0xbd/0x1b0
       [<ffffffff8116514a>] __dentry_kill+0x19a/0x1f0
       [<ffffffff81165b0e>] dput+0x1fe/0x220
       [<ffffffff81150535>] __fput+0x155/0x200
       [<ffffffff81079fc0>] task_work_run+0x60/0xa0
       [<ffffffff81063510>] do_exit+0x160/0x400
       [<ffffffff810637eb>] do_group_exit+0x3b/0xa0
       [<ffffffff8106e8bd>] get_signal+0x1ed/0x470
       [<ffffffff8100f854>] do_signal+0x14/0x110
       [<ffffffff810030e9>] prepare_exit_to_usermode+0xe9/0xf0
       [<ffffffff814178a5>] retint_user+0x8/0x13
    
    This is CVE-2016-3961 / XSA-174.
    
    Reported-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Juergen Gross <JGross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcgrof@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: xen-devel <xen-devel@lists.xenproject.org>
    Link: http://lkml.kernel.org/r/57188ED802000078000E431C@prv-mh.provo.novell.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70d65587f0a82f50952cb29af133a5b6b8538611
Author: Catalin Marinas <catalin.marinas@arm.com>
Date:   Wed Mar 9 16:31:29 2016 +0000

    arm64: Update PTE_RDONLY in set_pte_at() for PROT_NONE permission
    
    commit fdc69e7df3cb24f18a93192641786e5b7ecd1dfe upstream.
    
    The set_pte_at() function must update the hardware PTE_RDONLY bit
    depending on the state of the PTE_WRITE and PTE_DIRTY bits of the given
    entry value. However, it currently only performs this for pte_valid()
    entries, ignoring PTE_PROT_NONE. The side-effect is that PROT_NONE
    mappings would not have the PTE_RDONLY bit set. Without
    CONFIG_ARM64_HW_AFDBM, this is not an issue since such PROT_NONE pages
    are not accessible anyway.
    
    With commit 2f4b829c625e ("arm64: Add support for hardware updates of
    the access and dirty pte bits"), the ptep_set_wrprotect() function was
    re-written to cope with automatic hardware updates of the dirty state.
    As an optimisation, only PTE_RDONLY is checked to assess the "dirty"
    status. Since set_pte_at() does not set this bit for PROT_NONE mappings,
    such pages may be considered "dirty" as a result of
    ptep_set_wrprotect().
    
    This patch updates the pte_valid() check to pte_present() in
    set_pte_at(). It also adds PTE_PROT_NONE to the swap entry bits comment.
    
    Fixes: 2f4b829c625e ("arm64: Add support for hardware updates of the access and dirty pte bits")
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Reported-by: Ganapatrao Kulkarni <gkulkarni@caviumnetworks.com>
    Tested-by: Ganapatrao Kulkarni <gkulkarni@cavium.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bdb0618ad1b9ea6ec6926450c687d133ccddf28c
Author: Catalin Marinas <catalin.marinas@arm.com>
Date:   Thu Jan 7 16:07:20 2016 +0000

    arm64: Honour !PTE_WRITE in set_pte_at() for kernel mappings
    
    commit ac15bd63bbb24238f763ec5b24ee175ec301e8cd upstream.
    
    Currently, set_pte_at() only checks the software PTE_WRITE bit for user
    mappings when it sets or clears the hardware PTE_RDONLY accordingly. The
    kernel ptes are written directly without any modification, relying
    solely on the protection bits in macros like PAGE_KERNEL. However,
    modifying kernel pte attributes via pte_wrprotect() would be ignored by
    set_pte_at(). Since pte_wrprotect() does not set PTE_RDONLY (it only
    clears PTE_WRITE), the new permission is not taken into account.
    
    This patch changes set_pte_at() to adjust the read-only permission for
    kernel ptes as well. As a side effect, existing PROT_* definitions used
    for kernel ioremap*() need to include PTE_DIRTY | PTE_WRITE.
    
    (additionally, white space fix for PTE_KERNEL_ROX)
    
    Acked-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0944355a74bc9c2b5b3cc5b627efe0c73e30bd9
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Mar 16 16:22:45 2016 +0100

    sched/cgroup: Fix/cleanup cgroup teardown/init
    
    commit 2f5177f0fd7e531b26d54633be62d1d4cb94621c upstream.
    
    The CPU controller hasn't kept up with the various changes in the whole
    cgroup initialization / destruction sequence, and commit:
    
      2e91fa7f6d45 ("cgroup: keep zombies associated with their original cgroups")
    
    caused it to explode.
    
    The reason for this is that zombies do not inhibit css_offline() from
    being called, but do stall css_released(). Now we tear down the cfs_rq
    structures on css_offline() but zombies can run after that, leading to
    use-after-free issues.
    
    The solution is to move the tear-down to css_released(), which
    guarantees nobody (including no zombies) is still using our cgroup.
    
    Furthermore, a few simple cleanups are possible too. There doesn't
    appear to be any point to us using css_online() (anymore?) so fold that
    in css_alloc().
    
    And since cgroup code guarantees an RCU grace period between
    css_released() and css_free() we can forgo using call_rcu() and free the
    stuff immediately.
    
    Suggested-by: Tejun Heo <tj@kernel.org>
    Reported-by: Kazuki Yamaguchi <k@rhe.jp>
    Reported-by: Niklas Cassel <niklas.cassel@axis.com>
    Tested-by: Niklas Cassel <niklas.cassel@axis.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Tejun Heo <tj@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 2e91fa7f6d45 ("cgroup: keep zombies associated with their original cgroups")
    Link: http://lkml.kernel.org/r/20160316152245.GY6344@twins.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94d75e190f199dfce1094496927418cb00810683
Author: Robert Jarzmik <robert.jarzmik@free.fr>
Date:   Mon Feb 15 21:57:48 2016 +0100

    dmaengine: pxa_dma: fix the maximum requestor line
    
    commit 6bab1c6afdca0371cfa957079b36b78d12dd2cf5 upstream.
    
    The current number of requestor lines is limited to 31. This was an
    error of a previous commit, as this number is platform dependent, and is
    actually :
     - for pxa25x: 40 requestor lines
     - for pxa27x: 75 requestor lines
     - for pxa3xx: 100 requestor lines
    
    The previous testing did not reveal the faulty constant as on pxa[23]xx
    platforms, only camera, MSL and USB are above requestor 32, and in these
    only the camera has a driver using dma.
    
    Fixes: e87ffbdf0697 ("dmaengine: pxa_dma: fix the no-requestor case")
    Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Acked-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34c1b030296c6815c05e416c7a647b68e695004a
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Fri Mar 18 14:26:32 2016 +0200

    dmaengine: hsu: correct use of channel status register
    
    commit 4f4bc0abff79dc9d7ccbd3143adbf8ad1f4fe6ab upstream.
    
    There is a typo in documentation regarding to descriptor empty bit (DESCE)
    which is set to 1 when descriptor is empty. Thus, status register at the end of
    a transfer usually returns all DESCE bits set and thus it will never be zero.
    
    Moreover, there are 2 bits (CDESC) that encode current descriptor, on which
    interrupt has been asserted. In case when we have few descriptors programmed we
    might have non-zero value.
    
    Remove DESCE and CDESC bits from DMA channel status register (HSU_CH_SR) when
    reading it.
    
    Fixes: 2b49e0c56741 ("dmaengine: append hsu DMA driver")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42e6f01a44fe4aab28819b5efa48fbe9da3059e5
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Fri Apr 8 16:22:17 2016 +0300

    dmaengine: dw: fix master selection
    
    commit 3fe6409c23e2bee4b2b1b6d671d2da8daa15271c upstream.
    
    The commit 895005202987 ("dmaengine: dw: apply both HS interfaces and remove
    slave_id usage") cleaned up the code to avoid usage of depricated slave_id
    member of generic slave configuration.
    
    Meanwhile it broke the master selection by removing important call to
    dwc_set_masters() in ->device_alloc_chan_resources() which copied masters from
    custom slave configuration to the internal channel structure.
    
    Everything works until now since there is no customized connection of
    DesignWare DMA IP to the bus, i.e. one bus and one or more masters are in use.
    The configurations where 2 masters are connected to the different masters are
    not working anymore. We are expecting one user of such configuration and need
    to select masters properly. Besides that it is obviously a performance
    regression since only one master is in use in multi-master configuration.
    
    Select masters in accordance with what user asked for. Keep this patch in a form
    more suitable for back porting.
    
    We are safe to take necessary data in ->device_alloc_chan_resources() because
    we don't support generic slave configuration embedded into custom one, and thus
    the only way to provide such is to use the parameter to a filter function which
    is called exactly before channel resource allocation.
    
    While here, replase BUG_ON to less noisy dev_warn() and prevent channel
    allocation in case of error.
    
    Fixes: 895005202987 ("dmaengine: dw: apply both HS interfaces and remove slave_id usage")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b3bd581a0492bdfe788539ca65a14da570faad1
Author: Seth Forshee <seth.forshee@canonical.com>
Date:   Wed Mar 9 09:18:07 2016 -0600

    debugfs: Make automount point inodes permanently empty
    
    commit 87243deb88671f70def4c52dfa7ca7830707bd31 upstream.
    
    Starting with 4.1 the tracing subsystem has its own filesystem
    which is automounted in the tracing subdirectory of debugfs.
    Prior to this debugfs could be bind mounted in a cloned mount
    namespace, but if tracefs has been mounted under debugfs this
    now fails because there is a locked child mount. This creates
    a regression for container software which bind mounts debugfs
    to satisfy the assumption of some userspace software.
    
    In other pseudo filesystems such as proc and sysfs we're already
    creating mountpoints like this in such a way that no dirents can
    be created in the directories, allowing them to be exceptions to
    some MNT_LOCKED tests. In fact we're already do this for the
    tracefs mountpoint in sysfs.
    
    Do the same in debugfs_create_automount(), since the intention
    here is clearly to create a mountpoint. This fixes the regression,
    as locked child mounts on permanently empty directories do not
    cause a bind mount to fail.
    
    Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
    Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed643d220692bfc2bfec9fe618d102f13a5dae9f
Author: Rui Salvaterra <rsalvaterra@gmail.com>
Date:   Sat Apr 9 22:05:34 2016 +0100

    lib: lz4: fixed zram with lz4 on big endian machines
    
    commit 3e26a691fe3fe1e02a76e5bab0c143ace4b137b4 upstream.
    
    Based on Sergey's test patch [1], this fixes zram with lz4 compression
    on big endian cpus.
    
    Note that the 64-bit preprocessor test is not a cleanup, it's part of
    the fix, since those identifiers are bogus (for example, __ppc64__
    isn't defined anywhere else in the kernel, which means we'd fall into
    the 32-bit definitions on ppc64).
    
    Tested on ppc64 with no regression on x86_64.
    
    [1] http://marc.info/?l=linux-kernel&m=145994470805853&w=4
    
    Suggested-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
    Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be5cbaf31cd318f8aaeeff901f6d27232dfa965f
Author: Ahmed Samy <f.fallen45@gmail.com>
Date:   Sun Apr 17 05:37:09 2016 +0000

    dm cache metadata: fix cmd_read_lock() acquiring write lock
    
    commit 6545b60baaf880b0cd29a5e89dbe745a06027e89 upstream.
    
    Commit 9567366fefdd ("dm cache metadata: fix READ_LOCK macros and
    cleanup WRITE_LOCK macros") uses down_write() instead of down_read() in
    cmd_read_lock(), yet up_read() is used to release the lock in
    READ_UNLOCK().  Fix it.
    
    Fixes: 9567366fefdd ("dm cache metadata: fix READ_LOCK macros and cleanup WRITE_LOCK macros")
    Signed-off-by: Ahmed Samy <f.fallen45@gmail.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d58f322ee18ffaca1e0b67d90ab811ad75e62a6
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Tue Apr 12 12:14:46 2016 -0400

    dm cache metadata: fix READ_LOCK macros and cleanup WRITE_LOCK macros
    
    commit 9567366fefddeaea4ed1d713270535d93a3b3c76 upstream.
    
    The READ_LOCK macro was incorrectly returning -EINVAL if
    dm_bm_is_read_only() was true -- it will always be true once the cache
    metadata transitions to read-only by dm_cache_metadata_set_read_only().
    
    Wrap READ_LOCK and WRITE_LOCK multi-statement macros in do {} while(0).
    Also, all accesses of the 'cmd' argument passed to these related macros
    are now encapsulated in parenthesis.
    
    A follow-up patch can be developed to eliminate the use of macros in
    favor of pure C code.  Avoiding that now given that this needs to apply
    to stable@.
    
    Reported-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Fixes: d14fcf3dd79 ("dm cache: make sure every metadata function checks fail_io")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4c7ab76586146820b394e0176f286f5a2e70cb3
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Thu Apr 14 17:01:17 2016 +0200

    usb: gadget: f_fs: Fix use-after-free
    
    commit 38740a5b87d53ceb89eb2c970150f6e94e00373a upstream.
    
    When using asynchronous read or write operations on the USB endpoints the
    issuer of the IO request is notified by calling the ki_complete() callback
    of the submitted kiocb when the URB has been completed.
    
    Calling this ki_complete() callback will free kiocb. Make sure that the
    structure is no longer accessed beyond that point, otherwise undefined
    behaviour might occur.
    
    Fixes: 2e4c7553cd6f ("usb: gadget: f_fs: add aio support")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95b9219e05dafdb76b0707e815e5314cc0cf91af
Author: Robert Dobrowolski <robert.dobrowolski@linux.intel.com>
Date:   Thu Mar 24 03:30:07 2016 -0700

    usb: hcd: out of bounds access in for_each_companion
    
    commit e86103a75705c7c530768f4ffaba74cf382910f2 upstream.
    
    On BXT platform Host Controller and Device Controller figure as
    same PCI device but with different device function. HCD should
    not pass data to Device Controller but only to Host Controllers.
    Checking if companion device is Host Controller, otherwise skip.
    
    Signed-off-by: Robert Dobrowolski <robert.dobrowolski@linux.intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0eb1e16bf9feb36441440b0bd9fb0ced0fcdfdb6
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Apr 8 16:25:10 2016 +0300

    xhci: fix 10 second timeout on removal of PCI hotpluggable xhci controllers
    
    commit 98d74f9ceaefc2b6c4a6440050163a83be0abede upstream.
    
    PCI hotpluggable xhci controllers such as some Alpine Ridge solutions will
    remove the xhci controller from the PCI bus when the last USB device is
    disconnected.
    
    Add a flag to indicate that the host is being removed to avoid queueing
    configure_endpoint commands for the dropped endpoints.
    For PCI hotplugged controllers this will prevent 5 second command timeouts
    For static xhci controllers the configure_endpoint command is not needed
    in the removal case as everything will be returned, freed, and the
    controller is reset.
    
    For now the flag is only set for PCI connected host controllers.
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb6adb50beb03da007c63e86866f6be81d671075
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Fri Apr 8 16:25:09 2016 +0300

    usb: xhci: fix wild pointers in xhci_mem_cleanup
    
    commit 71504062a7c34838c3fccd92c447f399d3cb5797 upstream.
    
    This patch fixes some wild pointers produced by xhci_mem_cleanup.
    These wild pointers will cause system crash if xhci_mem_cleanup()
    is called twice.
    
    Reported-and-tested-by: Pengcheng Li <lpc.li@hisilicon.com>
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba7aa9a970dc12054252042e2b30e1dedcdc5968
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Apr 8 16:25:06 2016 +0300

    xhci: resume USB 3 roothub first
    
    commit 671ffdff5b13314b1fc65d62cf7604b873fb5dc4 upstream.
    
    Give USB3 devices a better chance to enumerate at USB 3 speeds if
    they are connected to a suspended host.
    Solves an issue with NEC uPD720200 host hanging when partially
    enumerating a USB3 device as USB2 after host controller runtime resume.
    
    Tested-by: Mike Murdoch <main.haarp@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a20c0a043a73e39b5cd952d7eaf7fd7831e73ac
Author: Rafal Redzimski <rafal.f.redzimski@intel.com>
Date:   Fri Apr 8 16:25:05 2016 +0300

    usb: xhci: applying XHCI_PME_STUCK_QUIRK to Intel BXT B0 host
    
    commit 0d46faca6f887a849efb07c1655b5a9f7c288b45 upstream.
    
    Broxton B0 also requires XHCI_PME_STUCK_QUIRK.
    Adding PCI device ID for Broxton B and adding to quirk.
    
    Signed-off-by: Rafal Redzimski <rafal.f.redzimski@intel.com>
    Signed-off-by: Robert Dobrowolski <robert.dobrowolski@linux.intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6905c7a4aa1ef675825bc2ab56fd965a573ffb74
Author: Jerome Marchand <jmarchan@redhat.com>
Date:   Wed Apr 6 14:06:48 2016 +0100

    assoc_array: don't call compare_object() on a node
    
    commit 8d4a2ec1e0b41b0cf9a0c5cd4511da7f8e4f3de2 upstream.
    
    Changes since V1: fixed the description and added KASan warning.
    
    In assoc_array_insert_into_terminal_node(), we call the
    compare_object() method on all non-empty slots, even when they're
    not leaves, passing a pointer to an unexpected structure to
    compare_object(). Currently it causes an out-of-bound read access
    in keyring_compare_object detected by KASan (see below). The issue
    is easily reproduced with keyutils testsuite.
    Only call compare_object() when the slot is a leave.
    
    KASan warning:
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in keyring_compare_object+0x213/0x240 at addr ffff880060a6f838
    Read of size 8 by task keyctl/1655
    =============================================================================
    BUG kmalloc-192 (Not tainted): kasan: bad access detected
    -----------------------------------------------------------------------------
    
    Disabling lock debugging due to kernel taint
    INFO: Allocated in assoc_array_insert+0xfd0/0x3a60 age=69 cpu=1 pid=1647
    	___slab_alloc+0x563/0x5c0
    	__slab_alloc+0x51/0x90
    	kmem_cache_alloc_trace+0x263/0x300
    	assoc_array_insert+0xfd0/0x3a60
    	__key_link_begin+0xfc/0x270
    	key_create_or_update+0x459/0xaf0
    	SyS_add_key+0x1ba/0x350
    	entry_SYSCALL_64_fastpath+0x12/0x76
    INFO: Slab 0xffffea0001829b80 objects=16 used=8 fp=0xffff880060a6f550 flags=0x3fff8000004080
    INFO: Object 0xffff880060a6f740 @offset=5952 fp=0xffff880060a6e5d1
    
    Bytes b4 ffff880060a6f730: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    Object ffff880060a6f740: d1 e5 a6 60 00 88 ff ff 0e 00 00 00 00 00 00 00  ...`............
    Object ffff880060a6f750: 02 cf 8e 60 00 88 ff ff 02 c0 8e 60 00 88 ff ff  ...`.......`....
    Object ffff880060a6f760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    Object ffff880060a6f770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    Object ffff880060a6f780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    Object ffff880060a6f790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    Object ffff880060a6f7a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    Object ffff880060a6f7b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    Object ffff880060a6f7c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    Object ffff880060a6f7d0: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    Object ffff880060a6f7e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    Object ffff880060a6f7f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    CPU: 0 PID: 1655 Comm: keyctl Tainted: G    B           4.5.0-rc4-kasan+ #291
    Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
     0000000000000000 000000001b2800b4 ffff880060a179e0 ffffffff81b60491
     ffff88006c802900 ffff880060a6f740 ffff880060a17a10 ffffffff815e2969
     ffff88006c802900 ffffea0001829b80 ffff880060a6f740 ffff880060a6e650
    Call Trace:
     [<ffffffff81b60491>] dump_stack+0x85/0xc4
     [<ffffffff815e2969>] print_trailer+0xf9/0x150
     [<ffffffff815e9454>] object_err+0x34/0x40
     [<ffffffff815ebe50>] kasan_report_error+0x230/0x550
     [<ffffffff819949be>] ? keyring_get_key_chunk+0x13e/0x210
     [<ffffffff815ec62d>] __asan_report_load_n_noabort+0x5d/0x70
     [<ffffffff81994cc3>] ? keyring_compare_object+0x213/0x240
     [<ffffffff81994cc3>] keyring_compare_object+0x213/0x240
     [<ffffffff81bc238c>] assoc_array_insert+0x86c/0x3a60
     [<ffffffff81bc1b20>] ? assoc_array_cancel_edit+0x70/0x70
     [<ffffffff8199797d>] ? __key_link_begin+0x20d/0x270
     [<ffffffff8199786c>] __key_link_begin+0xfc/0x270
     [<ffffffff81993389>] key_create_or_update+0x459/0xaf0
     [<ffffffff8128ce0d>] ? trace_hardirqs_on+0xd/0x10
     [<ffffffff81992f30>] ? key_type_lookup+0xc0/0xc0
     [<ffffffff8199e19d>] ? lookup_user_key+0x13d/0xcd0
     [<ffffffff81534763>] ? memdup_user+0x53/0x80
     [<ffffffff819983ea>] SyS_add_key+0x1ba/0x350
     [<ffffffff81998230>] ? key_get_type_from_user.constprop.6+0xa0/0xa0
     [<ffffffff828bcf4e>] ? retint_user+0x18/0x23
     [<ffffffff8128cc7e>] ? trace_hardirqs_on_caller+0x3fe/0x580
     [<ffffffff81004017>] ? trace_hardirqs_on_thunk+0x17/0x19
     [<ffffffff828bc432>] entry_SYSCALL_64_fastpath+0x12/0x76
    Memory state around the buggy address:
     ffff880060a6f700: fc fc fc fc fc fc fc fc 00 00 00 00 00 00 00 00
     ffff880060a6f780: 00 00 00 00 00 00 00 00 00 00 00 fc fc fc fc fc
    >ffff880060a6f800: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                                            ^
     ffff880060a6f880: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff880060a6f900: fc fc fc fc fc fc 00 00 00 00 00 00 00 00 00 00
    ==================================================================
    
    Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 882e790b572a7dadf5323e373d0139bfbc6dce15
Author: Lokesh Vutla <lokeshvutla@ti.com>
Date:   Sat Mar 26 23:08:55 2016 -0600

    ARM: OMAP2+: hwmod: Fix updating of sysconfig register
    
    commit 3ca4a238106dedc285193ee47f494a6584b6fd2f upstream.
    
    Commit 127500ccb766f ("ARM: OMAP2+: Only write the sysconfig on idle
    when necessary") talks about verification of sysconfig cache value before
    updating it, only during idle path. But the patch is adding the
    verification in the enable path. So, adding the check in a proper place
    as per the commit description.
    
    Not keeping this check during enable path as there is a chance of losing
    context and it is safe to do on idle as the context of the register will
    never be lost while the device is active.
    
    Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
    Acked-by: Tero Kristo <t-kristo@ti.com>
    Cc: Jon Hunter <jonathanh@nvidia.com>
    Fixes: commit 127500ccb766 "ARM: OMAP2+: Only write the sysconfig on idle when necessary"
    [paul@pwsan.com: appears to have been caused by my own mismerge of the
     originally posted patch]
    Signed-off-by: Paul Walmsley <paul@pwsan.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81b5ed00246258100df11c87f118a27f0ebceba3
Author: Nishanth Menon <nm@ti.com>
Date:   Fri Mar 11 10:12:28 2016 -0600

    ARM: OMAP2: Fix up interconnect barrier initialization for DRA7
    
    commit 456e8d53482537616899a146b706eccd095404e6 upstream.
    
    The following commits:
    commit 3fa609755c11 ("ARM: omap2: restore OMAP4 barrier behaviour")
    commit f746929ffdc8 ("Revert "ARM: OMAP4: remove dead kconfig option OMAP4_ERRATA_I688"")
    and
    commit ea827ad5ffbb ("ARM: DRA7: Provide proper IO map table")
    came in around the same time, unfortunately this seem to have missed
    initializing the barrier for DRA7 platforms - omap5_map_io was reused
    for dra7 till it was split out by the last patch. barrier_init
    needs to be hence carried forward as it is valid for DRA7 family of
    processors as they are for OMAP5.
    
    Fixes: ea827ad5ffbb7 ("ARM: DRA7: Provide proper IO map table")
    Reported-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Reported-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Nishanth Menon <nm@ti.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6cf3b71df047f61b568795fe926f107806eae82
Author: Patrick Uiterwijk <patrick@puiterwijk.org>
Date:   Tue Mar 29 16:57:40 2016 +0000

    ARM: mvebu: Correct unit address for linksys
    
    commit 199831c77c50e6913e893b6bc268ba9f4a9a2bf8 upstream.
    
    The USB2 port for Armada 38x is defined to be at 58000, not at
    50000.
    
    Fixes: 2d0a7addbd10 ("ARM: Kirkwood: Add support for many Synology NAS devices")
    Signed-off-by: Patrick Uiterwijk <patrick@puiterwijk.org>
    Acked-by: Imre Kaloz <kaloz@openwrt.org>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bb48b5f95a9e40451e259e295d03cd301740440
Author: Lokesh Vutla <lokeshvutla@ti.com>
Date:   Tue Mar 8 12:24:35 2016 +0530

    ARM: dts: AM43x-epos: Fix clk parent for synctimer
    
    commit cfe1580a6415bc37fd62d79eb8102a618f7650b2 upstream.
    
    commit 55ee7017ee31 ("arm: omap2: board-generic: use omap4_local_timer_init
    for AM437x") makes synctimer32k as the clocksource on AM43xx. By default
    the synctimer32k is clocked by 32K RTC OSC on AM43xx. But this 32K RTC OSC
    is not available on epos boards which makes it fail to boot.
    
    Synctimer32k can also be clocked by a peripheral PLL, so making this as
    clock parent for synctimer3k on epos boards.
    
    Fixes: 55ee7017ee31 ("arm: omap2: board-generic: use omap4_local_timer_init for AM437x")
    Reported-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5716a93fef70b4d305e9b3afea50c3027d22cc3c
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Wed Apr 6 09:37:22 2016 +0100

    KVM: arm/arm64: Handle forward time correction gracefully
    
    commit 1c5631c73fc2261a5df64a72c155cb53dcdc0c45 upstream.
    
    On a host that runs NTP, corrections can have a direct impact on
    the background timer that we program on the behalf of a vcpu.
    
    In particular, NTP performing a forward correction will result in
    a timer expiring sooner than expected from a guest point of view.
    Not a big deal, we kick the vcpu anyway.
    
    But on wake-up, the vcpu thread is going to perform a check to
    find out whether or not it should block. And at that point, the
    timer check is going to say "timer has not expired yet, go back
    to sleep". This results in the timer event being lost forever.
    
    There are multiple ways to handle this. One would be record that
    the timer has expired and let kvm_cpu_has_pending_timer return
    true in that case, but that would be fairly invasive. Another is
    to check for the "short sleep" condition in the hrtimer callback,
    and restart the timer for the remaining time when the condition
    is detected.
    
    This patch implements the latter, with a bit of refactoring in
    order to avoid too much code duplication.
    
    Reported-by: Alexander Graf <agraf@suse.de>
    Reviewed-by: Alexander Graf <agraf@suse.de>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c8497d2035d95e4e26bdf6cec34150bfb972776
Author: David Matlack <dmatlack@google.com>
Date:   Wed Mar 30 12:24:47 2016 -0700

    kvm: x86: do not leak guest xcr0 into host interrupt handlers
    
    commit fc5b7f3bf1e1414bd4e91db6918c85ace0c873a5 upstream.
    
    An interrupt handler that uses the fpu can kill a KVM VM, if it runs
    under the following conditions:
     - the guest's xcr0 register is loaded on the cpu
     - the guest's fpu context is not loaded
     - the host is using eagerfpu
    
    Note that the guest's xcr0 register and fpu context are not loaded as
    part of the atomic world switch into "guest mode". They are loaded by
    KVM while the cpu is still in "host mode".
    
    Usage of the fpu in interrupt context is gated by irq_fpu_usable(). The
    interrupt handler will look something like this:
    
    if (irq_fpu_usable()) {
            kernel_fpu_begin();
    
            [... code that uses the fpu ...]
    
            kernel_fpu_end();
    }
    
    As long as the guest's fpu is not loaded and the host is using eager
    fpu, irq_fpu_usable() returns true (interrupted_kernel_fpu_idle()
    returns true). The interrupt handler proceeds to use the fpu with
    the guest's xcr0 live.
    
    kernel_fpu_begin() saves the current fpu context. If this uses
    XSAVE[OPT], it may leave the xsave area in an undesirable state.
    According to the SDM, during XSAVE bit i of XSTATE_BV is not modified
    if bit i is 0 in xcr0. So it's possible that XSTATE_BV[i] == 1 and
    xcr0[i] == 0 following an XSAVE.
    
    kernel_fpu_end() restores the fpu context. Now if any bit i in
    XSTATE_BV == 1 while xcr0[i] == 0, XRSTOR generates a #GP. The
    fault is trapped and SIGSEGV is delivered to the current process.
    
    Only pre-4.2 kernels appear to be vulnerable to this sequence of
    events. Commit 653f52c ("kvm,x86: load guest FPU context more eagerly")
    from 4.2 forces the guest's fpu to always be loaded on eagerfpu hosts.
    
    This patch fixes the bug by keeping the host's xcr0 loaded outside
    of the interrupts-disabled region where KVM switches into guest mode.
    
    Suggested-by: Andy Lutomirski <luto@amacapital.net>
    Signed-off-by: David Matlack <dmatlack@google.com>
    [Move load after goto cancel_injection. - Paolo]
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit adbe236b953f4537f9e5ce86d1c7ace613dec38c
Author: Tony Luck <tony.luck@intel.com>
Date:   Wed Apr 6 10:05:16 2016 +0200

    x86/mce: Avoid using object after free in genpool
    
    commit a3125494cff084b098c80bb36fbe2061ffed9d52 upstream.
    
    When we loop over all queued machine check error records to pass them
    to the registered notifiers we use llist_for_each_entry(). But the loop
    calls gen_pool_free() for the entry in the body of the loop - and then
    the iterator looks at node->next after the free.
    
    Use llist_for_each_entry_safe() instead.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Gong Chen <gong.chen@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Link: http://lkml.kernel.org/r/0205920@agluck-desk.sc.intel.com
    Link: http://lkml.kernel.org/r/1459929916-12852-4-git-send-email-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fed24fe30c1217c640d2b38403034c2c7fdce12
Author: Ming Lei <ming.lei@canonical.com>
Date:   Fri Apr 15 18:51:28 2016 +0800

    block: loop: fix filesystem corruption in case of aio/dio
    
    commit a7297a6a3a3322b054592e8e988981d2f5f29cc4 upstream.
    
    Starting from commit e36f620428(block: split bios to max possible length),
    block core starts to split bio in the middle of bvec.
    
    Unfortunately loop dio/aio doesn't consider this situation, and
    always treat 'iter.iov_offset' as zero. Then filesystem corruption
    is observed.
    
    This patch figures out the offset of the base bvevc via
    'bio->bi_iter.bi_bvec_done' and fixes the issue by passing the offset
    to iov iterator.
    
    Fixes: e36f6204288088f (block: split bios to max possible length)
    Cc: Keith Busch <keith.busch@intel.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ming Lei <ming.lei@canonical.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b616a05de88d4be0136156a26fae9da855939f6
Author: Ming Lei <ming.lei@canonical.com>
Date:   Wed Mar 30 08:46:31 2016 +0800

    block: partition: initialize percpuref before sending out KOBJ_ADD
    
    commit b30a337ca27c4f40439e4bfb290cba5f88d73bb7 upstream.
    
    The initialization of partition's percpu_ref should have been done before
    sending out KOBJ_ADD uevent, which may cause userspace to read partition
    table. So the uninitialized percpu_ref may be accessed in data path.
    
    This patch fixes this issue reported by Naveen.
    
    Reported-by: Naveen Kaje <nkaje@codeaurora.org>
    Tested-by: Naveen Kaje <nkaje@codeaurora.org>
    Fixes: 6c71013ecb7e2(block: partition: convert percpu ref)
    Signed-off-by: Ming Lei <ming.lei@canonical.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>