ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test1/2.6.0-test1-mm2/
Lots of little fixes and some more CPU scheduler experimentation from Con.
Changes since 2.6.0-test1-mm1:
linus.patch
Latest Linus tree
-CONFIG_LBD-other-archs.patch
-misc30.patch
-parport-warning-fix.patch
-ext3-xattr-fixes.patch
-ext3-xattr-credits-fixes.patch
-block_ioctl-fix.patch
-coredump-pass-regs.patch
-is_devfsd_or_child-lockup-fix.patch
-remove-task_cache.patch
-kmalloc-stacks.patch
-devfs-removable-media-fix.patch
-CDROM_SEND_PACKET-timeout-fix.patch
-getaffinity-return-val-fix.patch
-RLIMIT_NPROC-fixes.patch
-wpadded.patch
-uninline-put_namespace.patch
-qlogic-shift-fix.patch
-cryptoloop-config-fix.patch
-slab-wrong-cache-debug.patch
-settimeofday-fix.patch
-ppc-build-fix.patch
-unbreak-visws.patch
-vesafb-fix.patch
-acpi-20030714.patch
-watchdog-i810.patch
-aacraid-hang-fix.patch
-aha152x-oops-fix.patch
-magic-number-update.patch
-as-do_div-fix.patch
Merged
+cpumask_t-gcc-workaround-46.patch
+cpumask-acpi-fix.patch
NR_CPUS>BITS_PER_LONG fixes
+misc31.patch
misc fixes
+3c59x-pm-fix.patch
+3c59x-eisa-fix.patch
3c59x.c stuff
+dev_t-printing.patch
Don't assume dev_t is an int
+slab-reclaim-accounting-fix.patch
Account for freed slab pages in page recleim (we were unaccounting)
+timer-spin-fix.patch
sound/core/timer.c locking fix
+ak4xxx-fix.patch
sound/pci/ice1712/ak4xxx.c fix
+less-kswapd-throttling.patch
Dont' throttle kswapd so much
+stack-leak-fix.patch
nano security fix
+airo-fixes.patch
airo_cs locking rework
+unlock_buffer-barrier.patch
SMP race fix in unlock_buffer()
+feral-bounce-fix-2.patch
Fix linux_isp highmem initialisation
-airo-schedule-fix.patch
Dropped
+64-bit-dev_t-other-archs.patch
Enable 64-bit dev_t on other architectures
+o6int.patch
+o6.1int.patch
+o7int.patch
CPU scheduler interactivity tweaks
+ext3_getblk-race-fix.patch
ext3 race fix
+ext3_write_super-speedup.patch
ext3 speedup
+speedstep-ich-timing-fix.patch
speedtep fix
+floppy-req-botched.patch
floppy driver fix
All 108 patches:
linus.patch
mm.patch
add -mmN to EXTRAVERSION
kgdb-ga.patch
kgdb stub for ia32 (George Anzinger's one)
kgdb-remove-cpu_callout_map.patch
kgdb: remove cpu_callout_map decls
kgdb-use-ggdb.patch
kgdb-ga-docco-fixes.patch
kgdb doc. edits/corrections
cpumask_t-1.patch
cpumask_t: allow more than BITS_PER_LONG CPUs
cpumask_t fix for s390
fix cpumask_t for s390
Fix cpumask changes for x86_64
fix cpumask_t for sparc64
cpumask_t-gcc-workaround-46.patch
cpumask_t: more gcc workarounds
cpumask-acpi-fix.patch
cpumask_t: build fix
kgdb-cpumask_t.patch
misc31.patch
misc fixes
selinux.patch
reslabify-pgds-and-pmds.patch
re-slabify i386 pgd's and pmd's
config_spinline.patch
uninline spinlocks for profiling accuracy.
ppc64-bar-0-fix.patch
Allow PCI BARs that start at 0
ppc64-reloc_hide.patch
ppc64-semaphore-reimplementation.patch
ppc64: use the ia32 semaphore implementation
sym-do-160.patch
make the SYM driver do 160 MB/sec
ia64-percpu-revert.patch
revert percpu changes
x86_64-fixes.patch
x86_64 fixes
delay-ksoftirqd-fallback.patch
Try harded in IRQ context before falling back to ksoftirqd
ds-09-vicam-usercopy-fix.patch
vicam usercopy fix
fbdev-2.patch
buffer-debug.patch
buffer.c debugging
rcu-stats.patch
RCU statistics reporting
mtrr-hang-fix.patch
Fix mtrr-related hang
intel8x0-cleanup.patch
intel8x0 cleanups
bio-too-big-fix.patch
Fix raid "bio too big" failures
centrino-update.patch
update to speedstep-centrino.c
ppa-fix.patch
ppc fix
3c59x-pm-fix.patch
3c59x suspend/resume fix
dev_t-printing.patch
dev_t printing
3c59x-eisa-fix.patch
non-MII 3c59x fix
slab-reclaim-accounting-fix.patch
kwsapd can free too much memory
timer-spin-fix.patch
ALSA locking fix
ak4xxx-fix.patch
fix snd-ice1724 module OOPS
less-kswapd-throttling.patch
stack-leak-fix.patch
info leak -- padded struct copied to user
airo-fixes.patch
fixes for airo.c
unlock_buffer-barrier.patch
unlock_buffer() needs a barrier
linux-isp-2.patch
linux-isp-2-fix-again.patch
lost feral fix
feral-bounce-fix.patch
Feral driver - highmem issues
feral-bounce-fix-2.patch
Feral driver bouncing fix
list_del-debug.patch
list_del debug check
print-build-options-on-oops.patch
print a few config options on oops
show_task-free-stack-fix.patch
show_task() fix and cleanup
put_task_struct-debug.patch
ia32-mknod64.patch
mknod64 for ia32
ext2-64-bit-special-inodes.patch
ext2: support for 64-bit device nodes
ext3-64-bit-special-inodes.patch
ext3: support for 64-bit device nodes
64-bit-dev_t-kdev_t.patch
64-bit dev_t and kdev_t
64-bit-dev_t-other-archs.patch
enable 64-bit dev_t for other archs
oops-dump-preceding-code.patch
i386 oops output: dump preceding code
lockmeter.patch
invalidate_mmap_range.patch
Interface to invalidate regions of mmaps
aio-mm-refcounting-fix.patch
fix /proc mm_struct refcounting bug
aio-01-retry.patch
AIO: Core retry infrastructure
io_submit_one-EINVAL-fix.patch
Fix aio process hang on EINVAL
aio-02-lockpage_wq.patch
AIO: Async page wait
aio-03-fs_read.patch
AIO: Filesystem aio read
aio-04-buffer_wq.patch
AIO: Async buffer wait
aio-05-fs_write.patch
AIO: Filesystem aio write
aio-05-fs_write-fix.patch
aio-06-bread_wq.patch
AIO: Async block read
aio-06-bread_wq-fix.patch
aio-07-ext2getblk_wq.patch
AIO: Async get block for ext2
O_SYNC-speedup-2.patch
speed up O_SYNC writes
aio-09-o_sync.patch
aio O_SYNC
aio-10-BUG-fix.patch
AIO: fix a BUG
aio-11-workqueue-flush.patch
AIO: flush workqueues before destroying ioctx'es
aio-12-readahead.patch
AIO: readahead fixes
aio-dio-no-readahead.patch
aio O_DIRECT no readahead
lock_buffer_wq-fix.patch
lock_buffer_wq fix
unuse_mm-locked.patch
AIO: hold the context lock across unuse_mm
aio-take-task_lock.patch
From: Suparna Bhattacharya <[email protected]>
Subject: Re: 2.5.72-mm1 - Under heavy testing with AIO,.. vmstat seems to blow the kernel
aio-O_SYNC-fix.patch
Unify o_sync changes for aio and regular writes
aio-readahead-rework.patch
Unified page range readahead for aio and regular reads
truncate-pagefault-race-fix.patch
Fix vmtruncate race and distributed filesystem race
truncate-pagefault-race-fix-fix.patch
Make sure truncate fix has no race
printk-oops-mangle-fix.patch
disentangle printk's whilst oopsing on SMP
20-odirect_enable.patch
21-odirect_cruft.patch
22-read_proc.patch
23-write_proc.patch
24-commit_proc.patch
25-odirect.patch
nfs-O_DIRECT-always-enabled.patch
Force CONFIG_NFS_DIRECTIO
kjournald-PF_SYNCWRITE.patch
o1-interactivity.patch
CPU scheduler interactivity patch
o2int.patch
O2int 0307041440 for 2.5.74-mm1
o3int.patch
O3int interactivity for 2.5.74-mm2
o4int.patch
O4int interactivity
o5int-2.patch
O5int for interactivity
o6int.patch
O6int for interactivity
o6.1int.patch
O6.1int
o7int.patch
O7int for interactivity
sched-balance-tuning.patch
CPU scheduler balancing fix
highpmd.patch
highpmd
synaptics-reset-fix.patch
synaptics driver reset fix
ext3-block-allocation-cleanup.patch
nfs-revert-backoff.patch
nfs: revert backoff changes
ext3-elide-inode-block-reading.patch
ext3: avoid reading empty inode blocks
ide-tcq-fix.patch
IDE TCQ oops fix
ext3_getblk-race-fix.patch
Fix race in ext3_getblk
ext3_write_super-speedup.patch
ext3: don't start a commit in write_super()
speedstep-ich-timing-fix.patch
speedstep-ich fixes
floppy-req-botched.patch
"blk: request botched" error on floppy write
On Sat, Jul 19, 2003 at 05:43:50PM -0700, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test1/2.6.0-test1-mm2/
2.6.0-test1-mm2 requires attached patch to build with software suspend.
-Josh
--
Using words to describe magic is like using a screwdriver to cut roast beef.
-- Tom Robbins
Joshua Kwan <[email protected]> wrote:
>
> 2.6.0-test1-mm2 requires attached patch to build with software suspend.
> ...
>
> /* References to section boundaries */
> -extern char _text, _etext, _edata, __bss_start, _end;
> +extern char _text[], _etext[], _edata[], __bss_start[], _end[];
No, the declaration simply needs to be deleted; it is already provided by
asm/sections.h.
Incorrectly, I believe. Those symbols are conventionally "extern int".
On Sat, 19 Jul 2003 21:27:15 -0700
Andrew Morton <[email protected]> wrote:
> Joshua Kwan <[email protected]> wrote:
> > /* References to section boundaries */
> > -extern char _text, _etext, _edata, __bss_start, _end;
> > +extern char _text[], _etext[], _edata[], __bss_start[], _end[];
>
> No, the declaration simply needs to be deleted; it is already provided by
> asm/sections.h.
>
> Incorrectly, I believe. Those symbols are conventionally "extern int".
True, from some perspective.
But you have to admit the pointer math gets real ugly if we declare
them in that way. :-)
On Sat, Jul 19, 2003 at 07:41:02PM -0700, Joshua Kwan wrote:
> 2.6.0-test1-mm2 requires attached patch to build with software suspend.
That and it just spilled its guts all over me.
Unable to handle kernel NULL pointer dereference at virtual address 00000014
printing eip:
c0194e8f
*pde = 00000000
Oops: 0000 [#1]
PREEMPT
CPU: 0
EIP: 0060:[<c0194e8f>] Not tainted VLI
EFLAGS: 00210202
EIP is at journal_dirty_metadata+0x41/0x207
eax: c0a6e000 ebx: cf4b3e00 ecx: 00000000 edx: cf96ef60
esi: 00000000 edi: cf732e80 ebp: cf96a910 esp: c0a6fe78
ds: 007b es: 007b ss: 0068
Process cvs (pid: 8960, threadinfo=c0a6e000 task=c7d01940)
Stack: c1373600 cf85bb90 c0152a7a c0151389 cf96ef60 cf96ef60 cf96a910 00000001
cf85bb90 c0186674 cf96a910 cf96ef60 00001000 c0a6febc 00000001 00000001
00000000 00000030 00000000 00000000 0000001a 000e0224 cf955ed0 00004000
Call Trace:
[<c0152a7a>] __getblk+0x2b/0x51
[<c0151389>] wake_up_buffer+0xf/0x26
[<c0186674>] ext3_getblk+0xdb/0x284
[<c0186850>] ext3_bread+0x33/0xb6
[<c018c17c>] ext3_mkdir+0xd1/0x2c6
[<c018c0ab>] ext3_mkdir+0x0/0x2c6
[<c015f01c>] vfs_mkdir+0x6a/0xbc
[<c015f125>] sys_mkdir+0xb7/0xf6
[<c014558f>] sys_munmap+0x44/0x64
[<c0109167>] syscall_call+0x7/0xb
Code: 28 8b 54 24 2c 8b 5d 00 f6 45 18 04 8b 72 24 8b 3b 0f 85 d8 00 00
00 f6 07 02 0f 85 cf 00 00 00 b8 00 e0 ff ff 21 e0 83 40 14 01 <8b> 46
14 3b 45 00 0f 84 6e 01 00 00 b8 00 e0 ff ff 21 e0 83 40
<6>note: cvs[8960] exited with preempt_count 1
bad: scheduling while atomic!
Call Trace:
[<c011a503>] schedule+0x3f6/0x3fb
[<c0141b8c>] unmap_page_range+0x43/0x69
[<c0141d63>] unmap_vmas+0x1b1/0x209
[<c0145874>] exit_mmap+0x7c/0x190
[<c011bec4>] mmput+0x7b/0xe4
[<c011f9ec>] do_exit+0x120/0x3f8
[<c01188e4>] do_page_fault+0x0/0x459
[<c0109a06>] do_divide_error+0x0/0xfa
[<c0118a10>] do_page_fault+0x12c/0x459
[<c0189275>] ext3_mark_iloc_dirty+0x28/0x35
[<c01893aa>] ext3_mark_inode_dirty+0x4f/0x51
[<c0186087>] ext3_splice_branch+0x123/0x1da
[<c0152935>] bh_lru_install+0xaf/0xeb
[<c01188e4>] do_page_fault+0x0/0x459
[<c0109391>] error_code+0x2d/0x38
[<c015007b>] vfs_read+0xef/0x119
[<c0194e8f>] journal_dirty_metadata+0x41/0x207
[<c0152a7a>] __getblk+0x2b/0x51
[<c0151389>] wake_up_buffer+0xf/0x26
[<c0186674>] ext3_getblk+0xdb/0x284
[<c0186850>] ext3_bread+0x33/0xb6
[<c018c17c>] ext3_mkdir+0xd1/0x2c6
[<c018c0ab>] ext3_mkdir+0x0/0x2c6
[<c015f01c>] vfs_mkdir+0x6a/0xbc
[<c015f125>] sys_mkdir+0xb7/0xf6
[<c014558f>] sys_munmap+0x44/0x64
[<c0109167>] syscall_call+0x7/0xb
Any ideas?
-Josh
--
Using words to describe magic is like using a screwdriver to cut roast beef.
-- Tom Robbins
Whoever changed this:
-volatile u8 cpu_2_logical_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID };
+u8 cpu_2_logical_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID };
needs to grep for all occurences through subarch, etc. eg:
mach-bigsmp/mach_apic.h:extern volatile u8 cpu_2_logical_apicid[];
mach-es7000/mach_apic.h:extern volatile u8 cpu_2_logical_apicid[];
mach-numaq/mach_apic.h:extern volatile u8 cpu_2_logical_apicid[];
mach-summit/mach_apic.h:extern volatile u8 cpu_2_logical_apicid[];
There may be other similar problems, but this should fix up those at least.
diff -urN linux-2.6.0-test1-mm2/include/asm-i386/mach-bigsmp/mach_apic.h baddog/include/asm-i386/mach-bigsmp/mach_apic.h
--- linux-2.6.0-test1-mm2/include/asm-i386/mach-bigsmp/mach_apic.h 2003-07-19 20:49:36.000000000 -0700
+++ baddog/include/asm-i386/mach-bigsmp/mach_apic.h 2003-07-19 20:51:58.000000000 -0700
@@ -94,7 +94,7 @@
return physid_mask_of_physid(phys_apicid);
}
-extern volatile u8 cpu_2_logical_apicid[];
+extern u8 cpu_2_logical_apicid[];
/* Mapping from cpu number to logical apicid */
static inline int cpu_to_logical_apicid(int cpu)
{
diff -urN linux-2.6.0-test1-mm2/include/asm-i386/mach-es7000/mach_apic.h baddog/include/asm-i386/mach-es7000/mach_apic.h
--- linux-2.6.0-test1-mm2/include/asm-i386/mach-es7000/mach_apic.h 2003-07-19 20:49:36.000000000 -0700
+++ baddog/include/asm-i386/mach-es7000/mach_apic.h 2003-07-19 20:52:20.000000000 -0700
@@ -119,7 +119,7 @@
return mask;
}
-extern volatile u8 cpu_2_logical_apicid[];
+extern u8 cpu_2_logical_apicid[];
/* Mapping from cpu number to logical apicid */
static inline int cpu_to_logical_apicid(int cpu)
{
diff -urN linux-2.6.0-test1-mm2/include/asm-i386/mach-numaq/mach_apic.h baddog/include/asm-i386/mach-numaq/mach_apic.h
--- linux-2.6.0-test1-mm2/include/asm-i386/mach-numaq/mach_apic.h 2003-07-19 20:49:36.000000000 -0700
+++ baddog/include/asm-i386/mach-numaq/mach_apic.h 2003-07-19 20:52:43.000000000 -0700
@@ -57,7 +57,7 @@
}
/* Mapping from cpu number to logical apicid */
-extern volatile u8 cpu_2_logical_apicid[];
+extern u8 cpu_2_logical_apicid[];
static inline int cpu_to_logical_apicid(int cpu)
{
return (int)cpu_2_logical_apicid[cpu];
diff -urN linux-2.6.0-test1-mm2/include/asm-i386/mach-summit/mach_apic.h baddog/include/asm-i386/mach-summit/mach_apic.h
--- linux-2.6.0-test1-mm2/include/asm-i386/mach-summit/mach_apic.h 2003-07-19 20:49:36.000000000 -0700
+++ baddog/include/asm-i386/mach-summit/mach_apic.h 2003-07-19 20:53:06.000000000 -0700
@@ -77,7 +77,7 @@
}
/* Mapping from cpu number to logical apicid */
-extern volatile u8 cpu_2_logical_apicid[];
+extern u8 cpu_2_logical_apicid[];
static inline int cpu_to_logical_apicid(int cpu)
{
return (int)cpu_2_logical_apicid[cpu];
On Sunday 20 July 2003 5:29 am, Joshua Kwan wrote:
> On Sat, Jul 19, 2003 at 07:41:02PM -0700, Joshua Kwan wrote:
> > 2.6.0-test1-mm2 requires attached patch to build with software suspend.
>
> That and it just spilled its guts all over me.
>
> Unable to handle kernel NULL pointer dereference at virtual address
> 00000014 printing eip:
> c0194e8f
> *pde = 00000000
> Oops: 0000 [#1]
> PREEMPT
> CPU: 0
> EIP: 0060:[<c0194e8f>] Not tainted VLI
> EFLAGS: 00210202
> EIP is at journal_dirty_metadata+0x41/0x207
> eax: c0a6e000 ebx: cf4b3e00 ecx: 00000000 edx: cf96ef60
> esi: 00000000 edi: cf732e80 ebp: cf96a910 esp: c0a6fe78
> ds: 007b es: 007b ss: 0068
> Process cvs (pid: 8960, threadinfo=c0a6e000 task=c7d01940)
> Stack: c1373600 cf85bb90 c0152a7a c0151389 cf96ef60 cf96ef60 cf96a910
> 00000001 cf85bb90 c0186674 cf96a910 cf96ef60 00001000 c0a6febc 00000001
> 00000001 00000000 00000030 00000000 00000000 0000001a 000e0224 cf955ed0
> 00004000 Call Trace:
> [<c0152a7a>] __getblk+0x2b/0x51
> [<c0151389>] wake_up_buffer+0xf/0x26
> [<c0186674>] ext3_getblk+0xdb/0x284
> [<c0186850>] ext3_bread+0x33/0xb6
> [<c018c17c>] ext3_mkdir+0xd1/0x2c6
> [<c018c0ab>] ext3_mkdir+0x0/0x2c6
> [<c015f01c>] vfs_mkdir+0x6a/0xbc
> [<c015f125>] sys_mkdir+0xb7/0xf6
> [<c014558f>] sys_munmap+0x44/0x64
> [<c0109167>] syscall_call+0x7/0xb
>
> Code: 28 8b 54 24 2c 8b 5d 00 f6 45 18 04 8b 72 24 8b 3b 0f 85 d8 00 00
> 00 f6 07 02 0f 85 cf 00 00 00 b8 00 e0 ff ff 21 e0 83 40 14 01 <8b> 46
> 14 3b 45 00 0f 84 6e 01 00 00 b8 00 e0 ff ff 21 e0 83 40
> <6>note: cvs[8960] exited with preempt_count 1
> bad: scheduling while atomic!
> Call Trace:
> [<c011a503>] schedule+0x3f6/0x3fb
> [<c0141b8c>] unmap_page_range+0x43/0x69
> [<c0141d63>] unmap_vmas+0x1b1/0x209
> [<c0145874>] exit_mmap+0x7c/0x190
> [<c011bec4>] mmput+0x7b/0xe4
> [<c011f9ec>] do_exit+0x120/0x3f8
> [<c01188e4>] do_page_fault+0x0/0x459
> [<c0109a06>] do_divide_error+0x0/0xfa
> [<c0118a10>] do_page_fault+0x12c/0x459
> [<c0189275>] ext3_mark_iloc_dirty+0x28/0x35
> [<c01893aa>] ext3_mark_inode_dirty+0x4f/0x51
> [<c0186087>] ext3_splice_branch+0x123/0x1da
> [<c0152935>] bh_lru_install+0xaf/0xeb
> [<c01188e4>] do_page_fault+0x0/0x459
> [<c0109391>] error_code+0x2d/0x38
> [<c015007b>] vfs_read+0xef/0x119
> [<c0194e8f>] journal_dirty_metadata+0x41/0x207
> [<c0152a7a>] __getblk+0x2b/0x51
> [<c0151389>] wake_up_buffer+0xf/0x26
> [<c0186674>] ext3_getblk+0xdb/0x284
> [<c0186850>] ext3_bread+0x33/0xb6
> [<c018c17c>] ext3_mkdir+0xd1/0x2c6
> [<c018c0ab>] ext3_mkdir+0x0/0x2c6
> [<c015f01c>] vfs_mkdir+0x6a/0xbc
> [<c015f125>] sys_mkdir+0xb7/0xf6
> [<c014558f>] sys_munmap+0x44/0x64
> [<c0109167>] syscall_call+0x7/0xb
>
> Any ideas?
>
> -Josh
Have hit this a few times already in -mm2. Always happens under reasonably
heavy disk load on an ext3 mount. I've gone back to -mm1 since just about all
compile jobs fail on this kernel.
Here's my oops:
Unable to handle kernel NULL pointer dereference at virtual address 00000014
printing eip:
c019d4c8
*pde = 00000000
Oops: 0000 [#1]
PREEMPT
CPU: 0
EIP: 0060:[<c019d4c8>] Not tainted VLI
EFLAGS: 00010202
EIP is at journal_dirty_metadata+0x38/0x210
eax: d469e000 ebx: 00000000 ecx: 00000000 edx: d53ffb68
esi: db387440 edi: c16cb9c0 ebp: d6b503e4 esp: d469fe64
ds: 007b es: 007b ss: 0068
Process mkdir (pid: 20706, threadinfo=d469e000 task=d5376650)
Stack: c01560a7 c17d3740 001b91a6 c01546df d53ffb68 d53ffb68 d6b503e4 00000001
d34ad248 c018ef57 d6b503e4 d53ffb68 00000000 00001000 d469feac 00000001
00000001 00000000 00000030 c018d603 dda75890 d34ad248 001b91a6 00000000
Call Trace:
[<c01560a7>] __getblk+0x37/0x70
[<c01546df>] wake_up_buffer+0xf/0x30
[<c018ef57>] ext3_getblk+0x127/0x2c0
[<c018d603>] ext3_new_inode+0x1b3/0x700
[<c018f123>] ext3_bread+0x33/0xc0
[<c0194fd6>] ext3_mkdir+0x106/0x2e0
[<c0194ed0>] ext3_mkdir+0x0/0x2e0
[<c01635fa>] vfs_mkdir+0x6a/0xc0
[<c0163716>] sys_mkdir+0xc6/0x100
[<c0146612>] sys_brk+0x112/0x120
[<c010ac6b>] syscall_call+0x7/0xb
Code: 24 2c f6 45 18 04 8b 75 00 8b 5a 28 8b 3e 0f 84 df 01 00 00 b8 01 00 00
00 85 c0 0f 85 d1 00 00 00 b8 00 e0 ff ff 21 e0 ff 40 14 <8b> 43 14 3b 45 00
0f 84 6c 01 00 00 b8 00 e0 ff ff 21 e0 ff 40
<6>note: mkdir[20706] exited with preempt_count 1
bad: scheduling while atomic!
Call Trace:
[<c011b286>] schedule+0x3f6/0x400
[<c0143ef3>] unmap_page_range+0x43/0x70
[<c01440e0>] unmap_vmas+0x1c0/0x220
[<c0147ecb>] exit_mmap+0x7b/0x190
[<c011ce3a>] mmput+0x7a/0xf0
[<c0120c2b>] do_exit+0x12b/0x3d0
[<c010b4bc>] die+0xfc/0x100
[<c011967a>] do_page_fault+0x14a/0x453
[<c0191dd8>] ext3_mark_iloc_dirty+0x28/0x40
[<c0191f20>] ext3_mark_inode_dirty+0x50/0x60
[<c018e8af>] ext3_splice_branch+0x11f/0x1e0
[<c0155f29>] bh_lru_install+0xa9/0xe0
[<c0119530>] do_page_fault+0x0/0x453
[<c010ae15>] error_code+0x2d/0x38
[<c019d4c8>] journal_dirty_metadata+0x38/0x210
[<c01560a7>] __getblk+0x37/0x70
[<c01546df>] wake_up_buffer+0xf/0x30
[<c018ef57>] ext3_getblk+0x127/0x2c0
[<c018d603>] ext3_new_inode+0x1b3/0x700
[<c018f123>] ext3_bread+0x33/0xc0
[<c0194fd6>] ext3_mkdir+0x106/0x2e0
[<c0194ed0>] ext3_mkdir+0x0/0x2e0
[<c01635fa>] vfs_mkdir+0x6a/0xc0
[<c0163716>] sys_mkdir+0xc6/0x100
[<c0146612>] sys_brk+0x112/0x120
[<c010ac6b>] syscall_call+0x7/0xb
Michael Morris <[email protected]> wrote:
>
> Here's my oops:
>
> Unable to handle kernel NULL pointer dereference at virtual address 00000014
> EIP is at journal_dirty_metadata+0x38/0x210
OK, bad bug. This should fix it.
fs/ext3/inode.c | 16 +++++++---------
1 files changed, 7 insertions(+), 9 deletions(-)
diff -puN fs/ext3/inode.c~ext3_getblk-race-fix-fix fs/ext3/inode.c
--- 25/fs/ext3/inode.c~ext3_getblk-race-fix-fix 2003-07-19 22:59:50.000000000 -0700
+++ 25-akpm/fs/ext3/inode.c 2003-07-19 23:07:42.000000000 -0700
@@ -936,19 +936,17 @@ struct buffer_head *ext3_getblk(handle_t
ext3_get_block instead, so it's not a
problem. */
lock_buffer(bh);
- if (!buffer_uptodate(bh)) {
- BUFFER_TRACE(bh, "call get_create_access");
- fatal = ext3_journal_get_create_access(handle, bh);
- if (!fatal) {
- memset(bh->b_data, 0,
- inode->i_sb->s_blocksize);
- set_buffer_uptodate(bh);
- }
+ BUFFER_TRACE(bh, "call get_create_access");
+ fatal = ext3_journal_get_create_access(handle, bh);
+ if (!fatal && !buffer_uptodate(bh)) {
+ memset(bh->b_data, 0, inode->i_sb->s_blocksize);
+ set_buffer_uptodate(bh);
}
unlock_buffer(bh);
BUFFER_TRACE(bh, "call ext3_journal_dirty_metadata");
err = ext3_journal_dirty_metadata(handle, bh);
- if (!fatal) fatal = err;
+ if (!fatal)
+ fatal = err;
} else {
BUFFER_TRACE(bh, "not a new buffer");
}
_