]> Git Repo - linux.git/commit
mm/hugetlb: create hugetlb cgroup file in hugetlb_init
authorJianguo Wu <[email protected]>
Tue, 18 Dec 2012 22:23:19 +0000 (14:23 -0800)
committerLinus Torvalds <[email protected]>
Tue, 18 Dec 2012 23:02:15 +0000 (15:02 -0800)
commit7179e7bf4592ac5a7b30257a7df6259ee81e51da
treea3fb75a87e1a18b153c18aa7e4530d35c768e8b6
parent7d12efaea7e74bf8f4953412514e836313fa32ec
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().

[[email protected]: tweak coding-style, remove pointless __init on inlined function]
[[email protected]: fix warning]
Signed-off-by: Jianguo Wu <[email protected]>
Signed-off-by: Jiang Liu <[email protected]>
Reviewed-by: Aneesh Kumar K.V <[email protected]>
Acked-by: Michal Hocko <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
include/linux/hugetlb_cgroup.h
mm/hugetlb.c
mm/hugetlb_cgroup.c
This page took 0.049345 seconds and 4 git commands to generate.