diff options
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r-- | mm/memcontrol.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index e46451e1d9b7..7385d58fb061 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -838,32 +838,18 @@ out: | |||
838 | return ret; | 838 | return ret; |
839 | } | 839 | } |
840 | 840 | ||
841 | static int mem_cgroup_write_strategy(char *buf, unsigned long long *tmp) | ||
842 | { | ||
843 | *tmp = memparse(buf, &buf); | ||
844 | if (*buf != '\0') | ||
845 | return -EINVAL; | ||
846 | |||
847 | /* | ||
848 | * Round up the value to the closest page size | ||
849 | */ | ||
850 | *tmp = ((*tmp + PAGE_SIZE - 1) >> PAGE_SHIFT) << PAGE_SHIFT; | ||
851 | return 0; | ||
852 | } | ||
853 | |||
854 | static u64 mem_cgroup_read(struct cgroup *cont, struct cftype *cft) | 841 | static u64 mem_cgroup_read(struct cgroup *cont, struct cftype *cft) |
855 | { | 842 | { |
856 | return res_counter_read_u64(&mem_cgroup_from_cont(cont)->res, | 843 | return res_counter_read_u64(&mem_cgroup_from_cont(cont)->res, |
857 | cft->private); | 844 | cft->private); |
858 | } | 845 | } |
859 | 846 | ||
860 | static ssize_t mem_cgroup_write(struct cgroup *cont, struct cftype *cft, | 847 | static int mem_cgroup_write(struct cgroup *cont, struct cftype *cft, |
861 | struct file *file, const char __user *userbuf, | 848 | const char *buffer) |
862 | size_t nbytes, loff_t *ppos) | ||
863 | { | 849 | { |
864 | return res_counter_write(&mem_cgroup_from_cont(cont)->res, | 850 | return res_counter_write(&mem_cgroup_from_cont(cont)->res, |
865 | cft->private, userbuf, nbytes, ppos, | 851 | cft->private, buffer, |
866 | mem_cgroup_write_strategy); | 852 | res_counter_memparse_write_strategy); |
867 | } | 853 | } |
868 | 854 | ||
869 | static int mem_cgroup_reset(struct cgroup *cont, unsigned int event) | 855 | static int mem_cgroup_reset(struct cgroup *cont, unsigned int event) |
@@ -940,7 +926,7 @@ static struct cftype mem_cgroup_files[] = { | |||
940 | { | 926 | { |
941 | .name = "limit_in_bytes", | 927 | .name = "limit_in_bytes", |
942 | .private = RES_LIMIT, | 928 | .private = RES_LIMIT, |
943 | .write = mem_cgroup_write, | 929 | .write_string = mem_cgroup_write, |
944 | .read_u64 = mem_cgroup_read, | 930 | .read_u64 = mem_cgroup_read, |
945 | }, | 931 | }, |
946 | { | 932 | { |