Re: Do the x86 kernel entry points need an xabort on TSX cpus?
From: H. Peter Anvin
Date: Fri Feb 10 2012 - 12:18:54 EST
On 02/09/2012 11:40 PM, Andy Lutomirski wrote:
[...]
- Ring transitions: SYSENTER, SYSCALL, SYSEXIT, and SYSRET.
I suspect that many bits of the kernel expect that things they do
won't unhappen. For example, it could be fun to do:
That's why entering the kernel will cause an abort. In other words, you
will ALWAYS abort when you do a read(), and you will never reach your
_xabort().
int devrandom = open("/dev/random", O_RDONLY);
unsigned int abort_code = _xbegin();
if (abort_code& 1) {
printf("Your next random byte is %d\n", (int)(abort_code>> 24));
} else if (abort_code != 0) {
printf("Attack failed\n");
} else {
char r;
read(devrandom,&r, 1);
_xabort(r);
}
-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/