Skip to content
  1. Feb 06, 2023
  2. Jan 24, 2023
    • Greg Kroah-Hartman's avatar
    • YingChi Long's avatar
      x86/fpu: Use _Alignof to avoid undefined behavior in TYPE_ALIGN · a00d020f
      YingChi Long authored
      commit 55228db2 upstream.
      
      WG14 N2350 specifies that it is an undefined behavior to have type
      definitions within offsetof", see
      
        https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2350.htm
      
      
      
      This specification is also part of C23.
      
      Therefore, replace the TYPE_ALIGN macro with the _Alignof builtin to
      avoid undefined behavior. (_Alignof itself is C11 and the kernel is
      built with -gnu11).
      
      ISO C11 _Alignof is subtly different from the GNU C extension
      __alignof__. Latter is the preferred alignment and _Alignof the
      minimal alignment. For long long on x86 these are 8 and 4
      respectively.
      
      The macro TYPE_ALIGN's behavior matches _Alignof rather than
      __alignof__.
      
        [ bp: Massage commit message. ]
      
      Signed-off-by: default avatarYingChi Long <me@inclyc.cn>
      Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Link: https://lore.kernel.org/r/20220925153151.2467884-1-me@inclyc.cn
      
      
      Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a00d020f
    • Greg Kroah-Hartman's avatar
      Revert "ext4: generalize extents status tree search functions" · 55d7561d
      Greg Kroah-Hartman authored
      This reverts commit cca8671f which is
      commit ad431025 upstream.
      
      Eric writes:
      	I recommend not backporting this patch or the other three
      	patches apparently intended to support it to 4.19 stable.  All
      	these patches are related to ext4's bigalloc feature, which was
      	experimental as of 4.19 (expressly noted by contemporary
      	versions of e2fsprogs) and also suffered from a number of bugs.
      	A significant number of additional patches that were applied to
      	5.X kernels over time would have to be backported to 4.19 for
      	the patch below to function correctly. It's really not worth
      	doing that given bigalloc's experimental status as of 4.19 and
      	the very rare combination of the bigalloc and inline features.
      
      Link: https://lore.kernel.org/r/Y8mAe1SlcLD5fykg@debian-BULLSEYE-live-builder-AMD64
      
      
      Cc: Eric Whitney <enwlinux@gmail.com>
      Cc: Theodore Ts'o <tytso@mit.edu>
      Cc: Sasha Levin <sashal@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      55d7561d
    • Greg Kroah-Hartman's avatar
      Revert "ext4: add new pending reservation mechanism" · 432021b8
      Greg Kroah-Hartman authored
      This reverts commit 9bacbb4c which is
      commit 1dc0aa46 upstream.
      
      Eric writes:
      	I recommend not backporting this patch or the other three
      	patches apparently intended to support it to 4.19 stable.  All
      	these patches are related to ext4's bigalloc feature, which was
      	experimental as of 4.19 (expressly noted by contemporary
      	versions of e2fsprogs) and also suffered from a number of bugs.
      	A significant number of additional patches that were applied to
      	5.X kernels over time would have to be backported to 4.19 for
      	the patch below to function correctly. It's really not worth
      	doing that given bigalloc's experimental status as of 4.19 and
      	the very rare combination of the bigalloc and inline features.
      
      Link: https://lore.kernel.org/r/Y8mAe1SlcLD5fykg@debian-BULLSEYE-live-builder-AMD64
      
      
      Cc: Eric Whitney <enwlinux@gmail.com>
      Cc: Theodore Ts'o <tytso@mit.edu>
      Cc: Sasha Levin <sashal@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      432021b8
    • Greg Kroah-Hartman's avatar
      Revert "ext4: fix reserved cluster accounting at delayed write time" · f8339133
      Greg Kroah-Hartman authored
      This reverts commit d40e09f7 which is
      commit 0b02f4c0 upstream.
      
      Eric writes:
      	I recommend not backporting this patch or the other three
      	patches apparently intended to support it to 4.19 stable.  All
      	these patches are related to ext4's bigalloc feature, which was
      	experimental as of 4.19 (expressly noted by contemporary
      	versions of e2fsprogs) and also suffered from a number of bugs.
      	A significant number of additional patches that were applied to
      	5.X kernels over time would have to be backported to 4.19 for
      	the patch below to function correctly. It's really not worth
      	doing that given bigalloc's experimental status as of 4.19 and
      	the very rare combination of the bigalloc and inline features.
      
      Link: https://lore.kernel.org/r/Y8mAe1SlcLD5fykg@debian-BULLSEYE-live-builder-AMD64
      
      
      Cc: Eric Whitney <enwlinux@gmail.com>
      Cc: Theodore Ts'o <tytso@mit.edu>
      Cc: Sasha Levin <sashal@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f8339133
    • Greg Kroah-Hartman's avatar
      Revert "ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline" · 0ce15000
      Greg Kroah-Hartman authored
      This reverts commit 1ed1eef0 which is
      commit 131294c3 upstream.
      
      Eric writes:
      	I recommend not backporting this patch or the other three
      	patches apparently intended to support it to 4.19 stable.  All
      	these patches are related to ext4's bigalloc feature, which was
      	experimental as of 4.19 (expressly noted by contemporary
      	versions of e2fsprogs) and also suffered from a number of bugs.
      	A significant number of additional patches that were applied to
      	5.X kernels over time would have to be backported to 4.19 for
      	the patch below to function correctly. It's really not worth
      	doing that given bigalloc's experimental status as of 4.19 and
      	the very rare combination of the bigalloc and inline features.
      
      Link: https://lore.kernel.org/r/Y8mAe1SlcLD5fykg@debian-BULLSEYE-live-builder-AMD64
      
      
      Cc: Eric Whitney <enwlinux@gmail.com>
      Cc: Theodore Ts'o <tytso@mit.edu>
      Cc: Sasha Levin <sashal@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0ce15000
    • Khazhismel Kumykov's avatar
      gsmi: fix null-deref in gsmi_get_variable · 32313c11
      Khazhismel Kumykov authored
      commit a769b05e upstream.
      
      We can get EFI variables without fetching the attribute, so we must
      allow for that in gsmi.
      
      commit 85974825 ("efi: pstore: Omit efivars caching EFI varstore
      access layer") added a new get_variable call with attr=NULL, which
      triggers panic in gsmi.
      
      Fixes: 74c5b31c
      
       ("driver: Google EFI SMI")
      Cc: stable <stable@kernel.org>
      Signed-off-by: default avatarKhazhismel Kumykov <khazhy@google.com>
      Link: https://lore.kernel.org/r/20230118010212.1268474-1-khazhy@google.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      32313c11
    • Tobias Schramm's avatar
      serial: atmel: fix incorrect baudrate setup · 8ee291ae
      Tobias Schramm authored
      commit 5bfdd3c6 upstream.
      
      Commit ba47f97a ("serial: core: remove baud_rates when serial console
      setup") changed uart_set_options to select the correct baudrate
      configuration based on the absolute error between requested baudrate and
      available standard baudrate settings.
      Prior to that commit the baudrate was selected based on which predefined
      standard baudrate did not exceed the requested baudrate.
      This change of selection logic was never reflected in the atmel serial
      driver. Thus the comment left in the atmel serial driver is no longer
      accurate.
      Additionally the manual rounding up described in that comment and applied
      via (quot - 1) requests an incorrect baudrate. Since uart_set_options uses
      tty_termios_encode_baud_rate to determine the appropriate baudrate flags
      this can cause baudrate selection to fail entirely because
      tty_termios_encode_baud_rate will only select a baudrate if relative error
      between requested and selected baudrate does not exceed +/-2%.
      Fix that by requesting actual, exact baudrate used by the serial.
      
      Fixes: ba47f97a
      
       ("serial: core: remove baud_rates when serial console setup")
      Cc: stable <stable@kernel.org>
      Signed-off-by: default avatarTobias Schramm <t.schramm@manjaro.org>
      Acked-by: default avatarRichard Genoud <richard.genoud@gmail.com>
      Link: https://lore.kernel.org/r/20230109072940.202936-1-t.schramm@manjaro.org
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8ee291ae
    • Ilpo Järvinen's avatar
      serial: pch_uart: Pass correct sg to dma_unmap_sg() · fe85083b
      Ilpo Järvinen authored
      commit e8914b52 upstream.
      
      A local variable sg is used to store scatterlist pointer in
      pch_dma_tx_complete(). The for loop doing Tx byte accounting before
      dma_unmap_sg() alters sg in its increment statement. Therefore, the
      pointer passed into dma_unmap_sg() won't match to the one given to
      dma_map_sg().
      
      To fix the problem, use priv->sg_tx_p directly in dma_unmap_sg()
      instead of the local variable.
      
      Fixes: da3564ee
      
       ("pch_uart: add multi-scatter processing")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
      Link: https://lore.kernel.org/r/20230103093435.4396-1-ilpo.jarvinen@linux.intel.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fe85083b
    • Juhyung Park's avatar
      usb-storage: apply IGNORE_UAS only for HIKSEMI MD202 on RTL9210 · a24cbfc1
      Juhyung Park authored
      commit dbd24ec1 upstream.
      
      The commit e00b488e ("usb-storage: Add Hiksemi USB3-FW to IGNORE_UAS")
      blacklists UAS for all of RTL9210 enclosures.
      
      The RTL9210 controller was advertised with UAS since its release back in
      2019 and was shipped with a lot of enclosure products with different
      firmware combinations.
      
      Blacklist UAS only for HIKSEMI MD202.
      
      This should hopefully be replaced with more robust method than just
      comparing strings.  But with limited information [1] provided thus far
      (dmesg when the device is plugged in, which includes manufacturer and
      product, but no lsusb -v to compare against), this is the best we can do
      for now.
      
      [1] https://lore.kernel.org/all/20230109115550.71688-1-qkrwngud825@gmail.com
      
      Fixes: e00b488e
      
       ("usb-storage: Add Hiksemi USB3-FW to IGNORE_UAS")
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Hongling Zeng <zenghongling@kylinos.cn>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJuhyung Park <qkrwngud825@gmail.com>
      Acked-by: default avatarOliver Neukum <oneukum@suse.com>
      Link: https://lore.kernel.org/r/20230117085154.123301-1-qkrwngud825@gmail.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a24cbfc1
    • Maciej Żenczykowski's avatar
      usb: gadget: f_ncm: fix potential NULL ptr deref in ncm_bitrate() · 63d161f2
      Maciej Żenczykowski authored
      commit c6ec9295 upstream.
      
      In Google internal bug 265639009 we've received an (as yet) unreproducible
      crash report from an aarch64 GKI 5.10.149-android13 running device.
      
      AFAICT the source code is at:
        https://android.googlesource.com/kernel/common/+/refs/tags/ASB-2022-12-05_13-5.10
      
      
      
      The call stack is:
        ncm_close() -> ncm_notify() -> ncm_do_notify()
      with the crash at:
        ncm_do_notify+0x98/0x270
      Code: 79000d0b b9000a6c f940012a f9400269 (b9405d4b)
      
      Which I believe disassembles to (I don't know ARM assembly, but it looks sane enough to me...):
      
        // halfword (16-bit) store presumably to event->wLength (at offset 6 of struct usb_cdc_notification)
        0B 0D 00 79    strh w11, [x8, #6]
      
        // word (32-bit) store presumably to req->Length (at offset 8 of struct usb_request)
        6C 0A 00 B9    str  w12, [x19, #8]
      
        // x10 (NULL) was read here from offset 0 of valid pointer x9
        // IMHO we're reading 'cdev->gadget' and getting NULL
        // gadget is indeed at offset 0 of struct usb_composite_dev
        2A 01 40 F9    ldr  x10, [x9]
      
        // loading req->buf pointer, which is at offset 0 of struct usb_request
        69 02 40 F9    ldr  x9, [x19]
      
        // x10 is null, crash, appears to be attempt to read cdev->gadget->max_speed
        4B 5D 40 B9    ldr  w11, [x10, #0x5c]
      
      which seems to line up with ncm_do_notify() case NCM_NOTIFY_SPEED code fragment:
      
        event->wLength = cpu_to_le16(8);
        req->length = NCM_STATUS_BYTECOUNT;
      
        /* SPEED_CHANGE data is up/down speeds in bits/sec */
        data = req->buf + sizeof *event;
        data[0] = cpu_to_le32(ncm_bitrate(cdev->gadget));
      
      My analysis of registers and NULL ptr deref crash offset
        (Unable to handle kernel NULL pointer dereference at virtual address 000000000000005c)
      heavily suggests that the crash is due to 'cdev->gadget' being NULL when executing:
        data[0] = cpu_to_le32(ncm_bitrate(cdev->gadget));
      which calls:
        ncm_bitrate(NULL)
      which then calls:
        gadget_is_superspeed(NULL)
      which reads
        ((struct usb_gadget *)NULL)->max_speed
      and hits a panic.
      
      AFAICT, if I'm counting right, the offset of max_speed is indeed 0x5C.
      (remember there's a GKI KABI reservation of 16 bytes in struct work_struct)
      
      It's not at all clear to me how this is all supposed to work...
      but returning 0 seems much better than panic-ing...
      
      Cc: Felipe Balbi <balbi@kernel.org>
      Cc: Lorenzo Colitti <lorenzo@google.com>
      Cc: Carlos Llamas <cmllamas@google.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMaciej Żenczykowski <maze@google.com>
      Cc: stable <stable@kernel.org>
      Link: https://lore.kernel.org/r/20230117131839.1138208-1-maze@google.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      63d161f2
    • Daniel Scally's avatar
      usb: gadget: g_webcam: Send color matching descriptor per frame · 7c94c99b
      Daniel Scally authored
      commit e95765e9 upstream.
      
      Currently the color matching descriptor is only sent across the wire
      a single time, following the descriptors for each format and frame.
      According to the UVC 1.5 Specification 3.9.2.6 ("Color Matching
      Descriptors"):
      
      "Only one instance is allowed for a given format and if present,
      the Color Matching descriptor shall be placed following the Video
      and Still Image Frame descriptors for that format".
      
      Add another reference to the color matching descriptor after the
      yuyv frames so that it's correctly transmitted for that format
      too.
      
      Fixes: a9914127
      
       ("USB gadget: Webcam device")
      Cc: stable <stable@kernel.org>
      Signed-off-by: default avatarDaniel Scally <dan.scally@ideasonboard.com>
      Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Reviewed-by: default avatarKieran Bingham <kieran.bingham@ideasonboard.com>
      Link: https://lore.kernel.org/r/20221216160528.479094-1-dan.scally@ideasonboard.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7c94c99b
    • Prashant Malani's avatar
      usb: typec: altmodes/displayport: Fix pin assignment calculation · 22349658
      Prashant Malani authored
      commit 9682b41e upstream.
      
      Commit c1e5c2f0 ("usb: typec: altmodes/displayport: correct pin
      assignment for UFP receptacles") fixed the pin assignment calculation
      to take into account whether the peripheral was a plug or a receptacle.
      
      But the "pin_assignments" sysfs logic was not updated. Address this by
      using the macros introduced in the aforementioned commit in the sysfs
      logic too.
      
      Fixes: c1e5c2f0
      
       ("usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles")
      Cc: stable@vger.kernel.org
      Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>
      Signed-off-by: default avatarPrashant Malani <pmalani@chromium.org>
      Reviewed-by: default avatarBenson Leung <bleung@chromium.org>
      Reviewed-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
      Link: https://lore.kernel.org/r/20230111020546.3384569-2-pmalani@chromium.org
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      22349658
    • Prashant Malani's avatar
      usb: typec: altmodes/displayport: Add pin assignment helper · eea0e7af
      Prashant Malani authored
      commit 582836e3 upstream.
      
      The code to extract a peripheral's currently supported Pin Assignments
      is repeated in a couple of locations. Factor it out into a separate
      function.
      
      This will also make it easier to add fixes (we only need to update 1
      location instead of 2).
      
      Fixes: c1e5c2f0
      
       ("usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles")
      Cc: stable@vger.kernel.org
      Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>
      Signed-off-by: default avatarPrashant Malani <pmalani@chromium.org>
      Reviewed-by: default avatarBenson Leung <bleung@chromium.org>
      Reviewed-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
      Link: https://lore.kernel.org/r/20230111020546.3384569-1-pmalani@chromium.org
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      eea0e7af
    • Alexander Stein's avatar
      usb: host: ehci-fsl: Fix module alias · e8432afd
      Alexander Stein authored
      commit 5d3d01ae upstream.
      
      Commit ca07e1c1 ("drivers:usb:fsl:Make fsl ehci drv an independent
      driver module") changed DRV_NAME which was used for MODULE_ALIAS as well.
      Starting from this the module alias didn't match the platform device
      name created in fsl-mph-dr-of.c
      Change DRV_NAME to match the driver name for host mode in fsl-mph-dr-of.
      This is needed for module autoloading on ls1021a.
      
      Fixes: ca07e1c1
      
       ("drivers:usb:fsl:Make fsl ehci drv an independent driver module")
      Cc: stable <stable@kernel.org>
      Signed-off-by: default avatarAlexander Stein <alexander.stein@ew.tq-group.com>
      Link: https://lore.kernel.org/r/20230120122714.3848784-1-alexander.stein@ew.tq-group.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e8432afd
    • Michael Adler's avatar
      USB: serial: cp210x: add SCALANCE LPE-9000 device id · 91fe4924
      Michael Adler authored
      commit 3f9e76e3
      
       upstream.
      
      Add the USB serial console device ID for Siemens SCALANCE LPE-9000
      which have a USB port for their serial console.
      
      Signed-off-by: default avatarMichael Adler <michael.adler@siemens.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      91fe4924
    • Enzo Matsumiya's avatar
      cifs: do not include page data when checking signature · 19f0577d
      Enzo Matsumiya authored
      commit 30b2b219
      
       upstream.
      
      On async reads, page data is allocated before sending.  When the
      response is received but it has no data to fill (e.g.
      STATUS_END_OF_FILE), __calc_signature() will still include the pages in
      its computation, leading to an invalid signature check.
      
      This patch fixes this by not setting the async read smb_rqst page data
      (zeroed by default) if its got_bytes is 0.
      
      This can be reproduced/verified with xfstests generic/465.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarEnzo Matsumiya <ematsumiya@suse.de>
      Reviewed-by: default avatarPaulo Alcantara (SUSE) <pc@cjr.nz>
      Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      19f0577d
    • Samuel Holland's avatar
      mmc: sunxi-mmc: Fix clock refcount imbalance during unbind · fb55f083
      Samuel Holland authored
      commit 85094197 upstream.
      
      If the controller is suspended by runtime PM, the clock is already
      disabled, so do not try to disable it again during removal. Use
      pm_runtime_disable() to flush any pending runtime PM transitions.
      
      Fixes: 9a8e1e8c
      
       ("mmc: sunxi: Add runtime_pm support")
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Acked-by: default avatarJernej Skrabec <jernej.skrabec@gmail.com>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20220810022509.43743-1-samuel@sholland.org
      
      
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fb55f083
    • Ian Abbott's avatar
      comedi: adv_pci1760: Fix PWM instruction handling · a794e308
      Ian Abbott authored
      commit 2efb6edd upstream.
      
      (Actually, this is fixing the "Read the Current Status" command sent to
      the device's outgoing mailbox, but it is only currently used for the PWM
      instructions.)
      
      The PCI-1760 is operated mostly by sending commands to a set of Outgoing
      Mailbox registers, waiting for the command to complete, and reading the
      result from the Incoming Mailbox registers.  One of these commands is
      the "Read the Current Status" command.  The number of this command is
      0x07 (see the User's Manual for the PCI-1760 at
      <https://advdownload.advantech.com/productfile/Downloadfile2/1-11P6653/PCI-1760.pdf>.
      The `PCI1760_CMD_GET_STATUS` macro defined in the driver should expand
      to this command number 0x07, but unfortunately it currently expands to
      0x03.  (Command number 0x03 is not defined in the User's Manual.)
      Correct the definition of the `PCI1760_CMD_GET_STATUS` macro to fix it.
      
      This is used by all the PWM subdevice related instructions handled by
      `pci1760_pwm_insn_config()` which are probably all broken.  The effect
      of sending the undefined command number 0x03 is not known.
      
      Fixes: 14b93bb6
      
       ("staging: comedi: adv_pci_dio: separate out PCI-1760 support")
      Cc: <stable@vger.kernel.org> # v4.5+
      Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
      Link: https://lore.kernel.org/r/20230103143754.17564-1-abbotti@mev.co.uk
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a794e308
    • Flavio Suligoi's avatar
      usb: core: hub: disable autosuspend for TI TUSB8041 · 3be567d8
      Flavio Suligoi authored
      commit 7171b0e2
      
       upstream.
      
      The Texas Instruments TUSB8041 has an autosuspend problem at high
      temperature.
      
      If there is not USB traffic, after a couple of ms, the device enters in
      autosuspend mode. In this condition the external clock stops working, to
      save energy. When the USB activity turns on, ther hub exits the
      autosuspend state, the clock starts running again and all works fine.
      
      At ambient temperature all works correctly, but at high temperature,
      when the USB activity turns on, the external clock doesn't restart and
      the hub disappears from the USB bus.
      
      Disabling the autosuspend mode for this hub solves the issue.
      
      Signed-off-by: default avatarFlavio Suligoi <f.suligoi@asem.it>
      Cc: stable <stable@kernel.org>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Link: https://lore.kernel.org/r/20221219124759.3207032-1-f.suligoi@asem.it
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3be567d8
    • Greg Kroah-Hartman's avatar
      USB: misc: iowarrior: fix up header size for USB_DEVICE_ID_CODEMERCS_IOW100 · 1f09d795
      Greg Kroah-Hartman authored
      commit 14ff7460 upstream.
      
      The USB_DEVICE_ID_CODEMERCS_IOW100 header size was incorrect, it should
      be 12, not 13.
      
      Cc: stable <stable@kernel.org>
      Fixes: 17a82716
      
       ("USB: iowarrior: fix up report size handling for some devices")
      Reported-by: default avatarChristoph Jung <jung@codemercs.com>
      Link: https://lore.kernel.org/r/20230120135330.3842518-1-gregkh@linuxfoundation.org
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1f09d795
    • Duke Xin(辛安文)'s avatar
      USB: serial: option: add Quectel EM05CN modem · 40a8d565
      Duke Xin(辛安文) authored
      commit 71dfd381
      
       upstream.
      
      The EM05CN modem has 2 USB configurations that are configurable via the AT
      command AT+QCFG="usbnet",[ 0 | 2 ] which make the modem enumerate with
      the following interfaces, respectively:
      
      "MBIM"  : AT + MBIM + DIAG + NMEA  + MODEM
      "RMNET" : AT + DIAG + NMEA + Modem + QMI
      
      The detailed description of the USB configuration for each mode as follows:
      
      MBIM Mode
      --------------
      T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
      D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=2c7c ProdID=0312 Rev= 3.18
      S:  Manufacturer=Quectel
      S:  Product=Quectel EM05-CN
      C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
      A:  FirstIf#= 1 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
      I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
      E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
      I:  If#= 2 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      I:* If#= 2 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      RMNET Mode
      --------------
      T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
      D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=2c7c ProdID=0312 Rev= 3.18
      S:  Manufacturer=Quectel
      S:  Product=Quectel EM05-CN
      C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
      I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=89(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
      E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      Signed-off-by: default avatarDuke Xin(辛安文) <duke_xinanwen@163.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      40a8d565
    • Duke Xin(辛安文)'s avatar
      USB: serial: option: add Quectel EM05CN (SG) modem · b3d80364
      Duke Xin(辛安文) authored
      commit 1541dd00
      
       upstream.
      
      The EM05CN (SG) modem has 2 USB configurations that are configurable via the AT
      command AT+QCFG="usbnet",[ 0 | 2 ] which make the modem enumerate with
      the following interfaces, respectively:
      
      "MBIM"  : AT + MBIM + DIAG + NMEA  + MODEM
      "RMNET" : AT + DIAG + NMEA + Modem + QMI
      
      The detailed description of the USB configuration for each mode as follows:
      
      MBIM Mode
      --------------
      T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
      D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=2c7c ProdID=0310 Rev= 3.18
      S:  Manufacturer=Quectel
      S:  Product=Quectel EM05-CN
      C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
      A:  FirstIf#= 1 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
      I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
      E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
      I:  If#= 2 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      I:* If#= 2 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      RMNET Mode
      --------------
      T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
      D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=2c7c ProdID=0310 Rev= 3.18
      S:  Manufacturer=Quectel
      S:  Product=Quectel EM05-CN
      C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
      I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=89(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
      E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      Signed-off-by: default avatarDuke Xin(辛安文) <duke_xinanwen@163.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b3d80364
    • Ali Mirghasemi's avatar
      USB: serial: option: add Quectel EC200U modem · 74302819
      Ali Mirghasemi authored
      commit d9bbb158
      
       upstream.
      
      Add support for EC200U modem
      
      0x0901: EC200U - AT + AP + CP + NMEA + DIAG + MOS
      
      usb-device output:
      T: Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#= 4 Spd=480 MxCh= 0
      D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
      P: Vendor=2c7c ProdID=0901 Rev= 3.18
      S: Manufacturer=Android
      S: Product=Android
      C:* #Ifs= 9 Cfg#= 1 Atr=e0 MxPwr=400mA
      A: FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00
      I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
      E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=32ms
      I: If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
      I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
      E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E: Ad=83(I) Atr=03(Int.) MxPS= 512 Ivl=4096ms
      I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E: Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 7 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E: Ad=8a(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E: Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E: Ad=89(I) Atr=03(Int.) MxPS= 512 Ivl=4096ms
      I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E: Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E: Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      Signed-off-by: default avatarAli Mirghasemi <ali.mirghasemi1376@gmail.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      74302819
    • Duke Xin(辛安文)'s avatar
      USB: serial: option: add Quectel EM05-G (RS) modem · 3f6319c7
      Duke Xin(辛安文) authored
      commit b72d1397
      
       upstream.
      
      The EM05-G (RS) modem has 2 USB configurations that are configurable via
      the AT command AT+QCFG="usbnet",[ 0 | 2 ] which make the modem enumerate
      with the following interfaces, respectively:
      
      "RMNET" : AT + DIAG + NMEA + Modem + QMI
      "MBIM"  : MBIM + AT + DIAG + NMEA + Modem
      
      The detailed description of the USB configuration for each mode as follows:
      
      RMNET Mode
      --------------
      T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 21 Spd=480  MxCh= 0
      D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=2c7c ProdID=0314 Rev= 3.18
      S:  Manufacturer=Quectel
      S:  Product=Quectel EM05-G
      C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
      I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=89(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
      E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      MBIM Mode
      --------------
      T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 16 Spd=480  MxCh= 0
      D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=2c7c ProdID=0314 Rev= 3.18
      S:  Manufacturer=Quectel
      S:  Product=Quectel EM05-G
      C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
      A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
      I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
      E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
      I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      Signed-off-by: default avatarDuke Xin(辛安文) <duke_xinanwen@163.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3f6319c7