On Fri, 14 Sep 2018, Fenghua Yu wrote: > int parse_cbm(void *_data, struct rdt_resource *r, struct rdt_domain *d); > -int parse_bw(void *_buf, struct rdt_resource *r, struct rdt_domain *d); > +int parse_bw(void *_data, struct rdt_resource *r, struct rdt_domain *d);
Sorry no. This keeps the code equally error prone as it was. Why is that argument a void pointer in the first place? > extern struct mutex rdtgroup_mutex; > > diff --git a/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c > b/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c > index af358ca05160..d427c86e7cd0 100644 > --- a/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c > +++ b/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c > @@ -28,6 +28,11 @@ > #include <linux/slab.h> > #include "intel_rdt.h" > > +struct rdt_parse_data { > + struct rdtgroup *rdtgrp; > + char *buf; > +}; This is a copy of rdt_cbm_parse_data. Sigh. The right thing to do here is 1) rename struct rdt_cbm_parse_data to struct rdt_parse_data 2) Move it to a header file 3) Change the argument of parse_ctrlval from void * to struct rdt_parse_data * Everything else is just proliferating the initial underlying problem of having a void pointer in those callbacks for no reason at all. Thanks, tglx