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 4341fa4547
("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: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
46c001a275
commit
20fc02b477
|
@ -10,12 +10,12 @@
|
||||||
struct vm_area_struct; /* vma defining user mapping in mm_types.h */
|
struct vm_area_struct; /* vma defining user mapping in mm_types.h */
|
||||||
|
|
||||||
/* bits in flags of vmalloc's vm_struct below */
|
/* bits in flags of vmalloc's vm_struct below */
|
||||||
#define VM_IOREMAP 0x00000001 /* ioremap() and friends */
|
#define VM_IOREMAP 0x00000001 /* ioremap() and friends */
|
||||||
#define VM_ALLOC 0x00000002 /* vmalloc() */
|
#define VM_ALLOC 0x00000002 /* vmalloc() */
|
||||||
#define VM_MAP 0x00000004 /* vmap()ed pages */
|
#define VM_MAP 0x00000004 /* vmap()ed pages */
|
||||||
#define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */
|
#define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */
|
||||||
#define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */
|
#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 */
|
/* bits [20..32] reserved for arch specific ioremap internals */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
18
mm/vmalloc.c
18
mm/vmalloc.c
|
@ -1289,15 +1289,15 @@ static void setup_vmalloc_vm(struct vm_struct *vm, struct vmap_area *va,
|
||||||
spin_unlock(&vmap_area_lock);
|
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.
|
* we should make sure that vm has proper values.
|
||||||
* Pair with smp_rmb() in show_numa_info().
|
* Pair with smp_rmb() in show_numa_info().
|
||||||
*/
|
*/
|
||||||
smp_wmb();
|
smp_wmb();
|
||||||
vm->flags &= ~VM_UNLIST;
|
vm->flags &= ~VM_UNINITIALIZED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct vm_struct *__get_vm_area_node(unsigned long size,
|
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)
|
if (!size || (size >> PAGE_SHIFT) > totalram_pages)
|
||||||
goto fail;
|
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);
|
start, end, node, gfp_mask, caller);
|
||||||
if (!area)
|
if (!area)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@ -1645,11 +1645,11 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In this function, newly allocated vm_struct has VM_UNLIST flag.
|
* In this function, newly allocated vm_struct has VM_UNINITIALIZED
|
||||||
* It means that vm_struct is not fully initialized.
|
* flag. It means that vm_struct is not fully initialized.
|
||||||
* Now, it is fully initialized, so remove this flag here.
|
* 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
|
* 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)
|
if (!counters)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Pair with smp_wmb() in clear_vm_unlist() */
|
/* Pair with smp_wmb() in clear_vm_uninitialized_flag() */
|
||||||
smp_rmb();
|
smp_rmb();
|
||||||
if (v->flags & VM_UNLIST)
|
if (v->flags & VM_UNINITIALIZED)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
memset(counters, 0, nr_node_ids * sizeof(unsigned int));
|
memset(counters, 0, nr_node_ids * sizeof(unsigned int));
|
||||||
|
|
Loading…
Reference in New Issue