@@ -377,7 +377,7 @@ static int sev_launch_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
377377 if (!sev_guest (kvm ))
378378 return - ENOTTY ;
379379
380- if (copy_from_user (& params , ( void __user * )( uintptr_t ) argp -> data , sizeof (params )))
380+ if (copy_from_user (& params , u64_to_user_ptr ( argp -> data ) , sizeof (params )))
381381 return - EFAULT ;
382382
383383 memset (& start , 0 , sizeof (start ));
@@ -421,7 +421,7 @@ static int sev_launch_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
421421
422422 /* return handle to userspace */
423423 params .handle = start .handle ;
424- if (copy_to_user (( void __user * )( uintptr_t ) argp -> data , & params , sizeof (params ))) {
424+ if (copy_to_user (u64_to_user_ptr ( argp -> data ) , & params , sizeof (params ))) {
425425 sev_unbind_asid (kvm , start .handle );
426426 ret = - EFAULT ;
427427 goto e_free_session ;
@@ -560,7 +560,7 @@ static int sev_launch_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
560560 if (!sev_guest (kvm ))
561561 return - ENOTTY ;
562562
563- if (copy_from_user (& params , ( void __user * )( uintptr_t ) argp -> data , sizeof (params )))
563+ if (copy_from_user (& params , u64_to_user_ptr ( argp -> data ) , sizeof (params )))
564564 return - EFAULT ;
565565
566566 vaddr = params .uaddr ;
@@ -780,7 +780,7 @@ static int sev_launch_update_vmsa(struct kvm *kvm, struct kvm_sev_cmd *argp)
780780
781781static int sev_launch_measure (struct kvm * kvm , struct kvm_sev_cmd * argp )
782782{
783- void __user * measure = ( void __user * )( uintptr_t ) argp -> data ;
783+ void __user * measure = u64_to_user_ptr ( argp -> data ) ;
784784 struct kvm_sev_info * sev = & to_kvm_svm (kvm )-> sev_info ;
785785 struct sev_data_launch_measure data ;
786786 struct kvm_sev_launch_measure params ;
@@ -800,7 +800,7 @@ static int sev_launch_measure(struct kvm *kvm, struct kvm_sev_cmd *argp)
800800 if (!params .len )
801801 goto cmd ;
802802
803- p = ( void __user * )( uintptr_t ) params .uaddr ;
803+ p = u64_to_user_ptr ( params .uaddr ) ;
804804 if (p ) {
805805 if (params .len > SEV_FW_BLOB_MAX_SIZE )
806806 return - EINVAL ;
@@ -873,7 +873,7 @@ static int sev_guest_status(struct kvm *kvm, struct kvm_sev_cmd *argp)
873873 params .state = data .state ;
874874 params .handle = data .handle ;
875875
876- if (copy_to_user (( void __user * )( uintptr_t ) argp -> data , & params , sizeof (params )))
876+ if (copy_to_user (u64_to_user_ptr ( argp -> data ) , & params , sizeof (params )))
877877 ret = - EFAULT ;
878878
879879 return ret ;
@@ -1038,7 +1038,7 @@ static int sev_dbg_crypt(struct kvm *kvm, struct kvm_sev_cmd *argp, bool dec)
10381038 if (!sev_guest (kvm ))
10391039 return - ENOTTY ;
10401040
1041- if (copy_from_user (& debug , ( void __user * )( uintptr_t ) argp -> data , sizeof (debug )))
1041+ if (copy_from_user (& debug , u64_to_user_ptr ( argp -> data ) , sizeof (debug )))
10421042 return - EFAULT ;
10431043
10441044 if (!debug .len || debug .src_uaddr + debug .len < debug .src_uaddr )
@@ -1122,7 +1122,7 @@ static int sev_launch_secret(struct kvm *kvm, struct kvm_sev_cmd *argp)
11221122 if (!sev_guest (kvm ))
11231123 return - ENOTTY ;
11241124
1125- if (copy_from_user (& params , ( void __user * )( uintptr_t ) argp -> data , sizeof (params )))
1125+ if (copy_from_user (& params , u64_to_user_ptr ( argp -> data ) , sizeof (params )))
11261126 return - EFAULT ;
11271127
11281128 pages = sev_pin_memory (kvm , params .guest_uaddr , params .guest_len , & n , 1 );
@@ -1186,7 +1186,7 @@ static int sev_launch_secret(struct kvm *kvm, struct kvm_sev_cmd *argp)
11861186
11871187static int sev_get_attestation_report (struct kvm * kvm , struct kvm_sev_cmd * argp )
11881188{
1189- void __user * report = ( void __user * )( uintptr_t ) argp -> data ;
1189+ void __user * report = u64_to_user_ptr ( argp -> data ) ;
11901190 struct kvm_sev_info * sev = & to_kvm_svm (kvm )-> sev_info ;
11911191 struct sev_data_attestation_report data ;
11921192 struct kvm_sev_attestation_report params ;
@@ -1197,7 +1197,7 @@ static int sev_get_attestation_report(struct kvm *kvm, struct kvm_sev_cmd *argp)
11971197 if (!sev_guest (kvm ))
11981198 return - ENOTTY ;
11991199
1200- if (copy_from_user (& params , ( void __user * )( uintptr_t ) argp -> data , sizeof (params )))
1200+ if (copy_from_user (& params , u64_to_user_ptr ( argp -> data ) , sizeof (params )))
12011201 return - EFAULT ;
12021202
12031203 memset (& data , 0 , sizeof (data ));
@@ -1206,7 +1206,7 @@ static int sev_get_attestation_report(struct kvm *kvm, struct kvm_sev_cmd *argp)
12061206 if (!params .len )
12071207 goto cmd ;
12081208
1209- p = ( void __user * )( uintptr_t ) params .uaddr ;
1209+ p = u64_to_user_ptr ( params .uaddr ) ;
12101210 if (p ) {
12111211 if (params .len > SEV_FW_BLOB_MAX_SIZE )
12121212 return - EINVAL ;
@@ -1259,7 +1259,7 @@ __sev_send_start_query_session_length(struct kvm *kvm, struct kvm_sev_cmd *argp,
12591259 ret = sev_issue_cmd (kvm , SEV_CMD_SEND_START , & data , & argp -> error );
12601260
12611261 params -> session_len = data .session_len ;
1262- if (copy_to_user (( void __user * )( uintptr_t ) argp -> data , params ,
1262+ if (copy_to_user (u64_to_user_ptr ( argp -> data ) , params ,
12631263 sizeof (struct kvm_sev_send_start )))
12641264 ret = - EFAULT ;
12651265
@@ -1278,7 +1278,7 @@ static int sev_send_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
12781278 if (!sev_guest (kvm ))
12791279 return - ENOTTY ;
12801280
1281- if (copy_from_user (& params , ( void __user * )( uintptr_t ) argp -> data ,
1281+ if (copy_from_user (& params , u64_to_user_ptr ( argp -> data ) ,
12821282 sizeof (struct kvm_sev_send_start )))
12831283 return - EFAULT ;
12841284
@@ -1333,15 +1333,15 @@ static int sev_send_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
13331333
13341334 ret = sev_issue_cmd (kvm , SEV_CMD_SEND_START , & data , & argp -> error );
13351335
1336- if (!ret && copy_to_user (( void __user * )( uintptr_t ) params .session_uaddr ,
1336+ if (!ret && copy_to_user (u64_to_user_ptr ( params .session_uaddr ) ,
13371337 session_data , params .session_len )) {
13381338 ret = - EFAULT ;
13391339 goto e_free_amd_cert ;
13401340 }
13411341
13421342 params .policy = data .policy ;
13431343 params .session_len = data .session_len ;
1344- if (copy_to_user (( void __user * )( uintptr_t ) argp -> data , & params ,
1344+ if (copy_to_user (u64_to_user_ptr ( argp -> data ) , & params ,
13451345 sizeof (struct kvm_sev_send_start )))
13461346 ret = - EFAULT ;
13471347
@@ -1372,7 +1372,7 @@ __sev_send_update_data_query_lengths(struct kvm *kvm, struct kvm_sev_cmd *argp,
13721372 params -> hdr_len = data .hdr_len ;
13731373 params -> trans_len = data .trans_len ;
13741374
1375- if (copy_to_user (( void __user * )( uintptr_t ) argp -> data , params ,
1375+ if (copy_to_user (u64_to_user_ptr ( argp -> data ) , params ,
13761376 sizeof (struct kvm_sev_send_update_data )))
13771377 ret = - EFAULT ;
13781378
@@ -1392,7 +1392,7 @@ static int sev_send_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
13921392 if (!sev_guest (kvm ))
13931393 return - ENOTTY ;
13941394
1395- if (copy_from_user (& params , ( void __user * )( uintptr_t ) argp -> data ,
1395+ if (copy_from_user (& params , u64_to_user_ptr ( argp -> data ) ,
13961396 sizeof (struct kvm_sev_send_update_data )))
13971397 return - EFAULT ;
13981398
@@ -1443,14 +1443,14 @@ static int sev_send_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
14431443 goto e_free_trans_data ;
14441444
14451445 /* copy transport buffer to user space */
1446- if (copy_to_user (( void __user * )( uintptr_t ) params .trans_uaddr ,
1446+ if (copy_to_user (u64_to_user_ptr ( params .trans_uaddr ) ,
14471447 trans_data , params .trans_len )) {
14481448 ret = - EFAULT ;
14491449 goto e_free_trans_data ;
14501450 }
14511451
14521452 /* Copy packet header to userspace. */
1453- if (copy_to_user (( void __user * )( uintptr_t ) params .hdr_uaddr , hdr ,
1453+ if (copy_to_user (u64_to_user_ptr ( params .hdr_uaddr ) , hdr ,
14541454 params .hdr_len ))
14551455 ret = - EFAULT ;
14561456
@@ -1502,7 +1502,7 @@ static int sev_receive_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
15021502 return - ENOTTY ;
15031503
15041504 /* Get parameter from the userspace */
1505- if (copy_from_user (& params , ( void __user * )( uintptr_t ) argp -> data ,
1505+ if (copy_from_user (& params , u64_to_user_ptr ( argp -> data ) ,
15061506 sizeof (struct kvm_sev_receive_start )))
15071507 return - EFAULT ;
15081508
@@ -1544,7 +1544,7 @@ static int sev_receive_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
15441544 }
15451545
15461546 params .handle = start .handle ;
1547- if (copy_to_user (( void __user * )( uintptr_t ) argp -> data ,
1547+ if (copy_to_user (u64_to_user_ptr ( argp -> data ) ,
15481548 & params , sizeof (struct kvm_sev_receive_start ))) {
15491549 ret = - EFAULT ;
15501550 sev_unbind_asid (kvm , start .handle );
@@ -1575,7 +1575,7 @@ static int sev_receive_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
15751575 if (!sev_guest (kvm ))
15761576 return - EINVAL ;
15771577
1578- if (copy_from_user (& params , ( void __user * )( uintptr_t ) argp -> data ,
1578+ if (copy_from_user (& params , u64_to_user_ptr ( argp -> data ) ,
15791579 sizeof (struct kvm_sev_receive_update_data )))
15801580 return - EFAULT ;
15811581
0 commit comments