sched_getattr.2: Update to include changed size semantics

Due to a userspace breakage, commit 1251201c0d34 ("sched/core: Fix
uclamp ABI bug, clean up and robustify sched_read_attr() ABI logic
and code") changed the semantics of sched_getattr(2) when the
userspace struct is smaller than the kernel struct. Now, any
trailing non-zero data in the kernel structure is ignored when
copying to userspace. We also document the original error code
correctly (it was EFBIG not E2BIG) in the BUGS section.

Ref: 1251201c0d34 ("sched/core: Fix uclamp ABI bug, clean up and
                 robustify sched_read_attr() ABI logic and code")

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Aleksa Sarai 2020-09-30 08:35:08 +10:00 committed by Michael Kerrisk
parent d8f63a9860
commit 1953608d8a
1 changed files with 12 additions and 4 deletions

View File

@ -286,10 +286,8 @@ structure,
the additional bytes in the user-space structure are not touched.
If the caller-provided structure is smaller than the kernel
.I sched_attr
structure and the kernel needs to return values outside the provided space,
.BR sched_getattr ()
fails with the error
.BR E2BIG .
structure, the kernel will silently not return any values which would be stored
outside the provided space.
As with
.BR sched_setattr (),
these semantics allow for future extensibility of the interface.
@ -416,6 +414,16 @@ failed with the error
instead of
.BR E2BIG
for the case described in ERRORS.
.PP
In Linux versions up to 5.3,
.BR sched_getattr ()
failed with the error
.BR EFBIG
if the in-kernel
.IR sched_attr
structure was larger than the
.IR size
passed by user space.
.\" In Linux versions up to up 3.15,
.\" FIXME . patch from Peter Zijlstra pending
.\" .BR sched_setattr ()