Commit 0ee7df54 authored by Mike Rapoport's avatar Mike Rapoport Committed by Andrei Vagin

lazy-pages: treat ENOMEM returned by UFFDIO_UNREGISTER as task exit

The UFFDIO_UNREGISTER returns ENOMEM only when it is unable to get
mm_struct. We can assume in such case that the task is exited.
Signed-off-by: 's avatarMike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent f41e386d
......@@ -914,6 +914,15 @@ static int handle_remove(struct lazy_pages_info *lpi, struct uffd_msg *msg)
*/
if (msg->event == UFFD_EVENT_REMOVE &&
ioctl(lpi->lpfd.fd, UFFDIO_UNREGISTER, &unreg)) {
/*
* The kernel returns -ENOMEM when unregister is
* called after the process has gone
*/
if (errno == ENOMEM) {
handle_exit(lpi);
return 0;
}
pr_perror("Failed to unregister (%llx - %llx)", unreg.start,
unreg.start + unreg.len);
return -1;
......
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