Summary: | have_avx in sysdeps/x68_64/dl-trampoline.S does not check hard enough | ||
---|---|---|---|
Product: | glibc | Reporter: | Andy Lutomirski <luto> |
Component: | libc | Assignee: | Ulrich Drepper <drepper.fsp> |
Status: | RESOLVED FIXED | ||
Severity: | normal | Flags: | fweimer:
security-
|
Priority: | P2 | ||
Version: | 2.14 | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Last reconfirmed: |
Description
Andy Lutomirski
2011-07-20 13:53:53 UTC
That's the generic model but why should anyone care on Linux? See the gmane link. There is apparently at least one person running a legacy kernel on Sandy Bridge hardware, and glibc gets SIGILL on that box. I'm not affected myself. I suspect that only servers will ever see this, because desktop machines will probably have other problems (like no graphics). I checked in a patch. Which is of course wrong. Don't reopen bugs like this. Should it be a new bug, then? From my admittedly imperfect recollection of x86 assembly, this: + testl $((1 << 28) | (1 << 27)), %ecx + je 2f is checking whether one of the bits is set, not whether both are set. I think you'll get SIGILL when you do xgetbv if OSXSAVE isn't set. (And you'll get a different failure if YMM is enabled but AVX isn't present, in the unlikely event that such a CPU exists.) |