From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ard Biesheuvel Subject: Re: [PATCH 07/14] proc/kcore: hide a harmless warning Date: Fri, 14 Jul 2017 13:28:10 +0100 Message-ID: References: <20170714092540.1217397-1-arnd@arndb.de> <20170714092540.1217397-8-arnd@arndb.de> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20170714092540.1217397-8-arnd@arndb.de> Sender: linux-media-owner@vger.kernel.org To: Arnd Bergmann Cc: "linux-kernel@vger.kernel.org" , Jiri Olsa , Greg Kroah-Hartman , Linus Torvalds , Tejun Heo , Guenter Roeck , linux-ide@vger.kernel.org, linux-media@vger.kernel.org, Andrew Morton , dri-devel@lists.freedesktop.org, Kees Cook , Ingo Molnar , Laura Abbott , Pratyush Anand List-Id: dri-devel@lists.freedesktop.org On 14 July 2017 at 10:25, Arnd Bergmann wrote: > gcc warns when MODULES_VADDR/END is defined to the same value as > VMALLOC_START/VMALLOC_END, e.g. on x86-32: > > fs/proc/kcore.c: In function =E2=80=98add_modules_range=E2=80=99: > fs/proc/kcore.c:622:161: error: self-comparison always evaluates to false= [-Werror=3Dtautological-compare] > if (/*MODULES_VADDR !=3D VMALLOC_START && */MODULES_END !=3D VMALLOC_EN= D) { > Does it occur for subtraction as well? Or only for comparison? > The code is correct as it is required for most other configurations. > The best workaround I found for shutting up that warning is to make > it a little more complex by adding a temporary variable. The compiler > will still optimize away the code as it finds the two to be identical, > but it no longer warns because it doesn't condider the comparison > "tautological" any more. > > Signed-off-by: Arnd Bergmann > --- > fs/proc/kcore.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c > index 45629f4b5402..c503ad657c46 100644 > --- a/fs/proc/kcore.c > +++ b/fs/proc/kcore.c > @@ -620,12 +620,14 @@ static void __init proc_kcore_text_init(void) > /* > * MODULES_VADDR has no intersection with VMALLOC_ADDR. > */ > -struct kcore_list kcore_modules; > +static struct kcore_list kcore_modules; > static void __init add_modules_range(void) > { > - if (MODULES_VADDR !=3D VMALLOC_START && MODULES_END !=3D VMALLOC_= END) { > - kclist_add(&kcore_modules, (void *)MODULES_VADDR, > - MODULES_END - MODULES_VADDR, KCORE_VMALLOC); > + void *start =3D (void *)MODULES_VADDR; > + size_t len =3D MODULES_END - MODULES_VADDR; > + > + if (start !=3D (void *)VMALLOC_START && len !=3D VMALLOC_END - VM= ALLOC_START) { > + kclist_add(&kcore_modules, start, len, KCORE_VMALLOC); > } > } > #else > -- > 2.9.0 >