Description
In the Linux kernel, the following vulnerability has been resolved: usb: gadget: printer: fix infinite loop in printer_read() printer_read() uses the same variable for the requested copy size and the number of bytes actually copied to user space. copy_to_user() returns the number of bytes not copied, so when it fails to copy anything, the computed copied length becomes zero. In that case len, buf, current_rx_bytes and current_rx_buf are left unchanged. If RX data is available and the user buffer remains unwritable, the read loop can repeat indefinitely. Track the copied length separately and return -EFAULT, or the number of bytes already copied, if an iteration makes no progress.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
b185f01a9ab7af586133be2555298e960237359b to < 3f81197364b57e5318620c75f3bd63f405f60552affectedb185f01a9ab7af586133be2555298e960237359b to < e225e2998e5a9b83c838dbbe4511fb0d63f88dafaffectedb185f01a9ab7af586133be2555298e960237359b to < 3081b0e187065c3b9577e393ad664b12854aeaf3affectedb185f01a9ab7af586133be2555298e960237359b to < 994afccfdcceb73be33f69a8a8ea71e260c9eca5affectedb185f01a9ab7af586133be2555298e960237359b to < e03597ad9494b500344076589aeaa6c6d2d381d3affectedb185f01a9ab7af586133be2555298e960237359b to < 4cde0b38cc0cb8b7dc17295801015148de37d1d2affectedb185f01a9ab7af586133be2555298e960237359b to < e41bbbbb1740ce4d7270ab1cdeca13892d6a8d2eaffectedb185f01a9ab7af586133be2555298e960237359b to < c2e819be6a5c7f34344926b4bd7e3dfca58cf48aaffected
Linux Linux
Default version status: affected
4.1affected0 to < 4.1unaffected5.10.265 to ≤ 5.10.*unaffected5.15.216 to ≤ 5.15.*unaffected6.1.183 to ≤ 6.1.*unaffected6.6.148 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/3f81197364b57e5318620c75f3bd63f405f60552 ↗
- https://git.kernel.org/stable/c/e225e2998e5a9b83c838dbbe4511fb0d63f88daf ↗
- https://git.kernel.org/stable/c/3081b0e187065c3b9577e393ad664b12854aeaf3 ↗
- https://git.kernel.org/stable/c/994afccfdcceb73be33f69a8a8ea71e260c9eca5 ↗
- https://git.kernel.org/stable/c/e03597ad9494b500344076589aeaa6c6d2d381d3 ↗
- https://git.kernel.org/stable/c/4cde0b38cc0cb8b7dc17295801015148de37d1d2 ↗
- https://git.kernel.org/stable/c/e41bbbbb1740ce4d7270ab1cdeca13892d6a8d2e ↗
- https://git.kernel.org/stable/c/c2e819be6a5c7f34344926b4bd7e3dfca58cf48a ↗