commit 52bc1fde85f0baf84ef30ebe32560c16c924696e
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Aug 26 02:14:07 2017 +0100

    Linux 3.2.92

commit 8f716035da0ad35d5a65668eb3c10aad6c439d7b
Author: Willem de Bruijn <willemb@google.com>
Date:   Thu Aug 10 12:41:58 2017 -0400

    packet: fix tp_reserve race in packet_set_ring
    
    commit c27927e372f0785f3303e8fad94b85945e2c97b7 upstream.
    
    Updates to tp_reserve can race with reads of the field in
    packet_set_ring. Avoid this by holding the socket lock during
    updates in setsockopt PACKET_RESERVE.
    
    This bug was discovered by syzkaller.
    
    Fixes: 8913336a7e8d ("packet: add PACKET_RESERVE sockopt")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3557f62ec91e10cb2ac8e5f312bec0977d67803f
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Sun Jul 9 13:19:55 2017 -0700

    mqueue: fix a use-after-free in sys_mq_notify()
    
    commit f991af3daabaecff34684fd51fac80319d1baad1 upstream.
    
    The retry logic for netlink_attachskb() inside sys_mq_notify()
    is nasty and vulnerable:
    
    1) The sock refcnt is already released when retry is needed
    2) The fd is controllable by user-space because we already
       release the file refcnt
    
    so we when retry but the fd has been just closed by user-space
    during this small window, we end up calling netlink_detachskb()
    on the error path which releases the sock again, later when
    the user-space closes this socket a use-after-free could be
    triggered.
    
    Setting 'sock' to NULL here should be sufficient to fix it.
    
    Reported-by: GeneBlue <geneblue.mail@gmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1b31fcb21779ddbe0b49f519830e203fe0586688
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Jan 31 15:24:03 2017 +0100

    timerfd: Protect the might cancel mechanism proper
    
    commit 1e38da300e1e395a15048b0af1e5305bd91402f6 upstream.
    
    The handling of the might_cancel queueing is not properly protected, so
    parallel operations on the file descriptor can race with each other and
    lead to list corruptions or use after free.
    
    Protect the context for these operations with a seperate lock.
    
    The wait queue lock cannot be reused for this because that would create a
    lock inversion scenario vs. the cancel lock. Replacing might_cancel with an
    atomic (atomic_t or atomic bit) does not help either because it still can
    race vs. the actual list operation.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "linux-fsdevel@vger.kernel.org"
    Cc: syzkaller <syzkaller@googlegroups.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: linux-fsdevel@vger.kernel.org
    Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1701311521430.3457@nanos
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c5a5d1b1cb8449c77d3cb1663649391635228cff
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Wed Jul 19 22:28:55 2017 +0200

    ipv6: avoid overflow of offset in ip6_find_1stfragopt
    
    commit 6399f1fae4ec29fab5ec76070435555e256ca3a6 upstream.
    
    In some cases, offset can overflow and can cause an infinite loop in
    ip6_find_1stfragopt(). Make it unsigned int to prevent the overflow, and
    cap it at IPV6_MAXPLEN, since packets larger than that should be invalid.
    
    This problem has been here since before the beginning of git history.
    
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 408ab21ebbf0c95946502005327a173a475c025c
Author: Laura Abbott <labbott@redhat.com>
Date:   Mon May 8 14:23:16 2017 -0700

    x86/mm/32: Set the '__vmalloc_start_set' flag in initmem_init()
    
    commit 861ce4a3244c21b0af64f880d5bfe5e6e2fb9e4a upstream.
    
    '__vmalloc_start_set' currently only gets set in initmem_init() when
    !CONFIG_NEED_MULTIPLE_NODES. This breaks detection of vmalloc address
    with virt_addr_valid() with CONFIG_NEED_MULTIPLE_NODES=y, causing
    a kernel crash:
    
      [mm/usercopy] 517e1fbeb6: kernel BUG at arch/x86/mm/physaddr.c:78!
    
    Set '__vmalloc_start_set' appropriately for that case as well.
    
    Reported-by: kbuild test robot <fengguang.wu@intel.com>
    Signed-off-by: Laura Abbott <labbott@redhat.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: dc16ecf7fd1f ("x86-32: use specific __vmalloc_start_set flag in __virt_addr_valid")
    Link: http://lkml.kernel.org/r/1494278596-30373-1-git-send-email-labbott@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 94cca3989d044838828a60781d5cf33d7ec54f19
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri May 5 17:25:12 2017 +0200

    fbdev: sti: don't select CONFIG_VT
    
    commit 34bf129a7f068e3108dbb051b4b05674e2a270e7 upstream.
    
    While working on another build error, I ran into several variations of
    this dependency loop:
    
    subsection "Kconfig recursive dependency limitations"
    drivers/input/Kconfig:8:        symbol INPUT is selected by VT
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/tty/Kconfig:12: symbol VT is selected by FB_STI
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/video/fbdev/Kconfig:677:        symbol FB_STI depends on FB
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/video/fbdev/Kconfig:5:  symbol FB is selected by DRM_KMS_FB_HELPER
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/gpu/drm/Kconfig:72:     symbol DRM_KMS_FB_HELPER is selected by DRM_KMS_CMA_HELPER
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/gpu/drm/Kconfig:137:    symbol DRM_KMS_CMA_HELPER is selected by DRM_HDLCD
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/gpu/drm/arm/Kconfig:6:  symbol DRM_HDLCD depends on OF
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/of/Kconfig:4:   symbol OF is selected by X86_INTEL_CE
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    arch/x86/Kconfig:523:   symbol X86_INTEL_CE depends on X86_IO_APIC
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    arch/x86/Kconfig:1011:  symbol X86_IO_APIC depends on X86_LOCAL_APIC
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    arch/x86/Kconfig:1005:  symbol X86_LOCAL_APIC depends on X86_UP_APIC
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    arch/x86/Kconfig:980:   symbol X86_UP_APIC depends on PCI_MSI
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/pci/Kconfig:11: symbol PCI_MSI is selected by AMD_IOMMU
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/iommu/Kconfig:106:      symbol AMD_IOMMU depends on IOMMU_SUPPORT
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/iommu/Kconfig:5:        symbol IOMMU_SUPPORT is selected by DRM_ETNAVIV
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/gpu/drm/etnaviv/Kconfig:2:      symbol DRM_ETNAVIV depends on THERMAL
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/thermal/Kconfig:5:      symbol THERMAL is selected by ACPI_VIDEO
    For a resolution refer to Documentation/kbuild/kconfig-language.txt
    subsection "Kconfig recursive dependency limitations"
    drivers/acpi/Kconfig:183:       symbol ACPI_VIDEO is selected by INPUT
    
    This doesn't currently show up as I fixed the 'THERMAL' part of it,
    but I noticed that the FB_STI dependency should not be there but
    was introduced by slightly incorrect bug-fix patch that tried to
    fix a link error.
    
    Instead of selecting 'VT' to make us enter the drivers/video/console
    directory at compile-time, it's sufficient to build the
    drivers/video/console/sticore.c file by adding its directory
    to when CONFIG_FB_STI is enabled. Alternatively, we could move the
    sticore code to another directory that is always built when we
    have at STI_CONSOLE or FB_STI enabled.
    
    Fixes: 17085a934592 ("parisc: stifb: should depend on STI_CONSOLE")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Cc: Helge Deller <deller@gmx.de>
    Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
    Cc: Alexander Beregalov <a.beregalov@gmail.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c58b2c46505568ac70aadffc338a7a90272c6d4b
Author: Richard Weinberger <richard@nod.at>
Date:   Sat Apr 1 00:41:57 2017 +0200

    um: Fix PTRACE_POKEUSER on x86_64
    
    commit 9abc74a22d85ab29cef9896a2582a530da7e79bf upstream.
    
    This is broken since ever but sadly nobody noticed.
    Recent versions of GDB set DR_CONTROL unconditionally and
    UML dies due to a heap corruption. It turns out that
    the PTRACE_POKEUSER was copy&pasted from i386 and assumes
    that addresses are 4 bytes long.
    
    Fix that by using 8 as address size in the calculation.
    
    Reported-by: jie cao <cj3054@gmail.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c5de619ea4ec388a580426d9bbd5e29fed5cd0b3
Author: Steve French <smfrench@gmail.com>
Date:   Tue May 2 13:35:20 2017 -0500

    Set unicode flag on cifs echo request to avoid Mac error
    
    commit 26c9cb668c7fbf9830516b75d8bee70b699ed449 upstream.
    
    Mac requires the unicode flag to be set for cifs, even for the smb
    echo request (which doesn't have strings).
    
    Without this Mac rejects the periodic echo requests (when mounting
    with cifs) that we use to check if server is down
    
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 67a70eac6d81ee5a7473e11cae464c89783af725
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon May 1 21:43:43 2017 +0300

    cifs: small underflow in cnvrtDosUnixTm()
    
    commit 564277eceeca01e02b1ef3e141cfb939184601b4 upstream.
    
    January is month 1.  There is no zero-th month.  If someone passes a
    zero month then it means we read from one space before the start of the
    total_days_of_prev_months[] array.
    
    We may as well also be strict about days as well.
    
    Fixes: 1bd5bbcb6531 ("[CIFS] Legacy time handling for Win9x and OS/2 part 1")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e8f2dfc1abd41c9ebb93bf0af62ae80bcf5ddcf3
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon May 1 15:29:48 2017 -0700

    tcp: fix wraparound issue in tcp_lp
    
    commit a9f11f963a546fea9144f6a6d1a307e814a387e7 upstream.
    
    Be careful when comparing tcp_time_stamp to some u32 quantity,
    otherwise result can be surprising.
    
    Fixes: 7c106d7e782b ("[TCP]: TCP Low Priority congestion control")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 52c4c86e376899d418d789bf3ff4e4878de63a9b
Author: David S. Miller <davem@davemloft.net>
Date:   Mon May 1 15:10:20 2017 -0400

    ipv6: Need to export ipv6_push_frag_opts for tunneling now.
    
    commit 5b8481fa42ac58484d633b558579e302aead64c1 upstream.
    
    Since that change also made the nfrag function not necessary
    for exports, remove it.
    
    Fixes: 89a23c8b528b ("ip6_tunnel: Fix missing tunnel encapsulation limit option")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 700f4609f12f05cac00d60f7c9d49f9404f32b53
Author: Craig Gallek <cgallek@google.com>
Date:   Wed Apr 26 14:37:45 2017 -0400

    ip6_tunnel: Fix missing tunnel encapsulation limit option
    
    commit 89a23c8b528bd2c89f3981573d6cd7d23840c8a6 upstream.
    
    The IPv6 tunneling code tries to insert IPV6_TLV_TNL_ENCAP_LIMIT and
    IPV6_TLV_PADN options when an encapsulation limit is defined (the
    default is a limit of 4).  An MTU adjustment is done to account for
    these options as well.  However, the options are never present in the
    generated packets.
    
    The issue appears to be a subtlety between IPV6_DSTOPTS and
    IPV6_RTHDRDSTOPTS defined in RFC 3542.  When the IPIP tunnel driver was
    written, the encap limit options were included as IPV6_RTHDRDSTOPTS in
    dst0opt of struct ipv6_txoptions.  Later, ipv6_push_nfrags_opts was
    (correctly) updated to require IPV6_RTHDR options when IPV6_RTHDRDSTOPTS
    are to be used.  This caused the options to no longer be included in v6
    encapsulated packets.
    
    The fix is to use IPV6_DSTOPTS (in dst1opt of struct ipv6_txoptions)
    instead.  IPV6_DSTOPTS do not have the additional IPV6_RTHDR requirement.
    
    Fixes: 1df64a8569c7: ("[IPV6]: Add ip6ip6 tunnel driver.")
    Fixes: 333fad5364d6: ("[IPV6]: Support several new sockopt / ancillary data in Advanced API (RFC3542)")
    Signed-off-by: Craig Gallek <kraig@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1d87656912eb430cecb66cc7c59e75e9dbc045ee
Author: Michael Trimarchi <michael@amarulasolutions.com>
Date:   Tue Apr 25 15:18:05 2017 +0200

    power: supply: pda_power: move from timer to delayed_work
    
    commit 633e8799ddc09431be2744c4a1efdbda13af2b0b upstream.
    
    This changed is needed to avoid locking problem during
    boot as shown:
    
    <5>[    8.824096] Registering SWP/SWPB emulation handler
    <6>[    8.977294] clock: disabling unused clocks to save power
    <3>[    9.108154] BUG: sleeping function called from invalid context at kernel_albert/kernel/mutex.c:269
    <3>[    9.122894] in_atomic(): 1, irqs_disabled(): 0, pid: 1, name: swapper/0
    <4>[    9.130249] 3 locks held by swapper/0/1:
    <4>[    9.134613]  #0:  (&__lockdep_no_validate__){......}, at: [<c0342430>] __driver_attach+0x58/0xa8
    <4>[    9.144500]  #1:  (&__lockdep_no_validate__){......}, at: [<c0342440>] __driver_attach+0x68/0xa8
    <4>[    9.154357]  #2:  (&polling_timer){......}, at: [<c0053770>] run_timer_softirq+0x108/0x3ec
    <4>[    9.163726] Backtrace:
    <4>[    9.166473] [<c001269c>] (dump_backtrace+0x0/0x114) from [<c067e5f0>] (dump_stack+0x20/0x24)
    <4>[    9.175811]  r6:00203230 r5:0000010d r4:d782e000 r3:60000113
    <4>[    9.182250] [<c067e5d0>] (dump_stack+0x0/0x24) from [<c007441c>] (__might_sleep+0x10c/0x128)
    <4>[    9.191650] [<c0074310>] (__might_sleep+0x0/0x128) from [<c0688f60>] (mutex_lock_nested+0x34/0x36c)
    <4>[    9.201660]  r5:c02d5350 r4:d79a0c64
    <4>[    9.205688] [<c0688f2c>] (mutex_lock_nested+0x0/0x36c) from [<c02d5350>] (regulator_set_current_limit+0x30/0x118)
    <4>[    9.217071] [<c02d5320>] (regulator_set_current_limit+0x0/0x118) from [<c0435ce0>] (update_charger+0x84/0xc4)
    <4>[    9.228027]  r7:d782fb20 r6:00000101 r5:c1767e94 r4:00000000
    <4>[    9.234436] [<c0435c5c>] (update_charger+0x0/0xc4) from [<c0435d40>] (psy_changed+0x20/0x48)
    <4>[    9.243804]  r5:d782e000 r4:c1767e94
    <4>[    9.247802] [<c0435d20>] (psy_changed+0x0/0x48) from [<c0435dec>] (polling_timer_func+0x84/0xb8)
    <4>[    9.257537]  r4:c1767e94 r3:00000002
    <4>[    9.261566] [<c0435d68>] (polling_timer_func+0x0/0xb8) from [<c00537e4>] (run_timer_softirq+0x17c/0x3ec)
    <4>[    9.272033]  r4:c1767eb0 r3:00000000
    <4>[    9.276062] [<c0053668>] (run_timer_softirq+0x0/0x3ec) from [<c004b000>] (__do_softirq+0xf0/0x298)
    <4>[    9.286010] [<c004af10>] (__do_softirq+0x0/0x298) from [<c004b650>] (irq_exit+0x98/0xa0)
    <4>[    9.295013] [<c004b5b8>] (irq_exit+0x0/0xa0) from [<c000edbc>] (handle_IRQ+0x60/0xc0)
    <4>[    9.303680]  r4:c1194e98 r3:c00bc778
    <4>[    9.307708] [<c000ed5c>] (handle_IRQ+0x0/0xc0) from [<c0008504>] (gic_handle_irq+0x34/0x68)
    <4>[    9.316955]  r8:000ac383 r7:d782fc3c r6:d782fc08 r5:c11936c4 r4:e0802100
    <4>[    9.324310] r3:c026ba48
    <4>[    9.327301] [<c00084d0>] (gic_handle_irq+0x0/0x68) from [<c068c2c0>] (__irq_svc+0x40/0x74)
    <4>[    9.336456] Exception stack(0xd782fc08 to 0xd782fc50)
    <4>[    9.342041] fc00:                   d6e30e6c ac383627 00000000 ac383417 ea19c000 ea200000
    <4>[    9.351104] fc20: beffffff 00000667 000ac383 d6e30670 d6e3066c d782fc94 d782fbe8 d782fc50
    <4>[    9.360168] fc40: c026ba48 c001d1f0 00000113 ffffffff
    
    Fixes: b2998049cfae ("[BATTERY] pda_power platform driver")
    Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
    Signed-off-by: Anthony Brandon <anthony@amarulasolutions.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
    [bwh: Backported to 3.2:
     - Drop changes in otg_handle_notification()
     - Adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 03e1c5f461a85aea88cdb424c27a8f2ec4a75bf3
Author: Szymon Janc <szymon.janc@codecoup.pl>
Date:   Mon Apr 24 18:25:04 2017 -0700

    Bluetooth: Fix user channel for 32bit userspace on 64bit kernel
    
    commit ab89f0bdd63a3721f7cd3f064f39fc4ac7ca14d4 upstream.
    
    Running 32bit userspace on 64bit kernel results in MSG_CMSG_COMPAT being
    defined as 0x80000000. This results in sendmsg failure if used from 32bit
    userspace running on 64bit kernel. Fix this by accounting for MSG_CMSG_COMPAT
    in flags check in hci_sock_sendmsg.
    
    Signed-off-by: Szymon Janc <szymon.janc@codecoup.pl>
    Signed-off-by: Marko Kiiskila <marko@runtime.io>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 36c08d834f3d2a3b0b4c897105dd12e7c0c25217
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue Feb 7 10:05:09 2017 +0100

    net: ethernet: ucc_geth: fix MEM_PART_MURAM mode
    
    commit 8b8642af15ed14b9a7a34d3401afbcc274533e13 upstream.
    
    Since commit 5093bb965a163 ("powerpc/QE: switch to the cpm_muram
    implementation"), muram area is not part of immrbar mapping anymore
    so immrbar_virt_to_phys() is not usable anymore.
    
    Fixes: 5093bb965a163 ("powerpc/QE: switch to the cpm_muram implementation")
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Acked-by: David S. Miller <davem@davemloft.net>
    Acked-by: Li Yang <pku.leo@gmail.com>
    Signed-off-by: Scott Wood <oss@buserror.net>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4d34a500e77add127cdee5b4778079596a9ebabe
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Apr 25 13:39:54 2017 +0200

    libata: reject passthrough WRITE SAME requests
    
    commit c6ade20f5e50e188d20b711a618b20dd1d50457e upstream.
    
    The WRITE SAME to TRIM translation rewrites the DATA OUT buffer.  While
    the SCSI code accomodates for this by passing a read-writable buffer
    userspace applications don't cater for this behavior.  In fact it can
    be used to rewrite e.g. a readonly file through mmap and should be
    considered as a security fix.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    [bwh: Backported to 3.2:
     - Open-code blk_rq_is_passthrough()
     - We don't distinguish which field is invaid so goto invalid_fld
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 258132a3ab98637570e7961fe29cdcad408a7912
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
Date:   Sun Apr 9 10:15:51 2017 -0700

    IB/core: For multicast functions, verify that LIDs are multicast LIDs
    
    commit 8561eae60ff9417a50fa1fb2b83ae950dc5c1e21 upstream.
    
    The Infiniband spec defines "A multicast address is defined by a
    MGID and a MLID" (section 10.5).  Currently the MLID value is not
    validated.
    
    Add check to verify that the MLID value is in the correct address
    range.
    
    Fixes: 0c33aeedb2cf ("[IB] Add checks to multicast attach and detach")
    Reviewed-by: Ira Weiny <ira.weiny@intel.com>
    Reviewed-by: Dasaratharaman Chandramouli <dasaratharaman.chandramouli@intel.com>
    Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.2: use literal number instead of IB_MULTICAST_LID_BASE]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 748b9d53f2187cc7baf3a317d85f579de5b5d839
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
Date:   Sun Apr 9 10:15:32 2017 -0700

    IB/core: If the MGID/MLID pair is not on the list return an error
    
    commit 20c7840a77ddcb2ed2fbd66e8197db2868495751 upstream.
    
    A list of MGID/MLID pairs is built when doing a multicast attach.  When
    the multicast detach is called, the list is searched, and regardless of
    the search outcome, the driver detach is called.
    
    If an MGID/MLID pair is not on the list, driver detach should not be
    called, and an error should be returned.  Calling the driver without
    removing an MGID/MLID pair from the list can leave the core and driver
    out of sync.
    
    Fixes: f4e401562c11 ("IB/uverbs: track multicast group membership for userspace QPs")
    Reviewed-by: Ira Weiny <ira.weiny@intel.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2be5350302e44be0c33bfcfc3687f48839c4b256
Author: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
Date:   Thu Apr 13 15:33:34 2017 +0300

    usb: Make sure usb/phy/of gets built-in
    
    commit 3d6159640da9c9175d1ca42f151fc1a14caded59 upstream.
    
    DWC3 driver uses of_usb_get_phy_mode() which is
    implemented in drivers/usb/phy/of.c and in bare minimal
    configuration it might not be pulled in kernel binary.
    
    In case of ARC or ARM this could be easily reproduced with
    "allnodefconfig" +CONFIG_USB=m +CONFIG_USB_DWC3=m.
    
    On building all ends-up with:
    ---------------------->8------------------
      Kernel: arch/arm/boot/Image is ready
      Kernel: arch/arm/boot/zImage is ready
      Building modules, stage 2.
      MODPOST 5 modules
    ERROR: "of_usb_get_phy_mode" [drivers/usb/dwc3/dwc3.ko] undefined!
    make[1]: *** [__modpost] Error 1
    make: *** [modules] Error 2
    ---------------------->8------------------
    
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: Felix Fietkau <nbd@nbd.name>
    Cc: Jeremy Kerr <jk@ozlabs.org>
    Cc: linux-snps-arc@lists.infradead.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7825ba3a061cd8623e9530fcc204101bedb9aa52
Author: Stefan Assmann <sassmann@kpanic.de>
Date:   Wed Apr 19 09:22:45 2017 +0200

    PCI: Disable boot interrupt quirk for ASUS M2N-LR
    
    commit c4e649b09f55595e6df6da5465a5b3cfc93557c1 upstream.
    
    The ASUS M2N-LR should not trigger boot interrupt quirks although it
    carries an Intel 6702PXH.  On this board the boot interrupt quirks cause
    incorrect IRQ assignments and should be disabled.
    
    Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=43074
    Tested-by: Solomon Peachy <pizza@shaftnet.org>
    Signed-off-by: Stefan Assmann <sassmann@kpanic.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 883a0ef402e5ed967af0e5b83aad95b8703fd0de
Author: Liping Zhang <zlpnobody@gmail.com>
Date:   Mon Apr 17 21:18:57 2017 +0800

    netfilter: ctnetlink: make it safer when updating ct->status
    
    commit 53b56da83d7899de375a9de153fd7f5397de85e6 upstream.
    
    After converting to use rcu for conntrack hash, one CPU may update
    the ct->status via ctnetlink, while another CPU may process the
    packets and update the ct->status.
    
    So the non-atomic operation "ct->status |= status;" via ctnetlink
    becomes unsafe, and this may clear the IPS_DYING_BIT bit set by
    another CPU unexpectedly. For example:
             CPU0                            CPU1
      ctnetlink_change_status        __nf_conntrack_find_get
          old = ct->status              nf_ct_gc_expired
              -                         nf_ct_kill
              -                      test_and_set_bit(IPS_DYING_BIT
          new = old | status;                 -
      ct->status = new; <-- oops, _DYING_ is cleared!
    
    Now using a series of atomic bit operation to solve the above issue.
    
    Also note, user shouldn't set IPS_TEMPLATE, IPS_SEQ_ADJUST directly,
    so make these two bits be unchangable too.
    
    If we set the IPS_TEMPLATE_BIT, ct will be freed by nf_ct_tmpl_free,
    but actually it is alloced by nf_conntrack_alloc.
    If we set the IPS_SEQ_ADJUST_BIT, this may cause the NULL pointer
    deference, as the nfct_seqadj(ct) maybe NULL.
    
    Last, add some comments to describe the logic change due to the
    commit a963d710f367 ("netfilter: ctnetlink: Fix regression in CTA_STATUS
    processing"), which makes me feel a little confusing.
    
    Fixes: 76507f69c44e ("[NETFILTER]: nf_conntrack: use RCU for conntrack hash")
    Signed-off-by: Liping Zhang <zlpnobody@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    [bwh: Backported to 3.2:
     - IPS_UNCHANGEABLE_MASK was not previously defined and ctnetlink_update_status()
       is not needed
     - enum ip_conntrack_status only assigns 13 bits
     - Adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 85763352fb2513a415a4d12208832f1c9012e410
Author: Ashish Kalra <ashish@bluestacks.com>
Date:   Wed Apr 19 20:50:15 2017 +0530

    x86/boot: Fix BSS corruption/overwrite bug in early x86 kernel startup
    
    commit d594aa0277e541bb997aef0bc0a55172d8138340 upstream.
    
    The minimum size for a new stack (512 bytes) setup for arch/x86/boot components
    when the bootloader does not setup/provide a stack for the early boot components
    is not "enough".
    
    The setup code executing as part of early kernel startup code, uses the stack
    beyond 512 bytes and accidentally overwrites and corrupts part of the BSS
    section. This is exposed mostly in the early video setup code, where
    it was corrupting BSS variables like force_x, force_y, which in-turn affected
    kernel parameters such as screen_info (screen_info.orig_video_cols) and
    later caused an exception/panic in console_init().
    
    Most recent boot loaders setup the stack for early boot components, so this
    stack overwriting into BSS section issue has not been exposed.
    
    Signed-off-by: Ashish Kalra <ashish@bluestacks.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.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/20170419152015.10011-1-ashishkalra@Ashishs-MacBook-Pro.local
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f9196a6dfd8ce1dc3da3a1611b9f310b7f354477
Author: Peter Chen <peter.chen@nxp.com>
Date:   Wed Apr 19 16:55:52 2017 +0300

    usb: host: xhci: print correct command ring address
    
    commit 6fc091fb0459ade939a795bfdcaf645385b951d4 upstream.
    
    Print correct command ring address using 'val_64'.
    
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1791088dcec466dce8fb2be6f18739a4f2e7d938
Author: Frank Schaefer <fschaefer.oss@googlemail.com>
Date:   Sun Apr 16 14:35:45 2017 -0300

    ov2640: fix vflip control
    
    commit 7f140fc2064bcd23e0490d8210650e2ef21c1c89 upstream.
    
    Enabling vflip currently causes wrong colors.
    It seems that (at least with the current sensor setup) REG04_VFLIP_IMG only
    changes the vertical readout direction.
    Because pixels are arranged RGRG... in odd lines and GBGB... in even lines,
    either a one line shift or even/odd line swap is required, too, but
    apparently this doesn't happen.
    
    I finally figured out that this can be done manually by setting
    REG04_VREF_EN.
    Looking at hflip, it turns out that bit REG04_HREF_EN is set there
    permanetly, but according to my tests has no effect on the pixel readout
    order.
    So my conclusion is that the current documentation of sensor register 0x04
    is wrong (has changed after preliminary datasheet version 2.2).
    
    I'm pretty sure that automatic vertical line shift/switch can be enabled,
    too, but until anyone finds ot how this works, we have to stick with manual
    switching.
    
    Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 716e324b700b885a6692b38d113329b61788d2d5
Author: Alyssa Milburn <amilburn@zall.org>
Date:   Sat Apr 1 14:34:49 2017 -0300

    dw2102: limit messages to buffer size
    
    commit 950e252cb469f323740d78e4907843acef89eedb upstream.
    
    Otherwise the i2c transfer functions can read or write beyond the end of
    stack or heap buffers.
    
    Signed-off-by: Alyssa Milburn <amilburn@zall.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2:
     - Use obuf instead of state->data
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 45fd70b4099514d51b117b87e03091ffcef96a5c
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Nov 22 04:56:33 2013 -0300

    dw2102: some missing unlocks on error
    
    commit 324ed533bf0b23c309b805272c4ffcc5d51493a6 upstream.
    
    We recently introduced some new error paths but the unlocks are missing.
    Fixes: 0065a79a8698 ('[media] dw2102: Don't use dynamic static allocation')
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    [bwh: Backported to 3.2: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0cfbb464bd9f0173da91e1cf3e722a6eacdf6e0e
Author: Mauro Carvalho Chehab <m.chehab@samsung.com>
Date:   Sat Nov 2 07:43:40 2013 -0300

    dw2102: Don't use dynamic static allocation
    
    commit 0065a79a8698a953e4b201c5fce8db8940530578 upstream.
    
    Dynamic static allocation is evil, as Kernel stack is too low, and
    compilation complains about it on some archs:
            drivers/media/usb/dvb-usb/dw2102.c:368:1: warning: 'dw2102_earda_i2c_transfer' uses dynamic stack allocation [enabled by default]
            drivers/media/usb/dvb-usb/dw2102.c:449:1: warning: 'dw2104_i2c_transfer' uses dynamic stack allocation [enabled by default]
            drivers/media/usb/dvb-usb/dw2102.c:512:1: warning: 'dw3101_i2c_transfer' uses dynamic stack allocation [enabled by default]
            drivers/media/usb/dvb-usb/dw2102.c:621:1: warning: 's6x0_i2c_transfer' uses dynamic stack allocation [enabled by default]
    Instead, let's enforce a limit for the buffer to be the max size of
    a control URB payload data (64 bytes).
    
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Reviewed-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    [bwh: Backported to 3.2: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a09cc2a3ed2e817924c6d138b6ac23e991878139
Author: Alyssa Milburn <amilburn@zall.org>
Date:   Sat Apr 1 14:34:32 2017 -0300

    ttusb2: limit messages to buffer size
    
    commit a12b8ab8c5ff7ccd7b107a564743507c850a441d upstream.
    
    Otherwise ttusb2_i2c_xfer can read or write beyond the end of static and
    heap buffers.
    
    Signed-off-by: Alyssa Milburn <amilburn@zall.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 489c80155c8691d282ce18f62a3a83b0adf9ee0e
Author: Josh Boyer <jwboyer@redhat.com>
Date:   Wed Nov 2 16:39:58 2011 -0300

    ttusb2: Don't use stack variables for DMA
    
    commit ff17999184ed13829bc14c3be412d980173dff40 upstream.
    
    The ttusb2_msg function uses on-stack variables to submit commands to
    dvb_usb_generic.  This eventually gets to the DMA api layer and will throw a
    traceback if the debugging options are set.
    
    This allocates the temporary buffer variables with kzalloc instead.
    
    Fixes https://bugzilla.redhat.com/show_bug.cgi?id=734506
    
    Signed-off-by: Josh Boyer <jwboyer@redhat.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e8fba6090bb5bc277c017f8ca0f39cf303616682
Author: Lukas Wunner <lukas@wunner.de>
Date:   Tue Apr 18 20:44:30 2017 +0200

    PCI: Freeze PME scan before suspending devices
    
    commit ea00353f36b64375518662a8ad15e39218a1f324 upstream.
    
    Laurent Pinchart reported that the Renesas R-Car H2 Lager board (r8a7790)
    crashes during suspend tests.  Geert Uytterhoeven managed to reproduce the
    issue on an M2-W Koelsch board (r8a7791):
    
      It occurs when the PME scan runs, once per second.  During PME scan, the
      PCI host bridge (rcar-pci) registers are accessed while its module clock
      has already been disabled, leading to the crash.
    
    One reproducer is to configure s2ram to use "s2idle" instead of "deep"
    suspend:
    
      # echo 0 > /sys/module/printk/parameters/console_suspend
      # echo s2idle > /sys/power/mem_sleep
      # echo mem > /sys/power/state
    
    Another reproducer is to write either "platform" or "processors" to
    /sys/power/pm_test.  It does not (or is less likely) to happen during full
    system suspend ("core" or "none") because system suspend also disables
    timers, and thus the workqueue handling PME scans no longer runs.  Geert
    believes the issue may still happen in the small window between disabling
    module clocks and disabling timers:
    
      # echo 0 > /sys/module/printk/parameters/console_suspend
      # echo platform > /sys/power/pm_test    # Or "processors"
      # echo mem > /sys/power/state
    
    (Make sure CONFIG_PCI_RCAR_GEN2 and CONFIG_USB_OHCI_HCD_PCI are enabled.)
    
    Rafael Wysocki agrees that PME scans should be suspended before the host
    bridge registers become inaccessible.  To that end, queue the task on a
    workqueue that gets frozen before devices suspend.
    
    Rafael notes however that as a result, some wakeup events may be missed if
    they are delivered via PME from a device without working IRQ (which hence
    must be polled) and occur after the workqueue has been frozen.  If that
    turns out to be an issue in practice, it may be possible to solve it by
    calling pci_pme_list_scan() once directly from one of the host bridge's
    pm_ops callbacks.
    
    Stacktrace for posterity:
    
      PM: Syncing filesystems ... [   38.566237] done.
      PM: Preparing system for sleep (mem)
      Freezing user space processes ... [   38.579813] (elapsed 0.001 seconds) done.
      Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
      PM: Suspending system (mem)
      PM: suspend of devices complete after 152.456 msecs
      PM: late suspend of devices complete after 2.809 msecs
      PM: noirq suspend of devices complete after 29.863 msecs
      suspend debug: Waiting for 5 second(s).
      Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
      pgd = c0003000
      [00000000] *pgd=80000040004003, *pmd=00000000
      Internal error: : 1211 [#1] SMP ARM
      Modules linked in:
      CPU: 1 PID: 20 Comm: kworker/1:1 Not tainted
      4.9.0-rc1-koelsch-00011-g68db9bc814362e7f #3383
      Hardware name: Generic R8A7791 (Flattened Device Tree)
      Workqueue: events pci_pme_list_scan
      task: eb56e140 task.stack: eb58e000
      PC is at pci_generic_config_read+0x64/0x6c
      LR is at rcar_pci_cfg_base+0x64/0x84
      pc : [<c041d7b4>]    lr : [<c04309a0>]    psr: 600d0093
      sp : eb58fe98  ip : c041d750  fp : 00000008
      r10: c0e2283c  r9 : 00000000  r8 : 600d0013
      r7 : 00000008  r6 : eb58fed6  r5 : 00000002  r4 : eb58feb4
      r3 : 00000000  r2 : 00000044  r1 : 00000008  r0 : 00000000
      Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
      Control: 30c5387d  Table: 6a9f6c80  DAC: 55555555
      Process kworker/1:1 (pid: 20, stack limit = 0xeb58e210)
      Stack: (0xeb58fe98 to 0xeb590000)
      fe80:                                                       00000002 00000044
      fea0: eb6f5800 c041d9b0 eb58feb4 00000008 00000044 00000000 eb78a000 eb78a000
      fec0: 00000044 00000000 eb9aff00 c0424bf0 eb78a000 00000000 eb78a000 c0e22830
      fee0: ea8a6fc0 c0424c5c eaae79c0 c0424ce0 eb55f380 c0e22838 eb9a9800 c0235fbc
      ff00: eb55f380 c0e22838 eb55f380 eb9a9800 eb9a9800 eb58e000 eb9a9824 c0e02100
      ff20: eb55f398 c02366c4 eb56e140 eb5631c0 00000000 eb55f380 c023641c 00000000
      ff40: 00000000 00000000 00000000 c023a928 cd105598 00000000 40506a34 eb55f380
      ff60: 00000000 00000000 dead4ead ffffffff ffffffff eb58ff74 eb58ff74 00000000
      ff80: 00000000 dead4ead ffffffff ffffffff eb58ff90 eb58ff90 eb58ffac eb5631c0
      ffa0: c023a844 00000000 00000000 c0206d68 00000000 00000000 00000000 00000000
      ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 3a81336c 10ccd1dd
      [<c041d7b4>] (pci_generic_config_read) from [<c041d9b0>]
      (pci_bus_read_config_word+0x58/0x80)
      [<c041d9b0>] (pci_bus_read_config_word) from [<c0424bf0>]
      (pci_check_pme_status+0x34/0x78)
      [<c0424bf0>] (pci_check_pme_status) from [<c0424c5c>] (pci_pme_wakeup+0x28/0x54)
      [<c0424c5c>] (pci_pme_wakeup) from [<c0424ce0>] (pci_pme_list_scan+0x58/0xb4)
      [<c0424ce0>] (pci_pme_list_scan) from [<c0235fbc>]
      (process_one_work+0x1bc/0x308)
      [<c0235fbc>] (process_one_work) from [<c02366c4>] (worker_thread+0x2a8/0x3e0)
      [<c02366c4>] (worker_thread) from [<c023a928>] (kthread+0xe4/0xfc)
      [<c023a928>] (kthread) from [<c0206d68>] (ret_from_fork+0x14/0x2c)
      Code: ea000000 e5903000 f57ff04f e3a00000 (e5843000)
      ---[ end trace 667d43ba3aa9e589 ]---
    
    Fixes: df17e62e5bff ("PCI: Add support for polling PME state on suspended legacy PCI devices")
    Reported-and-tested-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Reported-and-tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
    Cc: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Cc: Simon Horman <horms+renesas@verge.net.au>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Matthew Garrett <mjg59@srcf.ucam.org>
    [bwh: Backported to 3.2: adjust context, indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 999df205ec3140149a8eb56dfaefa0946e72327d
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Wed Apr 12 13:25:52 2017 +0100

    PCI: Only allow WC mmap on prefetchable resources
    
    commit cef4d02305a06be581bb7f4353446717a1b319ec upstream.
    
    The /proc/bus/pci mmap interface allows the user to specify whether they
    want WC or not.  Don't let them do so on non-prefetchable BARs.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 077b04d600f7518251770ef697d24389db8570d7
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Wed Apr 12 13:25:51 2017 +0100

    PCI: Fix another sanity check bug in /proc/pci mmap
    
    commit 17caf56731311c9596e7d38a70c88fcb6afa6a1b upstream.
    
    Don't match MMIO maps with I/O BARs and vice versa.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 727867eeddf50c1b94eb9e817e7185837cc1711c
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Wed Jun 8 14:46:54 2016 -0500

    PCI: Ignore write combining when mapping I/O port space
    
    commit 3a92c319c44a7bcee9f48dff9d97d001943b54c6 upstream.
    
    PCI exposes files like /proc/bus/pci/00/00.0 in procfs.  These files
    support operations like this:
    
      ioctl(fd, PCIIOC_MMAP_IS_IO);           # request I/O port space
      ioctl(fd, PCIIOC_WRITE_COMBINE, 1);     # request write-combining
      mmap(fd, ...)
    
    Write combining is useful on PCI memory space, but I don't think it makes
    sense on PCI I/O port space.
    
    We *could* change proc_bus_pci_ioctl() to make it impossible to set
    mmap_state == pci_mmap_io and write_combine at the same time, but that
    would break the following sequence, which is currently legal:
    
      mmap(fd, ...)                           # default is I/O, non-combining
      ioctl(fd, PCIIOC_WRITE_COMBINE, 1);     # request write-combining
      ioctl(fd, PCIIOC_MMAP_IS_MEM);          # request memory space
      mmap(fd, ...)                           # get write-combining mapping
    
    Ignore the write-combining flag when mapping I/O port space.
    
    This patch should have no functional effect, based on this analysis of all
    implementations of pci_mmap_page_range():
    
      - ia64 mips parisc sh unicore32 x86 do not support mapping of I/O port
        space at all.
    
      - arm cris microblaze mn10300 sparc xtensa support mapping of I/O port
        space, but ignore the write_combine argument to pci_mmap_page_range().
    
      - powerpc supports mapping of I/O port space and uses write_combine, and
        it disables write combining for I/O port space in
        __pci_mmap_set_pgprot().
    
    This patch makes it possible to remove __pci_mmap_set_pgprot() from
    powerpc, which simplifies that path.
    
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e674844ad3a2c336e23005a82354db5b9b2f4773
Author: Alyssa Milburn <amilburn@zall.org>
Date:   Sat Apr 1 14:34:08 2017 -0300

    zr364xx: enforce minimum size when reading header
    
    commit ee0fe833d96793853335844b6d99fb76bd12cbeb upstream.
    
    This code copies actual_length-128 bytes from the header, which will
    underflow if the received buffer is too small.
    
    Signed-off-by: Alyssa Milburn <amilburn@zall.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1a4b6a9aa3a892f819acf68d1a61765ec4dfc10d
Author: Alyssa Milburn <amilburn@zall.org>
Date:   Sat Apr 1 14:33:42 2017 -0300

    digitv: limit messages to buffer size
    
    commit 821117dc21083a99dd99174c10848d70ff43de29 upstream.
    
    Return an error rather than memcpy()ing beyond the end of the buffer.
    Internal callers use appropriate sizes, but digitv_i2c_xfer may not.
    
    Signed-off-by: Alyssa Milburn <amilburn@zall.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b0531078569b34f893b3f3c1642ce3c01cc11fe5
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Wed Apr 12 13:25:50 2017 +0100

    PCI: Fix pci_mmap_fits() for HAVE_PCI_RESOURCE_TO_USER platforms
    
    commit 6bccc7f426abd640f08d8c75fb22f99483f201b4 upstream.
    
    In the PCI_MMAP_PROCFS case when the address being passed by the user is a
    'user visible' resource address based on the bus window, and not the actual
    contents of the resource, that's what we need to be checking it against.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2689a71af6dfff591eed1bda4b760f8b50eb880a
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Apr 7 02:33:30 2017 +0200

    padata: free correct variable
    
    commit 07a77929ba672d93642a56dc2255dd21e6e2290b upstream.
    
    The author meant to free the variable that was just allocated, instead
    of the one that failed to be allocated, but made a simple typo. This
    patch rectifies that.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5ce36bb38e14d2a4c30356f96031a7ec9d246790
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 09:53:58 2017 -0300

    cx231xx-audio: fix NULL-deref at probe
    
    commit 65f921647f4c89a2068478c89691f39b309b58f7 upstream.
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer or accessing memory beyond the endpoint array should a
    malicious device lack the expected endpoints.
    
    Fixes: e0d3bafd0258 ("V4L/DVB (10954): Add cx231xx USB driver")
    
    Cc: Sri Deevi <Srinivasa.Deevi@conexant.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 239a2faa42fafdc4a7dbc5a161b7c3b4f54f09ca
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 09:53:57 2017 -0300

    cx231xx-audio: fix init error path
    
    commit fff1abc4d54e469140a699612b4db8d6397bfcba upstream.
    
    Make sure to release the snd_card also on a late allocation error.
    
    Fixes: e0d3bafd0258 ("V4L/DVB (10954): Add cx231xx USB driver")
    
    Cc: Sri Deevi <Srinivasa.Deevi@conexant.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 795480795d252700a03d76d31c07bf9615d76ffc
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 09:53:56 2017 -0300

    cx231xx-cards: fix NULL-deref at probe
    
    commit 0cd273bb5e4d1828efaaa8dfd11b7928131ed149 upstream.
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer or accessing memory beyond the endpoint array should a
    malicious device lack the expected endpoints.
    
    Fixes: e0d3bafd0258 ("V4L/DVB (10954): Add cx231xx USB driver")
    
    Cc: Sri Deevi <Srinivasa.Deevi@conexant.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6e9ffe1aa862b5682116dd398b09e609f067ab36
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Mon Oct 7 18:06:04 2013 -0300

    cx231xx: fix double free and leaks on failure path in cx231xx_usb_probe()
    
    commit 256d013a9bcc9a39b2e4b34ab19219bd054cf270 upstream.
    
    There are numerous issues in error handling code of cx231xx initialization.
    Double free (when cx231xx_init_dev() calls kfree(dev) via cx231xx_release_resources()
    and then cx231xx_usb_probe() does the same) and memory leaks
    (e.g. usb_get_dev() before (ifnum != 1) check in cx231xx_usb_probe())
    are just a few of them.
    The patch fixes the issues in cx231xx_usb_probe() and cx231xx_init_dev()
    by moving usb_get_dev(interface_to_usbdev(interface)) below in code and
    implementing proper error handling.
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    [bwh: Backported to 3.2:
     - Keep using &= rather than clear_bit()
     - Adjust filename, context
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cc63d977beaa8a317f99ac6d7c843965007bd2c1
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 09:53:55 2017 -0300

    usbvision: fix NULL-deref at probe
    
    commit eacb975b48272f54532b62f515a3cf7eefa35123 upstream.
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer or accessing memory beyond the endpoint array should a
    malicious device lack the expected endpoints.
    
    Fixes: 2a9f8b5d25be ("V4L/DVB (5206): Usbvision: set alternate interface
    modification")
    
    Cc: Thierry MERLE <thierry.merle@free.fr>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5f9c685264bca3c6619fc92fd4b6df925021d5de
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 09:53:59 2017 -0300

    gspca: konica: add missing endpoint sanity check
    
    commit aa58fedb8c7b6cf2f05941d238495f9e2f29655c upstream.
    
    Make sure to check the number of endpoints to avoid accessing memory
    beyond the endpoint array should a device lack the expected endpoints.
    
    Note that, as far as I can tell, the gspca framework has already made
    sure there is at least one endpoint in the current alternate setting so
    there should be no risk for a NULL-pointer dereference here.
    
    Fixes: b517af722860 ("V4L/DVB: gspca_konica: New gspca subdriver for
    konica chipset using cams")
    
    Cc: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hansverk@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit af4b41c56261592cd90c3ea196f6077c466fdd7a
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 13:44:20 2017 +0100

    ath9k_htc: fix NULL-deref at probe
    
    commit ebeb36670ecac36c179b5fb5d5c88ff03ba191ec upstream.
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer or accessing memory beyond the endpoint array should a
    malicious device lack the expected endpoints.
    
    Fixes: 36bcce430657 ("ath9k_htc: Handle storage devices")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 16f2c3dd6aa662eee6f896d8240153d12aed5ba3
Author: Tobias Herzog <t-herzog@gmx.de>
Date:   Thu Mar 30 22:15:10 2017 +0200

    cdc-acm: fix possible invalid access when processing notification
    
    commit 1bb9914e1730417d530de9ed37e59efdc647146b upstream.
    
    Notifications may only be 8 bytes long. Accessing the 9th and
    10th byte of unimplemented/unknown notifications may be insecure.
    Also check the length of known notifications before accessing anything
    behind the 8th byte.
    
    Signed-off-by: Tobias Herzog <t-herzog@gmx.de>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d3104d983465e23fb059cd32d34e8e35a8860fd2
Author: Ajay Kaher <ajay.kaher@samsung.com>
Date:   Tue Mar 28 08:09:32 2017 -0400

    USB: Proper handling of Race Condition when two USB class drivers try to call init_usb_class simultaneously
    
    commit 2f86a96be0ccb1302b7eee7855dbee5ce4dc5dfb upstream.
    
    There is race condition when two USB class drivers try to call
    init_usb_class at the same time and leads to crash.
    code path: probe->usb_register_dev->init_usb_class
    
    To solve this, mutex locking has been added in init_usb_class() and
    destroy_usb_class().
    
    As pointed by Alan, removed "if (usb_class)" test from destroy_usb_class()
    because usb_class can never be NULL there.
    
    Signed-off-by: Ajay Kaher <ajay.kaher@samsung.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 57635e471138a0a1080e1001da4581d182c06d85
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Mar 7 15:14:13 2017 -0300

    mceusb: fix NULL-deref at probe
    
    commit 03eb2a557ed552e920a0942b774aaf931596eec1 upstream.
    
    Make sure to check for the required out endpoint to avoid dereferencing
    a NULL-pointer in mce_request_packet should a malicious device lack such
    an endpoint. Note that this path is hit during probe.
    
    Fixes: 66e89522aff7 ("V4L/DVB: IR: add mceusb IR receiver driver")
    
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: using mce_dbg() instead of dev_dbg()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c4c69518fc5f2d47bd285f6759cb25acbe487b97
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Mar 20 14:30:50 2017 -0700

    usb: hub: Do not attempt to autosuspend disconnected devices
    
    commit f5cccf49428447dfbc9edb7a04bb8fc316269781 upstream.
    
    While running a bind/unbind stress test with the dwc3 usb driver on rk3399,
    the following crash was observed.
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000218
    pgd = ffffffc00165f000
    [00000218] *pgd=000000000174f003, *pud=000000000174f003,
                                    *pmd=0000000001750003, *pte=00e8000001751713
    Internal error: Oops: 96000005 [#1] PREEMPT SMP
    Modules linked in: uinput uvcvideo videobuf2_vmalloc cmac
    ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat rfcomm
    xt_mark fuse bridge stp llc zram btusb btrtl btbcm btintel bluetooth
    ip6table_filter mwifiex_pcie mwifiex cfg80211 cdc_ether usbnet r8152 mii joydev
    snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq snd_seq_device ppp_async
    ppp_generic slhc tun
    CPU: 1 PID: 29814 Comm: kworker/1:1 Not tainted 4.4.52 #507
    Hardware name: Google Kevin (DT)
    Workqueue: pm pm_runtime_work
    task: ffffffc0ac540000 ti: ffffffc0af4d4000 task.ti: ffffffc0af4d4000
    PC is at autosuspend_check+0x74/0x174
    LR is at autosuspend_check+0x70/0x174
    ...
    Call trace:
    [<ffffffc00080dcc0>] autosuspend_check+0x74/0x174
    [<ffffffc000810500>] usb_runtime_idle+0x20/0x40
    [<ffffffc000785ae0>] __rpm_callback+0x48/0x7c
    [<ffffffc000786af0>] rpm_idle+0x1e8/0x498
    [<ffffffc000787cdc>] pm_runtime_work+0x88/0xcc
    [<ffffffc000249bb8>] process_one_work+0x390/0x6b8
    [<ffffffc00024abcc>] worker_thread+0x480/0x610
    [<ffffffc000251a80>] kthread+0x164/0x178
    [<ffffffc0002045d0>] ret_from_fork+0x10/0x40
    
    Source:
    
    (gdb) l *0xffffffc00080dcc0
    0xffffffc00080dcc0 is in autosuspend_check
    (drivers/usb/core/driver.c:1778).
    1773            /* We don't need to check interfaces that are
    1774             * disabled for runtime PM.  Either they are unbound
    1775             * or else their drivers don't support autosuspend
    1776             * and so they are permanently active.
    1777             */
    1778            if (intf->dev.power.disable_depth)
    1779                    continue;
    1780            if (atomic_read(&intf->dev.power.usage_count) > 0)
    1781                    return -EBUSY;
    1782            w |= intf->needs_remote_wakeup;
    
    Code analysis shows that intf is set to NULL in usb_disable_device() prior
    to setting actconfig to NULL. At the same time, usb_runtime_idle() does not
    lock the usb device, and neither does any of the functions in the
    traceback. This means that there is no protection against a race condition
    where usb_disable_device() is removing dev->actconfig->interface[] pointers
    while those are being accessed from autosuspend_check().
    
    To solve the problem, synchronize and validate device state between
    autosuspend_check() and usb_disconnect().
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a2b0358b2c4ebb194c0a69a1834d6099fba8fe8b
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Mar 20 11:16:11 2017 -0700

    usb: hub: Fix error loop seen after hub communication errors
    
    commit 245b2eecee2aac6fdc77dcafaa73c33f9644c3c7 upstream.
    
    While stress testing a usb controller using a bind/unbind looop, the
    following error loop was observed.
    
    usb 7-1.2: new low-speed USB device number 3 using xhci-hcd
    usb 7-1.2: hub failed to enable device, error -108
    usb 7-1-port2: cannot disable (err = -22)
    usb 7-1-port2: couldn't allocate usb_device
    usb 7-1-port2: cannot disable (err = -22)
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: activate --> -22
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: activate --> -22
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: activate --> -22
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: activate --> -22
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: activate --> -22
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: activate --> -22
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: activate --> -22
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: activate --> -22
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    ** 57 printk messages dropped ** hub 7-1:1.0: activate --> -22
    ** 82 printk messages dropped ** hub 7-1:1.0: hub_ext_port_status failed (err = -22)
    
    This continues forever. After adding tracebacks into the code,
    the call sequence leading to this is found to be as follows.
    
    [<ffffffc0007fc8e0>] hub_activate+0x368/0x7b8
    [<ffffffc0007fceb4>] hub_resume+0x2c/0x3c
    [<ffffffc00080b3b8>] usb_resume_interface.isra.6+0x128/0x158
    [<ffffffc00080b5d0>] usb_suspend_both+0x1e8/0x288
    [<ffffffc00080c9c4>] usb_runtime_suspend+0x3c/0x98
    [<ffffffc0007820a0>] __rpm_callback+0x48/0x7c
    [<ffffffc00078217c>] rpm_callback+0xa8/0xd4
    [<ffffffc000786234>] rpm_suspend+0x84/0x758
    [<ffffffc000786ca4>] rpm_idle+0x2c8/0x498
    [<ffffffc000786ed4>] __pm_runtime_idle+0x60/0xac
    [<ffffffc00080eba8>] usb_autopm_put_interface+0x6c/0x7c
    [<ffffffc000803798>] hub_event+0x10ac/0x12ac
    [<ffffffc000249bb8>] process_one_work+0x390/0x6b8
    [<ffffffc00024abcc>] worker_thread+0x480/0x610
    [<ffffffc000251a80>] kthread+0x164/0x178
    [<ffffffc0002045d0>] ret_from_fork+0x10/0x40
    
    kick_hub_wq() is called from hub_activate() even after failures to
    communicate with the hub. This results in an endless sequence of
    hub event -> hub activate -> wq trigger -> hub event -> ...
    
    Provide two solutions for the problem.
    
    - Only trigger the hub event queue if communication with the hub
      is successful.
    - After a suspend failure, only resume already suspended interfaces
      if the communication with the device is still possible.
    
    Each of the changes fixes the observed problem. Use both to improve
    robustness.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 795ecd95898cb238f42d4ae35ecc1253f72ca0d4
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Mar 13 13:44:21 2017 +0100

    zd1211rw: fix NULL-deref at probe
    
    commit ca260ece6a57dc7d751e0685f51fa2c55d851873 upstream.
    
    Make sure to check the number of endpoints to avoid dereferencing a
    NULL-pointer or accessing memory beyond the endpoint array should a
    malicious device lack the expected endpoints.
    
    Fixes: a1030e92c150 ("[PATCH] zd1211rw: Convert installer CDROM device into WLAN device")
    Cc: Daniel Drake <dsd@gentoo.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 135e5d48d5340a13dde43d38193fb58f661e8d47
Author: Takatoshi Akiyama <takatoshi.akiyama.kj@ps.hitachi-solutions.com>
Date:   Mon Feb 27 15:56:31 2017 +0900

    serial: sh-sci: Fix panic when serial console and DMA are enabled
    
    commit 3c9101766b502a0163d1d437fada5801cf616be2 upstream.
    
    This patch fixes an issue that kernel panic happens when DMA is enabled
    and we press enter key while the kernel booting on the serial console.
    
    * An interrupt may occur after sci_request_irq().
    * DMA transfer area is initialized by setup_timer() in sci_request_dma()
      and used in interrupt.
    
    If an interrupt occurred between sci_request_irq() and setup_timer() in
    sci_request_dma(), DMA transfer area has not been initialized yet.
    So, this patch changes the order of sci_request_irq() and
    sci_request_dma().
    
    Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.")
    Signed-off-by: Takatoshi Akiyama <takatoshi.akiyama.kj@ps.hitachi-solutions.com>
    [Shimoda changes the commit log]
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4b8798065015ed68f2eafc68d32f12dc3cac55f0
Author: Dmitry Tunin <hanipouspilot@gmail.com>
Date:   Wed Mar 8 13:52:07 2017 +0200

    ath9k_htc: Add support of AirTies 1eda:2315 AR9271 device
    
    commit 16ff1fb0e32f76a5d285a6f23b82d21aa52813c6 upstream.
    
    T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  7 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs=  1
    P:  Vendor=1eda ProdID=2315 Rev=01.08
    S:  Manufacturer=ATHEROS
    S:  Product=USB2.0 WLAN
    S:  SerialNumber=12345
    C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 6 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    
    Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7edc5a6b8782374b4653754d452a5c100b8884f6
Author: Alexander Tsoy <alexander@tsoy.me>
Date:   Fri Jan 8 01:26:03 2016 +0300

    ath9k_htc: add device ID for Toshiba WLM-20U2/GN-1080
    
    commit aea57edf80c6e96d6dc24757599396af99c02b19 upstream.
    
    This device is available under different marketing names:
    WLM-20U2 - Wireless USB Dongle for Toshiba TVs
    GN-1080 - Wireless LAN Module for Toshiba MFPs.
    
    Signed-off-by: Alexander Tsoy <alexander@tsoy.me>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1706ece4ae1be90a70e740595245e2b78bf6fa38
Author: Leon Nardella <leon.nardella@gmail.com>
Date:   Sat Feb 7 17:10:07 2015 -0200

    ath9k_htc: Add new USB ID
    
    commit 0088d27b78f2c0118aee82923269518616481ea0 upstream.
    
    This device is a dongle made by Philips to enhance their TVs with wireless capabilities,
    but works flawlessly on any upstream kernel, provided that the ath9k_htc module is attached to it.
    It's correctly recognized by lsusb as "0471:209e Philips (or NXP) PTA01 Wireless Adapter" and the
    patch has been tested on real hardware.
    
    Signed-off-by: Leon Nardella <leon.nardella@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4b28469a16d14907dc8d51759e876d43c52a7e2d
Author: Masaki TAGAWA <masaki@club.kyutech.ac.jp>
Date:   Thu Feb 6 14:06:24 2014 +0900

    ath9k_htc: Add device ID for Buffalo WLI-UV-AG300P
    
    commit 98f99eeae98047bc195bcc7510eae4f0cf3658a0 upstream.
    
    Buffalo WLI-UV-AG300P is almost the same as Sony UWA-BR100.
    
    Signed-off-by: Masaki TAGAWA <masaki@club.kyutech.ac.jp>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9abce5c9c114e641281055326271fa490e779633
Author: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Date:   Tue Oct 16 21:31:49 2012 +0530

    ath9k_htc: Add PID/VID for a Ubiquiti WiFiStation
    
    commit 763cbac07674a648f1377b21ca66f577c103fa9a upstream.
    
    Roger says, Ubiquiti produce 2 versions of their WiFiStation USB adapter.  One
    has an internal antenna, the other has an external antenna and
    name suffix EXT.  They have separate USB ids and in distribution
    openSUSE 12.2 (kernel 3.4.6), file /usr/share/usb.ids shows:
    
      0cf3  Atheros Communications, Inc.
           ...
           b002  Ubiquiti WiFiStation 802.11n [Atheros AR9271]
           b003  Ubiquiti WiFiStationEXT 802.11n [Atheros AR9271]
    
    Add b002 Ubiquiti WiFiStation in the PID/VID list.
    
    Reported-by: Roger Price <ath9k@rogerprice.org>
    Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 551cbdd10cddb2d2317f0b06d1cfeaf420a4780e
Author: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Date:   Wed Apr 11 13:58:15 2012 +0530

    ath9k_htc: Add Panasonic N5HBZ0000055 device id
    
    commit d90b570898f7cc3dd0b26d4e646f464408b04022 upstream.
    
    Reported-by: Ryan Roper <ryan.roper@gmail.com>
    Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 14cbc3fb5c624ed33e7ca18267166efa460f124c
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Feb 2 12:53:04 2017 -0200

    pvrusb2: reduce stack usage pvr2_eeprom_analyze()
    
    commit 6830733d53a4517588e56227b9c8538633f0c496 upstream.
    
    The driver uses a relatively large data structure on the stack, which
    showed up on my radar as we get a warning with the "latent entropy"
    GCC plugin:
    
    drivers/media/usb/pvrusb2/pvrusb2-eeprom.c:153:1: error: the frame size of 1376 bytes is larger than 1152 bytes [-Werror=frame-larger-than=]
    
    The warning is usually hidden as we raise the warning limit to 2048
    when the plugin is enabled, but I'd like to lower that again in the
    future, and making this function smaller helps to do that without
    build regressions.
    
    Further analysis shows that putting an 'i2c_client' structure on
    the stack is not really supported, as the embedded 'struct device'
    is not initialized here, and we are only saved by the fact that
    the function that is called here does not use the pointer at all.
    
    Fixes: d855497edbfb ("V4L/DVB (4228a): pvrusb2 to kernel 2.6.18")
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 93c2d0e614e4a09e88df2c7eb0c03b7214fad94b
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Thu Jan 26 17:32:11 2017 +0300

    drm/i915: fix use-after-free in page_flip_completed()
    
    commit 05c41f926fcc7ef838c80a6a99d84f67b4e0b824 upstream.
    
    page_flip_completed() dereferences 'work' variable after executing
    queue_work(). This is not safe as the 'work' item might be already freed
    by queued work:
    
        BUG: KASAN: use-after-free in page_flip_completed+0x3ff/0x490 at addr ffff8803dc010f90
        Call Trace:
         __asan_report_load8_noabort+0x59/0x80
         page_flip_completed+0x3ff/0x490
         intel_finish_page_flip_mmio+0xe3/0x130
         intel_pipe_handle_vblank+0x2d/0x40
         gen8_irq_handler+0x4a7/0xed0
         __handle_irq_event_percpu+0xf6/0x860
         handle_irq_event_percpu+0x6b/0x160
         handle_irq_event+0xc7/0x1b0
         handle_edge_irq+0x1f4/0xa50
         handle_irq+0x41/0x70
         do_IRQ+0x9a/0x200
         common_interrupt+0x89/0x89
    
        Freed:
         kfree+0x113/0x4d0
         intel_unpin_work_fn+0x29a/0x3b0
         process_one_work+0x79e/0x1b70
         worker_thread+0x611/0x1460
         kthread+0x241/0x3a0
         ret_from_fork+0x27/0x40
    
    Move queue_work() after trace_i915_flip_complete() to fix this.
    
    Fixes: e5510fac98a7 ("drm/i915: add tracepoints for flip requests & completions")
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170126143211.24013-1-aryabinin@virtuozzo.com
    [bwh: Backported to 3.2:
     - Uusing schedule_work() instead of queue_work()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>