Skip to content

Commit 8c61745

Browse files
jmberg-intelrichardweinberger
authored andcommitted
um: hostfs: define our own API boundary
Instead of exporting the set of functions provided by glibc that are needed for hostfs_user.c, just build that into the kernel image whenever hostfs is built, and then export _those_ functions cleanly, to be independent of the libc implementation. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Richard Weinberger <richard@nod.at>
1 parent ce1831f commit 8c61745

4 files changed

Lines changed: 33 additions & 73 deletions

File tree

arch/um/os-Linux/user_syms.c

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -34,81 +34,11 @@ EXPORT_SYMBOL(memset);
3434

3535
EXPORT_SYMBOL(printf);
3636

37-
/* Here, instead, I can provide a fake prototype. Yes, someone cares: genksyms.
38-
* However, the modules will use the CRC defined *here*, no matter if it is
39-
* good; so the versions of these symbols will always match
40-
*/
41-
#define EXPORT_SYMBOL_PROTO(sym) \
42-
int sym(void) __weak; \
43-
EXPORT_SYMBOL(sym);
44-
45-
extern void readdir64(void) __attribute__((weak));
46-
EXPORT_SYMBOL(readdir64);
47-
extern void truncate64(void) __attribute__((weak));
48-
EXPORT_SYMBOL(truncate64);
49-
5037
#ifdef CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA
5138
EXPORT_SYMBOL(vsyscall_ehdr);
5239
EXPORT_SYMBOL(vsyscall_end);
5340
#endif
5441

55-
EXPORT_SYMBOL_PROTO(__errno_location);
56-
57-
EXPORT_SYMBOL_PROTO(access);
58-
EXPORT_SYMBOL_PROTO(open);
59-
EXPORT_SYMBOL_PROTO(open64);
60-
EXPORT_SYMBOL_PROTO(close);
61-
EXPORT_SYMBOL_PROTO(read);
62-
EXPORT_SYMBOL_PROTO(write);
63-
EXPORT_SYMBOL_PROTO(dup2);
64-
EXPORT_SYMBOL_PROTO(__xstat);
65-
EXPORT_SYMBOL_PROTO(__lxstat);
66-
EXPORT_SYMBOL_PROTO(__lxstat64);
67-
EXPORT_SYMBOL_PROTO(__fxstat64);
68-
EXPORT_SYMBOL_PROTO(lseek);
69-
EXPORT_SYMBOL_PROTO(lseek64);
70-
EXPORT_SYMBOL_PROTO(chown);
71-
EXPORT_SYMBOL_PROTO(fchown);
72-
EXPORT_SYMBOL_PROTO(truncate);
73-
EXPORT_SYMBOL_PROTO(ftruncate64);
74-
EXPORT_SYMBOL_PROTO(utime);
75-
EXPORT_SYMBOL_PROTO(utimes);
76-
EXPORT_SYMBOL_PROTO(futimes);
77-
EXPORT_SYMBOL_PROTO(chmod);
78-
EXPORT_SYMBOL_PROTO(fchmod);
79-
EXPORT_SYMBOL_PROTO(rename);
80-
EXPORT_SYMBOL_PROTO(__xmknod);
81-
82-
EXPORT_SYMBOL_PROTO(symlink);
83-
EXPORT_SYMBOL_PROTO(link);
84-
EXPORT_SYMBOL_PROTO(unlink);
85-
EXPORT_SYMBOL_PROTO(readlink);
86-
87-
EXPORT_SYMBOL_PROTO(mkdir);
88-
EXPORT_SYMBOL_PROTO(rmdir);
89-
EXPORT_SYMBOL_PROTO(opendir);
90-
EXPORT_SYMBOL_PROTO(readdir);
91-
EXPORT_SYMBOL_PROTO(closedir);
92-
EXPORT_SYMBOL_PROTO(seekdir);
93-
EXPORT_SYMBOL_PROTO(telldir);
94-
95-
EXPORT_SYMBOL_PROTO(ioctl);
96-
97-
EXPORT_SYMBOL_PROTO(pread64);
98-
EXPORT_SYMBOL_PROTO(pwrite64);
99-
100-
EXPORT_SYMBOL_PROTO(statfs);
101-
EXPORT_SYMBOL_PROTO(statfs64);
102-
103-
EXPORT_SYMBOL_PROTO(getuid);
104-
105-
EXPORT_SYMBOL_PROTO(fsync);
106-
EXPORT_SYMBOL_PROTO(fdatasync);
107-
108-
EXPORT_SYMBOL_PROTO(lstat64);
109-
EXPORT_SYMBOL_PROTO(fstat64);
110-
EXPORT_SYMBOL_PROTO(mknod);
111-
11242
/* Export symbols used by GCC for the stack protector. */
11343
extern void __stack_smash_handler(void *) __attribute__((weak));
11444
EXPORT_SYMBOL(__stack_smash_handler);

fs/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ obj-$(CONFIG_9P_FS) += 9p/
124124
obj-$(CONFIG_AFS_FS) += afs/
125125
obj-$(CONFIG_NILFS2_FS) += nilfs2/
126126
obj-$(CONFIG_BEFS_FS) += befs/
127-
obj-$(CONFIG_HOSTFS) += hostfs/
127+
obj-y += hostfs/
128128
obj-$(CONFIG_CACHEFILES) += cachefiles/
129129
obj-$(CONFIG_DEBUG_FS) += debugfs/
130130
obj-$(CONFIG_TRACING) += tracefs/

fs/hostfs/Makefile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
# Licensed under the GPL
44
#
55

6-
hostfs-objs := hostfs_kern.o hostfs_user.o
6+
hostfs-objs := hostfs_kern.o
77

8-
obj-y :=
8+
hostfs-builtin-$(CONFIG_HOSTFS) += hostfs_user.o hostfs_user_exp.o
9+
10+
obj-y := $(hostfs-builtin-y) $(hostfs-builtin-m)
911
obj-$(CONFIG_HOSTFS) += hostfs.o
1012

1113
include $(srctree)/arch/um/scripts/Makefile.rules

fs/hostfs/hostfs_user_exp.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <linux/module.h>
2+
#include "hostfs.h"
3+
4+
EXPORT_SYMBOL_GPL(stat_file);
5+
EXPORT_SYMBOL_GPL(access_file);
6+
EXPORT_SYMBOL_GPL(open_file);
7+
EXPORT_SYMBOL_GPL(open_dir);
8+
EXPORT_SYMBOL_GPL(seek_dir);
9+
EXPORT_SYMBOL_GPL(read_dir);
10+
EXPORT_SYMBOL_GPL(read_file);
11+
EXPORT_SYMBOL_GPL(write_file);
12+
EXPORT_SYMBOL_GPL(lseek_file);
13+
EXPORT_SYMBOL_GPL(fsync_file);
14+
EXPORT_SYMBOL_GPL(replace_file);
15+
EXPORT_SYMBOL_GPL(close_file);
16+
EXPORT_SYMBOL_GPL(close_dir);
17+
EXPORT_SYMBOL_GPL(file_create);
18+
EXPORT_SYMBOL_GPL(set_attr);
19+
EXPORT_SYMBOL_GPL(make_symlink);
20+
EXPORT_SYMBOL_GPL(unlink_file);
21+
EXPORT_SYMBOL_GPL(do_mkdir);
22+
EXPORT_SYMBOL_GPL(hostfs_do_rmdir);
23+
EXPORT_SYMBOL_GPL(do_mknod);
24+
EXPORT_SYMBOL_GPL(link_file);
25+
EXPORT_SYMBOL_GPL(hostfs_do_readlink);
26+
EXPORT_SYMBOL_GPL(rename_file);
27+
EXPORT_SYMBOL_GPL(rename2_file);
28+
EXPORT_SYMBOL_GPL(do_statfs);

0 commit comments

Comments
 (0)