Eric Biggers
7a8861d708
fscrypt: use READ_ONCE() to access ->i_crypt_info
...
->i_crypt_info starts out NULL and may later be locklessly set to a
non-NULL value by the cmpxchg() in fscrypt_get_encryption_info().
But ->i_crypt_info is used directly, which technically is incorrect.
It's a data race, and it doesn't include the data dependency barrier
needed to safely dereference the pointer on at least one architecture.
Fix this by using READ_ONCE() instead. Note: we don't need to use
smp_load_acquire(), since dereferencing the pointer only requires a data
dependency barrier, which is already included in READ_ONCE(). We also
don't need READ_ONCE() in places where ->i_crypt_info is unconditionally
dereferenced, since it must have already been checked.
Also downgrade the cmpxchg() to cmpxchg_release(), since RELEASE
semantics are sufficient on the write side.
Signed-off-by: Eric Biggers <ebiggers@google.com >
Signed-off-by: Theodore Ts'o <tytso@mit.edu >
2019-07-11 18:47:35 -07:00
..
2018-08-18 15:55:59 -07:00
2018-09-30 08:49:55 -07:00
2018-10-10 14:03:27 +02:00
2018-08-22 14:07:56 +02:00
2018-09-10 16:58:36 +01:00
2018-10-10 18:26:16 -07:00
2018-10-12 15:25:17 +01:00
2018-08-26 17:45:25 -07:00
2018-09-03 16:10:40 +01:00
2018-08-22 12:34:08 -07:00
2018-08-23 13:44:43 -07:00
2018-09-28 18:04:06 -07:00
2018-08-23 16:03:58 -07:00
2018-08-18 10:21:49 -07:00
2018-08-22 08:08:27 -07:00
2018-08-30 14:18:03 +01:00
2018-08-22 10:52:46 -07:00
2018-08-22 10:52:46 -07:00
2018-08-17 16:20:27 -07:00
2018-08-22 10:52:48 -07:00
2018-08-31 14:48:56 -06:00
2018-09-11 10:59:53 -06:00
2018-10-04 13:28:08 -07:00
2018-08-17 16:20:32 -07:00
2018-09-20 15:23:58 +02:00
2018-08-22 17:31:34 -07:00
2018-09-20 15:23:58 +02:00
2018-08-22 17:31:34 -07:00
2018-08-22 10:52:47 -07:00
2018-08-23 13:44:43 -07:00
2018-08-22 10:52:46 -07:00
2018-08-22 10:52:48 -07:00
2018-08-21 18:19:09 -07:00
2018-08-18 11:44:53 -07:00
2018-08-17 16:20:32 -07:00
2018-08-25 13:40:38 -07:00
2019-05-08 21:35:15 -07:00
2018-08-17 15:56:23 -07:00
2019-04-04 09:52:02 -07:00
2019-07-11 18:47:35 -07:00
2018-08-17 16:49:31 -07:00
2018-09-21 20:26:59 -06:00
2018-08-23 18:48:43 -07:00
2018-09-04 21:31:43 +02:00
2018-10-18 11:30:52 +02:00
2018-10-05 16:32:04 -07:00
2018-08-30 23:13:15 +02:00
2018-08-26 11:48:42 -07:00
2018-08-22 10:52:47 -07:00
2018-08-22 10:52:52 -07:00
2018-08-16 19:36:55 +02:00
2018-08-17 16:20:30 -07:00
2018-08-26 11:25:21 -07:00
2018-08-22 10:52:46 -07:00
2018-08-18 11:44:53 -07:00
2018-09-20 00:51:43 +02:00
2018-08-24 13:20:33 -07:00
2018-08-17 16:20:32 -07:00
2018-08-22 10:52:45 -07:00
2018-08-22 10:52:45 -07:00
2018-09-13 15:18:04 -10:00
2018-09-13 15:18:04 -10:00
2018-10-05 16:32:04 -07:00
2018-08-22 10:52:44 -07:00
2018-10-09 08:30:51 +02:00
2018-09-05 14:36:53 +02:00
2018-10-17 15:35:29 -04:00
2018-08-22 10:52:48 -07:00
2018-10-10 22:44:46 -07:00
2018-09-28 14:47:40 +02:00
2018-09-23 21:55:24 -07:00
2018-08-23 16:03:58 -07:00
2018-08-17 16:20:29 -07:00
2018-08-22 10:52:45 -07:00
2018-08-31 08:30:42 -04:00
2018-08-23 18:48:44 -07:00
2018-08-17 16:20:28 -07:00
2018-08-23 18:48:43 -07:00
2018-09-03 19:05:13 -07:00
2018-09-11 21:44:52 -05:00
2018-08-22 10:52:45 -07:00
2018-08-22 10:52:46 -07:00
2018-08-22 18:17:29 +02:00
2018-08-22 12:34:08 -07:00
2018-10-02 14:38:02 -07:00
2018-08-20 09:22:45 -07:00
2018-08-22 10:52:43 -07:00
2018-08-22 12:34:08 -07:00
2018-08-17 16:20:30 -07:00
2018-08-16 12:14:42 -07:00
2018-09-18 19:48:08 -07:00
2018-10-12 12:35:02 +02:00
2018-08-22 10:52:44 -07:00
2018-08-23 18:48:44 -07:00
2018-08-18 11:44:53 -07:00
2018-08-22 15:11:35 +02:00
2018-09-03 13:26:44 +02:00
2018-10-17 15:35:29 -04:00
2018-10-17 15:35:29 -04:00
2018-09-12 14:58:47 -07:00
2018-08-23 18:48:44 -07:00
2018-08-16 09:57:20 -07:00
2018-09-13 17:58:30 +02:00
2018-10-04 22:23:15 -07:00
2018-09-13 15:18:04 -10:00
2018-09-13 15:18:04 -10:00