2003-07-20 00:27:57

by Andrew Morton

[permalink] [raw]
Subject: 2.6.0-test1-mm2


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




2003-07-20 02:26:25

by Joshua Kwan

[permalink] [raw]
Subject: Re: 2.6.0-test1-mm2

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


Attachments:
(No filename) (0.00 B)
(No filename) (189.00 B)
Download all attachments

2003-07-20 04:11:12

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.0-test1-mm2

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".

2003-07-20 04:16:31

by David Miller

[permalink] [raw]
Subject: Re: 2.6.0-test1-mm2

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. :-)

2003-07-20 04:14:22

by Joshua Kwan

[permalink] [raw]
Subject: Re: 2.6.0-test1-mm2

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


Attachments:
(No filename) (2.62 kB)
(No filename) (189.00 B)
Download all attachments

2003-07-20 04:26:29

by Martin J. Bligh

[permalink] [raw]
Subject: Re: 2.6.0-test1-mm2

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];

2003-07-20 05:32:51

by Michael Morris

[permalink] [raw]
Subject: Re: 2.6.0-test1-mm2

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

2003-07-20 05:56:28

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.0-test1-mm2

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");
}

_