| ★ wanayoo — archive 1999 http://www.atnf.csiro.au/~rgooch/linux/docs/kernel-newsflash.html | Nouvelle recherche | Portail wanayoo |
Please bookmark this page and refer to it before asking on the kernel list.
This document is for the 2.2 and 2.3 series kernels.
Note that some versions of egcs need the compile option:
-fno-strict-aliasing
Gcc 2.95.2 has this as the default, although it won't hurt to still
provide this switch. Better safe than sorry.
The bug can be fixed by editing linux/drivers/char/serial.c and changing each use of IRQ_T(info) to IRQ_T(state).
The matroxfb driver won't run as a module. It must be built into the kernel, or you can fix it by adding:
EXPORT_SYMBOL(fb_con);to the end of drivers/video/fbcon.c
There is a run-time bug in the via-rhine driver. The following patch has been posted:
--- linux/drivers/net/via-rhine.c.orig Sun Apr 11 16:16:17 1999
+++ linux/drivers/net/via-rhine.c Fri Apr 16 16:46:17 1999
@@ -1053,6 +1053,7 @@
skb->protocol = eth_type_trans(skb, dev);
netif_rx(skb);
dev->last_rx = jiffies;
+ np->stats.rx_bytes += pkt_len;
np->stats.rx_packets++;
}
entry = (++np->cur_rx) % RX_RING_SIZE;
The radio-cadet video capture driver doesn't compile. The following patch has been posted:
--- include/linux/videodev.h.stock Sat Apr 17 11:00:04 1999 +++ include/linux/videodev.h Sat Apr 17 11:00:34 1999 @@ -275,6 +275,7 @@ #define VID_HARDWARE_GEMTEK 18 #define VID_HARDWARE_TYPHOON 19 #define VID_HARDWARE_VINO 20 /* Reserved for SGI Indy Vino */ +#define VID_HARDWARE_CADET 21 /* Cadet radio */ /* * Initialiser list
The MSDOS/FAT filesystems do not compile. The following patch should fix it:
diff -urN linux-2.2.6/fs/fat/fatfs_syms.c linux/fs/fat/fatfs_syms.c
--- linux-2.2.6/fs/fat/fatfs_syms.c Thu Feb 25 10:03:56 1999
+++ linux/fs/fat/fatfs_syms.c Tue Apr 20 00:19:38 1999
@@ -54,6 +54,7 @@
EXPORT_SYMBOL(unlock_fat);
EXPORT_SYMBOL(fat_dir_ioctl);
EXPORT_SYMBOL(fat_readpage);
+EXPORT_SYMBOL(fat_is_binary);
int init_fat_fs(void)
{
diff -urN linux-2.2.6/fs/fat/inode.c linux/fs/fat/inode.c
--- linux-2.2.6/fs/fat/inode.c Fri Apr 16 13:26:37 1999
+++ linux/fs/fat/inode.c Tue Apr 20 00:18:36 1999
@@ -703,7 +703,7 @@
if(raw_entry->attr & ATTR_SYS)
if (MSDOS_SB(sb)->options.sys_immutable)
inode->i_flags |= S_IMMUTABLE;
- MSDOS_I(inode)->i_binary = is_binary(MSDOS_SB(sb)->options.conversion,
+ MSDOS_I(inode)->i_binary = fat_is_binary(MSDOS_SB(sb)->options.conversion,
raw_entry->ext);
MSDOS_I(inode)->i_attrs = raw_entry->attr & ATTR_UNUSED;
/* this is as close to the truth as we can get ... */
diff -urN linux-2.2.6/fs/fat/misc.c linux/fs/fat/misc.c
--- linux-2.2.6/fs/fat/misc.c Thu Feb 25 10:03:56 1999
+++ linux/fs/fat/misc.c Tue Apr 20 00:18:56 1999
@@ -55,7 +55,7 @@
* the extension part of the file name.
*/
-int is_binary(char conversion,char *extension)
+int fat_is_binary(char conversion,char *extension)
{
char *walk;
diff -urN linux-2.2.6/fs/msdos/namei.c linux/fs/msdos/namei.c
--- linux-2.2.6/fs/msdos/namei.c Tue Apr 13 09:15:18 1999
+++ linux/fs/msdos/namei.c Tue Apr 20 00:22:31 1999
@@ -713,7 +713,7 @@
fat_cache_inval_inode(old_inode);
old_inode->i_version = ++event;
MSDOS_I(old_inode)->i_binary =
- is_binary(MSDOS_SB(sb)->options.conversion, free_de->ext);
+ fat_is_binary(MSDOS_SB(sb)->options.conversion, free_de->ext);
old_inode->i_ino = free_ino;
fat_mark_buffer_dirty(sb, free_bh, 1);
old_de->name[0] = DELETED_FLAG;
diff -urN linux-2.2.6/include/linux/msdos_fs.h linux/include/linux/msdos_fs.h
--- linux-2.2.6/include/linux/msdos_fs.h Thu Feb 25 10:04:04 1999
+++ linux/include/linux/msdos_fs.h Tue Apr 20 00:20:22 1999
@@ -195,7 +195,7 @@
};
/* misc.c */
-extern int is_binary(char conversion,char *extension);
+extern int fat_is_binary(char conversion,char *extension);
extern void lock_fat(struct super_block *sb);
extern void unlock_fat(struct super_block *sb);
extern int fat_add_cluster(struct inode *inode);
--- linux-2.3.48/fs/ntfs/fs.c.orig Sun Feb 27 11:49:15 2000
+++ linux-2.3.48/fs/ntfs/fs.c Sun Feb 27 12:39:42 2000
@@ -692,7 +692,7 @@
inode->u.ntfs_i.mmu_private = inode->i_size;
} else {
inode->i_op=&ntfs_inode_operations_nobmap;
- inode->i_fop=&ntfs_file_operations_nommap,
+ inode->i_fop=&ntfs_file_operations_nommap;
}
inode->i_mode=S_IFREG|S_IRUGO;
}
Compiling for SMP and Pentium (or better) CPUs will fail in arch/i386/kernel/time.c when compiling with gcc 2.7.2.3 (the recommended compiler). Compile for a lesser CPU (i.e. 486) or disable SMP support.
This kernel (and recent kernels) doesn't compile if you've enabled initrd. Disable initrd in your config and recompile. If you need initrd, wait for the kernel to be fixed.
There are various compile/link/module problems with this kernel. Apply the following patch:
diff -u linux.old/Makefile linux/Makefile
--- linux.old/Makefile 1999/11/12 22:59:05 1.1.1.17
+++ linux/Makefile 1999/11/13 07:50:32 1.1.1.17.4.1
@@ -112,6 +112,7 @@
DRIVERS =drivers/block/block.a \
drivers/char/char.o \
drivers/misc/misc.o \
+ drivers/net/net.o \
drivers/parport/parport.a
LIBS =$(TOPDIR)/lib/lib.a
SUBDIRS =kernel drivers mm fs net ipc lib
@@ -123,8 +124,6 @@
ifeq ($(CONFIG_ISDN),y)
DRIVERS := $(DRIVERS) drivers/isdn/isdn.a
endif
-
-DRIVERS := $(DRIVERS) drivers/net/net.a
ifdef CONFIG_NET_FC
DRIVERS := $(DRIVERS) drivers/net/fc/fc.a
diff -u linux.old/drivers/net/Makefile linux/drivers/net/Makefile
--- linux.old/drivers/net/Makefile 1999/11/11 04:52:09 1.1.1.11
+++ linux/drivers/net/Makefile 1999/11/13 07:50:32 1.1.1.11.8.1
@@ -19,8 +19,8 @@
MOD_IN_SUB_DIRS :=
ALL_SUB_DIRS := $(SUB_DIRS) fc hamradio irda pcmcia tokenring wan
-L_TARGET := net.a
-L_OBJS := auto_irq.o
+O_TARGET := net.o
+O_OBJS := auto_irq.o
M_OBJS :=
MOD_LIST_NAME := NET_MODULES
@@ -258,14 +258,11 @@
# Translate to Rules.make lists.
-O_OBJS := $(filter-out $(export-objs), $(obj-y))
+O_OBJS += $(filter-out $(export-objs), $(obj-y))
OX_OBJS := $(filter $(export-objs), $(obj-y))
M_OBJS := $(sort $(filter-out $(export-objs), $(obj-m)))
MX_OBJS := $(sort $(filter $(export-objs), $(obj-m)))
-L_OBJS += $(O_OBJS)
-L_OBJS += $(OX_OBJS)
-
include $(TOPDIR)/Rules.make
clean:
diff -urN linux.old/drivers/block/ide-features.c linux/drivers/block/ide-features.c
--- linux.old/drivers/block/ide-features.c Fri Nov 12 11:12:11 1999
+++ linux/drivers/block/ide-features.c Wed Nov 17 12:39:03 1999
@@ -14,6 +14,7 @@
*/
#include <linux/config.h>
+#define __NO_VERSION__
#include <linux/module.h>
#include <linux/types.h>
#include <linux/string.h>
diff -urN linux.old/mm/Makefile linux/mm/Makefile
--- linux.old/mm/Makefile Tue Oct 19 11:22:19 1999
+++ linux/mm/Makefile Wed Nov 17 13:25:09 1999
@@ -10,7 +10,8 @@
O_TARGET := mm.o
O_OBJS := memory.o mmap.o filemap.o mprotect.o mlock.o mremap.o \
vmalloc.o slab.o bootmem.o swap.o vmscan.o page_io.o \
- page_alloc.o swap_state.o swapfile.o
+ swap_state.o swapfile.o
+OX_OBJS := page_alloc.o
ifeq ($(CONFIG_HIGHMEM),y)
O_OBJS += highmem.o
diff -urN linux.old/mm/page_alloc.c linux/mm/page_alloc.c
--- linux.old/mm/page_alloc.c Thu Nov 11 11:33:42 1999
+++ linux/mm/page_alloc.c Wed Nov 17 13:22:11 1999
@@ -8,6 +8,7 @@
*/
#include <linux/config.h>
+#include <linux/module.h>
#include <linux/mm.h>
#include <linux/kernel_stat.h>
#include <linux/swap.h>
@@ -373,6 +374,7 @@
{
return __get_pages(gfp_mask_to_zone(gfp_mask), gfp_mask, order);
}
+EXPORT_SYMBOL(alloc_pages);
/*
* Total amount of free (allocatable) RAM:
diff -u --recursive linux-2.3.22/arch/i386/kernel/setup.c linux/arch/i386/kernel/setup.c
--- linux-2.3.22/arch/i386/kernel/setup.c Sun Oct 17 17:18:18 1999
+++ linux/arch/i386/kernel/setup.c Sun Oct 17 17:15:27 1999
@@ -619,10 +619,10 @@
if (LOADER_TYPE) {
initrd_start = INITRD_START ? INITRD_START + PAGE_OFFSET : 0;
initrd_end = initrd_start+INITRD_SIZE;
- if (initrd_end > memory_end) {
+ if (initrd_end > *memory_end_p) {
printk("initrd extends beyond end of memory "
"(0x%08lx > 0x%08lx)\ndisabling initrd\n",
- initrd_end,memory_end);
+ initrd_end, (unsigned long) memory_end_p);
initrd_start = 0;
}
}
diff -u -r1.116 -r1.117 --- netsyms.c 1999/06/09 10:10:11 1.116 +++ netsyms.c 1999/06/09 22:04:57 1.117 @@ -377,7 +377,6 @@ EXPORT_SYMBOL(rtnetlink_links); EXPORT_SYMBOL(__rta_fill); EXPORT_SYMBOL(rtnetlink_dump_ifinfo); -EXPORT_SYMBOL(rtnl_wlockct); EXPORT_SYMBOL(rtnl); EXPORT_SYMBOL(neigh_delete); EXPORT_SYMBOL(neigh_add);
--- linux/kernel/ksyms.c.old Thu Jun 3 16:52:58 1999 +++ linux/kernel/ksyms.c Thu Jun 3 16:53:53 1999 @@ -346,6 +346,7 @@ /* Program loader interfaces */ EXPORT_SYMBOL(setup_arg_pages); EXPORT_SYMBOL(copy_strings); +EXPORT_SYMBOL(copy_strings_kernel); EXPORT_SYMBOL(do_execve); EXPORT_SYMBOL(flush_old_exec); EXPORT_SYMBOL(open_dentry);