Skip to contentSkip to conversation

2.6.7: preempt + sysfs = BUG on ppc

DISCUSSION Tom Vier 2 participants 5 messages Jun 20, 2004 – Jun 23, 2004 Driver core

lore
Share & tools
lore

Tom Vier

author
#0 lore raw

i forgot to exclude /sys when i ran rsync. this is easily reproducable.

kernel BUG in fill_read_buffer at fs/sysfs/file.c:92!

Oops: Exception in kernel mode, sig: 5 [#1]

PREEMPT
NIP: C009687C LR: C0096870 SP: D1587EA0 REGS: d1587df0 TRAP: 0700 Not tainted
MSR: 00029032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c07b4060[879] 'rsync' THREAD: d1586000Last syscall: 3
GPR00: 00000001 D1587EA0 C07B4060 FFFFFFEA C7E38000 D327F000 00007F11 00000000
GPR08: 00000000 00000000 00000000 D1586000 20002442 1004CFE4 00000000 00000000
GPR16: 00001000 10040000 10040000 10040000 10040000 00000003 00001000 00000000
GPR24: 00001000 00000000 00000000 00000000 C010E348 C0264BEC D1B64F1C C079F1A8 NIP [c009687c] fill_read_buffer+0x70/0xb4
LR [c0096870] fill_read_buffer+0x64/0xb4

Call trace:
 [c0096a28] sysfs_read_file+0x5c/0x78
 [c005ad68] vfs_read+0xdc/0x128
 [c005afd8] sys_read+0x40/0x74
 [c0005b20] ret_from_syscall+0x0/0x44

kernel BUG in fill_read_buffer at fs/sysfs/file.c:92!

Oops: Exception in kernel mode, sig: 5 [#2]

PREEMPT
NIP: C009687C LR: C0096870 SP: C577FEA0 REGS: c577fdf0 TRAP: 0700 Not tainted
MSR: 00029032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c07b4060[1230] 'rsync' THREAD: c577e000Last syscall: 3
GPR00: 00000001 C577FEA0 C07B4060 FFFFFFEA C4828000 D327F000 00007F11 00000000
GPR08: 00000000 00000000 00000000 C577E000 20002442 1004CFE4 00000000 00000000
GPR16: 00001000 10040000 10040000 10040000 10040000 00000003 00001000 00000000
GPR24: 00001000 00000000 00000000 00000000 C010E348 C0264BEC D1B6433C C079F1A8 NIP [c009687c] fill_read_buffer+0x70/0xb4
LR [c0096870] fill_read_buffer+0x64/0xb4

Call trace:
 [c0096a28] sysfs_read_file+0x5c/0x78
 [c005ad68] vfs_read+0xdc/0x128
 [c005afd8] sys_read+0x40/0x74
 [c0005b20] ret_from_syscall+0x0/0x44
Signature · 2 lines
Tom Vier <[email protected]>
DSA Key ID 0x15741ECE
#1 lore raw
Quoted 4 lines · Tom Vier

i forgot to exclude /sys when i ran rsync. this is easily reproducable.

kernel BUG in fill_read_buffer at fs/sysfs/file.c:92!

Please add this patch, then retest:

fs/sysfs/file.c renamed from fs/sysfs/file.c~sysfs-overflow-debug +9 -1
@@ -5,6 +5,8 @@
 #include <linux/module.h>
 #include <linux/dnotify.h>
 #include <linux/kobject.h>
+#include <linux/kallsyms.h>
+
 #include <asm/uaccess.h>
 
 #include "sysfs.h"
@@ -83,7 +85,13 @@ static int fill_read_buffer(struct file 
 		return -ENOMEM;
 
 	count = ops->show(kobj,attr,buffer->page);
-	BUG_ON(count > PAGE_SIZE);
+	if (count > PAGE_SIZE) {
+		printk("%s: show handler overrun\n", __FUNCTION__);
+		printk("->show handler: 0x%p",  ops->show);
+		print_symbol(" (%s)", (unsigned long)ops->show);
+		printk("\n");
+		BUG();
+	}
 	if (count >= 0)
 		buffer->count = count;
 	else

_

author
#2 lore raw

fs/sysfs/file.c

Quoted 6 lines · Andrew Morton
Quoted 1 line

kernel BUG in fill_read_buffer at fs/sysfs/file.c:92!

Please add this patch, then retest:

fs/sysfs/file.c renamed from fs/sysfs/file.c~sysfs-overflow-debug +0 -0

here ya go. it's /sys/class/net/eth1/wireless/beacon. that's for my airport card (apple branded lucent chip). i would look at its sysfs code, but i'm not familiar with it at all (and i'm busy).

fill_read_buffer: show handler overrun
->show handler: 0xc010e38c (class_device_attr_show+0x0/0x48) kernel BUG in fill_read_buffer at fs/sysfs/file.c:99!

Oops: Exception in kernel mode, sig: 5 [#1]

PREEMPT
NIP: C00968EC LR: C00968EC SP: D19A7EA0 REGS: d19a7df0 TRAP: 0700 Not tainted
MSR: 00029032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = d1366d80[878] 'rsync' THREAD: d19a6000Last syscall: 3
GPR00: C00968EC D19A7EA0 D1366D80 00000001 00001AE3 FFFFFFFF C02D9674 C02D970C
GPR08: 0019377F C0290000 00000000 D19A6000 80008424 1004CFE4 00000000 00000004
GPR16: 10057B08 10040000 10057880 00000000 00001000 FFFFFFFF 00001000 00000000
GPR24: 00001000 00000000 00000000 00000000 C025DFCC CB2598FC C079F1A8 FFFFFFEA NIP [c00968ec] fill_read_buffer+0xe0/0xf8
LR [c00968ec] fill_read_buffer+0xe0/0xf8

Call trace:
 [c0096a6c] sysfs_read_file+0x5c/0x78
 [c005ad68] vfs_read+0xdc/0x128
 [c005afd8] sys_read+0x40/0x74
 [c0005b20] ret_from_syscall+0x0/0x44
Signature · 2 lines
Tom Vier <[email protected]>
DSA Key ID 0x15741ECE
#3 lore raw
Quoted 4 lines · Tom Vier
Quoted 2 lines · Andrew Morton
Quoted 1 line

kernel BUG in fill_read_buffer at fs/sysfs/file.c:92!

Quoted 8 lines

fs/sysfs/file.c

Quoted 4 lines

Please add this patch, then retest:

fs/sysfs/file.c renamed from fs/sysfs/file.c~sysfs-overflow-debug +0 -0

here ya go. it's /sys/class/net/eth1/wireless/beacon. that's for my airport card (apple branded lucent chip). i would look at its sysfs code, but i'm not familiar with it at all (and i'm busy).

What device driver is this thing using?

Quoted 24 lines

fill_read_buffer: show handler overrun
->show handler: 0xc010e38c (class_device_attr_show+0x0/0x48) kernel BUG in fill_read_buffer at fs/sysfs/file.c:99!

Oops: Exception in kernel mode, sig: 5 [#1]

PREEMPT
NIP: C00968EC LR: C00968EC SP: D19A7EA0 REGS: d19a7df0 TRAP: 0700 Not tainted
MSR: 00029032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = d1366d80[878] 'rsync' THREAD: d19a6000Last syscall: 3
GPR00: C00968EC D19A7EA0 D1366D80 00000001 00001AE3 FFFFFFFF C02D9674 C02D970C
GPR08: 0019377F C0290000 00000000 D19A6000 80008424 1004CFE4 00000000 00000004
GPR16: 10057B08 10040000 10057880 00000000 00001000 FFFFFFFF 00001000 00000000
GPR24: 00001000 00000000 00000000 00000000 C025DFCC CB2598FC C079F1A8 FFFFFFEA NIP [c00968ec] fill_read_buffer+0xe0/0xf8
LR [c00968ec] fill_read_buffer+0xe0/0xf8

Call trace:
 [c0096a6c] sysfs_read_file+0x5c/0x78
 [c005ad68] vfs_read+0xdc/0x128
 [c005afd8] sys_read+0x40/0x74
 [c0005b20] ret_from_syscall+0x0/0x44
Signature · 2 lines
Tom Vier <[email protected]>
DSA Key ID 0x15741ECE
author
#4 lore raw
Quoted 5 lines · Andrew Morton
Quoted 3 lines

here ya go. it's /sys/class/net/eth1/wireless/beacon. that's for my airport card (apple branded lucent chip). i would look at its sysfs code, but i'm not familiar with it at all (and i'm busy).

What device driver is this thing using?

hermes.

Signature · 2 lines
Tom Vier <[email protected]>
DSA Key ID 0x15741ECE