Skip to content

Commit 1ab157c

Browse files
committed
KVM: SEV: use u64_to_user_ptr throughout
Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 2325a21 commit 1ab157c

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

arch/x86/kvm/svm/sev.c

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

781781
static 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

11871187
static 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

Comments
 (0)