aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-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
6 files changed, 121 insertions, 8 deletions
diff --git a/Documentation/BUG-HUNTING b/Documentation/BUG-HUNTING
index ca29242dbc38..65b97e1dbf70 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 bb55f49f2745..15fc8fbef67e 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 424585ff6ea1..758e50401c16 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 3e992daf99ad..bae128663748 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 5ead20c6c744..2001abbc60e6 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 c2122996631e..a661d684768e 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