David Daney
46011e6ea3
MIPS: Make set_pte() SMP safe.
...
On MIPS the GLOBAL bit of the PTE must have the same value in any
aligned pair of PTEs. These pairs of PTEs are referred to as
"buddies". In a SMP system is is possible for two CPUs to be calling
set_pte() on adjacent PTEs at the same time. There is a race between
setting the PTE and a different CPU setting the GLOBAL bit in its
buddy PTE.
This race can be observed when multiple CPUs are executing
vmap()/vfree() at the same time.
Make setting the buddy PTE's GLOBAL bit an atomic operation to close
the race condition.
The case of CONFIG_64BIT_PHYS_ADDR && CONFIG_CPU_MIPS32 is *not*
handled.
Signed-off-by: David Daney <david.daney@cavium.com>
Cc: <stable@vger.kernel.org>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/10835/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2015-08-05 11:11:10 +02:00
..
2014-06-04 22:50:41 +02:00
2013-02-01 10:00:22 +01:00
2015-01-19 13:09:52 +01:00
2013-02-01 10:00:22 +01:00
2013-02-01 10:00:22 +01:00
2015-03-31 11:59:40 +02:00
2015-04-01 17:22:01 +02:00
2015-06-27 12:44:34 -07:00
2015-03-31 11:59:40 +02:00
2015-06-21 21:53:53 +02:00
2015-08-03 10:19:22 +02:00
2015-06-21 21:53:30 +02:00
2015-04-13 16:03:32 +02:00
2015-04-08 01:09:49 +02:00
2014-03-26 23:09:21 +01:00
2015-06-21 21:52:44 +02:00
2015-03-31 11:59:40 +02:00
2015-06-21 21:53:54 +02:00
2015-04-08 01:09:49 +02:00
2015-06-21 21:54:13 +02:00
2014-08-26 02:18:58 +02:00
2015-04-17 15:50:54 -04:00
2015-04-01 17:22:01 +02:00
2015-06-21 21:53:26 +02:00
2015-03-31 11:59:40 +02:00
2015-03-31 11:59:40 +02:00
2015-06-21 21:53:59 +02:00
2015-07-07 20:59:42 +02:00
2014-11-24 07:44:56 +01:00
2015-04-01 17:21:50 +02:00
2015-03-31 11:59:40 +02:00
2015-03-31 12:04:12 +02:00
2015-02-17 15:37:21 +00:00
2015-03-31 11:59:40 +02:00
2015-03-31 11:59:40 +02:00
2013-02-01 10:00:22 +01:00
2015-04-08 01:09:49 +02:00
2014-11-24 07:44:56 +01:00
2015-07-14 21:47:34 +02:00
2015-03-31 11:59:40 +02:00
2014-11-24 22:47:31 +01:00
2015-03-31 11:59:40 +02:00
2015-04-01 17:22:07 +02:00
2015-04-01 17:21:53 +02:00
2015-04-13 16:03:32 +02:00
2015-04-01 17:22:16 +02:00
2015-04-01 17:21:56 +02:00
2013-02-01 10:00:22 +01:00
2013-05-08 03:51:58 +02:00
2013-02-01 10:00:22 +01:00
2013-02-01 10:00:22 +01:00
2015-06-21 21:54:21 +02:00
2014-08-06 13:03:08 +02:00
2014-07-30 21:46:19 +02:00
2014-01-22 20:19:02 +01:00
2015-04-10 15:41:43 +02:00
2014-03-31 18:17:12 +02:00
2015-04-13 16:01:37 +02:00
2014-01-13 23:40:56 +01:00
2015-06-24 14:45:17 +02:00
2015-02-17 15:37:22 +00:00
2015-05-19 08:32:00 +02:00
2013-02-01 10:00:22 +01:00
2015-06-21 21:54:30 +02:00
2015-06-21 21:53:30 +02:00
2015-04-08 23:52:32 +02:00
2014-11-24 22:47:31 +01:00
2015-02-17 15:37:37 +00:00
2013-02-20 18:24:24 +01:00
2011-05-10 18:15:24 +01:00
2015-03-25 13:48:00 +01:00
2014-01-15 14:19:42 +07:00
2015-03-31 12:04:12 +02:00
2015-03-31 12:04:12 +02:00
2015-04-01 17:21:47 +02:00
2013-12-04 17:19:44 +01:00
2014-11-24 07:45:37 +01:00
2014-05-27 11:06:42 +02:00
2015-05-13 10:55:42 +02:00
2013-02-01 10:00:22 +01:00
2013-03-02 07:44:16 -08:00
2015-02-17 15:37:21 +00:00
2014-10-23 19:58:13 +02:00
2015-06-21 21:54:13 +02:00
2015-04-08 01:10:37 +02:00
2015-06-21 21:53:26 +02:00
2015-06-21 21:54:13 +02:00
2012-10-16 22:20:03 +02:00
2010-10-29 19:08:31 +01:00
2014-01-22 20:43:10 +01:00
2015-05-05 13:35:39 -06:00
2013-02-01 10:00:22 +01:00
2013-01-24 13:20:09 +01:00
2015-05-28 15:31:53 +02:00
2015-05-12 23:15:49 +02:00
2012-10-09 09:47:14 +01:00
2014-08-26 02:18:56 +02:00
2012-03-28 18:30:02 +01:00
2014-05-24 00:07:01 +02:00
2013-02-01 10:00:22 +01:00
2014-11-07 15:07:36 +01:00
2015-04-08 01:10:37 +02:00
2015-07-19 11:31:24 +02:00
2014-10-24 02:38:33 +02:00
2015-02-17 15:37:23 +00:00
2015-02-20 13:30:55 +01:00
2013-02-01 10:00:22 +01:00
2015-06-21 21:52:28 +02:00
2014-01-24 22:39:56 +01:00
2014-11-24 07:45:02 +01:00
2015-06-25 17:00:35 -07:00
2011-07-26 16:49:47 -07:00
2015-06-21 21:54:29 +02:00
2014-11-12 21:17:27 +01:00
2013-05-09 17:55:20 +02:00
2014-11-24 22:47:31 +01:00
2014-11-24 07:44:52 +01:00
2015-03-31 12:04:12 +02:00
2015-06-21 21:52:50 +02:00
2013-02-01 10:00:22 +01:00
2013-02-01 10:00:22 +01:00
2013-02-01 10:00:22 +01:00
2015-04-09 09:40:23 +02:00
2015-07-17 16:39:53 -07:00
2015-03-27 21:25:06 +00:00
2012-12-13 16:46:47 +01:00
2015-06-21 21:54:10 +02:00
2013-02-01 10:00:22 +01:00
2013-02-01 10:00:22 +01:00
2015-05-26 12:40:17 +02:00
2014-05-30 21:01:11 +02:00
2013-03-03 22:55:19 -05:00
2015-02-17 15:37:24 +00:00
2013-02-01 10:00:22 +01:00
2014-08-02 00:06:46 +02:00
2013-02-01 10:00:22 +01:00
2013-05-08 01:19:07 +02:00
2014-05-24 00:07:01 +02:00
2015-06-21 21:54:28 +02:00
2014-11-24 22:47:31 +01:00
2015-04-08 01:10:19 +02:00
2014-05-28 16:20:22 +01:00
2011-10-20 15:00:18 +01:00
2015-06-21 21:54:13 +02:00
2015-02-16 10:55:26 +01:00
2015-02-12 12:30:29 +01:00
2015-02-17 15:37:17 +00:00
2014-08-02 00:06:44 +02:00
2013-02-01 10:00:22 +01:00
2014-06-02 16:34:41 +02:00
2014-11-24 07:45:36 +01:00
2015-04-02 13:54:18 +02:00
2015-06-25 15:22:36 -07:00
2011-03-14 21:07:26 +01:00
2013-11-15 09:32:18 +09:00
2015-06-21 21:53:42 +02:00
2015-04-01 17:21:59 +02:00
2015-06-09 10:45:05 +02:00
2015-08-05 11:11:10 +02:00
2014-05-28 16:20:31 +01:00
2014-05-29 15:08:23 +02:00
2015-03-27 19:42:48 +01:00
2015-06-21 21:54:14 +02:00
2015-02-20 15:28:29 +01:00
2012-08-17 10:57:28 +02:00
2015-04-10 15:41:46 +02:00
2014-08-02 00:06:38 +02:00
2013-02-01 10:00:22 +01:00
2014-01-22 20:19:02 +01:00
2015-04-17 09:04:10 -04:00
2013-10-29 21:24:36 +01:00
2015-01-13 16:04:28 +01:00
2013-02-01 10:00:22 +01:00
2013-02-01 10:00:22 +01:00
2014-06-26 10:48:18 +01:00
2013-03-19 19:15:52 +01:00
2013-02-03 18:33:02 -05:00
2014-07-30 20:47:39 +02:00
2014-05-27 11:06:42 +02:00
2015-08-03 09:25:12 +02:00
2013-02-01 10:00:22 +01:00
2012-10-09 09:47:14 +01:00
2014-07-30 21:46:19 +02:00
2013-02-01 10:00:22 +01:00
2015-06-24 14:57:46 +02:00
2015-02-17 15:37:20 +00:00
2015-08-03 10:29:11 +02:00
2013-07-01 15:10:48 +02:00
2011-06-15 14:35:33 +02:00
2013-02-01 10:00:22 +01:00
2015-06-10 11:24:53 +02:00
2015-02-04 16:40:09 +01:00
2012-10-09 09:47:14 +01:00
2015-04-17 15:50:54 -04:00
2014-11-24 07:45:16 +01:00
2014-05-30 18:21:30 +02:00
2014-01-22 20:18:59 +01:00
2011-12-07 22:01:45 +00:00
2015-05-27 15:22:15 +02:00
2013-02-01 10:00:22 +01:00
2015-06-21 21:52:50 +02:00
2013-02-01 10:00:22 +01:00
2014-11-24 22:47:31 +01:00
2015-06-27 12:44:34 -07:00
2014-11-24 22:47:31 +01:00
2014-06-04 16:54:14 -07:00
2013-09-18 17:13:58 +02:00
2014-01-30 17:20:32 -08:00
2013-02-01 10:00:22 +01:00