This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / drivers / usb / serial / safe_serial.c
index 0e85ed6..fa0abc4 100644 (file)
@@ -273,7 +273,7 @@ static void safe_read_bulk_callback (struct urb *urb, struct pt_regs *regs)
        }
 }
 
-static int safe_write (struct usb_serial_port *port, const unsigned char *buf, int count)
+static int safe_write (struct usb_serial_port *port, int from_user, const unsigned char *buf, int count)
 {
        unsigned char *data;
        int result;
@@ -314,7 +314,12 @@ static int safe_write (struct usb_serial_port *port, const unsigned char *buf, i
        data = port->write_urb->transfer_buffer;
        memset (data, '0', packet_length);
 
-       memcpy (data, buf, count);
+       if (from_user) {
+               if (copy_from_user (data, buf, count))
+                       return -EFAULT;
+       } else {
+               memcpy (data, buf, count);
+       }
 
        if (safe) {
                __u16 fcs;