mcexec_create_per_process_data: use copy_from_user
Refs: #1205 Change-Id: Idced73a7f88aada5fc2462b490d56603f8fe2472
This commit is contained in:
committed by
Dominique Martinet
parent
e803698618
commit
daa234d8b9
@ -1755,11 +1755,18 @@ mcexec_getcredv(int __user *virt)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mcexec_create_per_process_data(ihk_os_t os, struct rpgtable_desc *rpt)
|
int mcexec_create_per_process_data(ihk_os_t os,
|
||||||
|
struct rpgtable_desc * __user rpt)
|
||||||
{
|
{
|
||||||
struct mcctrl_usrdata *usrdata = ihk_host_os_get_usrdata(os);
|
struct mcctrl_usrdata *usrdata = ihk_host_os_get_usrdata(os);
|
||||||
struct mcctrl_per_proc_data *ppd = NULL;
|
struct mcctrl_per_proc_data *ppd = NULL;
|
||||||
int i;
|
int i;
|
||||||
|
struct rpgtable_desc krpt;
|
||||||
|
|
||||||
|
if (rpt &&
|
||||||
|
copy_from_user(&krpt, rpt, sizeof(krpt))) {
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
ppd = mcctrl_get_per_proc_data(usrdata, task_tgid_vnr(current));
|
ppd = mcctrl_get_per_proc_data(usrdata, task_tgid_vnr(current));
|
||||||
if (ppd) {
|
if (ppd) {
|
||||||
@ -1813,8 +1820,8 @@ int mcexec_create_per_process_data(ihk_os_t os, struct rpgtable_desc *rpt)
|
|||||||
__FUNCTION__, ppd->pid, atomic_read(&ppd->refcount));
|
__FUNCTION__, ppd->pid, atomic_read(&ppd->refcount));
|
||||||
|
|
||||||
if (rpt) {
|
if (rpt) {
|
||||||
ppd->rpgtable = rpt->rpgtable;
|
ppd->rpgtable = krpt.rpgtable;
|
||||||
return mcctrl_clear_pte_range(rpt->start, rpt->len);
|
return mcctrl_clear_pte_range(krpt.start, krpt.len);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -3164,7 +3171,7 @@ long __mcctrl_control(ihk_os_t os, unsigned int req, unsigned long arg,
|
|||||||
|
|
||||||
case MCEXEC_UP_CREATE_PPD:
|
case MCEXEC_UP_CREATE_PPD:
|
||||||
return mcexec_create_per_process_data(os,
|
return mcexec_create_per_process_data(os,
|
||||||
(struct rpgtable_desc *)arg);
|
(struct rpgtable_desc * __user)arg);
|
||||||
|
|
||||||
case MCEXEC_UP_GET_NODES:
|
case MCEXEC_UP_GET_NODES:
|
||||||
return mcexec_get_nodes(os);
|
return mcexec_get_nodes(os);
|
||||||
|
|||||||
Reference in New Issue
Block a user