Re: [PATCH v2 2/2] prctl.2: Document the new PR_GET_TASK_SIZE option

From: Rafael Aquini
Date: Thu May 02 2019 - 21:50:30 EST


On Thu, May 02, 2019 at 03:23:12PM -0700, Yury Norov wrote:
> ÑÑ, 2 ÐÐÑ 2019 Ð. Ð 13:52, Joel Savitz <jsavitz@xxxxxxxxxx>:
> >
> > Add a short explanation of the new PR_GET_TASK_SIZE option for the benefit
> > of future generations.
> >
> > Signed-off-by: Joel Savitz <jsavitz@xxxxxxxxxx>
> > ---
> > man2/prctl.2 | 9 +++++++++
> > 1 file changed, 9 insertions(+)
> >
> > diff --git a/man2/prctl.2 b/man2/prctl.2
> > index 06d8e13c7..35a6a3919 100644
> > --- a/man2/prctl.2
> > +++ b/man2/prctl.2
> > @@ -49,6 +49,7 @@
> > .\" 2013-01-10 Kees Cook, document PR_SET_PTRACER
> > .\" 2012-02-04 Michael Kerrisk, document PR_{SET,GET}_CHILD_SUBREAPER
> > .\" 2014-11-10 Dave Hansen, document PR_MPX_{EN,DIS}ABLE_MANAGEMENT
> > +.\" 2019-05-02 Joel Savitz, document PR_GET_TASK_SIZE
> > .\"
> > .\"
> > .TH PRCTL 2 2019-03-06 "Linux" "Linux Programmer's Manual"
> > @@ -1375,6 +1376,14 @@ system call on Tru64).
> > for information on versions and architectures)
> > Return unaligned access control bits, in the location pointed to by
> > .IR "(unsigned int\ *) arg2" .
> > +.TP
> > +.B PR_GET_TASK_SIZE
> > +Copy the value of TASK_SIZE to the userspace address in
> > +.IR "(unsigned long\ *) arg2" .
>
> This is a bad idea to use pointers to size-undefined types in interface because
> that way you have to introduce compat versions of interface functions.
> I'd recommend you to use u64 or unsigned long long here.
>
unsigned long long seems to make little sense too as prctl(2) extra arguments
are of unsigned long type (good for passing the pointer address, in this case).

a pointer to an unsigned long var is OK for native builds, and for the
compat mode issue you correctly pointed out, the storage size needs to be
dealt with at the kernel side, by checking test_thread_flag(TIF_ADDR32),
before proceeding with copy_to_user().


> The comment not clear for reader not familiar with kernel internals.
> Can you rephrase
> TASK_SIZE like 'the (next after) highest possible userspace address',
> or similar?
>
> For the updated version could you please CC to yury.norov@xxxxxxxxx?
>
> > +Return
> > +.B EFAULT
> > +if this operation fails.
> > +
> > .SH RETURN VALUE
> > On success,
> > .BR PR_GET_DUMPABLE ,
> > --
> > 2.18.1
> >