[Bug 260487] sched_getaffinity(3)/sched_setaffinity(3): wrong handling of PID 0
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 260487] sched_getaffinity(3)/sched_setaffinity(3): wrong handling of PID 0"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 260487] sched_getaffinity(3)/sched_setaffinity(3): wrong handling of PID 0"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 260487] sched_getaffinity(3)/sched_setaffinity(3): wrong handling of PID 0"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 17 Dec 2021 05:21:04 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260487
Bug ID: 260487
Summary: sched_getaffinity(3)/sched_setaffinity(3): wrong
handling of PID 0
Product: Base System
Version: CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: bin
Assignee: bugs@FreeBSD.org
Reporter: sigsys@gmail.com
sched_getaffinity(3)/sched_setaffinity(3) are documented to use PID 0 to refer
to the current process, but the underlying
cpuset_getaffinity(2)/cpuset_setaffinity(2) only do so with PID -1.
I noticed FFmpeg library code passing PID 0 to sched_getaffinity().
diff --git a/lib/libc/gen/sched_getaffinity.c
b/lib/libc/gen/sched_getaffinity.c
index 5557d3d93b47..7fca53e39b4b 100644
--- a/lib/libc/gen/sched_getaffinity.c
+++ b/lib/libc/gen/sched_getaffinity.c
@@ -32,6 +32,6 @@
int
sched_getaffinity(pid_t pid, size_t cpusetsz, cpuset_t *cpuset)
{
- return (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, pid,
- cpusetsz, cpuset));
+ return (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID,
+ pid == 0 ? -1 : pid, cpusetsz, cpuset));
}
diff --git a/lib/libc/gen/sched_setaffinity.c
b/lib/libc/gen/sched_setaffinity.c
index ad775b5dbce5..1c083b4b108a 100644
--- a/lib/libc/gen/sched_setaffinity.c
+++ b/lib/libc/gen/sched_setaffinity.c
@@ -32,6 +32,6 @@
int
sched_setaffinity(pid_t pid, size_t cpusetsz, const cpuset_t *cpuset)
{
- return (cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, pid,
- cpusetsz, cpuset));
+ return (cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID,
+ pid == 0 ? -1 : pid, cpusetsz, cpuset));
}
--
You are receiving this mail because:
You are the assignee for the bug.