From: Aleksa Sarai Date: Tue, 29 Sep 2020 22:35:08 +0000 (+1000) Subject: sched_getattr.2: Update to include changed size semantics X-Git-Tag: man-pages-5.09~221 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1953608d8a7020ed2ad6fc7b73b436ae48d0d608;p=thirdparty%2Fman-pages.git 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 Signed-off-by: Michael Kerrisk --- diff --git a/man2/sched_setattr.2 b/man2/sched_setattr.2 index 2592a761a0..da0972a6a8 100644 --- a/man2/sched_setattr.2 +++ b/man2/sched_setattr.2 @@ -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 ()