Skip to content
Snippets Groups Projects
  1. Jan 25, 2023
    • Greg Kroah-Hartman's avatar
      Merge 4.14.304 into android-4.14-q · 455290f3
      Greg Kroah-Hartman authored
      
      Changes in 4.14.304
      	pNFS/filelayout: Fix coalescing test for single DS
      	net/ethtool/ioctl: return -EOPNOTSUPP if we have no phy stats
      	RDMA/srp: Move large values to a new enum for gcc13
      	f2fs: let's avoid panic if extent_tree is not created
      	nilfs2: fix general protection fault in nilfs_btree_insert()
      	xhci-pci: set the dma max_seg_size
      	usb: xhci: Check endpoint is valid before dereferencing it
      	prlimit: do_prlimit needs to have a speculation check
      	USB: serial: option: add Quectel EM05-G (GR) modem
      	USB: serial: option: add Quectel EM05-G (CS) modem
      	USB: serial: option: add Quectel EM05-G (RS) modem
      	USB: serial: option: add Quectel EC200U modem
      	USB: serial: option: add Quectel EM05CN (SG) modem
      	USB: serial: option: add Quectel EM05CN modem
      	USB: misc: iowarrior: fix up header size for USB_DEVICE_ID_CODEMERCS_IOW100
      	usb: core: hub: disable autosuspend for TI TUSB8041
      	USB: serial: cp210x: add SCALANCE LPE-9000 device id
      	usb: host: ehci-fsl: Fix module alias
      	usb: gadget: g_webcam: Send color matching descriptor per frame
      	usb: gadget: f_ncm: fix potential NULL ptr deref in ncm_bitrate()
      	usb-storage: apply IGNORE_UAS only for HIKSEMI MD202 on RTL9210
      	serial: pch_uart: Pass correct sg to dma_unmap_sg()
      	serial: atmel: fix incorrect baudrate setup
      	gsmi: fix null-deref in gsmi_get_variable
      	x86/fpu: Use _Alignof to avoid undefined behavior in TYPE_ALIGN
      	Linux 4.14.304
      
      Change-Id: I133848b8231ad687aa005258cd9563abac93fdce
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
      455290f3
  2. Jan 24, 2023
    • Greg Kroah-Hartman's avatar
    • YingChi Long's avatar
      x86/fpu: Use _Alignof to avoid undefined behavior in TYPE_ALIGN · 67c6d797
      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>
      67c6d797
    • Khazhismel Kumykov's avatar
      gsmi: fix null-deref in gsmi_get_variable · ee5763ef
      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>
      ee5763ef
    • Tobias Schramm's avatar
      serial: atmel: fix incorrect baudrate setup · 31fa3c5c
      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>
      31fa3c5c
    • Ilpo Järvinen's avatar
      serial: pch_uart: Pass correct sg to dma_unmap_sg() · 2fb5b94b
      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>
      2fb5b94b
    • Juhyung Park's avatar
      usb-storage: apply IGNORE_UAS only for HIKSEMI MD202 on RTL9210 · 8334e787
      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>
      8334e787
    • Maciej Żenczykowski's avatar
      usb: gadget: f_ncm: fix potential NULL ptr deref in ncm_bitrate() · fef6b296
      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>
      fef6b296
    • Daniel Scally's avatar
      usb: gadget: g_webcam: Send color matching descriptor per frame · ea6f2a3b
      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>
      ea6f2a3b
    • Alexander Stein's avatar
      usb: host: ehci-fsl: Fix module alias · b392b477
      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>
      b392b477
    • Michael Adler's avatar
      USB: serial: cp210x: add SCALANCE LPE-9000 device id · 371c694e
      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>
      371c694e
    • Flavio Suligoi's avatar
      usb: core: hub: disable autosuspend for TI TUSB8041 · 4aed7b3c
      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>
      4aed7b3c
    • Greg Kroah-Hartman's avatar
      USB: misc: iowarrior: fix up header size for USB_DEVICE_ID_CODEMERCS_IOW100 · 996952e9
      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>
      996952e9
    • Duke Xin(辛安文)'s avatar
      USB: serial: option: add Quectel EM05CN modem · b67375c6
      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>
      b67375c6
    • Duke Xin(辛安文)'s avatar
      USB: serial: option: add Quectel EM05CN (SG) modem · 6e0c0330
      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>
      6e0c0330
    • Ali Mirghasemi's avatar
      USB: serial: option: add Quectel EC200U modem · 272eb9bc
      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>
      272eb9bc
    • Duke Xin(辛安文)'s avatar
      USB: serial: option: add Quectel EM05-G (RS) modem · aadce0a9
      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>
      aadce0a9
    • Duke Xin(辛安文)'s avatar
      USB: serial: option: add Quectel EM05-G (CS) modem · 48cdeccc
      Duke Xin(辛安文) authored
      
      commit bb78654b upstream.
      
      The EM05-G (CS) 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=030C 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=030C 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>
      48cdeccc
    • Duke Xin(辛安文)'s avatar
      USB: serial: option: add Quectel EM05-G (GR) modem · f64feed6
      Duke Xin(辛安文) authored
      
      commit 6c331f32 upstream.
      
      The EM05-G (GR) 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=0313 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=0313 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>
      f64feed6
    • Greg Kroah-Hartman's avatar
      prlimit: do_prlimit needs to have a speculation check · 291a0395
      Greg Kroah-Hartman authored
      
      commit 73979060 upstream.
      
      do_prlimit() adds the user-controlled resource value to a pointer that
      will subsequently be dereferenced.  In order to help prevent this
      codepath from being used as a spectre "gadget" a barrier needs to be
      added after checking the range.
      
      Reported-by: default avatarJordy Zomer <jordyzomer@google.com>
      Tested-by: default avatarJordy Zomer <jordyzomer@google.com>
      Suggested-by: default avatarLinus Torvalds <torvalds@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      291a0395
    • Jimmy Hu's avatar
      usb: xhci: Check endpoint is valid before dereferencing it · 375be2dd
      Jimmy Hu authored
      
      commit e8fb5bc7 upstream.
      
      When the host controller is not responding, all URBs queued to all
      endpoints need to be killed. This can cause a kernel panic if we
      dereference an invalid endpoint.
      
      Fix this by using xhci_get_virt_ep() helper to find the endpoint and
      checking if the endpoint is valid before dereferencing it.
      
      [233311.853271] xhci-hcd xhci-hcd.1.auto: xHCI host controller not responding, assume dead
      [233311.853393] Unable to handle kernel NULL pointer dereference at virtual address 00000000000000e8
      
      [233311.853964] pc : xhci_hc_died+0x10c/0x270
      [233311.853971] lr : xhci_hc_died+0x1ac/0x270
      
      [233311.854077] Call trace:
      [233311.854085]  xhci_hc_died+0x10c/0x270
      [233311.854093]  xhci_stop_endpoint_command_watchdog+0x100/0x1a4
      [233311.854105]  call_timer_fn+0x50/0x2d4
      [233311.854112]  expire_timers+0xac/0x2e4
      [233311.854118]  run_timer_softirq+0x300/0xabc
      [233311.854127]  __do_softirq+0x148/0x528
      [233311.854135]  irq_exit+0x194/0x1a8
      [233311.854143]  __handle_domain_irq+0x164/0x1d0
      [233311.854149]  gic_handle_irq.22273+0x10c/0x188
      [233311.854156]  el1_irq+0xfc/0x1a8
      [233311.854175]  lpm_cpuidle_enter+0x25c/0x418 [msm_pm]
      [233311.854185]  cpuidle_enter_state+0x1f0/0x764
      [233311.854194]  do_idle+0x594/0x6ac
      [233311.854201]  cpu_startup_entry+0x7c/0x80
      [233311.854209]  secondary_start_kernel+0x170/0x198
      
      Fixes: 50e8725e ("xhci: Refactor command watchdog and fix split string.")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJimmy Hu <hhhuuu@google.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Message-ID: <0fe978ed-8269-9774-1c40-f8a98c17e838@linux.intel.com>
      Link: https://lore.kernel.org/r/20230116142216.1141605-3-mathias.nyman@linux.intel.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      375be2dd
    • Ricardo Ribalda's avatar
      xhci-pci: set the dma max_seg_size · 44f4b348
      Ricardo Ribalda authored
      
      commit 93915a41 upstream.
      
      Allow devices to have dma operations beyond 64K, and avoid warnings such
      as:
      
      xhci_hcd 0000:00:14.0: mapping sg segment longer than device claims to support [len=98304] [max=65536]
      
      Cc: stable@vger.kernel.org
      Cc: Takashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarRicardo Ribalda <ribalda@chromium.org>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20230116142216.1141605-2-mathias.nyman@linux.intel.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      44f4b348
    • Ryusuke Konishi's avatar
      nilfs2: fix general protection fault in nilfs_btree_insert() · 3c2a2ff6
      Ryusuke Konishi authored
      commit 7633355e upstream.
      
      If nilfs2 reads a corrupted disk image and tries to reads a b-tree node
      block by calling __nilfs_btree_get_block() against an invalid virtual
      block address, it returns -ENOENT because conversion of the virtual block
      address to a disk block address fails.  However, this return value is the
      same as the internal code that b-tree lookup routines return to indicate
      that the block being searched does not exist, so functions that operate on
      that b-tree may misbehave.
      
      When nilfs_btree_insert() receives this spurious 'not found' code from
      nilfs_btree_do_lookup(), it misunderstands that the 'not found' check was
      successful and continues the insert operation using incomplete lookup path
      data, causing the following crash:
      
       general protection fault, probably for non-canonical address
       0xdffffc0000000005: 0000 [#1] PREEMPT SMP KASAN
       KASAN: null-ptr-deref in range [0x0000000000000028-0x000000000000002f]
       ...
       RIP: 0010:nilfs_btree_get_nonroot_node fs/nilfs2/btree.c:418 [inline]
       RIP: 0010:nilfs_btree_prepare_insert fs/nilfs2/btree.c:1077 [inline]
       RIP: 0010:nilfs_btree_insert+0x6d3/0x1c10 fs/nilfs2/btree.c:1238
       Code: bc 24 80 00 00 00 4c 89 f8 48 c1 e8 03 42 80 3c 28 00 74 08 4c 89
       ff e8 4b 02 92 fe 4d 8b 3f 49 83 c7 28 4c 89 f8 48 c1 e8 03 <42> 80 3c
       28 00 74 08 4c 89 ff e8 2e 02 92 fe 4d 8b 3f 49 83 c7 02
       ...
       Call Trace:
       <TASK>
        nilfs_bmap_do_insert fs/nilfs2/bmap.c:121 [inline]
        nilfs_bmap_insert+0x20d/0x360 fs/nilfs2/bmap.c:147
        nilfs_get_block+0x414/0x8d0 fs/nilfs2/inode.c:101
        __block_write_begin_int+0x54c/0x1a80 fs/buffer.c:1991
        __block_write_begin fs/buffer.c:2041 [inline]
        block_write_begin+0x93/0x1e0 fs/buffer.c:2102
        nilfs_write_begin+0x9c/0x110 fs/nilfs2/inode.c:261
        generic_perform_write+0x2e4/0x5e0 mm/filemap.c:3772
        __generic_file_write_iter+0x176/0x400 mm/filemap.c:3900
        generic_file_write_iter+0xab/0x310 mm/filemap.c:3932
        call_write_iter include/linux/fs.h:2186 [inline]
        new_sync_write fs/read_write.c:491 [inline]
        vfs_write+0x7dc/0xc50 fs/read_write.c:584
        ksys_write+0x177/0x2a0 fs/read_write.c:637
        do_syscall_x64 arch/x86/entry/common.c:50 [inline]
        do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
        entry_SYSCALL_64_after_hwframe+0x63/0xcd
       ...
       </TASK>
      
      This patch fixes the root cause of this problem by replacing the error
      code that __nilfs_btree_get_block() returns on block address conversion
      failure from -ENOENT to another internal code -EINVAL which means that the
      b-tree metadata is corrupted.
      
      By returning -EINVAL, it propagates without glitches, and for all relevant
      b-tree operations, functions in the upper bmap layer output an error
      message indicating corrupted b-tree metadata via
      nilfs_bmap_convert_error(), and code -EIO will be eventually returned as
      it should be.
      
      Link: https://lkml.kernel.org/r/000000000000bd89e205f0e38355@google.com
      Link: https://lkml.kernel.org/r/20230105055356.8811-1-konishi.ryusuke@gmail.com
      
      
      Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@gmail.com>
      Reported-by: default avatar <syzbot+ede796cecd5296353515@syzkaller.appspotmail.com>
      Tested-by: default avatarRyusuke Konishi <konishi.ryusuke@gmail.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3c2a2ff6
    • Jaegeuk Kim's avatar
      f2fs: let's avoid panic if extent_tree is not created · dd83a976
      Jaegeuk Kim authored
      
      [ Upstream commit df9d44b6 ]
      
      This patch avoids the below panic.
      
      pc : __lookup_extent_tree+0xd8/0x760
      lr : f2fs_do_write_data_page+0x104/0x87c
      sp : ffffffc010cbb3c0
      x29: ffffffc010cbb3e0 x28: 0000000000000000
      x27: ffffff8803e7f020 x26: ffffff8803e7ed40
      x25: ffffff8803e7f020 x24: ffffffc010cbb460
      x23: ffffffc010cbb480 x22: 0000000000000000
      x21: 0000000000000000 x20: ffffffff22e90900
      x19: 0000000000000000 x18: ffffffc010c5d080
      x17: 0000000000000000 x16: 0000000000000020
      x15: ffffffdb1acdbb88 x14: ffffff888759e2b0
      x13: 0000000000000000 x12: ffffff802da49000
      x11: 000000000a001200 x10: ffffff8803e7ed40
      x9 : ffffff8023195800 x8 : ffffff802da49078
      x7 : 0000000000000001 x6 : 0000000000000000
      x5 : 0000000000000006 x4 : ffffffc010cbba28
      x3 : 0000000000000000 x2 : ffffffc010cbb480
      x1 : 0000000000000000 x0 : ffffff8803e7ed40
      Call trace:
       __lookup_extent_tree+0xd8/0x760
       f2fs_do_write_data_page+0x104/0x87c
       f2fs_write_single_data_page+0x420/0xb60
       f2fs_write_cache_pages+0x418/0xb1c
       __f2fs_write_data_pages+0x428/0x58c
       f2fs_write_data_pages+0x30/0x40
       do_writepages+0x88/0x190
       __writeback_single_inode+0x48/0x448
       writeback_sb_inodes+0x468/0x9e8
       __writeback_inodes_wb+0xb8/0x2a4
       wb_writeback+0x33c/0x740
       wb_do_writeback+0x2b4/0x400
       wb_workfn+0xe4/0x34c
       process_one_work+0x24c/0x5bc
       worker_thread+0x3e8/0xa50
       kthread+0x150/0x1b4
      
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      dd83a976
    • Jiri Slaby (SUSE)'s avatar
      RDMA/srp: Move large values to a new enum for gcc13 · bf9db115
      Jiri Slaby (SUSE) authored
      [ Upstream commit 56c5dab2 ]
      
      Since gcc13, each member of an enum has the same type as the enum [1]. And
      that is inherited from its members. Provided these two:
        SRP_TAG_NO_REQ        = ~0U,
        SRP_TAG_TSK_MGMT	= 1U << 31
      all other members are unsigned ints.
      
      Esp. with SRP_MAX_SGE and SRP_TSK_MGMT_SQ_SIZE and their use in min(),
      this results in the following warnings:
        include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast
        drivers/infiniband/ulp/srp/ib_srp.c:563:42: note: in expansion of macro 'min'
      
        include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast
        drivers/infiniband/ulp/srp/ib_srp.c:2369:27: note: in expansion of macro 'min'
      
      So move the large values away to a separate enum, so that they don't
      affect other members.
      
      [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36113
      
      Link: https://lore.kernel.org/r/20221212120411.13750-1-jirislaby@kernel.org
      
      
      Signed-off-by: default avatarJiri Slaby (SUSE) <jirislaby@kernel.org>
      Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      bf9db115
    • Daniil Tatianin's avatar
      net/ethtool/ioctl: return -EOPNOTSUPP if we have no phy stats · 5d71531e
      Daniil Tatianin authored
      
      [ Upstream commit 9deb1e9f ]
      
      It's not very useful to copy back an empty ethtool_stats struct and
      return 0 if we didn't actually have any stats. This also allows for
      further simplification of this function in the future commits.
      
      Signed-off-by: default avatarDaniil Tatianin <d-tatianin@yandex-team.ru>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      5d71531e
    • Olga Kornievskaia's avatar
      pNFS/filelayout: Fix coalescing test for single DS · 9bf15159
      Olga Kornievskaia authored
      
      [ Upstream commit a6b9d2fa ]
      
      When there is a single DS no striping constraints need to be placed on
      the IO. When such constraint is applied then buffered reads don't
      coalesce to the DS's rsize.
      
      Signed-off-by: default avatarOlga Kornievskaia <kolga@netapp.com>
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      9bf15159
  3. Jan 23, 2023
    • Lee Jones's avatar
      ANDROID: usb: f_accessory: Check buffer size when initialised via composite · 6e193ecd
      Lee Jones authored
      
      When communicating with accessory devices via USBFS, the initialisation
      call-stack looks like:
      
        ConfigFS > Gadget ConfigFS > UDC > Gadget ConfigFS > Composite
      
      Eventually ending up in composite_dev_prepare() where memory for the
      data buffer is allocated and initialised.  The default size used for the
      allocation is USB_COMP_EP0_BUFSIZ (4k).  When handling bulk transfers,
      acc_ctrlrequest() needs to be able to handle buffers up to
      BULK_BUFFER_SIZE (16k).  Instead of adding new generic attributes to
      'struct usb_request' to track the size of the allocated buffer, we can
      simply split off the affected thread of execution to travel via a
      knowledgeable abstracted function acc_ctrlrequest_composite() where we
      can complete the necessary specific checks.
      
      Bug: 264029575
      Signed-off-by: default avatarLee Jones <joneslee@google.com>
      Change-Id: Ia1280f85499621d3fa57f7262b4a2c80f4be7773
      Signed-off-by: default avatarLee Jones <joneslee@google.com>
      6e193ecd
  4. Jan 18, 2023
    • Greg Kroah-Hartman's avatar
      Merge 4.14.303 into android-4.14-q · dbe070cd
      Greg Kroah-Hartman authored
      
      Changes in 4.14.303
      	libtraceevent: Fix build with binutils 2.35
      	once: add DO_ONCE_SLOW() for sleepable contexts
      	mm/khugepaged: fix GUP-fast interaction by sending IPI
      	mm/khugepaged: invoke MMU notifiers in shmem/file collapse paths
      	block: unhash blkdev part inode when the part is deleted
      	nfp: fix use-after-free in area_cache_get()
      	ASoC: ops: Check bounds for second channel in snd_soc_put_volsw_sx()
      	can: sja1000: fix size of OCR_MODE_MASK define
      	can: mcba_usb: Fix termination command argument
      	ASoC: ops: Correct bounds check for second channel on SX controls
      	perf script python: Remove explicit shebang from tests/attr.c
      	udf: Discard preallocation before extending file with a hole
      	udf: Drop unused arguments of udf_delete_aext()
      	udf: Fix preallocation discarding at indirect extent boundary
      	udf: Do not bother looking for prealloc extents if i_lenExtents matches i_size
      	udf: Fix extending file within last block
      	usb: gadget: uvc: Prevent buffer overflow in setup handler
      	USB: serial: option: add Quectel EM05-G modem
      	USB: serial: cp210x: add Kamstrup RF sniffer PIDs
      	igb: Initialize mailbox message for VF reset
      	Bluetooth: L2CAP: Fix u8 overflow
      	net: loopback: use NET_NAME_PREDICTABLE for name_assign_type
      	usb: musb: remove extra check in musb_gadget_vbus_draw
      	ARM: dts: qcom: apq8064: fix coresight compatible
      	drivers: soc: ti: knav_qmss_queue: Mark knav_acc_firmwares as static
      	arm: dts: spear600: Fix clcd interrupt
      	soc: ti: smartreflex: Fix PM disable depth imbalance in omap_sr_probe
      	arm64: dts: mediatek: mt6797: Fix 26M oscillator unit name
      	ARM: dts: dove: Fix assigned-addresses for every PCIe Root Port
      	ARM: dts: armada-370: Fix assigned-addresses for every PCIe Root Port
      	ARM: dts: armada-xp: Fix assigned-addresses for every PCIe Root Port
      	ARM: dts: armada-375: Fix assigned-addresses for every PCIe Root Port
      	ARM: dts: armada-38x: Fix assigned-addresses for every PCIe Root Port
      	ARM: dts: armada-39x: Fix assigned-addresses for every PCIe Root Port
      	ARM: dts: turris-omnia: Add ethernet aliases
      	ARM: dts: turris-omnia: Add switch port 6 node
      	pstore/ram: Fix error return code in ramoops_probe()
      	ARM: mmp: fix timer_read delay
      	pstore: Avoid kcore oops by vmap()ing with VM_IOREMAP
      	tpm/tpm_crb: Fix error message in __crb_relinquish_locality()
      	cpuidle: dt: Return the correct numbers of parsed idle states
      	alpha: fix syscall entry in !AUDUT_SYSCALL case
      	PM: hibernate: Fix mistake in kerneldoc comment
      	fs: don't audit the capability check in simple_xattr_list()
      	perf: Fix possible memleak in pmu_dev_alloc()
      	timerqueue: Use rb_entry_safe() in timerqueue_getnext()
      	ocfs2: fix memory leak in ocfs2_stack_glue_init()
      	MIPS: vpe-mt: fix possible memory leak while module exiting
      	MIPS: vpe-cmp: fix possible memory leak while module exiting
      	PNP: fix name memory leak in pnp_alloc_dev()
      	irqchip: gic-pm: Use pm_runtime_resume_and_get() in gic_probe()
      	libfs: add DEFINE_SIMPLE_ATTRIBUTE_SIGNED for signed value
      	lib/notifier-error-inject: fix error when writing -errno to debugfs file
      	rapidio: fix possible name leaks when rio_add_device() fails
      	rapidio: rio: fix possible name leak in rio_register_mport()
      	ACPICA: Fix use-after-free in acpi_ut_copy_ipackage_to_ipackage()
      	uprobes/x86: Allow to probe a NOP instruction with 0x66 prefix
      	x86/xen: Fix memory leak in xen_init_lock_cpu()
      	platform/x86: mxm-wmi: fix memleak in mxm_wmi_call_mx[ds|mx]()
      	MIPS: BCM63xx: Add check for NULL for clk in clk_enable
      	fs: sysv: Fix sysv_nblocks() returns wrong value
      	rapidio: fix possible UAF when kfifo_alloc() fails
      	eventfd: change int to __u64 in eventfd_signal() ifndef CONFIG_EVENTFD
      	hfs: Fix OOB Write in hfs_asc2mac
      	rapidio: devices: fix missing put_device in mport_cdev_open
      	wifi: ath9k: hif_usb: fix memory leak of urbs in ath9k_hif_usb_dealloc_tx_urbs()
      	wifi: ath9k: hif_usb: Fix use-after-free in ath9k_hif_usb_reg_in_cb()
      	media: i2c: ad5820: Fix error path
      	spi: Update reference to struct spi_controller
      	media: vivid: fix compose size exceed boundary
      	mtd: Fix device name leak when register device failed in add_mtd_device()
      	media: camss: Clean up received buffers on failed start of streaming
      	drm/radeon: Add the missed acpi_put_table() to fix memory leak
      	ASoC: pxa: fix null-pointer dereference in filter()
      	regulator: core: fix unbalanced of node refcount in regulator_dev_lookup()
      	ima: Fix misuse of dereference of pointer in template_desc_init_fields()
      	wifi: ath10k: Fix return value in ath10k_pci_init()
      	mtd: lpddr2_nvm: Fix possible null-ptr-deref
      	Input: elants_i2c - properly handle the reset GPIO when power is off
      	media: solo6x10: fix possible memory leak in solo_sysfs_init()
      	media: platform: exynos4-is: Fix error handling in fimc_md_init()
      	HID: hid-sensor-custom: set fixed size for custom attributes
      	ALSA: seq: fix undefined behavior in bit shift for SNDRV_SEQ_FILTER_USE_EVENT
      	clk: rockchip: Fix memory leak in rockchip_clk_register_pll()
      	mtd: maps: pxa2xx-flash: fix memory leak in probe
      	media: imon: fix a race condition in send_packet()
      	pinctrl: pinconf-generic: add missing of_node_put()
      	media: dvb-usb: az6027: fix null-ptr-deref in az6027_i2c_xfer()
      	media: s5p-mfc: Add variant data for MFC v7 hardware for Exynos 3250 SoC
      	NFSv4.2: Fix a memory stomp in decode_attr_security_label
      	NFSv4: Fix a deadlock between nfs4_open_recover_helper() and delegreturn
      	ALSA: asihpi: fix missing pci_disable_device()
      	drm/radeon: Fix PCI device refcount leak in radeon_atrm_get_bios()
      	drm/amdgpu: Fix PCI device refcount leak in amdgpu_atrm_get_bios()
      	ASoC: pcm512x: Fix PM disable depth imbalance in pcm512x_probe
      	bonding: uninitialized variable in bond_miimon_inspect()
      	regulator: core: fix module refcount leak in set_supply()
      	media: saa7164: fix missing pci_disable_device()
      	ALSA: mts64: fix possible null-ptr-defer in snd_mts64_interrupt
      	SUNRPC: Fix missing release socket in rpc_sockname()
      	NFSv4.x: Fail client initialisation if state manager thread can't run
      	mmc: moxart: fix return value check of mmc_add_host()
      	mmc: mxcmmc: fix return value check of mmc_add_host()
      	mmc: rtsx_usb_sdmmc: fix return value check of mmc_add_host()
      	mmc: toshsd: fix return value check of mmc_add_host()
      	mmc: vub300: fix return value check of mmc_add_host()
      	mmc: wmt-sdmmc: fix return value check of mmc_add_host()
      	mmc: via-sdmmc: fix return value check of mmc_add_host()
      	mmc: wbsd: fix return value check of mmc_add_host()
      	mmc: mmci: fix return value check of mmc_add_host()
      	media: c8sectpfe: Add of_node_put() when breaking out of loop
      	media: coda: Add check for dcoda_iram_alloc
      	media: coda: Add check for kmalloc
      	clk: samsung: Fix memory leak in _samsung_clk_register_pll()
      	wifi: rtl8xxxu: Add __packed to struct rtl8723bu_c2h
      	wifi: brcmfmac: Fix error return code in brcmf_sdio_download_firmware()
      	blktrace: Fix output non-blktrace event when blk_classic option enabled
      	net: vmw_vsock: vmci: Check memcpy_from_msg()
      	net: defxx: Fix missing err handling in dfx_init()
      	drivers: net: qlcnic: Fix potential memory leak in qlcnic_sriov_init()
      	ethernet: s2io: don't call dev_kfree_skb() under spin_lock_irqsave()
      	net: farsync: Fix kmemleak when rmmods farsync
      	net/tunnel: wait until all sk_user_data reader finish before releasing the sock
      	net: apple: mace: don't call dev_kfree_skb() under spin_lock_irqsave()
      	net: apple: bmac: don't call dev_kfree_skb() under spin_lock_irqsave()
      	net: emaclite: don't call dev_kfree_skb() under spin_lock_irqsave()
      	net: ethernet: dnet: don't call dev_kfree_skb() under spin_lock_irqsave()
      	hamradio: don't call dev_kfree_skb() under spin_lock_irqsave()
      	net: amd: lance: don't call dev_kfree_skb() under spin_lock_irqsave()
      	net: amd-xgbe: Check only the minimum speed for active/passive cables
      	net: lan9303: Fix read error execution path
      	ntb_netdev: Use dev_kfree_skb_any() in interrupt context
      	Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave()
      	Bluetooth: hci_qca: don't call kfree_skb() under spin_lock_irqsave()
      	Bluetooth: hci_h5: don't call kfree_skb() under spin_lock_irqsave()
      	Bluetooth: hci_bcsp: don't call kfree_skb() under spin_lock_irqsave()
      	Bluetooth: hci_core: don't call kfree_skb() under spin_lock_irqsave()
      	Bluetooth: RFCOMM: don't call kfree_skb() under spin_lock_irqsave()
      	stmmac: fix potential division by 0
      	apparmor: fix a memleak in multi_transaction_new()
      	PCI: Check for alloc failure in pci_request_irq()
      	RDMA/hfi: Decrease PCI device reference count in error path
      	RDMA/rxe: Fix NULL-ptr-deref in rxe_qp_do_cleanup() when socket create failed
      	scsi: hpsa: Fix error handling in hpsa_add_sas_host()
      	scsi: hpsa: Fix possible memory leak in hpsa_add_sas_device()
      	scsi: fcoe: Fix possible name leak when device_register() fails
      	scsi: ipr: Fix WARNING in ipr_init()
      	scsi: fcoe: Fix transport not deattached when fcoe_if_init() fails
      	scsi: snic: Fix possible UAF in snic_tgt_create()
      	RDMA/hfi1: Fix error return code in parse_platform_config()
      	orangefs: Fix sysfs not cleanup when dev init failed
      	crypto: img-hash - Fix variable dereferenced before check 'hdev->req'
      	hwrng: amd - Fix PCI device refcount leak
      	hwrng: geode - Fix PCI device refcount leak
      	IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces
      	drivers: dio: fix possible memory leak in dio_init()
      	class: fix possible memory leak in __class_register()
      	vfio: platform: Do not pass return buffer to ACPI _RST method
      	uio: uio_dmem_genirq: Fix missing unlock in irq configuration
      	uio: uio_dmem_genirq: Fix deadlock between irq config and handling
      	usb: fotg210-udc: Fix ages old endianness issues
      	staging: vme_user: Fix possible UAF in tsi148_dma_list_add
      	serial: amba-pl011: avoid SBSA UART accessing DMACR register
      	serial: pch: Fix PCI device refcount leak in pch_request_dma()
      	serial: sunsab: Fix error handling in sunsab_init()
      	test_firmware: fix memory leak in test_firmware_init()
      	misc: tifm: fix possible memory leak in tifm_7xx1_switch_media()
      	misc: sgi-gru: fix use-after-free error in gru_set_context_option, gru_fault and gru_handle_user_call_os
      	cxl: fix possible null-ptr-deref in cxl_guest_init_afu|adapter()
      	cxl: fix possible null-ptr-deref in cxl_pci_init_afu|adapter()
      	drivers: mcb: fix resource leak in mcb_probe()
      	mcb: mcb-parse: fix error handing in chameleon_parse_gdd()
      	chardev: fix error handling in cdev_device_add()
      	i2c: pxa-pci: fix missing pci_disable_device() on error in ce4100_i2c_probe
      	staging: rtl8192u: Fix use after free in ieee80211_rx()
      	staging: rtl8192e: Fix potential use-after-free in rtllib_rx_Monitor()
      	vme: Fix error not catched in fake_init()
      	i2c: ismt: Fix an out-of-bounds bug in ismt_access()
      	usb: storage: Add check for kcalloc
      	fbdev: ssd1307fb: Drop optional dependency
      	fbdev: pm2fb: fix missing pci_disable_device()
      	fbdev: via: Fix error in via_core_init()
      	fbdev: vermilion: decrease reference count in error path
      	fbdev: uvesafb: Fixes an error handling path in uvesafb_probe()
      	HSI: omap_ssi_core: fix unbalanced pm_runtime_disable()
      	HSI: omap_ssi_core: fix possible memory leak in ssi_probe()
      	power: supply: fix residue sysfs file in error handle route of __power_supply_register()
      	HSI: omap_ssi_core: Fix error handling in ssi_init()
      	include/uapi/linux/swab: Fix potentially missing __always_inline
      	rtc: snvs: Allow a time difference on clock register read
      	iommu/amd: Fix pci device refcount leak in ppr_notifier()
      	iommu/fsl_pamu: Fix resource leak in fsl_pamu_probe()
      	macintosh: fix possible memory leak in macio_add_one_device()
      	macintosh/macio-adb: check the return value of ioremap()
      	powerpc/52xx: Fix a resource leak in an error handling path
      	cxl: Fix refcount leak in cxl_calc_capp_routing
      	powerpc/xive: add missing iounmap() in error path in xive_spapr_populate_irq_data()
      	powerpc/perf: callchain validate kernel stack pointer bounds
      	powerpc/83xx/mpc832x_rdb: call platform_device_put() in error case in of_fsl_spi_probe()
      	powerpc/hv-gpci: Fix hv_gpci event list
      	selftests/powerpc: Fix resource leaks
      	rtc: st-lpc: Add missing clk_disable_unprepare in st_rtc_probe()
      	nfsd: under NFSv4.1, fix double svc_xprt_put on rpc_create failure
      	mISDN: hfcsusb: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
      	mISDN: hfcpci: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
      	mISDN: hfcmulti: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
      	nfc: pn533: Clear nfc_target before being used
      	r6040: Fix kmemleak in probe and remove
      	openvswitch: Fix flow lookup to use unmasked key
      	skbuff: Account for tail adjustment during pull operations
      	net_sched: reject TCF_EM_SIMPLE case for complex ematch module
      	myri10ge: Fix an error handling path in myri10ge_probe()
      	net: stream: purge sk_error_queue in sk_stream_kill_queues()
      	binfmt_misc: fix shift-out-of-bounds in check_special_flags
      	fs: jfs: fix shift-out-of-bounds in dbAllocAG
      	udf: Avoid double brelse() in udf_rename()
      	fs: jfs: fix shift-out-of-bounds in dbDiscardAG
      	ACPICA: Fix error code path in acpi_ds_call_control_method()
      	nilfs2: fix shift-out-of-bounds/overflow in nilfs_sb2_bad_offset()
      	acct: fix potential integer overflow in encode_comp_t()
      	hfs: fix OOB Read in __hfs_brec_find
      	wifi: ath9k: verify the expected usb_endpoints are present
      	wifi: ar5523: Fix use-after-free on ar5523_cmd() timed out
      	ASoC: codecs: rt298: Add quirk for KBL-R RVP platform
      	ipmi: fix memleak when unload ipmi driver
      	bpf: make sure skb->len != 0 when redirecting to a tunneling device
      	net: ethernet: ti: Fix return type of netcp_ndo_start_xmit()
      	hamradio: baycom_epp: Fix return type of baycom_send_packet()
      	wifi: brcmfmac: Fix potential shift-out-of-bounds in brcmf_fw_alloc_request()
      	igb: Do not free q_vector unless new one was allocated
      	s390/ctcm: Fix return type of ctc{mp,}m_tx()
      	s390/netiucv: Fix return type of netiucv_tx()
      	s390/lcs: Fix return type of lcs_start_xmit()
      	drm/sti: Use drm_mode_copy()
      	md/raid1: stop mdx_raid1 thread when raid1 array run failed
      	mrp: introduce active flags to prevent UAF when applicant uninit
      	ppp: associate skb with a device at tx
      	media: dvb-frontends: fix leak of memory fw
      	media: dvbdev: adopts refcnt to avoid UAF
      	media: dvb-usb: fix memory leak in dvb_usb_adapter_init()
      	blk-mq: fix possible memleak when register 'hctx' failed
      	mmc: f-sdh30: Add quirks for broken timeout clock capability
      	media: si470x: Fix use-after-free in si470x_int_in_callback()
      	clk: st: Fix memory leak in st_of_quadfs_setup()
      	drm/fsl-dcu: Fix return type of fsl_dcu_drm_connector_mode_valid()
      	drm/sti: Fix return type of sti_{dvo,hda,hdmi}_connector_mode_valid()
      	orangefs: Fix kmemleak in orangefs_prepare_debugfs_help_string()
      	ASoC: mediatek: mt8173-rt5650-rt5514: fix refcount leak in mt8173_rt5650_rt5514_dev_probe()
      	ASoC: rockchip: pdm: Add missing clk_disable_unprepare() in rockchip_pdm_runtime_resume()
      	ASoC: wm8994: Fix potential deadlock
      	ASoC: rockchip: spdif: Add missing clk_disable_unprepare() in rk_spdif_runtime_resume()
      	ASoC: rt5670: Remove unbalanced pm_runtime_put()
      	pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion
      	pstore: Make sure CONFIG_PSTORE_PMSG selects CONFIG_RT_MUTEXES
      	usb: dwc3: core: defer probe on ulpi_read_id timeout
      	HID: wacom: Ensure bootloader PID is usable in hidraw mode
      	reiserfs: Add missing calls to reiserfs_security_free()
      	iio: adc: ad_sigma_delta: do not use internal iio_dev lock
      	gcov: add support for checksum field
      	media: dvbdev: fix refcnt bug
      	powerpc/rtas: avoid device tree lookups in rtas_os_term()
      	powerpc/rtas: avoid scheduling in rtas_os_term()
      	HID: plantronics: Additional PIDs for double volume key presses quirk
      	hfsplus: fix bug causing custom uid and gid being unable to be assigned with mount
      	ALSA: line6: correct midi status byte when receiving data from podxt
      	ALSA: line6: fix stack overflow in line6_midi_transmit
      	pnode: terminate at peers of source
      	md: fix a crash in mempool_free
      	mmc: vub300: fix warning - do not call blocking ops when !TASK_RUNNING
      	tpm: tpm_crb: Add the missed acpi_put_table() to fix memory leak
      	tpm: tpm_tis: Add the missed acpi_put_table() to fix memory leak
      	media: stv0288: use explicitly signed char
      	ktest.pl minconfig: Unset configs instead of just removing them
      	ARM: ux500: do not directly dereference __iomem
      	selftests: Use optional USERCFLAGS and USERLDFLAGS
      	dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort
      	dm thin: Use last transaction's pmd->root when commit failed
      	dm thin: Fix UAF in run_timer_softirq()
      	dm cache: Fix UAF in destroy()
      	dm cache: set needs_check flag after aborting metadata
      	x86/microcode/intel: Do not retry microcode reloading on the APs
      	tracing: Fix infinite loop in tracing_read_pipe on overflowed print_trace_line
      	ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod
      	media: dvb-core: Fix double free in dvb_register_device()
      	media: dvb-core: Fix UAF due to refcount races at releasing
      	cifs: fix confusing debug message
      	ima: Fix a potential NULL pointer access in ima_restore_measurement_list
      	PCI: Fix pci_device_is_present() for VFs by checking PF
      	PCI/sysfs: Fix double free in error path
      	crypto: n2 - add missing hash statesize
      	iommu/amd: Fix ivrs_acpihid cmdline parsing code
      	parisc: led: Fix potential null-ptr-deref in start_task()
      	device_cgroup: Roll back to original exceptions after copy failure
      	drm/connector: send hotplug uevent on connector cleanup
      	drm/vmwgfx: Validate the box size for the snooped cursor
      	ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
      	ext4: fix undefined behavior in bit shift for ext4_check_flag_values
      	ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
      	ext4: init quota for 'old.inode' in 'ext4_rename'
      	ext4: fix error code return to user-space in ext4_get_branch()
      	ext4: avoid BUG_ON when creating xattrs
      	ext4: fix inode leak in ext4_xattr_inode_create() on an error path
      	ext4: initialize quota before expanding inode in setproject ioctl
      	ext4: avoid unaccounted block allocation when expanding inode
      	ext4: allocate extended attribute value in vmalloc area
      	SUNRPC: ensure the matching upcall is in-flight upon downcall
      	bpf: pull before calling skb_postpull_rcsum()
      	qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure
      	nfc: Fix potential resource leaks
      	net: amd-xgbe: add missed tasklet_kill
      	net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe
      	net: sched: atm: dont intepret cls results when asked to drop
      	usb: rndis_host: Secure rndis_query check against int overflow
      	caif: fix memory leak in cfctrl_linkup_request()
      	udf: Fix extension of the last extent in the file
      	x86/bugs: Flush IBP in ib_prctl_set()
      	nfsd: fix handling of readdir in v4root vs. mount upcall timeout
      	hfs/hfsplus: use WARN_ON for sanity check
      	hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling
      	parisc: Align parisc MADV_XXX constants with all other architectures
      	driver core: Fix bus_type.match() error handling in __driver_attach()
      	ravb: Fix "failed to switch device to config mode" message during unbind
      	net: sched: disallow noqueue for qdisc classes
      	docs: Fix the docs build with Sphinx 6.0
      	perf auxtrace: Fix address filter duplicate symbol selection
      	s390/percpu: add READ_ONCE() to arch_this_cpu_to_op_simple()
      	net/ulp: prevent ULP without clone op from entering the LISTEN status
      	ALSA: pcm: Move rwsem lock inside snd_ctl_elem_read to prevent UAF
      	platform/x86: sony-laptop: Don't turn off 0x153 keyboard backlight during probe
      	ipv6: raw: Deduct extension header length in rawv6_push_pending_frames
      	netfilter: ipset: Fix overflow before widen in the bitmap_ip_create() function.
      	x86/boot: Avoid using Intel mnemonics in AT&T syntax asm
      	EDAC/device: Fix period calculation in edac_device_reset_delay_period()
      	regulator: da9211: Use irq handler when ready
      	hvc/xen: lock console list traversal
      	nfc: pn533: Wait for out_urb's completion in pn533_usb_send_frame()
      	Revert "usb: ulpi: defer ulpi_register on ulpi_read_id timeout"
      	Linux 4.14.303
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
      Change-Id: I8000c1b61939d2fe9bb1e5afe3291f7857bddc68
      dbe070cd
    • Greg Kroah-Hartman's avatar
    • Ferry Toth's avatar
      Revert "usb: ulpi: defer ulpi_register on ulpi_read_id timeout" · 3fc58352
      Ferry Toth authored
      commit b659b613 upstream.
      
      This reverts commit 8a7b31d5.
      
      This patch results in some qemu test failures, specifically xilinx-zynq-a9
      machine and zynq-zc702 as well as zynq-zed devicetree files, when trying
      to boot from USB drive.
      
      Link: https://lore.kernel.org/lkml/20221220194334.GA942039@roeck-us.net/
      
      
      Fixes: 8a7b31d5 ("usb: ulpi: defer ulpi_register on ulpi_read_id timeout")
      Cc: stable@vger.kernel.org
      Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarFerry Toth <ftoth@exalondelft.nl>
      Link: https://lore.kernel.org/r/20221222205302.45761-1-ftoth@exalondelft.nl
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3fc58352
    • Minsuk Kang's avatar
      nfc: pn533: Wait for out_urb's completion in pn533_usb_send_frame() · 35529d6b
      Minsuk Kang authored
      
      [ Upstream commit 9dab880d ]
      
      Fix a use-after-free that occurs in hcd when in_urb sent from
      pn533_usb_send_frame() is completed earlier than out_urb. Its callback
      frees the skb data in pn533_send_async_complete() that is used as a
      transfer buffer of out_urb. Wait before sending in_urb until the
      callback of out_urb is called. To modify the callback of out_urb alone,
      separate the complete function of out_urb and ack_urb.
      
      Found by a modified version of syzkaller.
      
      BUG: KASAN: use-after-free in dummy_timer
      Call Trace:
       memcpy (mm/kasan/shadow.c:65)
       dummy_perform_transfer (drivers/usb/gadget/udc/dummy_hcd.c:1352)
       transfer (drivers/usb/gadget/udc/dummy_hcd.c:1453)
       dummy_timer (drivers/usb/gadget/udc/dummy_hcd.c:1972)
       arch_static_branch (arch/x86/include/asm/jump_label.h:27)
       static_key_false (include/linux/jump_label.h:207)
       timer_expire_exit (include/trace/events/timer.h:127)
       call_timer_fn (kernel/time/timer.c:1475)
       expire_timers (kernel/time/timer.c:1519)
       __run_timers (kernel/time/timer.c:1790)
       run_timer_softirq (kernel/time/timer.c:1803)
      
      Fixes: c46ee386 ("NFC: pn533: add NXP pn533 nfc device driver")
      Signed-off-by: default avatarMinsuk Kang <linuxlovemin@yonsei.ac.kr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      35529d6b
    • Roger Pau Monne's avatar
      hvc/xen: lock console list traversal · db218d31
      Roger Pau Monne authored
      
      [ Upstream commit c0dccad8 ]
      
      The currently lockless access to the xen console list in
      vtermno_to_xencons() is incorrect, as additions and removals from the
      list can happen anytime, and as such the traversal of the list to get
      the private console data for a given termno needs to happen with the
      lock held.  Note users that modify the list already do so with the
      lock taken.
      
      Adjust current lock takers to use the _irq{save,restore} helpers,
      since the context in which vtermno_to_xencons() is called can have
      interrupts disabled.  Use the _irq{save,restore} set of helpers to
      switch the current callers to disable interrupts in the locked region.
      I haven't checked if existing users could instead use the _irq
      variant, as I think it's safer to use _irq{save,restore} upfront.
      
      While there switch from using list_for_each_entry_safe to
      list_for_each_entry: the current entry cursor won't be removed as
      part of the code in the loop body, so using the _safe variant is
      pointless.
      
      Fixes: 02e19f9c ('hvc_xen: implement multiconsole support')
      Signed-off-by: default avatarRoger Pau Monné <roger.pau@citrix.com>
      Reviewed-by: default avatarStefano Stabellini <sstabellini@kernel.org>
      Link: https://lore.kernel.org/r/20221130163611.14686-1-roger.pau@citrix.com
      
      
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      db218d31
    • Ricardo Ribalda's avatar
      regulator: da9211: Use irq handler when ready · 1c1afcb8
      Ricardo Ribalda authored
      
      [ Upstream commit 02228f6a ]
      
      If the system does not come from reset (like when it is kexec()), the
      regulator might have an IRQ waiting for us.
      
      If we enable the IRQ handler before its structures are ready, we crash.
      
      This patch fixes:
      
      [    1.141839] Unable to handle kernel read from unreadable memory at virtual address 0000000000000078
      [    1.316096] Call trace:
      [    1.316101]  blocking_notifier_call_chain+0x20/0xa8
      [    1.322757] cpu cpu0: dummy supplies not allowed for exclusive requests
      [    1.327823]  regulator_notifier_call_chain+0x1c/0x2c
      [    1.327825]  da9211_irq_handler+0x68/0xf8
      [    1.327829]  irq_thread+0x11c/0x234
      [    1.327833]  kthread+0x13c/0x154
      
      Signed-off-by: default avatarRicardo Ribalda <ribalda@chromium.org>
      Reviewed-by: default avatarAdam Ward <DLG-Adam.Ward.opensource@dm.renesas.com>
      Link: https://lore.kernel.org/r/20221124-da9211-v2-0-1779e3c5d491@chromium.org
      
      
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      1c1afcb8
    • Eliav Farber's avatar
      EDAC/device: Fix period calculation in edac_device_reset_delay_period() · dd187d7e
      Eliav Farber authored
      
      commit e8407743 upstream.
      
      Fix period calculation in case user sets a value of 1000.  The input of
      round_jiffies_relative() should be in jiffies and not in milli-seconds.
      
        [ bp: Use the same code pattern as in edac_device_workq_setup() for
          clarity. ]
      
      Fixes: c4cf3b45 ("EDAC: Rework workqueue handling")
      Signed-off-by: default avatarEliav Farber <farbere@amazon.com>
      Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
      Cc: <stable@kernel.org>
      Link: https://lore.kernel.org/r/20221020124458.22153-1-farbere@amazon.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      dd187d7e
    • Peter Zijlstra's avatar
      x86/boot: Avoid using Intel mnemonics in AT&T syntax asm · 64088899
      Peter Zijlstra authored
      commit 7c6dd961 upstream.
      
      With 'GNU assembler (GNU Binutils for Debian) 2.39.90.20221231' the
      build now reports:
      
        arch/x86/realmode/rm/../../boot/bioscall.S: Assembler messages:
        arch/x86/realmode/rm/../../boot/bioscall.S:35: Warning: found `movsd'; assuming `movsl' was meant
        arch/x86/realmode/rm/../../boot/bioscall.S:70: Warning: found `movsd'; assuming `movsl' was meant
      
        arch/x86/boot/bioscall.S: Assembler messages:
        arch/x86/boot/bioscall.S:35: Warning: found `movsd'; assuming `movsl' was meant
        arch/x86/boot/bioscall.S:70: Warning: found `movsd'; assuming `movsl' was meant
      
      Which is due to:
      
        PR gas/29525
      
        Note that with the dropped CMPSD and MOVSD Intel Syntax string insn
        templates taking operands, mixed IsString/non-IsString template groups
        (with memory operands) cannot occur anymore. With that
        maybe_adjust_templates() becomes unnecessary (and is hence being
        removed).
      
      More details: https://sourceware.org/bugzilla/show_bug.cgi?id=29525
      
      
      
      Borislav Petkov further explains:
      
        " the particular problem here is is that the 'd' suffix is
          "conflicting" in the sense that you can have SSE mnemonics like movsD %xmm...
          and the same thing also for string ops (which is the case here) so apparently
          the agreement in binutils land is to use the always accepted suffixes 'l' or 'q'
          and phase out 'd' slowly... "
      
      Fixes: 7a734e7d ("x86, setup: "glove box" BIOS calls -- infrastructure")
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Acked-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
      Link: https://lore.kernel.org/r/Y71I3Ex2pvIxMpsP@hirez.programming.kicks-ass.net
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      64088899
    • Gavrilov Ilia's avatar
      netfilter: ipset: Fix overflow before widen in the bitmap_ip_create() function. · e137d9bb
      Gavrilov Ilia authored
      
      commit 9ea4b476 upstream.
      
      When first_ip is 0, last_ip is 0xFFFFFFFF, and netmask is 31, the value of
      an arithmetic expression 2 << (netmask - mask_bits - 1) is subject
      to overflow due to a failure casting operands to a larger data type
      before performing the arithmetic.
      
      Note that it's harmless since the value will be checked at the next step.
      
      Found by InfoTeCS on behalf of Linux Verification Center
      (linuxtesting.org) with SVACE.
      
      Fixes: b9fed748 ("netfilter: ipset: Check and reject crazy /0 input parameters")
      Signed-off-by: default avatarIlia.Gavrilov <Ilia.Gavrilov@infotecs.ru>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e137d9bb
    • Herbert Xu's avatar
      ipv6: raw: Deduct extension header length in rawv6_push_pending_frames · 35ed8ba4
      Herbert Xu authored
      
      commit cb3e9864 upstream.
      
      The total cork length created by ip6_append_data includes extension
      headers, so we must exclude them when comparing them against the
      IPV6_CHECKSUM offset which does not include extension headers.
      
      Reported-by: default avatarKyle Zeng <zengyhkyle@gmail.com>
      Fixes: 357b40a1 ("[IPV6]: IPV6_CHECKSUM socket option can corrupt kernel memory")
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      35ed8ba4
    • Hans de Goede's avatar
      platform/x86: sony-laptop: Don't turn off 0x153 keyboard backlight during probe · add09c5e
      Hans de Goede authored
      commit ad75bd85 upstream.
      
      The 0x153 version of the kbd backlight control SNC handle has no separate
      address to probe if the backlight is there.
      
      This turns the probe call into a set keyboard backlight call with a value
      of 0 turning off the keyboard backlight.
      
      Skip probing when there is no separate probe address to avoid this.
      
      Link: https://bugzilla.redhat.com/show_bug.cgi?id=1583752
      
      
      Fixes: 800f2017 ("Keyboard backlight control for some Vaio Fit models")
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Reviewed-by: default avatarMattia Dongili <malattia@linux.it>
      Link: https://lore.kernel.org/r/20221213122943.11123-1-hdegoede@redhat.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      add09c5e
    • Clement Lecigne's avatar
      ALSA: pcm: Move rwsem lock inside snd_ctl_elem_read to prevent UAF · c75e7766
      Clement Lecigne authored
      
      [ Note: this is a fix that works around the bug equivalently as the
        two upstream commits:
         1fa4445f ("ALSA: control - introduce snd_ctl_notify_one() helper")
         56b88b50 ("ALSA: pcm: Move rwsem lock inside snd_ctl_elem_read to prevent UAF")
        but in a simpler way to fit with older stable trees -- tiwai ]
      
      Add missing locking in ctl_elem_read_user/ctl_elem_write_user which can be
      easily triggered and turned into an use-after-free.
      
      Example code paths with SNDRV_CTL_IOCTL_ELEM_READ:
      
      64-bits:
      snd_ctl_ioctl
        snd_ctl_elem_read_user
          [takes controls_rwsem]
          snd_ctl_elem_read [lock properly held, all good]
          [drops controls_rwsem]
      
      32-bits (compat):
      snd_ctl_ioctl_compat
        snd_ctl_elem_write_read_compat
          ctl_elem_write_read
            snd_ctl_elem_read [missing lock, not good]
      
      CVE-2023-0266 was assigned for this issue.
      
      Signed-off-by: default avatarClement Lecigne <clecigne@google.com>
      Cc: stable@kernel.org # 5.12 and older
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Reviewed-by: default avatarJaroslav Kysela <perex@perex.cz>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c75e7766
Loading