This fixes: $ taskset -p 0x1 1234 pid 1234's current affinity mask: fffffff taskset: failed to set pid 1234's affinity: Permission denied
Perhaps older Windows versions were more relaxed if PROCESS_SET_INFORMATION is granted.
-- Regards, Christian
From 0275a36723dd4552a26880e4ac8ba9b6dc41b17f Mon Sep 17 00:00:00 2001 From: Christian Franke <christian.fra...@t-online.de> Date: Sat, 8 Mar 2025 14:05:20 +0100 Subject: [PATCH] Cygwin: sched_setaffinity: fix EACCES if pid of other process is used GetProcessGroupAffinity() requires PROCESS_QUERY_LIMITED_INFORMATION. Fixes: 641ecb07533e ("Cygwin: Implement sched_[gs]etaffinity()") Signed-off-by: Christian Franke <christian.fra...@t-online.de> --- winsup/cygwin/release/3.6.0 | 2 ++ winsup/cygwin/sched.cc | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/release/3.6.0 b/winsup/cygwin/release/3.6.0 index 8225f2ccc..4c953a84d 100644 --- a/winsup/cygwin/release/3.6.0 +++ b/winsup/cygwin/release/3.6.0 @@ -126,3 +126,5 @@ Fixes: - Fix 'lost connection' error in scp. Addresses: https://cygwin.com/pipermail/cygwin/2025-January/257143.html + +- Fix EACCES error of sched_setaffinity(2) if pid of other process is used. diff --git a/winsup/cygwin/sched.cc b/winsup/cygwin/sched.cc index 86941b2ac..2f4fbc31a 100644 --- a/winsup/cygwin/sched.cc +++ b/winsup/cygwin/sched.cc @@ -661,7 +661,8 @@ sched_setaffinity (pid_t pid, size_t sizeof_set, const cpu_set_t *set) if (p) { process = pid && pid != myself->pid ? - OpenProcess (PROCESS_SET_INFORMATION, FALSE, + OpenProcess (PROCESS_SET_INFORMATION | + PROCESS_QUERY_LIMITED_INFORMATION, FALSE, p->dwProcessId) : GetCurrentProcess (); if (!GetProcessGroupAffinity (process, &groupcount, grouparray)) { -- 2.45.1