Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752327AbbH0Jmk (ORCPT ); Thu, 27 Aug 2015 05:42:40 -0400 Received: from mail-wi0-f176.google.com ([209.85.212.176]:33242 "EHLO mail-wi0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751300AbbH0Jmi (ORCPT ); Thu, 27 Aug 2015 05:42:38 -0400 MIME-Version: 1.0 In-Reply-To: <87mvxectv1.fsf@linux.vnet.ibm.com> References: <1440577578-15813-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> <1440577578-15813-5-git-send-email-aneesh.kumar@linux.vnet.ibm.com> <87mvxectv1.fsf@linux.vnet.ibm.com> Date: Thu, 27 Aug 2015 12:42:37 +0300 Message-ID: Subject: Re: [PATCH V2 04/10] kasan: Don't use kasan shadow pointer in generic functions From: Andrey Ryabinin To: "Aneesh Kumar K.V" Cc: Benjamin Herrenschmidt , paulus@samba.org, mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, LKML Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2406 Lines: 55 2015-08-26 11:54 GMT+03:00 Aneesh Kumar K.V : > > Missed to cherry-pick the updated version of this patch, before sending > the series out. > > commit aeb324e09d95c189eda4ce03790da94b535d1dfc > Author: Aneesh Kumar K.V > 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 > > 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/