commit 3e2bb7d281edae5a0732023061402e4a7231dffc
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Oct 12 09:18:18 2017 +0200

    Linux 3.18.75

commit b7ff160a8ba4747edb774b1b2dde5417b7d4cf7a
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Wed Feb 15 01:26:39 2017 -0500

    ext4: fix fencepost in s_first_meta_bg validation
    
    commit 2ba3e6e8afc9b6188b471f27cf2b5e3cf34e7af2 upstream.
    
    It is OK for s_first_meta_bg to be equal to the number of block group
    descriptor blocks.  (It rarely happens, but it shouldn't cause any
    problems.)
    
    https://bugzilla.kernel.org/show_bug.cgi?id=194567
    
    Fixes: 3a4b77cd47bb837b8557595ec7425f281f2ca1fe
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: Eryu Guan <guaneryu@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ce649fdacd53afc430565e18124d7d72be92cb3
Author: Eryu Guan <guaneryu@gmail.com>
Date:   Thu Dec 1 15:08:37 2016 -0500

    ext4: validate s_first_meta_bg at mount time
    
    commit 3a4b77cd47bb837b8557595ec7425f281f2ca1fe upstream.
    
    Ralf Spenneberg reported that he hit a kernel crash when mounting a
    modified ext4 image. And it turns out that kernel crashed when
    calculating fs overhead (ext4_calculate_overhead()), this is because
    the image has very large s_first_meta_bg (debug code shows it's
    842150400), and ext4 overruns the memory in count_overhead() when
    setting bitmap buffer, which is PAGE_SIZE.
    
    ext4_calculate_overhead():
      buf = get_zeroed_page(GFP_NOFS);  <=== PAGE_SIZE buffer
      blks = count_overhead(sb, i, buf);
    
    count_overhead():
      for (j = ext4_bg_num_gdb(sb, grp); j > 0; j--) { <=== j = 842150400
              ext4_set_bit(EXT4_B2C(sbi, s++), buf);   <=== buffer overrun
              count++;
      }
    
    This can be reproduced easily for me by this script:
    
      #!/bin/bash
      rm -f fs.img
      mkdir -p /mnt/ext4
      fallocate -l 16M fs.img
      mke2fs -t ext4 -O bigalloc,meta_bg,^resize_inode -F fs.img
      debugfs -w -R "ssv first_meta_bg 842150400" fs.img
      mount -o loop fs.img /mnt/ext4
    
    Fix it by validating s_first_meta_bg first at mount time, and
    refusing to mount if its value exceeds the largest possible meta_bg
    number.
    
    Reported-by: Ralf Spenneberg <ralf@os-t.de>
    Signed-off-by: Eryu Guan <guaneryu@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79012f0216a18d043cbcb54362d6812e8e21a82e
Author: Jan Kara <jack@suse.cz>
Date:   Sun Jul 30 23:33:01 2017 -0400

    ext4: Don't clear SGID when inheriting ACLs
    
    commit a3bb2d5587521eea6dab2d05326abb0afb460abd upstream.
    
    When new directory 'DIR1' is created in a directory 'DIR0' with SGID bit
    set, DIR1 is expected to have SGID bit set (and owning group equal to
    the owning group of 'DIR0'). However when 'DIR0' also has some default
    ACLs that 'DIR1' inherits, setting these ACLs will result in SGID bit on
    'DIR1' to get cleared if user is not member of the owning group.
    
    Fix the problem by moving posix_acl_update_mode() out of
    __ext4_set_acl() into ext4_set_acl(). That way the function will not be
    called when inheriting ACLs which is what we want as it prevents SGID
    bit clearing and the mode has been properly set by posix_acl_create()
    anyway.
    
    Fixes: 073931017b49d9458aa351605b43a7e34598caef
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ca606ad34f7c5e8c8366014a5df0eb645c2efaf
Author: Jan Kara <jack@suse.cz>
Date:   Fri May 26 17:45:45 2017 -0400

    ext4: fix data corruption for mmap writes
    
    commit a056bdaae7a181f7dcc876cfab2f94538e508709 upstream.
    
    mpage_submit_page() can race with another process growing i_size and
    writing data via mmap to the written-back page. As mpage_submit_page()
    samples i_size too early, it may happen that ext4_bio_write_page()
    zeroes out too large tail of the page and thus corrupts user data.
    
    Fix the problem by sampling i_size only after the page has been
    write-protected in page tables by clear_page_dirty_for_io() call.
    
    Reported-by: Michael Zimmer <michael@swarm64.com>
    CC: stable@vger.kernel.org
    Fixes: cb20d5188366f04d96d2e07b1240cc92170ade40
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7798893bcb2f565f03eecc1ded9eb79d57929b9e
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Mon Sep 26 18:07:48 2016 +0200

    fs/super.c: fix race between freeze_super() and thaw_super()
    
    commit 89f39af129382a40d7cd1f6914617282cfeee28e upstream.
    
    Change thaw_super() to check frozen != SB_FREEZE_COMPLETE rather than
    frozen == SB_UNFROZEN, otherwise it can race with freeze_super() which
    drops sb->s_umount after SB_FREEZE_WRITE to preserve the lock ordering.
    
    In this case thaw_super() will wrongly call s_op->unfreeze_fs() before
    it was actually frozen, and call sb_freeze_unlock() which leads to the
    unbalanced percpu_up_write(). Unfortunately lockdep can't detect this,
    so this triggers misc BUG_ON()'s in kernel/rcu/sync.c.
    
    Reported-and-tested-by: Nikolay Borisov <kernel@kyup.com>
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d3562bbfd343009c1541727e83fe7c1634b5722
Author: Josef Bacik <jbacik@fb.com>
Date:   Mon Jun 22 00:31:26 2015 -0400

    ext4: only call ext4_truncate when size <= isize
    
    commit 3da40c7b089810ac9cf2bb1e59633f619f3a7312 upstream.
    
    At LSF we decided that if we truncate up from isize we shouldn't trim
    fallocated blocks that were fallocated with KEEP_SIZE and are past the
    new i_size.  This patch fixes ext4 to do this.
    
    [ Completely reworked patch so that i_disksize would actually get set
      when truncating up.  Also reworked the code for handling truncate so
      that it's easier to handle. -- tytso ]
    
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Lukas Czerner <lczerner@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5a35eb7a803973c45fb2245a2290591a4d33c77
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Thu Sep 21 17:19:20 2017 +0300

    drm/i915/bios: ignore HDMI on port A
    
    commit 2ba7d7e0437127314864238f8bfcb8369d81075c upstream.
    
    The hardware state readout oopses after several warnings when trying to
    use HDMI on port A, if such a combination is configured in VBT. Filter
    the combo out already at the VBT parsing phase.
    
    v2: also ignore DVI (Ville)
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102889
    Cc: Imre Deak <imre.deak@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Tested-by: Daniel Drake <dan@reactivated.net>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170921141920.18172-1-jani.nikula@intel.com
    (cherry picked from commit d27ffc1d00327c29b3aa97f941b42f0949f9e99f)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 884d5129c355a200103c49089b420873241daa04
Author: Adrian Salido <salidoa@google.com>
Date:   Fri Sep 8 10:55:27 2017 -0700

    HID: i2c-hid: allocate hid buffers for real worst case
    
    commit 8320caeeffdefec3b58b9d4a7ed8e1079492fe7b upstream.
    
    The buffer allocation is not currently accounting for an extra byte for
    the report id. This can cause an out of bounds access in function
    i2c_hid_set_or_send_report() with reportID > 15.
    
    Signed-off-by: Adrian Salido <salidoa@google.com>
    Reviewed-by: Benson Leung <bleung@chromium.org>
    Signed-off-by: Guenter Roeck <groeck@chromium.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 389721fabce2457414c4f128bc0b3a7d77c8f833
Author: Nicolai Stange <nstange@suse.de>
Date:   Mon Sep 11 09:45:42 2017 +0200

    driver core: platform: Don't read past the end of "driver_override" buffer
    
    commit bf563b01c2895a4bfd1a29cc5abc67fe706ecffd upstream.
    
    When printing the driver_override parameter when it is 4095 and 4094 bytes
    long, the printing code would access invalid memory because we need count+1
    bytes for printing.
    
    Reject driver_override values of these lengths in driver_override_store().
    
    This is in close analogy to commit 4efe874aace5 ("PCI: Don't read past the
    end of sysfs "driver_override" buffer") from Sasha Levin.
    
    Fixes: 3d713e0e382e ("driver core: platform: add device binding path 'driver_override'")
    Signed-off-by: Nicolai Stange <nstange@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e29b6128817a06e6b12e5fad724ff23f6d43c62d
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Oct 2 14:06:43 2017 +0200

    ALSA: usx2y: Suppress kernel warning at page allocation failures
    
    commit 7682e399485fe19622b6fd82510b1f4551e48a25 upstream.
    
    The usx2y driver allocates the stream read/write buffers in continuous
    pages depending on the stream setup, and this may spew the kernel
    warning messages with a stack trace like:
      WARNING: CPU: 1 PID: 1846 at mm/page_alloc.c:3883
      __alloc_pages_slowpath+0x1ef2/0x2d70
      Modules linked in:
      CPU: 1 PID: 1846 Comm: kworker/1:2 Not tainted
      ....
    
    It may confuse user as if it were any serious error, although this is
    no fatal error and the driver handles the error case gracefully.
    Since the driver has already some sanity check of the given size (128
    and 256 pages), it can't pass any crazy value.  So it's merely page
    fragmentation.
    
    This patch adds __GFP_NOWARN to each caller for suppressing such
    kernel warnings.  The original issue was spotted by syzkaller.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c52be88a5d675c67e02008ab4ebd54ce0d01c683
Author: Casey Schaufler <casey@schaufler-ca.com>
Date:   Tue Sep 19 09:39:08 2017 -0700

    lsm: fix smack_inode_removexattr and xattr_getsecurity memleak
    
    commit 57e7ba04d422c3d41c8426380303ec9b7533ded9 upstream.
    
    security_inode_getsecurity() provides the text string value
    of a security attribute. It does not provide a "secctx".
    The code in xattr_getsecurity() that calls security_inode_getsecurity()
    and then calls security_release_secctx() happened to work because
    SElinux and Smack treat the attribute and the secctx the same way.
    It fails for cap_inode_getsecurity(), because that module has no
    secctx that ever needs releasing. It turns out that Smack is the
    one that's doing things wrong by not allocating memory when instructed
    to do so by the "alloc" parameter.
    
    The fix is simple enough. Change the security_release_secctx() to
    kfree() because it isn't a secctx being returned by
    security_inode_getsecurity(). Change Smack to allocate the string when
    told to do so.
    
    Note: this also fixes memory leaks for LSMs which implement
    inode_getsecurity but not release_secctx, such as capabilities.
    
    Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
    Reported-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fce8db2c2cbd58fb9b37f1ff476442ee07c7c803
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Thu Sep 14 16:52:59 2017 +0200

    uwb: ensure that endpoint is interrupt
    
    commit 70e743e4cec3733dc13559f6184b35d358b9ef3f upstream.
    
    hwarc_neep_init() assumes that endpoint 0 is interrupt, but there's no
    check for that, which results in a WARNING in USB core code, when a bad
    USB descriptor is provided from a device:
    
    usb 1-1: BOGUS urb xfer, pipe 1 != type 3
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 3 at drivers/usb/core/urb.c:449 usb_submit_urb+0xf8a/0x11d0
    Modules linked in:
    CPU: 0 PID: 3 Comm: kworker/0:0 Not tainted 4.13.0+ #111
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Workqueue: usb_hub_wq hub_event
    task: ffff88006bdc1a00 task.stack: ffff88006bde8000
    RIP: 0010:usb_submit_urb+0xf8a/0x11d0 drivers/usb/core/urb.c:448
    RSP: 0018:ffff88006bdee3c0 EFLAGS: 00010282
    RAX: 0000000000000029 RBX: ffff8800672a7200 RCX: 0000000000000000
    RDX: 0000000000000029 RSI: ffff88006c815c78 RDI: ffffed000d7bdc6a
    RBP: ffff88006bdee4c0 R08: fffffbfff0fe00ff R09: fffffbfff0fe00ff
    R10: 0000000000000018 R11: fffffbfff0fe00fe R12: 1ffff1000d7bdc7f
    R13: 0000000000000003 R14: 0000000000000001 R15: ffff88006b02cc90
    FS:  0000000000000000(0000) GS:ffff88006c800000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fe4daddf000 CR3: 000000006add6000 CR4: 00000000000006f0
    Call Trace:
     hwarc_neep_init+0x4ce/0x9c0 drivers/uwb/hwa-rc.c:710
     uwb_rc_add+0x2fb/0x730 drivers/uwb/lc-rc.c:361
     hwarc_probe+0x34e/0x9b0 drivers/uwb/hwa-rc.c:858
     usb_probe_interface+0x351/0x8d0 drivers/usb/core/driver.c:361
     really_probe drivers/base/dd.c:385
     driver_probe_device+0x610/0xa00 drivers/base/dd.c:529
     __device_attach_driver+0x230/0x290 drivers/base/dd.c:625
     bus_for_each_drv+0x15e/0x210 drivers/base/bus.c:463
     __device_attach+0x269/0x3c0 drivers/base/dd.c:682
     device_initial_probe+0x1f/0x30 drivers/base/dd.c:729
     bus_probe_device+0x1da/0x280 drivers/base/bus.c:523
     device_add+0xcf9/0x1640 drivers/base/core.c:1703
     usb_set_configuration+0x1064/0x1890 drivers/usb/core/message.c:1932
     generic_probe+0x73/0xe0 drivers/usb/core/generic.c:174
     usb_probe_device+0xaf/0xe0 drivers/usb/core/driver.c:266
     really_probe drivers/base/dd.c:385
     driver_probe_device+0x610/0xa00 drivers/base/dd.c:529
     __device_attach_driver+0x230/0x290 drivers/base/dd.c:625
     bus_for_each_drv+0x15e/0x210 drivers/base/bus.c:463
     __device_attach+0x269/0x3c0 drivers/base/dd.c:682
     device_initial_probe+0x1f/0x30 drivers/base/dd.c:729
     bus_probe_device+0x1da/0x280 drivers/base/bus.c:523
     device_add+0xcf9/0x1640 drivers/base/core.c:1703
     usb_new_device+0x7b8/0x1020 drivers/usb/core/hub.c:2457
     hub_port_connect drivers/usb/core/hub.c:4890
     hub_port_connect_change drivers/usb/core/hub.c:4996
     port_event drivers/usb/core/hub.c:5102
     hub_event+0x23c8/0x37c0 drivers/usb/core/hub.c:5182
     process_one_work+0x9fb/0x1570 kernel/workqueue.c:2097
     worker_thread+0x1e4/0x1350 kernel/workqueue.c:2231
     kthread+0x324/0x3f0 kernel/kthread.c:231
     ret_from_fork+0x25/0x30 arch/x86/entry/entry_64.S:425
    Code: 48 8b 85 30 ff ff ff 48 8d b8 98 00 00 00 e8 8e 93 07 ff 45 89
    e8 44 89 f1 4c 89 fa 48 89 c6 48 c7 c7 a0 e5 55 86 e8 20 08 8f fd <0f>
    ff e9 9b f7 ff ff e8 4a 04 d6 fd e9 80 f7 ff ff e8 60 11 a6
    ---[ end trace 55d741234124cfc3 ]---
    
    Check that endpoint is interrupt.
    
    Found by syzkaller.
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a8d502989094b0825bb11240bc12e4d9cc5c65b
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Thu Sep 14 14:30:55 2017 +0200

    uwb: properly check kthread_run return value
    
    commit bbf26183b7a6236ba602f4d6a2f7cade35bba043 upstream.
    
    uwbd_start() calls kthread_run() and checks that the return value is
    not NULL. But the return value is not NULL in case kthread_run() fails,
    it takes the form of ERR_PTR(-EINTR).
    
    Use IS_ERR() instead.
    
    Also add a check to uwbd_stop().
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fd03e48dc8ad207a6f2f1c36c8b773599ec0280
Author: Lukas Wunner <lukas@wunner.de>
Date:   Tue Aug 22 15:33:00 2017 +0200

    iio: adc: mcp320x: Fix oops on module unload
    
    commit 0964e40947a630a2a6f724e968246992f97bcf1c upstream.
    
    The driver calls spi_get_drvdata() in its ->remove hook even though it
    has never called spi_set_drvdata().  Stack trace for posterity:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000220
    Internal error: Oops: 5 [#1] SMP ARM
    [<8072f564>] (mutex_lock) from [<7f1400d0>] (iio_device_unregister+0x24/0x7c [industrialio])
    [<7f1400d0>] (iio_device_unregister [industrialio]) from [<7f15e020>] (mcp320x_remove+0x20/0x30 [mcp320x])
    [<7f15e020>] (mcp320x_remove [mcp320x]) from [<8055a8cc>] (spi_drv_remove+0x2c/0x44)
    [<8055a8cc>] (spi_drv_remove) from [<805087bc>] (__device_release_driver+0x98/0x134)
    [<805087bc>] (__device_release_driver) from [<80509180>] (driver_detach+0xdc/0xe0)
    [<80509180>] (driver_detach) from [<8050823c>] (bus_remove_driver+0x5c/0xb0)
    [<8050823c>] (bus_remove_driver) from [<80509ab0>] (driver_unregister+0x38/0x58)
    [<80509ab0>] (driver_unregister) from [<7f15e69c>] (mcp320x_driver_exit+0x14/0x1c [mcp320x])
    [<7f15e69c>] (mcp320x_driver_exit [mcp320x]) from [<801a78d0>] (SyS_delete_module+0x184/0x1d0)
    [<801a78d0>] (SyS_delete_module) from [<80108100>] (ret_fast_syscall+0x0/0x1c)
    
    Fixes: f5ce4a7a9291 ("iio: adc: add driver for MCP3204/08 12-bit ADC")
    Cc: Oskar Andero <oskar.andero@gmail.com>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85a14a6de4f7256a81c6c2b06df61216e2fcf9a9
Author: Dragos Bogdan <dragos.bogdan@analog.com>
Date:   Tue Sep 5 15:16:13 2017 +0300

    iio: ad7793: Fix the serial interface reset
    
    commit 7ee3b7ebcb74714df6d94c8f500f307e1ee5dda5 upstream.
    
    The serial interface can be reset by writing 32 consecutive 1s to the device.
    'ret' was initialized correctly but its value was overwritten when
    ad7793_check_platform_data() was called. Since a dedicated reset function
    is present now, it should be used instead.
    
    Fixes: 2edb769d246e ("iio:ad7793: Add support for the ad7798 and ad7799")
    Signed-off-by: Dragos Bogdan <dragos.bogdan@analog.com>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1087d24eff5f5cc3f82f55bec8848e6d910cf9c
Author: Matt Fornero <matt.fornero@mathworks.com>
Date:   Tue Sep 5 16:34:10 2017 +0200

    iio: core: Return error for failed read_reg
    
    commit 3d62c78a6eb9a7d67bace9622b66ad51e81c5f9b upstream.
    
    If an IIO device returns an error code for a read access via debugfs, it
    is currently ignored by the IIO core (other than emitting an error
    message). Instead, return this error code to user space, so upper layers
    can detect it correctly.
    
    Signed-off-by: Matt Fornero <matt.fornero@mathworks.com>
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 923f18a8aacdf4b23a452360346755b7cf21c252
Author: Stefan Popa <stefan.popa@analog.com>
Date:   Thu Sep 14 16:50:28 2017 +0300

    staging: iio: ad7192: Fix - use the dedicated reset function avoiding dma from stack.
    
    commit f790923f146140a261ad211e5baf75d169f16fb2 upstream.
    
    Depends on: 691c4b95d1 ("iio: ad_sigma_delta: Implement a dedicated reset function")
    
    SPI host drivers can use DMA to transfer data, so the buffer should be properly allocated.
    Keeping it on the stack could cause an undefined behavior.
    
    The dedicated reset function solves this issue.
    
    Signed-off-by: Stefan Popa <stefan.popa@analog.com>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Acked-by: Michael Hennerich <michael.hennerich@analog.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 440edb76708ff2eefe035c9f3f9457b3b8a93dd6
Author: Dragos Bogdan <dragos.bogdan@analog.com>
Date:   Tue Sep 5 15:14:45 2017 +0300

    iio: ad_sigma_delta: Implement a dedicated reset function
    
    commit 7fc10de8d49a748c476532c9d8e8fe19e548dd67 upstream.
    
    Since most of the SD ADCs have the option of reseting the serial
    interface by sending a number of SCLKs with CS = 0 and DIN = 1,
    a dedicated function that can do this is usefull.
    
    Needed for the patch:  iio: ad7793: Fix the serial interface reset
    Signed-off-by: Dragos Bogdan <dragos.bogdan@analog.com>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a7370be51a44373d4279a2566a9c988fe07aaf5
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Sep 18 17:39:13 2017 +0300

    xhci: fix finding correct bus_state structure for USB 3.1 hosts
    
    commit 5a838a13c9b4e5dd188b7a6eaeb894e9358ead0c upstream.
    
    xhci driver keeps a bus_state structure for each hcd (usb2 and usb3)
    
    The structure is picked based on hcd speed, but driver only compared
    for HCD_USB3 speed, returning the wrong bus_state for HCD_USB31 hosts.
    
    This caused null pointer dereference errors in bus_resume function.
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0502bf54bd01e8dbf4a057fe76f974074b5fb7e6
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Sep 19 15:07:17 2017 +0200

    USB: fix out-of-bounds in usb_set_configuration
    
    commit bd7a3fe770ebd8391d1c7d072ff88e9e76d063eb upstream.
    
    Andrey Konovalov reported a possible out-of-bounds problem for a USB interface
    association descriptor.  He writes:
            It seems there's no proper size check of a USB_DT_INTERFACE_ASSOCIATION
            descriptor. It's only checked that the size is >= 2 in
            usb_parse_configuration(), so find_iad() might do out-of-bounds access
            to intf_assoc->bInterfaceCount.
    
    And he's right, we don't check for crazy descriptors of this type very well, so
    resolve this problem.  Yet another issue found by syzkaller...
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c7124a5295a10043daf2154bc01a437ece9d0f9
Author: Dmitry Fleytman <dmitry@daynix.com>
Date:   Tue Sep 5 11:40:56 2017 +0300

    usb: Increase quirk delay for USB devices
    
    commit b2a542bbb3081dbd64acc8929c140d196664c406 upstream.
    
    Commit e0429362ab15
    ("usb: Add device quirk for Logitech HD Pro Webcams C920 and C930e")
    introduced quirk to workaround an issue with some Logitech webcams.
    
    The workaround is introducing delay for some USB operations.
    
    According to our testing, delay introduced by original commit
    is not long enough and in rare cases we still see issues described
    by the aforementioned commit.
    
    This patch increases delays introduced by original commit.
    Having this patch applied we do not see those problems anymore.
    
    Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f0a7703ff9e3a5553134c3d9a20573624802541
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Sep 22 11:56:49 2017 -0400

    USB: uas: fix bug in handling of alternate settings
    
    commit 786de92b3cb26012d3d0f00ee37adf14527f35c4 upstream.
    
    The uas driver has a subtle bug in the way it handles alternate
    settings.  The uas_find_uas_alt_setting() routine returns an
    altsetting value (the bAlternateSetting number in the descriptor), but
    uas_use_uas_driver() then treats that value as an index to the
    intf->altsetting array, which it isn't.
    
    Normally this doesn't cause any problems because the various
    alternate settings have bAlternateSetting values 0, 1, 2, ..., so the
    value is equal to the index in the array.  But this is not guaranteed,
    and Andrey Konovalov used the syzkaller fuzzer with KASAN to get a
    slab-out-of-bounds error by violating this assumption.
    
    This patch fixes the bug by making uas_find_uas_alt_setting() return a
    pointer to the altsetting entry rather than either the value or the
    index.  Pointers are less subject to misinterpretation.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    CC: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d55567406fbd0c484bd7361d5d35feb037960592
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Sep 22 23:43:46 2017 +0300

    USB: devio: Don't corrupt user memory
    
    commit fa1ed74eb1c233be6131ec92df21ab46499a15b6 upstream.
    
    The user buffer has "uurb->buffer_length" bytes.  If the kernel has more
    information than that, we should truncate it instead of writing past
    the end of the user's buffer.  I added a WARN_ONCE() to help the user
    debug the issue.
    
    Reported-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36283d676804ee88f343207b573950da7c857b1a
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Sep 26 15:15:40 2017 -0400

    USB: dummy-hcd: fix infinite-loop resubmission bug
    
    commit 0173a68bfb0ad1c72a6ee39cc485aa2c97540b98 upstream.
    
    The dummy-hcd HCD/UDC emulator tries not to do too much work during
    each timer interrupt.  But it doesn't try very hard; currently all
    it does is limit the total amount of bulk data transferred.  Other
    transfer types aren't limited, and URBs that transfer no data (because
    of an error, perhaps) don't count toward the limit, even though on a
    real USB bus they would consume at least a minimum overhead.
    
    This means it's possible to get the driver stuck in an infinite loop,
    for example, if the host class driver resubmits an URB every time it
    completes (which is common for interrupt URBs).  Each time the URB is
    resubmitted it gets added to the end of the pending-URBs list, and
    dummy-hcd doesn't stop until that list is empty.  Andrey Konovalov was
    able to trigger this failure mode using the syzkaller fuzzer.
    
    This patch fixes the infinite-loop problem by restricting the URBs
    handled during each timer interrupt to those that were already on the
    pending list when the interrupt routine started.  Newly added URBs
    won't be processed until the next timer interrupt.  The problem of
    properly accounting for non-bulk bandwidth (as well as packet and
    transaction overhead) is not addressed here.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f47d4026e5d73186e7b218c2a3e23aa09ab2fa06
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Sep 26 15:15:22 2017 -0400

    USB: dummy-hcd: fix connection failures (wrong speed)
    
    commit fe659bcc9b173bcfdd958ce2aec75e47651e74e1 upstream.
    
    The dummy-hcd UDC driver is not careful about the way it handles
    connection speeds.  It ignores the module parameter that is supposed
    to govern the maximum connection speed and it doesn't set the HCD
    flags properly for the case where it ends up running at full speed.
    
    The result is that in many cases, gadget enumeration over dummy-hcd
    fails because the bMaxPacketSize byte in the device descriptor is set
    incorrectly.  For example, the default settings call for a high-speed
    connection, but the maxpacket value for ep0 ends up being set for a
    Super-Speed connection.
    
    This patch fixes the problem by initializing the gadget's max_speed
    and the HCD flags correctly.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b01fcab0516e40d2fb53eeeb513bf8e2ba01982
Author: Jim Dickerson <jim.dickerson@hpe.com>
Date:   Mon Sep 18 17:39:14 2017 +0300

    usb: pci-quirks.c: Corrected timeout values used in handshake
    
    commit 114ec3a6f9096d211a4aff4277793ba969a62c73 upstream.
    
    Servers were emitting failed handoff messages but were not
    waiting the full 1 second as designated in section 4.22.1 of
    the eXtensible Host Controller Interface specifications. The
    handshake was using wrong units so calls were made with milliseconds
    not microseconds. Comments referenced 5 seconds not 1 second as
    in specs.
    
    The wrong units were also corrected in a second handshake call.
    
    Signed-off-by: Jim Dickerson <jim.dickerson@hpe.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee44ff5445ae449570427baa534bfba2abba7545
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Sep 22 16:18:53 2017 +0200

    ALSA: usb-audio: Check out-of-bounds access by corrupted buffer descriptor
    
    commit bfc81a8bc18e3c4ba0cbaa7666ff76be2f998991 upstream.
    
    When a USB-audio device receives a maliciously adjusted or corrupted
    buffer descriptor, the USB-audio driver may access an out-of-bounce
    value at its parser.  This was detected by syzkaller, something like:
    
      BUG: KASAN: slab-out-of-bounds in usb_audio_probe+0x27b2/0x2ab0
      Read of size 1 at addr ffff88006b83a9e8 by task kworker/0:1/24
      CPU: 0 PID: 24 Comm: kworker/0:1 Not tainted 4.14.0-rc1-42251-gebb2c2437d80 #224
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
      Workqueue: usb_hub_wq hub_event
      Call Trace:
       __dump_stack lib/dump_stack.c:16
       dump_stack+0x292/0x395 lib/dump_stack.c:52
       print_address_description+0x78/0x280 mm/kasan/report.c:252
       kasan_report_error mm/kasan/report.c:351
       kasan_report+0x22f/0x340 mm/kasan/report.c:409
       __asan_report_load1_noabort+0x19/0x20 mm/kasan/report.c:427
       snd_usb_create_streams sound/usb/card.c:248
       usb_audio_probe+0x27b2/0x2ab0 sound/usb/card.c:605
       usb_probe_interface+0x35d/0x8e0 drivers/usb/core/driver.c:361
       really_probe drivers/base/dd.c:413
       driver_probe_device+0x610/0xa00 drivers/base/dd.c:557
       __device_attach_driver+0x230/0x290 drivers/base/dd.c:653
       bus_for_each_drv+0x161/0x210 drivers/base/bus.c:463
       __device_attach+0x26e/0x3d0 drivers/base/dd.c:710
       device_initial_probe+0x1f/0x30 drivers/base/dd.c:757
       bus_probe_device+0x1eb/0x290 drivers/base/bus.c:523
       device_add+0xd0b/0x1660 drivers/base/core.c:1835
       usb_set_configuration+0x104e/0x1870 drivers/usb/core/message.c:1932
       generic_probe+0x73/0xe0 drivers/usb/core/generic.c:174
       usb_probe_device+0xaf/0xe0 drivers/usb/core/driver.c:266
       really_probe drivers/base/dd.c:413
       driver_probe_device+0x610/0xa00 drivers/base/dd.c:557
       __device_attach_driver+0x230/0x290 drivers/base/dd.c:653
       bus_for_each_drv+0x161/0x210 drivers/base/bus.c:463
       __device_attach+0x26e/0x3d0 drivers/base/dd.c:710
       device_initial_probe+0x1f/0x30 drivers/base/dd.c:757
       bus_probe_device+0x1eb/0x290 drivers/base/bus.c:523
       device_add+0xd0b/0x1660 drivers/base/core.c:1835
       usb_new_device+0x7b8/0x1020 drivers/usb/core/hub.c:2457
       hub_port_connect drivers/usb/core/hub.c:4903
       hub_port_connect_change drivers/usb/core/hub.c:5009
       port_event drivers/usb/core/hub.c:5115
       hub_event+0x194d/0x3740 drivers/usb/core/hub.c:5195
       process_one_work+0xc7f/0x1db0 kernel/workqueue.c:2119
       worker_thread+0x221/0x1850 kernel/workqueue.c:2253
       kthread+0x3a1/0x470 kernel/kthread.c:231
       ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:431
    
    This patch adds the checks of out-of-bounce accesses at appropriate
    places and bails out when it goes out of the given buffer.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be8077a03a279b4f3ab9dda3d64959d626e3044f
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Sep 27 18:47:13 2017 +0900

    usb: renesas_usbhs: fix usbhsf_fifo_clear() for RX direction
    
    commit 0a2ce62b61f2c76d0213edf4e37aaf54a8ddf295 upstream.
    
    This patch fixes an issue that the usbhsf_fifo_clear() is possible
    to cause 10 msec delay if the pipe is RX direction and empty because
    the FRDY bit will never be set to 1 in such case.
    
    Fixes: e8d548d54968 ("usb: renesas_usbhs: fifo became independent from pipe.")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98578949897f4f46338870e1995230627fb42081
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Sep 27 18:47:12 2017 +0900

    usb: renesas_usbhs: fix the BCLR setting condition for non-DCP pipe
    
    commit 6124607acc88fffeaadf3aacfeb3cc1304c87387 upstream.
    
    This patch fixes an issue that the driver sets the BCLR bit of
    {C,Dn}FIFOCTR register to 1 even when it's non-DCP pipe and
    the FRDY bit of {C,Dn}FIFOCTR register is set to 1.
    
    Fixes: e8d548d54968 ("usb: renesas_usbhs: fifo became independent from pipe.")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c57e55706abeffafbc52d28155297650dae6e2c0
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 15:59:30 2017 -0400

    usb-storage: unusual_devs entry to fix write-access regression for Seagate external drives
    
    commit 113f6eb6d50cfa5e2a1cdcf1678b12661fa272ab upstream.
    
    Kris Lindgren reports that without the NO_WP_DETECT flag, his Seagate
    external disk drive fails all write accesses.  This regresssion dates
    back approximately to the start of the 4.x kernel releases.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Kris Lindgren <kris.lindgren@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59bf5c20792e4842e063890dc08ad38960d87eca
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 16:12:01 2017 -0400

    USB: gadgetfs: fix copy_to_user while holding spinlock
    
    commit 6e76c01e71551cb221c1f3deacb9dcd9a7346784 upstream.
    
    The gadgetfs driver as a long-outstanding FIXME, regarding a call of
    copy_to_user() made while holding a spinlock.  This patch fixes the
    issue by dropping the spinlock and using the dev->udc_usage mechanism
    introduced by another recent patch to guard against status changes
    while the lock isn't held.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2b87de9b5bfe61b9babd47f840050375284dde6
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 13:23:58 2017 -0400

    USB: gadgetfs: Fix crash caused by inadequate synchronization
    
    commit 520b72fc64debf8a86c3853b8e486aa5982188f0 upstream.
    
    The gadgetfs driver (drivers/usb/gadget/legacy/inode.c) was written
    before the UDC and composite frameworks were adopted; it is a legacy
    driver.  As such, it expects that once bound to a UDC controller, it
    will not be unbound until it unregisters itself.
    
    However, the UDC framework does unbind function drivers while they are
    still registered.  When this happens, it can cause the gadgetfs driver
    to misbehave or crash.  For example, userspace can cause a crash by
    opening the device file and doing an ioctl call before setting up a
    configuration (found by Andrey Konovalov using the syzkaller fuzzer).
    
    This patch adds checks and synchronization to prevent these bad
    behaviors.  It adds a udc_usage counter that the driver increments at
    times when it is using a gadget interface without holding the private
    spinlock.  The unbind routine waits for this counter to go to 0 before
    returning, thereby ensuring that the UDC is no longer in use.
    
    The patch also adds a check in the dev_ioctl() routine to make sure
    the driver is bound to a UDC before dereferencing the gadget pointer,
    and it makes destroy_ep_files() synchronize with the endpoint I/O
    routines, to prevent the user from accessing an endpoint data
    structure after it has been removed.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit abb540b5397674243994c5327146b6fed7339b71
Author: David Eccher <d.eccher@gmail.com>
Date:   Fri Dec 11 22:13:55 2015 +0100

    usb: gadget: inode.c: fix unbalanced spin_lock in ep0_write
    
    commit b7bd98b7db9fc8fe19da1a5ff0215311c6b95e46 upstream.
    
    Fix bad unlock balance: ep0_write enter with the locks locked from
    inode.c:1769, hence it must exit with spinlock held to avoid double
    unlock in dev_config.
    
    Signed-off-by: David Eccher <d.eccher@gmail.com>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>