pid: use struct_size_t() helper
[platform/kernel/linux-rpi.git] / kernel / fork.c
index 41c9641..b85814e 100644 (file)
@@ -252,23 +252,19 @@ static int memcg_charge_kernel_stack(struct vm_struct *vm)
 {
        int i;
        int ret;
+       int nr_charged = 0;
 
-       BUILD_BUG_ON(IS_ENABLED(CONFIG_VMAP_STACK) && PAGE_SIZE % 1024 != 0);
        BUG_ON(vm->nr_pages != THREAD_SIZE / PAGE_SIZE);
 
        for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) {
                ret = memcg_kmem_charge_page(vm->pages[i], GFP_KERNEL, 0);
                if (ret)
                        goto err;
+               nr_charged++;
        }
        return 0;
 err:
-       /*
-        * If memcg_kmem_charge_page() fails, page's memory cgroup pointer is
-        * NULL, and memcg_kmem_uncharge_page() in free_thread_stack() will
-        * ignore this page.
-        */
-       for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++)
+       for (i = 0; i < nr_charged; i++)
                memcg_kmem_uncharge_page(vm->pages[i], 0);
        return ret;
 }