diff options
Diffstat (limited to 'fs/crypto')
-rw-r--r-- | fs/crypto/keyinfo.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/fs/crypto/keyinfo.c b/fs/crypto/keyinfo.c index c115eac4b4cf..05f5ee1f0705 100644 --- a/fs/crypto/keyinfo.c +++ b/fs/crypto/keyinfo.c | |||
@@ -355,19 +355,9 @@ out: | |||
355 | } | 355 | } |
356 | EXPORT_SYMBOL(fscrypt_get_encryption_info); | 356 | EXPORT_SYMBOL(fscrypt_get_encryption_info); |
357 | 357 | ||
358 | void fscrypt_put_encryption_info(struct inode *inode, struct fscrypt_info *ci) | 358 | void fscrypt_put_encryption_info(struct inode *inode) |
359 | { | 359 | { |
360 | struct fscrypt_info *prev; | 360 | put_crypt_info(inode->i_crypt_info); |
361 | 361 | inode->i_crypt_info = NULL; | |
362 | if (ci == NULL) | ||
363 | ci = READ_ONCE(inode->i_crypt_info); | ||
364 | if (ci == NULL) | ||
365 | return; | ||
366 | |||
367 | prev = cmpxchg(&inode->i_crypt_info, ci, NULL); | ||
368 | if (prev != ci) | ||
369 | return; | ||
370 | |||
371 | put_crypt_info(ci); | ||
372 | } | 362 | } |
373 | EXPORT_SYMBOL(fscrypt_put_encryption_info); | 363 | EXPORT_SYMBOL(fscrypt_put_encryption_info); |