@@ -400,9 +400,8 @@ static int raw_ioctl_init(struct raw_dev *dev, unsigned long value)
400
400
char * udc_device_name ;
401
401
unsigned long flags ;
402
402
403
- ret = copy_from_user (& arg , (void __user * )value , sizeof (arg ));
404
- if (ret )
405
- return ret ;
403
+ if (copy_from_user (& arg , (void __user * )value , sizeof (arg )))
404
+ return - EFAULT ;
406
405
407
406
switch (arg .speed ) {
408
407
case USB_SPEED_UNKNOWN :
@@ -509,15 +508,13 @@ static int raw_ioctl_run(struct raw_dev *dev, unsigned long value)
509
508
510
509
static int raw_ioctl_event_fetch (struct raw_dev * dev , unsigned long value )
511
510
{
512
- int ret = 0 ;
513
511
struct usb_raw_event arg ;
514
512
unsigned long flags ;
515
513
struct usb_raw_event * event ;
516
514
uint32_t length ;
517
515
518
- ret = copy_from_user (& arg , (void __user * )value , sizeof (arg ));
519
- if (ret )
520
- return ret ;
516
+ if (copy_from_user (& arg , (void __user * )value , sizeof (arg )))
517
+ return - EFAULT ;
521
518
522
519
spin_lock_irqsave (& dev -> lock , flags );
523
520
if (dev -> state != STATE_DEV_RUNNING ) {
@@ -545,20 +542,19 @@ static int raw_ioctl_event_fetch(struct raw_dev *dev, unsigned long value)
545
542
return - ENODEV ;
546
543
}
547
544
length = min (arg .length , event -> length );
548
- ret = copy_to_user ((void __user * )value , event ,
549
- sizeof (* event ) + length );
550
- return ret ;
545
+ if (copy_to_user ((void __user * )value , event , sizeof (* event ) + length ))
546
+ return - EFAULT ;
547
+
548
+ return 0 ;
551
549
}
552
550
553
551
static void * raw_alloc_io_data (struct usb_raw_ep_io * io , void __user * ptr ,
554
552
bool get_from_user )
555
553
{
556
- int ret ;
557
554
void * data ;
558
555
559
- ret = copy_from_user (io , ptr , sizeof (* io ));
560
- if (ret )
561
- return ERR_PTR (ret );
556
+ if (copy_from_user (io , ptr , sizeof (* io )))
557
+ return ERR_PTR (- EFAULT );
562
558
if (io -> ep >= USB_RAW_MAX_ENDPOINTS )
563
559
return ERR_PTR (- EINVAL );
564
560
if (!usb_raw_io_flags_valid (io -> flags ))
@@ -673,12 +669,13 @@ static int raw_ioctl_ep0_read(struct raw_dev *dev, unsigned long value)
673
669
if (IS_ERR (data ))
674
670
return PTR_ERR (data );
675
671
ret = raw_process_ep0_io (dev , & io , data , false);
676
- if (ret < 0 ) {
677
- kfree (data );
678
- return ret ;
679
- }
672
+ if (ret )
673
+ goto free ;
674
+
680
675
length = min (io .length , (unsigned int )ret );
681
- ret = copy_to_user ((void __user * )(value + sizeof (io )), data , length );
676
+ if (copy_to_user ((void __user * )(value + sizeof (io )), data , length ))
677
+ ret = - EFAULT ;
678
+ free :
682
679
kfree (data );
683
680
return ret ;
684
681
}
@@ -967,12 +964,13 @@ static int raw_ioctl_ep_read(struct raw_dev *dev, unsigned long value)
967
964
if (IS_ERR (data ))
968
965
return PTR_ERR (data );
969
966
ret = raw_process_ep_io (dev , & io , data , false);
970
- if (ret < 0 ) {
971
- kfree (data );
972
- return ret ;
973
- }
967
+ if (ret )
968
+ goto free ;
969
+
974
970
length = min (io .length , (unsigned int )ret );
975
- ret = copy_to_user ((void __user * )(value + sizeof (io )), data , length );
971
+ if (copy_to_user ((void __user * )(value + sizeof (io )), data , length ))
972
+ ret = - EFAULT ;
973
+ free :
976
974
kfree (data );
977
975
return ret ;
978
976
}
0 commit comments