static int ll_get_context(struct inode *inode, void *ctx, size_t len)
{
- struct dentry *dentry;
+ struct dentry *dentry = d_find_any_alias(inode);
int rc;
- if (hlist_empty(&inode->i_dentry))
- return -ENODATA;
-
- hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
- break;
- }
-
rc = ll_vfs_getxattr(dentry, inode, LL_XATTR_NAME_ENCRYPTION_CONTEXT,
ctx, len);
+ if (dentry)
+ dput(dentry);
/* used as encryption unit size */
if (S_ISREG(inode->i_mode))
return ll_set_encflags(inode, (void *)ctx, len, false);
}
-inline void llcrypt_free_ctx(void *encctx, __u32 size)
+void llcrypt_free_ctx(void *encctx, __u32 size)
{
if (encctx)
OBD_FREE(encctx, size);
}
-inline bool ll_sbi_has_test_dummy_encryption(struct ll_sb_info *sbi)
+bool ll_sbi_has_test_dummy_encryption(struct ll_sb_info *sbi)
{
return unlikely(sbi->ll_flags & LL_SBI_TEST_DUMMY_ENCRYPTION);
}
return sbi ? ll_sbi_has_test_dummy_encryption(sbi) : false;
}
-inline bool ll_sbi_has_encrypt(struct ll_sb_info *sbi)
+bool ll_sbi_has_encrypt(struct ll_sb_info *sbi)
{
return sbi->ll_flags & LL_SBI_ENCRYPT;
}
-inline void ll_sbi_set_encrypt(struct ll_sb_info *sbi, bool set)
+void ll_sbi_set_encrypt(struct ll_sb_info *sbi, bool set)
{
if (set)
sbi->ll_flags |= LL_SBI_ENCRYPT;
return 0;
}
-inline void llcrypt_free_ctx(void *encctx, __u32 size)
+void llcrypt_free_ctx(void *encctx, __u32 size)
{
}
-inline bool ll_sbi_has_test_dummy_encryption(struct ll_sb_info *sbi)
+bool ll_sbi_has_test_dummy_encryption(struct ll_sb_info *sbi)
{
return false;
}
-inline bool ll_sbi_has_encrypt(struct ll_sb_info *sbi)
+bool ll_sbi_has_encrypt(struct ll_sb_info *sbi)
{
return false;
}
-inline void ll_sbi_set_encrypt(struct ll_sb_info *sbi, bool set)
+void ll_sbi_set_encrypt(struct ll_sb_info *sbi, bool set)
{
}
#endif