Jeremy Fitzhardinge
617d34d9e5
x86, mm: Hold mm->page_table_lock while doing vmalloc_sync
...
Take mm->page_table_lock while syncing the vmalloc region. This prevents
a race with the Xen pagetable pin/unpin code, which expects that the
page_table_lock is already held. If this race occurs, then Xen can see
an inconsistent page type (a page can either be read/write or a pagetable
page, and pin/unpin converts it between them), which will cause either
the pin or the set_p[gm]d to fail; either will crash the kernel.
vmalloc_sync_all() should be called rarely, so this extra use of
page_table_lock should not interfere with its normal users.
The mm pointer is stashed in the pgd page's index field, as that won't
be otherwise used for pgds.
Reported-by: Ian Campbell <ian.cambell@eu.citrix.com>
Originally-by: Jan Beulich <jbeulich@novell.com>
LKML-Reference: <4CB88A4C.1080305@goop.org>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2010-10-19 13:57:08 -07:00
..
2010-06-08 21:13:48 +02:00
2010-02-19 16:12:29 -08:00
2010-08-12 09:09:41 -07:00
2010-08-02 08:45:56 -07:00
2010-04-28 17:15:47 -07:00
2010-07-07 10:36:28 -07:00
2010-01-22 17:44:35 +01:00
2010-05-11 17:40:57 +02:00
2010-05-19 13:45:39 -07:00
2010-03-18 17:03:21 +01:00
2010-05-17 15:17:16 -07:00
2010-02-25 20:47:30 -08:00
2010-05-18 08:40:05 -07:00
2010-05-18 08:40:05 -07:00
2010-04-06 15:52:11 -07:00
2010-04-28 17:25:53 -07:00
2010-06-18 14:54:36 -07:00
2010-03-03 11:26:00 +01:00
2010-05-21 11:14:52 -07:00
2010-07-28 17:05:11 -07:00
2010-07-28 15:24:09 -07:00
2010-03-12 15:52:32 -08:00
2010-08-06 16:24:17 -07:00
2010-01-29 02:26:10 +01:00
2010-08-11 08:59:21 -07:00
2010-05-13 22:15:18 -07:00
2010-03-19 13:39:58 -07:00
2010-02-16 08:51:49 -08:00
2010-02-16 21:22:26 -08:00
2010-03-16 11:16:27 +01:00
2009-12-15 08:53:28 -08:00
2010-04-28 16:58:49 -07:00
2010-08-09 20:44:54 -07:00
2010-04-28 18:14:29 -07:00
2010-06-24 23:35:27 +02:00
2010-03-16 06:36:35 +01:00
2010-05-07 17:13:04 -07:00
2010-07-22 16:45:35 -07:00
2010-08-06 16:25:13 -07:00
2010-03-02 10:28:38 +01:00
2010-02-22 16:25:18 -08:00
2010-03-10 13:23:34 +01:00
2010-03-24 21:37:57 +08:00
2010-08-03 09:50:30 -04:00
2010-06-09 13:34:06 -07:00
2010-09-17 09:11:56 +02:00
2010-07-22 16:45:59 -07:00
2010-02-24 11:01:34 -08:00
2010-05-14 11:53:01 -07:00
2010-08-14 22:26:51 +02:00
2010-08-12 12:23:55 -07:00
2010-08-05 09:22:20 -05:00
2010-03-10 13:23:34 +01:00
2010-08-01 10:35:37 +03:00
2010-08-02 06:40:16 +03:00
2010-05-19 11:41:05 +03:00
2010-08-01 10:46:37 +03:00
2010-04-14 21:43:56 +09:30
2010-06-09 11:12:36 +02:00
2010-01-05 15:34:49 +09:00
2010-06-10 21:27:36 -07:00
2010-01-23 06:21:59 +01:00
2010-02-15 14:34:10 -08:00
2010-05-04 13:35:11 -07:00
2010-05-19 14:37:40 -07:00
2010-05-07 17:13:04 -07:00
2010-08-06 16:24:51 -07:00
2010-07-20 15:38:18 -07:00
2010-05-12 23:55:33 +02:00
2010-02-15 14:34:10 -08:00
2010-03-07 15:59:39 -08:00
2010-07-30 18:02:21 -07:00
2010-02-25 19:26:23 -08:00
2010-10-07 16:36:17 -07:00
2010-08-11 08:43:49 +02:00
2010-02-27 14:41:35 -08:00
2010-02-27 14:41:35 -08:00
2010-02-10 17:47:18 -08:00
2010-07-30 09:29:12 -07:00
2010-03-12 15:52:42 -08:00
2010-06-11 00:03:45 +02:00
2010-07-05 08:34:36 +02:00
2010-06-09 18:55:57 +02:00
2010-02-25 10:28:19 +01:00
2010-06-07 17:27:11 -07:00
2010-08-18 09:17:20 -07:00
2010-08-26 14:02:29 -07:00
2010-10-19 13:57:08 -07:00
2010-08-02 08:45:56 -07:00
2010-02-12 09:42:39 -08:00
2010-03-26 11:33:55 +01:00
2010-03-26 11:33:55 +01:00
2010-05-19 11:41:05 +03:00
2010-05-19 11:40:59 +03:00
2010-07-07 17:29:18 -07:00
2010-07-20 17:41:14 -07:00
2010-08-07 18:15:50 +02:00
2010-10-05 22:16:54 -07:00
2010-01-22 16:05:42 -08:00
2009-12-14 23:55:32 +01:00
2009-12-14 23:55:32 +01:00
2010-06-08 23:31:27 +02:00
2010-06-08 00:32:49 +02:00
2010-06-08 00:32:49 +02:00
2010-05-17 12:17:46 +03:00
2009-12-15 13:01:57 +01:00
2010-08-13 16:53:13 -07:00
2010-02-17 13:07:21 +01:00
2010-08-17 18:07:43 -07:00
2010-08-04 11:47:58 -07:00
2010-05-28 16:14:17 -07:00
2010-05-27 09:12:57 -07:00
2010-08-18 12:42:24 -07:00
2010-05-03 13:39:29 -07:00
2010-01-05 13:45:06 -08:00
2010-02-28 10:35:09 -08:00
2010-08-10 12:07:51 -07:00
2010-08-10 12:07:51 -07:00
2010-02-11 15:08:17 -08:00
2010-08-01 10:46:31 +03:00
2010-07-07 17:05:06 -07:00
2010-08-06 16:25:13 -07:00