* [uml-devel] uml modules broken in 2.6.8 (has something to do with memmove)
@ 2004-09-05 22:05 Ralph Paßgang
2004-09-06 18:05 ` BlaisorBlade
0 siblings, 1 reply; 3+ messages in thread
From: Ralph Paßgang @ 2004-09-05 22:05 UTC (permalink / raw)
To: user-mode-linux-devel
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 team
ip_conntrack version 2.1 (464 buckets, 3712 max) - 296 bytes per conntrack
iptable_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 memmove
ipt_MASQUERADE: Unknown symbol ip_nat_setup_info
iptable_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
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [uml-devel] uml modules broken in 2.6.8 (has something to do with memmove)
2004-09-05 22:05 [uml-devel] uml modules broken in 2.6.8 (has something to do with memmove) Ralph Paßgang
@ 2004-09-06 18:05 ` BlaisorBlade
2004-09-07 9:22 ` Ralph Passgang
0 siblings, 1 reply; 3+ messages in thread
From: BlaisorBlade @ 2004-09-06 18:05 UTC (permalink / raw)
To: user-mode-linux-devel; +Cc: Ralph Paßgang
[-- Attachment #1: Type: text/plain, Size: 2090 bytes --]
On Monday 06 September 2004 00:05, Ralph Paßgang wrote:
> 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.
> 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:
diff -puN arch/um/os-Linux/user_syms.c~uml-export-Symbols arch/um/os-Linux/user_syms.c
--- uml-linux-2.6.8.1/arch/um/os-Linux/user_syms.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/arch/um/os-Linux/user_syms.c 2004-08-29 14:40:56.000000000 +0200
@@ -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.
--
Paolo Giarrusso, aka Blaisorblade
Linux registered user n. 292729
[-- Attachment #2: uml-export-Symbols.patch --]
[-- Type: text/x-diff, Size: 14886 bytes --]
Adds a lot more EXPORT_SYMBOLS calls, and also replace some __initcall with
some module_init().
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade_spam@yahoo.it>
---
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(-)
diff -puN arch/um/kernel/ksyms.c~uml-export-Symbols arch/um/kernel/ksyms.c
--- uml-linux-2.6.8.1/arch/um/kernel/ksyms.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/arch/um/kernel/ksyms.c 2004-08-29 14:40:56.000000000 +0200
@@ -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);
diff -puN arch/um/os-Linux/user_syms.c~uml-export-Symbols arch/um/os-Linux/user_syms.c
--- uml-linux-2.6.8.1/arch/um/os-Linux/user_syms.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/arch/um/os-Linux/user_syms.c 2004-08-29 14:40:56.000000000 +0200
@@ -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
diff -puN arch/um/kernel/irq.c~uml-export-Symbols arch/um/kernel/irq.c
--- uml-linux-2.6.8.1/arch/um/kernel/irq.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/arch/um/kernel/irq.c 2004-08-29 14:40:56.000000000 +0200
@@ -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)
diff -puN arch/um/kernel/physmem.c~uml-export-Symbols arch/um/kernel/physmem.c
--- uml-linux-2.6.8.1/arch/um/kernel/physmem.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/arch/um/kernel/physmem.c 2004-08-30 16:36:26.469125200 +0200
@@ -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;
diff -puN fs/hostfs/externfs.c~uml-export-Symbols fs/hostfs/externfs.c
--- uml-linux-2.6.8.1/fs/hostfs/externfs.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/fs/hostfs/externfs.c 2004-08-29 14:40:56.000000000 +0200
@@ -1190,6 +1190,7 @@ char *host_root_filename(char *mount_arg
return(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.
diff -puN fs/hostfs/humfs.c~uml-export-Symbols fs/hostfs/humfs.c
--- uml-linux-2.6.8.1/fs/hostfs/humfs.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/fs/hostfs/humfs.c 2004-08-29 14:40:56.000000000 +0200
@@ -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_out
if(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_ops
list_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_o
list_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_op
static 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.
diff -puN fs/hostfs/host_file.c~uml-export-Symbols fs/hostfs/host_file.c
--- uml-linux-2.6.8.1/fs/hostfs/host_file.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/fs/hostfs/host_file.c 2004-08-29 14:40:56.000000000 +0200
@@ -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 fi
return(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
diff -puN arch/um/kernel/filehandle.c~uml-export-Symbols arch/um/kernel/filehandle.c
--- uml-linux-2.6.8.1/arch/um/kernel/filehandle.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/arch/um/kernel/filehandle.c 2004-08-29 14:41:57.000000000 +0200
@@ -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_handle
spin_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 *fh
return(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 o
init_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, un
return(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, u
return(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 *fh
return(os_truncate_fd(fh->fd, size));
}
+EXPORT_SYMBOL(truncate_file);
int make_pipe(struct file_handle *fhs)
{
diff -puN arch/um/Kconfig~uml-export-Symbols arch/um/Kconfig
--- uml-linux-2.6.8.1/arch/um/Kconfig~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/arch/um/Kconfig 2004-08-30 16:37:12.222169680 +0200
@@ -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"
diff -puN fs/hostfs/host_fs.c~uml-export-Symbols fs/hostfs/host_fs.c
--- uml-linux-2.6.8.1/fs/hostfs/host_fs.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/fs/hostfs/host_fs.c 2004-08-30 16:36:41.152892928 +0200
@@ -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.
diff -puN fs/hostfs/meta_fs.c~uml-export-Symbols fs/hostfs/meta_fs.c
--- uml-linux-2.6.8.1/fs/hostfs/meta_fs.c~uml-export-Symbols 2004-08-29 14:40:56.000000000 +0200
+++ uml-linux-2.6.8.1-paolo/fs/hostfs/meta_fs.c 2004-08-29 14:40:56.000000000 +0200
@@ -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.
diff -puN fs/hostfs/Makefile~uml-export-Symbols fs/hostfs/Makefile
--- uml-linux-2.6.8.1/fs/hostfs/Makefile~uml-export-Symbols 2004-08-30 16:37:25.671125128 +0200
+++ uml-linux-2.6.8.1-paolo/fs/hostfs/Makefile 2004-08-30 16:37:35.061697544 +0200
@@ -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))
_
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [uml-devel] uml modules broken in 2.6.8 (has something to do with memmove)
2004-09-06 18:05 ` BlaisorBlade
@ 2004-09-07 9:22 ` Ralph Passgang
0 siblings, 0 replies; 3+ messages in thread
From: Ralph Passgang @ 2004-09-07 9:22 UTC (permalink / raw)
To: user-mode-linux-devel
Am Montag, 6. September 2004 20:05 schrieben Sie:
> On Monday 06 September 2004 00:05, Ralph Paßgang wrote:
> > 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 :)
> 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.
> > 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...
> - 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 :)
> - 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).
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.
> In this case, apply this patch with patch -p1 -l:
>
> diff -puN arch/um/os-Linux/user_syms.c~uml-export-Symbols
> arch/um/os-Linux/user_syms.c ---
> uml-linux-2.6.8.1/arch/um/os-Linux/user_syms.c~uml-export-Symbols
> 2004-08-29 14:40:56.000000000 +0200 +++
> uml-linux-2.6.8.1-paolo/arch/um/os-Linux/user_syms.c 2004-08-29
> 14:40:56.000000000 +0200 @@ -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.
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_id\x10808&opÌk
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-09-07 9:23 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-05 22:05 [uml-devel] uml modules broken in 2.6.8 (has something to do with memmove) Ralph Paßgang
2004-09-06 18:05 ` BlaisorBlade
2004-09-07 9:22 ` Ralph Passgang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.