Catalin Marinas
cab15ce604
arm64: Introduce execute-only page access permissions
...
The ARMv8 architecture allows execute-only user permissions by clearing
the PTE_UXN and PTE_USER bits. However, the kernel running on a CPU
implementation without User Access Override (ARMv8.2 onwards) can still
access such page, so execute-only page permission does not protect
against read(2)/write(2) etc. accesses. Systems requiring such
protection must enable features like SECCOMP.
This patch changes the arm64 __P100 and __S100 protection_map[] macros
to the new __PAGE_EXECONLY attributes. A side effect is that
pte_user() no longer triggers for __PAGE_EXECONLY since PTE_USER isn't
set. To work around this, the check is done on the PTE_NG bit via the
pte_ng() macro. VM_READ is also checked now for page faults.
Reviewed-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2016-08-25 18:00:29 +01:00
..
2016-08-11 16:58:14 -07:00
2016-08-04 14:19:16 -06:00
2016-07-26 16:19:19 -07:00
2016-03-17 15:09:34 -07:00
2016-01-27 09:09:57 -05:00
2015-07-17 16:39:54 -07:00
2016-05-27 14:49:37 -07:00
2015-08-14 15:56:32 -07:00
2016-07-28 16:07:41 -07:00
2016-03-17 15:09:34 -07:00
2016-03-17 15:09:34 -07:00
2016-03-17 15:09:34 -07:00
2015-11-05 19:34:48 -08:00
2016-06-09 14:23:11 -07:00
2016-03-15 16:55:16 -07:00
2016-08-07 14:41:02 -06:00
2016-02-16 10:11:12 +01:00
2016-07-26 16:19:19 -07:00
2016-08-02 16:11:27 -04:00
2016-05-19 19:12:14 -07:00
2016-07-28 16:07:41 -07:00
2016-05-20 17:58:30 -07:00
2016-08-11 16:58:13 -07:00
2015-09-10 13:29:01 -07:00
2011-07-26 16:49:47 -07:00
2016-07-28 16:07:41 -07:00
2015-02-10 14:30:31 -08:00
2016-08-04 20:02:09 -04:00
2016-03-17 15:09:34 -07:00
2016-07-28 16:07:41 -07:00
2016-03-17 15:09:34 -07:00
2016-03-17 15:09:34 -07:00
2016-07-28 16:07:41 -07:00
2016-07-26 16:19:19 -07:00
2016-01-20 17:09:18 -08:00
2016-05-22 17:21:27 -07:00
2016-05-23 17:04:14 -07:00
2016-08-08 14:48:14 -07:00
2016-08-04 20:02:09 -04:00
2016-08-11 16:58:13 -07:00
2016-08-11 16:58:14 -07:00
2016-07-28 16:07:41 -07:00
2016-08-02 17:31:41 -04:00
2016-07-28 16:07:41 -07:00
2016-07-28 16:07:41 -07:00
2015-09-08 15:35:28 -07:00
2016-07-28 16:07:41 -07:00
2016-04-04 10:41:08 -07:00
2016-07-28 16:07:41 -07:00
2016-03-17 15:09:34 -07:00
2016-08-25 18:00:29 +01:00
2016-04-28 11:44:19 +02:00
2016-03-17 15:09:34 -07:00
2016-05-19 19:12:14 -07:00
2016-07-26 16:19:19 -07:00
2016-07-26 16:19:19 -07:00
2015-11-05 19:34:48 -08:00
2016-03-17 15:09:34 -07:00
2016-07-26 16:19:19 -07:00
2016-08-11 16:58:14 -07:00
2016-08-11 16:58:13 -07:00
2015-11-05 19:34:48 -08:00
2016-05-27 14:49:37 -07:00
2016-07-28 16:07:41 -07:00
2016-08-07 14:41:02 -06:00
2016-07-26 16:19:19 -07:00
2016-07-26 16:19:19 -07:00
2016-06-03 15:06:22 -07:00
2016-07-28 16:07:41 -07:00
2016-01-15 17:56:32 -08:00
2016-03-17 15:09:34 -07:00
2014-09-02 14:46:02 -04:00
2016-05-25 11:48:25 -04:00
2016-03-17 15:09:34 -07:00
2016-02-16 10:04:09 +01:00
2016-03-17 15:09:34 -07:00
2016-07-26 16:19:19 -07:00
2016-08-10 16:40:56 -07:00
2016-08-10 16:40:56 -07:00
2016-07-26 16:19:19 -07:00
2016-08-08 14:48:14 -07:00
2016-07-28 16:07:41 -07:00
2016-02-18 16:23:24 -08:00
2016-08-10 16:40:56 -07:00
2016-08-02 17:31:41 -04:00
2016-08-02 17:31:41 -04:00
2016-03-17 15:09:34 -07:00
2016-07-28 16:07:41 -07:00
2016-07-28 16:07:41 -07:00
2016-07-26 16:19:19 -07:00
2016-07-26 16:19:19 -07:00
2016-07-26 14:41:47 -07:00
2016-04-04 10:41:08 -07:00
2016-07-28 16:07:41 -07:00
2015-11-05 19:34:48 -08:00
2016-07-26 16:19:19 -07:00
2016-02-03 08:28:43 -08:00
2016-08-02 17:31:41 -04:00
2016-07-28 16:07:41 -07:00
2016-07-28 16:07:41 -07:00
2016-06-03 16:02:55 -07:00
2016-01-15 11:40:52 -08:00
2015-11-06 17:50:42 -08:00
2016-07-28 16:07:41 -07:00
2016-05-20 17:58:30 -07:00