From c0dbfed5ff9fce7a701a33587ea5fea6a84f4dc3 Mon Sep 17 00:00:00 2001 From: Daniel Rosenberg Date: Tue, 30 Jan 2018 14:24:02 -0800 Subject: [PATCH] ANDROID: sdcardfs: Enable modular sdcardfs Export the following symbols: - copy_fs_struct - free_fs_struct - security_path_chown - set_fs_pwd - vfs_read - vfs_write These are needed to build sdcardfs as a module. Test: HiKey/X15 + Pie + android-mainline, and HiKey + AOSP Maser + android-mainline, directories under /sdcard created, output of mount is right, CTS test collecting device infor works Bug: 35142419 Change-Id: If6e14f0b3bdc858a9f684e6c209927a9232091f0 Signed-off-by: Daniel Rosenberg Signed-off-by: Guenter Roeck [astrachan: Folded the following changes into this patch: e19f69662df5 ("ANDROID: Revert "fs: unexport vfs_read and vfs_write"") 17071a8e1e7d ("ANDROID: fs: Export free_fs_struct and set_fs_pwd") 2e9a639597cd ("ANDROID: export security_path_chown")] Signed-off-by: Alistair Strachan Signed-off-by: Yongqin Liu --- fs/fs_struct.c | 3 +++ fs/read_write.c | 3 +++ security/security.c | 1 + 3 files changed, 7 insertions(+) diff --git a/fs/fs_struct.c b/fs/fs_struct.c index ca639ed967b7a..57f9817a98081 100644 --- a/fs/fs_struct.c +++ b/fs/fs_struct.c @@ -46,6 +46,7 @@ void set_fs_pwd(struct fs_struct *fs, const struct path *path) if (old_pwd.dentry) path_put(&old_pwd); } +EXPORT_SYMBOL(set_fs_pwd); static inline int replace_path(struct path *p, const struct path *old, const struct path *new) { @@ -91,6 +92,7 @@ void free_fs_struct(struct fs_struct *fs) path_put(&fs->pwd); kmem_cache_free(fs_cachep, fs); } +EXPORT_SYMBOL(free_fs_struct); void exit_fs(struct task_struct *tsk) { @@ -129,6 +131,7 @@ struct fs_struct *copy_fs_struct(struct fs_struct *old) } return fs; } +EXPORT_SYMBOL_GPL(copy_fs_struct); int unshare_fs_struct(void) { diff --git a/fs/read_write.c b/fs/read_write.c index c543d965e2880..439439d82a3e2 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -469,6 +469,8 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) return ret; } +EXPORT_SYMBOL(vfs_read); + static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) { struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len }; @@ -566,6 +568,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_ return ret; } +EXPORT_SYMBOL(vfs_write); /* file_ppos returns &file->f_pos or NULL if file is stream */ static inline loff_t *file_ppos(struct file *file) diff --git a/security/security.c b/security/security.c index f493db0bf62a9..af1f2f4c237dc 100644 --- a/security/security.c +++ b/security/security.c @@ -1058,6 +1058,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) return 0; return call_int_hook(path_chown, 0, path, uid, gid); } +EXPORT_SYMBOL(security_path_chown); int security_path_chroot(const struct path *path) {