2020-09-29 02:07:25

by Sergey Senozhatsky

[permalink] [raw]
Subject: [RFC] process /proc/PID/smaps vs /proc/PID/smaps_rollup

Hello,

One of our unprivileged daemon process needs process PSS info. That
info is usually available in /proc/PID/smaps on per-vma basis, on
in /proc/PID/smaps_rollup as a bunch of accumulated per-vma values.
The latter one is much faster and simpler to get, but, unlike smaps,
smaps_rollup requires PTRACE_MODE_READ, which we don't want to
grant to our unprivileged daemon.

So the question is - can we get, somehow, accumulated PSS info from
a non-privileged process? (Iterating through all process' smaps
vma-s consumes quite a bit of CPU time). This is related to another
question - why do smaps and smaps_rollup have different permission
requirements?

-ss


2020-09-29 02:44:10

by Sergey Senozhatsky

[permalink] [raw]
Subject: Re: [RFC] process /proc/PID/smaps vs /proc/PID/smaps_rollup

On (20/09/29 11:05), Sergey Senozhatsky wrote:
> Hello,
>
> One of our unprivileged daemon process needs process PSS info. That
> info is usually available in /proc/PID/smaps on per-vma basis, on
> in /proc/PID/smaps_rollup as a bunch of accumulated per-vma values.
> The latter one is much faster and simpler to get, but, unlike smaps,
> smaps_rollup requires PTRACE_MODE_READ, which we don't want to
> grant to our unprivileged daemon.
>
> So the question is - can we get, somehow, accumulated PSS info from
> a non-privileged process? (Iterating through all process' smaps
> vma-s consumes quite a bit of CPU time). This is related to another
> question - why do smaps and smaps_rollup have different permission
> requirements?

Hold on, seems that I misread something, /proc/PID/smaps is also
unavailable. So the question is, then, how do we get PSS info of
a random user-space process from an unprivileged daemon?

-ss

2022-09-08 10:29:30

by Vincent Whitchurch

[permalink] [raw]
Subject: Re: [RFC] process /proc/PID/smaps vs /proc/PID/smaps_rollup

On Tue, Sep 29, 2020 at 11:40:18AM +0900, Sergey Senozhatsky wrote:
> On (20/09/29 11:05), Sergey Senozhatsky wrote:
> > One of our unprivileged daemon process needs process PSS info. That
> > info is usually available in /proc/PID/smaps on per-vma basis, on
> > in /proc/PID/smaps_rollup as a bunch of accumulated per-vma values.
> > The latter one is much faster and simpler to get, but, unlike smaps,
> > smaps_rollup requires PTRACE_MODE_READ, which we don't want to
> > grant to our unprivileged daemon.
> >
> > So the question is - can we get, somehow, accumulated PSS info from
> > a non-privileged process? (Iterating through all process' smaps
> > vma-s consumes quite a bit of CPU time). This is related to another
> > question - why do smaps and smaps_rollup have different permission
> > requirements?
>
> Hold on, seems that I misread something, /proc/PID/smaps is also
> unavailable. So the question is, then, how do we get PSS info of
> a random user-space process from an unprivileged daemon?

smaps contains a lot of sensitive information, but perhaps smaps_rollup
could be allowed without ptrace rights if the range information is
masked. I've posted a patch here:

https://lore.kernel.org/linux-mm/[email protected]/