mcctrl pager: handle pagers more properly
the pagers are all destroyed when linux thinks there is no process left, but there is no synchronisation with mcexec on that and some new process might have spawned and started using these pagers in the meantime, leading to weird crashes because an invalid pager was used. The reason we're cleaning up pagers when no process is left is that mcctrl does not handle pager_req_release is the linux-side process got killed or died before the mckernel one for some reason, so: - move pager_req_release to a new __do_in_kernel_irq_syscall() helper - have free_all_process_memory_range not set MF_HOST_RELEASED on the memobj - just in case, clean up everything like before on mcctrl shutdown instead of when no process is left. Change-Id: I53b8b9b81b1e5b807593850af17b5ea5e8471174 Refs: #1154
This commit is contained in:
committed by
Balazs Gerofi
parent
94d093f058
commit
e531ee626e
@ -420,7 +420,9 @@ extern void (*mcctrl_zap_page_range)(struct vm_area_struct *vma,
|
||||
/* syscall.c */
|
||||
void pager_add_process(void);
|
||||
void pager_remove_process(struct mcctrl_per_proc_data *ppd);
|
||||
void pager_cleanup(void);
|
||||
|
||||
int __do_in_kernel_irq_syscall(ihk_os_t os, struct ikc_scd_packet *packet);
|
||||
int __do_in_kernel_syscall(ihk_os_t os, struct ikc_scd_packet *packet);
|
||||
int mcctrl_add_per_proc_data(struct mcctrl_usrdata *ud, int pid,
|
||||
struct mcctrl_per_proc_data *ppd);
|
||||
|
||||
Reference in New Issue
Block a user