Dima Zavin
96714b5dfe
[ARM] Do not call flush_cache_user_range with mmap_sem held
...
We can't be holding the mmap_sem while calling flush_cache_user_range
because the flush can fault. If we fault on a user address, the
page fault handler will try to take mmap_sem again. Since both places
acquire the read lock, most of the time it succeeds. However, if another
thread tries to acquire the write lock on the mmap_sem (e.g. mmap) in
between the call to flush_cache_user_range and the fault, the down_read
in do_page_fault will deadlock.
Also, since we really can't be holding the mmap_sem while calling
flush_cache_user_range AND vma is actually unused by the flush itself,
get rid of vma as an argument.
Change-Id: If55409bde41ad1060fa4fe7cbd4ac530d4d9a106
Signed-off-by: Dima Zavin <dima@android.com >
2012-04-09 13:53:07 -07:00
..
2012-03-29 16:53:48 -07:00
2012-01-11 18:50:26 -08:00
2012-03-29 18:02:10 -07:00
2012-03-28 18:30:01 +01:00
2012-04-03 10:59:10 -07:00
2012-03-28 18:30:01 +01:00
2012-03-28 18:30:01 +01:00
2012-04-09 13:53:07 -07:00
2011-10-17 09:13:41 +01:00
2011-07-19 18:09:45 +02:00
2012-03-28 18:30:01 +01:00
2012-03-28 18:30:01 +01:00
2012-03-28 18:30:01 +01:00
2012-03-21 01:59:40 -04:00
2011-10-17 09:02:43 +01:00
2011-12-02 15:16:33 +00:00
2011-11-01 20:11:00 -07:00
2012-03-28 18:30:01 +01:00
2011-10-28 12:02:27 -07:00
2012-03-28 18:30:01 +01:00
2012-03-28 18:30:01 +01:00
2011-08-17 08:44:16 +01:00
2011-12-11 08:35:50 +00:00
2012-03-24 09:38:51 +00:00
2011-10-23 13:32:29 +01:00
2011-10-17 09:02:44 +01:00
2012-03-28 18:30:01 +01:00
2011-05-26 10:31:06 +01:00
2011-03-31 11:26:23 -03:00
2012-01-25 11:07:40 +00:00
2011-03-31 11:26:23 -03:00
2011-03-16 23:35:26 +00:00
2011-03-31 11:26:23 -03:00
2012-01-08 09:27:19 +00:00
2011-12-06 11:14:01 +00:00
2012-03-20 21:48:30 +08:00
2011-08-31 10:42:48 +01:00
2011-03-29 14:47:57 +02:00
2011-12-13 15:07:49 +00:00
2011-12-06 14:04:15 +00:00
2012-04-05 11:29:55 -07:00
2012-01-03 22:55:18 -05:00
2012-01-30 13:24:37 -06:00
2012-03-24 09:38:56 +00:00
2011-10-17 09:12:40 +01:00
2012-01-17 16:17:01 -05:00
2012-03-13 13:45:55 +00:00
2012-01-25 20:37:45 -06:00
2012-01-13 15:02:35 +00:00
2012-03-24 09:38:56 +00:00
2012-03-24 09:38:51 +00:00
2012-03-28 18:30:01 +01:00
2011-08-13 11:26:40 +01:00
2012-03-24 09:38:51 +00:00
2011-10-17 09:11:51 +01:00
2012-03-24 09:38:51 +00:00
2012-02-23 20:19:04 -07:00
2012-03-29 16:53:48 -07:00
2011-12-08 10:30:39 +00:00
2011-10-06 15:40:06 +01:00
2011-10-06 15:40:05 +01:00
2011-12-08 10:30:37 +00:00
2011-12-08 10:30:39 +00:00
2011-12-08 10:30:39 +00:00
2011-12-08 10:30:39 +00:00
2011-12-08 10:30:39 +00:00
2012-03-23 16:58:31 -07:00
2012-01-05 13:24:33 +00:00
2012-03-07 09:40:48 +00:00
2012-02-14 12:01:28 -08:00
2011-12-08 10:30:39 +00:00
2012-03-29 16:53:48 -07:00
2012-03-24 09:38:54 +00:00
2012-01-17 16:17:01 -05:00
2011-06-02 11:16:22 +01:00
2011-12-18 23:00:26 +00:00
2011-12-13 08:52:02 +00:00
2012-01-23 10:20:05 +00:00
2012-03-13 13:45:54 +00:00
2012-01-23 10:20:05 +00:00
2012-02-24 01:37:35 -08:00
2011-05-23 17:19:26 +01:00
2011-09-20 23:33:36 +01:00
2012-01-14 18:03:30 -08:00
2012-03-28 18:30:01 +01:00
2012-03-28 18:30:01 +01:00
2012-03-28 15:58:21 -07:00
2012-03-28 18:30:01 +01:00
2011-07-06 20:49:45 +01:00
2012-01-17 16:17:01 -05:00
2011-04-10 21:13:36 +01:00
2012-02-02 17:37:42 +00:00
2012-03-24 09:38:52 +00:00
2011-11-30 23:55:21 +00:00
2012-01-23 10:24:11 +00:00
2012-01-03 22:55:17 -05:00
2012-03-28 18:30:01 +01:00
2011-03-31 11:26:23 -03:00
2012-01-16 08:56:25 -06:00
2011-12-13 15:07:49 +00:00
2011-12-06 11:16:13 +00:00
2011-07-12 11:19:29 -05:00