uml modules broken in 2.6.8 (has something to do with memmove)
Hi all,
I am using user-mode-linux 2.6.6 and 2.6.7 for some time without any big problems. I now tried to build a 2.6.8 debian package for my (and some other) systems and I got problems with some modules now... I used the same script for packaging the uml kernel and changed only the new option in the ".config" file. So that should not be the problem, I guess.
First some version details:
host system: 2.6.8 (debian source) with skas3, sysemu and reiser4 patch uml guest system: 2.6.8 (debian source) with 2.6.8.1-1 patch, sysemu patch and reiser4 patch
The problems I see while booting my uml are:
...ip_tables: (C) 2000-2002 Netfilter core teamip_conntrack version 2.1 (464 buckets, 3712 max) - 296 bytes per conntrackiptable_nat: Unknown symbol memmove
...
If I then use: depmod -a to fix the problem it actually gets worse...
after a reboot I get this error for even more modules, because of the unknown symbol memmove:
...iptable_nat: Unknown symbol memmoveipt_MASQUERADE: Unknown symbol ip_nat_setup_infoiptable_nat: Unknown symbol memmove
slhc: Unknown symbol memmove
...
I also noticed that 2.6.6 (for example, I guess 2.6.7 is equal to 2.6.6) hasn't got the word "memmove" anywhere in the modules. But in the 2.6.8 modules the string "memmove" appears quite often:
#:/lib/modules# ls ; grep memmove * -R total 1 drwxr-xr-x 3 root root 496 Sep 5 14:20 2.6.6-1um drwxr-xr-x 3 root root 496 Sep 5 23:51 2.6.8-1um
Binary file 2.6.8-1um/kernel/fs/udf/udf.ko matches
Binary file 2.6.8-1um/kernel/fs/hpfs/hpfs.ko matches
Binary file 2.6.8-1um/kernel/fs/nfsd/nfsd.ko matches
Binary file 2.6.8-1um/kernel/fs/ncpfs/ncpfs.ko matches Binary file 2.6.8-1um/kernel/fs/hostfs/humfs.ko matches Binary file 2.6.8-1um/kernel/fs/hostfs/externfs.ko matches Binary file 2.6.8-1um/kernel/fs/hfsplus/hfsplus.ko matches Binary file 2.6.8-1um/kernel/net/ipv4/ipvs/ip_vs.ko matches Binary file 2.6.8-1um/kernel/net/ipv4/netfilter/ipfwadm.ko matches Binary file 2.6.8-1um/kernel/net/ipv4/netfilter/ipchains.ko matches Binary file 2.6.8-1um/kernel/net/ipv4/netfilter/ipt_TCPMSS.ko matches Binary file 2.6.8-1um/kernel/net/ipv4/netfilter/iptable_nat.ko matches Binary file 2.6.8-1um/kernel/net/ipv6/ah6.ko matches
Binary file 2.6.8-1um/kernel/net/8021q/8021q.ko matches Binary file 2.6.8-1um/kernel/drivers/net/slhc.ko matches Binary file 2.6.8-1um/kernel/drivers/net/bonding/bonding.ko matches Binary file 2.6.8-1um/kernel/drivers/scsi/st.ko matches
Is it possible that the i386 and the um code is out-of-sync?
I am not a kernel hacker, but I found with google that something changed with memmove in 2.6.8, but I don't know enough of the kernel stuff to know what it means:
http://kerneltrap.org/node/view/3443 -> search for memmove and you find:
"i386: uninline memmove"
Has nobody besides me this problem? I can't use my uml without nat, so I downgraded again to 2.6.6...
--Ralph
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
Quoted 8 lines · Ralph Paßgang
Hi all,
I am not a kernel hacker, but I found with google that something changed with memmove in 2.6.8, but I don't know enough of the kernel stuff to know what it means:
http://kerneltrap.org/node/view/3443 -> search for memmove and you find:
"i386: uninline memmove"
Well, smart catch. If you know C, I can explain this. Before memmove was an inline function defined in kernel headers, while in 2.6.8. I hope you are using 2.6.8.1, actually, because 2.6.8 is known-buggy for nfs. Well, no, you say 2.6.8. However, I guess that Debian-source includes the fix.
Quoted 2 lines
Has nobody besides me this problem? I can't use my uml without nat, so I downgraded again to 2.6.6...
Solutions in such cases are (waiting for the fix):
- compiling what you need in the kernel rather than as a module
- if you get complaints about a certain symbol, i.e. memmove, just add a EXPORT_SYMBOL(memmove) and the prototype (or the appropriate include) in arch/um/kernel/ksyms.c and recompile the kernel (you don't need to recompile the modules).
In this case, apply this patch with patch -p1 -l:
arch/um/os-Linux/user_syms.c 2004-08-29 14:40:56.000000000 +0200 renamed from arch/um/os-Linux/user_syms.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200 +2 -0
@@ -14,12 +14,14 @@ extern size_t strlen(const char *); extern void *memcpy(void *, const void *, size_t); +extern void *memmove(void *, const void *, size_t); extern void *memset(void *, int, size_t); extern int printf(const char *, ...); EXPORT_SYMBOL(strlen); EXPORT_SYMBOL(memcpy); EXPORT_SYMBOL(memset); +EXPORT_SYMBOL(memmove); EXPORT_SYMBOL(printf); EXPORT_SYMBOL(strstr);
If you experience other module-related problems, you may want to use the attached patch, however I'm not sure it will apply on your tree.
Signature · 2 lines
Paolo Giarrusso, aka Blaisorblade Linux registered user n. 292729
Adds a lot more EXPORT_SYMBOLS calls, and also replace some __initcall with some module_init().
---
uml-linux-2.6.8.1-paolo/arch/um/Kconfig | 3 +- uml-linux-2.6.8.1-paolo/arch/um/kernel/filehandle.c | 10 +++++++ uml-linux-2.6.8.1-paolo/arch/um/kernel/irq.c | 2 + uml-linux-2.6.8.1-paolo/arch/um/kernel/ksyms.c | 26 ++++++++++++++++++- uml-linux-2.6.8.1-paolo/arch/um/kernel/physmem.c | 5 +++ uml-linux-2.6.8.1-paolo/arch/um/os-Linux/user_syms.c | 2 + uml-linux-2.6.8.1-paolo/fs/hostfs/Makefile | 6 ++-- uml-linux-2.6.8.1-paolo/fs/hostfs/externfs.c | 7 +++++ uml-linux-2.6.8.1-paolo/fs/hostfs/host_file.c | 20 ++++++++++++++ uml-linux-2.6.8.1-paolo/fs/hostfs/host_fs.c | 7 +---- uml-linux-2.6.8.1-paolo/fs/hostfs/humfs.c | 21 +++++++++++---- uml-linux-2.6.8.1-paolo/fs/hostfs/meta_fs.c | 5 ++- 12 files changed, 98 insertions(+), 16 deletions(-)
arch/um/kernel/ksyms.c renamed from arch/um/kernel/ksyms.c~uml-export-Symbols +25 -1
@@ -21,6 +21,7 @@#include "user_util.h" #include "mem_user.h" #include "os.h" +#include "aio.h" #include "helper.h" EXPORT_SYMBOL (stop);
@@ -48,6 +49,7 @@ EXPORT_SYMBOL(to_virt);EXPORT_SYMBOL (mode_tt);EXPORT_SYMBOL (handle_page_fault);EXPORT_SYMBOL (find_iomem); +EXPORT_SYMBOL (uml_strdup);#ifdef CONFIG_MODE_TT EXPORT_SYMBOL (strncpy_from_user_tt);
@@ -81,16 +83,38 @@ EXPORT_SYMBOL(os_flush_stdout);EXPORT_SYMBOL (os_close_file);EXPORT_SYMBOL (os_set_fd_async);EXPORT_SYMBOL (os_set_fd_block); -EXPORT_SYMBOL (helper_wait); +EXPORT_SYMBOL (os_remove_dir); +EXPORT_SYMBOL (os_remove_file);EXPORT_SYMBOL (os_shutdown_socket);EXPORT_SYMBOL (os_create_unix_socket);EXPORT_SYMBOL (os_connect_socket);EXPORT_SYMBOL (os_accept_connection);EXPORT_SYMBOL (os_ioctl_generic);EXPORT_SYMBOL (os_rcv_fd); +EXPORT_SYMBOL (os_truncate_fd); +EXPORT_SYMBOL (os_fd_size); +EXPORT_SYMBOL (os_close_dir); +EXPORT_SYMBOL (os_make_dev); +EXPORT_SYMBOL (os_stat_filesystem); +EXPORT_SYMBOL (os_move_file); +EXPORT_SYMBOL (os_read_symlink); +EXPORT_SYMBOL (os_link_file); +EXPORT_SYMBOL (os_make_dir); +EXPORT_SYMBOL (os_make_symlink); +EXPORT_SYMBOL (os_set_file_time); +EXPORT_SYMBOL (os_truncate_file); +EXPORT_SYMBOL (os_set_file_owner); +EXPORT_SYMBOL (os_set_file_perms); +EXPORT_SYMBOL (os_lstat_file); +EXPORT_SYMBOL (os_tell_dir); +EXPORT_SYMBOL (os_read_dir); +EXPORT_SYMBOL (os_seek_dir); +EXPORT_SYMBOL (submit_aio); +EXPORT_SYMBOL (run_helper);EXPORT_SYMBOL (start_thread);EXPORT_SYMBOL (dump_thread); +EXPORT_SYMBOL (helper_wait);EXPORT_SYMBOL (do_gettimeofday);EXPORT_SYMBOL (do_settimeofday);
arch/um/os-Linux/user_syms.c renamed from arch/um/os-Linux/user_syms.c~uml-export-Symbols +2 -0
@@ -14,12 +14,14 @@extern size_t strlen (const char *);extern void *memcpy (void *,const void *,size_t ); +extern void *memmove (void *,const void *,size_t );extern void *memset (void *,int ,size_t );extern int printf (const char *, ...);EXPORT_SYMBOL (strlen);EXPORT_SYMBOL (memcpy);EXPORT_SYMBOL (memset); +EXPORT_SYMBOL (memmove);EXPORT_SYMBOL (printf);EXPORT_SYMBOL (strstr);
diff -puN arch/um/os-Linux/aio.c~uml-export-Symbols arch/um/os-Linux/aio.c
arch/um/kernel/irq.c renamed from arch/um/kernel/irq.c~uml-export-Symbols +2 -0
@@ -437,6 +437,8 @@ int um_request_irq(unsigned int irq, int err =activate_fd (irq, fd, type, dev_id);return (err); } +EXPORT_SYMBOL (um_request_irq); +EXPORT_SYMBOL (reactivate_fd);/* this was setup_x86_irq but it seems pretty generic */ int setup_irq (unsigned int irq,struct irqaction * new)
arch/um/kernel/physmem.c renamed from arch/um/kernel/physmem.c~uml-export-Symbols +5 -0
@@ -8,6 +8,7 @@#include "linux/slab.h" #include "linux/vmalloc.h" #include "linux/bootmem.h" +#include "linux/module.h" #include "asm/types.h" #include "asm/pgtable.h" #include "kern_util.h"
@@ -229,6 +230,10 @@ void physmem_forget_descriptor(int fd)kfree (desc); } +EXPORT_SYMBOL (physmem_forget_descriptor); +EXPORT_SYMBOL (physmem_remove_mapping); +EXPORT_SYMBOL (physmem_subst_mapping); +void arch_free_page (struct page *page,int order) {void *virt;
fs/hostfs/externfs.c renamed from fs/hostfs/externfs.c~uml-export-Symbols +7 -0
@@ -1190,6 +1190,7 @@ char *host_root_filename(char *mount_argreturn (uml_strdup (root)); } +EXPORT_SYMBOL (host_root_filename);static int externfs_fill_sb (struct super_block *sb,void *data,int silent) {
@@ -1286,6 +1287,7 @@ int register_externfs(char *name, struct out:return (err); } +EXPORT_SYMBOL (register_externfs);void unregister_externfs (char *name) {
@@ -1304,6 +1306,11 @@ void unregister_externfs(char *name)up (&externfs_sem);printk ("Unregister_externfs - filesystem '%s' not found\n" , name); } +EXPORT_SYMBOL (unregister_externfs); + +EXPORT_SYMBOL (init_externfs); +EXPORT_SYMBOL (inode_externfs_info); +EXPORT_SYMBOL (inode_name_prefix);/* * Overrides for Emacs so that we follow Linus's tabbing style.
fs/hostfs/humfs.c renamed from fs/hostfs/humfs.c~uml-export-Symbols +16 -5
@@ -12,9 +12,11 @@#include <linux/errno.h> #include <linux/string.h> #include <linux/kdev_t.h> +#include <linux/module.h> #include "linux/init.h" #include "linux/workqueue.h" #include <asm/irq.h> +#include <asm/div64.h> #include "hostfs.h" #include "mem.h" #include "os.h"
@@ -320,8 +322,6 @@ static int init_humfs_aio(void)return (0 ); } -__initcall (init_humfs_aio); -static int humfs_aio (enum aio_type type,int fd,unsigned long long offset,char *buf,int len,int real_len,void (*completion)(char *,int ,void *),void *arg)
@@ -669,6 +669,7 @@ struct humfs *inode_humfs_info(struct in { return(container_of(inode_externfs_info(inode), struct humfs, ext)); } +EXPORT_SYMBOL (inode_humfs_info);static int humfs_rename_file (char *from,char *to,struct externfs_data *ed) {
@@ -705,9 +706,16 @@ static int humfs_stat_fs(long *bsize_outif (err)return (err); +#if 0 *blocks_out = mount->total / *bsize_out; *bfree_out = (mount->total - mount->used) / *bsize_out; - *bavail_out = (mount->total - mount->used) / *bsize_out; +#endif + *blocks_out = mount->total; + *bfree_out = (mount->total - mount->used); +do_div (blocks_out, *bsize_out); +do_div (bfree_out, *bsize_out); + + *bavail_out = *bfree_out;return (0 ); }
@@ -766,6 +774,7 @@ void register_meta(struct humfs_meta_opslist_add (&ops->list, &metas);up (&meta_sem); } +EXPORT_SYMBOL (register_meta);void unregister_meta (struct humfs_meta_ops *ops) {
@@ -773,6 +782,7 @@ void unregister_meta(struct humfs_meta_olist_del (&ops->list);up (&meta_sem); } +EXPORT_SYMBOL (unregister_meta);static struct humfs *read_superblock (char *root) {
@@ -1003,6 +1013,7 @@ struct externfs_mount_ops humfs_mount_opstatic int __init init_humfs (void ) { +init_humfs_aio ();return (register_externfs ("humfs" , &humfs_mount_ops)); }
@@ -1011,8 +1022,8 @@ static void __exit exit_humfs(void)unregister_externfs ("humfs" ); } -__initcall (init_humfs); -__exitcall (exit_humfs); +module_init (init_humfs); +module_exit (exit_humfs);/* * Overrides for Emacs so that we follow Linus's tabbing style.
fs/hostfs/host_file.c renamed from fs/hostfs/host_file.c~uml-export-Symbols +20 -0
@@ -9,6 +9,7 @@#include "linux/types.h" #include "linux/slab.h" #include "linux/fs.h" +#include "linux/module.h" #include "asm/fcntl.h" #include "hostfs.h" #include "filehandle.h"
@@ -430,6 +431,25 @@ int generic_host_truncate_file(struct fireturn (truncate_file (fh, size)); } +EXPORT_SYMBOL (free_path); +EXPORT_SYMBOL (generic_host_read_dir); +EXPORT_SYMBOL (get_path); +EXPORT_SYMBOL (host_create_file); +EXPORT_SYMBOL (host_file_type); +EXPORT_SYMBOL (host_link_file); +EXPORT_SYMBOL (host_make_dir); +EXPORT_SYMBOL (host_make_symlink); +EXPORT_SYMBOL (host_open_dir); +EXPORT_SYMBOL (host_open_file); +EXPORT_SYMBOL (host_read_link); +EXPORT_SYMBOL (host_remove_dir); +EXPORT_SYMBOL (host_rename_file); +EXPORT_SYMBOL (host_root_filename); +EXPORT_SYMBOL (host_set_attr); +EXPORT_SYMBOL (host_stat_file); +EXPORT_SYMBOL (host_stat_fs); +EXPORT_SYMBOL (host_unlink_file); +/* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically
arch/um/kernel/filehandle.c renamed from arch/um/kernel/filehandle.c~uml-export-Symbols +10 -0
@@ -8,6 +8,7 @@#include "linux/spinlock.h" #include "linux/fs.h" #include "linux/errno.h" +#include "linux/module.h" #include "filehandle.h" #include "os.h" #include "kern_util.h"
@@ -65,6 +66,7 @@ void *open_dir(char *file)return (dir); } +EXPORT_SYMBOL (open_dir);void not_reclaimable (struct file_handle *fh) {
@@ -87,6 +89,7 @@ void not_reclaimable(struct file_handlespin_unlock (&open_files_lock); } } +EXPORT_SYMBOL (not_reclaimable);void is_reclaimable (struct file_handle *fh,char *(name_proc )(struct inode *),struct inode *inode)
@@ -98,6 +101,7 @@ void is_reclaimable(struct file_handle *list_add (&fh->list, &open_files);spin_unlock (&open_files_lock); } +EXPORT_SYMBOL (is_reclaimable);static int active_handle (struct file_handle *fh) {
@@ -138,6 +142,7 @@ int filehandle_fd(struct file_handle *fhreturn (fh->fd); } +EXPORT_SYMBOL (filehandle_fd);static void init_fh (struct file_handle *fh,int fd,struct openflags flags) {
@@ -161,6 +166,7 @@ int open_filehandle(char *name, struct oinit_fh (fh, fd, flags);return (0 ); } +EXPORT_SYMBOL (open_filehandle);int close_file (struct file_handle *fh) {
@@ -173,6 +179,7 @@ int close_file(struct file_handle *fh) fh->fd =-1 ;return (0 ); } +EXPORT_SYMBOL (close_file);int read_file (struct file_handle *fh,unsigned long long offset,char *buf,int len)
@@ -189,6 +196,7 @@ int read_file(struct file_handle *fh, unreturn (os_read_file (fh->fd, buf, len)); } +EXPORT_SYMBOL (read_file);int write_file (struct file_handle *fh,unsigned long long offset,const char *buf,int len)
@@ -206,6 +214,7 @@ int write_file(struct file_handle *fh, ureturn (os_write_file (fh->fd, buf, len)); } +EXPORT_SYMBOL (write_file);int truncate_file (struct file_handle *fh,unsigned long long size) {
@@ -217,6 +226,7 @@ int truncate_file(struct file_handle *fhreturn (os_truncate_fd (fh->fd, size)); } +EXPORT_SYMBOL (truncate_file);int make_pipe (struct file_handle *fhs) {
arch/um/Kconfig renamed from arch/um/Kconfig~uml-export-Symbols +2 -1
@@ -83,6 +83,7 @@ config EXTERNFS config HOSTFS tristate "Host filesystem" + depends on EXTERNFS help While the User-Mode Linux port uses its own root file system for booting and normal file access, this module lets the UML user
@@ -104,7 +105,7 @@ config HOSTFS config HUMFS tristate 'Usable host filesystem' - depends on EXTERNFS + depends on EXTERNFS && HOSTFS config HPPFS tristate "HoneyPot ProcFS"
fs/hostfs/host_fs.c renamed from fs/hostfs/host_fs.c~uml-export-Symbols +2 -5
@@ -11,6 +11,7 @@#include "linux/init.h" #include "linux/fs.h" #include "linux/stat.h" +#include "linux/module.h" #include "hostfs.h" #include "kern.h" #include "init.h"
@@ -21,6 +22,7 @@/* Changed in hostfs_args before the kernel starts running */ static char *jail_dir ="/" ;int append =0 ; +EXPORT_SYMBOL (append);static int __init hostfs_args (char *options,int *add) {
@@ -446,14 +448,9 @@ static void __exit exit_hostfs(void)unregister_externfs ("hostfs" ); } -__initcall (init_hostfs); -__exitcall (exit_hostfs); - -#if 0 module_init(init_hostfs) module_exit(exit_hostfs) MODULE_LICENSE("GPL"); -#endif /* * Overrides for Emacs so that we follow Linus's tabbing style.
fs/hostfs/meta_fs.c renamed from fs/hostfs/meta_fs.c~uml-export-Symbols +3 -2
@@ -5,6 +5,7 @@#include <linux/slab.h> #include <linux/init.h> +#include <linux/module.h> #include "hostfs.h" #include "metadata.h" #include "kern_util.h"
@@ -505,8 +506,8 @@ static void __exit exit_meta_fs(void)unregister_meta (&hum_fs_meta_fs_ops); } -__initcall (init_meta_fs); -__exitcall (exit_meta_fs); +module_init (init_meta_fs); +module_exit (exit_meta_fs);/* * Overrides for Emacs so that we follow Linus's tabbing style.
fs/hostfs/Makefile renamed from fs/hostfs/Makefile~uml-export-Symbols +4 -2
@@ -3,11 +3,13 @@ # Licensed under the GPL # -obj-y = +obj-y := obj-$(CONFIG_EXTERNFS) += externfs.o -obj-$(CONFIG_HOSTFS) += host_fs.o host_file.o +obj-$(CONFIG_HOSTFS) += hostfs.o obj-$(CONFIG_HUMFS) += humfs.o meta_fs.o +hostfs-objs := host_fs.o host_file.o + SINGLE_OBJS = $(foreach f,$(patsubst %.o,%,$(obj-y) $(obj-m)),$($(f)-objs)) USER_OBJS := $(filter %_user.o,$(obj-y) $(obj-m) $(SINGLE_OBJS))
_
Am Montag, 6. September 2004 20:05 schrieben Sie:
Quoted 11 lines · Ralph Paßgang
Quoted 8 lines
Hi all,
I am not a kernel hacker, but I found with google that something changed with memmove in 2.6.8, but I don't know enough of the kernel stuff to know what it means:
http://kerneltrap.org/node/view/3443 -> search for memmove and you find:
"i386: uninline memmove"Well, smart catch. If you know C, I can explain this.
I know C a bit, but I am not were good in it... But I always want to learn to get better :)
Quoted 4 lines
Before memmove was an
inline function defined in kernel headers, while in 2.6.8. I hope you are using 2.6.8.1, actually, because 2.6.8 is known-buggy for nfs. Well, no, you say 2.6.8. However, I guess that Debian-source includes the fix.
Yes, the debian package should include the fix. it is already the 5th version of the 2.6.8 kernel-source package in debian and the changelog says that a nfs-bugfix is included (with some more fixes).
I guess the debian package maintainer didn't used the 2.6.8.1 versionnumber, because it could produce a lot of problems in other packages/scripts that expect X.Y.Z format.
Quoted 4 lines
Quoted 2 lines
Has nobody besides me this problem? I can't use my uml without nat, so I downgraded again to 2.6.6...
Solutions in such cases are (waiting for the fix):
I waited for some days to see if somebody is saying something about memmove in the uml-mailinglists or if I find a 2.6.8.1-2 patch in the uml homepage. But because I didn't found anything I started asking myself, espacially because some other people seems to used the 2.6.8.1 without any problem...
Quoted 1 line
- compiling what you need in the kernel rather than as a module
I noticed that myself for another module (a bit ago)... But I don't want all iptables modules + ppp,pppoe + a lot other modules to be in the kernel rather than as module. If the problem just occours for one module, that is a fix indeed :)
Quoted 4 lines
- if you get complaints about a certain symbol, i.e. memmove, just add a
EXPORT_SYMBOL(memmove)and the prototype (or the appropriate include) inarch/um/kernel/ksyms.cand recompile the kernel (you don't need to recompile the modules).
I will try to fix the next problem (hopefully there will be no errors at all in upcoming versions *g*) on my own. Exporting kernelsymbols is not what I am used to do every day, but that seems not to be too difficult.
Quoted 23 lines
In this case, apply this patch with patch -p1 -l:
diff -puN
arch/um/os-Linux/user_syms.c~uml-export-Symbolsarch/um/os-Linux/user_syms.c--- uml-linux-2.6.8.1/arch/um/os-Linux/user_syms.c~uml-export-Symbols2004-08-29 14:40:56.000000000 +0200 +++
uml-linux-2.6.8.1-paolo/arch/um/os-Linux/user_syms.c2004-08-29
14:40:56.000000000 +0200 @@ -14,12 +14,14 @@extern
size_tstrlen(const char *);
extern void *memcpy(void *, const void *,size_t);arch/um/os-Linux/user_syms.c 2004-08-29 14:40:56.000000000 +0200 renamed from arch/um/os-Linux/user_syms.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200 +2
-0+extern void *memmove(void *, const void *, size_t); extern void *memset(void *, int, size_t); extern int printf(const char *, ...); EXPORT_SYMBOL(strlen); EXPORT_SYMBOL(memcpy); EXPORT_SYMBOL(memset); +EXPORT_SYMBOL(memmove); EXPORT_SYMBOL(printf); EXPORT_SYMBOL(strstr);
Quoted 2 lines
If you experience other module-related problems, you may want to use the attached patch, however I'm not sure it will apply on your tree.
It applied without a problem and I also have compiled it for debian sid and sarge. Now my 2.6.8 uml runs without any problems, even iptables_nat and pppoe works like charm :)
Thank you for the patch... Keep the good work up, I love UML :)...
--Ralph
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_idP47&alloc_id808&opÌk
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel