]> Git Repo - linux.git/blobdiff - net/ipv4/tcp_memcontrol.c
tcp: tcp_v[46]_conn_request: fix snt_synack initialization
[linux.git] / net / ipv4 / tcp_memcontrol.c
index d4f015ad6c841ddcc4c4327eb4ccf2ad49697dff..f7a2ec3ac584573f52287e8d6bd1514637beb561 100644 (file)
@@ -102,17 +102,19 @@ static int tcp_update_limit(struct mem_cgroup *memcg, u64 val)
        return 0;
 }
 
-static int tcp_cgroup_write(struct cgroup_subsys_state *css, struct cftype *cft,
-                           char *buffer)
+static ssize_t tcp_cgroup_write(struct kernfs_open_file *of,
+                               char *buf, size_t nbytes, loff_t off)
 {
-       struct mem_cgroup *memcg = mem_cgroup_from_css(css);
+       struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
        unsigned long long val;
        int ret = 0;
 
-       switch (cft->private) {
+       buf = strstrip(buf);
+
+       switch (of_cft(of)->private) {
        case RES_LIMIT:
                /* see memcontrol.c */
-               ret = res_counter_memparse_write_strategy(buffer, &val);
+               ret = res_counter_memparse_write_strategy(buf, &val);
                if (ret)
                        break;
                ret = tcp_update_limit(memcg, val);
@@ -121,7 +123,7 @@ static int tcp_cgroup_write(struct cgroup_subsys_state *css, struct cftype *cft,
                ret = -EINVAL;
                break;
        }
-       return ret;
+       return ret ?: nbytes;
 }
 
 static u64 tcp_read_stat(struct mem_cgroup *memcg, int type, u64 default_val)
@@ -168,17 +170,18 @@ static u64 tcp_cgroup_read(struct cgroup_subsys_state *css, struct cftype *cft)
        return val;
 }
 
-static int tcp_cgroup_reset(struct cgroup_subsys_state *css, unsigned int event)
+static ssize_t tcp_cgroup_reset(struct kernfs_open_file *of,
+                               char *buf, size_t nbytes, loff_t off)
 {
        struct mem_cgroup *memcg;
        struct cg_proto *cg_proto;
 
-       memcg = mem_cgroup_from_css(css);
+       memcg = mem_cgroup_from_css(of_css(of));
        cg_proto = tcp_prot.proto_cgroup(memcg);
        if (!cg_proto)
-               return 0;
+               return nbytes;
 
-       switch (event) {
+       switch (of_cft(of)->private) {
        case RES_MAX_USAGE:
                res_counter_reset_max(&cg_proto->memory_allocated);
                break;
@@ -187,13 +190,13 @@ static int tcp_cgroup_reset(struct cgroup_subsys_state *css, unsigned int event)
                break;
        }
 
-       return 0;
+       return nbytes;
 }
 
 static struct cftype tcp_files[] = {
        {
                .name = "kmem.tcp.limit_in_bytes",
-               .write_string = tcp_cgroup_write,
+               .write = tcp_cgroup_write,
                .read_u64 = tcp_cgroup_read,
                .private = RES_LIMIT,
        },
@@ -205,13 +208,13 @@ static struct cftype tcp_files[] = {
        {
                .name = "kmem.tcp.failcnt",
                .private = RES_FAILCNT,
-               .trigger = tcp_cgroup_reset,
+               .write = tcp_cgroup_reset,
                .read_u64 = tcp_cgroup_read,
        },
        {
                .name = "kmem.tcp.max_usage_in_bytes",
                .private = RES_MAX_USAGE,
-               .trigger = tcp_cgroup_reset,
+               .write = tcp_cgroup_reset,
                .read_u64 = tcp_cgroup_read,
        },
        { }     /* terminate */
This page took 0.038657 seconds and 4 git commands to generate.