mirror of https://gitee.com/openkylin/linux.git
selftest/mremap_test: avoid crash with static build
With a large mmap map size, we can overlap with the text area and using MAP_FIXED results in unmapping that area. Switch to MAP_FIXED_NOREPLACE and handle the EEXIST error. Link: https://lkml.kernel.org/r/20210616045239.370802-3-aneesh.kumar@linux.ibm.com Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Reviewed-by: Kalesh Singh <kaleshsingh@google.com> Cc: Christophe Leroy <christophe.leroy@csgroup.eu> Cc: Hugh Dickins <hughd@google.com> Cc: Joel Fernandes <joel@joelfernandes.org> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Nicholas Piggin <npiggin@gmail.com> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
f27a5c93cd
commit
a9cc9c3456
|
@ -75,9 +75,10 @@ static void *get_source_mapping(struct config c)
|
|||
retry:
|
||||
addr += c.src_alignment;
|
||||
src_addr = mmap((void *) addr, c.region_size, PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_ANONYMOUS | MAP_SHARED, -1, 0);
|
||||
MAP_FIXED_NOREPLACE | MAP_ANONYMOUS | MAP_SHARED,
|
||||
-1, 0);
|
||||
if (src_addr == MAP_FAILED) {
|
||||
if (errno == EPERM)
|
||||
if (errno == EPERM || errno == EEXIST)
|
||||
goto retry;
|
||||
goto error;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue