diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/mempolicy.c | 29 | ||||
-rw-r--r-- | mm/shmem.c | 9 |
2 files changed, 22 insertions, 16 deletions
diff --git a/mm/mempolicy.c b/mm/mempolicy.c index acb5ee3587c3..1311dc4a3888 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c | |||
@@ -114,7 +114,7 @@ static void mpol_rebind_policy(struct mempolicy *pol, | |||
114 | const nodemask_t *newmask); | 114 | const nodemask_t *newmask); |
115 | 115 | ||
116 | /* Do sanity checking on a policy */ | 116 | /* Do sanity checking on a policy */ |
117 | static int mpol_check_policy(int mode, nodemask_t *nodes) | 117 | static int mpol_check_policy(unsigned short mode, nodemask_t *nodes) |
118 | { | 118 | { |
119 | int was_empty, is_empty; | 119 | int was_empty, is_empty; |
120 | 120 | ||
@@ -159,6 +159,8 @@ static int mpol_check_policy(int mode, nodemask_t *nodes) | |||
159 | if (!was_empty && is_empty) | 159 | if (!was_empty && is_empty) |
160 | return -EINVAL; | 160 | return -EINVAL; |
161 | break; | 161 | break; |
162 | default: | ||
163 | BUG(); | ||
162 | } | 164 | } |
163 | return 0; | 165 | return 0; |
164 | } | 166 | } |
@@ -185,7 +187,7 @@ static int is_valid_nodemask(nodemask_t *nodemask) | |||
185 | } | 187 | } |
186 | 188 | ||
187 | /* Create a new policy */ | 189 | /* Create a new policy */ |
188 | static struct mempolicy *mpol_new(int mode, nodemask_t *nodes) | 190 | static struct mempolicy *mpol_new(unsigned short mode, nodemask_t *nodes) |
189 | { | 191 | { |
190 | struct mempolicy *policy; | 192 | struct mempolicy *policy; |
191 | 193 | ||
@@ -218,6 +220,8 @@ static struct mempolicy *mpol_new(int mode, nodemask_t *nodes) | |||
218 | } | 220 | } |
219 | policy->v.nodes = *nodes; | 221 | policy->v.nodes = *nodes; |
220 | break; | 222 | break; |
223 | default: | ||
224 | BUG(); | ||
221 | } | 225 | } |
222 | policy->policy = mode; | 226 | policy->policy = mode; |
223 | policy->cpuset_mems_allowed = cpuset_mems_allowed(current); | 227 | policy->cpuset_mems_allowed = cpuset_mems_allowed(current); |
@@ -462,7 +466,7 @@ static void mpol_set_task_struct_flag(void) | |||
462 | } | 466 | } |
463 | 467 | ||
464 | /* Set the process memory policy */ | 468 | /* Set the process memory policy */ |
465 | static long do_set_mempolicy(int mode, nodemask_t *nodes) | 469 | static long do_set_mempolicy(unsigned short mode, nodemask_t *nodes) |
466 | { | 470 | { |
467 | struct mempolicy *new; | 471 | struct mempolicy *new; |
468 | 472 | ||
@@ -759,7 +763,7 @@ static struct page *new_vma_page(struct page *page, unsigned long private, int * | |||
759 | #endif | 763 | #endif |
760 | 764 | ||
761 | static long do_mbind(unsigned long start, unsigned long len, | 765 | static long do_mbind(unsigned long start, unsigned long len, |
762 | unsigned long mode, nodemask_t *nmask, | 766 | unsigned short mode, nodemask_t *nmask, |
763 | unsigned long flags) | 767 | unsigned long flags) |
764 | { | 768 | { |
765 | struct vm_area_struct *vma; | 769 | struct vm_area_struct *vma; |
@@ -769,9 +773,8 @@ static long do_mbind(unsigned long start, unsigned long len, | |||
769 | int err; | 773 | int err; |
770 | LIST_HEAD(pagelist); | 774 | LIST_HEAD(pagelist); |
771 | 775 | ||
772 | if ((flags & ~(unsigned long)(MPOL_MF_STRICT | | 776 | if (flags & ~(unsigned long)(MPOL_MF_STRICT | |
773 | MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) | 777 | MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) |
774 | || mode > MPOL_MAX) | ||
775 | return -EINVAL; | 778 | return -EINVAL; |
776 | if ((flags & MPOL_MF_MOVE_ALL) && !capable(CAP_SYS_NICE)) | 779 | if ((flags & MPOL_MF_MOVE_ALL) && !capable(CAP_SYS_NICE)) |
777 | return -EPERM; | 780 | return -EPERM; |
@@ -804,7 +807,7 @@ static long do_mbind(unsigned long start, unsigned long len, | |||
804 | if (!new) | 807 | if (!new) |
805 | flags |= MPOL_MF_DISCONTIG_OK; | 808 | flags |= MPOL_MF_DISCONTIG_OK; |
806 | 809 | ||
807 | pr_debug("mbind %lx-%lx mode:%ld nodes:%lx\n",start,start+len, | 810 | pr_debug("mbind %lx-%lx mode:%d nodes:%lx\n", start, start + len, |
808 | mode, nmask ? nodes_addr(*nmask)[0] : -1); | 811 | mode, nmask ? nodes_addr(*nmask)[0] : -1); |
809 | 812 | ||
810 | down_write(&mm->mmap_sem); | 813 | down_write(&mm->mmap_sem); |
@@ -905,6 +908,8 @@ asmlinkage long sys_mbind(unsigned long start, unsigned long len, | |||
905 | nodemask_t nodes; | 908 | nodemask_t nodes; |
906 | int err; | 909 | int err; |
907 | 910 | ||
911 | if (mode >= MPOL_MAX) | ||
912 | return -EINVAL; | ||
908 | err = get_nodes(&nodes, nmask, maxnode); | 913 | err = get_nodes(&nodes, nmask, maxnode); |
909 | if (err) | 914 | if (err) |
910 | return err; | 915 | return err; |
@@ -918,7 +923,7 @@ asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask, | |||
918 | int err; | 923 | int err; |
919 | nodemask_t nodes; | 924 | nodemask_t nodes; |
920 | 925 | ||
921 | if (mode < 0 || mode > MPOL_MAX) | 926 | if (mode < 0 || mode >= MPOL_MAX) |
922 | return -EINVAL; | 927 | return -EINVAL; |
923 | err = get_nodes(&nodes, nmask, maxnode); | 928 | err = get_nodes(&nodes, nmask, maxnode); |
924 | if (err) | 929 | if (err) |
@@ -1201,7 +1206,7 @@ static unsigned interleave_nodes(struct mempolicy *policy) | |||
1201 | */ | 1206 | */ |
1202 | unsigned slab_node(struct mempolicy *policy) | 1207 | unsigned slab_node(struct mempolicy *policy) |
1203 | { | 1208 | { |
1204 | int pol = policy ? policy->policy : MPOL_DEFAULT; | 1209 | unsigned short pol = policy ? policy->policy : MPOL_DEFAULT; |
1205 | 1210 | ||
1206 | switch (pol) { | 1211 | switch (pol) { |
1207 | case MPOL_INTERLEAVE: | 1212 | case MPOL_INTERLEAVE: |
@@ -1635,7 +1640,7 @@ restart: | |||
1635 | return 0; | 1640 | return 0; |
1636 | } | 1641 | } |
1637 | 1642 | ||
1638 | void mpol_shared_policy_init(struct shared_policy *info, int policy, | 1643 | void mpol_shared_policy_init(struct shared_policy *info, unsigned short policy, |
1639 | nodemask_t *policy_nodes) | 1644 | nodemask_t *policy_nodes) |
1640 | { | 1645 | { |
1641 | info->root = RB_ROOT; | 1646 | info->root = RB_ROOT; |
@@ -1830,7 +1835,7 @@ static inline int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol) | |||
1830 | char *p = buffer; | 1835 | char *p = buffer; |
1831 | int l; | 1836 | int l; |
1832 | nodemask_t nodes; | 1837 | nodemask_t nodes; |
1833 | int mode = pol ? pol->policy : MPOL_DEFAULT; | 1838 | unsigned short mode = pol ? pol->policy : MPOL_DEFAULT; |
1834 | 1839 | ||
1835 | switch (mode) { | 1840 | switch (mode) { |
1836 | case MPOL_DEFAULT: | 1841 | case MPOL_DEFAULT: |
diff --git a/mm/shmem.c b/mm/shmem.c index f514dd392cd9..d8ef7ba831a5 100644 --- a/mm/shmem.c +++ b/mm/shmem.c | |||
@@ -1079,7 +1079,8 @@ redirty: | |||
1079 | 1079 | ||
1080 | #ifdef CONFIG_NUMA | 1080 | #ifdef CONFIG_NUMA |
1081 | #ifdef CONFIG_TMPFS | 1081 | #ifdef CONFIG_TMPFS |
1082 | static int shmem_parse_mpol(char *value, int *policy, nodemask_t *policy_nodes) | 1082 | static int shmem_parse_mpol(char *value, unsigned short *policy, |
1083 | nodemask_t *policy_nodes) | ||
1083 | { | 1084 | { |
1084 | char *nodelist = strchr(value, ':'); | 1085 | char *nodelist = strchr(value, ':'); |
1085 | int err = 1; | 1086 | int err = 1; |
@@ -1128,7 +1129,7 @@ out: | |||
1128 | return err; | 1129 | return err; |
1129 | } | 1130 | } |
1130 | 1131 | ||
1131 | static void shmem_show_mpol(struct seq_file *seq, int policy, | 1132 | static void shmem_show_mpol(struct seq_file *seq, unsigned short policy, |
1132 | const nodemask_t policy_nodes) | 1133 | const nodemask_t policy_nodes) |
1133 | { | 1134 | { |
1134 | char *policy_string; | 1135 | char *policy_string; |
@@ -1197,13 +1198,13 @@ static struct page *shmem_alloc_page(gfp_t gfp, | |||
1197 | } | 1198 | } |
1198 | #else /* !CONFIG_NUMA */ | 1199 | #else /* !CONFIG_NUMA */ |
1199 | #ifdef CONFIG_TMPFS | 1200 | #ifdef CONFIG_TMPFS |
1200 | static inline int shmem_parse_mpol(char *value, int *policy, | 1201 | static inline int shmem_parse_mpol(char *value, unsigned short *policy, |
1201 | nodemask_t *policy_nodes) | 1202 | nodemask_t *policy_nodes) |
1202 | { | 1203 | { |
1203 | return 1; | 1204 | return 1; |
1204 | } | 1205 | } |
1205 | 1206 | ||
1206 | static inline void shmem_show_mpol(struct seq_file *seq, int policy, | 1207 | static inline void shmem_show_mpol(struct seq_file *seq, unsigned short policy, |
1207 | const nodemask_t policy_nodes) | 1208 | const nodemask_t policy_nodes) |
1208 | { | 1209 | { |
1209 | } | 1210 | } |