diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 84c24b495e81c028ae5d2ada5eb0605e15c282bb..53859510ba5bce5f4c5ab90f1ef71e9165da0129 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -3581,7 +3581,10 @@ long vwrite(char *buf, char *addr, unsigned long count) buflen = count; spin_lock(&vmap_area_lock); - list_for_each_entry(va, &vmap_area_list, list) { + va = __find_vmap_area((unsigned long)addr); + if (!va) + goto finished; + list_for_each_entry_from(va, &vmap_area_list, list) { if (!count) break;