Lines Matching refs:vma
18 #define vma_iter_prealloc(vmi, vma) \ argument
19 (fail_prealloc ? -ENOMEM : mas_preallocate(&(vmi)->mas, (vma), GFP_KERNEL))
88 struct vm_area_struct *vma = alloc_vma(mm, start, end, pgoff, flags); in alloc_and_link_vma() local
90 if (vma == NULL) in alloc_and_link_vma()
93 if (vma_link(mm, vma)) { in alloc_and_link_vma()
94 vm_area_free(vma); in alloc_and_link_vma()
103 vma->vm_lock_seq = UINT_MAX; in alloc_and_link_vma()
105 return vma; in alloc_and_link_vma()
151 vmg->vma = NULL; in vmg_set_range()
205 struct vm_area_struct *vma; in cleanup_mm() local
212 for_each_vma(*vmi, vma) { in cleanup_mm()
213 vm_area_free(vma); in cleanup_mm()
223 static bool vma_write_started(struct vm_area_struct *vma) in vma_write_started() argument
225 int seq = vma->vm_lock_seq; in vma_write_started()
228 vma->vm_lock_seq = UINT_MAX; in vma_write_started()
241 struct vm_area_struct *vma; in test_simple_merge() local
259 vma = merge_new(&vmg); in test_simple_merge()
260 ASSERT_NE(vma, NULL); in test_simple_merge()
262 ASSERT_EQ(vma->vm_start, 0); in test_simple_merge()
263 ASSERT_EQ(vma->vm_end, 0x3000); in test_simple_merge()
264 ASSERT_EQ(vma->vm_pgoff, 0); in test_simple_merge()
265 ASSERT_EQ(vma->vm_flags, flags); in test_simple_merge()
267 vm_area_free(vma); in test_simple_merge()
275 struct vm_area_struct *vma; in test_simple_modify() local
287 vma = vma_modify_flags(&vmi, init_vma, init_vma, in test_simple_modify()
289 ASSERT_NE(vma, NULL); in test_simple_modify()
291 ASSERT_EQ(vma, init_vma); in test_simple_modify()
293 ASSERT_EQ(vma->vm_start, 0x1000); in test_simple_modify()
294 ASSERT_EQ(vma->vm_end, 0x2000); in test_simple_modify()
295 ASSERT_EQ(vma->vm_pgoff, 1); in test_simple_modify()
303 vma = vma_iter_load(&vmi); in test_simple_modify()
305 ASSERT_EQ(vma->vm_start, 0); in test_simple_modify()
306 ASSERT_EQ(vma->vm_end, 0x1000); in test_simple_modify()
307 ASSERT_EQ(vma->vm_pgoff, 0); in test_simple_modify()
309 vm_area_free(vma); in test_simple_modify()
312 vma = vma_next(&vmi); in test_simple_modify()
314 ASSERT_EQ(vma->vm_start, 0x1000); in test_simple_modify()
315 ASSERT_EQ(vma->vm_end, 0x2000); in test_simple_modify()
316 ASSERT_EQ(vma->vm_pgoff, 1); in test_simple_modify()
318 vm_area_free(vma); in test_simple_modify()
321 vma = vma_next(&vmi); in test_simple_modify()
323 ASSERT_EQ(vma->vm_start, 0x2000); in test_simple_modify()
324 ASSERT_EQ(vma->vm_end, 0x3000); in test_simple_modify()
325 ASSERT_EQ(vma->vm_pgoff, 2); in test_simple_modify()
327 vm_area_free(vma); in test_simple_modify()
337 struct vm_area_struct *vma = alloc_vma(&mm, 0, 0x1000, 0, flags); in test_simple_expand() local
341 .vma = vma, in test_simple_expand()
347 ASSERT_FALSE(vma_link(&mm, vma)); in test_simple_expand()
351 ASSERT_EQ(vma->vm_start, 0); in test_simple_expand()
352 ASSERT_EQ(vma->vm_end, 0x3000); in test_simple_expand()
353 ASSERT_EQ(vma->vm_pgoff, 0); in test_simple_expand()
355 vm_area_free(vma); in test_simple_expand()
365 struct vm_area_struct *vma = alloc_vma(&mm, 0, 0x3000, 0, flags); in test_simple_shrink() local
368 ASSERT_FALSE(vma_link(&mm, vma)); in test_simple_shrink()
370 ASSERT_FALSE(vma_shrink(&vmi, vma, 0, 0x1000, 0)); in test_simple_shrink()
372 ASSERT_EQ(vma->vm_start, 0); in test_simple_shrink()
373 ASSERT_EQ(vma->vm_end, 0x1000); in test_simple_shrink()
374 ASSERT_EQ(vma->vm_pgoff, 0); in test_simple_shrink()
376 vm_area_free(vma); in test_simple_shrink()
407 struct vm_area_struct *vma, *vma_a, *vma_b, *vma_c, *vma_d; in test_merge_new() local
451 vma = try_merge_new_vma(&mm, &vmg, 0x2000, 0x3000, 2, flags, &merged); in test_merge_new()
452 ASSERT_EQ(vma, vma_a); in test_merge_new()
455 ASSERT_EQ(vma->vm_start, 0); in test_merge_new()
456 ASSERT_EQ(vma->vm_end, 0x4000); in test_merge_new()
457 ASSERT_EQ(vma->vm_pgoff, 0); in test_merge_new()
458 ASSERT_EQ(vma->anon_vma, &dummy_anon_vma); in test_merge_new()
459 ASSERT_TRUE(vma_write_started(vma)); in test_merge_new()
468 vma = try_merge_new_vma(&mm, &vmg, 0x4000, 0x5000, 4, flags, &merged); in test_merge_new()
469 ASSERT_EQ(vma, vma_a); in test_merge_new()
472 ASSERT_EQ(vma->vm_start, 0); in test_merge_new()
473 ASSERT_EQ(vma->vm_end, 0x5000); in test_merge_new()
474 ASSERT_EQ(vma->vm_pgoff, 0); in test_merge_new()
475 ASSERT_EQ(vma->anon_vma, &dummy_anon_vma); in test_merge_new()
476 ASSERT_TRUE(vma_write_started(vma)); in test_merge_new()
487 vma = try_merge_new_vma(&mm, &vmg, 0x6000, 0x7000, 6, flags, &merged); in test_merge_new()
488 ASSERT_EQ(vma, vma_d); in test_merge_new()
491 ASSERT_EQ(vma->vm_start, 0x6000); in test_merge_new()
492 ASSERT_EQ(vma->vm_end, 0x9000); in test_merge_new()
493 ASSERT_EQ(vma->vm_pgoff, 6); in test_merge_new()
494 ASSERT_EQ(vma->anon_vma, &dummy_anon_vma); in test_merge_new()
495 ASSERT_TRUE(vma_write_started(vma)); in test_merge_new()
505 vma = try_merge_new_vma(&mm, &vmg, 0x5000, 0x6000, 5, flags, &merged); in test_merge_new()
506 ASSERT_EQ(vma, vma_a); in test_merge_new()
509 ASSERT_EQ(vma->vm_start, 0); in test_merge_new()
510 ASSERT_EQ(vma->vm_end, 0x9000); in test_merge_new()
511 ASSERT_EQ(vma->vm_pgoff, 0); in test_merge_new()
512 ASSERT_EQ(vma->anon_vma, &dummy_anon_vma); in test_merge_new()
513 ASSERT_TRUE(vma_write_started(vma)); in test_merge_new()
523 vma = try_merge_new_vma(&mm, &vmg, 0xa000, 0xb000, 0xa, flags, &merged); in test_merge_new()
524 ASSERT_EQ(vma, vma_c); in test_merge_new()
527 ASSERT_EQ(vma->vm_start, 0xa000); in test_merge_new()
528 ASSERT_EQ(vma->vm_end, 0xc000); in test_merge_new()
529 ASSERT_EQ(vma->vm_pgoff, 0xa); in test_merge_new()
530 ASSERT_EQ(vma->anon_vma, &dummy_anon_vma); in test_merge_new()
531 ASSERT_TRUE(vma_write_started(vma)); in test_merge_new()
540 vma = try_merge_new_vma(&mm, &vmg, 0x9000, 0xa000, 0x9, flags, &merged); in test_merge_new()
541 ASSERT_EQ(vma, vma_a); in test_merge_new()
544 ASSERT_EQ(vma->vm_start, 0); in test_merge_new()
545 ASSERT_EQ(vma->vm_end, 0xc000); in test_merge_new()
546 ASSERT_EQ(vma->vm_pgoff, 0); in test_merge_new()
547 ASSERT_EQ(vma->anon_vma, &dummy_anon_vma); in test_merge_new()
548 ASSERT_TRUE(vma_write_started(vma)); in test_merge_new()
560 for_each_vma(vmi, vma) { in test_merge_new()
561 ASSERT_NE(vma, NULL); in test_merge_new()
562 ASSERT_EQ(vma->vm_start, 0); in test_merge_new()
563 ASSERT_EQ(vma->vm_end, 0xc000); in test_merge_new()
564 ASSERT_EQ(vma->vm_pgoff, 0); in test_merge_new()
565 ASSERT_EQ(vma->anon_vma, &dummy_anon_vma); in test_merge_new()
567 vm_area_free(vma); in test_merge_new()
590 struct vm_area_struct *vma_left, *vma; in test_vma_merge_special_flags() local
619 vma = merge_new(&vmg); in test_vma_merge_special_flags()
620 ASSERT_EQ(vma, NULL); in test_vma_merge_special_flags()
632 vma = alloc_and_link_vma(&mm, 0x3000, 0x4000, 3, flags); in test_vma_merge_special_flags()
633 ASSERT_NE(vma, NULL); in test_vma_merge_special_flags()
634 vmg.vma = vma; in test_vma_merge_special_flags()
641 vma = merge_existing(&vmg); in test_vma_merge_special_flags()
642 ASSERT_EQ(vma, NULL); in test_vma_merge_special_flags()
662 struct vm_area_struct *vma_prev, *vma_next, *vma; in test_vma_merge_with_close() local
758 vma = alloc_and_link_vma(&mm, 0x3000, 0x5000, 3, flags); in test_vma_merge_with_close()
759 vma->vm_ops = &vm_ops; in test_vma_merge_with_close()
763 vmg.vma = vma; in test_vma_merge_with_close()
785 vma = alloc_and_link_vma(&mm, 0x3000, 0x5000, 3, flags); in test_vma_merge_with_close()
787 vma->vm_ops = &vm_ops; in test_vma_merge_with_close()
790 vmg.vma = vma; in test_vma_merge_with_close()
814 vma = alloc_and_link_vma(&mm, 0x3000, 0x5000, 3, flags); in test_vma_merge_with_close()
816 vma->vm_ops = &vm_ops; in test_vma_merge_with_close()
820 vmg.vma = vma; in test_vma_merge_with_close()
840 vma = alloc_and_link_vma(&mm, 0x3000, 0x5000, 3, flags); in test_vma_merge_with_close()
846 vmg.vma = vma; in test_vma_merge_with_close()
873 struct vm_area_struct *vma; in test_vma_merge_new_with_close() local
900 vma = merge_new(&vmg); in test_vma_merge_new_with_close()
901 ASSERT_NE(vma, NULL); in test_vma_merge_new_with_close()
903 ASSERT_EQ(vma->vm_start, 0); in test_vma_merge_new_with_close()
904 ASSERT_EQ(vma->vm_end, 0x5000); in test_vma_merge_new_with_close()
905 ASSERT_EQ(vma->vm_pgoff, 0); in test_vma_merge_new_with_close()
906 ASSERT_EQ(vma->vm_ops, &vm_ops); in test_vma_merge_new_with_close()
907 ASSERT_TRUE(vma_write_started(vma)); in test_vma_merge_new_with_close()
919 struct vm_area_struct *vma, *vma_prev, *vma_next; in test_merge_existing() local
938 vma = alloc_and_link_vma(&mm, 0x2000, 0x6000, 2, flags); in test_merge_existing()
939 vma->vm_ops = &vm_ops; /* This should have no impact. */ in test_merge_existing()
943 vmg.vma = vma; in test_merge_existing()
944 vmg.prev = vma; in test_merge_existing()
945 vma->anon_vma = &dummy_anon_vma; in test_merge_existing()
952 ASSERT_EQ(vma->vm_start, 0x2000); in test_merge_existing()
953 ASSERT_EQ(vma->vm_end, 0x3000); in test_merge_existing()
954 ASSERT_EQ(vma->vm_pgoff, 2); in test_merge_existing()
955 ASSERT_TRUE(vma_write_started(vma)); in test_merge_existing()
972 vma = alloc_and_link_vma(&mm, 0x2000, 0x6000, 2, flags); in test_merge_existing()
976 vmg.vma = vma; in test_merge_existing()
977 vma->anon_vma = &dummy_anon_vma; in test_merge_existing()
1002 vma = alloc_and_link_vma(&mm, 0x3000, 0x7000, 3, flags); in test_merge_existing()
1003 vma->vm_ops = &vm_ops; /* This should have no impact. */ in test_merge_existing()
1006 vmg.vma = vma; in test_merge_existing()
1007 vma->anon_vma = &dummy_anon_vma; in test_merge_existing()
1015 ASSERT_EQ(vma->vm_start, 0x6000); in test_merge_existing()
1016 ASSERT_EQ(vma->vm_end, 0x7000); in test_merge_existing()
1017 ASSERT_EQ(vma->vm_pgoff, 6); in test_merge_existing()
1019 ASSERT_TRUE(vma_write_started(vma)); in test_merge_existing()
1037 vma = alloc_and_link_vma(&mm, 0x3000, 0x7000, 3, flags); in test_merge_existing()
1040 vmg.vma = vma; in test_merge_existing()
1041 vma->anon_vma = &dummy_anon_vma; in test_merge_existing()
1066 vma = alloc_and_link_vma(&mm, 0x3000, 0x7000, 3, flags); in test_merge_existing()
1070 vmg.vma = vma; in test_merge_existing()
1071 vma->anon_vma = &dummy_anon_vma; in test_merge_existing()
1100 vma = alloc_and_link_vma(&mm, 0x3000, 0x8000, 3, flags); in test_merge_existing()
1104 vmg.prev = vma; in test_merge_existing()
1105 vmg.vma = vma; in test_merge_existing()
1110 vmg.prev = vma; in test_merge_existing()
1111 vmg.vma = vma; in test_merge_existing()
1116 vmg.prev = vma; in test_merge_existing()
1117 vmg.vma = vma; in test_merge_existing()
1122 vmg.prev = vma; in test_merge_existing()
1123 vmg.vma = vma; in test_merge_existing()
1128 vmg.prev = vma; in test_merge_existing()
1129 vmg.vma = vma; in test_merge_existing()
1134 vmg.prev = vma; in test_merge_existing()
1135 vmg.vma = vma; in test_merge_existing()
1149 struct vm_area_struct *vma, *vma_prev, *vma_next; in test_anon_vma_non_mergeable() local
1174 vma = alloc_and_link_vma(&mm, 0x3000, 0x7000, 3, flags); in test_anon_vma_non_mergeable()
1200 vmg.vma = vma; in test_anon_vma_non_mergeable()
1264 struct vm_area_struct *vma_prev, *vma_next, *vma; in test_dup_anon_vma() local
1280 vmg.vma = vma_prev; in test_dup_anon_vma()
1302 vma = alloc_and_link_vma(&mm, 0x3000, 0x5000, 3, flags); in test_dup_anon_vma()
1312 vmg.vma = vma; in test_dup_anon_vma()
1335 vma = alloc_and_link_vma(&mm, 0x3000, 0x5000, 3, flags); in test_dup_anon_vma()
1338 vma->anon_vma = &dummy_anon_vma; in test_dup_anon_vma()
1341 vmg.vma = vma; in test_dup_anon_vma()
1364 vma = alloc_and_link_vma(&mm, 0x3000, 0x8000, 3, flags); in test_dup_anon_vma()
1366 vma->anon_vma = &dummy_anon_vma; in test_dup_anon_vma()
1369 vmg.vma = vma; in test_dup_anon_vma()
1391 vma = alloc_and_link_vma(&mm, 0, 0x5000, 0, flags); in test_dup_anon_vma()
1394 vma->anon_vma = &dummy_anon_vma; in test_dup_anon_vma()
1396 vmg.prev = vma; in test_dup_anon_vma()
1397 vmg.vma = vma; in test_dup_anon_vma()
1421 struct vm_area_struct *vma_prev, *vma; in test_vmi_prealloc_fail() local
1430 vma = alloc_and_link_vma(&mm, 0x3000, 0x5000, 3, flags); in test_vmi_prealloc_fail()
1431 vma->anon_vma = &dummy_anon_vma; in test_vmi_prealloc_fail()
1435 vmg.vma = vma; in test_vmi_prealloc_fail()
1457 vma = alloc_and_link_vma(&mm, 0x3000, 0x5000, 3, flags); in test_vmi_prealloc_fail()
1458 vma->anon_vma = &dummy_anon_vma; in test_vmi_prealloc_fail()
1461 vmg.vma = vma_prev; in test_vmi_prealloc_fail()
1462 vmg.next = vma; in test_vmi_prealloc_fail()
1481 struct vm_area_struct *vma; in test_merge_extend() local
1483 vma = alloc_and_link_vma(&mm, 0, 0x1000, 0, flags); in test_merge_extend()
1495 ASSERT_EQ(vma_merge_extend(&vmi, vma, 0x2000), vma); in test_merge_extend()
1496 ASSERT_EQ(vma->vm_start, 0); in test_merge_extend()
1497 ASSERT_EQ(vma->vm_end, 0x4000); in test_merge_extend()
1498 ASSERT_EQ(vma->vm_pgoff, 0); in test_merge_extend()
1499 ASSERT_TRUE(vma_write_started(vma)); in test_merge_extend()
1512 struct vm_area_struct *vma, *vma_new, *vma_next; in test_copy_vma() local
1516 vma = alloc_and_link_vma(&mm, 0x3000, 0x5000, 3, flags); in test_copy_vma()
1517 vma_new = copy_vma(&vma, 0, 0x2000, 0, &need_locks); in test_copy_vma()
1519 ASSERT_NE(vma_new, vma); in test_copy_vma()
1528 vma = alloc_and_link_vma(&mm, 0, 0x2000, 0, flags); in test_copy_vma()
1530 vma_new = copy_vma(&vma, 0x4000, 0x2000, 4, &need_locks); in test_copy_vma()
1543 struct vm_area_struct *vma_prev, *vma; in test_expand_only_mode() local
1563 vma = vma_merge_new_range(&vmg); in test_expand_only_mode()
1564 ASSERT_NE(vma, NULL); in test_expand_only_mode()
1565 ASSERT_EQ(vma, vma_prev); in test_expand_only_mode()
1567 ASSERT_EQ(vma->vm_start, 0x3000); in test_expand_only_mode()
1568 ASSERT_EQ(vma->vm_end, 0x9000); in test_expand_only_mode()
1569 ASSERT_EQ(vma->vm_pgoff, 3); in test_expand_only_mode()
1570 ASSERT_TRUE(vma_write_started(vma)); in test_expand_only_mode()
1581 struct vm_area_struct *vma; in test_mmap_region_basic() local
1612 for_each_vma(vmi, vma) { in test_mmap_region_basic()
1613 if (vma->vm_start == 0x300000) { in test_mmap_region_basic()
1614 ASSERT_EQ(vma->vm_end, 0x306000); in test_mmap_region_basic()
1615 ASSERT_EQ(vma->vm_pgoff, 0x300); in test_mmap_region_basic()
1616 } else if (vma->vm_start == 0x24d000) { in test_mmap_region_basic()
1617 ASSERT_EQ(vma->vm_end, 0x253000); in test_mmap_region_basic()
1618 ASSERT_EQ(vma->vm_pgoff, 0x24d); in test_mmap_region_basic()