On Thu, Feb 21, 2019 at 9:45 AM Eric Sandeen <sandeen@xxxxxxxxxxx> wrote: > > Add a test node for proc_do_large_bitmap to the test_sysctl.c > infrastructure. It's sized the same as the one existing user. > > Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> Acked-by: Kees Cook <keescook@xxxxxxxxxxxx> -Kees > --- > > diff --git a/lib/test_sysctl.c b/lib/test_sysctl.c > index 3dd801c1c85b..1263be4ebfaf 100644 > --- a/lib/test_sysctl.c > +++ b/lib/test_sysctl.c > @@ -47,6 +47,9 @@ struct test_sysctl_data { > unsigned int uint_0001; > > char string_0001[65]; > + > +#define SYSCTL_TEST_BITMAP_SIZE 65536 > + unsigned long *bitmap_0001; > }; > > static struct test_sysctl_data test_data = { > @@ -102,6 +106,13 @@ static struct ctl_table test_table[] = { > .mode = 0644, > .proc_handler = proc_dostring, > }, > + { > + .procname = "bitmap_0001", > + .data = &test_data.bitmap_0001, > + .maxlen = SYSCTL_TEST_BITMAP_SIZE, > + .mode = 0644, > + .proc_handler = proc_do_large_bitmap, > + }, > { } > }; > > @@ -129,15 +140,21 @@ static struct ctl_table_header *test_sysctl_header; > > static int __init test_sysctl_init(void) > { > + test_data.bitmap_0001 = kzalloc(SYSCTL_TEST_BITMAP_SIZE/8, GFP_KERNEL); > + if (!test_data.bitmap_0001) > + return -ENOMEM; > test_sysctl_header = register_sysctl_table(test_sysctl_root_table); > - if (!test_sysctl_header) > + if (!test_sysctl_header) { > + kfree(test_data.bitmap_0001); > return -ENOMEM; > + } > return 0; > } > late_initcall(test_sysctl_init); > > static void __exit test_sysctl_exit(void) > { > + kfree(test_data.bitmap_0001); > if (test_sysctl_header) > unregister_sysctl_table(test_sysctl_header); > } > -- Kees Cook