This page is also meant to be a quick reference to check what the latest kernel version is, and what problems it may have. I try to keep this up to date. You can also check http://www.kernel.org/ which shows the current versions. This should be the definitive guide on what the latest versions are, although it doesn't discuss problems.
Please bookmark this page and refer to it before asking on the kernel list.
This document is for the 2.2, 2.4 and 2.5 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.
--- net/sunrpc/sched.c.~1~ Fri Oct 12 18:47:31 2001 +++ net/sunrpc/sched.c Fri Dec 21 18:48:09 2001 @@ -21,6 +21,7 @@ #include <linux/spinlock.h> #include <linux/sunrpc/clnt.h> +#include <linux/sunrpc/xprt.h> #ifdef RPC_DEBUG #define RPCDBG_FACILITY RPCDBG_SCHEDAlso, recent versions of binutils (specifically, 2.11.92.0.12) won't work properly with the kernel, so please use binutils-2.11.92.0.10 until the kernel is fixed. Note that 2.4.18-pre3 should fix this. Keith Owens has provided the following information:
2.4.18-pre3 contains my patch to use .subsection instead of a separate .text.lock section for out of line lock code. That should fix most of the problems, any .text.lock references after 2.4.18-pre3 are almost certainly code bugs. IA64 is still using .text.lock (only for read_lock()), gcc 2.96 generates incorrect code for ia64 subsections. AFAIK there are no uses of read_lock in discarded sections on IA64. IA64 has a separate problem, gcc automatically generates unwind sections that refer to other sections, the unwind sections get flagged as dangling references. However that is a generic binutils problem, not the kernel, we have no control over unwind sections. 2.5.x has not been patched so it still suffers from the dangling .text.lock problems.
There are other problems with 2.4.15 as well, which were not caught because 2.4.15-pre9, 2.4.15-final and 2.4.15 were released within the space of about 24 hours, which didn't give sufficient time to enable people to test the new kernels (or even compile).
2.4.15 is the last kernel in the 2.4 series released by Linus. Maintenance of this produciton series has been handed over to Marcelo. Linus is now concentrating on the 2.5 development series.
This is the same kernel (other than a name change) as the new development kernel (2.5.0). Thus, 2.5.0 has the same filesystem corruption problem. Grab 2.5.1 for a fix.
The new VM remains undocumented.
Index: lib/zlib_inflate/inflate_syms.c =================================================================== RCS file: /home/cvs/kernel-acme/lib/zlib_inflate/inflate_syms.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 inflate_syms.c --- lib/zlib_inflate/inflate_syms.c 2002/01/31 22:30:27 1.1.1.1 +++ lib/zlib_inflate/inflate_syms.c 2002/02/02 23:36:05 @@ -18,4 +18,5 @@ EXPORT_SYMBOL(zlib_inflateSync); EXPORT_SYMBOL(zlib_inflateReset); EXPORT_SYMBOL(zlib_inflateSyncPoint); +EXPORT_SYMBOL(zlib_inflateIncomp); MODULE_LICENSE("GPL");
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);