Naoya Horiguchi
d4c54919ed
mm: add !pte_present() check on existing hugetlb_entry callbacks
...
The age table walker doesn't check non-present hugetlb entry in common
path, so hugetlb_entry() callbacks must check it. The reason for this
behavior is that some callers want to handle it in its own way.
[ I think that reason is bogus, btw - it should just do what the regular
code does, which is to call the "pte_hole()" function for such hugetlb
entries - Linus]
However, some callers don't check it now, which causes unpredictable
result, for example when we have a race between migrating hugepage and
reading /proc/pid/numa_maps. This patch fixes it by adding !pte_present
checks on buggy callbacks.
This bug exists for years and got visible by introducing hugepage
migration.
ChangeLog v2:
- fix if condition (check !pte_present() instead of pte_present())
Reported-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: <stable@vger.kernel.org> [3.12+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
[ Backported to 3.15. Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org> ]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-06-06 13:21:16 -07:00
..
2014-04-07 16:35:53 -07:00
2014-04-07 16:36:08 -07:00
2014-05-06 13:05:00 -07:00
2014-05-23 13:05:22 +01:00
2014-05-06 13:04:59 -07:00
2014-04-04 15:39:39 -07:00
2014-04-07 16:36:08 -07:00
2014-05-22 05:40:13 +09:00
2014-04-12 14:49:50 -07:00
2014-05-05 15:17:02 -07:00
2014-04-24 22:37:03 -05:00
2014-04-04 15:39:39 -07:00
2013-11-21 16:42:27 -08:00
2014-04-04 15:39:39 -07:00
2014-04-04 15:39:39 -07:00
2014-03-13 10:14:33 -04:00
2014-04-11 16:15:36 -04:00
2014-04-04 14:03:05 -07:00
2014-03-04 16:16:16 +00:00
2014-04-04 15:39:39 -07:00
2014-04-10 14:33:02 -07:00
2013-11-09 00:16:38 -05:00
2014-04-07 17:59:17 -07:00
2014-04-07 17:59:17 -07:00
2014-04-20 20:43:47 -07:00
2014-04-07 16:38:06 -07:00
2014-04-04 15:39:39 -07:00
2014-04-04 15:39:39 -07:00
2014-02-17 13:47:35 -08:00
2014-04-28 16:43:44 +02:00
2014-04-07 16:35:53 -07:00
2014-04-04 15:39:39 -07:00
2014-04-04 15:39:39 -07:00
2014-04-03 16:21:01 -07:00
2014-04-04 15:39:39 -07:00
2014-05-06 13:04:58 -07:00
2014-04-07 17:59:17 -07:00
2013-12-04 12:27:46 +01:00
2014-03-12 16:38:03 -04:00
2014-04-07 10:17:30 -07:00
2014-04-04 15:39:39 -07:00
2014-06-03 08:11:18 -07:00
2014-03-28 10:43:08 -04:00
2014-04-03 16:21:01 -07:00
2014-04-04 15:39:39 -07:00
2014-04-12 17:31:22 -07:00
2014-04-07 16:35:53 -07:00
2014-05-21 11:11:21 -04:00
2014-04-07 16:35:53 -07:00
2014-01-25 03:14:05 -05:00
2014-05-06 13:04:59 -07:00
2014-04-12 14:49:50 -07:00
2014-05-23 09:37:30 -07:00
2014-04-03 16:21:01 -07:00
2014-03-13 10:14:33 -04:00
2014-06-06 13:21:16 -07:00
2014-04-04 15:39:39 -07:00
2014-03-13 10:14:33 -04:00
2014-03-13 10:14:33 -04:00
2014-04-07 17:59:17 -07:00
2014-01-23 16:36:58 -08:00
2014-04-07 17:59:17 -07:00
2014-03-13 10:14:33 -04:00
2014-03-13 10:14:33 -04:00
2014-06-03 08:11:18 -07:00
2014-04-04 15:39:39 -07:00
2014-05-05 09:31:33 +03:00
2014-04-12 14:49:50 -07:00
2014-04-07 16:36:16 -07:00
2014-05-15 09:23:24 +10:00
2014-05-01 08:37:43 -04:00
2014-03-27 09:52:54 -07:00
2013-12-05 16:36:21 -06:00
2013-11-09 00:16:26 -05:00
2013-11-09 00:16:30 -05:00
2014-04-07 16:35:52 -07:00
2013-10-24 23:34:54 -04:00
2014-04-03 16:21:16 -07:00
2014-04-09 08:00:06 -06:00
2014-04-12 14:49:50 -07:00
2014-04-12 14:49:50 -07:00
2014-04-12 14:49:50 -07:00
2013-11-14 12:08:14 +09:00
2014-03-04 08:05:21 +00:00
2014-03-06 16:30:44 +01:00
2014-04-22 08:23:58 -04:00
2014-04-19 13:23:31 -07:00
2014-05-31 09:13:21 -07:00
2014-01-29 16:22:40 -08:00
2014-04-04 15:50:08 -07:00
2014-04-03 16:21:04 -07:00
2014-01-25 03:13:04 -05:00
2014-01-02 14:40:30 -08:00
2014-05-15 00:00:35 +01:00
2014-04-22 08:23:58 -04:00
2014-04-12 14:49:50 -07:00
2014-04-12 14:49:50 -07:00
2014-04-03 16:21:05 -07:00
2013-11-06 12:40:26 +01:00
2014-04-04 14:49:16 -07:00
2014-04-04 15:39:39 -07:00
2013-11-09 00:16:20 -05:00
2013-10-24 23:34:54 -04:00
2014-02-07 16:08:57 -08:00
2013-11-15 22:04:17 -05:00
2014-05-09 11:41:54 -04:00
2014-02-07 16:08:57 -08:00
2014-03-18 19:24:49 -04:00
2014-04-01 23:19:09 -04:00
2013-11-23 22:33:47 -08:00
2014-04-19 12:30:58 -04:00
2014-04-01 23:19:18 -04:00
2014-04-20 20:43:47 -07:00
2014-04-01 23:19:22 -04:00
2014-04-01 23:19:08 -04:00
2014-04-01 23:19:08 -04:00
2014-05-06 13:58:42 -04:00
2014-04-01 23:19:09 -04:00
2014-03-31 14:32:17 -07:00
2013-10-24 23:34:54 -04:00
2013-11-13 15:34:18 +09:00
2013-11-18 19:07:53 -08:00
2014-05-28 01:54:52 -04:00
2013-11-09 00:16:31 -05:00
2013-10-12 13:12:31 -07:00
2014-04-16 11:53:08 -07:00
2014-02-22 02:02:28 +01:00
2014-01-23 16:57:40 -08:00
2013-11-09 00:16:44 -05:00