David S. Miller
1f474646fd
sparc64: Fix sun4u execute bit check in TSB I-TLB load.
...
Thanks to testcase and report from Brad Spengler:
--------------------
#include <stdio.h>
typedef int (* _wee)(void);
int main(void)
{
char buf[8] = { '\x81', '\xc7', '\xe0', '\x08', '\x81', '\xe8',
'\x00', '\x00' };
_wee wee;
printf("%p\n", &buf);
wee = (_wee)&buf;
wee();
return 0;
}
--------------------
TSB I-tlb load code tries to use andcc to check the _PAGE_EXEC_4U bit,
but that's bit 12 so it gets sign extended all the way up to bit 63
and the test nearly always passes as a result.
Use sethi to fix the bug.
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-02-19 15:19:52 -08:00
..
2008-12-04 09:17:15 -08:00
2009-11-02 21:15:59 -08:00
2008-12-04 09:17:12 -08:00
2008-12-04 09:17:21 -08:00
2009-11-16 02:54:07 -08:00
2009-01-08 16:58:20 -08:00
2009-11-27 17:33:43 -08:00
2010-01-15 01:27:49 -08:00
2008-12-04 09:17:21 -08:00
2009-02-11 00:54:07 -08:00
2008-12-04 09:17:21 -08:00
2009-12-02 22:28:49 -08:00
2009-06-16 04:56:28 -07:00
2009-06-16 04:56:28 -07:00
2008-12-04 13:26:31 -08:00
2009-08-10 09:35:00 +02:00
2009-06-16 04:56:22 -07:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2008-12-08 01:08:24 -08:00
2009-12-11 00:44:47 -08:00
2008-12-04 09:17:20 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2009-12-11 00:44:47 -08:00
2008-12-04 09:17:21 -08:00
2009-11-02 04:19:42 -08:00
2009-06-16 04:56:11 -07:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2009-08-17 18:32:10 -07:00
2009-09-21 06:27:08 +02:00
2008-12-04 09:17:21 -08:00
2009-12-16 07:20:18 -08:00
2009-11-02 04:19:42 -08:00
2009-08-17 18:32:10 -07:00
2010-01-26 04:16:49 -08:00
2008-09-19 21:17:59 -07:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2009-01-28 17:27:14 -08:00
2009-01-02 19:32:59 -08:00
2009-03-18 23:51:57 -07:00
2009-12-09 23:57:24 -08:00
2010-02-12 12:03:45 -08:00
2009-09-28 14:39:58 -07:00
2009-12-16 07:20:19 -08:00
2009-03-31 01:14:44 +04:00
2009-11-02 04:19:42 -08:00
2009-11-02 04:19:42 -08:00
2009-11-27 17:33:43 -08:00
2009-12-11 01:16:46 -08:00
2008-12-04 09:17:21 -08:00
2009-06-12 21:47:05 +09:30
2009-01-02 19:32:59 -08:00
2010-01-04 15:37:04 -08:00
2010-02-17 16:42:20 -08:00
2009-12-09 01:39:09 -08:00
2009-06-16 04:56:49 -07:00
2009-06-16 04:56:49 -07:00
2009-03-18 23:53:16 -07:00
2009-04-08 03:28:15 -07:00
2008-12-04 09:17:21 -08:00
2009-11-18 05:09:59 -08:00
2009-04-08 03:28:15 -07:00
2009-04-08 03:28:15 -07:00
2009-01-06 13:19:28 -08:00
2008-12-04 09:17:21 -08:00
2009-08-10 09:34:59 +02:00
2008-12-04 09:17:21 -08:00
2010-02-17 16:42:08 -08:00
2010-01-15 01:34:28 -08:00
2009-09-21 14:28:04 +02:00
2010-01-20 16:23:03 -08:00
2008-12-08 01:02:55 -08:00
2009-04-08 03:27:52 -07:00
2010-02-11 12:29:16 -08:00
2010-02-11 14:00:27 -08:00
2009-08-17 18:32:10 -07:00
2009-06-16 04:56:22 -07:00
2009-11-08 17:41:20 -08:00
2009-01-06 13:19:28 -08:00
2009-06-16 04:56:19 -07:00
2009-01-08 11:37:19 -08:00
2008-12-04 09:17:21 -08:00
2009-07-12 12:22:34 -07:00
2009-12-11 00:44:47 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:20 -08:00
2008-12-04 09:17:21 -08:00
2009-01-08 16:58:20 -08:00
2009-09-15 17:04:38 -07:00
2009-11-27 17:33:43 -08:00
2010-02-09 16:18:40 -08:00
2010-02-09 16:18:40 -08:00
2010-02-09 16:18:40 -08:00
2009-11-02 04:19:42 -08:00
2009-09-29 09:17:57 +09:00
2009-01-08 16:59:01 -08:00
2009-12-15 16:28:13 +10:30
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:22 -08:00
2009-03-30 22:05:14 +10:30
2009-08-18 23:44:08 -07:00
2008-12-04 09:17:22 -08:00
2009-08-18 23:44:08 -07:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2009-09-14 10:37:28 -07:00
2009-12-11 06:34:09 -05:00
2009-12-11 06:44:59 -05:00
2010-01-08 00:03:26 -08:00
2009-12-11 00:44:47 -08:00
2009-08-16 18:25:53 -07:00
2009-12-11 06:44:58 -05:00
2009-12-11 06:44:58 -05:00
2009-12-11 06:44:58 -05:00
2005-04-16 15:20:36 -07:00
2008-09-19 21:18:01 -07:00
2010-01-15 01:34:28 -08:00
2009-12-11 02:05:05 -08:00
2009-11-02 04:19:42 -08:00
2008-12-04 09:17:21 -08:00
2009-07-12 12:22:34 -07:00
2009-06-16 04:56:13 -07:00
2010-02-19 15:19:52 -08:00
2009-03-18 23:51:57 -07:00
2008-12-04 09:17:20 -08:00
2008-12-04 09:17:21 -08:00
2009-12-11 01:07:53 -08:00
2009-12-11 01:07:53 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2009-07-12 13:02:09 -07:00
2009-01-06 12:46:46 -08:00
2009-12-11 01:07:53 -08:00
2009-09-18 13:57:18 -07:00
2009-01-02 19:32:59 -08:00
2008-12-04 09:17:21 -08:00
2008-07-17 21:37:46 -07:00
2008-07-17 21:37:46 -07:00