aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Documentation/BUG-HUNTING113
-rw-r--r--Documentation/dvb/get_dvb_firmware2
-rw-r--r--Documentation/filesystems/isofs.txt4
-rw-r--r--Documentation/filesystems/jfs.txt2
-rw-r--r--Documentation/filesystems/vfat.txt6
-rw-r--r--Documentation/spinlocks.txt2
-rw-r--r--drivers/base/platform.c2
-rw-r--r--drivers/block/cciss.c2
-rw-r--r--drivers/net/Kconfig2
-rw-r--r--drivers/s390/net/claw.c2
-rw-r--r--drivers/scsi/megaraid/megaraid_sas.c2
-rw-r--r--fs/befs/linuxvfs.c2
-rw-r--r--fs/cifs/CHANGES2
-rw-r--r--fs/fat/dir.c2
-rw-r--r--fs/fat/inode.c2
-rw-r--r--fs/isofs/joliet.c2
-rw-r--r--fs/nls/Kconfig2
-rw-r--r--include/asm-mips/termbits.h2
-rw-r--r--include/linux/device.h2
-rw-r--r--include/linux/msdos_fs.h2
-rw-r--r--ipc/mqueue.c1
22 files changed, 136 insertions, 23 deletions
diff --git a/.gitignore b/.gitignore
index 53e53f2791f..27fd3762125 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,6 +16,7 @@
16# 16#
17# Top-level generic files 17# Top-level generic files
18# 18#
19tags
19vmlinux* 20vmlinux*
20System.map 21System.map
21Module.symvers 22Module.symvers
diff --git a/Documentation/BUG-HUNTING b/Documentation/BUG-HUNTING
index ca29242dbc3..65b97e1dbf7 100644
--- a/Documentation/BUG-HUNTING
+++ b/Documentation/BUG-HUNTING
@@ -1,3 +1,56 @@
1Table of contents
2=================
3
4Last updated: 20 December 2005
5
6Contents
7========
8
9- Introduction
10- Devices not appearing
11- Finding patch that caused a bug
12-- Finding using git-bisect
13-- Finding it the old way
14- Fixing the bug
15
16Introduction
17============
18
19Always try the latest kernel from kernel.org and build from source. If you are
20not confident in doing that please report the bug to your distribution vendor
21instead of to a kernel developer.
22
23Finding bugs is not always easy. Have a go though. If you can't find it don't
24give up. Report as much as you have found to the relevant maintainer. See
25MAINTAINERS for who that is for the subsystem you have worked on.
26
27Before you submit a bug report read REPORTING-BUGS.
28
29Devices not appearing
30=====================
31
32Often this is caused by udev. Check that first before blaming it on the
33kernel.
34
35Finding patch that caused a bug
36===============================
37
38
39
40Finding using git-bisect
41------------------------
42
43Using the provided tools with git makes finding bugs easy provided the bug is
44reproducible.
45
46Steps to do it:
47- start using git for the kernel source
48- read the man page for git-bisect
49- have fun
50
51Finding it the old way
52----------------------
53
1[Sat Mar 2 10:32:33 PST 1996 KERNEL_BUG-HOWTO lm@sgi.com (Larry McVoy)] 54[Sat Mar 2 10:32:33 PST 1996 KERNEL_BUG-HOWTO lm@sgi.com (Larry McVoy)]
2 55
3This is how to track down a bug if you know nothing about kernel hacking. 56This is how to track down a bug if you know nothing about kernel hacking.
@@ -90,3 +143,63 @@ it does work and it lets non-hackers help fix bugs. And it is cool
90because Linux snapshots will let you do this - something that you can't 143because Linux snapshots will let you do this - something that you can't
91do with vendor supplied releases. 144do with vendor supplied releases.
92 145
146Fixing the bug
147==============
148
149Nobody is going to tell you how to fix bugs. Seriously. You need to work it
150out. But below are some hints on how to use the tools.
151
152To debug a kernel, use objdump and look for the hex offset from the crash
153output to find the valid line of code/assembler. Without debug symbols, you
154will see the assembler code for the routine shown, but if your kernel has
155debug symbols the C code will also be available. (Debug symbols can be enabled
156in the kernel hacking menu of the menu configuration.) For example:
157
158 objdump -r -S -l --disassemble net/dccp/ipv4.o
159
160NB.: you need to be at the top level of the kernel tree for this to pick up
161your C files.
162
163If you don't have access to the code you can also debug on some crash dumps
164e.g. crash dump output as shown by Dave Miller.
165
166> EIP is at ip_queue_xmit+0x14/0x4c0
167> ...
168> Code: 44 24 04 e8 6f 05 00 00 e9 e8 fe ff ff 8d 76 00 8d bc 27 00 00
169> 00 00 55 57 56 53 81 ec bc 00 00 00 8b ac 24 d0 00 00 00 8b 5d 08
170> <8b> 83 3c 01 00 00 89 44 24 14 8b 45 28 85 c0 89 44 24 18 0f 85
171>
172> Put the bytes into a "foo.s" file like this:
173>
174> .text
175> .globl foo
176> foo:
177> .byte .... /* bytes from Code: part of OOPS dump */
178>
179> Compile it with "gcc -c -o foo.o foo.s" then look at the output of
180> "objdump --disassemble foo.o".
181>
182> Output:
183>
184> ip_queue_xmit:
185> push %ebp
186> push %edi
187> push %esi
188> push %ebx
189> sub $0xbc, %esp
190> mov 0xd0(%esp), %ebp ! %ebp = arg0 (skb)
191> mov 0x8(%ebp), %ebx ! %ebx = skb->sk
192> mov 0x13c(%ebx), %eax ! %eax = inet_sk(sk)->opt
193
194Another very useful option of the Kernel Hacking section in menuconfig is
195Debug memory allocations. This will help you see whether data has been
196initialised and not set before use etc. To see the values that get assigned
197with this look at mm/slab.c and search for POISON_INUSE. When using this an
198Oops will often show the poisoned data instead of zero which is the default.
199
200Once you have worked out a fix please submit it upstream. After all open
201source is about sharing what you do and don't you want to be recognised for
202your genius?
203
204Please do read Documentation/SubmittingPatches though to help your code get
205accepted.
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware
index bb55f49f274..15fc8fbef67 100644
--- a/Documentation/dvb/get_dvb_firmware
+++ b/Documentation/dvb/get_dvb_firmware
@@ -246,7 +246,7 @@ sub vp7041 {
246} 246}
247 247
248sub dibusb { 248sub dibusb {
249 my $url = "http://www.linuxtv.org/downloads/firmware/dvb-dibusb-5.0.0.11.fw"; 249 my $url = "http://www.linuxtv.org/downloads/firmware/dvb-usb-dibusb-5.0.0.11.fw";
250 my $outfile = "dvb-dibusb-5.0.0.11.fw"; 250 my $outfile = "dvb-dibusb-5.0.0.11.fw";
251 my $hash = "fa490295a527360ca16dcdf3224ca243"; 251 my $hash = "fa490295a527360ca16dcdf3224ca243";
252 252
diff --git a/Documentation/filesystems/isofs.txt b/Documentation/filesystems/isofs.txt
index 424585ff6ea..758e50401c1 100644
--- a/Documentation/filesystems/isofs.txt
+++ b/Documentation/filesystems/isofs.txt
@@ -9,9 +9,9 @@ when using discs encoded using Microsoft's Joliet extensions.
9 iocharset=name Character set to use for converting from Unicode to 9 iocharset=name Character set to use for converting from Unicode to
10 ASCII. Joliet filenames are stored in Unicode format, but 10 ASCII. Joliet filenames are stored in Unicode format, but
11 Unix for the most part doesn't know how to deal with Unicode. 11 Unix for the most part doesn't know how to deal with Unicode.
12 There is also an option of doing UTF8 translations with the 12 There is also an option of doing UTF-8 translations with the
13 utf8 option. 13 utf8 option.
14 utf8 Encode Unicode names in UTF8 format. Default is no. 14 utf8 Encode Unicode names in UTF-8 format. Default is no.
15 15
16Mount options unique to the isofs filesystem. 16Mount options unique to the isofs filesystem.
17 block=512 Set the block size for the disk to 512 bytes 17 block=512 Set the block size for the disk to 512 bytes
diff --git a/Documentation/filesystems/jfs.txt b/Documentation/filesystems/jfs.txt
index 3e992daf99a..bae12866374 100644
--- a/Documentation/filesystems/jfs.txt
+++ b/Documentation/filesystems/jfs.txt
@@ -6,7 +6,7 @@ The following mount options are supported:
6 6
7iocharset=name Character set to use for converting from Unicode to 7iocharset=name Character set to use for converting from Unicode to
8 ASCII. The default is to do no conversion. Use 8 ASCII. The default is to do no conversion. Use
9 iocharset=utf8 for UTF8 translations. This requires 9 iocharset=utf8 for UTF-8 translations. This requires
10 CONFIG_NLS_UTF8 to be set in the kernel .config file. 10 CONFIG_NLS_UTF8 to be set in the kernel .config file.
11 iocharset=none specifies the default behavior explicitly. 11 iocharset=none specifies the default behavior explicitly.
12 12
diff --git a/Documentation/filesystems/vfat.txt b/Documentation/filesystems/vfat.txt
index 5ead20c6c74..2001abbc60e 100644
--- a/Documentation/filesystems/vfat.txt
+++ b/Documentation/filesystems/vfat.txt
@@ -28,16 +28,16 @@ iocharset=name -- Character set to use for converting between the
28 know how to deal with Unicode. 28 know how to deal with Unicode.
29 By default, FAT_DEFAULT_IOCHARSET setting is used. 29 By default, FAT_DEFAULT_IOCHARSET setting is used.
30 30
31 There is also an option of doing UTF8 translations 31 There is also an option of doing UTF-8 translations
32 with the utf8 option. 32 with the utf8 option.
33 33
34 NOTE: "iocharset=utf8" is not recommended. If unsure, 34 NOTE: "iocharset=utf8" is not recommended. If unsure,
35 you should consider the following option instead. 35 you should consider the following option instead.
36 36
37utf8=<bool> -- UTF8 is the filesystem safe version of Unicode that 37utf8=<bool> -- UTF-8 is the filesystem safe version of Unicode that
38 is used by the console. It can be be enabled for the 38 is used by the console. It can be be enabled for the
39 filesystem with this option. If 'uni_xlate' gets set, 39 filesystem with this option. If 'uni_xlate' gets set,
40 UTF8 gets disabled. 40 UTF-8 gets disabled.
41 41
42uni_xlate=<bool> -- Translate unhandled Unicode characters to special 42uni_xlate=<bool> -- Translate unhandled Unicode characters to special
43 escaped sequences. This would let you backup and 43 escaped sequences. This would let you backup and
diff --git a/Documentation/spinlocks.txt b/Documentation/spinlocks.txt
index c2122996631..a661d684768 100644
--- a/Documentation/spinlocks.txt
+++ b/Documentation/spinlocks.txt
@@ -9,7 +9,7 @@ removed soon. So for any new code dynamic initialization should be used:
9 static int __init xxx_init(void) 9 static int __init xxx_init(void)
10 { 10 {
11 spin_lock_init(&xxx_lock); 11 spin_lock_init(&xxx_lock);
12 rw_lock_init(&xxx_rw_lock); 12 rwlock_init(&xxx_rw_lock);
13 ... 13 ...
14 } 14 }
15 15
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index 89b26832132..83f5c5984d1 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -326,7 +326,7 @@ EXPORT_SYMBOL_GPL(platform_device_register);
326 * platform_device_unregister - unregister a platform-level device 326 * platform_device_unregister - unregister a platform-level device
327 * @pdev: platform device we're unregistering 327 * @pdev: platform device we're unregistering
328 * 328 *
329 * Unregistration is done in 2 steps. Fisrt we release all resources 329 * Unregistration is done in 2 steps. First we release all resources
330 * and remove it from the subsystem, then we drop reference count by 330 * and remove it from the subsystem, then we drop reference count by
331 * calling platform_device_put(). 331 * calling platform_device_put().
332 */ 332 */
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index b9c786ee6fa..cf39cf9aac2 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -2137,7 +2137,7 @@ static void start_io( ctlr_info_t *h)
2137 break; 2137 break;
2138 } 2138 }
2139 2139
2140 /* Get the frist entry from the Request Q */ 2140 /* Get the first entry from the Request Q */
2141 removeQ(&(h->reqQ), c); 2141 removeQ(&(h->reqQ), c);
2142 h->Qdepth--; 2142 h->Qdepth--;
2143 2143
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index e0b11095b9d..00993e8ba58 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -1914,7 +1914,7 @@ config E1000_DISABLE_PACKET_SPLIT
1914 depends on E1000 1914 depends on E1000
1915 help 1915 help
1916 Say Y here if you want to use the legacy receive path for PCI express 1916 Say Y here if you want to use the legacy receive path for PCI express
1917 hadware. 1917 hardware.
1918 1918
1919 If in doubt, say N. 1919 If in doubt, say N.
1920 1920
diff --git a/drivers/s390/net/claw.c b/drivers/s390/net/claw.c
index a86436a7a60..acd2a3f005f 100644
--- a/drivers/s390/net/claw.c
+++ b/drivers/s390/net/claw.c
@@ -1404,7 +1404,7 @@ add_claw_reads(struct net_device *dev, struct ccwbk* p_first,
1404 1404
1405 if ( privptr-> p_read_active_first ==NULL ) { 1405 if ( privptr-> p_read_active_first ==NULL ) {
1406#ifdef DEBUGMSG 1406#ifdef DEBUGMSG
1407 printk(KERN_INFO "%s:%s p_read_active_frist == NULL \n", 1407 printk(KERN_INFO "%s:%s p_read_active_first == NULL \n",
1408 dev->name,__FUNCTION__); 1408 dev->name,__FUNCTION__);
1409 printk(KERN_INFO "%s:%s Read active first/last changed \n", 1409 printk(KERN_INFO "%s:%s Read active first/last changed \n",
1410 dev->name,__FUNCTION__); 1410 dev->name,__FUNCTION__);
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c
index 38ede24b22a..39729460b00 100644
--- a/drivers/scsi/megaraid/megaraid_sas.c
+++ b/drivers/scsi/megaraid/megaraid_sas.c
@@ -902,7 +902,7 @@ static int megasas_reset_bus_host(struct scsi_cmnd *scmd)
902 int ret; 902 int ret;
903 903
904 /* 904 /*
905 * Frist wait for all commands to complete 905 * First wait for all commands to complete
906 */ 906 */
907 ret = megasas_generic_reset(scmd); 907 ret = megasas_generic_reset(scmd);
908 908
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
index 2d365cb8eec..dd6048ce053 100644
--- a/fs/befs/linuxvfs.c
+++ b/fs/befs/linuxvfs.c
@@ -561,7 +561,7 @@ befs_utf2nls(struct super_block *sb, const char *in,
561 * @sb: Superblock 561 * @sb: Superblock
562 * @src: Input string buffer in NLS format 562 * @src: Input string buffer in NLS format
563 * @srclen: Length of input string in bytes 563 * @srclen: Length of input string in bytes
564 * @dest: The output string in UTF8 format 564 * @dest: The output string in UTF-8 format
565 * @destlen: Length of the output buffer 565 * @destlen: Length of the output buffer
566 * 566 *
567 * Converts input string @src, which is in the format of the loaded NLS map, 567 * Converts input string @src, which is in the format of the loaded NLS map,
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index d335015473a..cb68efba35d 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -160,7 +160,7 @@ improperly zeroed buffer in CIFS Unix extensions set times call.
160Version 1.25 160Version 1.25
161------------ 161------------
162Fix internationalization problem in cifs readdir with filenames that map to 162Fix internationalization problem in cifs readdir with filenames that map to
163longer UTF8 strings than the string on the wire was in Unicode. Add workaround 163longer UTF-8 strings than the string on the wire was in Unicode. Add workaround
164for readdir to netapp servers. Fix search rewind (seek into readdir to return 164for readdir to netapp servers. Fix search rewind (seek into readdir to return
165non-consecutive entries). Do not do readdir when server negotiates 165non-consecutive entries). Do not do readdir when server negotiates
166buffer size to small to fit filename. Add support for reading POSIX ACLs from 166buffer size to small to fit filename. Add support for reading POSIX ACLs from
diff --git a/fs/fat/dir.c b/fs/fat/dir.c
index db0de5c621c..4095bc149eb 100644
--- a/fs/fat/dir.c
+++ b/fs/fat/dir.c
@@ -114,7 +114,7 @@ static inline int fat_get_entry(struct inode *dir, loff_t *pos,
114} 114}
115 115
116/* 116/*
117 * Convert Unicode 16 to UTF8, translated Unicode, or ASCII. 117 * Convert Unicode 16 to UTF-8, translated Unicode, or ASCII.
118 * If uni_xlate is enabled and we can't get a 1:1 conversion, use a 118 * If uni_xlate is enabled and we can't get a 1:1 conversion, use a
119 * colon as an escape character since it is normally invalid on the vfat 119 * colon as an escape character since it is normally invalid on the vfat
120 * filesystem. The following four characters are the hexadecimal digits 120 * filesystem. The following four characters are the hexadecimal digits
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index e7f4aa7fc68..e78d7b4842c 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -1101,7 +1101,7 @@ static int parse_options(char *options, int is_vfat, int silent, int *debug,
1101 return -EINVAL; 1101 return -EINVAL;
1102 } 1102 }
1103 } 1103 }
1104 /* UTF8 doesn't provide FAT semantics */ 1104 /* UTF-8 doesn't provide FAT semantics */
1105 if (!strcmp(opts->iocharset, "utf8")) { 1105 if (!strcmp(opts->iocharset, "utf8")) {
1106 printk(KERN_ERR "FAT: utf8 is not a recommended IO charset" 1106 printk(KERN_ERR "FAT: utf8 is not a recommended IO charset"
1107 " for FAT filesystems, filesystem will be case sensitive!\n"); 1107 " for FAT filesystems, filesystem will be case sensitive!\n");
diff --git a/fs/isofs/joliet.c b/fs/isofs/joliet.c
index 2931de7f1a6..81a90e170ac 100644
--- a/fs/isofs/joliet.c
+++ b/fs/isofs/joliet.c
@@ -11,7 +11,7 @@
11#include "isofs.h" 11#include "isofs.h"
12 12
13/* 13/*
14 * Convert Unicode 16 to UTF8 or ASCII. 14 * Convert Unicode 16 to UTF-8 or ASCII.
15 */ 15 */
16static int 16static int
17uni16_to_x8(unsigned char *ascii, u16 *uni, int len, struct nls_table *nls) 17uni16_to_x8(unsigned char *ascii, u16 *uni, int len, struct nls_table *nls)
diff --git a/fs/nls/Kconfig b/fs/nls/Kconfig
index 0ab8f00bdbb..976ecccd6f5 100644
--- a/fs/nls/Kconfig
+++ b/fs/nls/Kconfig
@@ -491,7 +491,7 @@ config NLS_KOI8_U
491 (koi8-u) and Belarusian (koi8-ru) character sets. 491 (koi8-u) and Belarusian (koi8-ru) character sets.
492 492
493config NLS_UTF8 493config NLS_UTF8
494 tristate "NLS UTF8" 494 tristate "NLS UTF-8"
495 depends on NLS 495 depends on NLS
496 help 496 help
497 If you want to display filenames with native language characters 497 If you want to display filenames with native language characters
diff --git a/include/asm-mips/termbits.h b/include/asm-mips/termbits.h
index c29c65b7818..fa6d04dac56 100644
--- a/include/asm-mips/termbits.h
+++ b/include/asm-mips/termbits.h
@@ -77,7 +77,7 @@ struct termios {
77#define IXANY 0004000 /* Any character will restart after stop. */ 77#define IXANY 0004000 /* Any character will restart after stop. */
78#define IXOFF 0010000 /* Enable start/stop input control. */ 78#define IXOFF 0010000 /* Enable start/stop input control. */
79#define IMAXBEL 0020000 /* Ring bell when input queue is full. */ 79#define IMAXBEL 0020000 /* Ring bell when input queue is full. */
80#define IUTF8 0040000 /* Input is UTF8 */ 80#define IUTF8 0040000 /* Input is UTF-8 */
81 81
82/* c_oflag bits */ 82/* c_oflag bits */
83#define OPOST 0000001 /* Perform output processing. */ 83#define OPOST 0000001 /* Perform output processing. */
diff --git a/include/linux/device.h b/include/linux/device.h
index 6d2345d8608..f6e72a65a3f 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -400,7 +400,7 @@ extern struct device * get_device(struct device * dev);
400extern void put_device(struct device * dev); 400extern void put_device(struct device * dev);
401 401
402 402
403/* drivers/base/power.c */ 403/* drivers/base/power/shutdown.c */
404extern void device_shutdown(void); 404extern void device_shutdown(void);
405 405
406 406
diff --git a/include/linux/msdos_fs.h b/include/linux/msdos_fs.h
index e933e2a355a..8bcd9450d92 100644
--- a/include/linux/msdos_fs.h
+++ b/include/linux/msdos_fs.h
@@ -199,7 +199,7 @@ struct fat_mount_options {
199 sys_immutable:1, /* set = system files are immutable */ 199 sys_immutable:1, /* set = system files are immutable */
200 dotsOK:1, /* set = hidden and system files are named '.filename' */ 200 dotsOK:1, /* set = hidden and system files are named '.filename' */
201 isvfat:1, /* 0=no vfat long filename support, 1=vfat support */ 201 isvfat:1, /* 0=no vfat long filename support, 1=vfat support */
202 utf8:1, /* Use of UTF8 character set (Default) */ 202 utf8:1, /* Use of UTF-8 character set (Default) */
203 unicode_xlate:1, /* create escape sequences for unhandled Unicode */ 203 unicode_xlate:1, /* create escape sequences for unhandled Unicode */
204 numtail:1, /* Does first alias have a numeric '~1' type tail? */ 204 numtail:1, /* Does first alias have a numeric '~1' type tail? */
205 atari:1, /* Use Atari GEMDOS variation of MS-DOS fs */ 205 atari:1, /* Use Atari GEMDOS variation of MS-DOS fs */
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index fd2e26b6f96..85c52fd26bf 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -51,7 +51,6 @@
51#define HARD_MSGMAX (131072/sizeof(void*)) 51#define HARD_MSGMAX (131072/sizeof(void*))
52#define DFLT_MSGSIZEMAX 8192 /* max message size */ 52#define DFLT_MSGSIZEMAX 8192 /* max message size */
53 53
54#define NOTIFY_COOKIE_LEN 32
55 54
56struct ext_wait_queue { /* queue of sleeping tasks */ 55struct ext_wait_queue { /* queue of sleeping tasks */
57 struct task_struct *task; 56 struct task_struct *task;