Message ID | 20231117-papr-sys_rtas-vs-lockdown-v4-1-b794d8cb8502@linux.ibm.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | powerpc/pseries: New character devices for system parameters and VPD | expand |
Nathan Lynch via B4 Relay <devnull+nathanl.linux.ibm.com@kernel.org> writes: > From: Nathan Lynch <nathanl@linux.ibm.com> > > Add a convenience macro for iterating over every element of the > internal function table and convert the one site that can use it. An > additional user of the macro is anticipated in changes to follow. > Reviewed-by: Aneesh Kumar K.V (IBM) <aneesh.kumar@kernel.org> > Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com> > --- > arch/powerpc/kernel/rtas.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c > index eddc031c4b95..1ad1869e2e96 100644 > --- a/arch/powerpc/kernel/rtas.c > +++ b/arch/powerpc/kernel/rtas.c > @@ -454,6 +454,11 @@ static struct rtas_function rtas_function_table[] __ro_after_init = { > }, > }; > > +#define for_each_rtas_function(funcp) \ > + for (funcp = &rtas_function_table[0]; \ > + funcp < &rtas_function_table[ARRAY_SIZE(rtas_function_table)]; \ > + ++funcp) > + > /* > * Nearly all RTAS calls need to be serialized. All uses of the > * default rtas_args block must hold rtas_lock. > @@ -525,10 +530,10 @@ static DEFINE_XARRAY(rtas_token_to_function_xarray); > > static int __init rtas_token_to_function_xarray_init(void) > { > + const struct rtas_function *func; > int err = 0; > > - for (size_t i = 0; i < ARRAY_SIZE(rtas_function_table); ++i) { > - const struct rtas_function *func = &rtas_function_table[i]; > + for_each_rtas_function(func) { > const s32 token = func->token; > > if (token == RTAS_UNKNOWN_SERVICE) > > -- > 2.41.0
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index eddc031c4b95..1ad1869e2e96 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c @@ -454,6 +454,11 @@ static struct rtas_function rtas_function_table[] __ro_after_init = { }, }; +#define for_each_rtas_function(funcp) \ + for (funcp = &rtas_function_table[0]; \ + funcp < &rtas_function_table[ARRAY_SIZE(rtas_function_table)]; \ + ++funcp) + /* * Nearly all RTAS calls need to be serialized. All uses of the * default rtas_args block must hold rtas_lock. @@ -525,10 +530,10 @@ static DEFINE_XARRAY(rtas_token_to_function_xarray); static int __init rtas_token_to_function_xarray_init(void) { + const struct rtas_function *func; int err = 0; - for (size_t i = 0; i < ARRAY_SIZE(rtas_function_table); ++i) { - const struct rtas_function *func = &rtas_function_table[i]; + for_each_rtas_function(func) { const s32 token = func->token; if (token == RTAS_UNKNOWN_SERVICE)