On Fri, Jun 3, 2022 at 5:40 PM Zach O'Keefe <zokeefe@xxxxxxxxxx> wrote: > > Allow MADV_COLLAPSE behavior for process_madvise(2) if caller has > CAP_SYS_ADMIN or is requesting collapse of it's own memory. It is fine to me. But I'd like to hear more from other folks. > > This is useful for the development of userspace agents that seek to > optimize THP utilization system-wide by using userspace signals to > prioritize what memory is most deserving of being THP-backed. > > Signed-off-by: Zach O'Keefe <zokeefe@xxxxxxxxxx> > --- > mm/madvise.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/mm/madvise.c b/mm/madvise.c > index eccac2620226..b19e2f4b924c 100644 > --- a/mm/madvise.c > +++ b/mm/madvise.c > @@ -1171,13 +1171,15 @@ madvise_behavior_valid(int behavior) > } > > static bool > -process_madvise_behavior_valid(int behavior) > +process_madvise_behavior_valid(int behavior, struct task_struct *task) > { > switch (behavior) { > case MADV_COLD: > case MADV_PAGEOUT: > case MADV_WILLNEED: > return true; > + case MADV_COLLAPSE: > + return task == current || capable(CAP_SYS_ADMIN); > default: > return false; > } > @@ -1455,7 +1457,7 @@ SYSCALL_DEFINE5(process_madvise, int, pidfd, const struct iovec __user *, vec, > goto free_iov; > } > > - if (!process_madvise_behavior_valid(behavior)) { > + if (!process_madvise_behavior_valid(behavior, task)) { > ret = -EINVAL; > goto release_task; > } > -- > 2.36.1.255.ge46751e96f-goog >