Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

USB: serial: mct_u232: fix big-endian baud-rate handling

Drop erroneous cpu_to_le32 when setting the baud rate, something which
corrupted the divisor on big-endian hosts.

Found using sparse:

warning: incorrect type in argument 1 (different base types)
expected unsigned int [unsigned] [usertype] val
got restricted __le32 [usertype] <noident>

Fixes: af2ac1a091bc ("USB: serial mct_usb232: move DMA buffers to heap")
Cc: stable <stable@vger.kernel.org> # 2.6.34
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-By: Pete Zaitcev <zaitcev@yahoo.com>
Signed-off-by: Johan Hovold <johan@kernel.org>

+1 -1
+1 -1
drivers/usb/serial/mct_u232.c
··· 189 189 return -ENOMEM; 190 190 191 191 divisor = mct_u232_calculate_baud_rate(serial, value, &speed); 192 - put_unaligned_le32(cpu_to_le32(divisor), buf); 192 + put_unaligned_le32(divisor, buf); 193 193 rc = usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0), 194 194 MCT_U232_SET_BAUD_RATE_REQUEST, 195 195 MCT_U232_SET_REQUEST_TYPE,