From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752246AbdHHR5N (ORCPT ); Tue, 8 Aug 2017 13:57:13 -0400 Received: from mx2.suse.de ([195.135.220.15]:51539 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752100AbdHHR5M (ORCPT ); Tue, 8 Aug 2017 13:57:12 -0400 Date: Tue, 8 Aug 2017 19:57:08 +0200 From: "Luis R. Rodriguez" To: Florian Fainelli , Juergen Gross Cc: linux-kernel@vger.kernel.org, ard.biesheuvel@linaro.org, labbott@redhat.com, Andrew Morton , "Paul E. McKenney" , Kees Cook , Ingo Molnar , "David S. Miller" , Peter Zijlstra , Geert Uytterhoeven , "Luis R. Rodriguez" , Nicholas Piggin , Olof Johansson , "Jason A. Donenfeld" , "Theodore Ts'o" , Thomas Gleixner , Josh Poimboeuf , Andy Shevchenko , Bart Van Assche , Matthew Wilcox , Al Viro , Jiri Pirko , Jeff Layton Subject: Re: [PATCH] lib: Add test module for CONFIG_DEBUG_VIRTUAL Message-ID: <20170808175708.GR27873@wotan.suse.de> References: <20170808164035.26725-1-f.fainelli@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170808164035.26725-1-f.fainelli@gmail.com> User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Aug 08, 2017 at 09:40:26AM -0700, Florian Fainelli wrote: > Add a test module that allows testing that CONFIG_DEBUG_VIRTUAL works > correctly, at least that it can catch invalid calls to virt_to_phys() > against the non-linear kernel virtual address map. > > Signed-off-by: Florian Fainelli > --- > lib/Kconfig.debug | 11 +++++++++++ > lib/Makefile | 1 + > lib/test_debug_virtual.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 61 insertions(+) > create mode 100644 lib/test_debug_virtual.c > > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > index 98fe715522e8..d16bbc12429f 100644 > --- a/lib/Kconfig.debug > +++ b/lib/Kconfig.debug > @@ -1902,6 +1902,17 @@ config TEST_KMOD > > If unsure, say N. > > +config TEST_DEBUG_VIRTUAL > + tristate "Test CONFIG_DEBUG_VIRTUAL feature" > + depends on DEBUG_VIRTUAL > + help > + Test the kernel's ability to detect incorrect calls to > + virt_to_phys() done against the non-linear part of the > + kernel's virtual address map. > + > + If unsure, say N. > + > + > source "samples/Kconfig" > > source "lib/Kconfig.kgdb" > diff --git a/lib/Makefile b/lib/Makefile > index 40c18372b301..469ce5e24e4f 100644 > --- a/lib/Makefile > +++ b/lib/Makefile > @@ -62,6 +62,7 @@ obj-$(CONFIG_TEST_BITMAP) += test_bitmap.o > obj-$(CONFIG_TEST_UUID) += test_uuid.o > obj-$(CONFIG_TEST_PARMAN) += test_parman.o > obj-$(CONFIG_TEST_KMOD) += test_kmod.o > +obj-$(CONFIG_TEST_DEBUG_VIRTUAL) += test_debug_virtual.o > > ifeq ($(CONFIG_DEBUG_KOBJECT),y) > CFLAGS_kobject.o += -DDEBUG > diff --git a/lib/test_debug_virtual.c b/lib/test_debug_virtual.c > new file mode 100644 > index 000000000000..b9cdeecc19dc > --- /dev/null > +++ b/lib/test_debug_virtual.c > @@ -0,0 +1,49 @@ > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include > +#ifdef CONFIG_MIPS > +#include > +#endif > + > +struct foo { > + unsigned int bar; > +}; > + > +struct foo *foo; > + > +static int __init test_debug_virtual_init(void) > +{ > + phys_addr_t pa; > + void *va; > + > + va = (void *)VMALLOC_START; > + pa = virt_to_phys(va); > + > + pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va); > + > + foo = kzalloc(sizeof(*foo), GFP_KERNEL); > + if (!foo) > + return -ENOMEM; > + > + pa = virt_to_phys(foo); > + va = foo; > + pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va); Should there be a tests here of some sort? When should this fail, why? There is no docs on this self test, could one be added? Luis > + > + return 0; > +} > +module_init(test_debug_virtual_init); > + > +static void __exit test_debug_virtual_exit(void) > +{ > + kfree(foo); > +} > +module_exit(test_debug_virtual_exit); > + > +MODULE_LICENSE("GPL"); > +MODULE_DESCRIPTION("Test module for CONFIG_DEBUG_VIRTUAL"); > -- > 2.9.3 > > -- Luis Rodriguez, SUSE LINUX GmbH Maxfeldstrasse 5; D-90409 Nuernberg