MEM_CGROUP_NTARGETS,
 };
 
-/*
- * Bits in struct cg_proto.flags
- */
-enum cg_proto_flags {
-       /* Currently active and new sockets should be assigned to cgroups */
-       MEMCG_SOCK_ACTIVE,
-       /* It was ever activated; we must disarm static keys on destruction */
-       MEMCG_SOCK_ACTIVATED,
-};
-
 struct cg_proto {
        struct page_counter     memory_allocated;       /* Current allocated memory. */
        struct percpu_counter   sockets_allocated;      /* Current number of sockets. */
        int                     memory_pressure;
+       bool                    active;
        long                    sysctl_mem[3];
-       unsigned long           flags;
        /*
         * memcg field is used to find which memcg we belong directly
         * Each memcg struct can hold more than one cg_proto, so container_of
 
                rcu_read_lock();
                memcg = mem_cgroup_from_task(current);
                cg_proto = sk->sk_prot->proto_cgroup(memcg);
-               if (cg_proto && test_bit(MEMCG_SOCK_ACTIVE, &cg_proto->flags) &&
+               if (cg_proto && cg_proto->active &&
                    css_tryget_online(&memcg->css)) {
                        sk->sk_cgrp = cg_proto;
                }
 
 
        percpu_counter_destroy(&cg_proto->sockets_allocated);
 
-       if (test_bit(MEMCG_SOCK_ACTIVATED, &cg_proto->flags))
+       if (cg_proto->active)
                static_key_slow_dec(&memcg_socket_limit_enabled);
 
 }
                cg_proto->sysctl_mem[i] = min_t(long, nr_pages,
                                                sysctl_tcp_mem[i]);
 
-       if (nr_pages == PAGE_COUNTER_MAX)
-               clear_bit(MEMCG_SOCK_ACTIVE, &cg_proto->flags);
-       else {
+       if (!cg_proto->active) {
                /*
-                * The active bit needs to be written after the static_key
+                * The active flag needs to be written after the static_key
                 * update. This is what guarantees that the socket activation
                 * function is the last one to run. See sock_update_memcg() for
                 * details, and note that we don't mark any socket as belonging
                 * We never race with the readers in sock_update_memcg(),
                 * because when this value change, the code to process it is not
                 * patched in yet.
-                *
-                * The activated bit is used to guarantee that no two writers
-                * will do the update in the same memcg. Without that, we can't
-                * properly shutdown the static key.
                 */
-               if (!test_and_set_bit(MEMCG_SOCK_ACTIVATED, &cg_proto->flags))
-                       static_key_slow_inc(&memcg_socket_limit_enabled);
-               set_bit(MEMCG_SOCK_ACTIVE, &cg_proto->flags);
+               static_key_slow_inc(&memcg_socket_limit_enabled);
+               cg_proto->active = true;
        }
 
        return 0;