Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1219994

[PATCH V2 3/4] mm/kasan: Don't use kasan shadow pointer in generic functions

From "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Newsgroups linux.kernel
Subject [PATCH V2 3/4] mm/kasan: Don't use kasan shadow pointer in generic functions
Date 2015-09-07 10:40 +0200
Message-ID <q6082-ic-15@gated-at.bofh.it> (permalink)
References <q5ZYm-72-13@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


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). Some architectures won't
be able to do that. Hence make a copy of the shadow region row and
pass that to generic functions.

Reviewed-by: Andrey Ryabinin <ryabinin.a.a@gmail.com>
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 d269f2087faf..c5367089703c 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 | Find similar | Unroll thread


Thread

[PATCH V2 1/4] mm/kasan: Rename kasan_enabled to kasan_report_enabled "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-09-07 10:30 +0200
  [PATCH V2 4/4] mm/kasan: Prevent deadlock in kasan reporting "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-09-07 10:40 +0200
  [PATCH V2 3/4] mm/kasan: Don't use kasan shadow pointer in generic functions "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-09-07 10:40 +0200

csiph-web