Re: [PATCH v5 11/13] x86/xsaves: Add WARN_ON_FPU() when a disabled xstate component offset is requested for a compacted format

From: Yu-cheng Yu
Date: Mon May 09 2016 - 19:48:49 EST


On Mon, May 09, 2016 at 04:31:18PM -0700, Dave Hansen wrote:
> On 05/09/2016 01:46 PM, Yu-cheng Yu wrote:
> > Add a warning in case a disabled (not existing) xstate component offset
> > is requested.
> ...
> > diff --git a/arch/x86/kernel/fpu/xstate.c b/arch/x86/kernel/fpu/xstate.c
> > index 350814c..2e6dbfe 100644
> > --- a/arch/x86/kernel/fpu/xstate.c
> > +++ b/arch/x86/kernel/fpu/xstate.c
> > @@ -756,6 +756,7 @@ void *__raw_xsave_addr(struct xregs_state *xsave, int xstate_feature_mask)
> > {
> > int feature_nr = fls64(xstate_feature_mask) - 1;
> >
> > + WARN_ON_FPU(using_compacted_format() && !xfeature_enabled(feature_nr));
> > return (void *)xsave + xstate_comp_offsets[feature_nr];
> > }
>
> Why the using_compacted_format()? Shouldn't this be an error, regardless.

If the kernel is not using compacted format, I can get a component offset, no?

>
> Also, what is xstate_comp_offsets[feature_nr] in this case? Isn't it
> -1? Should we be returning NULL along with WARN()ing?

NULL makes sense. I will change it.