Message ID | 2e8806da45a4b00249d5c449130b5f9ce78b3403.1704800524.git.christophe.leroy@csgroup.eu (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Refactor CONFIG_DEBUG_WX and check_wx_pages debugfs attribute | expand |
On Tue, Jan 09, 2024 at 01:14:38PM +0100, Christophe Leroy wrote: > Add a writable attribute in debugfs to trigger a > W^X pages check at any time. > > To trigger the test, just echo any numeric value into > /sys/kernel/debug/check_wx_pages > > The result is provided into dmesg. > > Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> > --- > mm/ptdump.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) ... > +static int check_wx_debugfs_set(void *data, u64 val) > +{ > + ptdump_check_wx(); > + > + return 0; > +} > + > +DEFINE_SIMPLE_ATTRIBUTE(check_wx_fops, NULL, check_wx_debugfs_set, "%llu\n"); > + > +static int ptdump_debugfs_init(void) > +{ > + debugfs_create_file("check_wx_pages", 0200, NULL, NULL, &check_wx_fops); > + > + return 0; > +} Wouldn't it be better to have (only?) a readable attribute which triggers this, and provides the result via this attribute? That would allow for automated tests without having to parse dmesg.
diff --git a/mm/ptdump.c b/mm/ptdump.c index 03c1bdae4a43..e154099c2584 100644 --- a/mm/ptdump.c +++ b/mm/ptdump.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 #include <linux/pagewalk.h> +#include <linux/debugfs.h> #include <linux/ptdump.h> #include <linux/kasan.h> @@ -163,3 +164,21 @@ void ptdump_walk_pgd(struct ptdump_state *st, struct mm_struct *mm, pgd_t *pgd) /* Flush out the last page */ st->note_page(st, 0, -1, 0); } + +static int check_wx_debugfs_set(void *data, u64 val) +{ + ptdump_check_wx(); + + return 0; +} + +DEFINE_SIMPLE_ATTRIBUTE(check_wx_fops, NULL, check_wx_debugfs_set, "%llu\n"); + +static int ptdump_debugfs_init(void) +{ + debugfs_create_file("check_wx_pages", 0200, NULL, NULL, &check_wx_fops); + + return 0; +} + +device_initcall(ptdump_debugfs_init);
Add a writable attribute in debugfs to trigger a W^X pages check at any time. To trigger the test, just echo any numeric value into /sys/kernel/debug/check_wx_pages The result is provided into dmesg. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> --- mm/ptdump.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)