From: Eric Biggers <ebigg...@google.com>

Convert ubifs to use the new functions fscrypt_prepare_new_inode() and
fscrypt_set_context().

Unlike ext4 and f2fs, this doesn't appear to fix any deadlock bug.  But
it does shorten the code slightly and get all filesystems using the same
helper functions, so that fscrypt_inherit_context() can be removed.

Signed-off-by: Eric Biggers <ebigg...@google.com>
---
 fs/ubifs/dir.c | 26 ++++++++++----------------
 1 file changed, 10 insertions(+), 16 deletions(-)

diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
index 9d042942d8b29..26739ae3ffee7 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -81,19 +81,6 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, struct 
inode *dir,
        struct ubifs_inode *ui;
        bool encrypted = false;
 
-       if (IS_ENCRYPTED(dir)) {
-               err = fscrypt_get_encryption_info(dir);
-               if (err) {
-                       ubifs_err(c, "fscrypt_get_encryption_info failed: %i", 
err);
-                       return ERR_PTR(err);
-               }
-
-               if (!fscrypt_has_encryption_key(dir))
-                       return ERR_PTR(-EPERM);
-
-               encrypted = true;
-       }
-
        inode = new_inode(c->vfs_sb);
        ui = ubifs_inode(inode);
        if (!inode)
@@ -112,6 +99,14 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, struct 
inode *dir,
                         current_time(inode);
        inode->i_mapping->nrpages = 0;
 
+       err = fscrypt_prepare_new_inode(dir, inode, &encrypted);
+       if (err) {
+               ubifs_err(c, "fscrypt_prepare_new_inode failed: %i", err);
+               make_bad_inode(inode);
+               iput(inode);
+               return ERR_PTR(err);
+       }
+
        switch (mode & S_IFMT) {
        case S_IFREG:
                inode->i_mapping->a_ops = &ubifs_file_address_operations;
@@ -131,7 +126,6 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, struct 
inode *dir,
        case S_IFBLK:
        case S_IFCHR:
                inode->i_op  = &ubifs_file_inode_operations;
-               encrypted = false;
                break;
        default:
                BUG();
@@ -171,9 +165,9 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, struct 
inode *dir,
        spin_unlock(&c->cnt_lock);
 
        if (encrypted) {
-               err = fscrypt_inherit_context(dir, inode, &encrypted, true);
+               err = fscrypt_set_context(inode, NULL);
                if (err) {
-                       ubifs_err(c, "fscrypt_inherit_context failed: %i", err);
+                       ubifs_err(c, "fscrypt_set_context failed: %i", err);
                        make_bad_inode(inode);
                        iput(inode);
                        return ERR_PTR(err);
-- 
2.28.0



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to