sched_getaffinity: Check arguments in the same order as in Linux

(1) Check if size is large enough
(2) Check if size is positive

Fujitsu: POSTK_DEBUG_TEMP_FIX_5
Refs: #1121
Change-Id: I3e41720c89ef89294820f7f4fa8df1a69a7011b0
This commit is contained in:
Ken Sato
2018-06-21 09:08:34 +09:00
committed by Dominique Martinet
parent 11756d96ef
commit e7b6a3472b
5 changed files with 195 additions and 10 deletions

View File

@@ -6793,22 +6793,14 @@ SYSCALL_DECLARE(sched_getaffinity)
int ret;
dkprintf("%s() len: %d, mask: %p\n", __FUNCTION__, len, u_cpu_set);
#ifdef POSTK_DEBUG_TEMP_FIX_5 /* sched_getaffinity arguments check add (S64FX_10) */
if (len * 8 < num_processors) {
kprintf("%s:%d Too small buffer.\n", __FILE__, __LINE__);
dkprintf("%s: Too small buffer.\n", __func__);
return -EINVAL;
}
if (len & (sizeof(unsigned long)-1)) {
kprintf("%s:%d Size not align to unsigned long.\n", __FILE__, __LINE__);
dkprintf("%s: Size not align to unsigned long.\n", __func__);
return -EINVAL;
}
#else /* POSTK_DEBUG_TEMP_FIX_5 */
if (!len || u_cpu_set == (cpu_set_t *)-1)
return -EINVAL;
if ((len * BITS_PER_BYTE) < __CPU_SETSIZE)
return -EINVAL;
#endif /* POSTK_DEBUG_TEMP_FIX_5 */
len = MIN2(len, sizeof(k_cpu_set));