| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| From: Daniel Rosenberg <drosen@google.com> |
| Date: Tue, 30 Jan 2018 14:24:02 -0800 |
| Subject: 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 <drosen@google.com> |
| Signed-off-by: Guenter Roeck <groeck@chromium.org> |
| [adelva: 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 Delva <adelva@google.com> |
| Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org> |
| --- |
| 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 ca639ed967b7..57f9817a9808 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 5bbf587f5bc1..45929fe56cfa 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 1bc000f834e2..ab1a1a10c671 100644 |
| --- a/security/security.c |
| +++ b/security/security.c |
| @@ -1101,6 +1101,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) |
| { |