@@ -459,21 +459,21 @@ static size_t calc_topo_query_size(struct xe_device *xe)
459
459
sizeof_field (struct xe_gt , fuse_topo .eu_mask_per_dss ));
460
460
}
461
461
462
- static void __user * copy_mask (void __user * ptr ,
463
- struct drm_xe_query_topology_mask * topo ,
464
- void * mask , size_t mask_size )
462
+ static int copy_mask (void __user * * ptr ,
463
+ struct drm_xe_query_topology_mask * topo ,
464
+ void * mask , size_t mask_size )
465
465
{
466
466
topo -> num_bytes = mask_size ;
467
467
468
- if (copy_to_user (ptr , topo , sizeof (* topo )))
469
- return ERR_PTR ( - EFAULT ) ;
470
- ptr += sizeof (topo );
468
+ if (copy_to_user (* ptr , topo , sizeof (* topo )))
469
+ return - EFAULT ;
470
+ * ptr += sizeof (topo );
471
471
472
- if (copy_to_user (ptr , mask , mask_size ))
473
- return ERR_PTR ( - EFAULT ) ;
474
- ptr += mask_size ;
472
+ if (copy_to_user (* ptr , mask , mask_size ))
473
+ return - EFAULT ;
474
+ * ptr += mask_size ;
475
475
476
- return ptr ;
476
+ return 0 ;
477
477
}
478
478
479
479
static int query_gt_topology (struct xe_device * xe ,
@@ -493,28 +493,28 @@ static int query_gt_topology(struct xe_device *xe,
493
493
}
494
494
495
495
for_each_gt (gt , xe , id ) {
496
+ int err ;
497
+
496
498
topo .gt_id = id ;
497
499
498
500
topo .type = DRM_XE_TOPO_DSS_GEOMETRY ;
499
- query_ptr = copy_mask (query_ptr , & topo ,
500
- gt -> fuse_topo .g_dss_mask ,
501
- sizeof (gt -> fuse_topo .g_dss_mask ));
502
- if (IS_ERR (query_ptr ))
503
- return PTR_ERR (query_ptr );
501
+ err = copy_mask (& query_ptr , & topo , gt -> fuse_topo .g_dss_mask ,
502
+ sizeof (gt -> fuse_topo .g_dss_mask ));
503
+ if (err )
504
+ return err ;
504
505
505
506
topo .type = DRM_XE_TOPO_DSS_COMPUTE ;
506
- query_ptr = copy_mask (query_ptr , & topo ,
507
- gt -> fuse_topo .c_dss_mask ,
508
- sizeof (gt -> fuse_topo .c_dss_mask ));
509
- if (IS_ERR (query_ptr ))
510
- return PTR_ERR (query_ptr );
507
+ err = copy_mask (& query_ptr , & topo , gt -> fuse_topo .c_dss_mask ,
508
+ sizeof (gt -> fuse_topo .c_dss_mask ));
509
+ if (err )
510
+ return err ;
511
511
512
512
topo .type = DRM_XE_TOPO_EU_PER_DSS ;
513
- query_ptr = copy_mask (query_ptr , & topo ,
514
- gt -> fuse_topo .eu_mask_per_dss ,
515
- sizeof (gt -> fuse_topo .eu_mask_per_dss ));
516
- if (IS_ERR ( query_ptr ) )
517
- return PTR_ERR ( query_ptr ) ;
513
+ err = copy_mask (& query_ptr , & topo ,
514
+ gt -> fuse_topo .eu_mask_per_dss ,
515
+ sizeof (gt -> fuse_topo .eu_mask_per_dss ));
516
+ if (err )
517
+ return err ;
518
518
}
519
519
520
520
return 0 ;
0 commit comments