commit b44ef85f9033720e7ec6aa7bc9536b9e4b09719a
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Oct 27 10:17:24 2017 +0200

    Linux 3.18.78

commit 114dff8ef64e4b72cb97a613179db64096bc79dd
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Oct 9 12:40:00 2017 -0700

    FS-Cache: fix dereference of NULL user_key_payload
    
    commit d124b2c53c7bee6569d2a2d0b18b4a1afde00134 upstream.
    
    When the file /proc/fs/fscache/objects (available with
    CONFIG_FSCACHE_OBJECT_LIST=y) is opened, we request a user key with
    description "fscache:objlist", then access its payload.  However, a
    revoked key has a NULL payload, and we failed to check for this.
    request_key() *does* skip revoked keys, but there is still a window
    where the key can be revoked before we access its payload.
    
    Fix it by checking for a NULL payload, treating it like a key which was
    already revoked at the time it was requested.
    
    Fixes: 4fbf4291aa15 ("FS-Cache: Allow the current state of all objects to be dumped")
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38118617a584b70aa14988397f0041fd067f9de3
Author: Alexander Drozdov <al.drozdov@gmail.com>
Date:   Tue Feb 24 08:18:28 2015 +0300

    af_packet: don't pass empty blocks for PACKET_V3
    
    commit 41a50d621a321b4c15273cc1b5ed41437f4acdfb upstream.
    
    Before da413eec729d ("packet: Fixed TPACKET V3 to signal poll when block is
    closed rather than every packet") poll listening for an af_packet socket was
    not signaled if there was no packets to process. After the patch poll is
    signaled evety time when block retire timer expires. That happens because
    af_packet closes the current block on timeout even if the block is empty.
    
    Passing empty blocks to the user not only wastes CPU but also wastes ring
    buffer space increasing probability of packets dropping on small timeouts.
    
    Signed-off-by: Alexander Drozdov <al.drozdov@gmail.com>
    Cc: Dan Collins <dan@dcollins.co.nz>
    Cc: Willem de Bruijn <willemb@google.com>
    Cc: Guy Harris <guy@alum.mit.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Christoph Biedl <linux-kernel.bfrz@manchmal.in-ulm.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a8835679e67ae4b031405ab32a690c5d98e94a6
Author: John David Anglin <dave.anglin@bell.net>
Date:   Sat Sep 30 17:24:23 2017 -0400

    parisc: Fix double-word compare and exchange in LWS code on 32-bit kernels
    
    commit 374b3bf8e8b519f61eb9775888074c6e46b3bf0c upstream.
    
    As discussed on the debian-hppa list, double-wordcompare and exchange
    operations fail on 32-bit kernels.  Looking at the code, I realized that
    the ",ma" completer does the wrong thing in the  "ldw,ma  4(%r26), %r29"
    instruction.  This increments %r26 and causes the following store to
    write to the wrong location.
    
    Note by Helge Deller:
    The patch applies cleanly to stable kernel series if this upstream
    commit is merged in advance:
    f4125cfdb300 ("parisc: Avoid trashing sr2 and sr3 in LWS code").
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Tested-by: Christoph Biedl <debian.axhn@manchmal.in-ulm.de>
    Fixes: 89206491201c ("parisc: Implement new LWS CAS supporting 64 bit operations.")
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e967f7593831621560d2ae2a5e74af94035b0f06
Author: John David Anglin <dave.anglin@bell.net>
Date:   Fri Oct 28 22:13:42 2016 +0200

    parisc: Avoid trashing sr2 and sr3 in LWS code
    
    commit f4125cfdb3008363137f744c101e5d76ead760ba upstream.
    
    There is no need to trash sr2 and sr3 in the Light-weight syscall (LWS).  sr2
    already points to kernel space (it's zero in userspace, otherwise syscalls
    wouldn't work), and since the LWS code is executed in userspace, we can simply
    ignore to preload sr3.
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9918b51157fdf22c430ddec6b4d772aa1cbc7775
Author: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
Date:   Tue Feb 3 19:05:18 2015 +0100

    cls_api.c: Fix dumping of non-existing actions' stats.
    
    commit b057df24a7536cce6c372efe9d0e3d1558afedf4 upstream.
    
    In tcf_exts_dump_stats(), ensure that exts->actions is not empty before
    accessing the first element of that list and calling tcf_action_copy_stats()
    on it.  This fixes some random segvs when adding filters of type "basic" with
    no particular action.
    
    This also fixes the dumping of those "no-action" filters, which more often
    than not made calls to tcf_action_copy_stats() fail and consequently netlink
    attributes added by the caller to be removed by a call to nla_nest_cancel().
    
    Fixes: 33be62715991 ("net_sched: act: use standard struct list_head")
    Signed-off-by: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
    Acked-by: Cong Wang <cwang@twopensource.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: J Pommnitz <jpo234@outlook.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98c4e5cae5204c1114390219331ddd649d78a5a7
Author: David Howells <dhowells@redhat.com>
Date:   Thu Oct 12 16:00:41 2017 +0100

    KEYS: don't let add_key() update an uninstantiated key
    
    commit 60ff5b2f547af3828aebafd54daded44cfb0807a upstream.
    
    Currently, when passed a key that already exists, add_key() will call the
    key's ->update() method if such exists.  But this is heavily broken in the
    case where the key is uninstantiated because it doesn't call
    __key_instantiate_and_link().  Consequently, it doesn't do most of the
    things that are supposed to happen when the key is instantiated, such as
    setting the instantiation state, clearing KEY_FLAG_USER_CONSTRUCT and
    awakening tasks waiting on it, and incrementing key->user->nikeys.
    
    It also never takes key_construction_mutex, which means that
    ->instantiate() can run concurrently with ->update() on the same key.  In
    the case of the "user" and "logon" key types this causes a memory leak, at
    best.  Maybe even worse, the ->update() methods of the "encrypted" and
    "trusted" key types actually just dereference a NULL pointer when passed an
    uninstantiated key.
    
    Change key_create_or_update() to wait interruptibly for the key to finish
    construction before continuing.
    
    This patch only affects *uninstantiated* keys.  For now we still allow a
    negatively instantiated key to be updated (thereby positively
    instantiating it), although that's broken too (the next patch fixes it)
    and I'm not sure that anyone actually uses that functionality either.
    
    Here is a simple reproducer for the bug using the "encrypted" key type
    (requires CONFIG_ENCRYPTED_KEYS=y), though as noted above the bug
    pertained to more than just the "encrypted" key type:
    
        #include <stdlib.h>
        #include <unistd.h>
        #include <keyutils.h>
    
        int main(void)
        {
            int ringid = keyctl_join_session_keyring(NULL);
    
            if (fork()) {
                for (;;) {
                    const char payload[] = "update user:foo 32";
    
                    usleep(rand() % 10000);
                    add_key("encrypted", "desc", payload, sizeof(payload), ringid);
                    keyctl_clear(ringid);
                }
            } else {
                for (;;)
                    request_key("encrypted", "desc", "callout_info", ringid);
            }
        }
    
    It causes:
    
        BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
        IP: encrypted_update+0xb0/0x170
        PGD 7a178067 P4D 7a178067 PUD 77269067 PMD 0
        PREEMPT SMP
        CPU: 0 PID: 340 Comm: reproduce Tainted: G      D         4.14.0-rc1-00025-g428490e38b2e #796
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
        task: ffff8a467a39a340 task.stack: ffffb15c40770000
        RIP: 0010:encrypted_update+0xb0/0x170
        RSP: 0018:ffffb15c40773de8 EFLAGS: 00010246
        RAX: 0000000000000000 RBX: ffff8a467a275b00 RCX: 0000000000000000
        RDX: 0000000000000005 RSI: ffff8a467a275b14 RDI: ffffffffb742f303
        RBP: ffffb15c40773e20 R08: 0000000000000000 R09: ffff8a467a275b17
        R10: 0000000000000020 R11: 0000000000000000 R12: 0000000000000000
        R13: 0000000000000000 R14: ffff8a4677057180 R15: ffff8a467a275b0f
        FS:  00007f5d7fb08700(0000) GS:ffff8a467f200000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000000000000018 CR3: 0000000077262005 CR4: 00000000001606f0
        Call Trace:
         key_create_or_update+0x2bc/0x460
         SyS_add_key+0x10c/0x1d0
         entry_SYSCALL_64_fastpath+0x1f/0xbe
        RIP: 0033:0x7f5d7f211259
        RSP: 002b:00007ffed03904c8 EFLAGS: 00000246 ORIG_RAX: 00000000000000f8
        RAX: ffffffffffffffda RBX: 000000003b2a7955 RCX: 00007f5d7f211259
        RDX: 00000000004009e4 RSI: 00000000004009ff RDI: 0000000000400a04
        RBP: 0000000068db8bad R08: 000000003b2a7955 R09: 0000000000000004
        R10: 000000000000001a R11: 0000000000000246 R12: 0000000000400868
        R13: 00007ffed03905d0 R14: 0000000000000000 R15: 0000000000000000
        Code: 77 28 e8 64 34 1f 00 45 31 c0 31 c9 48 8d 55 c8 48 89 df 48 8d 75 d0 e8 ff f9 ff ff 85 c0 41 89 c4 0f 88 84 00 00 00 4c 8b 7d c8 <49> 8b 75 18 4c 89 ff e8 24 f8 ff ff 85 c0 41 89 c4 78 6d 49 8b
        RIP: encrypted_update+0xb0/0x170 RSP: ffffb15c40773de8
        CR2: 0000000000000018
    
    Reported-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6a2c3d4b0ced8b34c46cf99bbd0c395e7e9bc58
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Oct 9 12:43:20 2017 -0700

    lib/digsig: fix dereference of NULL user_key_payload
    
    commit 192cabd6a296cbc57b3d8c05c4c89d87fc102506 upstream.
    
    digsig_verify() requests a user key, then accesses its payload.
    However, a revoked key has a NULL payload, and we failed to check for
    this.  request_key() *does* skip revoked keys, but there is still a
    window where the key can be revoked before we acquire its semaphore.
    
    Fix it by checking for a NULL payload, treating it like a key which was
    already revoked at the time it was requested.
    
    Fixes: 051dbb918c7f ("crypto: digital signature verification support")
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Cc: Dmitry Kasatkin <dmitry.kasatkin@intel.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 400f063f4dbc1210eea6aa6e18d95ea6139c3aae
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Oct 9 12:37:49 2017 -0700

    KEYS: encrypted: fix dereference of NULL user_key_payload
    
    commit 13923d0865ca96312197962522e88bc0aedccd74 upstream.
    
    A key of type "encrypted" references a "master key" which is used to
    encrypt and decrypt the encrypted key's payload.  However, when we
    accessed the master key's payload, we failed to handle the case where
    the master key has been revoked, which sets the payload pointer to NULL.
    Note that request_key() *does* skip revoked keys, but there is still a
    window where the key can be revoked before we acquire its semaphore.
    
    Fix it by checking for a NULL payload, treating it like a key which was
    already revoked at the time it was requested.
    
    This was an issue for master keys of type "user" only.  Master keys can
    also be of type "trusted", but those cannot be revoked.
    
    Fixes: 7e70cb497850 ("keys: add new key-type encrypted")
    Reviewed-by: James Morris <james.l.morris@oracle.com>
    Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Cc: David Safford <safford@us.ibm.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20f5c5dc8381111ee197c6e8fe5a52dad4c6172a
Author: Jan Luebbe <jlu@pengutronix.de>
Date:   Mon Aug 28 17:25:16 2017 +0200

    bus: mbus: fix window size calculation for 4GB windows
    
    commit 2bbbd96357ce76cc45ec722c00f654aa7b189112 upstream.
    
    At least the Armada XP SoC supports 4GB on a single DRAM window. Because
    the size register values contain the actual size - 1, the MSB is set in
    that case. For example, the SDRAM window's control register's value is
    0xffffffe1 for 4GB (bits 31 to 24 contain the size).
    
    The MBUS driver reads back each window's size from registers and
    calculates the actual size as (control_reg | ~DDR_SIZE_MASK) + 1, which
    overflows for 32 bit values, resulting in other miscalculations further
    on (a bad RAM window for the CESA crypto engine calculated by
    mvebu_mbus_setup_cpu_target_nooverlap() in my case).
    
    This patch changes the type in 'struct mbus_dram_window' from u32 to
    u64, which allows us to keep using the same register calculation code in
    most MBUS-using drivers (which calculate ->size - 1 again).
    
    Fixes: fddddb52a6c4 ("bus: introduce an Marvell EBU MBus driver")
    Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c47889a4006e6fdbee5d90eef5b595758cf8c1dd
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Sep 22 23:29:12 2017 +0200

    brcmsmac: make some local variables 'static const' to reduce stack size
    
    commit c503dd38f850be28867ef7a42d9abe5ade81a9bd upstream.
    
    With KASAN and a couple of other patches applied, this driver is one
    of the few remaining ones that actually use more than 2048 bytes of
    kernel stack:
    
    broadcom/brcm80211/brcmsmac/phy/phy_n.c: In function 'wlc_phy_workarounds_nphy_gainctrl':
    broadcom/brcm80211/brcmsmac/phy/phy_n.c:16065:1: warning: the frame size of 3264 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    broadcom/brcm80211/brcmsmac/phy/phy_n.c: In function 'wlc_phy_workarounds_nphy':
    broadcom/brcm80211/brcmsmac/phy/phy_n.c:17138:1: warning: the frame size of 2864 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    
    Here, I'm reducing the stack size by marking as many local variables as
    'static const' as I can without changing the actual code.
    
    This is the first of three patches to improve the stack usage in this
    driver. It would be good to have this backported to stabl kernels
    to get all drivers in 'allmodconfig' below the 2048 byte limit so
    we can turn on the frame warning again globally, but I realize that
    the patch is larger than the normal limit for stable backports.
    
    The other two patches do not need to be backported.
    
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d35801d437f5aaed4b45f4a054c403794dc67020
Author: Pontus Andersson <epontan@gmail.com>
Date:   Mon Oct 2 14:45:19 2017 +0200

    i2c: ismt: Separate I2C block read from SMBus block read
    
    commit c6ebcedbab7ca78984959386012a17b21183e1a3 upstream.
    
    Commit b6c159a9cb69 ("i2c: ismt: Don't duplicate the receive length for
    block reads") broke I2C block reads. It aimed to fix normal SMBus block
    read, but changed the correct behavior of I2C block read in the process.
    
    According to Documentation/i2c/smbus-protocol, one vital difference
    between normal SMBus block read and I2C block read is that there is no
    byte count prefixed in the data sent on the wire:
    
     SMBus Block Read:  i2c_smbus_read_block_data()
     S Addr Wr [A] Comm [A]
                S Addr Rd [A] [Count] A [Data] A [Data] A ... A [Data] NA P
    
     I2C Block Read:  i2c_smbus_read_i2c_block_data()
     S Addr Wr [A] Comm [A]
                S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P
    
    Therefore the two transaction types need to be processed differently in
    the driver by copying of the dma_buffer as done previously for the
    I2C_SMBUS_I2C_BLOCK_DATA case.
    
    Fixes: b6c159a9cb69 ("i2c: ismt: Don't duplicate the receive length for block reads")
    Signed-off-by: Pontus Andersson <epontan@gmail.com>
    Tested-by: Stephen Douthit <stephend@adiengineering.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2c0ddbe64bdeb7f68013305943192a5b95c2590
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Oct 17 11:58:17 2017 +0200

    ALSA: hda: Remove superfluous '-' added by printk conversion
    
    commit 6bf88a343db2b3c160edf9b82a74966b31cc80bd upstream.
    
    While converting the error messages to the standard macros in the
    commit 4e76a8833fac ("ALSA: hda - Replace with standard printk"), a
    superfluous '-' slipped in the code mistakenly.  Its influence is
    almost negligible, merely shows a dB value as negative integer instead
    of positive integer (or vice versa) in the rare error message.
    So let's kill this embarrassing byte to show more correct value.
    
    Fixes: 4e76a8833fac ("ALSA: hda - Replace with standard printk")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38b463456f980caa60134dd118c51ce2f6897d1a
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Wed Oct 18 00:45:49 2017 +0100

    ALSA: seq: Enable 'use' locking in all configurations
    
    commit 8009d506a1dd00cf436b0c4cca0dcec130580a21 upstream.
    
    The 'use' locking macros are no-ops if neither SMP or SND_DEBUG is
    enabled.  This might once have been OK in non-preemptible
    configurations, but even in that case snd_seq_read() may sleep while
    relying on a 'use' lock.  So always use the proper implementations.
    
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34b9ecf806f8637ebba15d6dd977c61122326dba
Author: Stefan Mätje <Stefan.Maetje@esd.eu>
Date:   Wed Oct 18 13:25:17 2017 +0200

    can: esd_usb2: Fix can_dlc value for received RTR, frames
    
    commit 72d92e865d1560723e1957ee3f393688c49ca5bf upstream.
    
    The dlc member of the struct rx_msg contains also the ESD_RTR flag to
    mark received RTR frames. Without the fix the can_dlc value for received
    RTR frames would always be set to 8 by get_can_dlc() instead of the
    received value.
    
    Fixes: 96d8e90382dc ("can: Add driver for esd CAN-USB/2 device")
    Signed-off-by: Stefan Mätje <stefan.maetje@esd.eu>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 405c43ceb0aeadecf7d13ef7c4e0528962287a2c
Author: Wolfgang Grandegger <wg@grandegger.com>
Date:   Thu Sep 14 18:37:14 2017 +0200

    can: gs_usb: fix busy loop if no more TX context is available
    
    commit 97819f943063b622eca44d3644067c190dc75039 upstream.
    
    If sending messages with no cable connected, it quickly happens that
    there is no more TX context available. Then "gs_can_start_xmit()"
    returns with "NETDEV_TX_BUSY" and the upper layer does retry
    immediately keeping the CPU busy. To fix that issue, I moved
    "atomic_dec(&dev->active_tx_urbs)" from "gs_usb_xmit_callback()" to
    the TX done handling in "gs_usb_receive_bulk_callback()". Renaming
    "active_tx_urbs" to "active_tx_contexts" and moving it into
    "gs_[alloc|free]_tx_context()" would also make sense.
    
    Signed-off-by: Wolfgang Grandegger <wg@grandegger.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9aeba8003dcf81d527d7169c67117d7d994872e
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Oct 17 16:07:33 2017 +0300

    usb: hub: Allow reset retry for USB2 devices on connect bounce
    
    commit 1ac7db63333db1eeff901bfd6bbcd502b4634fa4 upstream.
    
    If the connect status change is set during reset signaling, but
    the status remains connected just retry port reset.
    
    This solves an issue with connecting a 90W HP Thunderbolt 3 dock
    with a Lenovo Carbon x1 (5th generation) which causes a 30min loop
    of a high speed device being re-discovererd before usb ports starts
    working.
    
    [...]
    [ 389.023845] usb 3-1: new high-speed USB device number 55 using xhci_hcd
    [ 389.491841] usb 3-1: new high-speed USB device number 56 using xhci_hcd
    [ 389.959928] usb 3-1: new high-speed USB device number 57 using xhci_hcd
    [...]
    
    This is caused by a high speed device that doesn't successfully go to the
    enabled state after the second port reset. Instead the connection bounces
    (connected, with connect status change), bailing out completely from
    enumeration just to restart from scratch.
    
    Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1716332
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e500be96d0c5ef7d60807001f75f638ec086c7d
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Tue Oct 3 11:16:43 2017 +0300

    usb: quirks: add quirk for WORLDE MINI MIDI keyboard
    
    commit 2811501e6d8f5747d08f8e25b9ecf472d0dc4c7d upstream.
    
    This keyboard doesn't implement Get String descriptors properly even
    though string indexes are valid. What happens is that when requesting
    for the String descriptor, the device disconnects and
    reconnects. Without this quirk, this loop will continue forever.
    
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Владимир Мартьянов <vilgeforce@gmail.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3d493cf256700fe39876f3d785180e3c022b134
Author: Maksim Salau <msalau@iotecha.com>
Date:   Wed Oct 11 11:10:52 2017 +0300

    usb: cdc_acm: Add quirk for Elatec TWN3
    
    commit 765fb2f181cad669f2beb87842a05d8071f2be85 upstream.
    
    Elatec TWN3 has the union descriptor on data interface. This results in
    failure to bind the device to the driver with the following log:
      usb 1-1.2: new full speed USB device using streamplug-ehci and address 4
      usb 1-1.2: New USB device found, idVendor=09d8, idProduct=0320
      usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
      usb 1-1.2: Product: RFID Device (COM)
      usb 1-1.2: Manufacturer: OEM
      cdc_acm 1-1.2:1.0: Zero length descriptor references
      cdc_acm: probe of 1-1.2:1.0 failed with error -22
    
    Adding the NO_UNION_NORMAL quirk for the device fixes the issue.
    
    `lsusb -v` of the device:
    
    Bus 001 Device 003: ID 09d8:0320
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            2 Communications
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0        32
      idVendor           0x09d8
      idProduct          0x0320
      bcdDevice            3.00
      iManufacturer           1 OEM
      iProduct                2 RFID Device (COM)
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           67
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          0
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              250mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         2 Communications
          bInterfaceSubClass      2 Abstract (modem)
          bInterfaceProtocol      1 AT-commands (v.25ter)
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0020  1x 32 bytes
            bInterval               2
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0020  1x 32 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0020  1x 32 bytes
            bInterval               0
          CDC Header:
            bcdCDC               1.10
          CDC Call Management:
            bmCapabilities       0x03
              call management
              use DataInterface
            bDataInterface          1
          CDC ACM:
            bmCapabilities       0x06
              sends break
              line coding and serial state
          CDC Union:
            bMasterInterface        0
            bSlaveInterface         1
    Device Status:     0x0000
      (Bus Powered)
    
    Signed-off-by: Maksim Salau <msalau@iotecha.com>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7238612a72e12402dbaaa4afdce49d24072fdf74
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Oct 12 14:50:46 2017 +0200

    USB: serial: metro-usb: add MS7820 device id
    
    commit 31dc3f819bac28a0990b36510197560258ab7421 upstream.
    
    Add device-id entry for (Honeywell) Metrologic MS7820 bar code scanner.
    
    The device has two interfaces (in this mode?); a vendor-specific
    interface with two interrupt endpoints and a second HID interface, which
    we do not bind to.
    
    Reported-by: Ladislav Dobrovsky <ladislav.dobrovsky@gmail.com>
    Tested-by: Ladislav Dobrovsky <ladislav.dobrovsky@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c1c88e160ed14dfb02cb35369e27abe01eb2ca5
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Oct 18 12:49:38 2017 -0400

    USB: core: fix out-of-bounds access bug in usb_get_bos_descriptor()
    
    commit 1c0edc3633b56000e18d82fc241e3995ca18a69e upstream.
    
    Andrey used the syzkaller fuzzer to find an out-of-bounds memory
    access in usb_get_bos_descriptor().  The code wasn't checking that the
    next usb_dev_cap_header structure could fit into the remaining buffer
    space.
    
    This patch fixes the error and also reduces the bNumDeviceCaps field
    in the header to match the actual number of capabilities found, in
    cases where there are fewer than expected.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9fbd49c6dfa21738c503e3965bd6e28727652d3
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Oct 16 16:21:19 2017 +0200

    USB: devio: Revert "USB: devio: Don't corrupt user memory"
    
    commit 845d584f41eac3475c21e4a7d5e88d0f6e410cf7 upstream.
    
    Taking the uurb->buffer_length userspace passes in as a maximum for the
    actual urbs transfer_buffer_length causes 2 serious issues:
    
    1) It breaks isochronous support for all userspace apps using libusb,
       as existing libusb versions pass in 0 for uurb->buffer_length,
       relying on the kernel using the lenghts of the usbdevfs_iso_packet_desc
       descriptors passed in added together as buffer length.
    
       This for example causes redirection of USB audio and Webcam's into
       virtual machines using qemu-kvm to no longer work. This is a userspace
       ABI break and as such must be reverted.
    
       Note that the original commit does not protect other users / the
       kernels memory, it only stops the userspace process making the call
       from shooting itself in the foot.
    
    2) It may cause the kernel to program host controllers to DMA over random
       memory. Just as the devio code used to only look at the iso_packet_desc
       lenghts, the host drivers do the same, relying on the submitter of the
       urbs to make sure the entire buffer is large enough and not checking
       transfer_buffer_length.
    
       But the "USB: devio: Don't corrupt user memory" commit now takes the
       userspace provided uurb->buffer_length for the buffer-size while copying
       over the user-provided iso_packet_desc lengths 1:1, allowing the user
       to specify a small buffer size while programming the host controller to
       dma a lot more data.
    
       (Atleast the ohci, uhci, xhci and fhci drivers do not check
        transfer_buffer_length for isoc transfers.)
    
    This reverts commit fa1ed74eb1c2 ("USB: devio: Don't corrupt user memory")
    fixing both these issues.
    
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>