From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752839AbdIXTRy (ORCPT ); Sun, 24 Sep 2017 15:17:54 -0400 Received: from mail-it0-f45.google.com ([209.85.214.45]:56538 "EHLO mail-it0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752728AbdIXTRw (ORCPT ); Sun, 24 Sep 2017 15:17:52 -0400 X-Google-Smtp-Source: AOwi7QAg/Mqchc9QnH8TZITIewMSJptGmjJfQxmwaY92i3X/PETOUILStcGtw/enIkwx5GrVEAq9fq30Wy2n0GnORL8= MIME-Version: 1.0 In-Reply-To: <20170921093729.1080368AC1@po15668-vm-win7.idsi0.si.c-s.fr> References: <20170921093729.1080368AC1@po15668-vm-win7.idsi0.si.c-s.fr> From: Kees Cook Date: Sun, 24 Sep 2017 12:17:51 -0700 X-Google-Sender-Auth: RHejchElfYTj12U2mhJrYx0rv38 Message-ID: Subject: Re: [PATCH] mm: fix RODATA_TEST failure "rodata_test: test data was not read only" To: Christophe Leroy , Michael Ellerman Cc: Jinbum Park , Linux-MM , LKML , "linuxppc-dev@lists.ozlabs.org" , Andrew Morton Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Sep 21, 2017 at 2:37 AM, Christophe Leroy wrote: > On powerpc, RODATA_TEST fails with message the following messages: > > [ 6.199505] Freeing unused kernel memory: 528K > [ 6.203935] rodata_test: test data was not read only > > This is because GCC allocates it to .data section: > > c0695034 g O .data 00000004 rodata_test_data Uuuh... that seems like a compiler bug. It's marked "const" -- it should never end up in .data. I would argue that this has done exactly what it was supposed to do, and shows that something has gone wrong. It should always be const. Adding "static" should just change visibility. (I'm not opposed to the static change, but it seems to paper over a problem with the compiler...) -Kees > > Since commit 056b9d8a76924 ("mm: remove rodata_test_data export, > add pr_fmt"), rodata_test_data is used only inside rodata_test.c > By declaring it static, it gets properly allocated into .rodata > section instead of .data: > > c04df710 l O .rodata 00000004 rodata_test_data > > Signed-off-by: Christophe Leroy > --- > mm/rodata_test.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/rodata_test.c b/mm/rodata_test.c > index 6bb4deb12e78..d908c8769b48 100644 > --- a/mm/rodata_test.c > +++ b/mm/rodata_test.c > @@ -14,7 +14,7 @@ > #include > #include > > -const int rodata_test_data = 0xC3; > +static const int rodata_test_data = 0xC3; > > void rodata_test(void) > { > -- > 2.13.3 > -- Kees Cook Pixel Security