|
@@ -114,7 +114,7 @@ static void mpol_rebind_policy(struct mempolicy *pol,
|
|
|
const nodemask_t *newmask);
|
|
|
|
|
|
/* Do sanity checking on a policy */
|
|
|
-static int mpol_check_policy(int mode, nodemask_t *nodes)
|
|
|
+static int mpol_check_policy(unsigned short mode, nodemask_t *nodes)
|
|
|
{
|
|
|
int was_empty, is_empty;
|
|
|
|
|
@@ -159,6 +159,8 @@ static int mpol_check_policy(int mode, nodemask_t *nodes)
|
|
|
if (!was_empty && is_empty)
|
|
|
return -EINVAL;
|
|
|
break;
|
|
|
+ default:
|
|
|
+ BUG();
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
@@ -185,7 +187,7 @@ static int is_valid_nodemask(nodemask_t *nodemask)
|
|
|
}
|
|
|
|
|
|
/* Create a new policy */
|
|
|
-static struct mempolicy *mpol_new(int mode, nodemask_t *nodes)
|
|
|
+static struct mempolicy *mpol_new(unsigned short mode, nodemask_t *nodes)
|
|
|
{
|
|
|
struct mempolicy *policy;
|
|
|
|
|
@@ -218,6 +220,8 @@ static struct mempolicy *mpol_new(int mode, nodemask_t *nodes)
|
|
|
}
|
|
|
policy->v.nodes = *nodes;
|
|
|
break;
|
|
|
+ default:
|
|
|
+ BUG();
|
|
|
}
|
|
|
policy->policy = mode;
|
|
|
policy->cpuset_mems_allowed = cpuset_mems_allowed(current);
|
|
@@ -462,7 +466,7 @@ static void mpol_set_task_struct_flag(void)
|
|
|
}
|
|
|
|
|
|
/* Set the process memory policy */
|
|
|
-static long do_set_mempolicy(int mode, nodemask_t *nodes)
|
|
|
+static long do_set_mempolicy(unsigned short mode, nodemask_t *nodes)
|
|
|
{
|
|
|
struct mempolicy *new;
|
|
|
|
|
@@ -759,7 +763,7 @@ static struct page *new_vma_page(struct page *page, unsigned long private, int *
|
|
|
#endif
|
|
|
|
|
|
static long do_mbind(unsigned long start, unsigned long len,
|
|
|
- unsigned long mode, nodemask_t *nmask,
|
|
|
+ unsigned short mode, nodemask_t *nmask,
|
|
|
unsigned long flags)
|
|
|
{
|
|
|
struct vm_area_struct *vma;
|
|
@@ -769,9 +773,8 @@ static long do_mbind(unsigned long start, unsigned long len,
|
|
|
int err;
|
|
|
LIST_HEAD(pagelist);
|
|
|
|
|
|
- if ((flags & ~(unsigned long)(MPOL_MF_STRICT |
|
|
|
- MPOL_MF_MOVE | MPOL_MF_MOVE_ALL))
|
|
|
- || mode > MPOL_MAX)
|
|
|
+ if (flags & ~(unsigned long)(MPOL_MF_STRICT |
|
|
|
+ MPOL_MF_MOVE | MPOL_MF_MOVE_ALL))
|
|
|
return -EINVAL;
|
|
|
if ((flags & MPOL_MF_MOVE_ALL) && !capable(CAP_SYS_NICE))
|
|
|
return -EPERM;
|
|
@@ -804,7 +807,7 @@ static long do_mbind(unsigned long start, unsigned long len,
|
|
|
if (!new)
|
|
|
flags |= MPOL_MF_DISCONTIG_OK;
|
|
|
|
|
|
- pr_debug("mbind %lx-%lx mode:%ld nodes:%lx\n",start,start+len,
|
|
|
+ pr_debug("mbind %lx-%lx mode:%d nodes:%lx\n", start, start + len,
|
|
|
mode, nmask ? nodes_addr(*nmask)[0] : -1);
|
|
|
|
|
|
down_write(&mm->mmap_sem);
|
|
@@ -905,6 +908,8 @@ asmlinkage long sys_mbind(unsigned long start, unsigned long len,
|
|
|
nodemask_t nodes;
|
|
|
int err;
|
|
|
|
|
|
+ if (mode >= MPOL_MAX)
|
|
|
+ return -EINVAL;
|
|
|
err = get_nodes(&nodes, nmask, maxnode);
|
|
|
if (err)
|
|
|
return err;
|
|
@@ -918,7 +923,7 @@ asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask,
|
|
|
int err;
|
|
|
nodemask_t nodes;
|
|
|
|
|
|
- if (mode < 0 || mode > MPOL_MAX)
|
|
|
+ if (mode < 0 || mode >= MPOL_MAX)
|
|
|
return -EINVAL;
|
|
|
err = get_nodes(&nodes, nmask, maxnode);
|
|
|
if (err)
|
|
@@ -1201,7 +1206,7 @@ static unsigned interleave_nodes(struct mempolicy *policy)
|
|
|
*/
|
|
|
unsigned slab_node(struct mempolicy *policy)
|
|
|
{
|
|
|
- int pol = policy ? policy->policy : MPOL_DEFAULT;
|
|
|
+ unsigned short pol = policy ? policy->policy : MPOL_DEFAULT;
|
|
|
|
|
|
switch (pol) {
|
|
|
case MPOL_INTERLEAVE:
|
|
@@ -1635,7 +1640,7 @@ restart:
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-void mpol_shared_policy_init(struct shared_policy *info, int policy,
|
|
|
+void mpol_shared_policy_init(struct shared_policy *info, unsigned short policy,
|
|
|
nodemask_t *policy_nodes)
|
|
|
{
|
|
|
info->root = RB_ROOT;
|
|
@@ -1830,7 +1835,7 @@ static inline int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol)
|
|
|
char *p = buffer;
|
|
|
int l;
|
|
|
nodemask_t nodes;
|
|
|
- int mode = pol ? pol->policy : MPOL_DEFAULT;
|
|
|
+ unsigned short mode = pol ? pol->policy : MPOL_DEFAULT;
|
|
|
|
|
|
switch (mode) {
|
|
|
case MPOL_DEFAULT:
|