Various safe changes, like very minor code cleanups, symbol exports, defconfig changes, the 64-bit cow header cleanliness, the panic -> exitcode=1 fix, and changes to printk() datas. Signed-off-by: Paolo 'Blaisorblade' Giarrusso --- um-linux-2.4.27-paolo/arch/um/Makefile | 2 um-linux-2.4.27-paolo/arch/um/config_net.in | 1 um-linux-2.4.27-paolo/arch/um/defconfig | 9 um-linux-2.4.27-paolo/arch/um/drivers/cow_user.c | 4 um-linux-2.4.27-paolo/arch/um/drivers/mconsole_kern.c | 4 um-linux-2.4.27-paolo/arch/um/include/init.h | 6 um-linux-2.4.27-paolo/arch/um/kernel/ksyms.c | 6 um-linux-2.4.27-paolo/arch/um/kernel/skas/include/mode.h | 2 um-linux-2.4.27-paolo/arch/um/kernel/um_arch.c | 4 um-linux-2.4.27-paolo/arch/um/kernel/user_syms.c | 185 ++++++--------- um-linux-2.4.27-paolo/arch/um/kernel/user_util.c | 12 um-linux-2.4.27-paolo/arch/um/sys-i386/ptrace_user.c | 3 um-linux-2.4.27/arch/um/kernel/mprot.h | 6 13 files changed, 113 insertions(+), 131 deletions(-) diff -puN arch/um/config_net.in~mini-changes arch/um/config_net.in --- um-linux-2.4.27/arch/um/config_net.in~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/config_net.in 2005-04-15 11:12:47.000000000 +0200 @@ -37,6 +37,7 @@ if [ ! "$CONFIG_PPP" = "n" ]; then dep_tristate ' PPP Deflate compression' CONFIG_PPP_DEFLATE $CONFIG_PPP dep_tristate ' PPP BSD-Compress compression' CONFIG_PPP_BSDCOMP $CONFIG_PPP dep_tristate ' PPP over Ethernet (EXPERIMENTAL)' CONFIG_PPPOE $CONFIG_PPP $CONFIG_EXPERIMENTAL + dep_tristate ' PPP MPPE compression (encryption)' CONFIG_PPP_MPPE $CONFIG_PPP fi tristate 'SLIP (serial line) support' CONFIG_SLIP diff -puN arch/um/defconfig~mini-changes arch/um/defconfig --- um-linux-2.4.27/arch/um/defconfig~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/defconfig 2005-04-15 11:12:47.000000000 +0200 @@ -26,6 +26,8 @@ CONFIG_BINFMT_AOUT=y CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=y CONFIG_HOSTFS=y +CONFIG_HUMFS=y +CONFIG_EXTERNFS=y CONFIG_HPPFS=y CONFIG_MCONSOLE=y CONFIG_MAGIC_SYSRQ=y @@ -108,6 +110,7 @@ CONFIG_PPP=y # CONFIG_PPP_DEFLATE is not set # CONFIG_PPP_BSDCOMP is not set # CONFIG_PPPOE is not set +# CONFIG_PPP_MPPE is not set CONFIG_SLIP=y # CONFIG_SLIP_COMPRESSED is not set # CONFIG_SLIP_SMART is not set @@ -191,8 +194,8 @@ CONFIG_REISERFS_FS=y # CONFIG_BEFS_FS is not set # CONFIG_BEFS_DEBUG is not set # CONFIG_BFS_FS is not set -# CONFIG_EXT3_FS is not set -# CONFIG_JBD is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y @@ -205,7 +208,7 @@ CONFIG_JFFS_PROC_FS=y CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 # CONFIG_CRAMFS is not set -# CONFIG_TMPFS is not set +CONFIG_TMPFS=y CONFIG_RAMFS=y CONFIG_ISO9660_FS=y # CONFIG_JOLIET is not set diff -puN arch/um/drivers/cow_user.c~mini-changes arch/um/drivers/cow_user.c --- um-linux-2.4.27/arch/um/drivers/cow_user.c~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/drivers/cow_user.c 2005-04-15 11:12:47.000000000 +0200 @@ -27,8 +27,8 @@ struct cow_header_v1 { #define PATH_LEN_V2 MAXPATHLEN struct cow_header_v2 { - unsigned long magic; - unsigned long version; + __u32 magic; + __u32 version; char backing_file[PATH_LEN_V2]; time_t mtime; __u64 size; diff -puN arch/um/drivers/mconsole_kern.c~mini-changes arch/um/drivers/mconsole_kern.c --- um-linux-2.4.27/arch/um/drivers/mconsole_kern.c~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/drivers/mconsole_kern.c 2005-04-15 11:12:47.000000000 +0200 @@ -93,7 +93,9 @@ void mconsole_interrupt(int irq, void *d } } } - if(!list_empty(&mc_requests)) schedule_task(&mconsole_task); + + if(!list_empty(&mc_requests)) + schedule_task(&mconsole_task); reactivate_fd(fd, MCONSOLE_IRQ); } diff -L arch/um/kernel/mprot.h -puN arch/um/kernel/mprot.h~mini-changes /dev/null --- um-linux-2.4.27/arch/um/kernel/mprot.h +++ /dev/null 2005-04-15 01:44:05.698330744 +0200 @@ -1,6 +0,0 @@ -#ifndef __MPROT_H__ -#define __MPROT_H__ - -extern void no_access(unsigned long addr, unsigned int len); - -#endif diff -puN arch/um/kernel/ksyms.c~mini-changes arch/um/kernel/ksyms.c --- um-linux-2.4.27/arch/um/kernel/ksyms.c~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/kernel/ksyms.c 2005-04-15 11:12:47.000000000 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001 - 2003 Jeff Dike (jdike@addtoit.com) + * Copyright (C) 2001 - 2004 Jeff Dike (jdike@addtoit.com) * Licensed under the GPL */ @@ -17,6 +17,7 @@ #include "asm/page.h" #include "kern_util.h" #include "user_util.h" +#include "mem_user.h" #include "os.h" #include "helper.h" @@ -43,13 +44,16 @@ EXPORT_SYMBOL(to_phys); EXPORT_SYMBOL(to_virt); EXPORT_SYMBOL(mode_tt); EXPORT_SYMBOL(handle_page_fault); +EXPORT_SYMBOL(find_iomem); #ifdef CONFIG_MODE_TT +EXPORT_SYMBOL(strncpy_from_user_tt); EXPORT_SYMBOL(copy_from_user_tt); EXPORT_SYMBOL(copy_to_user_tt); #endif #ifdef CONFIG_MODE_SKAS +EXPORT_SYMBOL(strncpy_from_user_skas); EXPORT_SYMBOL(copy_to_user_skas); EXPORT_SYMBOL(copy_from_user_skas); #endif diff -puN arch/um/kernel/um_arch.c~mini-changes arch/um/kernel/um_arch.c --- um-linux-2.4.27/arch/um/kernel/um_arch.c~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/kernel/um_arch.c 2005-04-15 11:12:47.000000000 +0200 @@ -27,7 +27,6 @@ #include "user_util.h" #include "kern_util.h" #include "kern.h" -#include "mprot.h" #include "mem_user.h" #include "mem.h" #include "umid.h" @@ -387,12 +386,15 @@ int linux_main(int argc, char **argv) return(CHOOSE_MODE(start_uml_tt(), start_uml_skas())); } +extern int uml_exitcode; + static int panic_exit(struct notifier_block *self, unsigned long unused1, void *unused2) { #ifdef CONFIG_SYSRQ handle_sysrq('p', ¤t->thread.regs, NULL, NULL); #endif + uml_exitcode = 1; machine_halt(); return(0); } diff -puN arch/um/kernel/user_syms.c~mini-changes arch/um/kernel/user_syms.c --- um-linux-2.4.27/arch/um/kernel/user_syms.c~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/kernel/user_syms.c 2005-04-15 11:12:47.000000000 +0200 @@ -1,118 +1,85 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "user_util.h" -#include "mem_user.h" +#include "linux/types.h" +#include "linux/module.h" -/* XXX All the __CONFIG_* stuff is broken because this file can't include - * config.h +/* XXX Deleted a number of symbols because they clashed strangely with headers + * Add them back later. */ -/* Had to steal this from linux/module.h because that file can't be included - * since this includes various user-level headers. - */ +#if 0 +/* Some of this are builtin function (some are not but could in the future), + * so I *must* declare good prototypes for them and then EXPORT them. + * The kernel code uses the macro defined by include/linux/string.h, + * so I undef macros; the userspace code does not include that and I + * add an EXPORT for the glibc one.*/ + +#undef strlen +#undef memcpy +#undef memset + +EXPORT_SYMBOL_PROTO(strlen); +EXPORT_SYMBOL_PROTO(memset); +EXPORT_SYMBOL_PROTO(memcpy); +#undef strstr + +EXPORT_SYMBOL_PROTO(strstr); + +extern size_t strlen(const char *); +extern void *memcpy(void *, const void *, size_t); +extern void *memset(void *, int, size_t); +extern int printf(const char *, ...); -struct module_symbol -{ - unsigned long value; - const char *name; -}; - -/* Indirect stringification. */ - -#define __MODULE_STRING_1(x) #x -#define __MODULE_STRING(x) __MODULE_STRING_1(x) - -#if !defined(__AUTOCONF_INCLUDED__) - -#define __EXPORT_SYMBOL(sym,str) error config_must_be_included_before_module -#define EXPORT_SYMBOL(var) error config_must_be_included_before_module -#define EXPORT_SYMBOL_NOVERS(var) error config_must_be_included_before_module - -#elif !defined(__CONFIG_MODULES__) - -#define __EXPORT_SYMBOL(sym,str) -#define EXPORT_SYMBOL(var) -#define EXPORT_SYMBOL_NOVERS(var) - -#else - -#define __EXPORT_SYMBOL(sym, str) \ -const char __kstrtab_##sym[] \ -__attribute__((section(".kstrtab"))) = str; \ -const struct module_symbol __ksymtab_##sym \ -__attribute__((section("__ksymtab"))) = \ -{ (unsigned long)&sym, __kstrtab_##sym } - -#if defined(__MODVERSIONS__) || !defined(__CONFIG_MODVERSIONS__) -#define EXPORT_SYMBOL(var) __EXPORT_SYMBOL(var, __MODULE_STRING(var)) -#else -#define EXPORT_SYMBOL(var) __EXPORT_SYMBOL(var, __MODULE_STRING(__VERSIONED_SYMBOL(var))) #endif -#define EXPORT_SYMBOL_NOVERS(var) __EXPORT_SYMBOL(var, __MODULE_STRING(var)) - -#endif +/* Here, instead, I can provide a fake prototype. Yes, someone cares: genksyms. + * However, the modules will use the CRC defined *here*, no matter if it is + * good; so the versions of these symbols will always match + */ +#define EXPORT_SYMBOL_PROTO(sym) \ + int sym(void); \ + EXPORT_SYMBOL(sym); + +EXPORT_SYMBOL_PROTO(__errno_location); + +EXPORT_SYMBOL_PROTO(access); +EXPORT_SYMBOL_PROTO(open); +EXPORT_SYMBOL_PROTO(open64); +EXPORT_SYMBOL_PROTO(close); +EXPORT_SYMBOL_PROTO(read); +EXPORT_SYMBOL_PROTO(write); +EXPORT_SYMBOL_PROTO(dup2); +EXPORT_SYMBOL_PROTO(__xstat); +EXPORT_SYMBOL_PROTO(__lxstat); +EXPORT_SYMBOL_PROTO(__lxstat64); +EXPORT_SYMBOL_PROTO(lseek); +EXPORT_SYMBOL_PROTO(lseek64); +EXPORT_SYMBOL_PROTO(chown); +EXPORT_SYMBOL_PROTO(truncate); +EXPORT_SYMBOL_PROTO(utime); +EXPORT_SYMBOL_PROTO(chmod); +EXPORT_SYMBOL_PROTO(rename); +EXPORT_SYMBOL_PROTO(__xmknod); + +EXPORT_SYMBOL_PROTO(symlink); +EXPORT_SYMBOL_PROTO(link); +EXPORT_SYMBOL_PROTO(unlink); +EXPORT_SYMBOL_PROTO(readlink); + +EXPORT_SYMBOL_PROTO(mkdir); +EXPORT_SYMBOL_PROTO(rmdir); +EXPORT_SYMBOL_PROTO(opendir); +EXPORT_SYMBOL_PROTO(readdir); +EXPORT_SYMBOL_PROTO(closedir); +EXPORT_SYMBOL_PROTO(seekdir); +EXPORT_SYMBOL_PROTO(telldir); + +EXPORT_SYMBOL_PROTO(ioctl); + +EXPORT_SYMBOL_PROTO(pread64); +EXPORT_SYMBOL_PROTO(pwrite64); -EXPORT_SYMBOL(__errno_location); +EXPORT_SYMBOL_PROTO(statfs); +EXPORT_SYMBOL_PROTO(statfs64); -EXPORT_SYMBOL(access); -EXPORT_SYMBOL(open); -EXPORT_SYMBOL(open64); -EXPORT_SYMBOL(close); -EXPORT_SYMBOL(read); -EXPORT_SYMBOL(write); -EXPORT_SYMBOL(dup2); -EXPORT_SYMBOL(__xstat); -EXPORT_SYMBOL(__lxstat); -EXPORT_SYMBOL(__lxstat64); -EXPORT_SYMBOL(lseek); -EXPORT_SYMBOL(lseek64); -EXPORT_SYMBOL(chown); -EXPORT_SYMBOL(truncate); -EXPORT_SYMBOL(utime); -EXPORT_SYMBOL(chmod); -EXPORT_SYMBOL(rename); -EXPORT_SYMBOL(__xmknod); - -EXPORT_SYMBOL(symlink); -EXPORT_SYMBOL(link); -EXPORT_SYMBOL(unlink); -EXPORT_SYMBOL(readlink); - -EXPORT_SYMBOL(mkdir); -EXPORT_SYMBOL(rmdir); -EXPORT_SYMBOL(opendir); -EXPORT_SYMBOL(readdir); -EXPORT_SYMBOL(closedir); -EXPORT_SYMBOL(seekdir); -EXPORT_SYMBOL(telldir); - -EXPORT_SYMBOL(ioctl); - -extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, - __off64_t __offset); -extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n, - __off64_t __offset); -EXPORT_SYMBOL(pread64); -EXPORT_SYMBOL(pwrite64); - -EXPORT_SYMBOL(statfs); -EXPORT_SYMBOL(statfs64); - -EXPORT_SYMBOL(memcpy); -EXPORT_SYMBOL(getuid); - -EXPORT_SYMBOL(memset); -EXPORT_SYMBOL(strstr); -EXPORT_SYMBOL(strlen); -EXPORT_SYMBOL(printf); +EXPORT_SYMBOL_PROTO(getuid); -EXPORT_SYMBOL(find_iomem); +EXPORT_SYMBOL_PROTO(printf); diff -puN arch/um/Makefile~mini-changes arch/um/Makefile --- um-linux-2.4.27/arch/um/Makefile~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/Makefile 2005-04-15 11:12:47.000000000 +0200 @@ -25,7 +25,7 @@ ifneq ($(MAKEFILE-y),) include $(addprefix $(ARCH_DIR)/,$(MAKEFILE-y)) endif -EXTRAVERSION := $(EXTRAVERSION)-1um +EXTRAVERSION := $(EXTRAVERSION)-2um include/linux/version.h: arch/$(ARCH)/Makefile diff -puN arch/um/include/init.h~mini-changes arch/um/include/init.h --- um-linux-2.4.27/arch/um/include/init.h~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/include/init.h 2005-04-15 11:12:47.000000000 +0200 @@ -100,6 +100,12 @@ extern struct uml_param __uml_setup_star #define __uml_postsetup_call __attribute__ ((unused,__section__ (".uml.postsetup.init"))) #define __uml_exit_call __attribute__ ((unused,__section__ (".uml.exitcall.exit"))) +#define __initcall(fn) static initcall_t __initcall_##fn __init_call = fn +#define __exitcall(fn) static exitcall_t __exitcall_##fn __exit_call = fn + +#define __init_call __attribute__ ((unused,__section__ (".initcall.init"))) +#define __exit_call __attribute__ ((unused,__section__ (".exitcall.exit"))) + #endif /* _LINUX_UML_INIT_H */ /* diff -puN arch/um/kernel/skas/include/mode.h~mini-changes arch/um/kernel/skas/include/mode.h --- um-linux-2.4.27/arch/um/kernel/skas/include/mode.h~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/kernel/skas/include/mode.h 2005-04-15 11:12:47.000000000 +0200 @@ -6,6 +6,8 @@ #ifndef __MODE_SKAS_H__ #define __MODE_SKAS_H__ +#include + extern unsigned long exec_regs[]; extern unsigned long exec_fp_regs[]; extern unsigned long exec_fpx_regs[]; diff -puN arch/um/kernel/user_util.c~mini-changes arch/um/kernel/user_util.c --- um-linux-2.4.27/arch/um/kernel/user_util.c~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/kernel/user_util.c 2005-04-15 11:12:47.000000000 +0200 @@ -90,11 +90,11 @@ int wait_for_stop(int pid, int sig, int errno); } else if(WIFEXITED(status)) - printk("process exited with status %d\n", - WEXITSTATUS(status)); + printk("process %d exited with status %d\n", + pid, WEXITSTATUS(status)); else if(WIFSIGNALED(status)) - printk("process exited with signal %d\n", - WTERMSIG(status)); + printk("process %d exited with signal %d\n", + pid, WTERMSIG(status)); else if((WSTOPSIG(status) == SIGVTALRM) || (WSTOPSIG(status) == SIGALRM) || (WSTOPSIG(status) == SIGIO) || @@ -110,8 +110,8 @@ int wait_for_stop(int pid, int sig, int ptrace(cont_type, pid, 0, WSTOPSIG(status)); continue; } - else printk("process stopped with signal %d\n", - WSTOPSIG(status)); + else printk("process %d stopped with signal %d\n", + pid, WSTOPSIG(status)); panic("wait_for_stop failed to wait for %d to stop " "with %d\n", pid, sig); } diff -puN arch/um/sys-i386/ptrace_user.c~mini-changes arch/um/sys-i386/ptrace_user.c --- um-linux-2.4.27/arch/um/sys-i386/ptrace_user.c~mini-changes 2005-04-15 11:12:47.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/sys-i386/ptrace_user.c 2005-04-15 11:12:47.000000000 +0200 @@ -42,7 +42,8 @@ static void write_debugregs(int pid, uns if(ptrace(PTRACE_POKEUSER, pid, &dummy->u_debugreg[i], regs[i]) < 0) printk("write_debugregs - ptrace failed on " - "register %d, errno = %d\n", errno); + "register %d, value = 0x%x, errno = %d\n", i, + regs[i], errno); } } _