mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
fscrypto: lock inode while setting encryption policy
i_rwsem needs to be acquired while setting an encryption policy so that concurrent calls to FS_IOC_SET_ENCRYPTION_POLICY are correctly serialized (especially the ->get_context() + ->set_context() pair), and so that new files cannot be created in the directory during or after the ->empty_dir() check. Signed-off-by: Eric Biggers <[email protected]> Signed-off-by: Theodore Ts'o <[email protected]> Reviewed-by: Richard Weinberger <[email protected]> Cc: [email protected]
This commit is contained in:
parent
199625098a
commit
8906a8223a
1 changed files with 4 additions and 0 deletions
|
|
@ -109,6 +109,8 @@ int fscrypt_process_policy(struct file *filp,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
inode_lock(inode);
|
||||
|
||||
if (!inode_has_encryption_context(inode)) {
|
||||
if (!S_ISDIR(inode->i_mode))
|
||||
ret = -EINVAL;
|
||||
|
|
@ -127,6 +129,8 @@ int fscrypt_process_policy(struct file *filp,
|
|||
ret = -EINVAL;
|
||||
}
|
||||
|
||||
inode_unlock(inode);
|
||||
|
||||
mnt_drop_write_file(filp);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue