Christophe Leroy
c73049389e
powerpc/vdso: Fix VDSO data access when running in a non-root time namespace
...
When running in a non-root time namespace, the global VDSO data page
is replaced by a dedicated namespace data page and the global data
page is mapped next to it. Detailed explanations can be found at
commit 660fd04f93 ("lib/vdso: Prepare for time namespace support").
When it happens, __kernel_get_syscall_map and __kernel_get_tbfreq
and __kernel_sync_dicache don't work anymore because they read 0
instead of the data they need.
To address that, clock_mode has to be read. When it is set to
VDSO_CLOCKMODE_TIMENS, it means it is a dedicated namespace data page
and the global data is located on the following page.
Add a macro called get_realdatapage which reads clock_mode and add
PAGE_SIZE to the pointer provided by get_datapage macro when
clock_mode is equal to VDSO_CLOCKMODE_TIMENS. Use this new macro
instead of get_datapage macro except for time functions as they handle
it internally.
Fixes: 74205b3fc2 ("powerpc/vdso: Add support for time namespaces")
Reported-by: Jason A. Donenfeld <Jason@zx2c4.com >
Closes: https://lore.kernel.org/all/ZtnYqZI-nrsNslwy@zx2c4.com/
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu >
Acked-by: Michael Ellerman <mpe@ellerman.id.au >
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com >
2024-09-13 17:28:36 +02:00
..
2024-05-08 00:21:30 +10:00
2024-06-25 15:57:26 +02:00
2024-02-14 14:24:06 +11:00
2024-09-13 17:28:36 +02:00
2022-09-26 22:47:37 +10:00
2024-09-13 17:28:36 +02:00
2023-08-02 22:22:19 +10:00
2023-08-02 22:22:19 +10:00
2023-10-01 23:09:02 +11:00
2022-05-08 22:15:04 +10:00
2023-08-02 22:22:19 +10:00
2024-05-08 00:25:00 +10:00
2022-11-18 19:00:06 +11:00
2023-06-19 17:36:25 +10:00
2022-09-26 22:47:13 +10:00
2022-09-26 22:47:13 +10:00
2022-09-26 22:47:13 +10:00
2022-09-26 23:00:05 +10:00
2022-09-26 22:47:13 +10:00
2024-02-21 23:11:00 +11:00
2024-02-14 14:24:06 +11:00
2024-06-28 22:28:47 +10:00
2023-11-27 22:01:14 +11:00
2023-09-18 12:23:27 +10:00
2022-06-29 16:45:05 +10:00
2023-01-30 20:07:42 +11:00
2024-05-06 22:04:31 +10:00
2024-04-25 20:55:53 -07:00
2023-07-31 17:54:28 +02:00
2022-04-18 07:21:12 +02:00
2024-02-21 23:11:00 +11:00
2022-03-08 22:06:25 +11:00
2024-04-29 23:51:15 +10:00
2022-05-05 22:12:44 +10:00
2024-06-23 11:54:27 +10:00
2022-05-08 22:15:40 +10:00
2024-06-28 17:03:40 +10:00
2024-06-28 22:28:48 +10:00
2024-06-28 22:28:48 +10:00
2024-07-12 15:52:15 -07:00
2023-10-10 13:35:55 -06:00
2024-05-19 09:21:03 -07:00
2024-01-01 11:47:38 -05:00
2023-11-28 23:04:43 +11:00
2024-07-12 15:52:17 -07:00
2024-06-28 22:28:47 +10:00
2023-10-19 17:12:46 +11:00
2024-06-23 11:54:13 +10:00
2024-07-12 15:52:18 -07:00
2024-05-14 00:31:44 -07:00
2024-06-28 22:28:47 +10:00
2023-09-18 12:23:47 +10:00
2023-09-18 12:23:47 +10:00
2021-12-23 22:35:13 +11:00
2022-09-28 19:22:10 +10:00
2022-09-26 23:00:14 +10:00
2023-10-10 15:22:02 -07:00
2023-08-01 08:17:25 -04:00
2024-02-05 22:43:19 +11:00
2023-12-27 11:49:56 -05:00
2023-10-19 17:16:20 +11:00
2024-06-28 17:03:40 +10:00
2024-02-09 15:57:48 -08:00
2024-06-28 22:28:48 +10:00
2024-03-11 16:58:10 +01:00
2024-06-28 22:28:48 +10:00
2024-05-16 07:23:30 +09:00
2024-05-14 00:31:43 -07:00
2022-09-26 23:00:14 +10:00
2021-12-23 22:35:13 +11:00
2023-08-02 22:22:19 +10:00
2024-06-28 22:28:47 +10:00
2023-02-10 22:17:34 +11:00
2024-06-28 22:28:47 +10:00
2024-05-08 00:21:30 +10:00
2023-08-16 23:54:48 +10:00
2023-03-09 12:55:15 -08:00
2023-08-22 00:09:06 +10:00
2024-05-17 09:05:46 -07:00
2022-05-08 22:15:40 +10:00
2023-08-02 22:22:19 +10:00
2022-12-02 17:54:08 +11:00
2022-11-24 23:31:49 +11:00
2023-10-10 13:35:55 -06:00
2023-02-07 20:15:23 +11:00
2023-03-14 23:36:27 +11:00
2022-09-05 17:30:25 +10:00
2022-05-08 22:15:40 +10:00
2024-05-03 17:07:50 +02:00
2024-07-04 23:10:40 +10:00
2023-08-23 15:55:21 +10:00
2023-06-19 17:37:14 +10:00
2022-05-08 22:15:40 +10:00
2024-06-28 22:28:48 +10:00
2023-06-15 14:04:19 +10:00
2023-03-23 17:18:33 -07:00
2024-04-19 16:09:14 +10:00
2024-06-28 22:31:00 +10:00
2022-09-28 19:22:13 +10:00
2022-08-26 08:41:54 +10:00
2024-07-04 22:39:20 +10:00
2023-11-28 21:49:45 +11:00
2023-11-07 13:13:45 +11:00
2023-02-13 22:35:03 +11:00
2024-06-28 22:28:58 +10:00
2023-02-13 22:35:03 +11:00
2024-03-03 22:20:29 +11:00
2023-07-10 09:47:47 +10:00
2023-02-12 22:12:36 +11:00
2023-02-12 22:12:37 +11:00
2024-06-28 22:28:48 +10:00
2024-07-12 15:52:14 -07:00
2024-08-12 21:50:20 +10:00
2024-06-28 22:28:48 +10:00
2023-06-09 23:29:51 +10:00
2022-07-28 16:22:14 +10:00
2023-09-19 20:05:58 +10:00
2023-09-19 20:05:58 +10:00
2024-05-08 00:21:30 +10:00
2023-09-22 20:29:27 +10:00
2023-06-15 14:03:55 +10:00
2022-11-18 19:00:06 +11:00
2023-11-30 13:15:49 +11:00
2022-09-26 22:47:37 +10:00
2022-09-28 19:22:12 +10:00
2022-11-01 10:24:09 +11:00
2024-02-22 21:55:33 +11:00
2022-09-28 19:22:08 +10:00
2024-05-08 00:21:30 +10:00
2022-10-07 00:59:54 +11:00
2023-05-08 13:52:27 -10:00
2024-06-28 22:28:48 +10:00
2023-08-16 23:54:48 +10:00
2024-06-28 22:28:47 +10:00
2023-08-16 23:54:48 +10:00
2024-06-28 22:28:47 +10:00
2024-06-28 22:28:47 +10:00
2022-05-06 00:00:20 +10:00
2022-02-12 22:47:43 +11:00
2022-02-12 22:47:43 +11:00
2023-01-18 17:12:55 -08:00
2023-11-28 23:04:43 +11:00
2024-07-12 16:39:52 -07:00
2023-08-18 10:19:00 -07:00