On Mon, Feb 22, 2016 at 12:00:02PM -0800, Dave Hansen wrote:
> On 02/22/2016 11:00 AM, Yu-cheng Yu wrote:
> > +   if (xsave->header.xfeatures & XFEATURE_MASK_SUPERVISOR)
> > +           xsave->header.xfeatures = xfeatures | XFEATURE_MASK_SUPERVISOR;
> > +   else
> > +           xsave->header.xfeatures = xfeatures;
> 
> This is dangerous.  It says, "if any supervisor feature bit is set, then
> set *ALL* of the known bits".  There's no way that can work.
> 
> Don't you just want to or in the new bits that were in the passed-in
> 'xfeatures':
> 
>       xsave->header.xfeatures |= xfeatures;
> 
> 'xfeatures' is known not to contain any supervisor bits.
> 

It should have been:

        xsave->header.xfeatures = xfeatures |
                (xsave->header.xfeatures & XFEATURE_MASK_SUPERVISOR);

I'll fix it.

--Yu-cheng

Reply via email to