mm/hugetlb: create hugetlb cgroup file in hugetlb_init
Build kernel with CONFIG_HUGETLBFS=y,CONFIG_HUGETLB_PAGE=y and
CONFIG_CGROUP_HUGETLB=y, then specify hugepagesz=xx boot option, system
will fail to boot.
This failure is caused by following code path:
  setup_hugepagesz
    hugetlb_add_hstate
      hugetlb_cgroup_file_init
        cgroup_add_cftypes
          kzalloc <--slab is *not available* yet
For this path, slab is not available yet, so memory allocated will be
failed, and cause WARN_ON() in hugetlb_cgroup_file_init().
So I move hugetlb_cgroup_file_init() into hugetlb_init().
[akpm@linux-foundation.org: tweak coding-style, remove pointless __init on inlined function]
[akpm@linux-foundation.org: fix warning]
Signed-off-by: 
Jianguo Wu <wujianguo@huawei.com>
Signed-off-by: 
Jiang Liu <jiang.liu@huawei.com>
Reviewed-by: 
Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Acked-by: 
Michal Hocko <mhocko@suse.cz>
Cc: <stable@vger.kernel.org>
Signed-off-by: 
Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: 
Linus Torvalds <torvalds@linux-foundation.org>
Loading
Please register or sign in to comment