summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmit Pundir <amit.pundir@linaro.org>2019-04-10 19:23:10 +0530
committerAmit Pundir <amit.pundir@linaro.org>2019-06-17 15:04:03 +0530
commit8be123c10ba317c7ccd767fa426eefe860d6b80d (patch)
treedc6f3fdfced6f17b85acba0be7d964a950d5c2c2
parent700ad0087bbfdcd4cb72876a76c70cb6f4170ab4 (diff)
hwsdcardfs: Misc build fixes for v5.1hwsdcardfs-mainline-tracking
TODO: Detailed commit message to follow soon. Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
-rw-r--r--fs/hwsdcardfs/Makefile2
-rw-r--r--fs/hwsdcardfs/inode.c27
-rw-r--r--fs/hwsdcardfs/macros.h12
-rw-r--r--fs/hwsdcardfs/main.c2
-rw-r--r--fs/hwsdcardfs/mmap.c13
-rw-r--r--fs/hwsdcardfs/namei.c2
-rw-r--r--fs/hwsdcardfs/sdcardfs.h6
-rw-r--r--fs/hwsdcardfs/super.c1
-rw-r--r--fs/hwsdcardfs/xattr.c55
9 files changed, 28 insertions, 92 deletions
diff --git a/fs/hwsdcardfs/Makefile b/fs/hwsdcardfs/Makefile
index 3bdf7f24d30c..2da28aee6847 100644
--- a/fs/hwsdcardfs/Makefile
+++ b/fs/hwsdcardfs/Makefile
@@ -1,7 +1,7 @@
SDCARDFS_VERSION="1.0"
ccflags-y += -DSDCARDFS_VERSION=\"$(SDCARDFS_VERSION)\" -DSDCARDFS_CASE_INSENSITIVE -DSDCARDFS_SUPPORT_RESERVED_SPACE \
- -DSDCARDFS_UNDERLAY_MULTI_ALIASES -DSDCARDFS_SYSFS_FEATURE -DSDCARDFS_PLUGIN_PRIVACY_SPACE -g -Wall
+ -DSDCARDFS_UNDERLAY_MULTI_ALIASES -DSDCARDFS_SYSFS_FEATURE -DSDCARDFS_PLUGIN_PRIVACY_SPACE -g -Wall -I$(src)
obj-$(CONFIG_SDCARD_FS) += sdcardfs.o
sdcardfs-objs := dentry.o file.o inode.o configfs.o lookup_ci.o main.o super.o namei.o \
diff --git a/fs/hwsdcardfs/inode.c b/fs/hwsdcardfs/inode.c
index de48c0a3a96b..fdc4c9238590 100644
--- a/fs/hwsdcardfs/inode.c
+++ b/fs/hwsdcardfs/inode.c
@@ -223,7 +223,7 @@ struct dentry *__lookup_rename_ci(
static int sdcardfs_rename(
struct inode *old_dir,
struct dentry *old_dentry,
- struct inode *new_dir, struct dentry *new_dentry
+ struct inode *new_dir, struct dentry *new_dentry, unsigned int flags
) {
int err;
struct dentry *trap, *dentry;
@@ -232,6 +232,9 @@ static int sdcardfs_rename(
const struct cred *saved_cred;
bool overlapped = true;
+ if (flags)
+ return -EINVAL;
+
trace_sdcardfs_rename_enter(old_dir, old_dentry, new_dir, new_dentry);
/* since old_dir, new_old both have inode_locked, so
@@ -339,6 +342,7 @@ static int sdcardfs_setattr(struct dentry *dentry, struct iattr *ia)
{
int err;
struct iattr copied_ia;
+ struct dentry tmp;
struct inode *inode = d_inode(dentry);
/* since sdcardfs uses its own uid/gid derived policy,
@@ -363,7 +367,8 @@ static int sdcardfs_setattr(struct dentry *dentry, struct iattr *ia)
if (ia->ia_valid & ATTR_MODE)
ia->ia_valid &= ~ATTR_MODE;
- err = inode_change_ok(inode, ia);
+ tmp.d_inode = inode;
+ err = setattr_prepare(&tmp, ia);
if (!err) {
struct dentry *lower_dentry;
@@ -406,12 +411,14 @@ out:
return err;
}
-static int sdcardfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
- struct kstat *stat)
+static int sdcardfs_getattr(const struct path *path, struct kstat *stat,
+ u32 request_mask, unsigned int query_flags)
{
int err;
struct path lower_path;
const struct cred *saved_cred;
+ struct vfsmount *mnt = path->mnt;
+ struct dentry *dentry = path->dentry;
debugln("%s, dentry=%p, name=%s", __FUNCTION__,
dentry, dentry->d_name.name);
@@ -429,7 +436,7 @@ static int sdcardfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
goto out_pathput;
}
- err = vfs_getattr(&lower_path, stat);
+ err = vfs_getattr(&lower_path, stat, request_mask, query_flags);
REVERT_CRED(saved_cred);
if (!err) {
@@ -439,7 +446,7 @@ static int sdcardfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
/* note that generic_fillattr dont take any lock */
stat->nlink = S_ISDIR(inode->i_mode) ? 1 : inode->i_nlink;
- if (te->revision > inode->i_version) {
+ if (te->revision > atomic64_read(&inode->i_version)) {
inode_lock(inode);
__fix_derived_permission(te, inode);
inode_unlock(inode);
@@ -464,7 +471,7 @@ static int sdcardfs_permission(struct inode *inode, int mask)
#endif
struct sdcardfs_tree_entry *te = inode->i_private;
- need_reval = te->revision > inode->i_version;
+ need_reval = te->revision > atomic64_read(&inode->i_version);
if (need_reval) {
if (mask & MAY_NOT_BLOCK)
@@ -501,10 +508,7 @@ const struct inode_operations sdcardfs_dir_iops = {
.setattr = sdcardfs_setattr,
.getattr = sdcardfs_getattr,
- .setxattr = sdcardfs_setxattr,
- .getxattr = sdcardfs_getxattr,
.listxattr = sdcardfs_listxattr,
- .removexattr = sdcardfs_removexattr,
};
const struct inode_operations sdcardfs_main_iops = {
@@ -512,8 +516,5 @@ const struct inode_operations sdcardfs_main_iops = {
.setattr = sdcardfs_setattr,
.getattr = sdcardfs_getattr,
- .setxattr = sdcardfs_setxattr,
- .getxattr = sdcardfs_getxattr,
.listxattr = sdcardfs_listxattr,
- .removexattr = sdcardfs_removexattr,
};
diff --git a/fs/hwsdcardfs/macros.h b/fs/hwsdcardfs/macros.h
index e6604c596c68..ac0a397301bc 100644
--- a/fs/hwsdcardfs/macros.h
+++ b/fs/hwsdcardfs/macros.h
@@ -5,18 +5,6 @@
#define d_inode(x) ((x)->d_inode)
#endif
-#ifndef inode_lock_nested
-#define inode_lock_nested(x, y) mutex_lock_nested(&(x)->i_mutex, (y))
-#endif
-
-#ifndef inode_lock
-#define inode_lock(x) mutex_lock(&(x)->i_mutex)
-#endif
-
-#ifndef inode_unlock
-#define inode_unlock(x) mutex_unlock(&(x)->i_mutex)
-#endif
-
#ifndef lockless_dereference
/**
* lockless_dereference() - safely load a pointer for later dereference
diff --git a/fs/hwsdcardfs/main.c b/fs/hwsdcardfs/main.c
index 8a0f8c153eeb..8f9a5dd2a639 100644
--- a/fs/hwsdcardfs/main.c
+++ b/fs/hwsdcardfs/main.c
@@ -174,7 +174,7 @@ static int __sdcardfs_setup_root(
/* if inode->i_version < te->revision,
uid/gid/mode will be updated at the right time */
- inode->i_version = te->revision;
+ inode_set_iversion(inode, te->revision);
/* used for revalidate in inode_permission */
inode->i_private = te;
diff --git a/fs/hwsdcardfs/mmap.c b/fs/hwsdcardfs/mmap.c
index 2af5538850db..b9118acd8b6c 100644
--- a/fs/hwsdcardfs/mmap.c
+++ b/fs/hwsdcardfs/mmap.c
@@ -21,17 +21,17 @@
#include "sdcardfs.h"
#include <linux/version.h>
-static int sdcardfs_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+vm_fault_t sdcardfs_fault(struct vm_fault *vmf)
{
int err;
struct file *file;
const struct vm_operations_struct *lower_vm_ops;
- file = (struct file *)vma->vm_private_data;
+ file = (struct file *)vmf->vma->vm_private_data;
lower_vm_ops = SDCARDFS_F(file)->lower_vm_ops;
BUG_ON(!lower_vm_ops);
- err = lower_vm_ops->fault(vma, vmf);
+ err = lower_vm_ops->fault(vmf);
return err;
}
@@ -49,20 +49,19 @@ static void sdcardfs_vm_close(struct vm_area_struct *vma)
fput(file);
}
-static int sdcardfs_page_mkwrite(struct vm_area_struct *vma,
- struct vm_fault *vmf)
+vm_fault_t sdcardfs_page_mkwrite(struct vm_fault *vmf)
{
int err = 0;
struct file *file;
const struct vm_operations_struct *lower_vm_ops;
- file = (struct file *)vma->vm_private_data;
+ file = (struct file *)vmf->vma->vm_private_data;
lower_vm_ops = SDCARDFS_F(file)->lower_vm_ops;
BUG_ON(!lower_vm_ops);
if (!lower_vm_ops->page_mkwrite)
goto out;
- err = lower_vm_ops->page_mkwrite(vma, vmf);
+ err = lower_vm_ops->page_mkwrite(vmf);
out:
return err;
}
diff --git a/fs/hwsdcardfs/namei.c b/fs/hwsdcardfs/namei.c
index cb3a4af3218a..5731ab6ddc8e 100644
--- a/fs/hwsdcardfs/namei.c
+++ b/fs/hwsdcardfs/namei.c
@@ -30,7 +30,7 @@ struct inode *sdcardfs_ialloc(
return ERR_PTR(-ENOMEM);
inode->i_ino = get_next_ino();
- inode->i_version = 1;
+ inode_set_iversion(inode, 1);
inode->i_generation = get_seconds();
BUG_ON(__is_weird_inode(mode));
diff --git a/fs/hwsdcardfs/sdcardfs.h b/fs/hwsdcardfs/sdcardfs.h
index b2f3f1c9ba8f..4f29812280dd 100644
--- a/fs/hwsdcardfs/sdcardfs.h
+++ b/fs/hwsdcardfs/sdcardfs.h
@@ -32,6 +32,8 @@
#include <linux/list.h>
#include <linux/fs_struct.h>
#include <linux/ratelimit.h>
+#include <linux/sched/task.h>
+#include <linux/iversion.h>
#ifdef SDCARDFS_SYSFS_FEATURE
#include <linux/kobject.h>
#endif
@@ -422,7 +424,7 @@ static inline int need_fixup_permission(
struct inode *dir,
struct sdcardfs_tree_entry *te
) {
- return te->revision < dir->i_version;
+ return te->revision < atomic64_read(&dir->i_version);
}
static inline void __fix_derived_permission(
@@ -471,7 +473,7 @@ static inline void __fix_derived_permission(
filtered_mode = visible_mode & (owner_mode | (owner_mode >> 3) | (owner_mode >> 6));
inode->i_mode = (inode->i_mode & S_IFMT) | filtered_mode;
- inode->i_version = te->revision;
+ inode_set_iversion(inode, te->revision);
#endif
}
diff --git a/fs/hwsdcardfs/super.c b/fs/hwsdcardfs/super.c
index ed6896184a48..ebce8f1d611e 100644
--- a/fs/hwsdcardfs/super.c
+++ b/fs/hwsdcardfs/super.c
@@ -9,6 +9,7 @@
* License. See the file COPYING in the main directory of the Linux
* distribution for more details.
*/
+#include <uapi/linux/mount.h>
#include "sdcardfs.h"
/* could be triggered after deactivate_locked_super()
diff --git a/fs/hwsdcardfs/xattr.c b/fs/hwsdcardfs/xattr.c
index 38a72df7da8d..b722028fcd4f 100644
--- a/fs/hwsdcardfs/xattr.c
+++ b/fs/hwsdcardfs/xattr.c
@@ -13,42 +13,6 @@
#include <linux/xattr.h>
#include "sdcardfs.h"
-int sdcardfs_setxattr(struct dentry *dentry, const char *name,
- const void *value, size_t size, int flags)
-{
- int rc;
- struct dentry *lower_dentry = sdcardfs_get_lower_dentry(dentry);
- struct inode *lower_inode = d_inode(lower_dentry);
-
- if (unlikely(lower_inode->i_op->setxattr == NULL)) {
- rc = -EOPNOTSUPP;
- goto out;
- }
-
- rc = vfs_setxattr(lower_dentry, name, value, size, flags);
-out:
- dput(lower_dentry);
- return rc;
-}
-
-ssize_t sdcardfs_getxattr(struct dentry *dentry,
- const char *name, void *value, size_t size)
-{
- ssize_t rc;
- struct dentry *lower_dentry = sdcardfs_get_lower_dentry(dentry);
- struct inode *lower_inode = d_inode(lower_dentry);
-
- if (unlikely(lower_inode->i_op->getxattr == NULL)) {
- rc = -EOPNOTSUPP;
- goto out;
- }
-
- rc = lower_inode->i_op->getxattr(lower_dentry, name, value, size);
-out:
- dput(lower_dentry);
- return rc;
-}
-
ssize_t sdcardfs_listxattr(struct dentry *dentry, char *list, size_t size)
{
ssize_t rc;
@@ -65,22 +29,3 @@ out:
dput(lower_dentry);
return rc;
}
-
-int sdcardfs_removexattr(struct dentry *dentry, const char *name)
-{
- ssize_t rc;
- struct dentry *lower_dentry = sdcardfs_get_lower_dentry(dentry);
- struct inode *lower_inode = d_inode(lower_dentry);
-
- if (unlikely(lower_inode->i_op->removexattr == NULL)) {
- rc = -EOPNOTSUPP;
- goto out;
- }
-
- inode_lock(lower_inode);
- rc = lower_inode->i_op->removexattr(lower_dentry, name);
- inode_unlock(lower_inode);
-out:
- dput(lower_dentry);
- return rc;
-}