@@ -663,6 +663,10 @@ int qaic_create_bo_ioctl(struct drm_device *dev, void *data, struct drm_file *fi
663
663
if (args -> pad )
664
664
return - EINVAL ;
665
665
666
+ size = PAGE_ALIGN (args -> size );
667
+ if (size == 0 )
668
+ return - EINVAL ;
669
+
666
670
usr = file_priv -> driver_priv ;
667
671
usr_rcu_id = srcu_read_lock (& usr -> qddev_lock );
668
672
if (!usr -> qddev ) {
@@ -677,12 +681,6 @@ int qaic_create_bo_ioctl(struct drm_device *dev, void *data, struct drm_file *fi
677
681
goto unlock_dev_srcu ;
678
682
}
679
683
680
- size = PAGE_ALIGN (args -> size );
681
- if (size == 0 ) {
682
- ret = - EINVAL ;
683
- goto unlock_dev_srcu ;
684
- }
685
-
686
684
bo = qaic_alloc_init_bo ();
687
685
if (IS_ERR (bo )) {
688
686
ret = PTR_ERR (bo );
@@ -936,6 +934,22 @@ int qaic_attach_slice_bo_ioctl(struct drm_device *dev, void *data, struct drm_fi
936
934
struct qaic_bo * bo ;
937
935
int ret ;
938
936
937
+ if (args -> hdr .count == 0 )
938
+ return - EINVAL ;
939
+
940
+ arg_size = args -> hdr .count * sizeof (* slice_ent );
941
+ if (arg_size / args -> hdr .count != sizeof (* slice_ent ))
942
+ return - EINVAL ;
943
+
944
+ if (args -> hdr .size == 0 )
945
+ return - EINVAL ;
946
+
947
+ if (!(args -> hdr .dir == DMA_TO_DEVICE || args -> hdr .dir == DMA_FROM_DEVICE ))
948
+ return - EINVAL ;
949
+
950
+ if (args -> data == 0 )
951
+ return - EINVAL ;
952
+
939
953
usr = file_priv -> driver_priv ;
940
954
usr_rcu_id = srcu_read_lock (& usr -> qddev_lock );
941
955
if (!usr -> qddev ) {
@@ -950,43 +964,17 @@ int qaic_attach_slice_bo_ioctl(struct drm_device *dev, void *data, struct drm_fi
950
964
goto unlock_dev_srcu ;
951
965
}
952
966
953
- if (args -> hdr .count == 0 ) {
954
- ret = - EINVAL ;
955
- goto unlock_dev_srcu ;
956
- }
957
-
958
- arg_size = args -> hdr .count * sizeof (* slice_ent );
959
- if (arg_size / args -> hdr .count != sizeof (* slice_ent )) {
960
- ret = - EINVAL ;
961
- goto unlock_dev_srcu ;
962
- }
963
-
964
967
if (args -> hdr .dbc_id >= qdev -> num_dbc ) {
965
968
ret = - EINVAL ;
966
969
goto unlock_dev_srcu ;
967
970
}
968
971
969
- if (args -> hdr .size == 0 ) {
970
- ret = - EINVAL ;
971
- goto unlock_dev_srcu ;
972
- }
973
-
974
- if (!(args -> hdr .dir == DMA_TO_DEVICE || args -> hdr .dir == DMA_FROM_DEVICE )) {
975
- ret = - EINVAL ;
976
- goto unlock_dev_srcu ;
977
- }
978
-
979
972
dbc = & qdev -> dbc [args -> hdr .dbc_id ];
980
973
if (dbc -> usr != usr ) {
981
974
ret = - EINVAL ;
982
975
goto unlock_dev_srcu ;
983
976
}
984
977
985
- if (args -> data == 0 ) {
986
- ret = - EINVAL ;
987
- goto unlock_dev_srcu ;
988
- }
989
-
990
978
user_data = u64_to_user_ptr (args -> data );
991
979
992
980
slice_ent = kzalloc (arg_size , GFP_KERNEL );
@@ -1316,7 +1304,6 @@ static int __qaic_execute_bo_ioctl(struct drm_device *dev, void *data, struct dr
1316
1304
received_ts = ktime_get_ns ();
1317
1305
1318
1306
size = is_partial ? sizeof (* pexec ) : sizeof (* exec );
1319
-
1320
1307
n = (unsigned long )size * args -> hdr .count ;
1321
1308
if (args -> hdr .count == 0 || n / args -> hdr .count != size )
1322
1309
return - EINVAL ;
@@ -1665,6 +1652,9 @@ int qaic_wait_bo_ioctl(struct drm_device *dev, void *data, struct drm_file *file
1665
1652
int rcu_id ;
1666
1653
int ret ;
1667
1654
1655
+ if (args -> pad != 0 )
1656
+ return - EINVAL ;
1657
+
1668
1658
usr = file_priv -> driver_priv ;
1669
1659
usr_rcu_id = srcu_read_lock (& usr -> qddev_lock );
1670
1660
if (!usr -> qddev ) {
@@ -1679,11 +1669,6 @@ int qaic_wait_bo_ioctl(struct drm_device *dev, void *data, struct drm_file *file
1679
1669
goto unlock_dev_srcu ;
1680
1670
}
1681
1671
1682
- if (args -> pad != 0 ) {
1683
- ret = - EINVAL ;
1684
- goto unlock_dev_srcu ;
1685
- }
1686
-
1687
1672
if (args -> dbc_id >= qdev -> num_dbc ) {
1688
1673
ret = - EINVAL ;
1689
1674
goto unlock_dev_srcu ;
0 commit comments