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


Groups > linux.kernel > #1213656 > unrolled thread

[PATCH V2 04/10] kasan: Don't use kasan shadow pointer in generic functions

Started by"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
First post2015-08-26 10:30 +0200
Last post2015-08-27 11:50 +0200
Articles 3 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH V2 04/10] kasan: Don't use kasan shadow pointer in generic functions "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-08-26 10:30 +0200
    Re: [PATCH V2 04/10] kasan: Don't use kasan shadow pointer in generic functions "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2015-08-26 11:00 +0200
      Re: [PATCH V2 04/10] kasan: Don't use kasan shadow pointer in generic functions Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2015-08-27 11:50 +0200

#1213656 — [PATCH V2 04/10] kasan: Don't use kasan shadow pointer in generic functions

From"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Date2015-08-26 10:30 +0200
Subject[PATCH V2 04/10] kasan: Don't use kasan shadow pointer in generic functions
Message-ID<q1EfM-gF-9@gated-at.bofh.it>
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 remove dumping kasan shadow region dump. If
we really want to do this we will have to have a kasan internal implemen
tation of print_hex_dump for which we will disable address sanitizer
operation.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
---
 mm/kasan/report.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/mm/kasan/report.c b/mm/kasan/report.c
index d19d01823a68..79fbc5d14bd2 100644
--- a/mm/kasan/report.c
+++ b/mm/kasan/report.c
@@ -170,12 +170,6 @@ static void print_shadow_for_address(const void *addr)
 		snprintf(buffer, sizeof(buffer),
 			(i == 0) ? ">%p: " : " %p: ", kaddr);
 
-		kasan_disable_current();
-		print_hex_dump(KERN_ERR, buffer,
-			DUMP_PREFIX_NONE, SHADOW_BYTES_PER_ROW, 1,
-			shadow_row, SHADOW_BYTES_PER_ROW, 0);
-		kasan_enable_current();
-
 		if (row_is_guilty(shadow_row, shadow))
 			pr_err("%*c\n",
 				shadow_pointer_offset(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/

[toc] | [next] | [standalone]


#1213677

From"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Date2015-08-26 11:00 +0200
Message-ID<q1EIP-OI-19@gated-at.bofh.it>
In reply to#1213656
Missed to cherry-pick the updated version of this patch, before sending
the series out.

commit aeb324e09d95c189eda4ce03790da94b535d1dfc
Author: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Date:   Fri Aug 14 12:28:58 2015 +0530

    kasan: Don't use kasan shadow pointer in generic functions
    
    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>

diff --git a/mm/kasan/report.c b/mm/kasan/report.c
index d19d01823a68..60fdb0413f3b 100644
--- a/mm/kasan/report.c
+++ b/mm/kasan/report.c
@@ -166,14 +166,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
+		 * kasan mapping for the passed address.
+		 */
+		memcpy(shadow_buf, shadow_row, SHADOW_BYTES_PER_ROW);
 		kasan_disable_current();
 		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))

--
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/

[toc] | [prev] | [next] | [standalone]


#1214431

FromAndrey Ryabinin <ryabinin.a.a@gmail.com>
Date2015-08-27 11:50 +0200
Message-ID<q21YJ-Gn-1@gated-at.bofh.it>
In reply to#1213677
2015-08-26 11:54 GMT+03:00 Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>:
>
> Missed to cherry-pick the updated version of this patch, before sending
> the series out.
>
> commit aeb324e09d95c189eda4ce03790da94b535d1dfc
> Author: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> Date:   Fri Aug 14 12:28:58 2015 +0530
>
>     kasan: Don't use kasan shadow pointer in generic functions
>
>     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>
>
> diff --git a/mm/kasan/report.c b/mm/kasan/report.c
> index d19d01823a68..60fdb0413f3b 100644
> --- a/mm/kasan/report.c
> +++ b/mm/kasan/report.c
> @@ -166,14 +166,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
> +                * kasan mapping for the passed address.

may try to *access* kasan mapping?

> +                */
> +               memcpy(shadow_buf, shadow_row, SHADOW_BYTES_PER_ROW);
>                 kasan_disable_current();
>                 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))
>
--
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/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web