Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1218088
| From | "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 3/4] kasan: Don't use kasan shadow pointer in generic functions |
| Date | 2015-09-03 10:00 +0200 |
| Message-ID | <q4xB8-5Ju-17@gated-at.bofh.it> (permalink) |
| References | <q4xB8-5Ju-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
We can't use generic functions like print_hex_dump to access kasan
shadow region. This require us to setup another kasan shadow region
for the address passed (kasan shadow address). Most architecture won't
be able to do that. Hence make a copy of the shadow region row and
pass that to generic functions.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
---
mm/kasan/report.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/mm/kasan/report.c b/mm/kasan/report.c
index 01d2efec8ea4..440bda3a3ecd 100644
--- a/mm/kasan/report.c
+++ b/mm/kasan/report.c
@@ -164,14 +164,20 @@ static void print_shadow_for_address(const void *addr)
for (i = -SHADOW_ROWS_AROUND_ADDR; i <= SHADOW_ROWS_AROUND_ADDR; i++) {
const void *kaddr = kasan_shadow_to_mem(shadow_row);
char buffer[4 + (BITS_PER_LONG/8)*2];
+ char shadow_buf[SHADOW_BYTES_PER_ROW];
snprintf(buffer, sizeof(buffer),
(i == 0) ? ">%p: " : " %p: ", kaddr);
-
+ /*
+ * We should not pass a shadow pointer to generic
+ * function, because generic functions may try to
+ * access kasan mapping for the passed address.
+ */
kasan_disable_current();
+ memcpy(shadow_buf, shadow_row, SHADOW_BYTES_PER_ROW);
print_hex_dump(KERN_ERR, buffer,
DUMP_PREFIX_NONE, SHADOW_BYTES_PER_ROW, 1,
- shadow_row, SHADOW_BYTES_PER_ROW, 0);
+ shadow_buf, SHADOW_BYTES_PER_ROW, 0);
kasan_enable_current();
if (row_is_guilty(shadow_row, shadow))
--
2.5.0
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 1/4] kasan: Rename kasan_enabled to kasan_report_enabled "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-09-03 10:00 +0200
[PATCH 2/4] kasan: MODULE_VADDR is not available on all archs "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-09-03 10:00 +0200
Re: [PATCH 2/4] kasan: MODULE_VADDR is not available on all archs Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2015-09-03 10:30 +0200
[PATCH 4/4] kasan: Prevent deadlock in kasan reporting "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-09-03 10:00 +0200
Re: [PATCH 4/4] kasan: Prevent deadlock in kasan reporting Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2015-09-03 11:20 +0200
[PATCH 3/4] kasan: Don't use kasan shadow pointer in generic functions "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-09-03 10:00 +0200
Re: [PATCH 3/4] kasan: Don't use kasan shadow pointer in generic functions Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2015-09-03 10:50 +0200
csiph-web