mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 05:31:08 -04:00
mm/vmalloc: check various alignments when debugging
Before we did not guarantee a free block with lowest start address for
allocations with alignment >= PAGE_SIZE. Because an alignment overhead
was included into a search length like below:
length = size + align - 1;
doing so we make sure that a bigger block would fit after applying an
alignment adjustment. Now there is no such limitation, i.e. any
alignment that user wants to apply will result to a lowest address of
returned free area.
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Uladzislau Rezki (Sony) <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Cc: David Hildenbrand <[email protected]>
Cc: Hillf Danton <[email protected]>
Cc: Matthew Wilcox <[email protected]>
Cc: Mel Gorman <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Nicholas Piggin <[email protected]>
Cc: Oleksiy Avramchenko <[email protected]>
Cc: Ping Fang <[email protected]>
Cc: Steven Rostedt <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
1 parent
9f531973df
commit
066fed59d8
1 file changed
+4
-4
+4
-4
@@ -1269,7 +1269,7 @@ find_vmap_lowest_linear_match(unsigned long size,
|
||||
}
|
||||
|
||||
static void
|
||||
find_vmap_lowest_match_check(unsigned long size)
|
||||
find_vmap_lowest_match_check(unsigned long size, unsigned long align)
|
||||
{
|
||||
struct vmap_area *va_1, *va_2;
|
||||
unsigned long vstart;
|
||||
@@ -1278,8 +1278,8 @@ find_vmap_lowest_match_check(unsigned long size)
|
||||
get_random_bytes(&rnd, sizeof(rnd));
|
||||
vstart = VMALLOC_START + rnd;
|
||||
|
||||
va_1 = find_vmap_lowest_match(size, 1, vstart);
|
||||
va_2 = find_vmap_lowest_linear_match(size, 1, vstart);
|
||||
va_1 = find_vmap_lowest_match(size, align, vstart);
|
||||
va_2 = find_vmap_lowest_linear_match(size, align, vstart);
|
||||
|
||||
if (va_1 != va_2)
|
||||
pr_emerg("not lowest: t: 0x%p, l: 0x%p, v: 0x%lx\n",
|
||||
@@ -1458,7 +1458,7 @@ __alloc_vmap_area(unsigned long size, unsigned long align,
|
||||
return vend;
|
||||
|
||||
#if DEBUG_AUGMENT_LOWEST_MATCH_CHECK
|
||||
find_vmap_lowest_match_check(size);
|
||||
find_vmap_lowest_match_check(size, align);
|
||||
#endif
|
||||
|
||||
return nva_start_addr;
|
||||
|
||||
Reference in new issue
Block a user