Commit 20fc02b4 authored by Zhang Yanfei's avatar Zhang Yanfei Committed by Linus Torvalds
Browse files

mm/vmalloc.c: rename VM_UNLIST to VM_UNINITIALIZED



VM_UNLIST was used to indicate that the vm_struct is not listed in
vmlist.

But after commit 4341fa45 ("mm, vmalloc: remove list management of
vmlist after initializing vmalloc"), the meaning of this flag changed.
It now means the vm_struct is not fully initialized.  So renaming it to
VM_UNINITIALIZED seems more reasonable.

Also change clear_vm_unlist to clear_vm_uninitialized_flag.

Signed-off-by: default avatarZhang Yanfei <zhangyanfei@cn.fujitsu.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 46c001a2
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ struct vm_area_struct; /* vma defining user mapping in mm_types.h */
#define VM_MAP			0x00000004	/* vmap()ed pages */
#define VM_USERMAP		0x00000008	/* suitable for remap_vmalloc_range */
#define VM_VPAGES		0x00000010	/* buffer for pages was vmalloc'ed */
#define VM_UNLIST	0x00000020	/* vm_struct is not listed in vmlist */
#define VM_UNINITIALIZED	0x00000020	/* vm_struct is not fully initialized */
/* bits [20..32] reserved for arch specific ioremap internals */

/*
+9 −9
Original line number Diff line number Diff line
@@ -1289,15 +1289,15 @@ static void setup_vmalloc_vm(struct vm_struct *vm, struct vmap_area *va,
	spin_unlock(&vmap_area_lock);
}

static void clear_vm_unlist(struct vm_struct *vm)
static void clear_vm_uninitialized_flag(struct vm_struct *vm)
{
	/*
	 * Before removing VM_UNLIST,
	 * Before removing VM_UNINITIALIZED,
	 * we should make sure that vm has proper values.
	 * Pair with smp_rmb() in show_numa_info().
	 */
	smp_wmb();
	vm->flags &= ~VM_UNLIST;
	vm->flags &= ~VM_UNINITIALIZED;
}

static struct vm_struct *__get_vm_area_node(unsigned long size,
@@ -1635,7 +1635,7 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
	if (!size || (size >> PAGE_SHIFT) > totalram_pages)
		goto fail;

	area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNLIST,
	area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED,
				  start, end, node, gfp_mask, caller);
	if (!area)
		goto fail;
@@ -1645,11 +1645,11 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
		goto fail;

	/*
	 * In this function, newly allocated vm_struct has VM_UNLIST flag.
	 * It means that vm_struct is not fully initialized.
	 * In this function, newly allocated vm_struct has VM_UNINITIALIZED
	 * flag. It means that vm_struct is not fully initialized.
	 * Now, it is fully initialized, so remove this flag here.
	 */
	clear_vm_unlist(area);
	clear_vm_uninitialized_flag(area);

	/*
	 * A ref_count = 3 is needed because the vm_struct and vmap_area
@@ -2569,9 +2569,9 @@ static void show_numa_info(struct seq_file *m, struct vm_struct *v)
		if (!counters)
			return;

		/* Pair with smp_wmb() in clear_vm_unlist() */
		/* Pair with smp_wmb() in clear_vm_uninitialized_flag() */
		smp_rmb();
		if (v->flags & VM_UNLIST)
		if (v->flags & VM_UNINITIALIZED)
			return;

		memset(counters, 0, nr_node_ids * sizeof(unsigned int));