Messages in this thread | | | Subject | Re: [patch 1/8] selftests/x86: Test signal frame XSTATE header corruption handling | From | Shuah Khan <> | Date | Thu, 3 Jun 2021 07:16:42 -0600 |
| |
On 6/2/21 8:15 AM, Thomas Gleixner wrote: > On Wed, Jun 02 2021 at 14:38, Borislav Petkov wrote: >> On Wed, Jun 02, 2021 at 11:55:44AM +0200, Thomas Gleixner wrote: >>> From: Andy Lutomirski <luto@kernel.org> >>> >>> This is very heavily based on some code from Thomas Gleixner. On a system >>> without XSAVES, it triggers the WARN_ON(): >>> >>> Bad FPU state detected at copy_kernel_to_fpregs+0x2f/0x40, reinitializing FPU registers. >> >> That triggers >> >> [ 149.497274] corrupt_xstate_[1627] bad frame in rt_sigreturn frame:00000000dad08ab1 ip:7f031449ffe1 sp:7ffd0c5c59f0 orax:ffffffffffffffff in libpthread-2.31.so[7f0314493000+10000] >> >> on an AMD laptop here. > > Yes, that's the ratelimited printk in the signal code. > >>> +static inline void __cpuid(unsigned int *eax, unsigned int *ebx, >>> + unsigned int *ecx, unsigned int *edx) >>> +{ >>> + asm volatile( >>> + "cpuid;" >>> + : "=a" (*eax), >>> + "=b" (*ebx), >>> + "=c" (*ecx), >>> + "=d" (*edx) >>> + : "0" (*eax), "2" (*ecx)); >>> +} >>> + >>> +static inline int xsave_enabled(void) >>> +{ >>> + unsigned int eax, ebx, ecx, edx; >>> + >>> + eax = 0x1; >>> + ecx = 0x0; >>> + __cpuid(&eax, &ebx, &ecx, &edx); >>> + >>> + /* Is CR4.OSXSAVE enabled ? */ >>> + return ecx & (1U << 27); >>> +} >> >> One fine day someone should sit down and unify all those auxillary >> functions used in the selftests into a lib... > > Yes please. Shuah, that would be a great newcomer task... >
Yes. I will add to newcomer task list.
thanks, -- Shuah
| |