This code should return -ENOMEM if the kmalloc() fails but instead it returns success. Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> --- The first error path is probably wrong as well? drivers/usb/serial/mos7720.c 1077 /* try to find a free urb in the list */ 1078 urb = NULL; 1079 1080 for (i = 0; i < NUM_URBS; ++i) { 1081 if (mos7720_port->write_urb_pool[i] && 1082 mos7720_port->write_urb_pool[i]->status != -EINPROGRESS) { 1083 urb = mos7720_port->write_urb_pool[i]; 1084 dev_dbg(&port->dev, "URB:%d\n", i); 1085 break; 1086 } 1087 } 1088 1089 if (urb == NULL) { 1090 dev_dbg(&port->dev, "%s - no more free urbs\n", __func__); 1091 goto exit; Should return -ENODEV? 1092 } drivers/usb/serial/mos7720.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/usb/serial/mos7720.c b/drivers/usb/serial/mos7720.c index ed347a6d50ba..aa55169796a3 100644 --- a/drivers/usb/serial/mos7720.c +++ b/drivers/usb/serial/mos7720.c @@ -1094,8 +1094,10 @@ static int mos7720_write(struct tty_struct *tty, struct usb_serial_port *port, if (urb->transfer_buffer == NULL) { urb->transfer_buffer = kmalloc(URB_TRANSFER_BUFFER_SIZE, GFP_ATOMIC); - if (!urb->transfer_buffer) + if (!urb->transfer_buffer) { + bytes_sent = -ENOMEM; goto exit; + } } transfer_size = min(count, URB_TRANSFER_BUFFER_SIZE); -- 2.29.2