Linus Torvalds
6b3a707736
Merge branch 'page-refs' (page ref overflow)
...
Merge page ref overflow branch.
Jann Horn reported that he can overflow the page ref count with
sufficient memory (and a filesystem that is intentionally extremely
slow).
Admittedly it's not exactly easy. To have more than four billion
references to a page requires a minimum of 32GB of kernel memory just
for the pointers to the pages, much less any metadata to keep track of
those pointers. Jann needed a total of 140GB of memory and a specially
crafted filesystem that leaves all reads pending (in order to not ever
free the page references and just keep adding more).
Still, we have a fairly straightforward way to limit the two obvious
user-controllable sources of page references: direct-IO like page
references gotten through get_user_pages(), and the splice pipe page
duplication. So let's just do that.
* branch page-refs:
fs: prevent page refcount overflow in pipe_buf_get
mm: prevent get_user_pages() from overflowing page refcount
mm: add 'try_get_page()' helper function
mm: make page ref count overflow check tighter and more explicit
2019-04-14 15:09:40 -07:00
..
2019-03-29 12:15:02 -07:00
2019-03-12 14:08:19 -07:00
2018-10-24 20:55:56 -04:00
2018-12-30 08:31:52 +00:00
2019-04-11 19:29:50 +02:00
2019-04-12 08:55:55 +02:00
2019-03-07 18:32:02 -08:00
2019-04-05 17:41:41 +02:00
2019-03-05 15:56:59 +01:00
2019-04-10 13:45:59 +02:00
2019-03-12 10:04:02 -07:00
2019-03-15 14:22:59 -07:00
2019-03-06 07:59:36 -08:00
2019-04-03 09:50:22 +02:00
2019-04-10 15:23:26 +02:00
2019-04-14 15:09:40 -07:00
2019-03-07 18:32:02 -08:00
2018-01-04 16:45:09 -08:00
2019-01-31 14:20:54 +01:00
2019-01-18 17:53:29 -05:00
2019-01-14 18:01:05 -05:00
2019-01-18 17:53:29 -05:00
2019-02-03 17:49:35 -05:00
2019-02-07 21:44:27 -05:00
2019-02-12 20:17:13 -05:00
2019-02-03 17:49:35 -05:00
2014-06-04 16:54:14 -07:00
2018-10-31 08:54:14 -07:00
2019-01-25 11:22:43 -08:00
2019-02-07 00:13:27 +01:00
2019-03-07 18:32:02 -08:00
2015-11-24 09:56:43 +01:00
2017-07-31 13:09:49 +02:00
2019-03-28 13:34:58 +01:00
2019-03-05 21:07:14 -08:00
2014-08-25 15:42:19 -07:00
2019-01-08 13:18:44 -08:00
2018-10-26 16:26:32 -07:00
2018-05-16 07:23:35 +02:00
2017-11-02 11:10:55 +01:00
2018-05-16 07:23:35 +02:00
2019-03-07 10:11:41 -08:00
2018-02-21 16:54:06 +01:00
2018-10-31 08:54:12 -07:00
2019-03-09 15:53:03 -08:00
2018-08-06 12:35:20 +02:00
2019-03-22 13:05:26 +01:00
2017-12-14 16:00:49 -08:00
2019-03-07 18:31:59 -08:00
2018-05-15 23:08:33 -07:00
2018-01-08 19:43:15 +01:00
2019-01-06 09:46:51 +09:00
2019-01-21 17:38:56 -03:00
2017-11-02 11:10:55 +01:00
2008-10-20 08:52:34 -07:00
2019-02-01 20:55:38 +01:00
2018-12-15 17:44:35 +09:00
2019-03-07 18:32:02 -08:00
2018-12-28 12:11:47 -08:00
2018-12-06 14:38:50 +00:00
2017-11-02 11:10:55 +01:00
2018-07-16 12:31:57 -07:00
2017-09-08 18:26:51 -07:00
2019-02-13 08:16:40 +01:00
2017-07-12 16:25:59 -07:00
2019-03-06 10:31:36 -08:00
2017-03-02 08:42:39 +01:00
2019-03-07 18:32:02 -08:00
2018-12-28 12:11:52 -08:00
2018-11-07 14:41:41 +01:00
2018-07-02 11:36:17 +02:00
2019-03-07 18:32:00 -08:00
2017-02-24 17:46:56 -08:00
2017-03-13 15:57:41 -03:00
2018-11-16 14:11:04 +08:00
2019-03-07 18:31:59 -08:00
2018-04-11 10:28:37 -07:00
2018-09-16 16:08:25 +02:00
2018-12-28 12:42:30 -08:00
2018-10-31 08:54:16 -07:00
2019-03-29 10:01:37 -07:00
2017-11-02 11:10:55 +01:00
2018-09-11 16:13:24 +01:00
2019-03-12 13:27:20 -07:00
2019-03-16 13:05:32 -07:00
2019-01-03 18:57:57 -08:00
2019-04-05 09:26:43 -04:00
2019-04-01 23:03:18 +02:00
2019-01-30 19:27:00 +01:00
2018-07-03 09:20:44 +02:00
2017-11-02 11:10:55 +01:00
2019-02-10 21:51:39 +01:00
2018-12-05 19:31:44 -08:00
2017-03-08 09:18:02 +01:00
2018-08-13 11:25:07 -07:00
2019-03-16 13:47:14 -07:00
2019-03-07 19:25:37 -08:00
2019-01-04 13:13:47 -08:00
2019-04-05 16:02:31 -10:00
2017-11-07 10:32:44 +01:00
2018-02-06 18:32:46 -08:00
2018-06-21 12:33:05 +02:00
2019-02-09 08:47:52 -08:00
2018-11-27 09:21:41 -08:00
2017-03-02 08:42:39 +01:00
2018-04-05 21:36:27 -07:00
2018-04-02 20:15:59 +02:00
2018-04-02 20:15:30 +02:00
2019-01-11 18:05:40 -08:00
2018-10-09 16:51:11 +02:00
2018-11-07 23:51:16 -06:00
2014-08-26 13:45:45 -04:00
2018-08-22 10:52:47 -07:00
2018-08-11 02:05:53 -05:00
2018-04-11 10:28:35 -07:00
2018-08-30 12:56:40 +02:00
2019-03-28 13:32:01 +01:00
2019-02-01 15:46:23 -08:00
2019-03-21 12:00:18 +01:00