@@ -4386,8 +4386,6 @@ SYSCALL_DECLARE(madvise)
|
||||
case MADV_UNMERGEABLE:
|
||||
case MADV_HUGEPAGE:
|
||||
case MADV_NOHUGEPAGE:
|
||||
case MADV_DONTDUMP:
|
||||
case MADV_DODUMP:
|
||||
error = -EINVAL;
|
||||
break;
|
||||
|
||||
@@ -4399,6 +4397,8 @@ SYSCALL_DECLARE(madvise)
|
||||
case MADV_DONTFORK:
|
||||
case MADV_DOFORK:
|
||||
case MADV_REMOVE:
|
||||
case MADV_DONTDUMP:
|
||||
case MADV_DODUMP:
|
||||
break;
|
||||
|
||||
case MADV_HWPOISON:
|
||||
@@ -4511,6 +4511,22 @@ SYSCALL_DECLARE(madvise)
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
if(advice == MADV_DONTDUMP){
|
||||
error = change_attr_process_memory_range(thread->vm, start, end,
|
||||
set_memory_range_flag,
|
||||
VR_DONTDUMP);
|
||||
if(error){
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
if(advice == MADV_DODUMP){
|
||||
error = change_attr_process_memory_range(thread->vm, start, end,
|
||||
clear_memory_range_flag,
|
||||
VR_DONTDUMP);
|
||||
if(error){
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
if(advice == MADV_DONTFORK ||
|
||||
advice == MADV_DOFORK){
|
||||
error = syscall_generic_forwarding(__NR_madvise, ctx);
|
||||
|
||||
Reference in New Issue
Block a user