|
@@ -488,6 +488,12 @@ static inline bool mem_cgroup_is_root(struct mem_cgroup *memcg)
|
|
|
return (memcg == root_mem_cgroup);
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * We restrict the id in the range of [1, 65535], so it can fit into
|
|
|
+ * an unsigned short.
|
|
|
+ */
|
|
|
+#define MEM_CGROUP_ID_MAX USHRT_MAX
|
|
|
+
|
|
|
static inline unsigned short mem_cgroup_id(struct mem_cgroup *memcg)
|
|
|
{
|
|
|
/*
|
|
@@ -6059,6 +6065,9 @@ mem_cgroup_css_online(struct cgroup_subsys_state *css)
|
|
|
struct mem_cgroup *parent = mem_cgroup_from_css(css_parent(css));
|
|
|
int error = 0;
|
|
|
|
|
|
+ if (css->cgroup->id > MEM_CGROUP_ID_MAX)
|
|
|
+ return -ENOSPC;
|
|
|
+
|
|
|
if (!parent)
|
|
|
return 0;
|
|
|
|