mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-06-26 03:11:44 +02:00
Fix the page boundary crossing bug.
Signed-off-by: Jason Evans <jasone@canonware.com>
This commit is contained in:
parent
b3757e7792
commit
99e60be5a4
|
@ -88,8 +88,14 @@ validate_mem (unw_word_t addr)
|
|||
{
|
||||
int i, victim;
|
||||
#ifdef HAVE_MINCORE
|
||||
char mvec[2]; /* Unaligned access may cross page boundary */
|
||||
unsigned char mvec[2]; /* Unaligned access may cross page boundary */
|
||||
#endif
|
||||
size_t len;
|
||||
|
||||
if (PAGE_START(addr + sizeof (unw_word_t) - 1) == PAGE_START(addr))
|
||||
len = PAGE_SIZE;
|
||||
else
|
||||
len = PAGE_SIZE * 2;
|
||||
|
||||
addr = PAGE_START(addr);
|
||||
|
||||
|
@ -103,9 +109,9 @@ validate_mem (unw_word_t addr)
|
|||
}
|
||||
|
||||
#ifdef HAVE_MINCORE
|
||||
if (mincore ((void *) addr, sizeof (unw_word_t), mvec) == -1)
|
||||
if (mincore ((void *) addr, len, mvec) == -1)
|
||||
#else
|
||||
if (msync ((void *) addr, sizeof (unw_word_t), MS_ASYNC) == -1)
|
||||
if (msync ((void *) addr, len, MS_ASYNC) == -1)
|
||||
#endif
|
||||
return -1;
|
||||
|
||||
|
|
|
@ -91,8 +91,14 @@ validate_mem (unw_word_t addr)
|
|||
{
|
||||
int i, victim;
|
||||
#ifdef HAVE_MINCORE
|
||||
char mvec[2]; /* Unaligned access may cross page boundary */
|
||||
unsigned char mvec[2]; /* Unaligned access may cross page boundary */
|
||||
#endif
|
||||
size_t len;
|
||||
|
||||
if (PAGE_START(addr + sizeof (unw_word_t) - 1) == PAGE_START(addr))
|
||||
len = PAGE_SIZE;
|
||||
else
|
||||
len = PAGE_SIZE * 2;
|
||||
|
||||
addr = PAGE_START(addr);
|
||||
|
||||
|
@ -106,9 +112,9 @@ validate_mem (unw_word_t addr)
|
|||
}
|
||||
|
||||
#ifdef HAVE_MINCORE
|
||||
if (mincore ((void *) addr, sizeof (unw_word_t), mvec) == -1)
|
||||
if (mincore ((void *) addr, len, mvec) == -1)
|
||||
#else
|
||||
if (msync ((void *) addr, sizeof (unw_word_t), MS_ASYNC) == -1)
|
||||
if (msync ((void *) addr, len, MS_ASYNC) == -1)
|
||||
#endif
|
||||
return -1;
|
||||
|
||||
|
|
Loading…
Reference in a new issue