Peter Zijlstra
b972216e27
mmu_notifier: add call_srcu and sync function for listener to delay call and sync
...
When kernel device drivers or subsystems want to bind their lifespan to
t= he lifespan of the mm_struct, they usually use one of the following
methods:
1. Manually calling a function in the interested kernel module. The
funct= ion call needs to be placed in mmput. This method was rejected
by several ker= nel maintainers.
2. Registering to the mmu notifier release mechanism.
The problem with the latter approach is that the mmu_notifier_release
cal= lback is called from__mmu_notifier_release (called from exit_mmap).
That functi= on iterates over the list of mmu notifiers and don't expect
the release call= back function to remove itself from the list.
Therefore, the callback function= in the kernel module can't release the
mmu_notifier_object, which is actuall= y the kernel module's object
itself. As a result, the destruction of the kernel module's object must
to be done in a delayed fashion.
This patch adds support for this delayed callback, by adding a new
mmu_notifier_call_srcu function that receives a function ptr and calls
th= at function with call_srcu. In that function, the kernel module
releases its object. To use mmu_notifier_call_srcu, the calling module
needs to call b= efore that a new function called
mmu_notifier_unregister_no_release that as its= name implies,
unregisters a notifier without calling its notifier release call= back.
This patch also adds a function that will call barrier_srcu so those
kern= el modules can sync with mmu_notifier.
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-08-06 18:01:22 -07:00
..
2014-06-10 10:28:45 -07:00
2014-07-31 13:45:32 -04:00
2014-05-19 09:38:24 +02:00
2014-06-12 23:06:23 -07:00
2014-07-25 15:16:27 -07:00
2014-07-23 10:22:35 +09:00
2014-05-16 17:52:36 +02:00
2014-05-16 00:55:30 +02:00
2014-06-12 12:42:32 -07:00
2014-08-05 17:46:42 -07:00
2014-05-29 00:05:59 -07:00
2014-08-05 17:38:45 -07:00
2014-06-04 23:13:41 -07:00
2014-05-06 17:54:53 -04:00
2014-08-05 16:19:15 -07:00
2014-07-22 19:53:14 -07:00
2014-08-06 09:38:14 -07:00
2014-05-22 08:33:30 -04:00
2014-06-11 08:35:34 -07:00
2014-04-29 18:25:14 +02:00
2014-07-22 12:46:11 +05:30
2014-08-06 09:38:14 -07:00
2014-08-05 18:29:21 +01:00
2014-06-04 16:54:05 -07:00
2014-08-06 09:38:14 -07:00
2014-07-18 13:45:24 -04:00
2014-07-16 15:10:41 +02:00
2014-08-06 09:38:14 -07:00
2014-06-03 23:12:20 +02:00
2014-07-30 10:42:55 -07:00
2014-07-30 15:39:46 -04:00
2014-07-09 16:02:41 +02:00
2014-07-07 21:34:43 -07:00
2014-05-07 16:08:08 -04:00
2014-04-18 11:40:30 +02:00
2014-05-27 01:29:01 +02:00
2014-06-24 16:22:24 -06:00
2014-04-18 11:40:30 +02:00
2014-06-12 10:30:18 -07:00
2014-06-17 22:12:35 -07:00
2014-06-24 16:22:24 -06:00
2014-06-04 16:54:04 -07:00
2014-06-04 16:54:02 -07:00
2014-07-24 21:53:47 +10:00
2014-05-19 16:37:06 -04:00
2014-07-15 11:05:10 -04:00
2014-07-02 16:15:55 -07:00
2014-07-23 15:01:52 -07:00
2014-08-06 18:01:16 -07:00
2014-06-04 16:54:06 -07:00
2014-04-15 09:15:39 -07:00
2014-06-12 19:18:49 -07:00
2014-07-03 11:32:43 +01:00
2014-05-27 13:56:21 -07:00
2014-05-28 13:37:21 -07:00
2014-06-25 13:26:47 -07:00
2014-06-06 16:08:18 -07:00
2014-07-18 02:56:38 +02:00
2014-06-09 18:10:34 -07:00
2014-06-12 14:27:40 -07:00
2014-06-04 16:54:08 -07:00
2014-05-16 14:26:52 -04:00
2014-06-25 16:04:00 -07:00
2014-08-01 22:35:55 +08:00
2014-05-01 10:30:00 -04:00
2014-05-08 14:28:07 +08:00
2014-05-24 22:33:41 +09:00
2014-06-04 09:46:34 -04:00
2014-08-05 15:59:35 -07:00
2014-07-08 13:36:52 -07:00
2014-08-06 18:01:16 -07:00
2014-06-05 15:57:04 -07:00
2014-06-10 10:28:45 -07:00
2014-07-23 16:04:47 +02:00
2014-04-30 13:46:56 -06:00
2014-07-18 21:24:00 +01:00
2014-06-22 16:34:11 -06:00
2014-06-03 02:42:44 +01:00
2014-04-29 09:45:56 +09:00
2014-06-04 13:34:30 +09:00
2014-05-02 15:57:42 +03:00
2014-07-08 13:41:08 -07:00
2014-08-02 15:03:58 -07:00
2014-05-26 14:33:10 +02:00
2014-07-08 15:28:16 -07:00
2014-07-13 21:38:49 -04:00
2014-08-06 18:01:12 -07:00
2014-07-16 14:28:41 -04:00
2014-07-23 15:03:00 -04:00
2014-04-18 14:20:48 +02:00
2014-08-06 18:01:15 -07:00
2014-05-20 10:30:40 +09:00
2014-05-14 16:39:49 -07:00
2014-05-05 10:59:49 +01:00
2014-04-29 22:11:53 +01:00
2014-06-04 13:09:43 +02:00
2014-08-06 18:01:22 -07:00
2014-07-23 10:17:54 -07:00
2014-08-06 18:01:19 -07:00
2014-08-06 18:01:19 -07:00
2014-07-15 04:49:40 -04:00
2014-05-03 19:24:26 -04:00
2014-06-06 16:08:13 -07:00
2014-07-21 12:14:04 +02:00
2014-07-08 16:12:53 -07:00
2014-05-23 15:04:02 -04:00
2014-06-02 16:05:24 -07:00
2014-06-02 14:56:01 -07:00
2014-05-24 00:32:30 -04:00
2014-07-25 11:47:46 -07:00
2014-07-09 09:15:01 -07:00
2014-05-27 14:26:31 -07:00
2014-05-14 16:40:04 -07:00
2014-07-04 12:35:59 +02:00
2014-06-12 13:46:37 +02:00
2014-07-23 12:02:30 +02:00
2014-07-08 09:40:06 +02:00
2014-07-23 16:04:47 +02:00
2014-04-17 12:30:40 -07:00
2014-04-17 12:23:07 -07:00
2014-07-07 21:14:21 -07:00
2014-06-16 16:26:54 +02:00
2014-07-17 13:30:00 +00:00
2014-05-03 23:15:39 +02:00
2014-06-21 23:03:36 +02:00
2014-08-02 15:03:58 -07:00
2014-06-04 16:54:08 -07:00
2014-06-25 17:45:43 -07:00
2014-07-10 11:38:23 -07:00
2014-07-22 21:46:08 +01:00
2014-07-22 21:55:45 +01:00
2014-06-06 16:08:17 -07:00
2014-04-25 12:00:49 -07:00
2014-06-12 19:18:49 -07:00
2014-07-28 14:16:30 -04:00
2014-07-23 10:17:54 -07:00
2014-06-12 19:42:15 -07:00
2014-07-23 10:30:34 -04:00
2014-05-05 16:07:37 -07:00
2014-04-24 05:00:36 +00:00
2014-06-06 16:08:07 -07:00
2014-05-27 17:38:11 -07:00
2014-04-16 15:09:51 -04:00
2014-08-06 18:01:15 -07:00
2014-06-04 16:54:08 -07:00
2014-08-06 18:01:21 -07:00
2014-06-04 16:53:51 -07:00
2014-07-11 18:27:56 -07:00
2014-06-04 16:54:06 -07:00
2014-05-27 17:43:11 -07:00
2014-07-31 08:48:51 -07:00
2014-06-05 08:05:29 -07:00
2014-08-06 18:01:18 -07:00
2014-08-06 18:01:22 -07:00
2014-08-06 18:01:20 -07:00
2014-04-28 11:48:34 +09:30
2014-07-03 16:55:07 -06:00
2014-07-17 12:32:47 +02:00
2014-05-14 00:37:34 -04:00
2014-07-24 01:15:04 -07:00
2014-07-31 21:34:20 -07:00
2014-06-03 23:32:12 -07:00
2014-06-06 19:22:49 -04:00
2014-06-12 10:30:18 -07:00
2014-05-29 11:11:45 -04:00
2014-05-29 11:11:48 -04:00
2014-05-29 11:11:48 -04:00
2014-05-16 17:23:41 -04:00
2014-07-22 15:05:06 -07:00
2014-08-06 18:01:21 -07:00
2014-06-13 10:43:34 -04:00
2014-07-23 12:02:30 +02:00
2014-07-29 21:26:45 -06:00
2014-05-21 11:14:46 +02:00
2014-05-23 11:40:25 +09:00
2014-07-02 00:24:14 -07:00
2014-06-04 04:45:46 -05:00
2014-06-04 08:50:34 -07:00
2014-05-20 14:25:24 -05:00
2014-06-04 10:02:38 -07:00
2014-07-09 14:58:37 +01:00
2014-06-10 14:35:22 -07:00
2014-06-10 14:35:22 -07:00
2014-07-29 12:38:07 +02:00
2014-08-06 18:01:21 -07:00
2014-07-16 13:28:05 +02:00
2014-08-06 18:01:17 -07:00
2014-06-04 16:54:09 -07:00
2014-08-06 18:01:20 -07:00
2014-07-10 16:49:15 -06:00
2014-08-04 17:32:24 -07:00
2014-07-09 14:58:37 +01:00
2014-08-04 10:09:27 -07:00
2014-06-28 08:10:14 -04:00
2014-06-17 19:12:39 -04:00
2014-06-06 07:56:22 +02:00
2014-06-05 15:38:57 -07:00
2014-07-30 20:00:21 -07:00
2014-04-12 14:49:50 -07:00
2014-07-08 15:31:26 -07:00
2014-06-04 16:54:07 -07:00
2014-05-07 00:39:03 +02:00
2014-05-16 23:15:44 +02:00
2014-05-16 23:15:44 +02:00
2014-05-30 13:45:25 +02:00
2014-06-04 16:54:17 -07:00
2014-06-04 16:54:21 -07:00
2014-05-18 19:01:33 -07:00
2014-07-07 16:57:18 -07:00
2014-07-03 17:27:23 -07:00
2014-05-07 10:15:31 +02:00
2014-05-21 11:19:36 +02:00
2014-05-05 17:25:50 +10:00
2014-06-25 11:22:03 -07:00
2014-07-09 09:14:17 -07:00
2014-05-14 09:46:09 -07:00
2014-05-14 09:46:09 -07:00
2014-04-16 08:56:09 +02:00
2014-07-25 19:01:53 +01:00
2014-07-08 13:41:08 -07:00
2014-04-14 16:47:28 +02:00
2014-08-02 19:49:38 -07:00
2014-06-10 09:46:00 -04:00
2014-06-04 16:54:12 -07:00
2014-06-19 21:17:37 -07:00
2014-06-21 22:05:30 +02:00
2014-07-10 12:37:33 -07:00
2014-07-16 14:56:55 +02:00
2014-07-16 14:57:13 +02:00
2014-04-22 13:38:33 -07:00
2014-08-06 08:06:39 -07:00
2014-07-18 12:13:40 -07:00
2014-07-30 01:31:46 +10:00
2014-08-05 17:46:42 -07:00
2014-07-08 12:50:59 -07:00
2014-07-17 18:23:35 -07:00
2014-07-17 18:21:21 -07:00
2014-04-19 22:42:19 -07:00
2014-07-02 16:01:51 +02:00
2014-05-02 21:48:33 +05:30
2014-06-06 16:08:14 -07:00
2014-06-06 16:08:12 -07:00
2014-08-05 16:35:54 -07:00
2014-06-04 16:54:08 -07:00
2014-05-06 13:04:59 -07:00
2014-06-06 16:08:18 -07:00
2014-04-24 13:44:53 -04:00
2014-06-27 11:47:58 -07:00
2014-06-12 00:21:11 -04:00
2014-07-31 14:13:29 -07:00
2014-05-23 11:23:27 +09:00
2014-06-16 23:29:39 +02:00
2014-08-06 18:01:19 -07:00
2014-06-04 16:54:07 -07:00
2014-06-04 16:53:55 -07:00
2014-06-04 16:53:57 -07:00
2014-08-06 08:16:24 -07:00
2014-05-27 14:29:56 -07:00
2014-06-27 15:53:35 -07:00
2014-06-04 16:53:56 -07:00
2014-08-04 16:23:30 -07:00
2014-07-23 10:17:53 -07:00
2014-07-23 10:17:54 -07:00
2014-07-30 09:26:25 +02:00
2014-07-23 15:01:55 -07:00
2014-07-18 11:49:57 +02:00
2014-06-04 16:53:59 -07:00
2014-05-14 09:46:32 -07:00
2014-07-29 23:10:56 +02:00
2014-07-01 07:13:39 -04:00
2014-04-18 14:20:48 +02:00
2014-05-07 12:10:51 -04:00
2014-07-10 16:05:19 -07:00
2014-04-24 16:16:33 -07:00
2014-07-11 17:54:28 -07:00
2014-05-20 16:54:21 -06:00
2014-05-23 16:28:53 -04:00
2014-06-28 09:43:58 -07:00
2014-06-12 19:18:49 -07:00
2014-06-30 22:47:18 -07:00
2014-05-27 16:11:49 -07:00
2014-07-09 14:58:37 +01:00
2014-05-15 17:02:21 +01:00
2014-05-30 11:35:54 -06:00
2014-06-02 12:41:33 -07:00
2014-04-28 11:34:13 +09:30
2014-06-04 16:53:57 -07:00
2014-08-06 18:01:19 -07:00
2014-06-04 16:53:57 -07:00
2014-07-16 15:10:41 +02:00
2014-05-22 11:35:51 -04:00
2014-07-16 15:10:39 +02:00
2014-06-04 16:54:13 -07:00