{
        struct sd *sd = (struct sd *) gspca_dev;
        __u8 *buf = sd->gspca_dev.usb_buf;
+       int err;
 
        /* Send start command to the camera */
        const u8 buffer[4] = {0x13, 0xf9, 0x0f, 0x01};
        memcpy(buf, buffer, sizeof(buffer));
-       usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0),
-                       0x04, 0x40, 0x19, 0x0000, buf,
-                       4, M5602_URB_MSG_TIMEOUT);
+       err = usb_control_msg(gspca_dev->dev,
+                             usb_sndctrlpipe(gspca_dev->dev, 0),
+                             0x04, 0x40, 0x19, 0x0000, buf,
+                             4, M5602_URB_MSG_TIMEOUT);
 
        PDEBUG(DBG_V4L2, "Transfer started");
-       return 0;
+       return (err < 0) ? err : 0;
 }
 
 static void m5602_urb_complete(struct gspca_dev *gspca_dev,