commit 849a2d3d9be31368559e6852cf64d749e6903818
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Jan 31 11:26:51 2016 -0800

    Linux 4.3.5

commit 20dd9f8a9571de8458a378036a49eac9ca1a43af
Author: libin <huawei.libin@huawei.com>
Date:   Tue Nov 3 08:58:47 2015 +0800

    recordmcount: Fix endianness handling bug for nop_mcount
    
    commit c84da8b9ad3761eef43811181c7e896e9834b26b upstream.
    
    In nop_mcount, shdr->sh_offset and welp->r_offset should handle
    endianness properly, otherwise it will trigger Segmentation fault
    if the recordmcount main and file.o have different endianness.
    
    Link: http://lkml.kernel.org/r/563806C7.7070606@huawei.com
    
    Signed-off-by: Li Bin <huawei.libin@huawei.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a92b707f6021be4d751cf5c1bfa8d41ba5ed507
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Wed Jan 13 14:50:03 2016 +0000

    arm64: kernel: fix architected PMU registers unconditional access
    
    commit f436b2ac90a095746beb6729b8ee8ed87c9eaede upstream.
    
    The Performance Monitors extension is an optional feature of the
    AArch64 architecture, therefore, in order to access Performance
    Monitors registers safely, the kernel should detect the architected
    PMU unit presence through the ID_AA64DFR0_EL1 register PMUVer field
    before accessing them.
    
    This patch implements a guard by reading the ID_AA64DFR0_EL1 register
    PMUVer field to detect the architected PMU presence and prevent accessing
    PMU system registers if the Performance Monitors extension is not
    implemented in the core.
    
    Cc: Peter Maydell <peter.maydell@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Fixes: 60792ad349f3 ("arm64: kernel: enforce pmuserenr_el0 initialization and restore")
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1986f0d3a177698612254e09ff2af7bf9e69c801
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Mon Nov 16 10:28:18 2015 +0000

    arm64: KVM: Add workaround for Cortex-A57 erratum 834220
    
    commit 498cd5c32be6e32bc0f8efcad48ab094bb2bfdf3 upstream.
    
    Cortex-A57 parts up to r1p2 can misreport Stage 2 translation faults
    when a Stage 1 permission fault or device alignment fault should
    have been reported.
    
    This patch implements the workaround (which is to validate that the
    Stage-1 translation actually succeeds) by using code patching.
    
    Reviewed-by: Will Deacon <will.deacon@arm.com>
    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 dfd463610632de5cba2216fd56972b560062f46c
Author: Yang Shi <yang.shi@linaro.org>
Date:   Wed Nov 18 10:48:55 2015 -0800

    arm64: restore bogomips information in /proc/cpuinfo
    
    commit 92e788b749862ebe9920360513a718e5dd4da7a9 upstream.
    
    As previously reported, some userspace applications depend on bogomips
    showed by /proc/cpuinfo. Although there is much less legacy impact on
    aarch64 than arm, it does break libvirt.
    
    This patch reverts commit 326b16db9f69 ("arm64: delay: don't bother
    reporting bogomips in /proc/cpuinfo"), but with some tweak due to
    context change and without the pr_info().
    
    Fixes: 326b16db9f69 ("arm64: delay: don't bother reporting bogomips in /proc/cpuinfo")
    Signed-off-by: Yang Shi <yang.shi@linaro.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Cc: <stable@vger.kernel.org> # 3.12+
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5e01c69fbd3029ba69b4ea807a0d365ba21efa6
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Nov 28 08:52:04 2015 -0800

    mn10300: Select CONFIG_HAVE_UID16 to fix build failure
    
    commit c86576ea114a9a881cf7328dc7181052070ca311 upstream.
    
    mn10300 builds fail with
    
    fs/stat.c: In function 'cp_old_stat':
    fs/stat.c:163:2: error: 'old_uid_t' undeclared
    
    ipc/util.c: In function 'ipc64_perm_to_ipc_perm':
    ipc/util.c:540:2: error: 'old_uid_t' undeclared
    
    Select CONFIG_HAVE_UID16 and remove local definition of CONFIG_UID16
    to fix the problem.
    
    Fixes: fbc416ff8618 ("arm64: fix building without CONFIG_UID16")
    Cc: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Acked-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb5cfacf626064f41d8fc1a9d5bf51f02bbfdd78
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue Dec 8 12:22:47 2015 -0500

    fix the regression from "direct-io: Fix negative return from dio read beyond eof"
    
    commit 2d4594acbf6d8f75a27f3578476b6a27d8b13ebb upstream.
    
    Sure, it's better to bail out of past-the-eof read and return 0 than return
    a bogus negative value on such.  Only we'd better make sure we are bailing out
    with 0 and not -ENOMEM...
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c8c46046edba54532225f61291ecc162d24cf70
Author: Jan Kara <jack@suse.cz>
Date:   Mon Nov 30 10:15:42 2015 -0700

    direct-io: Fix negative return from dio read beyond eof
    
    commit 74cedf9b6c603f2278a05bc91b140b32b434d0b5 upstream.
    
    Assume a filesystem with 4KB blocks. When a file has size 1000 bytes and
    we issue direct IO read at offset 1024, blockdev_direct_IO() reads the
    tail of the last block and the logic for handling short DIO reads in
    dio_complete() results in a return value -24 (1000 - 1024) which
    obviously confuses userspace.
    
    Fix the problem by bailing out early once we sample i_size and can
    reliably check that direct IO read starts beyond i_size.
    
    Reported-by: Avi Kivity <avi@scylladb.com>
    Fixes: 9fe55eea7e4b444bafc42fa0000cc2d1d2847275
    CC: Steven Whitehouse <swhiteho@redhat.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42debcb0815cfdf8c1a5e5c40eb71f6c2547c432
Author: Salva Peiró <speirofr@gmail.com>
Date:   Wed Oct 7 07:09:26 2015 -0300

    media/vivid-osd: fix info leak in ioctl
    
    commit eda98796aff0d9bf41094b06811f5def3b4c333c upstream.
    
    The vivid_fb_ioctl() code fails to initialize the 16 _reserved bytes of
    struct fb_vblank after the ->hcount member. Add an explicit
    memset(0) before filling the structure to avoid the info leak.
    
    Signed-off-by: Salva Peiró <speirofr@gmail.com>
    Signed-off-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 1744494e0402065fcff7e79239177f79f79a0c4b
Author: Al Viro <viro@ZenIV.linux.org.uk>
Date:   Tue Dec 1 19:52:12 2015 +0000

    staging: lustre: echo_copy.._lsm() dereferences userland pointers directly
    
    commit 9225c0b7b976dd9ceac2b80727a60d8fcb906a62 upstream.
    
    missing get_user()
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4c6b7a1214bddfa00a5c40e7012966a37560ffd
Author: Richard Purdie <richard.purdie@linuxfoundation.org>
Date:   Fri Sep 18 16:31:33 2015 -0700

    HID: core: Avoid uninitialized buffer access
    
    commit 79b568b9d0c7c5d81932f4486d50b38efdd6da6d upstream.
    
    hid_connect adds various strings to the buffer but they're all
    conditional. You can find circumstances where nothing would be written
    to it but the kernel will still print the supposedly empty buffer with
    printk. This leads to corruption on the console/in the logs.
    
    Ensure buf is initialized to an empty string.
    
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
    [dvhart: Initialize string to "" rather than assign buf[0] = NULL;]
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: linux-input@vger.kernel.org
    Signed-off-by: Darren Hart <dvhart@linux.intel.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8dfd6a268ee33048a30fc493fa75f0bc2f96e3c
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Wed Oct 7 16:54:22 2015 -0700

    HID: wacom: Expect 'touch_max' touches if HID_DG_CONTACTCOUNT not present
    
    commit df7079380554e6e8e13a0812c7e6c72f669aba5c upstream.
    
    When introduced in commit 1b5d514, the check 'if (hid_data->cc_index >= 0)'
    in 'wacom_wac_finger_pre_report' was intended to switch where the driver
    got the expected number of contacts from: HID_DG_CONTACTCOUNT if the usage
    was present, or 'touch_max' otherwise. Unfortunately, an oversight worthy
    of a brown paper bag (specifically, that 'cc_index' could never be negative)
    meant that the latter 'else' clause would never be entered.
    
    The patch prior to this one introduced a way for 'cc_index' to be negative,
    but only if HID_DG_CONTACTCOUNT is present in some report _other_ than the
    one being processed. To ensure the 'else' clause is also entered for devices
    which don't have HID_DG_CONTACTCOUNT on _any_ report, we add the additional
    constraint that 'cc_report' be non-zero (which is true only if the usage is
    present in some report).
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4fb5b5240132170cd176845086085c213f6d9cf5
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Wed Oct 7 16:54:21 2015 -0700

    HID: wacom: Tie cached HID_DG_CONTACTCOUNT indices to report ID
    
    commit 499522c8c015de995aabce3d0f0bf4b9b17f44c3 upstream.
    
    The cached indicies 'cc_index' and 'cc_value_index' introduced in 1b5d514
    are only valid for a single report ID. If a touchscreen has multiple
    reports with a HID_DG_CONTACTCOUNT usage, its possible that the values
    will not be correct for the report we're handling, resulting in an
    incorrect value for 'num_expected'. This has been observed with the Cintiq
    Companion 2.
    
    To address this, we store the ID of the report those indicies are valid
    for in a new  'cc_report' variable. Before using them to get the expected
    contact count, we first check if the ID of the report we're processing
    matches 'cc_report'. If it doesn't, we update the indicies to point to
    the HID_DG_CONTACTCOUNT usage of the current report (if it has one).
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3016b876d0b746eaf78ec0a33a15d19fa0fdb469
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Mon Nov 30 14:47:46 2015 -0500

    parisc iommu: fix panic due to trying to allocate too large region
    
    commit e46e31a3696ae2d66f32c207df3969613726e636 upstream.
    
    When using the Promise TX2+ SATA controller on PA-RISC, the system often
    crashes with kernel panic, for example just writing data with the dd
    utility will make it crash.
    
    Kernel panic - not syncing: drivers/parisc/sba_iommu.c: I/O MMU @ 000000000000a000 is out of mapping resources
    
    CPU: 0 PID: 18442 Comm: mkspadfs Not tainted 4.4.0-rc2 #2
    Backtrace:
     [<000000004021497c>] show_stack+0x14/0x20
     [<0000000040410bf0>] dump_stack+0x88/0x100
     [<000000004023978c>] panic+0x124/0x360
     [<0000000040452c18>] sba_alloc_range+0x698/0x6a0
     [<0000000040453150>] sba_map_sg+0x260/0x5b8
     [<000000000c18dbb4>] ata_qc_issue+0x264/0x4a8 [libata]
     [<000000000c19535c>] ata_scsi_translate+0xe4/0x220 [libata]
     [<000000000c19a93c>] ata_scsi_queuecmd+0xbc/0x320 [libata]
     [<0000000040499bbc>] scsi_dispatch_cmd+0xfc/0x130
     [<000000004049da34>] scsi_request_fn+0x6e4/0x970
     [<00000000403e95a8>] __blk_run_queue+0x40/0x60
     [<00000000403e9d8c>] blk_run_queue+0x3c/0x68
     [<000000004049a534>] scsi_run_queue+0x2a4/0x360
     [<000000004049be68>] scsi_end_request+0x1a8/0x238
     [<000000004049de84>] scsi_io_completion+0xfc/0x688
     [<0000000040493c74>] scsi_finish_command+0x17c/0x1d0
    
    The cause of the crash is not exhaustion of the IOMMU space, there is
    plenty of free pages. The function sba_alloc_range is called with size
    0x11000, thus the pages_needed variable is 0x11. The function
    sba_search_bitmap is called with bits_wanted 0x11 and boundary size is
    0x10 (because dma_get_seg_boundary(dev) returns 0xffff).
    
    The function sba_search_bitmap attempts to allocate 17 pages that must not
    cross 16-page boundary - it can't satisfy this requirement
    (iommu_is_span_boundary always returns true) and fails even if there are
    many free entries in the IOMMU space.
    
    How did it happen that we try to allocate 17 pages that don't cross
    16-page boundary? The cause is in the function iommu_coalesce_chunks. This
    function tries to coalesce adjacent entries in the scatterlist. The
    function does several checks if it may coalesce one entry with the next,
    one of those checks is this:
    
    	if (startsg->length + dma_len > max_seg_size)
    		break;
    
    When it finishes coalescing adjacent entries, it allocates the mapping:
    
    sg_dma_len(contig_sg) = dma_len;
    dma_len = ALIGN(dma_len + dma_offset, IOVP_SIZE);
    sg_dma_address(contig_sg) =
    	PIDE_FLAG
    	| (iommu_alloc_range(ioc, dev, dma_len) << IOVP_SHIFT)
    	| dma_offset;
    
    It is possible that (startsg->length + dma_len > max_seg_size) is false
    (we are just near the 0x10000 max_seg_size boundary), so the funcion
    decides to coalesce this entry with the next entry. When the coalescing
    succeeds, the function performs
    	dma_len = ALIGN(dma_len + dma_offset, IOVP_SIZE);
    And now, because of non-zero dma_offset, dma_len is greater than 0x10000.
    iommu_alloc_range (a pointer to sba_alloc_range) is called and it attempts
    to allocate 17 pages for a device that must not cross 16-page boundary.
    
    To fix the bug, we must make sure that dma_len after addition of
    dma_offset and alignment doesn't cross the segment boundary. I.e. change
    	if (startsg->length + dma_len > max_seg_size)
    		break;
    to
    	if (ALIGN(dma_len + dma_offset + startsg->length, IOVP_SIZE) > max_seg_size)
    		break;
    
    This patch makes this change (it precalculates max_seg_boundary at the
    beginning of the function iommu_coalesce_chunks). I also added a check
    that the mapping length doesn't exceed dma_get_seg_boundary(dev) (it is
    not needed for Promise TX2+ SATA, but it may be needed for other devices
    that have dma_get_seg_boundary lower than dma_get_max_seg_size).
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24347f2e933cf73d66b25ec55f49bdceb2c20b8d
Author: David Woodhouse <David.Woodhouse@intel.com>
Date:   Thu Oct 15 09:28:06 2015 +0100

    iommu/vt-d: Fix ATSR handling for Root-Complex integrated endpoints
    
    commit d14053b3c714178525f22660e6aaf41263d00056 upstream.
    
    The VT-d specification says that "Software must enable ATS on endpoint
    devices behind a Root Port only if the Root Port is reported as
    supporting ATS transactions."
    
    We walk up the tree to find a Root Port, but for integrated devices we
    don't find one — we get to the host bridge. In that case we *should*
    allow ATS. Currently we don't, which means that we are incorrectly
    failing to use ATS for the integrated graphics. Fix that.
    
    We should never break out of this loop "naturally" with bus==NULL,
    since we'll always find bridge==NULL in that case (and now return 1).
    
    So remove the check for (!bridge) after the loop, since it can never
    happen. If it did, it would be worthy of a BUG_ON(!bridge). But since
    it'll oops anyway in that case, that'll do just as well.
    
    Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f7368532da8d9df006cd5382d6b923e5b10cafb
Author: Will Deacon <will.deacon@arm.com>
Date:   Tue Oct 13 17:51:14 2015 +0100

    iommu/arm-smmu: Fix error checking for ASID and VMID allocation
    
    commit c0733a2cf30c1e7923b6ad4f8df67941502923de upstream.
    
    The bitmap allocator returns an int, which is one of the standard
    negative values on failure. Rather than assigning this straight to a
    u16 (like we do for the ASID and VMID callers), which means that we
    won't detect failure correctly, use an int for the purposes of error
    checking.
    
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2d39a3b91628ef5abdf58e83905b173e63d5ecf
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Fri Dec 18 10:35:54 2015 +0000

    arm64: kernel: enforce pmuserenr_el0 initialization and restore
    
    commit 60792ad349f3c6dc5735aafefe5dc9121c79e320 upstream.
    
    The pmuserenr_el0 register value is architecturally UNKNOWN on reset.
    Current kernel code resets that register value iff the core pmu device is
    correctly probed in the kernel. On platforms with missing DT pmu nodes (or
    disabled perf events in the kernel), the pmu is not probed, therefore the
    pmuserenr_el0 register is not reset in the kernel, which means that its
    value retains the reset value that is architecturally UNKNOWN (system
    may run with eg pmuserenr_el0 == 0x1, which means that PMU counters access
    is available at EL0, which must be disallowed).
    
    This patch adds code that resets pmuserenr_el0 on cold boot and restores
    it on core resume from shutdown, so that the pmuserenr_el0 setup is
    always enforced in the kernel.
    
    Cc: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fcad06387d8d716abd18df09999a1703aeb854fa
Author: Will Deacon <will.deacon@arm.com>
Date:   Thu Dec 10 16:05:36 2015 +0000

    arm64: mm: ensure that the zero page is visible to the page table walker
    
    commit 32d6397805d00573ce1fa55f408ce2bca15b0ad3 upstream.
    
    In paging_init, we allocate the zero page, memset it to zero and then
    point TTBR0 to it in order to avoid speculative fetches through the
    identity mapping.
    
    In order to guarantee that the freshly zeroed page is indeed visible to
    the page table walker, we need to execute a dsb instruction prior to
    writing the TTBR.
    
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8c5c52608ff26f42c54069ae1004b46d47509c3
Author: John Blackwood <john.blackwood@ccur.com>
Date:   Mon Dec 7 11:50:34 2015 +0000

    arm64: Clear out any singlestep state on a ptrace detach operation
    
    commit 5db4fd8c52810bd9740c1240ebf89223b171aa70 upstream.
    
    Make sure to clear out any ptrace singlestep state when a ptrace(2)
    PTRACE_DETACH call is made on arm64 systems.
    
    Otherwise, the previously ptraced task will die off with a SIGTRAP
    signal if the debugger just previously singlestepped the ptraced task.
    
    Signed-off-by: John Blackwood <john.blackwood@ccur.com>
    [will: added comment to justify why this is in the arch code]
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3065fb497d4704de0c653ae3b70c79fd8e2878d
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Thu Dec 3 09:25:22 2015 +0100

    ARM/arm64: KVM: correct PTE uncachedness check
    
    commit 0de58f852875a0f0dcfb120bb8433e4e73c7803b upstream.
    
    Commit e6fab5442345 ("ARM/arm64: KVM: test properly for a PTE's
    uncachedness") modified the logic to test whether a HYP or stage-2
    mapping needs flushing, from [incorrectly] interpreting the page table
    attributes to [incorrectly] checking whether the PFN that backs the
    mapping is covered by host system RAM. The PFN number is part of the
    output of the translation, not the input, so we have to use pte_pfn()
    on the contents of the PTE, not __phys_to_pfn() on the HYP virtual
    address or stage-2 intermediate physical address.
    
    Fixes: e6fab5442345 ("ARM/arm64: KVM: test properly for a PTE's uncachedness")
    Tested-by: Pavel Fedin <p.fedin@samsung.com>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 838a91605b7fd973c7b4b88680f0012ab03f7ac4
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Nov 20 12:12:21 2015 +0100

    arm64: fix building without CONFIG_UID16
    
    commit fbc416ff86183e2203cdf975e2881d7c164b0271 upstream.
    
    As reported by Michal Simek, building an ARM64 kernel with CONFIG_UID16
    disabled currently fails because the system call table still needs to
    reference the individual function entry points that are provided by
    kernel/sys_ni.c in this case, and the declarations are hidden inside
    of #ifdef CONFIG_UID16:
    
    arch/arm64/include/asm/unistd32.h:57:8: error: 'sys_lchown16' undeclared here (not in a function)
     __SYSCALL(__NR_lchown, sys_lchown16)
    
    I believe this problem only exists on ARM64, because older architectures
    tend to not need declarations when their system call table is built
    in assembly code, while newer architectures tend to not need UID16
    support. ARM64 only uses these system calls for compatibility with
    32-bit ARM binaries.
    
    This changes the CONFIG_UID16 check into CONFIG_HAVE_UID16, which is
    set unconditionally on ARM64 with CONFIG_COMPAT, so we see the
    declarations whenever we need them, but otherwise the behavior is
    unchanged.
    
    Fixes: af1839eb4bd4 ("Kconfig: clean up the long arch list for the UID16 config option")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5dc8a8c79a51678ea1c40bc36ab46284f8494924
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Mon Nov 16 10:28:17 2015 +0000

    arm64: KVM: Fix AArch32 to AArch64 register mapping
    
    commit c0f0963464c24e034b858441205455bf2a5d93ad upstream.
    
    When running a 32bit guest under a 64bit hypervisor, the ARMv8
    architecture defines a mapping of the 32bit registers in the 64bit
    space. This includes banked registers that are being demultiplexed
    over the 64bit ones.
    
    On exceptions caused by an operation involving a 32bit register, the
    HW exposes the register number in the ESR_EL2 register. It was so
    far understood that SW had to distinguish between AArch32 and AArch64
    accesses (based on the current AArch32 mode and register number).
    
    It turns out that I misinterpreted the ARM ARM, and the clue is in
    D1.20.1: "For some exceptions, the exception syndrome given in the
    ESR_ELx identifies one or more register numbers from the issued
    instruction that generated the exception. Where the exception is
    taken from an Exception level using AArch32 these register numbers
    give the AArch64 view of the register."
    
    Which means that the HW is already giving us the translated version,
    and that we shouldn't try to interpret it at all (for example, doing
    an MMIO operation from the IRQ mode using the LR register leads to
    very unexpected behaviours).
    
    The fix is thus not to perform a call to vcpu_reg32() at all from
    vcpu_reg(), and use whatever register number is supplied directly.
    The only case we need to find out about the mapping is when we
    actively generate a register access, which only occurs when injecting
    a fault in a guest.
    
    Reviewed-by: Robin Murphy <robin.murphy@arm.com>
    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 b8691782772d00d7761cf298a1cc96420dd107a8
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Tue Nov 10 15:11:20 2015 +0100

    ARM/arm64: KVM: test properly for a PTE's uncachedness
    
    commit e6fab54423450d699a09ec2b899473a541f61971 upstream.
    
    The open coded tests for checking whether a PTE maps a page as
    uncached use a flawed '(pte_val(xxx) & CONST) != CONST' pattern,
    which is not guaranteed to work since the type of a mapping is
    not a set of mutually exclusive bits
    
    For HYP mappings, the type is an index into the MAIR table (i.e, the
    index itself does not contain any information whatsoever about the
    type of the mapping), and for stage-2 mappings it is a bit field where
    normal memory and device types are defined as follows:
    
        #define MT_S2_NORMAL            0xf
        #define MT_S2_DEVICE_nGnRE      0x1
    
    I.e., masking *and* comparing with the latter matches on the former,
    and we have been getting lucky merely because the S2 device mappings
    also have the PTE_UXN bit set, or we would misidentify memory mappings
    as device mappings.
    
    Since the unmap_range() code path (which contains one instance of the
    flawed test) is used both for HYP mappings and stage-2 mappings, and
    considering the difference between the two, it is non-trivial to fix
    this by rewriting the tests in place, as it would involve passing
    down the type of mapping through all the functions.
    
    However, since HYP mappings and stage-2 mappings both deal with host
    physical addresses, we can simply check whether the mapping is backed
    by memory that is managed by the host kernel, and only perform the
    D-cache maintenance if this is the case.
    
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Tested-by: Pavel Fedin <p.fedin@samsung.com>
    Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf8be9b335abf4d8f4248c2c9fe809a359fd55bb
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Tue Nov 17 11:50:51 2015 +0000

    arm64: kernel: pause/unpause function graph tracer in cpu_suspend()
    
    commit de818bd4522c40ea02a81b387d2fa86f989c9623 upstream.
    
    The function graph tracer adds instrumentation that is required to trace
    both entry and exit of a function. In particular the function graph
    tracer updates the "return address" of a function in order to insert
    a trace callback on function exit.
    
    Kernel power management functions like cpu_suspend() are called
    upon power down entry with functions called "finishers" that are in turn
    called to trigger the power down sequence but they may not return to the
    kernel through the normal return path.
    
    When the core resumes from low-power it returns to the cpu_suspend()
    function through the cpu_resume path, which leaves the trace stack frame
    set-up by the function tracer in an incosistent state upon return to the
    kernel when tracing is enabled.
    
    This patch fixes the issue by pausing/resuming the function graph
    tracer on the thread executing cpu_suspend() (ie the function call that
    subsequently triggers the "suspend finishers"), so that the function graph
    tracer state is kept consistent across functions that enter power down
    states and never return by effectively disabling graph tracer while they
    are executing.
    
    Fixes: 819e50e25d0c ("arm64: Add ftrace support")
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reported-by: Catalin Marinas <catalin.marinas@arm.com>
    Reported-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
    Suggested-by: Steven Rostedt <rostedt@goodmis.org>
    Acked-by: Steven Rostedt <rostedt@goodmis.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b656a6192abe212135e24504d0ed03aa192fef9
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Thu Nov 5 14:00:56 2015 +0000

    arm64: cmpxchg_dbl: fix return value type
    
    commit 57a65667991aaddef730b0c910111ab76a1ff245 upstream.
    
    The current arm64 __cmpxchg_double{_mb} implementations carry out the
    compare exchange by first comparing the old values passed in to the
    values read from the pointer provided and by stashing the cumulative
    bitwise difference in a 64-bit register.
    
    By comparing the register content against 0, it is possible to detect if
    the values read differ from the old values passed in, so that the compare
    exchange detects whether it has to bail out or carry on completing the
    operation with the exchange.
    
    Given the current implementation, to detect the cmpxchg operation
    status, the __cmpxchg_double{_mb} functions should return the 64-bit
    stashed bitwise difference so that the caller can detect cmpxchg failure
    by comparing the return value content against 0. The current implementation
    declares the return value as an int, which means that the 64-bit
    value stashing the bitwise difference is truncated before being
    returned to the __cmpxchg_double{_mb} callers, which means that
    any bitwise difference present in the top 32 bits goes undetected,
    triggering false positives and subsequent kernel failures.
    
    This patch fixes the issue by declaring the arm64 __cmpxchg_double{_mb}
    return values as a long, so that the bitwise difference is
    properly propagated on failure, restoring the expected behaviour.
    
    Fixes: e9a4b795652f ("arm64: cmpxchg_dbl: patch in lse instructions when supported by the CPU")
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e34dfef4d71f81477a37d22e7a156cd840bd3fd
Author: Zi Shen Lim <zlim.lnx@gmail.com>
Date:   Wed Nov 4 20:43:59 2015 -0800

    arm64: bpf: fix mod-by-zero case
    
    commit 14e589ff4aa3f28a5424e92b6495ecb8950080f7 upstream.
    
    Turns out in the case of modulo by zero in a BPF program:
    	A = A % X;  (X == 0)
    the expected behavior is to terminate with return value 0.
    
    The bug in JIT is exposed by a new test case [1].
    
    [1] https://lkml.org/lkml/2015/11/4/499
    
    Signed-off-by: Zi Shen Lim <zlim.lnx@gmail.com>
    Reported-by: Yang Shi <yang.shi@linaro.org>
    Reported-by: Xi Wang <xi.wang@gmail.com>
    CC: Alexei Starovoitov <ast@plumgrid.com>
    Fixes: e54bcde3d69d ("arm64: eBPF JIT compiler")
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e905b2536e6ab51356b581a03b92832d6a05db65
Author: Zi Shen Lim <zlim.lnx@gmail.com>
Date:   Tue Nov 3 22:56:44 2015 -0800

    arm64: bpf: fix div-by-zero case
    
    commit 251599e1d6906621f49218d7b474ddd159e58f3b upstream.
    
    In the case of division by zero in a BPF program:
    	A = A / X;  (X == 0)
    the expected behavior is to terminate with return value 0.
    
    This is confirmed by the test case introduced in commit 86bf1721b226
    ("test_bpf: add tests checking that JIT/interpreter sets A and X to 0.").
    
    Reported-by: Yang Shi <yang.shi@linaro.org>
    Tested-by: Yang Shi <yang.shi@linaro.org>
    CC: Xi Wang <xi.wang@gmail.com>
    CC: Alexei Starovoitov <ast@plumgrid.com>
    CC: linux-arm-kernel@lists.infradead.org
    CC: linux-kernel@vger.kernel.org
    Fixes: e54bcde3d69d ("arm64: eBPF JIT compiler")
    Signed-off-by: Zi Shen Lim <zlim.lnx@gmail.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18f936642fe1a3eaacb7c277c940d82a66f361e8
Author: Li Bin <huawei.libin@huawei.com>
Date:   Fri Oct 30 16:31:04 2015 +0800

    recordmcount: arm64: Replace the ignored mcount call into nop
    
    commit 2ee8a74f2a5da913637f75a19a0da0e7a08c0f86 upstream.
    
    By now, the recordmcount only records the function that in
    following sections:
    .text/.ref.text/.sched.text/.spinlock.text/.irqentry.text/
    .kprobes.text/.text.unlikely
    
    For the function that not in these sections, the call mcount
    will be in place and not be replaced when kernel boot up. And
    it will bring performance overhead, such as do_mem_abort (in
    .exception.text section). This patch make the call mcount to
    nop for this case in recordmcount.
    
    Link: http://lkml.kernel.org/r/1446019445-14421-1-git-send-email-huawei.libin@huawei.com
    Link: http://lkml.kernel.org/r/1446193864-24593-4-git-send-email-huawei.libin@huawei.com
    
    Cc: <lkp@intel.com>
    Cc: <catalin.marinas@arm.com>
    Cc: <takahiro.akashi@linaro.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Li Bin <huawei.libin@huawei.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96c81d0a768a895e4c95a66b2653be80c62337e7
Author: Ulrich Weigand <ulrich.weigand@de.ibm.com>
Date:   Tue Jan 12 23:14:23 2016 +1100

    powerpc/module: Handle R_PPC64_ENTRY relocations
    
    commit a61674bdfc7c2bf909c4010699607b62b69b7bec upstream.
    
    GCC 6 will include changes to generated code with -mcmodel=large,
    which is used to build kernel modules on powerpc64le.  This was
    necessary because the large model is supposed to allow arbitrary
    sizes and locations of the code and data sections, but the ELFv2
    global entry point prolog still made the unconditional assumption
    that the TOC associated with any particular function can be found
    within 2 GB of the function entry point:
    
    func:
    	addis r2,r12,(.TOC.-func)@ha
    	addi  r2,r2,(.TOC.-func)@l
    	.localentry func, .-func
    
    To remove this assumption, GCC will now generate instead this global
    entry point prolog sequence when using -mcmodel=large:
    
    	.quad .TOC.-func
    func:
    	.reloc ., R_PPC64_ENTRY
    	ld    r2, -8(r12)
    	add   r2, r2, r12
    	.localentry func, .-func
    
    The new .reloc triggers an optimization in the linker that will
    replace this new prolog with the original code (see above) if the
    linker determines that the distance between .TOC. and func is in
    range after all.
    
    Since this new relocation is now present in module object files,
    the kernel module loader is required to handle them too.  This
    patch adds support for the new relocation and implements the
    same optimization done by the GNU linker.
    
    Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a1021b628a7787683ce360c9ab87f5d36b7c145
Author: Ulrich Weigand <ulrich.weigand@de.ibm.com>
Date:   Tue Jan 12 23:14:22 2016 +1100

    scripts/recordmcount.pl: support data in text section on powerpc
    
    commit 2e50c4bef77511b42cc226865d6bc568fa7f8769 upstream.
    
    If a text section starts out with a data blob before the first
    function start label, disassembly parsing doing in recordmcount.pl
    gets confused on powerpc, leading to creation of corrupted module
    objects.
    
    This was not a problem so far since the compiler would never create
    such text sections.  However, this has changed with a recent change
    in GCC 6 to support distances of > 2GB between a function and its
    assoicated TOC in the ELFv2 ABI, exposing this problem.
    
    There is already code in recordmcount.pl to handle such data blobs
    on the sparc64 platform.  This patch uses the same method to handle
    those on powerpc as well.
    
    Acked-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9e5728ff3c7bb2896c5bb009aa262ddfc65a59c
Author: Boqun Feng <boqun.feng@gmail.com>
Date:   Mon Nov 2 09:30:32 2015 +0800

    powerpc: Make {cmp}xchg* and their atomic_ versions fully ordered
    
    commit 81d7a3294de7e9828310bbf986a67246b13fa01e upstream.
    
    According to memory-barriers.txt, xchg*, cmpxchg* and their atomic_
    versions all need to be fully ordered, however they are now just
    RELEASE+ACQUIRE, which are not fully ordered.
    
    So also replace PPC_RELEASE_BARRIER and PPC_ACQUIRE_BARRIER with
    PPC_ATOMIC_ENTRY_BARRIER and PPC_ATOMIC_EXIT_BARRIER in
    __{cmp,}xchg_{u32,u64} respectively to guarantee fully ordered semantics
    of atomic{,64}_{cmp,}xchg() and {cmp,}xchg(), as a complement of commit
    b97021f85517 ("powerpc: Fix atomic_xxx_return barrier semantics")
    
    This patch depends on patch "powerpc: Make value-returning atomics fully
    ordered" for PPC_ATOMIC_ENTRY_BARRIER definition.
    
    Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
    Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f849cf3fc85d8ef326a88663c77df6245063ca5
Author: Boqun Feng <boqun.feng@gmail.com>
Date:   Mon Nov 2 09:30:31 2015 +0800

    powerpc: Make value-returning atomics fully ordered
    
    commit 49e9cf3f0c04bf76ffa59242254110309554861d upstream.
    
    According to memory-barriers.txt:
    
    > Any atomic operation that modifies some state in memory and returns
    > information about the state (old or new) implies an SMP-conditional
    > general memory barrier (smp_mb()) on each side of the actual
    > operation ...
    
    Which mean these operations should be fully ordered. However on PPC,
    PPC_ATOMIC_ENTRY_BARRIER is the barrier before the actual operation,
    which is currently "lwsync" if SMP=y. The leading "lwsync" can not
    guarantee fully ordered atomics, according to Paul Mckenney:
    
    https://lkml.org/lkml/2015/10/14/970
    
    To fix this, we define PPC_ATOMIC_ENTRY_BARRIER as "sync" to guarantee
    the fully-ordered semantics.
    
    This also makes futex atomics fully ordered, which can avoid possible
    memory ordering problems if userspace code relies on futex system call
    for fully ordered semantics.
    
    Fixes: b97021f85517 ("powerpc: Fix atomic_xxx_return barrier semantics")
    Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
    Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17aa8ac53418d99ac6394ae47a59fc573bb1972e
Author: Stewart Smith <stewart@linux.vnet.ibm.com>
Date:   Fri Dec 11 12:08:23 2015 +1100

    powerpc/powernv: pr_warn_once on unsupported OPAL_MSG type
    
    commit 98da62b716a3b24ab8e77453c9a8a954124c18cd upstream.
    
    When running on newer OPAL firmware that supports sending extra
    OPAL_MSG types, we would print a warning on *every* message received.
    
    This could be a problem for kernels that don't support OPAL_MSG_OCC
    on machines that are running real close to thermal limits and the
    OCC is throttling the chip. For a kernel that is paying attention to
    the message queue, we could get these notifications quite often.
    
    Conceivably, future message types could also come fairly often,
    and printing that we didn't understand them 10,000 times provides
    no further information than printing them once.
    
    Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6699429a8d3829f112ce9a228f47a75227bf422
Author: Alistair Popple <alistair@popple.id.au>
Date:   Fri Dec 18 17:16:17 2015 +1100

    powerpc/opal-irqchip: Fix deadlock introduced by "Fix double endian conversion"
    
    commit 036592fbbe753d236402a0ae68148e7c143a0f0e upstream.
    
    Commit 25642e1459ac ("powerpc/opal-irqchip: Fix double endian
    conversion") fixed an endian bug by calling opal_handle_events() in
    opal_event_unmask().
    
    However this introduced a deadlock if we find an event is active
    during unmasking and call opal_handle_events() again. The bad call
    sequence is:
    
      opal_interrupt()
      -> opal_handle_events()
         -> generic_handle_irq()
            -> handle_level_irq()
               -> raw_spin_lock(&desc->lock)
                  handle_irq_event(desc)
                  unmask_irq(desc)
                  -> opal_event_unmask()
                     -> opal_handle_events()
                        -> generic_handle_irq()
                           -> handle_level_irq()
                              -> raw_spin_lock(&desc->lock)	(BOOM)
    
    When generating multiple opal events in quick succession this would lead
    to the following stall warnings:
    
    EEH: Fenced PHB#0 detected, location: U78C9.001.WZS09XA-P1-C32
    INFO: rcu_sched detected stalls on CPUs/tasks:
    
             12-...: (1 GPs behind) idle=68f/140000000000001/0 softirq=860/861 fqs=2065
             15-...: (1 GPs behind) idle=be5/140000000000001/0 softirq=1142/1143 fqs=2065
             (detected by 13, t=2102 jiffies, g=1325, c=1324, q=602)
    NMI watchdog: BUG: soft lockup - CPU#18 stuck for 22s! [irqbalance:2696]
    INFO: rcu_sched detected stalls on CPUs/tasks:
             12-...: (1 GPs behind) idle=68f/140000000000001/0 softirq=860/861 fqs=8371
             15-...: (1 GPs behind) idle=be5/140000000000001/0 softirq=1142/1143 fqs=8371
             (detected by 20, t=8407 jiffies, g=1325, c=1324, q=1290)
    
    This patch corrects the problem by queuing the work if an event is
    active during unmasking, which is similar to the pre-endian fix
    behaviour.
    
    Fixes: 25642e1459ac ("powerpc/opal-irqchip: Fix double endian conversion")
    Signed-off-by: Alistair Popple <alistair@popple.id.au>
    Reported-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f8e324f8bb96da97ca98e02c7bfdefcc02a2149
Author: Alistair Popple <alistair@popple.id.au>
Date:   Mon Dec 7 11:28:28 2015 +1100

    powerpc/opal-irqchip: Fix double endian conversion
    
    commit 25642e1459ace29f6ce5a171efc8b7b59a52a2d4 upstream.
    
    The OPAL event calls return a mask of events that are active in big
    endian format. This is checked when unmasking the events in the
    irqchip by comparison with a cached value. The cached value was stored
    in big endian format but should've been converted to CPU endian
    first.
    
    This bug leads to OPAL event delivery being delayed or dropped on some
    systems. Symptoms may include a non-functional console.
    
    The bug is fixed by calling opal_handle_events(...) instead of
    duplicating code in opal_event_unmask(...).
    
    Fixes: 9f0fd0499d30 ("powerpc/powernv: Add a virtual irqchip for opal events")
    Reported-by: Douglas L Lehr <dllehr@us.ibm.com>
    Signed-off-by: Alistair Popple <alistair@popple.id.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 572c83615496e7d08554f7aeb4981f8260c53d17
Author: Michael Neuling <mikey@neuling.org>
Date:   Thu Nov 19 15:44:45 2015 +1100

    powerpc/tm: Check for already reclaimed tasks
    
    commit 7f821fc9c77a9b01fe7b1d6e72717b33d8d64142 upstream.
    
    Currently we can hit a scenario where we'll tm_reclaim() twice.  This
    results in a TM bad thing exception because the second reclaim occurs
    when not in suspend mode.
    
    The scenario in which this can happen is the following.  We attempt to
    deliver a signal to userspace.  To do this we need obtain the stack
    pointer to write the signal context.  To get this stack pointer we
    must tm_reclaim() in case we need to use the checkpointed stack
    pointer (see get_tm_stackpointer()).  Normally we'd then return
    directly to userspace to deliver the signal without going through
    __switch_to().
    
    Unfortunatley, if at this point we get an error (such as a bad
    userspace stack pointer), we need to exit the process.  The exit will
    result in a __switch_to().  __switch_to() will attempt to save the
    process state which results in another tm_reclaim().  This
    tm_reclaim() now causes a TM Bad Thing exception as this state has
    already been saved and the processor is no longer in TM suspend mode.
    Whee!
    
    This patch checks the state of the MSR to ensure we are TM suspended
    before we attempt the tm_reclaim().  If we've already saved the state
    away, we should no longer be in TM suspend mode.  This has the
    additional advantage of checking for a potential TM Bad Thing
    exception.
    
    Found using syscall fuzzer.
    
    Fixes: fb09692e71f1 ("powerpc: Add reclaim and recheckpoint functions for context switching transactional memory processes")
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5b580ef3204ee8412d420e761b47027ce5f728e
Author: Michael Neuling <mikey@neuling.org>
Date:   Thu Nov 19 15:44:44 2015 +1100

    powerpc/tm: Block signal return setting invalid MSR state
    
    commit d2b9d2a5ad5ef04ff978c9923d19730cb05efd55 upstream.
    
    Currently we allow both the MSR T and S bits to be set by userspace on
    a signal return.  Unfortunately this is a reserved configuration and
    will cause a TM Bad Thing exception if attempted (via rfid).
    
    This patch checks for this case in both the 32 and 64 bit signals
    code.  If both T and S are set, we mark the context as invalid.
    
    Found using a syscall fuzzer.
    
    Fixes: 2b0a576d15e0 ("powerpc: Add new transactional memory state to the signal context")
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bd631fc9a4515878c1bb7effd19335d2f2d87c2
Author: Dan Streetman <dan.streetman@canonical.com>
Date:   Thu Oct 29 09:51:16 2015 -0400

    xfrm: dst_entries_init() per-net dst_ops
    
    [ Upstream commit a8a572a6b5f2a79280d6e302cb3c1cb1fbaeb3e8 ]
    
    Remove the dst_entries_init/destroy calls for xfrm4 and xfrm6 dst_ops
    templates; their dst_entries counters will never be used.  Move the
    xfrm dst_ops initialization from the common xfrm/xfrm_policy.c to
    xfrm4/xfrm4_policy.c and xfrm6/xfrm6_policy.c, and call dst_entries_init
    and dst_entries_destroy for each net namespace.
    
    The ipv4 and ipv6 xfrms each create dst_ops template, and perform
    dst_entries_init on the templates.  The template values are copied to each
    net namespace's xfrm.xfrm*_dst_ops.  The problem there is the dst_ops
    pcpuc_entries field is a percpu counter and cannot be used correctly by
    simply copying it to another object.
    
    The result of this is a very subtle bug; changes to the dst entries
    counter from one net namespace may sometimes get applied to a different
    net namespace dst entries counter.  This is because of how the percpu
    counter works; it has a main count field as well as a pointer to the
    percpu variables.  Each net namespace maintains its own main count
    variable, but all point to one set of percpu variables.  When any net
    namespace happens to change one of the percpu variables to outside its
    small batch range, its count is moved to the net namespace's main count
    variable.  So with multiple net namespaces operating concurrently, the
    dst_ops entries counter can stray from the actual value that it should
    be; if counts are consistently moved from one net namespace to another
    (which my testing showed is likely), then one net namespace winds up
    with a negative dst_ops count while another winds up with a continually
    increasing count, eventually reaching its gc_thresh limit, which causes
    all new traffic on the net namespace to fail with -ENOBUFS.
    
    Signed-off-by: Dan Streetman <dan.streetman@canonical.com>
    Signed-off-by: Dan Streetman <ddstreet@ieee.org>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0fe318bb6d85ef0ea7997256aedfe0e0e470e4bb
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Mon Jan 18 17:30:22 2016 +0200

    team: Replace rcu_read_lock with a mutex in team_vlan_rx_kill_vid
    
    [ Upstream commit 60a6531bfe49555581ccd65f66a350cc5693fcde ]
    
    We can't be within an RCU read-side critical section when deleting
    VLANs, as underlying drivers might sleep during the hardware operation.
    Therefore, replace the RCU critical section with a mutex. This is
    consistent with team_vlan_rx_add_vid.
    
    Fixes: 3d249d4ca7d0 ("net: introduce ethernet teaming device")
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1940d0b0bbf12260a646c0420ed16edbdf9aa2df
Author: Doron Tsur <doront@mellanox.com>
Date:   Sun Jan 17 11:25:47 2016 +0200

    net/mlx5_core: Fix trimming down IRQ number
    
    [ Upstream commit 0b6e26ce89391327d955a756a7823272238eb867 ]
    
    With several ConnectX-4 cards installed on a server, one may receive
    irqn > 255 from the kernel API, which we mistakenly trim to 8bit.
    
    This causes EQ creation failure with the following stack trace:
    [<ffffffff812a11f4>] dump_stack+0x48/0x64
    [<ffffffff810ace21>] __setup_irq+0x3a1/0x4f0
    [<ffffffff810ad7e0>] request_threaded_irq+0x120/0x180
    [<ffffffffa0923660>] ? mlx5_eq_int+0x450/0x450 [mlx5_core]
    [<ffffffffa0922f64>] mlx5_create_map_eq+0x1e4/0x2b0 [mlx5_core]
    [<ffffffffa091de01>] alloc_comp_eqs+0xb1/0x180 [mlx5_core]
    [<ffffffffa091ea99>] mlx5_dev_init+0x5e9/0x6e0 [mlx5_core]
    [<ffffffffa091ec29>] init_one+0x99/0x1c0 [mlx5_core]
    [<ffffffff812e2afc>] local_pci_probe+0x4c/0xa0
    
    Fixing it by changing of the irqn type from u8 to unsigned int to
    support values > 255
    
    Fixes: 61d0e73e0a5a ('net/mlx5_core: Use the the real irqn in eq->irqn')
    Reported-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: Doron Tsur <doront@mellanox.com>
    Signed-off-by: Matan Barak <matanb@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f3f7cabcdecfbd3dca31d67c33b4704fe37b094
Author: Sven Eckelmann <sven@narfation.org>
Date:   Tue Jan 5 12:06:20 2016 +0100

    batman-adv: Drop immediate orig_node free function
    
    [ Upstream commit 42eff6a617e23b691f8e4467f4687ed7245a92db ]
    
    It is not allowed to free the memory of an object which is part of a list
    which is protected by rcu-read-side-critical sections without making sure
    that no other context is accessing the object anymore. This usually happens
    by removing the references to this object and then waiting until the rcu
    grace period is over and no one (allowedly) accesses it anymore.
    
    But the _now functions ignore this completely. They free the object
    directly even when a different context still tries to access it. This has
    to be avoided and thus these functions must be removed and all functions
    have to use batadv_orig_node_free_ref.
    
    Fixes: 72822225bd41 ("batman-adv: Fix rcu_barrier() miss due to double call_rcu() in TT code")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <a@unstable.cc>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c2b5cfe9e7cb4dbad762e4a4824291dbb779dd2
Author: Sven Eckelmann <sven@narfation.org>
Date:   Tue Jan 5 12:06:25 2016 +0100

    batman-adv: Drop immediate batadv_hard_iface free function
    
    [ Upstream commit b4d922cfc9c08318eeb77d53b7633740e6b0efb0 ]
    
    It is not allowed to free the memory of an object which is part of a list
    which is protected by rcu-read-side-critical sections without making sure
    that no other context is accessing the object anymore. This usually happens
    by removing the references to this object and then waiting until the rcu
    grace period is over and no one (allowedly) accesses it anymore.
    
    But the _now functions ignore this completely. They free the object
    directly even when a different context still tries to access it. This has
    to be avoided and thus these functions must be removed and all functions
    have to use batadv_hardif_free_ref.
    
    Fixes: 89652331c00f ("batman-adv: split tq information in neigh_node struct")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <a@unstable.cc>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5947b88c34c41a496c31a7c686b106030abd10b0
Author: Sven Eckelmann <sven@narfation.org>
Date:   Tue Jan 5 12:06:24 2016 +0100

    batman-adv: Drop immediate neigh_ifinfo free function
    
    [ Upstream commit ae3e1e36e3cb6c686a7a2725af20ca86aa46d62a ]
    
    It is not allowed to free the memory of an object which is part of a list
    which is protected by rcu-read-side-critical sections without making sure
    that no other context is accessing the object anymore. This usually happens
    by removing the references to this object and then waiting until the rcu
    grace period is over and no one (allowedly) accesses it anymore.
    
    But the _now functions ignore this completely. They free the object
    directly even when a different context still tries to access it. This has
    to be avoided and thus these functions must be removed and all functions
    have to use batadv_neigh_ifinfo_free_ref.
    
    Fixes: 89652331c00f ("batman-adv: split tq information in neigh_node struct")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <a@unstable.cc>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b283f6a212b0d18355d58e60985b2259d629c98
Author: Sven Eckelmann <sven@narfation.org>
Date:   Tue Jan 5 12:06:22 2016 +0100

    batman-adv: Drop immediate batadv_neigh_node free function
    
    [ Upstream commit 2baa753c276f27f8e844637561ad597867aa6fb6 ]
    
    It is not allowed to free the memory of an object which is part of a list
    which is protected by rcu-read-side-critical sections without making sure
    that no other context is accessing the object anymore. This usually happens
    by removing the references to this object and then waiting until the rcu
    grace period is over and no one (allowedly) accesses it anymore.
    
    But the _now functions ignore this completely. They free the object
    directly even when a different context still tries to access it. This has
    to be avoided and thus these functions must be removed and all functions
    have to use batadv_neigh_node_free_ref.
    
    Fixes: 89652331c00f ("batman-adv: split tq information in neigh_node struct")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <a@unstable.cc>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8b82bfd8862fbe37df73663c22e1dfc4574f47f
Author: Sven Eckelmann <sven@narfation.org>
Date:   Tue Jan 5 12:06:21 2016 +0100

    batman-adv: Drop immediate batadv_orig_ifinfo free function
    
    [ Upstream commit deed96605f5695cb945e0b3d79429581857a2b9d ]
    
    It is not allowed to free the memory of an object which is part of a list
    which is protected by rcu-read-side-critical sections without making sure
    that no other context is accessing the object anymore. This usually happens
    by removing the references to this object and then waiting until the rcu
    grace period is over and no one (allowedly) accesses it anymore.
    
    But the _now functions ignore this completely. They free the object
    directly even when a different context still tries to access it. This has
    to be avoided and thus these functions must be removed and all functions
    have to use batadv_orig_ifinfo_free_ref.
    
    Fixes: 7351a4822d42 ("batman-adv: split out router from orig_node")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <a@unstable.cc>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd937fb19af51a59787816ab49530637a5065159
Author: Sven Eckelmann <sven@narfation.org>
Date:   Tue Jan 5 12:06:19 2016 +0100

    batman-adv: Avoid recursive call_rcu for batadv_nc_node
    
    [ Upstream commit 44e8e7e91d6c7c7ab19688750f7257292640d1a0 ]
    
    The batadv_nc_node_free_ref function uses call_rcu to delay the free of the
    batadv_nc_node object until no (already started) rcu_read_lock is enabled
    anymore. This makes sure that no context is still trying to access the
    object which should be removed. But batadv_nc_node also contains a
    reference to orig_node which must be removed.
    
    The reference drop of orig_node was done in the call_rcu function
    batadv_nc_node_free_rcu but should actually be done in the
    batadv_nc_node_release function to avoid nested call_rcus. This is
    important because rcu_barrier (e.g. batadv_softif_free or batadv_exit) will
    not detect the inner call_rcu as relevant for its execution. Otherwise this
    barrier will most likely be inserted in the queue before the callback of
    the first call_rcu was executed. The caller of rcu_barrier will therefore
    continue to run before the inner call_rcu callback finished.
    
    Fixes: d56b1705e28c ("batman-adv: network coding - detect coding nodes and remove these after timeout")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <a@unstable.cc>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd5a5c3b4b0fbef07230e78ff60a64d6ea1a6a0a
Author: Sven Eckelmann <sven@narfation.org>
Date:   Thu Jan 14 15:28:19 2016 +0100

    batman-adv: Avoid recursive call_rcu for batadv_bla_claim
    
    [ Upstream commit 63b399272294e7a939cde41792dca38c549f0484 ]
    
    The batadv_claim_free_ref function uses call_rcu to delay the free of the
    batadv_bla_claim object until no (already started) rcu_read_lock is enabled
    anymore. This makes sure that no context is still trying to access the
    object which should be removed. But batadv_bla_claim also contains a
    reference to backbone_gw which must be removed.
    
    The reference drop of backbone_gw was done in the call_rcu function
    batadv_claim_free_rcu but should actually be done in the
    batadv_claim_release function to avoid nested call_rcus. This is important
    because rcu_barrier (e.g. batadv_softif_free or batadv_exit) will not
    detect the inner call_rcu as relevant for its execution. Otherwise this
    barrier will most likely be inserted in the queue before the callback of
    the first call_rcu was executed. The caller of rcu_barrier will therefore
    continue to run before the inner call_rcu callback finished.
    
    Fixes: 23721387c409 ("batman-adv: add basic bridge loop avoidance code")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Acked-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <a@unstable.cc>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b4fa561e26526c62636414d267342c945084f44
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sun Nov 1 16:22:53 2015 +0000

    ppp, slip: Validate VJ compression slot parameters completely
    
    [ Upstream commit 4ab42d78e37a294ac7bc56901d563c642e03c4ae ]
    
    Currently slhc_init() treats out-of-range values of rslots and tslots
    as equivalent to 0, except that if tslots is too large it will
    dereference a null pointer (CVE-2015-7799).
    
    Add a range-check at the top of the function and make it return an
    ERR_PTR() on error instead of NULL.  Change the callers accordingly.
    
    Compile-tested only.
    
    Reported-by: 郭永刚 <guoyonggang@360.cn>
    References: http://article.gmane.org/gmane.comp.security.oss.general/17908
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9af90c4bfe1cd825bd50e967914f344dd4cd9f8
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sun Nov 1 16:21:24 2015 +0000

    isdn_ppp: Add checks for allocation failure in isdn_ppp_open()
    
    [ Upstream commit 0baa57d8dc32db78369d8b5176ef56c5e2e18ab3 ]
    
    Compile-tested only.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58aae14465186637a2f8b55440faf3c1488e6dfe
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Fri Jan 15 19:03:54 2016 +0100

    bridge: fix lockdep addr_list_lock false positive splat
    
    [ Upstream commit c6894dec8ea9ae05747124dce98b3b5c2e69b168 ]
    
    After promisc mode management was introduced a bridge device could do
    dev_set_promiscuity from its ndo_change_rx_flags() callback which in
    turn can be called after the bridge's addr_list_lock has been taken
    (e.g. by dev_uc_add). This causes a false positive lockdep splat because
    the port interfaces' addr_list_lock is taken when br_manage_promisc()
    runs after the bridge's addr list lock was already taken.
    To remove the false positive introduce a custom bridge addr_list_lock
    class and set it on bridge init.
    A simple way to reproduce this is with the following:
    $ brctl addbr br0
    $ ip l add l br0 br0.100 type vlan id 100
    $ ip l set br0 up
    $ ip l set br0.100 up
    $ echo 1 > /sys/class/net/br0/bridge/vlan_filtering
    $ brctl addif br0 eth0
    Splat:
    [   43.684325] =============================================
    [   43.684485] [ INFO: possible recursive locking detected ]
    [   43.684636] 4.4.0-rc8+ #54 Not tainted
    [   43.684755] ---------------------------------------------
    [   43.684906] brctl/1187 is trying to acquire lock:
    [   43.685047]  (_xmit_ETHER){+.....}, at: [<ffffffff8150169e>] dev_set_rx_mode+0x1e/0x40
    [   43.685460]  but task is already holding lock:
    [   43.685618]  (_xmit_ETHER){+.....}, at: [<ffffffff815072a7>] dev_uc_add+0x27/0x80
    [   43.686015]  other info that might help us debug this:
    [   43.686316]  Possible unsafe locking scenario:
    
    [   43.686743]        CPU0
    [   43.686967]        ----
    [   43.687197]   lock(_xmit_ETHER);
    [   43.687544]   lock(_xmit_ETHER);
    [   43.687886] *** DEADLOCK ***
    
    [   43.688438]  May be due to missing lock nesting notation
    
    [   43.688882] 2 locks held by brctl/1187:
    [   43.689134]  #0:  (rtnl_mutex){+.+.+.}, at: [<ffffffff81510317>] rtnl_lock+0x17/0x20
    [   43.689852]  #1:  (_xmit_ETHER){+.....}, at: [<ffffffff815072a7>] dev_uc_add+0x27/0x80
    [   43.690575] stack backtrace:
    [   43.690970] CPU: 0 PID: 1187 Comm: brctl Not tainted 4.4.0-rc8+ #54
    [   43.691270] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.8.1-20150318_183358- 04/01/2014
    [   43.691770]  ffffffff826a25c0 ffff8800369fb8e0 ffffffff81360ceb ffffffff826a25c0
    [   43.692425]  ffff8800369fb9b8 ffffffff810d0466 ffff8800369fb968 ffffffff81537139
    [   43.693071]  ffff88003a08c880 0000000000000000 00000000ffffffff 0000000002080020
    [   43.693709] Call Trace:
    [   43.693931]  [<ffffffff81360ceb>] dump_stack+0x4b/0x70
    [   43.694199]  [<ffffffff810d0466>] __lock_acquire+0x1e46/0x1e90
    [   43.694483]  [<ffffffff81537139>] ? netlink_broadcast_filtered+0x139/0x3e0
    [   43.694789]  [<ffffffff8153b5da>] ? nlmsg_notify+0x5a/0xc0
    [   43.695064]  [<ffffffff810d10f5>] lock_acquire+0xe5/0x1f0
    [   43.695340]  [<ffffffff8150169e>] ? dev_set_rx_mode+0x1e/0x40
    [   43.695623]  [<ffffffff815edea5>] _raw_spin_lock_bh+0x45/0x80
    [   43.695901]  [<ffffffff8150169e>] ? dev_set_rx_mode+0x1e/0x40
    [   43.696180]  [<ffffffff8150169e>] dev_set_rx_mode+0x1e/0x40
    [   43.696460]  [<ffffffff8150189c>] dev_set_promiscuity+0x3c/0x50
    [   43.696750]  [<ffffffffa0586845>] br_port_set_promisc+0x25/0x50 [bridge]
    [   43.697052]  [<ffffffffa05869aa>] br_manage_promisc+0x8a/0xe0 [bridge]
    [   43.697348]  [<ffffffffa05826ee>] br_dev_change_rx_flags+0x1e/0x20 [bridge]
    [   43.697655]  [<ffffffff81501532>] __dev_set_promiscuity+0x132/0x1f0
    [   43.697943]  [<ffffffff81501672>] __dev_set_rx_mode+0x82/0x90
    [   43.698223]  [<ffffffff815072de>] dev_uc_add+0x5e/0x80
    [   43.698498]  [<ffffffffa05b3c62>] vlan_device_event+0x542/0x650 [8021q]
    [   43.698798]  [<ffffffff8109886d>] notifier_call_chain+0x5d/0x80
    [   43.699083]  [<ffffffff810988b6>] raw_notifier_call_chain+0x16/0x20
    [   43.699374]  [<ffffffff814f456e>] call_netdevice_notifiers_info+0x6e/0x80
    [   43.699678]  [<ffffffff814f4596>] call_netdevice_notifiers+0x16/0x20
    [   43.699973]  [<ffffffffa05872be>] br_add_if+0x47e/0x4c0 [bridge]
    [   43.700259]  [<ffffffffa058801e>] add_del_if+0x6e/0x80 [bridge]
    [   43.700548]  [<ffffffffa0588b5f>] br_dev_ioctl+0xaf/0xc0 [bridge]
    [   43.700836]  [<ffffffff8151a7ac>] dev_ifsioc+0x30c/0x3c0
    [   43.701106]  [<ffffffff8151aac9>] dev_ioctl+0xf9/0x6f0
    [   43.701379]  [<ffffffff81254345>] ? mntput_no_expire+0x5/0x450
    [   43.701665]  [<ffffffff812543ee>] ? mntput_no_expire+0xae/0x450
    [   43.701947]  [<ffffffff814d7b02>] sock_do_ioctl+0x42/0x50
    [   43.702219]  [<ffffffff814d8175>] sock_ioctl+0x1e5/0x290
    [   43.702500]  [<ffffffff81242d0b>] do_vfs_ioctl+0x2cb/0x5c0
    [   43.702771]  [<ffffffff81243079>] SyS_ioctl+0x79/0x90
    [   43.703033]  [<ffffffff815eebb6>] entry_SYSCALL_64_fastpath+0x16/0x7a
    
    CC: Vlad Yasevich <vyasevic@redhat.com>
    CC: Stephen Hemminger <stephen@networkplumber.org>
    CC: Bridge list <bridge@lists.linux-foundation.org>
    CC: Andy Gospodarek <gospo@cumulusnetworks.com>
    CC: Roopa Prabhu <roopa@cumulusnetworks.com>
    Fixes: 2796d0c648c9 ("bridge: Automatically manage port promiscuous mode.")
    Reported-by: Andy Gospodarek <gospo@cumulusnetworks.com>
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6553097608b5e4ae3f456a94511182349312dad3
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jan 15 04:56:56 2016 -0800

    ipv6: update skb->csum when CE mark is propagated
    
    [ Upstream commit 34ae6a1aa0540f0f781dd265366036355fdc8930 ]
    
    When a tunnel decapsulates the outer header, it has to comply
    with RFC 6080 and eventually propagate CE mark into inner header.
    
    It turns out IP6_ECN_set_ce() does not correctly update skb->csum
    for CHECKSUM_COMPLETE packets, triggering infamous "hw csum failure"
    messages and stack traces.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2da6274a5f9d858a6a81f1f11966f42e476f1f3
Author: Rabin Vincent <rabin@rab.in>
Date:   Tue Jan 12 20:17:08 2016 +0100

    net: bpf: reject invalid shifts
    
    [ Upstream commit 229394e8e62a4191d592842cf67e80c62a492937 ]
    
    On ARM64, a BUG() is triggered in the eBPF JIT if a filter with a
    constant shift that can't be encoded in the immediate field of the
    UBFM/SBFM instructions is passed to the JIT.  Since these shifts
    amounts, which are negative or >= regsize, are invalid, reject them in
    the eBPF verifier and the classic BPF filter checker, for all
    architectures.
    
    Signed-off-by: Rabin Vincent <rabin@rab.in>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89583f678088043220fe50fc88fc405ba2d27726
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Jan 12 08:58:00 2016 -0800

    phonet: properly unshare skbs in phonet_rcv()
    
    [ Upstream commit 7aaed57c5c2890634cfadf725173c7c68ea4cb4f ]
    
    Ivaylo Dimitrov reported a regression caused by commit 7866a621043f
    ("dev: add per net_device packet type chains").
    
    skb->dev becomes NULL and we crash in __netif_receive_skb_core().
    
    Before above commit, different kind of bugs or corruptions could happen
    without major crash.
    
    But the root cause is that phonet_rcv() can queue skb without checking
    if skb is shared or not.
    
    Many thanks to Ivaylo Dimitrov for his help, diagnosis and tests.
    
    Reported-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
    Tested-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Remi Denis-Courmont <courmisch@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b4938efb10a801e8ca99926ccd18d095b8cd7dc
Author: Lars Persson <lars.persson@axis.com>
Date:   Tue Jan 12 15:28:13 2016 +0100

    dwc_eth_qos: Fix dma address for multi-fragment skbs
    
    [ Upstream commit d461873272169a3fc3a8d155d7b1c92e9d97b419 ]
    
    The offset inside the fragment was not used for the dma address and
    silent data corruption resulted because TSO makes the checksum match.
    
    Fixes: 077742dac2c7 ("dwc_eth_qos: Add support for Synopsys DWC Ethernet QoS")
    Signed-off-by: Lars Persson <larper@axis.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d13e7ca778f21f3a97f6210c02988155b8df189
Author: Karl Heiss <kheiss@gmail.com>
Date:   Mon Jan 11 08:28:43 2016 -0500

    bonding: Prevent IPv6 link local address on enslaved devices
    
    [ Upstream commit 03d84a5f83a67e692af00a3d3901e7820e3e84d5 ]
    
    Commit 1f718f0f4f97 ("bonding: populate neighbour's private on enslave")
    undoes the fix provided by commit c2edacf80e15 ("bonding / ipv6: no addrconf
    for slaves separately from master") by effectively setting the slave flag
    after the slave has been opened.  If the slave comes up quickly enough, it
    will go through the IPv6 addrconf before the slave flag has been set and
    will get a link local IPv6 address.
    
    In order to ensure that addrconf knows to ignore the slave devices on state
    change, set IFF_SLAVE before dev_open() during bonding enslavement.
    
    Fixes: 1f718f0f4f97 ("bonding: populate neighbour's private on enslave")
    Signed-off-by: Karl Heiss <kheiss@gmail.com>
    Signed-off-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Reviewed-by: Jarod Wilson <jarod@redhat.com>
    Signed-off-by: Andy Gospodarek <gospo@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d37c1234ee6d8ba1706b8c24bbd6db6569f61154
Author: Konstantin Khlebnikov <koct9i@gmail.com>
Date:   Fri Jan 8 15:21:46 2016 +0300

    net: preserve IP control block during GSO segmentation
    
    [ Upstream commit 9207f9d45b0ad071baa128e846d7e7ed85016df3 ]
    
    Skb_gso_segment() uses skb control block during segmentation.
    This patch adds 32-bytes room for previous control block which
    will be copied into all resulting segments.
    
    This patch fixes kernel crash during fragmenting forwarded packets.
    Fragmentation requires valid IP CB in skb for clearing ip options.
    Also patch removes custom save/restore in ovs code, now it's redundant.
    
    Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com>
    Link: http://lkml.kernel.org/r/CALYGNiP-0MZ-FExV2HutTvE9U-QQtkKSoE--KN=JQE5STYsjAA@mail.gmail.com
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 84775578202e13a4f0973dc41f993ddab323fc23
Author: Michal Kubeček <mkubecek@suse.cz>
Date:   Mon Jan 11 07:50:30 2016 +0100

    udp: disallow UFO for sockets with SO_NO_CHECK option
    
    [ Upstream commit 40ba330227ad00b8c0cdf2f425736ff9549cc423 ]
    
    Commit acf8dd0a9d0b ("udp: only allow UFO for packets from SOCK_DGRAM
    sockets") disallows UFO for packets sent from raw sockets. We need to do
    the same also for SOCK_DGRAM sockets with SO_NO_CHECK options, even if
    for a bit different reason: while such socket would override the
    CHECKSUM_PARTIAL set by ip_ufo_append_data(), gso_size is still set and
    bad offloading flags warning is triggered in __skb_gso_segment().
    
    In the IPv6 case, SO_NO_CHECK option is ignored but we need to disallow
    UFO for packets sent by sockets with UDP_NO_CHECK6_TX option.
    
    Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
    Tested-by: Shannon Nelson <shannon.nelson@intel.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe8383327a1b33501be00f810a7b3397c2d20616
Author: John Fastabend <john.fastabend@gmail.com>
Date:   Sun Jan 10 21:38:44 2016 -0800

    net: pktgen: fix null ptr deref in skb allocation
    
    [ Upstream commit 3de03596dfeee48bc803c1d1a6daf60a459929f3 ]
    
    Fix possible null pointer dereference that may occur when calling
    skb_reserve() on a null skb.
    
    Fixes: 879c7220e82 ("net: pktgen: Observe needed_headroom of the device")
    Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96cd854dd6d8df95284e4fa2d04a36a1889fbae1
Author: Jamal Hadi Salim <jhs@mojatatu.com>
Date:   Sun Jan 10 11:47:01 2016 -0500

    sched,cls_flower: set key address type when present
    
    [ Upstream commit 66530bdf85eb1d72a0c399665e09a2c2298501c6 ]
    
    only when user space passes the addresses should we consider their
    presence
    
    Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Acked-by: Jiri Pirko <jiri@resnulli.us>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f00ec71bd0d4fcd1b8eb56058424cb197cb4b04
Author: Neal Cardwell <ncardwell@google.com>
Date:   Mon Jan 11 13:42:43 2016 -0500

    tcp_yeah: don't set ssthresh below 2
    
    [ Upstream commit 83d15e70c4d8909d722c0d64747d8fb42e38a48f ]
    
    For tcp_yeah, use an ssthresh floor of 2, the same floor used by Reno
    and CUBIC, per RFC 5681 (equation 4).
    
    tcp_yeah_ssthresh() was sometimes returning a 0 or negative ssthresh
    value if the intended reduction is as big or bigger than the current
    cwnd. Congestion control modules should never return a zero or
    negative ssthresh. A zero ssthresh generally results in a zero cwnd,
    causing the connection to stall. A negative ssthresh value will be
    interpreted as a u32 and will set a target cwnd for PRR near 4
    billion.
    
    Oleksandr Natalenko reported that a system using tcp_yeah with ECN
    could see a warning about a prior_cwnd of 0 in
    tcp_cwnd_reduction(). Testing verified that this was due to
    tcp_yeah_ssthresh() misbehaving in this way.
    
    Reported-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3999e028e05641149b3c47e1fb085debb6c4531f
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jan 8 09:35:51 2016 -0800

    ipv6: tcp: add rcu locking in tcp_v6_send_synack()
    
    [ Upstream commit 3e4006f0b86a5ae5eb0e8215f9a9e1db24506977 ]
    
    When first SYNACK is sent, we already hold rcu_read_lock(), but this
    is not true if a SYNACK is retransmitted, as a timer (soft) interrupt
    does not hold rcu_read_lock()
    
    Fixes: 45f6fad84cc30 ("ipv6: add complete rcu protection around np->opt")
    Reported-by: Dave Jones <davej@codemonkey.org.uk>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e2c8fae41c4bfbb39cb8db1c81f50c805cfc977
Author: Sasha Levin <sasha.levin@oracle.com>
Date:   Thu Jan 7 14:52:43 2016 -0500

    net: sctp: prevent writes to cookie_hmac_alg from accessing invalid memory
    
    [ Upstream commit 320f1a4a175e7cd5d3f006f92b4d4d3e2cbb7bb5 ]
    
    proc_dostring() needs an initialized destination string, while the one
    provided in proc_sctp_do_hmac_alg() contains stack garbage.
    
    Thus, writing to cookie_hmac_alg would strlen() that garbage and end up
    accessing invalid memory.
    
    Fixes: 3c68198e7 ("sctp: Make hmac algorithm selection for cookie generation dynamic")
    Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9db5c4dc3d548161242a68a90559d6fe6bdf692
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Thu Jan 7 11:26:53 2016 +0100

    vxlan: fix test which detect duplicate vxlan iface
    
    [ Upstream commit 07b9b37c227cb8d88d478b4a9c5634fee514ede1 ]
    
    When a vxlan interface is created, the driver checks that there is not
    another vxlan interface with the same properties. To do this, it checks
    the existing vxlan udp socket. Since commit 1c51a9159dde, the creation of
    the vxlan socket is done only when the interface is set up, thus it breaks
    that test.
    
    Example:
    $ ip l a vxlan10 type vxlan id 10 group 239.0.0.10 dev eth0 dstport 0
    $ ip l a vxlan11 type vxlan id 10 group 239.0.0.10 dev eth0 dstport 0
    $ ip -br l | grep vxlan
    vxlan10          DOWN           f2:55:1c:6a:fb:00 <BROADCAST,MULTICAST>
    vxlan11          DOWN           7a:cb:b9:38:59:0d <BROADCAST,MULTICAST>
    
    Instead of checking sockets, let's loop over the vxlan iface list.
    
    Fixes: 1c51a9159dde ("vxlan: fix race caused by dropping rtnl_unlock")
    Reported-by: Thomas Faivre <thomas.faivre@6wind.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 018f0282a78aac26430b7212cb2ee01348ba06d2
Author: Yuchung Cheng <ycheng@google.com>
Date:   Wed Jan 6 12:42:38 2016 -0800

    tcp: fix zero cwnd in tcp_cwnd_reduction
    
    [ Upstream commit 8b8a321ff72c785ed5e8b4cf6eda20b35d427390 ]
    
    Patch 3759824da87b ("tcp: PRR uses CRB mode by default and SS mode
    conditionally") introduced a bug that cwnd may become 0 when both
    inflight and sndcnt are 0 (cwnd = inflight + sndcnt). This may lead
    to a div-by-zero if the connection starts another cwnd reduction
    phase by setting tp->prior_cwnd to the current cwnd (0) in
    tcp_init_cwnd_reduction().
    
    To prevent this we skip PRR operation when nothing is acked or
    sacked. Then cwnd must be positive in all cases as long as ssthresh
    is positive:
    
    1) The proportional reduction mode
       inflight > ssthresh > 0
    
    2) The reduction bound mode
      a) inflight == ssthresh > 0
    
      b) inflight < ssthresh
         sndcnt > 0 since newly_acked_sacked > 0 and inflight < ssthresh
    
    Therefore in all cases inflight and sndcnt can not both be 0.
    We check invalid tp->prior_cwnd to avoid potential div0 bugs.
    
    In reality this bug is triggered only with a sequence of less common
    events.  For example, the connection is terminating an ECN-triggered
    cwnd reduction with an inflight 0, then it receives reordered/old
    ACKs or DSACKs from prior transmission (which acks nothing). Or the
    connection is in fast recovery stage that marks everything lost,
    but fails to retransmit due to local issues, then receives data
    packets from other end which acks nothing.
    
    Fixes: 3759824da87b ("tcp: PRR uses CRB mode by default and SS mode conditionally")
    Reported-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca1bd6b33c9c820a72fff6506b0fa65f09edfc41
Author: Francesco Ruggeri <fruggeri@aristanetworks.com>
Date:   Wed Jan 6 00:18:48 2016 -0800

    net: possible use after free in dst_release
    
    [ Upstream commit 07a5d38453599052aff0877b16bb9c1585f08609 ]
    
    dst_release should not access dst->flags after decrementing
    __refcnt to 0. The dst_entry may be in dst_busy_list and
    dst_gc_task may dst_destroy it before dst_release gets a chance
    to access dst->flags.
    
    Fixes: d69bbf88c8d0 ("net: fix a race in dst_release()")
    Fixes: 27b75c95f10d ("net: avoid RCU for NOCACHE dst")
    Signed-off-by: Francesco Ruggeri <fruggeri@arista.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb9192991e0bb2dfad983641740998c6000940f5
Author: John Fastabend <john.fastabend@gmail.com>
Date:   Tue Jan 5 09:11:36 2016 -0800

    net: sched: fix missing free per cpu on qstats
    
    [ Upstream commit 73c20a8b7245273125cfe92c4b46e6fdb568a801 ]
    
    When a qdisc is using per cpu stats (currently just the ingress
    qdisc) only the bstats are being freed. This also free's the qstats.
    
    Fixes: b0ab6f92752b9f9d8 ("net: sched: enable per cpu qstats")
    Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a72a87340100097d6d4ad8015014caf7f05442f9
Author: Rabin Vincent <rabin@rab.in>
Date:   Tue Jan 5 16:23:07 2016 +0100

    net: filter: make JITs zero A for SKF_AD_ALU_XOR_X
    
    [ Upstream commit 55795ef5469290f89f04e12e662ded604909e462 ]
    
    The SKF_AD_ALU_XOR_X ancillary is not like the other ancillary data
    instructions since it XORs A with X while all the others replace A with
    some loaded value.  All the BPF JITs fail to clear A if this is used as
    the first instruction in a filter.  This was found using american fuzzy
    lop.
    
    Add a helper to determine if A needs to be cleared given the first
    instruction in a filter, and use this in the JITs.  Except for ARM, the
    rest have only been compile-tested.
    
    Fixes: 3480593131e0 ("net: filter: get rid of BPF_S_* enum")
    Signed-off-by: Rabin Vincent <rabin@rab.in>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e6f38960cfdc8597056529de7def7a035f905fb
Author: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date:   Tue Jan 5 10:46:00 2016 +0100

    bridge: Only call /sbin/bridge-stp for the initial network namespace
    
    [ Upstream commit ff62198553e43cdffa9d539f6165d3e83f8a42bc ]
    
    [I stole this patch from Eric Biederman. He wrote:]
    
    > There is no defined mechanism to pass network namespace information
    > into /sbin/bridge-stp therefore don't even try to invoke it except
    > for bridge devices in the initial network namespace.
    >
    > It is possible for unprivileged users to cause /sbin/bridge-stp to be
    > invoked for any network device name which if /sbin/bridge-stp does not
    > guard against unreasonable arguments or being invoked twice on the
    > same network device could cause problems.
    
    [Hannes: changed patch using netns_eq]
    
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b8b611fe0f86f07a4ff4a5f3bcb0ea7ceb7da3b
Author: willy tarreau <w@1wt.eu>
Date:   Sun Jan 10 07:54:56 2016 +0100

    unix: properly account for FDs passed over unix sockets
    
    [ Upstream commit 712f4aad406bb1ed67f3f98d04c044191f0ff593 ]
    
    It is possible for a process to allocate and accumulate far more FDs than
    the process' limit by sending them over a unix socket then closing them
    to keep the process' fd count low.
    
    This change addresses this problem by keeping track of the number of FDs
    in flight per user and preventing non-privileged processes from having
    more FDs in flight than their configured FD limit.
    
    Reported-by: socketpair@gmail.com
    Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Mitigates: CVE-2013-4312 (Linux 2.0+)
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c6e734a347b811980593de1cd5561b7a6af89bf
Author: Rainer Weikusat <rweikusat@mobileactivedefense.com>
Date:   Sun Jan 3 18:56:38 2016 +0000

    af_unix: Fix splice-bind deadlock
    
    [ Upstream commit c845acb324aa85a39650a14e7696982ceea75dc1 ]
    
    On 2015/11/06, Dmitry Vyukov reported a deadlock involving the splice
    system call and AF_UNIX sockets,
    
    http://lists.openwall.net/netdev/2015/11/06/24
    
    The situation was analyzed as
    
    (a while ago) A: socketpair()
    B: splice() from a pipe to /mnt/regular_file
    	does sb_start_write() on /mnt
    C: try to freeze /mnt
    	wait for B to finish with /mnt
    A: bind() try to bind our socket to /mnt/new_socket_name
    	lock our socket, see it not bound yet
    	decide that it needs to create something in /mnt
    	try to do sb_start_write() on /mnt, block (it's
    	waiting for C).
    D: splice() from the same pipe to our socket
    	lock the pipe, see that socket is connected
    	try to lock the socket, block waiting for A
    B:	get around to actually feeding a chunk from
    	pipe to file, try to lock the pipe.  Deadlock.
    
    on 2015/11/10 by Al Viro,
    
    http://lists.openwall.net/netdev/2015/11/10/4
    
    The patch fixes this by removing the kern_path_create related code from
    unix_mknod and executing it as part of unix_bind prior acquiring the
    readlock of the socket in question. This means that A (as used above)
    will sb_start_write on /mnt before it acquires the readlock, hence, it
    won't indirectly block B which first did a sb_start_write and then
    waited for a thread trying to acquire the readlock. Consequently, A
    being blocked by C waiting for B won't cause a deadlock anymore
    (effectively, both A and B acquire two locks in opposite order in the
    situation described above).
    
    Dmitry Vyukov(<dvyukov@google.com>) tested the original patch.
    
    Signed-off-by: Rainer Weikusat <rweikusat@mobileactivedefense.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30cb7251399965589dff5e3dc15a7a9883296d40
Author: Florian Westphal <fw@strlen.de>
Date:   Thu Dec 31 14:26:33 2015 +0100

    connector: bump skb->users before callback invocation
    
    [ Upstream commit 55285bf09427c5abf43ee1d54e892f352092b1f1 ]
    
    Dmitry reports memleak with syskaller program.
    Problem is that connector bumps skb usecount but might not invoke callback.
    
    So move skb_get to where we invoke the callback.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc09ed7acb3848685326783da943cbbd65bf04e1
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Dec 29 17:49:25 2015 +0800

    sctp: sctp should release assoc when sctp_make_abort_user return NULL in sctp_close
    
    [ Upstream commit 068d8bd338e855286aea54e70d1c101569284b21 ]
    
    In sctp_close, sctp_make_abort_user may return NULL because of memory
    allocation failure. If this happens, it will bypass any state change
    and never free the assoc. The assoc has no chance to be freed and it
    will be kept in memory with the state it had even after the socket is
    closed by sctp_close().
    
    So if sctp_make_abort_user fails to allocate memory, we should abort
    the asoc via sctp_primitive_ABORT as well. Just like the annotation in
    sctp_sf_cookie_wait_prm_abort and sctp_sf_do_9_1_prm_abort said,
    "Even if we can't send the ABORT due to low memory delete the TCB.
    This is a departure from our typical NOMEM handling".
    
    But then the chunk is NULL (low memory) and the SCTP_CMD_REPLY cmd would
    dereference the chunk pointer, and system crash. So we should add
    SCTP_CMD_REPLY cmd only when the chunk is not NULL, just like other
    places where it adds SCTP_CMD_REPLY cmd.
    
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 195ef86c93aa5435db588f55ad6e78d5193f072f
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed Dec 23 13:42:43 2015 +0100

    net: cdc_ncm: avoid changing RX/TX buffers on MTU changes
    
    [ Upstream commit 1dfddff5fcd869fcab0c52fafae099dfa435a935 ]
    
    NCM buffer sizes are negotiated with the device independently of
    the network device MTU.  The RX buffers are allocated by the
    usbnet framework based on the rx_urb_size value set by cdc_ncm. A
    single RX buffer can hold a number of MTU sized packets.
    
    The default usbnet change_mtu ndo only modifies rx_urb_size if it
    is equal to hard_mtu.  And the cdc_ncm driver will set rx_urb_size
    and hard_mtu independently of each other, based on dwNtbInMaxSize
    and dwNtbOutMaxSize respectively. It was therefore assumed that
    usbnet_change_mtu() would never touch rx_urb_size.  This failed to
    consider the case where dwNtbInMaxSize and dwNtbOutMaxSize happens
    to be equal.
    
    Fix by implementing an NCM specific change_mtu ndo, modifying the
    netdev MTU without touching the buffer size settings.
    
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc72662587e40a6907326b9000182a6b6b166c43
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Mon Dec 21 10:55:45 2015 -0800

    addrconf: always initialize sysctl table data
    
    [ Upstream commit 5449a5ca9bc27dd51a462de7ca0b1cd861cd2bd0 ]
    
    When sysctl performs restrict writes, it allows to write from
    a middle position of a sysctl file, which requires us to initialize
    the table data before calling proc_dostring() for the write case.
    
    Fixes: 3d1bec99320d ("ipv6: introduce secret_stable to ipv6_devconf")
    Reported-by: Sasha Levin <sasha.levin@oracle.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Tested-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf918f00260aea19fb4d45142eb07cbd7999574f
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Mon Dec 21 12:54:45 2015 +0300

    ipv6/addrlabel: fix ip6addrlbl_get()
    
    [ Upstream commit e459dfeeb64008b2d23bdf600f03b3605dbb8152 ]
    
    ip6addrlbl_get() has never worked. If ip6addrlbl_hold() succeeded,
    ip6addrlbl_get() will exit with '-ESRCH'. If ip6addrlbl_hold() failed,
    ip6addrlbl_get() will use about to be free ip6addrlbl_entry pointer.
    
    Fix this by inverting ip6addrlbl_hold() check.
    
    Fixes: 2a8cc6c89039 ("[IPV6] ADDRCONF: Support RFC3484 configurable address selection policy table.")
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Reviewed-by: Cong Wang <cwang@twopensource.com>
    Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67bca9c45d02177c86aaabdca84f9baa77af7cfe
Author: Vijay Pandurangan <vijayp@vijayp.ca>
Date:   Fri Dec 18 14:34:59 2015 -0500

    veth: don’t modify ip_summed; doing so treats packets with bad checksums as good.
    
    [ Upstream commit ce8c839b74e3017996fad4e1b7ba2e2625ede82f ]
    
    Packets that arrive from real hardware devices have ip_summed ==
    CHECKSUM_UNNECESSARY if the hardware verified the checksums, or
    CHECKSUM_NONE if the packet is bad or it was unable to verify it. The
    current version of veth will replace CHECKSUM_NONE with
    CHECKSUM_UNNECESSARY, which causes corrupt packets routed from hardware to
    a veth device to be delivered to the application. This caused applications
    at Twitter to receive corrupt data when network hardware was corrupting
    packets.
    
    We believe this was added as an optimization to skip computing and
    verifying checksums for communication between containers. However, locally
    generated packets have ip_summed == CHECKSUM_PARTIAL, so the code as
    written does nothing for them. As far as we can tell, after removing this
    code, these packets are transmitted from one stack to another unmodified
    (tcpdump shows invalid checksums on both sides, as expected), and they are
    delivered correctly to applications. We didn’t test every possible network
    configuration, but we tried a few common ones such as bridging containers,
    using NAT between the host and a container, and routing from hardware
    devices to containers. We have effectively deployed this in production at
    Twitter (by disabling RX checksum offloading on veth devices).
    
    This code dates back to the first version of the driver, commit
    <e314dbdc1c0dc6a548ecf> ("[NET]: Virtual ethernet device driver"), so I
    suspect this bug occurred mostly because the driver API has evolved
    significantly since then. Commit <0b7967503dc97864f283a> ("net/veth: Fix
    packet checksumming") (in December 2010) fixed this for packets that get
    created locally and sent to hardware devices, by not changing
    CHECKSUM_PARTIAL. However, the same issue still occurs for packets coming
    in from hardware devices.
    
    Co-authored-by: Evan Jones <ej@evanjones.ca>
    Signed-off-by: Evan Jones <ej@evanjones.ca>
    Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Cc: Phil Sutter <phil@nwl.cc>
    Cc: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Vijay Pandurangan <vijayp@vijayp.ca>
    Acked-by: Cong Wang <cwang@twopensource.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 970106278dd0bc4403dc79ce18349e7383f087da
Author: Simon Horman <simon.horman@netronome.com>
Date:   Fri Dec 18 19:43:15 2015 +0900

    openvswitch: correct encoding of set tunnel action attributes
    
    [ Upstream commit e905eabc90a5b787d8708df164543ee295bea5f2 ]
    
    In a set action tunnel attributes should be encoded in a
    nested action.
    
    I noticed this because ovs-dpctl was reporting an error
    when dumping flows due to the incorrect encoding of tunnel attributes
    in a set action.
    
    Fixes: fc4099f17240 ("openvswitch: Fix egress tunnel info.")
    Signed-off-by: Simon Horman <simon.horman@netronome.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c3e006c2a46355572b37e0fe075c5b89158f99a
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Dec 3 15:03:34 2015 +0100

    xhci: refuse loading if nousb is used
    
    commit 1eaf35e4dd592c59041bc1ed3248c46326da1f5f upstream.
    
    The module should fail to load.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d905f125456a06ec755e075e10f80ee5e30ddb70
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Sat Nov 14 16:26:32 2015 +0800

    usb: core: lpm: fix usb3_hardware_lpm sysfs node
    
    commit bf5ce5bf3cc7136fd7fe5e8999a580bc93a9c8f6 upstream.
    
    Commit 655fe4effe0f ("usbcore: add sysfs support to xHCI usb3
    hardware LPM") introduced usb3_hardware_lpm sysfs node. This
    doesn't show the correct status of USB3 U1 and U2 LPM status.
    
    This patch fixes this by replacing usb3_hardware_lpm with two
    nodes, usb3_hardware_lpm_u1 (for U1) and usb3_hardware_lpm_u2
    (for U2), and recording the U1/U2 LPM status in right places.
    
    This patch should be back-ported to kernels as old as 4.3,
    that contains Commit 655fe4effe0f ("usbcore: add sysfs support
    to xHCI usb3 hardware LPM").
    
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c01e42f05d71d54da21f9300f9d9eacc855ed093
Author: Oliver Freyermuth <o.freyermuth@googlemail.com>
Date:   Mon Dec 28 18:37:38 2015 +0100

    USB: cp210x: add ID for ELV Marble Sound Board 1
    
    commit f7d7f59ab124748156ea551edf789994f05da342 upstream.
    
    Add the USB device ID for ELV Marble Sound Board 1.
    
    Signed-off-by: Oliver Freyermuth <o.freyermuth@googlemail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34cb88b89065f630933168fd4ac37afe4246f6c1
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Dec 16 14:06:37 2015 +0300

    USB: ipaq.c: fix a timeout loop
    
    commit abdc9a3b4bac97add99e1d77dc6d28623afe682b upstream.
    
    The code expects the loop to end with "retries" set to zero but, because
    it is a post-op, it will end set to -1.  I have fixed this by moving the
    decrement inside the loop.
    
    Fixes: 014aa2a3c32e ('USB: ipaq: minor ipaq_open() cleanup.')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28fb0f5b4fa9b9e201b2c6d781382601b60feee3
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Dec 16 13:32:38 2015 -0500

    USB: fix invalid memory access in hub_activate()
    
    commit e50293ef9775c5f1cf3fcc093037dd6a8c5684ea upstream.
    
    Commit 8520f38099cc ("USB: change hub initialization sleeps to
    delayed_work") changed the hub_activate() routine to make part of it
    run in a workqueue.  However, the commit failed to take a reference to
    the usb_hub structure or to lock the hub interface while doing so.  As
    a result, if a hub is plugged in and quickly unplugged before the work
    routine can run, the routine will try to access memory that has been
    deallocated.  Or, if the hub is unplugged while the routine is
    running, the memory may be deallocated while it is in active use.
    
    This patch fixes the problem by taking a reference to the usb_hub at
    the start of hub_activate() and releasing it at the end (when the work
    is finished), and by locking the hub interface while the work routine
    is running.  It also adds a check at the start of the routine to see
    if the hub has already been disconnected, in which nothing should be
    done.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Alexandru Cornea <alexandru.cornea@intel.com>
    Tested-by: Alexandru Cornea <alexandru.cornea@intel.com>
    Fixes: 8520f38099cc ("USB: change hub initialization sleeps to delayed_work")
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5bf9d4e7777410e4c48ab18134315bd7e2a56a02
Author: Antti Palosaari <crope@iki.fi>
Date:   Mon Oct 26 18:58:14 2015 -0200

    airspy: increase USB control message buffer size
    
    commit aa0850e1d56623845b46350ffd971afa9241886d upstream.
    
    Driver requested device firmware version string during probe using
    only 24 byte long buffer. That buffer is too small for newer firmware
    versions, which causes device firmware hang - device stops responding
    to any commands after that. Increase buffer size to 128 which should
    be enough for any current and future version strings.
    
    Link: https://github.com/airspy/host/issues/27
    
    Reported-by: Benjamin Vernoux <bvernoux@gmail.com>
    Signed-off-by: Antti Palosaari <crope@iki.fi>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe49f531c8b6546c0feaa3d60def613336264e06
Author: Chunfeng Yun <chunfeng.yun@mediatek.com>
Date:   Fri Dec 4 15:53:43 2015 +0200

    usb: xhci: fix config fail of FS hub behind a HS hub with MTT
    
    commit 096b110a3dd3c868e4610937c80d2e3f3357c1a9 upstream.
    
    if a full speed hub connects to a high speed hub which
    supports MTT, the MTT field of its slot context will be set
    to 1 when xHCI driver setups an xHCI virtual device in
    xhci_setup_addressable_virt_dev(); once usb core fetch its
    hub descriptor, and need to update the xHC's internal data
    structures for the device, the HUB field of its slot context
    will be set to 1 too, meanwhile MTT is also set before,
    this will cause configure endpoint command fail, so in the
    case, we should clear MTT to 0 for full speed hub according
    to section 6.2.2
    
    Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 84ce84b9da38aaa39d1277d69090d00fdf88749f
Author: Vinod Koul <vinod.koul@intel.com>
Date:   Thu Jan 7 21:48:14 2016 +0530

    ASoC: compress: Fix compress device direction check
    
    commit a1068045883ed4a18363a4ebad0c3d55e473b716 upstream.
    
    The detection of direction for compress was only taking into account codec
    capabilities and not CPU ones. Fix this by checking the CPU side capabilities
    as well
    
    Tested-by: Ashish Panwar <ashish.panwar@intel.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53409951f775e32e06b3ba4db454187fe9d1cf38
Author: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Date:   Wed Jan 6 15:15:37 2016 +0000

    ASoC: wm5110: Fix PGA clear when disabling DRE
    
    commit 24338722cfa23fdf4e08c6189a11f7e3a902d86a upstream.
    
    We don't want to use a bypassed write in wm5110_clear_pga_volume,
    we might disable the DRE whilst the CODEC is powered down. A
    normal regmap_write will always go to the hardware (when not on
    cache_only) even if the written value matches the cache. As using
    a normal write will still achieve the desired behaviour of bring
    the cache and hardware in sync, this patch updates the function
    to use a normal write, which avoids issues when the CODEC is
    powered down.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7027f29e8ea06bda40b0e479d60273a98bf664c5
Author: Nikesh Oswal <Nikesh.Oswal@cirrus.com>
Date:   Wed Dec 23 14:18:05 2015 +0000

    ASoC: arizona: Fix bclk for sample rates that are multiple of 4kHz
    
    commit e73694d871867cae8471d2350ce89acb38bc2b63 upstream.
    
    For a sample rate of 12kHz the bclk was taken from the 44.1kHz table as
    we test for a multiple of 8kHz. This patch fixes this issue by testing
    for multiples of 4kHz instead.
    
    Signed-off-by: Nikesh Oswal <Nikesh.Oswal@cirrus.com>
    Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b44c9d84ada661d94030792f128c3acfebd3d4ec
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Fri Dec 11 13:06:24 2015 +0200

    ASoC: davinci-mcasp: Fix XDATA check in mcasp_start_tx
    
    commit e2a0c9fa80227be5ee017b5476638829dd41cb39 upstream.
    
    The condition for checking for XDAT being cleared was not correct.
    
    Fixes: 36bcecd0a73eb ("ASoC: davinci-mcasp: Correct TX start sequence")
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e201204474d4760bb496b77b01b8e143cdaf20e
Author: Mans Rullgard <mans@mansr.com>
Date:   Fri Dec 11 11:27:08 2015 +0000

    ASoC: wm8974: set cache type for regmap
    
    commit 1ea5998afe903384ddc16391d4c023cd4c867bea upstream.
    
    Attempting to use this codec driver triggers a BUG() in regcache_sync()
    since no cache type is set.  The register map of this device is fairly
    small and has few holes so a flat cache is suitable.
    
    Signed-off-by: Mans Rullgard <mans@mansr.com>
    Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66e7f16cf867a10f4023ddd4cee6ec385b2964ce
Author: John Keeping <john@metanate.com>
Date:   Wed Dec 9 11:38:13 2015 +0000

    ASoC: es8328: Fix deemphasis values
    
    commit 84ebac4d04d25ac5c1b1dc3ae621fd465eb38f4e upstream.
    
    This is using completely the wrong mask and value when updating the
    register.  Since the correct values are already defined in the header,
    switch to using a table with explicit constants rather than shifting the
    array index.
    
    Signed-off-by: John Keeping <john@metanate.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6afa12c119f1e09639da424a9ccefebd08e47cf6
Author: Sachin Pandhare <sachinpandhare@gmail.com>
Date:   Tue Nov 10 23:38:02 2015 +0530

    ASoC: wm8962: correct addresses for HPF_C_0/1
    
    commit e9f96bc53c1b959859599cb30ce6fd4fbb4448c2 upstream.
    
    From datasheet:
    R17408 (4400h) HPF_C_1
    R17409 (4401h) HPF_C_0
    17048 -> 17408 (0x4400)
    17049 -> 17409 (0x4401)
    
    Signed-off-by: Sachin Pandhare <sachinpandhare@gmail.com>
    Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76a3f89052d254992ddfd39826d7b1b8e4c99c35
Author: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date:   Thu Nov 5 23:53:03 2015 +0000

    ASoC: rsnd: fixup SCU_SYS_INT_EN1 address
    
    commit 021c5d9469960b8c68aa1d1825f7bfd8d61e157d upstream.
    
    cfcefe0126 ("ASoC: rsnd: add recovery support for under/over flow
    error on SRC") added SCU_SYS_INT_EN1 address, but it should be
    0x1d4, not 0x1c4. This patch fixup it.
    
    Fixes: cfcefe0126 ("ASoC: rsnd: add recovery support for under/over flow error on SRC")
    Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc0733fdbfba812928e01fbc5bf9e60dab1fb678
Author: Axel Lin <axel.lin@ingics.com>
Date:   Mon Oct 5 21:22:40 2015 +0800

    ASoC: rt286: Fix run time error while modifying const data
    
    commit dc6d84c69cf8296b1e8e2fd0b1e115b7787ef4e9 upstream.
    
    Make a copy of memory for index_cache rather than directly use the
    rt286_index_def to avoid run time error.
    
    Fixes: c418a84a8c8f ("ASoC: Constify reg_default tables")
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06b00accf521abfdce83cf8d34069445a35799d2
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Jan 21 17:19:31 2016 +0100

    ALSA: timer: Handle disconnection more safely
    
    commit 230323dac060123c340cf75997971145a42661ee upstream.
    
    Currently ALSA timer device doesn't take the disconnection into
    account very well; it merely unlinks the timer device at disconnection
    callback but does nothing else.  Because of this, when an application
    accessing the timer device is disconnected, it may release the
    resource before actually closed.  In most cases, it results in a
    warning message indicating a leftover timer instance like:
       ALSA: timer xxxx is busy?
    But basically this is an open race.
    
    This patch tries to address it.  The strategy is like other ALSA
    devices: namely,
    - Manage card's refcount at each open/close
    - Wake up the pending tasks at disconnection
    - Check the shutdown flag appropriately at each possible call
    
    Note that this patch has one ugly hack to handle the wakeup of pending
    tasks.  It'd be cleaner to introduce a new disconnect op to
    snd_timer_instance ops.  But since it would lead to internal ABI
    breakage and it eventually increase my own work when backporting to
    stable kernels, I took a different path to implement locally in
    timer.c.  A cleanup patch will follow at next for 4.5 kernel.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109431
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9d36f2797e5ab63b00ca9b3e108d12e00af5960
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 20 17:19:02 2016 +0100

    ALSA: hda - Flush the pending probe work at remove
    
    commit 991f86d7ae4e1f8c15806e62f97af519e3cdd860 upstream.
    
    As HD-audio driver does deferred probe internally via workqueue, the
    driver might go into the mixed state doing both probe and remove when
    the module gets unloaded during the probe work.  This eventually
    triggers an Oops, unsurprisingly.
    
    For avoiding this race, we just need to flush the pending probe work
    explicitly before actually starting the resource release.
    
    Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=960710
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a55b7c03e524ac98360e9f3fba9ad5ca14ca3ff8
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 18 09:17:30 2016 +0100

    ALSA: hda - Fix bass pin fixup for ASUS N550JX
    
    commit db8948e653e12b218058bb6696f4a33fa7845f64 upstream.
    
    ASUS N550JX (PCI SSID 1043:13df) requires the same fixup for a bass
    speaker output pin as other N550 models.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=110001
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d1d8c4d8c17f938f9f95fc22dbf7c937d664604
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 18 14:12:40 2016 +0100

    ALSA: control: Avoid kernel warnings from tlv ioctl with numid 0
    
    commit c0bcdbdff3ff73a54161fca3cb8b6cdbd0bb8762 upstream.
    
    When a TLV ioctl with numid zero is handled, the driver may spew a
    kernel warning with a stack trace at each call.  The check was
    intended obviously only for a kernel driver, but not for a user
    interaction.  Let's fix it.
    
    This was spotted by syzkaller fuzzer.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d10aae7acaf91cdc6fdd5a3d4506af5f6ec957c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 18 13:52:47 2016 +0100

    ALSA: hrtimer: Fix stall by hrtimer_cancel()
    
    commit 2ba1fe7a06d3624f9a7586d672b55f08f7c670f3 upstream.
    
    hrtimer_cancel() waits for the completion from the callback, thus it
    must not be called inside the callback itself.  This was already a
    problem in the past with ALSA hrtimer driver, and the early commit
    [fcfdebe70759: ALSA: hrtimer - Fix lock-up] tried to address it.
    
    However, the previous fix is still insufficient: it may still cause a
    lockup when the ALSA timer instance reprograms itself in its callback.
    Then it invokes the start function even in snd_timer_interrupt() that
    is called in hrtimer callback itself, results in a CPU stall.  This is
    no hypothetical problem but actually triggered by syzkaller fuzzer.
    
    This patch tries to fix the issue again.  Now we call
    hrtimer_try_to_cancel() at both start and stop functions so that it
    won't fall into a deadlock, yet giving some chance to cancel the queue
    if the functions have been called outside the callback.  The proper
    hrtimer_cancel() is called in anyway at closing, so this should be
    enough.
    
    Reported-and-tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46fa470e1fbaa26c4780fb1bd1a8f2674b6cb736
Author: Nicolas Boichat <drinkcat@chromium.org>
Date:   Mon Jan 18 21:35:00 2016 +0800

    ALSA: pcm: Fix snd_pcm_hw_params struct copy in compat mode
    
    commit 43c54b8c7cfe22f868a751ba8a59abf1724160b1 upstream.
    
    This reverts one hunk of
    commit ef44a1ec6eee ("ALSA: sound/core: use memdup_user()"), which
    replaced a number of kmalloc followed by memcpy with memdup calls.
    
    In this case, we are copying from a struct snd_pcm_hw_params32 to
    a struct snd_pcm_hw_params, but the latter is 4 bytes longer than
    the 32-bit version, so we need to separate kmalloc and copy calls.
    
    This actually leads to an out-of-bounds memory access later on
    in sound/soc/soc-pcm.c:soc_pcm_hw_params() (detected using KASan).
    
    Fixes: ef44a1ec6eee ('ALSA: sound/core: use memdup_user()')
    Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07ce45375c30ca2ea3e7de24cacd76f8c1cbae1c
Author: Nicolas Boichat <drinkcat@chromium.org>
Date:   Mon Jan 18 21:35:01 2016 +0800

    ALSA: seq: Fix snd_seq_call_port_info_ioctl in compat mode
    
    commit 9586495dc3011a80602329094e746dbce16cb1f1 upstream.
    
    This reverts one hunk of
    commit ef44a1ec6eee ("ALSA: sound/core: use memdup_user()"), which
    replaced a number of kmalloc followed by memcpy with memdup calls.
    
    In this case, we are copying from a struct snd_seq_port_info32 to a
    struct snd_seq_port_info, but the latter is 4 bytes longer than the
    32-bit version, so we need to separate kmalloc and copy calls.
    
    Fixes: ef44a1ec6eee ('ALSA: sound/core: use memdup_user()')
    Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54b51e73a460d653a1a676d0d3703bb9058a1f10
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jan 15 12:59:25 2016 +0100

    ALSA: hda - Add fixup for Dell Latitidue E6540
    
    commit cf52103a218744f3fd18111325c28e95aa9cd226 upstream.
    
    Another Dell model, another fixup entry: Latitude E6540 needs the same
    fixup as other Latitude E series as workaround for noise problems.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=104341
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit baa3a675b24fe17d5e514d71561d97f46bc6086f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 13 21:35:06 2016 +0100

    ALSA: timer: Fix double unlink of active_list
    
    commit ee8413b01045c74340aa13ad5bdf905de32be736 upstream.
    
    ALSA timer instance object has a couple of linked lists and they are
    unlinked unconditionally at snd_timer_stop().  Meanwhile
    snd_timer_interrupt() unlinks it, but it calls list_del() which leaves
    the element list itself unchanged.  This ends up with unlinking twice,
    and it was caught by syzkaller fuzzer.
    
    The fix is to use list_del_init() variant properly there, too.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7066da22b1eb40e955f9dfe57022816fae53d3cf
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 13 17:48:01 2016 +0100

    ALSA: timer: Fix race among timer ioctls
    
    commit af368027a49a751d6ff4ee9e3f9961f35bb4fede upstream.
    
    ALSA timer ioctls have an open race and this may lead to a
    use-after-free of timer instance object.  A simplistic fix is to make
    each ioctl exclusive.  We have already tread_sem for controlling the
    tread, and extend this as a global mutex to be applied to each ioctl.
    
    The downside is, of course, the worse concurrency.  But these ioctls
    aren't to be parallel accessible, in anyway, so it should be fine to
    serialize there.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fd5f7316a62babac9fa2dd8b47f8135ad26767f
Author: Hui Wang <hui.wang@canonical.com>
Date:   Wed Jan 13 11:51:38 2016 +0800

    ALSA: hda - fix the headset mic detection problem for a Dell laptop
    
    commit 0a1f90a982e85f4921bed606a6b41a24f4de2ae1 upstream.
    
    The machine uses codec alc255, and the pin configuration value for
    pin 0x14 on this machine is 0x90171130 which is not in the pin quirk
    table yet.
    
    BugLink: https://bugs.launchpad.net/bugs/1533461
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea7f3d59628930dc29482a292e2a55c81cac52a4
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Jan 14 16:30:58 2016 +0100

    ALSA: timer: Harden slave timer list handling
    
    commit b5a663aa426f4884c71cd8580adae73f33570f0d upstream.
    
    A slave timer instance might be still accessible in a racy way while
    operating the master instance as it lacks of locking.  Since the
    master operation is mostly protected with timer->lock, we should cope
    with it while changing the slave instance, too.  Also, some linked
    lists (active_list and ack_list) of slave instances aren't unlinked
    immediately at stopping or closing, and this may lead to unexpected
    accesses.
    
    This patch tries to address these issues.  It adds spin lock of
    timer->lock (either from master or slave, which is equivalent) in a
    few places.  For avoiding a deadlock, we ensure that the global
    slave_active_lock is always locked at first before each timer lock.
    
    Also, ack and active_list of slave instances are properly unlinked at
    snd_timer_stop() and snd_timer_close().
    
    Last but not least, remove the superfluous call of _snd_timer_stop()
    at removing slave links.  This is a noop, and calling it may confuse
    readers wrt locking.  Further cleanup will follow in a later patch.
    
    Actually we've got reports of use-after-free by syzkaller fuzzer, and
    this hopefully fixes these issues.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e619a8985dfa23e64bbba3a6004080bb8fe9197
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 13 07:20:13 2016 +0100

    ALSA: usb-audio: Fix mixer ctl regression of Native Instrument devices
    
    commit c4a359a0049f2e17b012b31e801e96566f6391e5 upstream.
    
    The commit [da6d276957ea: ALSA: usb-audio: Add resume support for
    Native Instruments controls] brought a regression where the Native
    Instrument audio devices don't get the correct value at update due to
    the missing shift at writing.  This patch addresses it.
    
    Fixes: da6d276957ea ('ALSA: usb-audio: Add resume support for Native Instruments controls')
    Reported-and-tested-by: Owen Williams <owilliams@mixxx.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cd0e287873744ba69ee8b399e66eb9381b6b3c0
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jan 12 21:06:39 2016 +0100

    ALSA: hda - Fix white noise on Dell Latitude E5550
    
    commit 98070576c4f77509459c83cd2358617ef0769a38 upstream.
    
    Dell Latitude E5550 (1028:062c) has a white noise problem like other
    Latitude E models, and it gets fixed by the very same quirk as well.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=110591
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a5c8e77d66f24446b7e741ac2e3ae3127d9dd54
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jan 12 15:36:27 2016 +0100

    ALSA: seq: Fix race at timer setup and close
    
    commit 3567eb6af614dac436c4b16a8d426f9faed639b3 upstream.
    
    ALSA sequencer code has an open race between the timer setup ioctl and
    the close of the client.  This was triggered by syzkaller fuzzer, and
    a use-after-free was caught there as a result.
    
    This patch papers over it by adding a proper queue->timer_mutex lock
    around the timer-related calls in the relevant code path.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2c79763f17ea9706b168f1f9cfe4ebee8361b9e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jan 12 14:03:33 2016 +0100

    ALSA: usb-audio: Avoid calling usb_autopm_put_interface() at disconnect
    
    commit 5c06d68bc2a174a6b82dce9f100f55173b9a5189 upstream.
    
    ALSA PCM may still have a leftover instance after disconnection and
    it delays its release.  The problem is that the PCM close code path of
    USB-audio driver has a call of snd_usb_autosuspend().  This involves
    with the call of usb_autopm_put_interface() and it may lead to a
    kernel Oops due to the NULL object like:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000190
     IP: [<ffffffff815ae7ef>] usb_autopm_put_interface+0xf/0x30 PGD 0
     Call Trace:
      [<ffffffff8173bd94>] snd_usb_autosuspend+0x14/0x20
      [<ffffffff817461bc>] snd_usb_pcm_close.isra.14+0x5c/0x90
      [<ffffffff8174621f>] snd_usb_playback_close+0xf/0x20
      [<ffffffff816ef58a>] snd_pcm_release_substream.part.36+0x3a/0x90
      [<ffffffff816ef6b3>] snd_pcm_release+0xa3/0xb0
      [<ffffffff816debb0>] snd_disconnect_release+0xd0/0xe0
      [<ffffffff8114d417>] __fput+0x97/0x1d0
      [<ffffffff8114d589>] ____fput+0x9/0x10
      [<ffffffff8109e452>] task_work_run+0x72/0x90
      [<ffffffff81088510>] do_exit+0x280/0xa80
      [<ffffffff8108996a>] do_group_exit+0x3a/0xa0
      [<ffffffff8109261f>] get_signal+0x1df/0x540
      [<ffffffff81040903>] do_signal+0x23/0x620
      [<ffffffff8114c128>] ? do_readv_writev+0x128/0x200
      [<ffffffff810012e1>] prepare_exit_to_usermode+0x91/0xd0
      [<ffffffff810013ba>] syscall_return_slowpath+0x9a/0x120
      [<ffffffff817587cd>] ? __sys_recvmsg+0x5d/0x70
      [<ffffffff810d2765>] ? ktime_get_ts64+0x45/0xe0
      [<ffffffff8115dea0>] ? SyS_poll+0x60/0xf0
      [<ffffffff818d2327>] int_ret_from_sys_call+0x25/0x8f
    
    We have already a check of disconnection in snd_usb_autoresume(), but
    the check is missing its counterpart.  The fix is just to put the same
    check in snd_usb_autosuspend(), too.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109431
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f54677f06bf3fd3c3f327d14ded94a0330d8d0c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jan 12 12:38:02 2016 +0100

    ALSA: seq: Fix missing NULL check at remove_events ioctl
    
    commit 030e2c78d3a91dd0d27fef37e91950dde333eba1 upstream.
    
    snd_seq_ioctl_remove_events() calls snd_seq_fifo_clear()
    unconditionally even if there is no FIFO assigned, and this leads to
    an Oops due to NULL dereference.  The fix is just to add a proper NULL
    check.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 869859fc2382474ce586953c391776ded5b2c548
Author: David Henningsson <david.henningsson@canonical.com>
Date:   Mon Jan 11 09:33:14 2016 +0100

    ALSA: hda - Fixup inverted internal mic for Lenovo E50-80
    
    commit 56f27013482c0803d978b667fe85de04ce9357cd upstream.
    
    Inform userspace that one channel of the internal mic has reversed
    polarity, so it does not attempt to add both channels together and
    end up with silence.
    
    Reported-by: Andrzej Mendel <andrzej.mendel@gmail.com>
    Alsa-info: http://www.alsa-project.org/db/?f=3088f82a0cf977855f92af9db8ad406c04f71efa
    BugLink: https://bugs.launchpad.net/bugs/1529624
    Signed-off-by: David Henningsson <david.henningsson@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04888afb85570aa3a807ec253c64bad59d193e67
Author: Jurgen Kramer <gtmkramer@xs4all.nl>
Date:   Mon Jan 11 08:16:58 2016 +0100

    ALSA: usb: Add native DSD support for Oppo HA-1
    
    commit a4eae3a506ea4a7d4474cd74e20b423fa8053d91 upstream.
    
    This patch adds native DSD support for the Oppo HA-1. It uses a XMOS chipset
    but they use their own vendor ID.
    
    Signed-off-by: Jurgen Kramer <gtmkramer@xs4all.nl>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c571d9767a2699796633c0b28bc0b4019575fe8
Author: Hui Wang <hui.wang@canonical.com>
Date:   Mon Dec 28 11:35:25 2015 +0800

    ALSA: hda - Add keycode map for alc input device
    
    commit c7b60a89516beb20a352ec85c73a8fccd5becf26 upstream.
    
    Then users can remap the keycode from userspace. If without the remap,
    the input device will pass KEY_MICMUTE to userspace, but in X11 layer,
    it uses KEY_F20 rather than KEY_MICMUTE for XF86AudioMicMute. After
    adding the keycode map, users can remap the keycode to any value users
    want.
    
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ea582142ae284d27d9e3c3eb2c2af53d39e4919
Author: Kailang <kailang@realtek.com>
Date:   Mon Dec 28 11:35:24 2015 +0800

    ALSA: hda - Add mic mute hotkey quirk for Lenovo ThinkCentre AIO
    
    commit 3694cb2947db50753caf432db067487eafae7b9b upstream.
    
    The Lenovo ThinkCenter AIO uses Line2 (NID 0x1b) to implement the
    micmute hotkey, here we register an input device and use Line2 unsol
    event to collect the hotkey pressing or releasing.
    
    In the meanwhile, the micmute led is controlled by GPIO2, so we
    use an existing function alc_fixup_gpio_mic_mute_hook() to control
    the led.
    
    [Hui: And there are two places to register the input device, to make
    the code simple and clean, move the two same code sections into a
    function.]
    
    Signed-off-by: Kailang <kailang@realtek.com>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 660aaf6ba99a5d1a3e7b96fae0c542674b25f821
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Tue Dec 22 00:45:43 2015 +0100

    ALSA: hda/realtek - Fix silent headphone output on MacPro 4,1 (v2)
    
    commit 9f660a1c43890c2cdd1f423fd73654e7ca08fe56 upstream.
    
    Without this patch, internal speaker and line-out work,
    but front headphone output jack stays silent on the
    Mac Pro 4,1.
    
    This code path also gets executed on the MacPro 5,1 due
    to identical codec SSID, but i don't know if it has any
    positive or adverse effects there or not.
    
    (v2) Implement feedback from Takashi Iwai: Reuse
         alc889_fixup_mbp_vref and just add a new nid
         0x19 for the MacPro 4,1.
    
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f29fdd314eacc7fbee83c4f57ff24184af5cfad6
Author: Xiong Zhang <xiong.y.zhang@intel.com>
Date:   Fri Dec 18 13:29:18 2015 +0800

    ALSA: hda - Set SKL+ hda controller power at freeze() and thaw()
    
    commit 3e6db33aaf1d42a30339f831ec4850570d6cc7a3 upstream.
    
    It takes three minutes to enter into hibernation on some OEM SKL
    machines and we see many codec spurious response after thaw() opertion.
    This is because HDA is still in D0 state after freeze() call and
    pci_pm_freeze/pci_pm_freeze_noirq() don't set D3 hot in pci_bus driver.
    It seems bios still access HDA when system enter into freeze state,
    HDA will receive codec response interrupt immediately after thaw() call.
    Because of this unexpected interrupt, HDA enter into a abnormal
    state and slow down the system enter into hibernation.
    
    In this patch, we put HDA into D3 hot state in azx_freeze_noirq() and
    put HDA into D0 state in azx_thaw_noirq().
    
    V2: Only apply this fix to SKL+
        Fix compile error when CONFIG_PM_SLEEP isn't defined
    
    [Yet another fix for CONFIG_PM_SLEEP ifdef and the additional comment
     by tiwai]
    
    Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6db1818d6eec22a5405a86ff2681241f70aa8b48
Author: Anssi Hannula <anssi.hannula@iki.fi>
Date:   Sun Dec 13 20:49:59 2015 +0200

    ALSA: usb-audio: Add sample rate inquiry quirk for AudioQuest DragonFly
    
    commit 12a6116e66695a728bcb9616416c508ce9c051a1 upstream.
    
    Avoid getting sample rate on AudioQuest DragonFly as it is unsupported
    and causes noisy "cannot get freq at ep 0x1" messages when playback
    starts.
    
    Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40e2ef2928968478d2871bb2e1903728b2b4f58c
Author: Anssi Hannula <anssi.hannula@iki.fi>
Date:   Sun Dec 13 20:49:58 2015 +0200

    ALSA: usb-audio: Add a more accurate volume quirk for AudioQuest DragonFly
    
    commit 42e3121d90f42e57f6dbd6083dff2f57b3ec7daa upstream.
    
    AudioQuest DragonFly DAC reports a volume control range of 0..50
    (0x0000..0x0032) which in USB Audio means a range of 0 .. 0.2dB, which
    is obviously incorrect and would cause software using the dB information
    in e.g. volume sliders to have a massive volume difference in 100..102%
    range.
    
    Commit 2d1cb7f658fb ("ALSA: usb-audio: add dB range mapping for some
    devices") added a dB range mapping for it with range 0..50 dB.
    
    However, the actual volume mapping seems to be neither linear volume nor
    linear dB scale, but instead quite close to the cubic mapping e.g.
    alsamixer uses, with a range of approx. -53...0 dB.
    
    Replace the previous quirk with a custom dB mapping based on some basic
    output measurements, using a 10-item range TLV (which will still fit in
    alsa-lib MAX_TLV_RANGE_SIZE).
    
    Tested on AudioQuest DragonFly HW v1.2. The quirk is only applied if the
    range is 0..50, so if this gets fixed/changed in later HW revisions it
    will no longer be applied.
    
    v2: incorporated Takashi Iwai's suggestion for the quirk application
    method
    
    Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd6deb4dbdf3ab11ee43f75cc321a3fbf6663489
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Dec 15 14:59:58 2015 +0100

    ALSA: hda - Set codec to D3 at reboot/shutdown on Thinkpads
    
    commit 70a0976b0c0d90f4246d7e63359d796ec82b87d6 upstream.
    
    Lenovo Thinkpads with Realtek codecs may still have some loud
    crackling noises at reboot/shutdown even though a few previous fixes
    have been applied.  It's because the previous fix (disabling the
    default shutup callback) takes effect only at transition of the codec
    power state.  Meanwhile, at reboot or shutdown, we don't take down the
    codec power as default, thus it triggers the same problem unless the
    codec is powered down casually by runtime PM.
    
    This patch tries to address the issue.  It gives two things:
    - implement the separate reboot_notify hook to struct alc_spec, and
      call it optionally if defined.
    - turn off the codec to D3 for Thinkpad models via this new callback
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=958439
    Reported-and-tested-by: Benjamin Poirier <bpoirier@suse.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75e847f2cd2f4a1f91de2d80b18785575d46f15a
Author: David Henningsson <david.henningsson@canonical.com>
Date:   Tue Dec 15 14:44:03 2015 +0100

    ALSA: hda - Fix headphone mic input on a few Dell ALC293 machines
    
    commit c04017ea81dc1eccae87be7ac7b82b2972f9931f upstream.
    
    These laptops support both headphone, headset and mic modes
    for the 3.5mm jack.
    
    BugLink: https://bugs.launchpad.net/bugs/1526330
    Signed-off-by: David Henningsson <david.henningsson@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39b6343355308b4d79946a9125bfb5acbe785294
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Dec 10 23:30:43 2015 +0100

    ALSA: hda - Apply click noise workaround for Thinkpads generically
    
    commit 157f0b7f6c0cc0bc88647390006e959e267a0143 upstream.
    
    It seems that a workaround for Thinkpad T440s crackling noise can be
    applied generically to all Thinkpad models: namely, disabling the
    default alc269 shutup callback.  This patch moves it to the existing
    alc_fixup_tpt440_dock() while also replacing the rest code with
    another existing alc_fixup_disable_aamix().  It resulted in a good
    code reduction.
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=958439
    Reported-and-tested-by: Benjamin Poirier <bpoirier@suse.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 114f2b258eded2a6fa1fe0218753d9b107052843
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Dec 10 12:20:20 2015 +0100

    ALSA: hda - Add a fixup for Thinkpad X1 Carbon 2nd
    
    commit b6903c0ed9f0bcbbe88f67f7ed43d1721cbc6235 upstream.
    
    Apply the same fixup for Thinkpad with dock to Thinkpad X1 Carbon 2nd,
    too.  This reduces the annoying loud cracking noise problem, as well
    as the support of missing docking port.
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=958439
    Reported-and-tested-by: Benjamin Poirier <bpoirier@suse.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9183e8d894e8e6d4bbe98fac93183ffcddc5d461
Author: Gabriele Martino <g.martino@gmx.com>
Date:   Wed Dec 9 17:05:58 2015 +0100

    ALSA: hda/ca0132 - quirk for Alienware 17 2015
    
    commit 5328e1ea87fb2b5cf695115df4325c1913209e97 upstream.
    
    The Alienware 17 (2015) has the same card and pin configuration of the
    Alienware 15, so the same quirks must be applied.
    
    Signed-off-by: Gabriele Martino <g.martino@gmx.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e33d965dccf33d4a50ba59f1135e288cfa71ea5d
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Dec 9 15:17:43 2015 +0100

    ALSA: hda - Fix noise problems on Thinkpad T440s
    
    commit 9a811230481243f384b8036c6a558bfdbd961f78 upstream.
    
    Lenovo Thinkpad T440s suffers from constant background noises, and it
    seems to be a generic hardware issue on this model:
      https://forums.lenovo.com/t5/ThinkPad-T400-T500-and-newer-T/T440s-speaker-noise/td-p/1339883
    
    As the noise comes from the analog loopback path, disabling the path
    is the easy workaround.
    
    Also, the machine gives significant cracking noises at PM suspend.  A
    workaround found by trial-and-error is to disable the shutup callback
    currently used for ALC269-variant.
    
    This patch addresses these noise issues by introducing a new fixup
    chain.  Although the same workaround might be applicable to other
    Thinkpad models, it's applied only to T440s (17aa:220c) in this patch,
    so far, just to be safe (you chicken!).  As a compromise, a new model
    option string "tp440" is provided now, though, so that owners of other
    Thinkpad models can test it more easily.
    
    Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=958504
    Reported-and-tested-by: Tim Hardeck <thardeck@suse.de>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e7974a48987ec0863d68704e4a0a18f0b7d08ea
Author: Hui Wang <hui.wang@canonical.com>
Date:   Tue Dec 8 12:27:18 2015 +0800

    ALSA: hda - Fixing speaker noise on the two latest thinkpad models
    
    commit 23adc192b862b69ad80a40bd5206e337f41264ac upstream.
    
    We have two latest thinkpad laptop models which are all based on the
    Intel skylake platforms, and all of them have the codec alc293 on
    them. When the machines boot to the desktop, an greeting dialogue
    shows up with the notification sound. But on these two models, there
    is noise with the notification sound. We have 3 SKUs for each of
    the models, all of them have this problem.
    
    So far, this problem is only specific to these two thinkpad models,
    we did not find this problem on the old thinkpad models with the
    codec alc293 or alc292.
    
    A workaround for this problem is disabling the aamix.
    
    BugLink: https://bugs.launchpad.net/bugs/1523517
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53e72e4a105f0ce943ac5afe0e06dd1eecd6b711
Author: David Henningsson <david.henningsson@canonical.com>
Date:   Mon Dec 7 11:29:31 2015 +0100

    ALSA: hda - Add inverted dmic for Packard Bell DOTS
    
    commit 02f6ff90400d055f08b0ba0b5f0707630b6faed7 upstream.
    
    On the internal mic of the Packard Bell DOTS, one channel
    has an inverted signal. Add a quirk to fix this up.
    
    BugLink: https://bugs.launchpad.net/bugs/1523232
    Signed-off-by: David Henningsson <david.henningsson@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b46082e9ec37dbbd428dcb4393d9cfedb70ad6e5
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Dec 4 16:44:24 2015 +0100

    ALSA: rme96: Fix unexpected volume reset after rate changes
    
    commit a74a821624c0c75388a193337babd17a8c02c740 upstream.
    
    rme96 driver needs to reset DAC depending on the sample rate, and this
    results in resetting to the max volume suddenly.  It's because of the
    missing call of snd_rme96_apply_dac_volume().
    
    However, calling this function right after the DAC reset still may not
    work, and we need some delay before this call.  Since the DAC reset
    and the procedure after that are performed in the spinlock, we delay
    the DAC volume restore at the end after the spinlock.
    
    Reported-and-tested-by: Sylvain LABOISNE <maeda1@free.fr>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18b080581f0b5c7b0ff87871806a9525a60cccc0
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 27 14:23:00 2015 +0100

    ALSA: hda - Skip ELD notification during system suspend
    
    commit 8ae743e82f0b86f3b860c27fc2c8f574cf959fd0 upstream.
    
    The recent addition of ELD notifier for Intel HDMI/DP codec may lead
    the bad codec connection found as kernel messages like below:
     Suspending console(s) (use no_console_suspend to debug)
     hdmi_present_sense: snd_hda_codec_hdmi hdaudioC0D2: HDMI status: Codec=2 Pin=6 Presence_Detect=1 ELD_Valid=1
     snd_hda_intel 0000:00:1f.3: spurious response 0x0:0x2, last cmd=0x206f2e08
     snd_hda_intel 0000:00:1f.3: spurious response 0x0:0x2, last cmd=0x206f2e08
     ....
      snd_hda_codec_hdmi hdaudioC0D2: HDMI: ELD buf size is 0, force 128
      snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x206f2f00
     snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x206f2f00
     snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to single_cmd mode: last cmd=0x206f2f00
     azx_single_wait_for_response: 42 callbacks suppressed
    
    This seems appearing when the sound driver went to suspend before i915
    driver.  Then i915 driver disables HDMI/DP audio bit and calls the
    registered notifier, and the HDA codec tries to handle it as a
    hot(un)plug.  But since the driver is already in the suspended state,
    it fails miserably.
    
    As this is a sort of spurious wakeup, it can be ignored safely, as
    long as it's delivered during the system suspend.  OTOH, if a
    notification comes during the runtime suspend, the situation is
    different: we need to wake up.  But during the system suspend, such a
    notification can't be the reason for a wakeup.
    
    This patch addresses it by a simple check of the current sound card
    status.  The skipped notification doesn't matter because the HDA
    driver will check the plugged status forcibly at the resume in
    return.
    
    Then, why the card status, not a runtime PM status or else?  The HDA
    controller driver is supposed to set the card status to D3 at the
    system suspend but not at the runtime suspend.  So we can see it as a
    flag that is set only for the system suspend.  Admittedly, it's a bit
    ugly, but it should work well for now.
    
    Reported-and-tested-by: "Zhang, Xiong Y" <xiong.y.zhang@intel.com>
    Fixes: 25adc137c546 ('ALSA: hda - Wake the codec up on pin/ELD notify events')
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d66de61ff8d645b160a6911946f6e319f4e9f347
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 24 20:02:12 2015 +0100

    ALSA: hda - Fix noise on Gigabyte Z170X mobo
    
    commit 0c25ad80408e95e0a4fbaf0056950206e95f726f upstream.
    
    Gigabyte Z710X mobo with ALC1150 codec gets significant noises from
    the analog loopback routes even if their inputs are all muted.
    Simply kill the aamix for fixing it.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=108301
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07e6932343e602258e3ad2ad8969fd08c0fb5b3b
Author: Hui Wang <hui.wang@canonical.com>
Date:   Tue Nov 24 11:08:18 2015 +0800

    ALSA: hda - Fix headphone noise after Dell XPS 13 resume back from S3
    
    commit 8c69729b4439bbda88c3073df7243f755cc418ed upstream.
    
    We have a machine Dell XPS 13 with the codec alc256, after resume back
    from S3, the headphone has noise when play sound.
    
    Through comparing with the coeff vaule before and after S3, we found
    restoring a coeff register will help remove noise.
    
    BugLink: https://bugs.launchpad.net/bugs/1519168
    Cc: Kailang Yang <kailang@realtek.com>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f0c561428b082333e9587f03302acb0909f65b4
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Nov 19 16:39:50 2015 +0100

    ALSA: hda - Add fixup for Acer Aspire One Cloudbook 14
    
    commit b9c2fa52135d49a931c56ed2bfc17d61f771b412 upstream.
    
    For making the speakers on Acer Aspire One Cloudbook 14 to work, we
    need the as same quirk as for another Chromebook.  This patch adds the
    corresponding fixup entry.
    
    Reported-by: Patrick <epictetus@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 748af78ed82311de90b1df0bb961a1fe847ebef7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Nov 14 17:46:31 2015 +0100

    ALSA: hda - Fix noise on Dell Latitude E6440
    
    commit 86f799b82f5c011404ddef54600bc5e99b7e0cf2 upstream.
    
    Dell Latitude E6440 (1028:05bd) needs the same fixup as applied to
    other Latitude E7xxx models for the click noise due to the recent
    power-saving changes.
    
    Bugzilla: http://bugzilla.opensuse.org/show_bug.cgi?id=954876
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e8ca40e4dfad5f7c1ad019d38a60ff250452a6b
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Nov 9 14:46:35 2015 +0100

    ALSA: hda - Apply HP headphone fixups more generically
    
    commit 196543d54574f50e3fd04df4e3048181e006a9da upstream.
    
    It turned out that many HP laptops suffer from the same problem as
    fixed in commit [c932b98c1e47: ALSA: hda - Apply pin fixup for HP
    ProBook 6550b].  But, it's tiresome to list up all such PCI SSIDs, as
    there are really lots of HP machines.
    
    Instead, we do a bit more clever, try to check the supposedly dock and
    built-in headphone pins, and apply the fixup when both seem valid.
    This rule can be applied generically to all models using the same
    quirk, so we'll fix all in a shot.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=107491
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d8a45bdacd89f38ae5bda817e7e51490ffd994a
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Sun Oct 18 13:46:47 2015 +0900

    ALSA: fireworks/bebob/oxfw/dice: enable to make as built-in
    
    commit df4833886f91eea0d20e6e97066adab308625ef8 upstream.
    
    When committed to upstream, these four modules had wrong entries for
    Makefile. This forces them to be loadable modules even if they're set
    as built-in.
    
    This commit fixes this bug.
    
    Fixes: b5b04336015e('ALSA: fireworks: Add skelton for Fireworks based devices')
    Fixes: fd6f4b0dc167('ALSA: bebob: Add skelton for BeBoB based devices')
    Fixes: 1a4e39c2e5ca('ALSA: oxfw: Move to its own directory')
    Fixes: 14ff6a094815('ALSA: dice: Move file to its own directory')
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62acbfc021e52e24805de22f8db47346989b7e1f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Nov 4 22:39:16 2015 +0100

    ALSA: hda - Apply pin fixup for HP ProBook 6550b
    
    commit c932b98c1e47312822d911c1bb76e81ef50e389c upstream.
    
    HP ProBook 6550b needs the same pin fixup applied to other HP B-series
    laptops with docks for making its headphone and dock headphone jacks
    working properly.  We just need to add the codec SSID to the list.
    
    Bugzilla: https://bugzilla.kernel.org/attachment.cgi?id=191971
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b5d61c0a77dc91200b5d5fb9bf22dc18a54accb
Author: Alexandra Yates <alexandra.yates@linux.intel.com>
Date:   Wed Nov 4 15:56:09 2015 -0800

    ALSA: hda - Add Intel Lewisburg device IDs Audio
    
    commit 5cf92c8b3dc5da59e05dc81bdc069cedf6f38313 upstream.
    
    Adding Intel codename Lewisburg platform device IDs for audio.
    
    [rearranged the position by tiwai]
    
    Signed-off-by: Alexandra Yates <alexandra.yates@linux.intel.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47295de3d880d2e694429ab92f19f0c347c31724
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Nov 2 17:35:34 2015 +0100

    ALSA: hda - Fix lost 4k BDL boundary workaround
    
    commit de1ab6af5c3d92c0a031083962a7ff270cf301b7 upstream.
    
    During the migration to HDA core code, we lost the workaround for 4k
    BDL boundary.  The flag exists in the new hdac_bus, but it's never
    set.  This resulted in the sudden sound stall on some controllers that
    require this workaround like Creative Recon3D.
    
    This patch fixes the issue by setting the flag for such controllers
    properly.
    
    Fixes: ccc98865aa44 ('ALSA: hda - Migrate more hdac_stream codes')
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f18ad9382cb927c263c22871f5afdbed0bd48466
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Oct 27 14:21:51 2015 +0100

    ALSA: hda - Disable 64bit address for Creative HDA controllers
    
    commit cadd16ea33a938d49aee99edd4758cc76048b399 upstream.
    
    We've had many reports that some Creative sound cards with CA0132
    don't work well.  Some reported that it starts working after reloading
    the module, while some reported it starts working when a 32bit kernel
    is used.  All these facts seem implying that the chip fails to
    communicate when the buffer is located in 64bit address.
    
    This patch addresses these issues by just adding AZX_DCAPS_NO_64BIT
    flag to the corresponding PCI entries.  I casually had a chance to
    test an SB Recon3D board, and indeed this seems helping.
    
    Although this hasn't been tested on all Creative devices, it's safer
    to assume that this restriction applies to the rest of them, too.  So
    the flag is applied to all Creative entries.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76b80a4125547fe8de10ce247fc360d7b5ff2dbb
Author: Kailang Yang <kailang@realtek.com>
Date:   Mon Oct 26 15:37:39 2015 +0800

    ALSA: hda/realtek - Dell XPS one ALC3260 speaker no sound after resume back
    
    commit 6ed1131fe196ad7ffc13acc1a1eadc08a1db0303 upstream.
    
    This machine had I2S codec for speaker output.
    It need to refill the I2S codec initial verb after resume back.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Reported-and-tested-by: George Gugulea <gugulea@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c6ecf2fc1b8460161eb5781681606701e2c9b6c
Author: Jan Stancek <jstancek@redhat.com>
Date:   Tue Dec 8 13:57:51 2015 -0500

    ipmi: move timer init to before irq is setup
    
    commit 27f972d3e00b50639deb4cc1392afaeb08d3cecc upstream.
    
    We encountered a panic on boot in ipmi_si on a dell per320 due to an
    uninitialized timer as follows.
    
    static int smi_start_processing(void       *send_info,
                                    ipmi_smi_t intf)
    {
            /* Try to claim any interrupts. */
            if (new_smi->irq_setup)
                    new_smi->irq_setup(new_smi);
    
     --> IRQ arrives here and irq handler tries to modify uninitialized timer
    
        which triggers BUG_ON(!timer->function) in __mod_timer().
    
     Call Trace:
       <IRQ>
       [<ffffffffa0532617>] start_new_msg+0x47/0x80 [ipmi_si]
       [<ffffffffa053269e>] start_check_enables+0x4e/0x60 [ipmi_si]
       [<ffffffffa0532bd8>] smi_event_handler+0x1e8/0x640 [ipmi_si]
       [<ffffffff810f5584>] ? __rcu_process_callbacks+0x54/0x350
       [<ffffffffa053327c>] si_irq_handler+0x3c/0x60 [ipmi_si]
       [<ffffffff810efaf0>] handle_IRQ_event+0x60/0x170
       [<ffffffff810f245e>] handle_edge_irq+0xde/0x180
       [<ffffffff8100fc59>] handle_irq+0x49/0xa0
       [<ffffffff8154643c>] do_IRQ+0x6c/0xf0
       [<ffffffff8100ba53>] ret_from_intr+0x0/0x11
    
            /* Set up the timer that drives the interface. */
            setup_timer(&new_smi->si_timer, smi_timeout, (long)new_smi);
    
    The following patch fixes the problem.
    
    To: Openipmi-developer@lists.sourceforge.net
    To: Corey Minyard <minyard@acm.org>
    CC: linux-kernel@vger.kernel.org
    
    Signed-off-by: Jan Stancek <jstancek@redhat.com>
    Signed-off-by: Tony Camuso <tcamuso@redhat.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f66fdd160a1f5250d5ac882d5ef6bf654a03a957
Author: Corey Minyard <cminyard@mvista.com>
Date:   Sat Sep 5 17:44:13 2015 -0500

    ipmi: Start the timer and thread on internal msgs
    
    commit 0cfec916e86d881e209de4b4ae9959a6271e6660 upstream.
    
    The timer and thread were not being started for internal messages,
    so in interrupt mode if something hung the timer would never go
    off and clean things up.  Factor out the internal message sending
    and start the timer for those messages, too.
    
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Tested-by: Gouji, Masayuki <gouji.masayuki@jp.fujitsu.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d47d0648f5d4a174afb989f229490e08d103c3a
Author: Tejun Heo <tj@kernel.org>
Date:   Wed Nov 4 12:15:33 2015 -0500

    timers: Use proper base migration in add_timer_on()
    
    commit 22b886dd1018093920c4250dee2a9a3cb7cff7b8 upstream.
    
    Regardless of the previous CPU a timer was on, add_timer_on()
    currently simply sets timer->flags to the new CPU.  As the caller must
    be seeing the timer as idle, this is locally fine, but the timer
    leaving the old base while unlocked can lead to race conditions as
    follows.
    
    Let's say timer was on cpu 0.
    
      cpu 0					cpu 1
      -----------------------------------------------------------------------------
      del_timer(timer) succeeds
    					del_timer(timer)
    					  lock_timer_base(timer) locks cpu_0_base
      add_timer_on(timer, 1)
        spin_lock(&cpu_1_base->lock)
        timer->flags set to cpu_1_base
        operates on @timer			  operates on @timer
    
    This triggered with mod_delayed_work_on() which contains
    "if (del_timer()) add_timer_on()" sequence eventually leading to the
    following oops.
    
      BUG: unable to handle kernel NULL pointer dereference at           (null)
      IP: [<ffffffff810ca6e9>] detach_if_pending+0x69/0x1a0
      ...
      Workqueue: wqthrash wqthrash_workfunc [wqthrash]
      task: ffff8800172ca680 ti: ffff8800172d0000 task.ti: ffff8800172d0000
      RIP: 0010:[<ffffffff810ca6e9>]  [<ffffffff810ca6e9>] detach_if_pending+0x69/0x1a0
      ...
      Call Trace:
       [<ffffffff810cb0b4>] del_timer+0x44/0x60
       [<ffffffff8106e836>] try_to_grab_pending+0xb6/0x160
       [<ffffffff8106e913>] mod_delayed_work_on+0x33/0x80
       [<ffffffffa0000081>] wqthrash_workfunc+0x61/0x90 [wqthrash]
       [<ffffffff8106dba8>] process_one_work+0x1e8/0x650
       [<ffffffff8106e05e>] worker_thread+0x4e/0x450
       [<ffffffff810746af>] kthread+0xef/0x110
       [<ffffffff8185980f>] ret_from_fork+0x3f/0x70
    
    Fix it by updating add_timer_on() to perform proper migration as
    __mod_timer() does.
    
    Reported-and-tested-by: Jeff Layton <jlayton@poochiereds.net>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Chris Worley <chris.worley@primarydata.com>
    Cc: bfields@fieldses.org
    Cc: Michael Skralivetsky <michael.skralivetsky@primarydata.com>
    Cc: Trond Myklebust <trond.myklebust@primarydata.com>
    Cc: Shaohua Li <shli@fb.com>
    Cc: Jeff Layton <jlayton@poochiereds.net>
    Cc: kernel-team@fb.com
    Link: http://lkml.kernel.org/r/20151029103113.2f893924@tlielax.poochiereds.net
    Link: http://lkml.kernel.org/r/20151104171533.GI5749@mtj.duckdns.org
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7e8c2cfe789c300f1357fa836089d9bb1353313
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Jan 12 12:47:40 2016 -0800

    x86/mm: Improve switch_mm() barrier comments
    
    commit 4eaffdd5a5fe6ff9f95e1ab4de1ac904d5e0fa8b upstream.
    
    My previous comments were still a bit confusing and there was a
    typo. Fix it up.
    
    Reported-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 71b3c126e611 ("x86/mm: Add barriers and document switch_mm()-vs-flush synchronization")
    Link: http://lkml.kernel.org/r/0a0b43cdcdd241c5faaaecfbcc91a155ddedc9a1.1452631609.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f16cabcd975ccbcc818aa64a6e61e21423b27b72
Author: Andy Lutomirski <luto@kernel.org>
Date:   Wed Jan 6 12:21:01 2016 -0800

    x86/mm: Add barriers and document switch_mm()-vs-flush synchronization
    
    commit 71b3c126e61177eb693423f2e18a1914205b165e upstream.
    
    When switch_mm() activates a new PGD, it also sets a bit that
    tells other CPUs that the PGD is in use so that TLB flush IPIs
    will be sent.  In order for that to work correctly, the bit
    needs to be visible prior to loading the PGD and therefore
    starting to fill the local TLB.
    
    Document all the barriers that make this work correctly and add
    a couple that were missing.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    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: Dave Hansen <dave.hansen@linux.intel.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: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aad1c2666531a9fa34a39d6729ab8e8407a9fe78
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Jan 4 10:17:09 2016 -0800

    x86/boot: Double BOOT_HEAP_SIZE to 64KB
    
    commit 8c31902cffc4d716450be549c66a67a8a3dd479c upstream.
    
    When decompressing kernel image during x86 bootup, malloc memory
    for ELF program headers may run out of heap space, which leads
    to system halt.  This patch doubles BOOT_HEAP_SIZE to 64KB.
    
    Tested with 32-bit kernel which failed to boot without this patch.
    
    Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
    Acked-by: H. Peter Anvin <hpa@zytor.com>
    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: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34db6d836c908c10e3d7a425e59e2f8bf61355a6
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Fri Dec 18 20:24:06 2015 +0100

    x86/reboot/quirks: Add iMac10,1 to pci_reboot_dmi_table[]
    
    commit 2f0c0b2d96b1205efb14347009748d786c2d9ba5 upstream.
    
    Without the reboot=pci method, the iMac 10,1 simply
    hangs after printing "Restarting system" at the point
    when it should reboot. This fixes it.
    
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Jones <davej@codemonkey.org.uk>
    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>
    Link: http://lkml.kernel.org/r/1450466646-26663-1-git-send-email-mario.kleiner.de@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b10a6b10a0fea11d76c419a7aa5871a4dfbf769
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Nov 12 16:42:18 2015 +0100

    KVM: x86: correctly print #AC in traces
    
    commit aba2f06c070f604e388cf77b1dcc7f4cf4577eb0 upstream.
    
    Poor #AC was so unimportant until a few days ago that we were
    not even tracing its name correctly.  But now it's all over
    the place.
    
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c97e738015688d5fd990940cf25dc9020d607537
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Nov 12 14:49:17 2015 +0100

    KVM: x86: expose MSR_TSC_AUX to userspace
    
    commit 9dbe6cf941a6fe82933aef565e4095fb10f65023 upstream.
    
    If we do not do this, it is not properly saved and restored across
    migration.  Windows notices due to its self-protection mechanisms,
    and is very upset about it (blue screen of death).
    
    Cc: Radim Krcmar <rkrcmar@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f6c2ca189204d4966c203ef2f9d00e2f3d50b7f
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Thu Nov 12 16:43:02 2015 +1100

    KVM: PPC: Book3S HV: Prohibit setting illegal transaction state in MSR
    
    commit c20875a3e638e4a03e099b343ec798edd1af5cc6 upstream.
    
    Currently it is possible for userspace (e.g. QEMU) to set a value
    for the MSR for a guest VCPU which has both of the TS bits set,
    which is an illegal combination.  The result of this is that when
    we execute a hrfid (hypervisor return from interrupt doubleword)
    instruction to enter the guest, the CPU will take a TM Bad Thing
    type of program interrupt (vector 0x700).
    
    Now, if PR KVM is configured in the kernel along with HV KVM, we
    actually handle this without crashing the host or giving hypervisor
    privilege to the guest; instead what happens is that we deliver a
    program interrupt to the guest, with SRR0 reflecting the address
    of the hrfid instruction and SRR1 containing the MSR value at that
    point.  If PR KVM is not configured in the kernel, then we try to
    run the host's program interrupt handler with the MMU set to the
    guest context, which almost certainly causes a host crash.
    
    This closes the hole by making kvmppc_set_msr_hv() check for the
    illegal combination and force the TS field to a safe value (00,
    meaning non-transactional).
    
    Signed-off-by: Paul Mackerras <paulus@samba.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f43767aa051fbb303d22fb9c17872de084b189d4
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Tue Nov 10 09:14:39 2015 +0100

    KVM: svm: unconditionally intercept #DB
    
    commit cbdb967af3d54993f5814f1cee0ed311a055377d upstream.
    
    This is needed to avoid the possibility that the guest triggers
    an infinite stream of #DB exceptions (CVE-2015-8104).
    
    VMX is not affected: because it does not save DR6 in the VMCS,
    it already intercepts #DB unconditionally.
    
    Reported-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b661fce93fc4494f49f81b38e3415ba60e05d920
Author: Paul Mackerras <paulus@samba.org>
Date:   Tue Nov 3 16:03:30 2015 +1100

    KVM: PPC: Book3S HV: Don't dynamically split core when already split
    
    commit f74f2e2e26199f695ca3df94f29e9ab7cb707ea4 upstream.
    
    In static micro-threading modes, the dynamic micro-threading code
    is supposed to be disabled, because subcores can't make independent
    decisions about what micro-threading mode to put the core in - there is
    only one micro-threading mode for the whole core.  The code that
    implements dynamic micro-threading checks for this, except that the
    check was missed in one case.  This means that it is possible for a
    subcore in static 2-way micro-threading mode to try to put the core
    into 4-way micro-threading mode, which usually leads to stuck CPUs,
    spinlock lockups, and other stalls in the host.
    
    The problem was in the can_split_piggybacked_subcores() function, which
    should always return false if the system is in a static micro-threading
    mode.  This fixes the problem by making can_split_piggybacked_subcores()
    use subcore_config_ok() for its checks, as subcore_config_ok() includes
    the necessary check for the static micro-threading modes.
    
    Credit to Gautham Shenoy for working out that the reason for the hangs
    and stalls we were seeing was that we were trying to do dynamic 4-way
    micro-threading while we were in static 2-way mode.
    
    Fixes: b4deba5c41e9
    Signed-off-by: Paul Mackerras <paulus@samba.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f47420681a1a92a0e07f561469719d87848bc18
Author: Radim Krčmář <rkrcmar@redhat.com>
Date:   Mon Nov 2 22:20:00 2015 +0100

    KVM: VMX: fix SMEP and SMAP without EPT
    
    commit 656ec4a4928a3db7d16e5cb9bce351a478cfd3d5 upstream.
    
    The comment in code had it mostly right, but we enable paging for
    emulated real mode regardless of EPT.
    
    Without EPT (which implies emulated real mode), secondary VCPUs won't
    start unless we disable SM[AE]P when the guest doesn't use paging.
    
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f8d3fa7fb4b63d72da971ec6ed9f25688f05b64
Author: Ouyang Zhaowei (Charles) <ouyangzhaowei@huawei.com>
Date:   Wed May 6 09:47:04 2015 +0800

    x86/xen: don't reset vcpu_info on a cancelled suspend
    
    commit 6a1f513776b78c994045287073e55bae44ed9f8c upstream.
    
    On a cancelled suspend the vcpu_info location does not change (it's
    still in the per-cpu area registered by xen_vcpu_setup()).  So do not
    call xen_hvm_init_shared_info() which would make the kernel think its
    back in the shared info.  With the wrong vcpu_info, events cannot be
    received and the domain will hang after a cancelled suspend.
    
    Signed-off-by: Charles Ouyang <ouyangzhaowei@huawei.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 122903c147463776bc750dd83e7e347753a69f9b
Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Date:   Tue Nov 10 15:10:33 2015 -0500

    xen/gntdev: Grant maps should not be subject to NUMA balancing
    
    commit 9c17d96500f78d7ecdb71ca6942830158bc75a2b upstream.
    
    Doing so will cause the grant to be unmapped and then, during
    fault handling, the fault to be mistakenly treated as NUMA hint
    fault.
    
    In addition, even if those maps could partcipate in NUMA
    balancing, it wouldn't provide any benefit since we are unable
    to determine physical page's node (even if/when VNUMA is
    implemented).
    
    Marking grant maps' VMAs as VM_IO will exclude them from being
    part of NUMA balancing.
    
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29bdfddc4d5b21a9442d32afd2766a240c7127ae
Author: Ashok Raj <ashok.raj@intel.com>
Date:   Thu Dec 10 11:12:26 2015 +0100

    x86/mce: Ensure offline CPUs don't participate in rendezvous process
    
    commit d90167a941f62860f35eb960e1012aa2d30e7e94 upstream.
    
    Intel's MCA implementation broadcasts MCEs to all CPUs on the
    node. This poses a problem for offlined CPUs which cannot
    participate in the rendezvous process:
    
      Kernel panic - not syncing: Timeout: Not all CPUs entered broadcast exception handler
      Kernel Offset: disabled
      Rebooting in 100 seconds..
    
    More specifically, Linux does a soft offline of a CPU when
    writing a 0 to /sys/devices/system/cpu/cpuX/online, which
    doesn't prevent the #MC exception from being broadcasted to that
    CPU.
    
    Ensure that offline CPUs don't participate in the MCE rendezvous
    and clear the RIP valid status bit so that a second MCE won't
    cause a shutdown.
    
    Without the patch, mce_start() will increment mce_callin and
    wait for all CPUs. Offlined CPUs should avoid participating in
    the rendezvous process altogether.
    
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    [ Massage commit message. ]
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Tony Luck <tony.luck@intel.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-edac <linux-edac@vger.kernel.org>
    Link: http://lkml.kernel.org/r/1449742346-21470-2-git-send-email-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e8df2e2eeeb0a056bdd3042ab2103c7d8fbee44
Author: David Vrabel <david.vrabel@citrix.com>
Date:   Fri Dec 11 09:07:53 2015 -0500

    x86/paravirt: Prevent rtc_cmos platform device init on PV guests
    
    commit d8c98a1d1488747625ad6044d423406e17e99b7a upstream.
    
    Adding the rtc platform device in non-privileged Xen PV guests causes
    an IRQ conflict because these guests do not have legacy PIC and may
    allocate irqs in the legacy range.
    
    In a single VCPU Xen PV guest we should have:
    
    /proc/interrupts:
               CPU0
      0:       4934  xen-percpu-virq      timer0
      1:          0  xen-percpu-ipi       spinlock0
      2:          0  xen-percpu-ipi       resched0
      3:          0  xen-percpu-ipi       callfunc0
      4:          0  xen-percpu-virq      debug0
      5:          0  xen-percpu-ipi       callfuncsingle0
      6:          0  xen-percpu-ipi       irqwork0
      7:        321   xen-dyn-event     xenbus
      8:         90   xen-dyn-event     hvc_console
      ...
    
    But hvc_console cannot get its interrupt because it is already in use
    by rtc0 and the console does not work.
    
      genirq: Flags mismatch irq 8. 00000000 (hvc_console) vs. 00000000 (rtc0)
    
    We can avoid this problem by realizing that unprivileged PV guests (both
    Xen and lguests) are not supposed to have rtc_cmos device and so
    adding it is not necessary.
    
    Privileged guests (i.e. Xen's dom0) do use it but they should not have
    irq conflicts since they allocate irqs above legacy range (above
    gsi_top, in fact).
    
    Instead of explicitly testing whether the guest is privileged we can
    extend pv_info structure to include information about guest's RTC
    support.
    
    Reported-and-tested-by: Sander Eikelenboom <linux@eikelenboom.it>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: vkuznets@redhat.com
    Cc: xen-devel@lists.xenproject.org
    Cc: konrad.wilk@oracle.com
    Link: http://lkml.kernel.org/r/1449842873-2613-1-git-send-email-boris.ostrovsky@oracle.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a478fb1f060adb8714769e9e0e26574683c43ca
Author: Dmitry V. Levin <ldv@altlinux.org>
Date:   Tue Dec 1 00:54:36 2015 +0300

    x86/signal: Fix restart_syscall number for x32 tasks
    
    commit 22eab1108781eff09961ae7001704f7bd8fb1dce upstream.
    
    When restarting a syscall with regs->ax == -ERESTART_RESTARTBLOCK,
    regs->ax is assigned to a restart_syscall number.  For x32 tasks, this
    syscall number must have __X32_SYSCALL_BIT set, otherwise it will be
    an x86_64 syscall number instead of a valid x32 syscall number. This
    issue has been there since the introduction of x32.
    
    Reported-by: strace/tests/restart_syscall.test
    Reported-and-tested-by: Elvira Khabirova <lineprinter0@gmail.com>
    Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
    Cc: Elvira Khabirova <lineprinter0@gmail.com>
    Link: http://lkml.kernel.org/r/20151130215436.GA25996@altlinux.org
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71ac260d2d9544765098cb704e3f680fc7131830
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Mon Nov 30 16:31:13 2015 -0800

    x86/mpx: Fix instruction decoder condition
    
    commit 8e8efe0379bd93e8219ca0fc6fa80b5dd85b09cb upstream.
    
    MPX decodes instructions in order to tell which bounds register
    was violated.  Part of this decoding involves looking at the "REX
    prefix" which is a special instrucion prefix used to retrofit
    support for new registers in to old instructions.
    
    The X86_REX_*() macros are defined to return actual bit values:
    
    	#define X86_REX_R(rex) ((rex) & 4)
    
    *not* boolean values.  However, the MPX code was checking for
    them like they were booleans.  This might have led to us
    mis-decoding the "REX prefix" and giving false information out to
    userspace about bounds violations.  X86_REX_B() actually is bit 1,
    so this is really only broken for the X86_REX_X() case.
    
    Fix the conditionals up to tolerate the non-boolean values.
    
    Fixes: fcc7ffd67991 "x86, mpx: Decode MPX instruction to get bound violation information"
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: x86@kernel.org
    Cc: Dave Hansen <dave@sr71.net>
    Link: http://lkml.kernel.org/r/20151201003113.D800C1E0@viggo.jf.intel.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2545d88ee43b42d6beaed5354187df7c2e8dffb6
Author: Len Brown <len.brown@intel.com>
Date:   Sun Nov 22 18:16:15 2015 -0500

    x86 smpboot: Re-enable init_udelay=0 by default on modern CPUs
    
    commit 656279a1f3b210cf48ccc572fd7c6b8e2250be77 upstream.
    
    commit f1ccd249319e allowed the cmdline "cpu_init_udelay=" to work
    with all values, including the default of 10000.
    
    But in setting the default of 10000, it over-rode the code that sets
    the delay 0 on modern processors.
    
    Also, tidy up use of INT/UINT.
    
    Fixes: f1ccd249319e "x86/smpboot: Fix cpu_init_udelay=10000 corner case boot parameter misbehavior"
    Reported-by: Shane <shrybman@teksavvy.com>
    Signed-off-by: Len Brown <len.brown@intel.com>
    Cc: dparsons@brightdsl.net
    Link: http://lkml.kernel.org/r/9082eb809ef40dad02db714759c7aaf618c518d4.1448232494.git.len.brown@intel.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>