commit 022aafd04696a3c6b7ad47ab83a9650646287bf8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jun 7 17:22:20 2016 -0700

    Linux 3.14.72

commit 5ed4245a52531d5f5faf11821d389f7d756377e0
Author: Dave Chinner <dchinner@redhat.com>
Date:   Wed May 18 13:54:23 2016 +1000

    xfs: skip stale inodes in xfs_iflush_cluster
    
    commit 7d3aa7fe970791f1a674b14572a411accf2f4d4e upstream.
    
    We don't write back stale inodes so we should skip them in
    xfs_iflush_cluster, too.
    
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18844cd365c5427b385370504e9215c8eb69bb7d
Author: Dave Chinner <dchinner@redhat.com>
Date:   Wed May 18 13:54:22 2016 +1000

    xfs: fix inode validity check in xfs_iflush_cluster
    
    commit 51b07f30a71c27405259a0248206ed4e22adbee2 upstream.
    
    Some careless idiot(*) wrote crap code in commit 1a3e8f3 ("xfs:
    convert inode cache lookups to use RCU locking") back in late 2010,
    and so xfs_iflush_cluster checks the wrong inode for whether it is
    still valid under RCU protection. Fix it to lock and check the
    correct inode.
    
    (*) Careless-idiot: Dave Chinner <dchinner@redhat.com>
    
    Discovered-by: Brain Foster <bfoster@redhat.com>
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c66edeaf79bb6f0ca688ffec9ca50a61b7569984
Author: Dave Chinner <dchinner@redhat.com>
Date:   Wed May 18 13:53:42 2016 +1000

    xfs: xfs_iflush_cluster fails to abort on error
    
    commit b1438f477934f5a4d5a44df26f3079a7575d5946 upstream.
    
    When a failure due to an inode buffer occurs, the error handling
    fails to abort the inode writeback correctly. This can result in the
    inode being reclaimed whilst still in the AIL, leading to
    use-after-free situations as well as filesystems that cannot be
    unmounted as the inode log items left in the AIL never get removed.
    
    Fix this by ensuring fatal errors from xfs_imap_to_bp() result in
    the inode flush being aborted correctly.
    
    Reported-by: Shyam Kaushik <shyam@zadarastorage.com>
    Diagnosed-by: Shyam Kaushik <shyam@zadarastorage.com>
    Tested-by: Shyam Kaushik <shyam@zadarastorage.com>
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07a9b7bd6bbfff80423ac6c77c35ae922d2559fc
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu May 26 15:16:25 2016 -0700

    dma-debug: avoid spinlock recursion when disabling dma-debug
    
    commit 3017cd63f26fc655d56875aaf497153ba60e9edf upstream.
    
    With netconsole (at least) the pr_err("...  disablingn") call can
    recurse back into the dma-debug code, where it'll try to grab
    free_entries_lock again.  Avoid the problem by doing the printk after
    dropping the lock.
    
    Link: http://lkml.kernel.org/r/1463678421-18683-1-git-send-email-ville.syrjala@linux.intel.com
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6871905c9ab0604469f35b36a0aa13e117deb0f0
Author: Nicolai Stange <nicstange@gmail.com>
Date:   Thu May 5 19:46:19 2016 -0400

    ext4: silence UBSAN in ext4_mb_init()
    
    commit 935244cd54b86ca46e69bc6604d2adfb1aec2d42 upstream.
    
    Currently, in ext4_mb_init(), there's a loop like the following:
    
      do {
        ...
        offset += 1 << (sb->s_blocksize_bits - i);
        i++;
      } while (i <= sb->s_blocksize_bits + 1);
    
    Note that the updated offset is used in the loop's next iteration only.
    
    However, at the last iteration, that is at i == sb->s_blocksize_bits + 1,
    the shift count becomes equal to (unsigned)-1 > 31 (c.f. C99 6.5.7(3))
    and UBSAN reports
    
      UBSAN: Undefined behaviour in fs/ext4/mballoc.c:2621:15
      shift exponent 4294967295 is too large for 32-bit type 'int'
      [...]
      Call Trace:
       [<ffffffff818c4d25>] dump_stack+0xbc/0x117
       [<ffffffff818c4c69>] ? _atomic_dec_and_lock+0x169/0x169
       [<ffffffff819411ab>] ubsan_epilogue+0xd/0x4e
       [<ffffffff81941cac>] __ubsan_handle_shift_out_of_bounds+0x1fb/0x254
       [<ffffffff81941ab1>] ? __ubsan_handle_load_invalid_value+0x158/0x158
       [<ffffffff814b6dc1>] ? kmem_cache_alloc+0x101/0x390
       [<ffffffff816fc13b>] ? ext4_mb_init+0x13b/0xfd0
       [<ffffffff814293c7>] ? create_cache+0x57/0x1f0
       [<ffffffff8142948a>] ? create_cache+0x11a/0x1f0
       [<ffffffff821c2168>] ? mutex_lock+0x38/0x60
       [<ffffffff821c23ab>] ? mutex_unlock+0x1b/0x50
       [<ffffffff814c26ab>] ? put_online_mems+0x5b/0xc0
       [<ffffffff81429677>] ? kmem_cache_create+0x117/0x2c0
       [<ffffffff816fcc49>] ext4_mb_init+0xc49/0xfd0
       [...]
    
    Observe that the mentioned shift exponent, 4294967295, equals (unsigned)-1.
    
    Unless compilers start to do some fancy transformations (which at least
    GCC 6.0.0 doesn't currently do), the issue is of cosmetic nature only: the
    such calculated value of offset is never used again.
    
    Silence UBSAN by introducing another variable, offset_incr, holding the
    next increment to apply to offset and adjust that one by right shifting it
    by one position per loop iteration.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=114701
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=112161
    
    Signed-off-by: Nicolai Stange <nicstange@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e8f21840bda9fc19db14ee92fd118a0c533eb5a
Author: Nicolai Stange <nicstange@gmail.com>
Date:   Thu May 5 17:38:03 2016 -0400

    ext4: address UBSAN warning in mb_find_order_for_block()
    
    commit b5cb316cdf3a3f5f6125412b0f6065185240cfdc upstream.
    
    Currently, in mb_find_order_for_block(), there's a loop like the following:
    
      while (order <= e4b->bd_blkbits + 1) {
        ...
        bb += 1 << (e4b->bd_blkbits - order);
      }
    
    Note that the updated bb is used in the loop's next iteration only.
    
    However, at the last iteration, that is at order == e4b->bd_blkbits + 1,
    the shift count becomes negative (c.f. C99 6.5.7(3)) and UBSAN reports
    
      UBSAN: Undefined behaviour in fs/ext4/mballoc.c:1281:11
      shift exponent -1 is negative
      [...]
      Call Trace:
       [<ffffffff818c4d35>] dump_stack+0xbc/0x117
       [<ffffffff818c4c79>] ? _atomic_dec_and_lock+0x169/0x169
       [<ffffffff819411bb>] ubsan_epilogue+0xd/0x4e
       [<ffffffff81941cbc>] __ubsan_handle_shift_out_of_bounds+0x1fb/0x254
       [<ffffffff81941ac1>] ? __ubsan_handle_load_invalid_value+0x158/0x158
       [<ffffffff816e93a0>] ? ext4_mb_generate_from_pa+0x590/0x590
       [<ffffffff816502c8>] ? ext4_read_block_bitmap_nowait+0x598/0xe80
       [<ffffffff816e7b7e>] mb_find_order_for_block+0x1ce/0x240
       [...]
    
    Unless compilers start to do some fancy transformations (which at least
    GCC 6.0.0 doesn't currently do), the issue is of cosmetic nature only: the
    such calculated value of bb is never used again.
    
    Silence UBSAN by introducing another variable, bb_incr, holding the next
    increment to apply to bb and adjust that one by right shifting it by one
    position per loop iteration.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=114701
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=112161
    
    Signed-off-by: Nicolai Stange <nicstange@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d537a94dbb33f5b14386c933b7f9d52e445f0462
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Sat Apr 30 00:48:54 2016 -0400

    ext4: fix hang when processing corrupted orphaned inode list
    
    commit c9eb13a9105e2e418f72e46a2b6da3f49e696902 upstream.
    
    If the orphaned inode list contains inode #5, ext4_iget() returns a
    bad inode (since the bootloader inode should never be referenced
    directly).  Because of the bad inode, we end up processing the inode
    repeatedly and this hangs the machine.
    
    This can be reproduced via:
    
       mke2fs -t ext4 /tmp/foo.img 100
       debugfs -w -R "ssv last_orphan 5" /tmp/foo.img
       mount -o loop /tmp/foo.img /mnt
    
    (But don't do this if you are using an unpatched kernel if you care
    about the system staying functional.  :-)
    
    This bug was found by the port of American Fuzzy Lop into the kernel
    to find file system problems[1].  (Since it *only* happens if inode #5
    shows up on the orphan list --- 3, 7, 8, etc. won't do it, it's not
    surprising that AFL needed two hours before it found it.)
    
    [1] http://events.linuxfoundation.org/sites/events/files/slides/AFL%20filesystem%20fuzzing%2C%20Vault%202016_0.pdf
    
    Reported by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bb87c0487e7b7c009d195310f8aeda63d61e2c5
Author: Lyude <cpaul@redhat.com>
Date:   Thu May 12 10:56:59 2016 -0400

    drm/fb_helper: Fix references to dev->mode_config.num_connector
    
    commit 255f0e7c418ad95a4baeda017ae6182ba9b3c423 upstream.
    
    During boot, MST hotplugs are generally expected (even if no physical
    hotplugging occurs) and result in DRM's connector topology changing.
    This means that using num_connector from the current mode configuration
    can lead to the number of connectors changing under us. This can lead to
    some nasty scenarios in fbcon:
    
    - We allocate an array to the size of dev->mode_config.num_connectors.
    - MST hotplug occurs, dev->mode_config.num_connectors gets incremented.
    - We try to loop through each element in the array using the new value
      of dev->mode_config.num_connectors, and end up going out of bounds
      since dev->mode_config.num_connectors is now larger then the array we
      allocated.
    
    fb_helper->connector_count however, will always remain consistent while
    we do a modeset in fb_helper.
    
    Note: This is just polish for 4.7, Dave Airlie's drm_connector
    refcounting fixed these bugs for real. But it's good enough duct-tape
    for stable kernel backporting, since backporting the refcounting
    changes is way too invasive.
    
    Signed-off-by: Lyude <cpaul@redhat.com>
    [danvet: Clarify why we need this. Also remove the now unused "dev"
    local variable to appease gcc.]
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1463065021-18280-3-git-send-email-cpaul@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 369168dfae6fded212a7c43c9df8e58b604d9160
Author: Itai Handler <itai_handler@hotmail.com>
Date:   Tue Nov 3 00:20:56 2015 +0200

    drm/gma500: Fix possible out of bounds read
    
    commit 7ccca1d5bf69fdd1d3c5fcf84faf1659a6e0ad11 upstream.
    
    Fix possible out of bounds read, by adding missing comma.
    The code may read pass the end of the dsi_errors array
    when the most significant bit (bit #31) in the intr_stat register
    is set.
    This bug has been detected using CppCheck (static analysis tool).
    
    Signed-off-by: Itai Handler <itai_handler@hotmail.com>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89bd18288361ac9f737e1b805c6524fa513a50e9
Author: Tomáš Trnka <ttrnka@mail.muni.cz>
Date:   Fri May 20 16:41:10 2016 +0200

    sunrpc: fix stripping of padded MIC tokens
    
    commit c0cb8bf3a8e4bd82e640862cdd8891400405cb89 upstream.
    
    The length of the GSS MIC token need not be a multiple of four bytes.
    It is then padded by XDR to a multiple of 4 B, but unwrap_integ_data()
    would previously only trim mic.len + 4 B. The remaining up to three
    bytes would then trigger a check in nfs4svc_decode_compoundargs(),
    leading to a "garbage args" error and mount failure:
    
    nfs4svc_decode_compoundargs: compound not properly padded!
    nfsd: failed to decode arguments!
    
    This would prevent older clients using the pre-RFC 4121 MIC format
    (37-byte MIC including a 9-byte OID) from mounting exports from v3.9+
    servers using krb5i.
    
    The trimming was introduced by commit 4c190e2f913f ("sunrpc: trim off
    trailing checksum before returning decrypted or integrity authenticated
    buffer").
    
    Fixes: 4c190e2f913f "unrpc: trim off trailing checksum..."
    Signed-off-by: Tomáš Trnka <ttrnka@mail.muni.cz>
    Acked-by: Jeff Layton <jlayton@poochiereds.net>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa77dea436de2eb3be817b96e573ca3ef856d7c3
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Tue May 10 16:11:00 2016 +0100

    xen/events: Don't move disabled irqs
    
    commit f0f393877c71ad227d36705d61d1e4062bc29cf5 upstream.
    
    Commit ff1e22e7a638 ("xen/events: Mask a moving irq") open-coded
    irq_move_irq() but left out checking if the IRQ is disabled. This broke
    resuming from suspend since it tries to move a (disabled) irq without
    holding the IRQ's desc->lock. Fix it by adding in a check for disabled
    IRQs.
    
    The resulting stacktrace was:
    kernel BUG at /build/linux-UbQGH5/linux-4.4.0/kernel/irq/migration.c:31!
    invalid opcode: 0000 [#1] SMP
    Modules linked in: xenfs xen_privcmd ...
    CPU: 0 PID: 9 Comm: migration/0 Not tainted 4.4.0-22-generic #39-Ubuntu
    Hardware name: Xen HVM domU, BIOS 4.6.1-xs125180 05/04/2016
    task: ffff88003d75ee00 ti: ffff88003d7bc000 task.ti: ffff88003d7bc000
    RIP: 0010:[<ffffffff810e26e2>]  [<ffffffff810e26e2>] irq_move_masked_irq+0xd2/0xe0
    RSP: 0018:ffff88003d7bfc50  EFLAGS: 00010046
    RAX: 0000000000000000 RBX: ffff88003d40ba00 RCX: 0000000000000001
    RDX: 0000000000000001 RSI: 0000000000000100 RDI: ffff88003d40bad8
    RBP: ffff88003d7bfc68 R08: 0000000000000000 R09: ffff88003d000000
    R10: 0000000000000000 R11: 000000000000023c R12: ffff88003d40bad0
    R13: ffffffff81f3a4a0 R14: 0000000000000010 R15: 00000000ffffffff
    FS:  0000000000000000(0000) GS:ffff88003da00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fd4264de624 CR3: 0000000037922000 CR4: 00000000003406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Stack:
     ffff88003d40ba38 0000000000000024 0000000000000000 ffff88003d7bfca0
     ffffffff814c8d92 00000010813ef89d 00000000805ea732 0000000000000009
     0000000000000024 ffff88003cc39b80 ffff88003d7bfce0 ffffffff814c8f66
    Call Trace:
     [<ffffffff814c8d92>] eoi_pirq+0xb2/0xf0
     [<ffffffff814c8f66>] __startup_pirq+0xe6/0x150
     [<ffffffff814ca659>] xen_irq_resume+0x319/0x360
     [<ffffffff814c7e75>] xen_suspend+0xb5/0x180
     [<ffffffff81120155>] multi_cpu_stop+0xb5/0xe0
     [<ffffffff811200a0>] ? cpu_stop_queue_work+0x80/0x80
     [<ffffffff811203d0>] cpu_stopper_thread+0xb0/0x140
     [<ffffffff810a94e6>] ? finish_task_switch+0x76/0x220
     [<ffffffff810ca731>] ? __raw_callee_save___pv_queued_spin_unlock+0x11/0x20
     [<ffffffff810a3935>] smpboot_thread_fn+0x105/0x160
     [<ffffffff810a3830>] ? sort_range+0x30/0x30
     [<ffffffff810a0588>] kthread+0xd8/0xf0
     [<ffffffff810a04b0>] ? kthread_create_on_node+0x1e0/0x1e0
     [<ffffffff8182568f>] ret_from_fork+0x3f/0x70
     [<ffffffff810a04b0>] ? kthread_create_on_node+0x1e0/0x1e0
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.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 646e7ae79a3dafa5b8b117a0d04405951634ad41
Author: Hari Bathini <hbathini@linux.vnet.ibm.com>
Date:   Fri Apr 15 22:48:02 2016 +1000

    powerpc/book3s64: Fix branching to OOL handlers in relocatable kernel
    
    commit 8ed8ab40047a570fdd8043a40c104a57248dd3fd upstream.
    
    Some of the interrupt vectors on 64-bit POWER server processors are only
    32 bytes long (8 instructions), which is not enough for the full
    first-level interrupt handler. For these we need to branch to an
    out-of-line (OOL) handler. But when we are running a relocatable kernel,
    interrupt vectors till __end_interrupts marker are copied down to real
    address 0x100. So, branching to labels (ie. OOL handlers) outside this
    section must be handled differently (see LOAD_HANDLER()), considering
    relocatable kernel, which would need at least 4 instructions.
    
    However, branching from interrupt vector means that we corrupt the
    CFAR (come-from address register) on POWER7 and later processors as
    mentioned in commit 1707dd16. So, EXCEPTION_PROLOG_0 (6 instructions)
    that contains the part up to the point where the CFAR is saved in the
    PACA should be part of the short interrupt vectors before we branch out
    to OOL handlers.
    
    But as mentioned already, there are interrupt vectors on 64-bit POWER
    server processors that are only 32 bytes long (like vectors 0x4f00,
    0x4f20, etc.), which cannot accomodate the above two cases at the same
    time owing to space constraint. Currently, in these interrupt vectors,
    we simply branch out to OOL handlers, without using LOAD_HANDLER(),
    which leaves us vulnerable when running a relocatable kernel (eg. kdump
    case). While this has been the case for sometime now and kdump is used
    widely, we were fortunate not to see any problems so far, for three
    reasons:
    
      1. In almost all cases, production kernel (relocatable) is used for
         kdump as well, which would mean that crashed kernel's OOL handler
         would be at the same place where we end up branching to, from short
         interrupt vector of kdump kernel.
      2. Also, OOL handler was unlikely the reason for crash in almost all
         the kdump scenarios, which meant we had a sane OOL handler from
         crashed kernel that we branched to.
      3. On most 64-bit POWER server processors, page size is large enough
         that marking interrupt vector code as executable (see commit
         429d2e83) leads to marking OOL handler code from crashed kernel,
         that sits right below interrupt vector code from kdump kernel, as
         executable as well.
    
    Let us fix this by moving the __end_interrupts marker down past OOL
    handlers to make sure that we also copy OOL handlers to real address
    0x100 when running a relocatable kernel.
    
    This fix has been tested successfully in kdump scenario, on an LPAR with
    4K page size by using different default/production kernel and kdump
    kernel.
    
    Also tested by manually corrupting the OOL handlers in the first kernel
    and then kdump'ing, and then causing the OOL handlers to fire - mpe.
    
    Fixes: c1fb6816fb1b ("powerpc: Add relocation on exception vector handlers")
    Signed-off-by: Hari Bathini <hbathini@linux.vnet.ibm.com>
    Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a952b0abde1c4502fd98fdba74859cb4ca6f4f78
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 13 02:34:52 2016 +0000

    pipe: Fix buffer offset after partially failed read
    
    commit feae3ca2e5e1a8f44aa6290255d3d9709985d0b2 upstream.
    
    Quoting the RHEL advisory:
    
    > It was found that the fix for CVE-2015-1805 incorrectly kept buffer
    > offset and buffer length in sync on a failed atomic read, potentially
    > resulting in a pipe buffer state corruption. A local, unprivileged user
    > could use this flaw to crash the system or leak kernel memory to user
    > space. (CVE-2016-0774, Moderate)
    
    The same flawed fix was applied to stable branches from 2.6.32.y to
    3.14.y inclusive, and I was able to reproduce the issue on 3.2.y.
    We need to give pipe_iov_copy_to_user() a separate offset variable
    and only update the buffer offset if it succeeds.
    
    References: https://rhn.redhat.com/errata/RHSA-2016-0103.html
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Cc: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b459bc762398544e7d27cd543b5e72850f1e65c1
Author: wang yanqing <udknight@gmail.com>
Date:   Tue May 3 00:38:36 2016 +0800

    rtlwifi: Fix logic error in enter/exit power-save mode
    
    commit 873ffe154ae074c46ed2d72dbd9a2a99f06f55b4 upstream.
    
    In commit a269913c52ad ("rtlwifi: Rework rtl_lps_leave() and
    rtl_lps_enter() to use work queue"), the tests for enter/exit
    power-save mode were inverted. With this change applied, the
    wifi connection becomes much more stable.
    
    Fixes: a269913c52ad ("rtlwifi: Rework rtl_lps_leave() and rtl_lps_enter() to use work queue")
    Signed-off-by: Wang YanQing <udknight@gmail.com>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f741c8806969f6343f945f6c12cf06aee25f5a4
Author: Prarit Bhargava <prarit@redhat.com>
Date:   Wed May 11 12:27:16 2016 -0400

    PCI: Disable all BAR sizing for devices with non-compliant BARs
    
    commit ad67b437f187ea818b2860524d10f878fadfdd99 upstream.
    
    b84106b4e229 ("PCI: Disable IO/MEM decoding for devices with non-compliant
    BARs") disabled BAR sizing for BARs 0-5 of devices that don't comply with
    the PCI spec.  But it didn't do anything for expansion ROM BARs, so we
    still try to size them, resulting in warnings like this on Broadwell-EP:
    
      pci 0000:ff:12.0: BAR 6: failed to assign [mem size 0x00000001 pref]
    
    Move the non-compliant BAR check from __pci_read_base() up to
    pci_read_bases() so it applies to the expansion ROM BAR as well as
    to BARs 0-5.
    
    Note that direct callers of __pci_read_base(), like sriov_init(), will now
    bypass this check.  We haven't had reports of devices with broken SR-IOV
    BARs yet.
    
    [bhelgaas: changelog]
    Fixes: b84106b4e229 ("PCI: Disable IO/MEM decoding for devices with non-compliant BARs")
    Signed-off-by: Prarit Bhargava <prarit@redhat.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: Thomas Gleixner <tglx@linutronix.de>
    CC: Ingo Molnar <mingo@redhat.com>
    CC: "H. Peter Anvin" <hpa@zytor.com>
    CC: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1218a64574151420baf6c9e2644e705282df213
Author: Dave Gerlach <d-gerlach@ti.com>
Date:   Tue Apr 5 14:05:38 2016 -0500

    cpuidle: Indicate when a device has been unregistered
    
    commit c998c07836f985b24361629dc98506ec7893e7a0 upstream.
    
    Currently the 'registered' member of the cpuidle_device struct is set
    to 1 during cpuidle_register_device. In this same function there are
    checks to see if the device is already registered to prevent duplicate
    calls to register the device, but this value is never set to 0 even on
    unregister of the device. Because of this, any attempt to call
    cpuidle_register_device after a call to cpuidle_unregister_device will
    fail which shouldn't be the case.
    
    To prevent this, set registered to 0 when the device is unregistered.
    
    Fixes: c878a52d3c7c (cpuidle: Check if device is already registered)
    Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
    Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70d7df0f978736017d85d8fad91c56231d816249
Author: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Date:   Mon Apr 25 23:31:57 2016 -0700

    aacraid: Fix for aac_command_thread hang
    
    commit fc4bf75ea300a5e62a2419f89dd0e22189dd7ab7 upstream.
    
    Typically under error conditions, it is possible for aac_command_thread()
    to miss the wakeup from kthread_stop() and go back to sleep, causing it
    to hang aac_shutdown.
    
    In the observed scenario, the adapter is not functioning correctly and so
    aac_fib_send() never completes (or time-outs depending on how it was
    called). Shortly after aac_command_thread() starts it performs
    aac_fib_send(SendHostTime) which hangs. When aac_probe_one
    /aac_get_adapter_info send time outs, kthread_stop is called which breaks
    the command thread out of it's hang.
    
    The code will still go back to sleep in schedule_timeout() without
    checking kthread_should_stop() so it causes aac_probe_one to hang until
    the schedule_timeout() which is 30 minutes.
    
    Fixed by: Adding another kthread_should_stop() before schedule_timeout()
    Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b7bac82604956ecda33c48bdbfb33ca37b7f632
Author: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Date:   Mon Apr 25 23:31:26 2016 -0700

    aacraid: Relinquish CPU during timeout wait
    
    commit 07beca2be24cc710461c0b131832524c9ee08910 upstream.
    
    aac_fib_send has a special function case for initial commands during
    driver initialization using wait < 0(pseudo sync mode). In this case,
    the command does not sleep but rather spins checking for timeout.This
    loop is calls cpu_relax() in an attempt to allow other processes/threads
    to use the CPU, but this function does not relinquish the CPU and so the
    command will hog the processor. This was observed in a KDUMP
    "crashkernel" and that prevented the "command thread" (which is
    responsible for completing the command from being timed out) from
    starting because it could not get the CPU.
    
    Fixed by replacing "cpu_relax()" call with "schedule()"
    Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a887008fdc3a094cce6f2f229ccbd6d83dbdc788
Author: Joseph Salisbury <joseph.salisbury@canonical.com>
Date:   Mon Mar 14 14:51:48 2016 -0400

    ath5k: Change led pin configuration for compaq c700 laptop
    
    commit 7b9bc799a445aea95f64f15e0083cb19b5789abe upstream.
    
    BugLink: http://bugs.launchpad.net/bugs/972604
    
    Commit 09c9bae26b0d3c9472cb6ae45010460a2cee8b8d ("ath5k: add led pin
    configuration for compaq c700 laptop") added a pin configuration for the Compaq
    c700 laptop.  However, the polarity of the led pin is reversed.  It should be
    red for wifi off and blue for wifi on, but it is the opposite.  This bug was
    reported in the following bug report:
    http://pad.lv/972604
    
    Fixes: 09c9bae26b0d3c9472cb6ae45010460a2cee8b8d ("ath5k: add led pin configuration for compaq c700 laptop")
    Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79925b261448de46f9b4a63fd7bc957953dda170
Author: Ricky Liang <jcliang@chromium.org>
Date:   Fri May 20 10:58:59 2016 -0700

    Input: uinput - handle compat ioctl for UI_SET_PHYS
    
    commit affa80bd97f7ca282d1faa91667b3ee9e4c590e6 upstream.
    
    When running a 32-bit userspace on a 64-bit kernel, the UI_SET_PHYS
    ioctl needs to be treated with special care, as it has the pointer
    size encoded in the command.
    
    Signed-off-by: Ricky Liang <jcliang@chromium.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac5a8ffc308eabd67253a9ffa8ff174e628d34f8
Author: Matthias Schiffer <mschiffer@universe-factory.net>
Date:   Thu Mar 24 16:02:52 2016 +0100

    MIPS: ath79: make bootconsole wait for both THRE and TEMT
    
    commit f5b556c94c8490d42fea79d7b4ae0ecbc291e69d upstream.
    
    This makes the ath79 bootconsole behave the same way as the generic 8250
    bootconsole.
    
    Also waiting for TEMT (transmit buffer is empty) instead of just THRE
    (transmit buffer is not full) ensures that all characters have been
    transmitted before the real serial driver starts reconfiguring the serial
    controller (which would sometimes result in garbage being transmitted.)
    This change does not cause a visible performance loss.
    
    In addition, this seems to fix a hang observed in certain configurations on
    many AR7xxx/AR9xxx SoCs during autoconfig of the real serial driver.
    
    A more complete follow-up patch will disable 8250 autoconfig for ath79
    altogether (the serial controller is detected as a 16550A, which is not
    fully compatible with the ath79 serial, and the autoconfig may lead to
    undefined behavior on ath79.)
    
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29fe292d71888470662f298e28501c34c548693e
Author: James Hogan <james.hogan@imgtec.com>
Date:   Mon Feb 8 18:43:49 2016 +0000

    MIPS: Fix siginfo.h to use strict posix types
    
    commit 5daebc477da4dfeb31ae193d83084def58fd2697 upstream.
    
    Commit 85efde6f4e0d ("make exported headers use strict posix types")
    changed the asm-generic siginfo.h to use the __kernel_* types, and
    commit 3a471cbc081b ("remove __KERNEL_STRICT_NAMES") make the internal
    types accessible only to the kernel, but the MIPS implementation hasn't
    been updated to match.
    
    Switch to proper types now so that the exported asm/siginfo.h won't
    produce quite so many compiler errors when included alone by a user
    program.
    
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Christopher Ferris <cferris@google.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/12477/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7cb989736793d76c12b02f796143668fa0e7209b
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Thu Apr 21 14:04:55 2016 +0100

    MIPS: math-emu: Fix jalr emulation when rd == $0
    
    commit ab4a92e66741b35ca12f8497896bafbe579c28a1 upstream.
    
    When emulating a jalr instruction with rd == $0, the code in
    isBranchInstr was incorrectly writing to GPR $0 which should actually
    always remain zeroed. This would lead to any further instructions
    emulated which use $0 operating on a bogus value until the task is next
    context switched, at which point the value of $0 in the task context
    would be restored to the correct zero by a store in SAVE_SOME. Fix this
    by not writing to rd if it is $0.
    
    Fixes: 102cedc32a6e ("MIPS: microMIPS: Floating point support.")
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Cc: Maciej W. Rozycki <macro@imgtec.com>
    Cc: James Hogan <james.hogan@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/13160/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>