2 * SYSCALL_DEFINE6(mbind, unsigned long, start, unsigned long, len,
3 unsigned long, mode, unsigned long __user *, nmask,
4 unsigned long, maxnode, unsigned, flags)
7 #include <linux/mempolicy.h>
13 #include "utils.h" // page_size
15 #define MPOL_F_STATIC_NODES (1 << 15)
16 #define MPOL_F_RELATIVE_NODES (1 << 14)
18 static void sanitise_mbind(int childno
)
20 unsigned long maxnode
;
22 (void) common_set_mmap_ptr_len(childno
);
25 shm
->a5
[childno
] &= ~((page_size
* 8) - 1);
27 maxnode
= shm
->a5
[childno
];
29 if (maxnode
< 2 || maxnode
> (page_size
* 8)) {
30 shm
->a5
[childno
] = rand32();
36 struct syscallentry syscall_mbind
= {
48 .values
= { MPOL_DEFAULT
, MPOL_BIND
, MPOL_INTERLEAVE
, MPOL_PREFERRED
},
52 .arg4type
= ARG_ADDRESS
,
54 .arg5name
= "maxnode",
55 .arg5type
= ARG_RANGE
,
63 .values
= { MPOL_F_STATIC_NODES
, MPOL_F_RELATIVE_NODES
},
65 .sanitise
= sanitise_mbind
,