Commit 1ab157ce authored by Paolo Bonzini's avatar Paolo Bonzini

KVM: SEV: use u64_to_user_ptr throughout

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 2325a21a
...@@ -377,7 +377,7 @@ static int sev_launch_start(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -377,7 +377,7 @@ static int sev_launch_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
if (!sev_guest(kvm)) if (!sev_guest(kvm))
return -ENOTTY; return -ENOTTY;
if (copy_from_user(&params, (void __user *)(uintptr_t)argp->data, sizeof(params))) if (copy_from_user(&params, u64_to_user_ptr(argp->data), sizeof(params)))
return -EFAULT; return -EFAULT;
memset(&start, 0, sizeof(start)); memset(&start, 0, sizeof(start));
...@@ -421,7 +421,7 @@ static int sev_launch_start(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -421,7 +421,7 @@ static int sev_launch_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
/* return handle to userspace */ /* return handle to userspace */
params.handle = start.handle; params.handle = start.handle;
if (copy_to_user((void __user *)(uintptr_t)argp->data, &params, sizeof(params))) { if (copy_to_user(u64_to_user_ptr(argp->data), &params, sizeof(params))) {
sev_unbind_asid(kvm, start.handle); sev_unbind_asid(kvm, start.handle);
ret = -EFAULT; ret = -EFAULT;
goto e_free_session; goto e_free_session;
...@@ -560,7 +560,7 @@ static int sev_launch_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -560,7 +560,7 @@ static int sev_launch_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
if (!sev_guest(kvm)) if (!sev_guest(kvm))
return -ENOTTY; return -ENOTTY;
if (copy_from_user(&params, (void __user *)(uintptr_t)argp->data, sizeof(params))) if (copy_from_user(&params, u64_to_user_ptr(argp->data), sizeof(params)))
return -EFAULT; return -EFAULT;
vaddr = params.uaddr; vaddr = params.uaddr;
...@@ -780,7 +780,7 @@ static int sev_launch_update_vmsa(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -780,7 +780,7 @@ static int sev_launch_update_vmsa(struct kvm *kvm, struct kvm_sev_cmd *argp)
static int sev_launch_measure(struct kvm *kvm, struct kvm_sev_cmd *argp) static int sev_launch_measure(struct kvm *kvm, struct kvm_sev_cmd *argp)
{ {
void __user *measure = (void __user *)(uintptr_t)argp->data; void __user *measure = u64_to_user_ptr(argp->data);
struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info; struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
struct sev_data_launch_measure data; struct sev_data_launch_measure data;
struct kvm_sev_launch_measure params; struct kvm_sev_launch_measure params;
...@@ -800,7 +800,7 @@ static int sev_launch_measure(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -800,7 +800,7 @@ static int sev_launch_measure(struct kvm *kvm, struct kvm_sev_cmd *argp)
if (!params.len) if (!params.len)
goto cmd; goto cmd;
p = (void __user *)(uintptr_t)params.uaddr; p = u64_to_user_ptr(params.uaddr);
if (p) { if (p) {
if (params.len > SEV_FW_BLOB_MAX_SIZE) if (params.len > SEV_FW_BLOB_MAX_SIZE)
return -EINVAL; return -EINVAL;
...@@ -873,7 +873,7 @@ static int sev_guest_status(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -873,7 +873,7 @@ static int sev_guest_status(struct kvm *kvm, struct kvm_sev_cmd *argp)
params.state = data.state; params.state = data.state;
params.handle = data.handle; params.handle = data.handle;
if (copy_to_user((void __user *)(uintptr_t)argp->data, &params, sizeof(params))) if (copy_to_user(u64_to_user_ptr(argp->data), &params, sizeof(params)))
ret = -EFAULT; ret = -EFAULT;
return ret; return ret;
...@@ -1038,7 +1038,7 @@ static int sev_dbg_crypt(struct kvm *kvm, struct kvm_sev_cmd *argp, bool dec) ...@@ -1038,7 +1038,7 @@ static int sev_dbg_crypt(struct kvm *kvm, struct kvm_sev_cmd *argp, bool dec)
if (!sev_guest(kvm)) if (!sev_guest(kvm))
return -ENOTTY; return -ENOTTY;
if (copy_from_user(&debug, (void __user *)(uintptr_t)argp->data, sizeof(debug))) if (copy_from_user(&debug, u64_to_user_ptr(argp->data), sizeof(debug)))
return -EFAULT; return -EFAULT;
if (!debug.len || debug.src_uaddr + debug.len < debug.src_uaddr) 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) ...@@ -1122,7 +1122,7 @@ static int sev_launch_secret(struct kvm *kvm, struct kvm_sev_cmd *argp)
if (!sev_guest(kvm)) if (!sev_guest(kvm))
return -ENOTTY; return -ENOTTY;
if (copy_from_user(&params, (void __user *)(uintptr_t)argp->data, sizeof(params))) if (copy_from_user(&params, u64_to_user_ptr(argp->data), sizeof(params)))
return -EFAULT; return -EFAULT;
pages = sev_pin_memory(kvm, params.guest_uaddr, params.guest_len, &n, 1); 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) ...@@ -1186,7 +1186,7 @@ static int sev_launch_secret(struct kvm *kvm, struct kvm_sev_cmd *argp)
static int sev_get_attestation_report(struct kvm *kvm, struct kvm_sev_cmd *argp) static int sev_get_attestation_report(struct kvm *kvm, struct kvm_sev_cmd *argp)
{ {
void __user *report = (void __user *)(uintptr_t)argp->data; void __user *report = u64_to_user_ptr(argp->data);
struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info; struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
struct sev_data_attestation_report data; struct sev_data_attestation_report data;
struct kvm_sev_attestation_report params; struct kvm_sev_attestation_report params;
...@@ -1197,7 +1197,7 @@ static int sev_get_attestation_report(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -1197,7 +1197,7 @@ static int sev_get_attestation_report(struct kvm *kvm, struct kvm_sev_cmd *argp)
if (!sev_guest(kvm)) if (!sev_guest(kvm))
return -ENOTTY; return -ENOTTY;
if (copy_from_user(&params, (void __user *)(uintptr_t)argp->data, sizeof(params))) if (copy_from_user(&params, u64_to_user_ptr(argp->data), sizeof(params)))
return -EFAULT; return -EFAULT;
memset(&data, 0, sizeof(data)); memset(&data, 0, sizeof(data));
...@@ -1206,7 +1206,7 @@ static int sev_get_attestation_report(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -1206,7 +1206,7 @@ static int sev_get_attestation_report(struct kvm *kvm, struct kvm_sev_cmd *argp)
if (!params.len) if (!params.len)
goto cmd; goto cmd;
p = (void __user *)(uintptr_t)params.uaddr; p = u64_to_user_ptr(params.uaddr);
if (p) { if (p) {
if (params.len > SEV_FW_BLOB_MAX_SIZE) if (params.len > SEV_FW_BLOB_MAX_SIZE)
return -EINVAL; return -EINVAL;
...@@ -1259,7 +1259,7 @@ __sev_send_start_query_session_length(struct kvm *kvm, struct kvm_sev_cmd *argp, ...@@ -1259,7 +1259,7 @@ __sev_send_start_query_session_length(struct kvm *kvm, struct kvm_sev_cmd *argp,
ret = sev_issue_cmd(kvm, SEV_CMD_SEND_START, &data, &argp->error); ret = sev_issue_cmd(kvm, SEV_CMD_SEND_START, &data, &argp->error);
params->session_len = data.session_len; params->session_len = data.session_len;
if (copy_to_user((void __user *)(uintptr_t)argp->data, params, if (copy_to_user(u64_to_user_ptr(argp->data), params,
sizeof(struct kvm_sev_send_start))) sizeof(struct kvm_sev_send_start)))
ret = -EFAULT; ret = -EFAULT;
...@@ -1278,7 +1278,7 @@ static int sev_send_start(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -1278,7 +1278,7 @@ static int sev_send_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
if (!sev_guest(kvm)) if (!sev_guest(kvm))
return -ENOTTY; return -ENOTTY;
if (copy_from_user(&params, (void __user *)(uintptr_t)argp->data, if (copy_from_user(&params, u64_to_user_ptr(argp->data),
sizeof(struct kvm_sev_send_start))) sizeof(struct kvm_sev_send_start)))
return -EFAULT; return -EFAULT;
...@@ -1333,7 +1333,7 @@ static int sev_send_start(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -1333,7 +1333,7 @@ static int sev_send_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
ret = sev_issue_cmd(kvm, SEV_CMD_SEND_START, &data, &argp->error); ret = sev_issue_cmd(kvm, SEV_CMD_SEND_START, &data, &argp->error);
if (!ret && copy_to_user((void __user *)(uintptr_t)params.session_uaddr, if (!ret && copy_to_user(u64_to_user_ptr(params.session_uaddr),
session_data, params.session_len)) { session_data, params.session_len)) {
ret = -EFAULT; ret = -EFAULT;
goto e_free_amd_cert; goto e_free_amd_cert;
...@@ -1341,7 +1341,7 @@ static int sev_send_start(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -1341,7 +1341,7 @@ static int sev_send_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
params.policy = data.policy; params.policy = data.policy;
params.session_len = data.session_len; params.session_len = data.session_len;
if (copy_to_user((void __user *)(uintptr_t)argp->data, &params, if (copy_to_user(u64_to_user_ptr(argp->data), &params,
sizeof(struct kvm_sev_send_start))) sizeof(struct kvm_sev_send_start)))
ret = -EFAULT; ret = -EFAULT;
...@@ -1372,7 +1372,7 @@ __sev_send_update_data_query_lengths(struct kvm *kvm, struct kvm_sev_cmd *argp, ...@@ -1372,7 +1372,7 @@ __sev_send_update_data_query_lengths(struct kvm *kvm, struct kvm_sev_cmd *argp,
params->hdr_len = data.hdr_len; params->hdr_len = data.hdr_len;
params->trans_len = data.trans_len; params->trans_len = data.trans_len;
if (copy_to_user((void __user *)(uintptr_t)argp->data, params, if (copy_to_user(u64_to_user_ptr(argp->data), params,
sizeof(struct kvm_sev_send_update_data))) sizeof(struct kvm_sev_send_update_data)))
ret = -EFAULT; ret = -EFAULT;
...@@ -1392,7 +1392,7 @@ static int sev_send_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -1392,7 +1392,7 @@ static int sev_send_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
if (!sev_guest(kvm)) if (!sev_guest(kvm))
return -ENOTTY; return -ENOTTY;
if (copy_from_user(&params, (void __user *)(uintptr_t)argp->data, if (copy_from_user(&params, u64_to_user_ptr(argp->data),
sizeof(struct kvm_sev_send_update_data))) sizeof(struct kvm_sev_send_update_data)))
return -EFAULT; return -EFAULT;
...@@ -1443,14 +1443,14 @@ static int sev_send_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -1443,14 +1443,14 @@ static int sev_send_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
goto e_free_trans_data; goto e_free_trans_data;
/* copy transport buffer to user space */ /* copy transport buffer to user space */
if (copy_to_user((void __user *)(uintptr_t)params.trans_uaddr, if (copy_to_user(u64_to_user_ptr(params.trans_uaddr),
trans_data, params.trans_len)) { trans_data, params.trans_len)) {
ret = -EFAULT; ret = -EFAULT;
goto e_free_trans_data; goto e_free_trans_data;
} }
/* Copy packet header to userspace. */ /* Copy packet header to userspace. */
if (copy_to_user((void __user *)(uintptr_t)params.hdr_uaddr, hdr, if (copy_to_user(u64_to_user_ptr(params.hdr_uaddr), hdr,
params.hdr_len)) params.hdr_len))
ret = -EFAULT; ret = -EFAULT;
...@@ -1502,7 +1502,7 @@ static int sev_receive_start(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -1502,7 +1502,7 @@ static int sev_receive_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
return -ENOTTY; return -ENOTTY;
/* Get parameter from the userspace */ /* Get parameter from the userspace */
if (copy_from_user(&params, (void __user *)(uintptr_t)argp->data, if (copy_from_user(&params, u64_to_user_ptr(argp->data),
sizeof(struct kvm_sev_receive_start))) sizeof(struct kvm_sev_receive_start)))
return -EFAULT; return -EFAULT;
...@@ -1544,7 +1544,7 @@ static int sev_receive_start(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -1544,7 +1544,7 @@ static int sev_receive_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
} }
params.handle = start.handle; params.handle = start.handle;
if (copy_to_user((void __user *)(uintptr_t)argp->data, if (copy_to_user(u64_to_user_ptr(argp->data),
&params, sizeof(struct kvm_sev_receive_start))) { &params, sizeof(struct kvm_sev_receive_start))) {
ret = -EFAULT; ret = -EFAULT;
sev_unbind_asid(kvm, start.handle); sev_unbind_asid(kvm, start.handle);
...@@ -1575,7 +1575,7 @@ static int sev_receive_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp) ...@@ -1575,7 +1575,7 @@ static int sev_receive_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
if (!sev_guest(kvm)) if (!sev_guest(kvm))
return -EINVAL; return -EINVAL;
if (copy_from_user(&params, (void __user *)(uintptr_t)argp->data, if (copy_from_user(&params, u64_to_user_ptr(argp->data),
sizeof(struct kvm_sev_receive_update_data))) sizeof(struct kvm_sev_receive_update_data)))
return -EFAULT; return -EFAULT;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment