From 178a6112c276b489f23c465545ab47c76ae2e440 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Sat, 14 Jan 2017 16:11:50 +0800 Subject: [PATCH] libc: Take cpusetsize into consideration for sched_getaffinity() --- lib/libc/sys/sched_getaffinity.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/libc/sys/sched_getaffinity.c b/lib/libc/sys/sched_getaffinity.c index 5ac744fe63..79242fe0fe 100644 --- a/lib/libc/sys/sched_getaffinity.c +++ b/lib/libc/sys/sched_getaffinity.c @@ -40,7 +40,18 @@ int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask) { + cpu_set_t mask1; + int ret; - memset(mask, 0, cpusetsize); - return (lwp_getaffinity(pid, -1, mask)); + ret = lwp_getaffinity(pid, -1, &mask1); + if (ret < 0) + return (ret); + + if (cpusetsize > sizeof(mask1)) { + memset(mask, 0, cpusetsize); + memcpy(mask, &mask1, sizeof(mask1)); + } else { + memcpy(mask, &mask1, cpusetsize); + } + return (0); } -- 2.11.4.GIT