aboutsummaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorJi-Ze Hong (Peter Hong) <peter_hong@fintek.com.tw>2026-08-24 21:18:14 +0800
committerMarc Kleine-Budde <mkl@pengutronix.de>2026-10-01 17:13:12 +0200
commit7f85d1170575645f9f327062d78017a23b2714eb (patch)
tree9c4a9bf9652b52802dc957877ee5bfaa12f0084d /include/linux
parent7093c3b8314a4ef7405c4066a2521398c455efe7 (diff)
usb: f81604: fix struct f81604_int_data size mismatch
The struct f81604_int_data defines 9 bytes of interrupt data: - Byte 0: Status register (sr) - Byte 1: Interrupt register (isrc) - Byte 2: Interrupt enable register (ier) - Byte 3: Arbitration lost capture (alc) - Byte 4: Error code capture (ecc) - Byte 5: Error warning limit register (ewlr) - Byte 6: RX error counter (rxerr) - Byte 7: TX error counter (txerr) - Byte 8: Reserved (val) The hardware sends exactly 9 bytes for the interrupt endpoint. However, the struct was defined with __aligned(4) attribute which caused the compiler to pad the struct to 12 bytes. This causes a problem in f81604_read_int_callback() where the short URB check compares urb->actual_length against sizeof(*data). When sizeof(struct f81604_int_data) is 12 but the hardware only sends 9 bytes, the check fails and valid interrupt messages are discarded. This results in the driver only being able to transmit once because the TX complete interrupt is never processed. Fix this by removing the __aligned(4) attribute so the struct size matches the actual hardware data size of 9 bytes. Fixes: 7299b1b39a25 ("can: usb: f81604: handle short interrupt urb messages properly") Cc: stable@vger.kernel.org Reported-by: Dynetrex, Admin <admin@dynetrex.com> Closes: https://lore.kernel.org/all/A3834A07-5639-4779-844F-C5843DFC3928@dynetrex.com/ Signed-off-by: Ji-Ze Hong (Peter Hong) <peter_hong@fintek.com.tw> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Tested-by: Drew Willey <dwilley@google.com> Link: https://patch.msgid.link/20260824-f81604-fix-v2-1-fc9be5581394@fintek.com.tw Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions