On Thu, 18 Apr 2019 21:39:25 +0200 "Uladzislau Rezki (Sony)" <urezki@xxxxxxxxx> wrote: > On my "Intel(R) Xeon(R) W-2135 CPU @ 3.70GHz" system(12 CPUs) > i get the warning from the compiler about frame size: > > <snip> > warning: the frame size of 1096 bytes is larger than 1024 bytes > [-Wframe-larger-than=] > <snip> > > the size of cpumask_t depends on number of CPUs, therefore just > make use of cpumask_of() in set_cpus_allowed_ptr() as a second > argument. > > ... L > --- a/lib/test_vmalloc.c > +++ b/lib/test_vmalloc.c > @@ -383,14 +383,14 @@ static void shuffle_array(int *arr, int n) > static int test_func(void *private) > { > struct test_driver *t = private; > - cpumask_t newmask = CPU_MASK_NONE; > int random_array[ARRAY_SIZE(test_case_array)]; > int index, i, j, ret; > ktime_t kt; > u64 delta; > > - cpumask_set_cpu(t->cpu, &newmask); > - set_cpus_allowed_ptr(current, &newmask); > + ret = set_cpus_allowed_ptr(current, cpumask_of(t->cpu)); > + if (ret < 0) > + pr_err("Failed to set affinity to %d CPU\n", t->cpu); > > for (i = 0; i < ARRAY_SIZE(test_case_array); i++) > random_array[i] = i; lgtm. While we're in there... From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Subject: lib/test_vmalloc.c:test_func(): eliminate local `ret' Local 'ret' is unneeded and was poorly named: the variable `ret' generally means the "the value which this function will return". Cc: Roman Gushchin <guro@xxxxxx> Cc: Uladzislau Rezki <urezki@xxxxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxxx> Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> Cc: Thomas Garnier <thgarnie@xxxxxxxxxx> Cc: Oleksiy Avramchenko <oleksiy.avramchenko@xxxxxxxxxxxxxx> Cc: Steven Rostedt <rostedt@xxxxxxxxxxx> Cc: Joel Fernandes <joelaf@xxxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxx> Cc: Tejun Heo <tj@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- lib/test_vmalloc.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) --- a/lib/test_vmalloc.c~a +++ a/lib/test_vmalloc.c @@ -384,12 +384,11 @@ static int test_func(void *private) { struct test_driver *t = private; int random_array[ARRAY_SIZE(test_case_array)]; - int index, i, j, ret; + int index, i, j; ktime_t kt; u64 delta; - ret = set_cpus_allowed_ptr(current, cpumask_of(t->cpu)); - if (ret < 0) + if (set_cpus_allowed_ptr(current, cpumask_of(t->cpu)) < 0) pr_err("Failed to set affinity to %d CPU\n", t->cpu); for (i = 0; i < ARRAY_SIZE(test_case_array); i++) @@ -415,8 +414,7 @@ static int test_func(void *private) kt = ktime_get(); for (j = 0; j < test_repeat_count; j++) { - ret = test_case_array[index].test_func(); - if (!ret) + if (!test_case_array[index].test_func()) per_cpu_test_data[t->cpu][index].test_passed++; else per_cpu_test_data[t->cpu][index].test_failed++; _