* [BUG] usb-storage: 14cd:1212 returns incorrect data after large READ(10)
@ 2026-10-13 13:41 Xuntao Chi
2026-10-13 14:18 ` Alan Stern
0 siblings, 1 reply; 2+ messages in thread
From: Xuntao Chi @ 2026-10-13 13:41 UTC (permalink / raw)
To: Alan Stern; +Cc: linux-usb, usb-storage, linux-kernel, Greg Kroah-Hartman
Hello,
I would like to report a deterministic silent read corruption issue with
14cd:1212 USB microSD readers and propose adding a MAX_SECTORS_64 quirk.
A READ(10) larger than 64 KiB can cause the following READ(10) to return
data from the wrong LBA. The trigger I have found is that the second
read starts 64 KiB beyond the end of the first read. Instead of honoring
that gap, the reader returns data starting at the end of the first read,
that is exactly 64 KiB before the requested address. Both commands
complete successfully, but the returned payload contains erroneous data.
The same problem is observed on 3 physically separate readers purchased
from 2 different OEMs, all identifying as 14cd:1212 and with the same
serial.
Device and environments
-----------------------
VID:PID: 14cd:1212
idVendor: Super Top
idProduct: microSD card reader (SY-T18)
bcdDevice: 1.00
iManufacturer: Generic
iProduct: Mass Storage Device
iSerial: 121220160204
speed: USB 2.0 high speed
driver: usb-storage
logical blocks: 512 bytes
The error is reproduced on an arm64 machine running 6.18.54 kernel, the
same machine running a 6.12.112 kernel, and an amd64 machine running
6.8.0 kernel, and is confirmed directly using libusb.
This has been observed to cause data silent data corrupting when
mounting an ext4 partition from the device, and setting
max_sectors_kb=64 as a workaround fixes it completely.
Would adding a US_FL_MAX_SECTORS_64 quirk be appropriate? I retest
against the latest mainline if needed.
Regards,
Xuntao Chi
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [BUG] usb-storage: 14cd:1212 returns incorrect data after large READ(10)
2026-10-13 13:41 [BUG] usb-storage: 14cd:1212 returns incorrect data after large READ(10) Xuntao Chi
@ 2026-10-13 14:18 ` Alan Stern
0 siblings, 0 replies; 2+ messages in thread
From: Alan Stern @ 2026-10-13 14:18 UTC (permalink / raw)
To: Xuntao Chi; +Cc: linux-usb, usb-storage, linux-kernel, Greg Kroah-Hartman
On Tue, Oct 13, 2026 at 09:41:22PM +0800, Xuntao Chi wrote:
> Hello,
>
> I would like to report a deterministic silent read corruption issue with
> 14cd:1212 USB microSD readers and propose adding a MAX_SECTORS_64 quirk.
>
> A READ(10) larger than 64 KiB can cause the following READ(10) to return
> data from the wrong LBA. The trigger I have found is that the second
> read starts 64 KiB beyond the end of the first read. Instead of honoring
> that gap, the reader returns data starting at the end of the first read,
> that is exactly 64 KiB before the requested address. Both commands complete
> successfully, but the returned payload contains erroneous data.
>
> The same problem is observed on 3 physically separate readers purchased
> from 2 different OEMs, all identifying as 14cd:1212 and with the same
> serial.
>
> Device and environments
> -----------------------
>
> VID:PID: 14cd:1212
> idVendor: Super Top
> idProduct: microSD card reader (SY-T18)
> bcdDevice: 1.00
> iManufacturer: Generic
> iProduct: Mass Storage Device
> iSerial: 121220160204
> speed: USB 2.0 high speed
> driver: usb-storage
> logical blocks: 512 bytes
>
> The error is reproduced on an arm64 machine running 6.18.54 kernel, the same
> machine running a 6.12.112 kernel, and an amd64 machine running 6.8.0
> kernel, and is confirmed directly using libusb.
>
> This has been observed to cause data silent data corrupting when mounting an
> ext4 partition from the device, and setting max_sectors_kb=64 as a
> workaround fixes it completely.
>
> Would adding a US_FL_MAX_SECTORS_64 quirk be appropriate? I retest against
> the latest mainline if needed.
Yes, that quirk would certainly be appropriate if it fixes the problem.
Note that you can test it with no changes to the kernel, by specifying
the appropriate "quirks" module parameter for usb-storage. For example,
before plugging in the device, do:
echo 14cd:1212:m >/sys/module/usb_storage/parameters/quirks
Alan Stern
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-13 14:18 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-13 13:41 [BUG] usb-storage: 14cd:1212 returns incorrect data after large READ(10) Xuntao Chi
2026-10-13 14:18 ` Alan Stern
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®