-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi all,
i tried to get fusion running, but it oops. I have patched the the
sources for kzalloc (thx Tom for patch) but it oops again with the
follow message
Unable to handle kernel NULL pointer dereference at virtual address
00000000
printing eip:
c028b5f1
*pde = 00000000
Oops: 0000 [#1]
PREEMPT
Modules linked in: fusion nvidia pcmcia acx yenta_socket rsrc_nonstatic
pcmcia_core snd_intel8x0m snd_pcm_oss snd_mixer_oss snd_seq_dummy
snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_intel8x0
snd_ac97_codec snd_ac97_bus snd_pcm snd_timer snd snd_page_alloc
CPU: 0
EIP: 0060:[<c028b5f1>] Tainted: P VLI
EFLAGS: 00010283 (2.6.15)
EIP is at vsnprintf+0x2c/0x53d
eax: cfac89ef ebx: cfac8980 ecx: 00000000 edx: cfac898
esi: cfac89f0 edi: cfac8d80 ebp: cfac8a03 esp: ce8c1f18
ds: 007b es: 007b ss: 0068
Process modprobe (pid: 22393, threadinfo=ce8c0000 task=c1fc3a90)
Stack: c028879d cfac8d98 cfac8d98 00000286 00000000 c0288aa3 00000084
ffffffed
c0148cc7 00000084 000000d0 cfac8980 fffffff4 cfac8d80 ce8c0000
c0322e71
cfac89f0 00000014 00000000 ce8c1f8c 00000001 d1217f00 b7e74e9b
d10f707b
Call Trace:
[<c028879d>] kobject_add+0x7c/0xcb
[<c0288aa3>] kobject_put+0x1e/0x22
[<c0148cc7>] kzalloc+0x23/0x55
[<c0322e71>] class_device_create+0x95/0xcf
[<d10f707b>] register_devices+0x7b/0xc3 [fusion]
[<d10f70cb>] fusion_init+0x8/0x2f [fusion]
[<c01363f6>] sys_init_module+0x138/0x1f7
[<c0102fdb>] sysenter_past_esp+0x54/0x75
Code: 57 56 53 83 ec 2c 8b 44 24 44 85 c0 0f 88 e5 04 00 00 8b 74 24 40
8b 44 24 44 8d 6c 06 ff 89 f0 83 e8 01 39 e8 77 43 8b 4c 24 48 <80> 39
00 74 25 0f b6 01 3c 25 74 42 39 ee 77 06 88 06 8b 4c 24
The module is loaded and MultiCore works, but there no devices in /dev,
and i get a SegmentionFault.
Olli
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFDzQaDj/glEAdJRAMRAtelAJ9wOwX7Ssj7bSk+/hEr4Sjy1lGrgQCdG5nG
lhpiiy4sRVHqRQJ3JVZ/GF4=
=zub7
-----END PGP SIGNATURE-----
diff -Naur linux-fusion-1.1/linux/drivers/char/fusion/call.c linux-fusion-1.1-kzalloc/linux/drivers/char/fusion/call.c
--- linux-fusion-1.1/linux/drivers/char/fusion/call.c 2004-08-17 19:24:36.000000000 +0200
+++ linux-fusion-1.1-kzalloc/linux/drivers/char/fusion/call.c 2006-01-17 02:02:52.516802968 +0100
@@ -159,12 +159,10 @@
{
FusionCall *call;
- call = kmalloc (sizeof(FusionCall), GFP_KERNEL);
+ call = kzalloc (sizeof(FusionCall), GFP_KERNEL);
if (!call)
return -ENOMEM;
- memset (call, 0, sizeof(FusionCall));
-
if (down_interruptible (&dev->call.lock)) {
kfree (call);
return -EINTR;
@@ -423,13 +421,10 @@
FusionCallExecution *execution;
/* Allocate execution. */
- execution = kmalloc (sizeof(FusionCallExecution), GFP_KERNEL);
+ execution = kzalloc (sizeof(FusionCallExecution), GFP_KERNEL);
if (!execution)
return NULL;
- /* Initialize execution. */
- memset (execution, 0, sizeof(FusionCallExecution));
-
execution->caller = fusion_id;
init_waitqueue_head (&execution->wait);
diff -Naur linux-fusion-1.1/linux/drivers/char/fusion/entries.c linux-fusion-1.1-kzalloc/linux/drivers/char/fusion/entries.c
--- linux-fusion-1.1/linux/drivers/char/fusion/entries.c 2004-12-12 14:09:39.000000000 +0100
+++ linux-fusion-1.1-kzalloc/linux/drivers/char/fusion/entries.c 2006-01-17 02:04:15.020260536 +0100
@@ -36,8 +36,6 @@
FUSION_ASSERT( class != NULL );
FUSION_ASSERT( class->object_size >= sizeof(FusionEntry) );
- memset( entries, 0, sizeof(FusionEntries) );
-
entries->class = class;
entries->ctx = ctx;
@@ -158,12 +156,10 @@
class = entries->class;
- entry = kmalloc( class->object_size, GFP_KERNEL );
+ entry = kzalloc( class->object_size, GFP_KERNEL );
if (!entry)
return -ENOMEM;
- memset( entry, 0, class->object_size );
-
if (down_interruptible( &entries->lock )) {
kfree( entry );
return -EINTR;
diff -Naur linux-fusion-1.1/linux/drivers/char/fusion/fusiondev.c linux-fusion-1.1-kzalloc/linux/drivers/char/fusion/fusiondev.c
--- linux-fusion-1.1/linux/drivers/char/fusion/fusiondev.c 2005-09-13 16:32:25.000000000 +0200
+++ linux-fusion-1.1-kzalloc/linux/drivers/char/fusion/fusiondev.c 2006-01-17 02:04:49.798973368 +0100
@@ -250,14 +250,12 @@
if (!fusion_devs[minor]) {
char buf[4];
- fusion_devs[minor] = kmalloc (sizeof(FusionDev), GFP_KERNEL);
+ fusion_devs[minor] = kzalloc (sizeof(FusionDev), GFP_KERNEL);
if (!fusion_devs[minor]) {
up (&devs_lock);
return -ENOMEM;
}
- memset (fusion_devs[minor], 0, sizeof(FusionDev));
-
snprintf (buf, 4, "%d", minor);
fusion_devs[minor]->proc_dir = proc_mkdir (buf, proc_fusion_dir);
diff -Naur linux-fusion-1.1/linux/drivers/char/fusion/reactor.c linux-fusion-1.1-kzalloc/linux/drivers/char/fusion/reactor.c
--- linux-fusion-1.1/linux/drivers/char/fusion/reactor.c 2004-11-16 20:22:37.000000000 +0100
+++ linux-fusion-1.1-kzalloc/linux/drivers/char/fusion/reactor.c 2006-01-17 01:51:41.316840872 +0100
@@ -127,7 +127,7 @@
node = get_node (reactor, fusion_id);
if (!node) {
- node = kmalloc (sizeof(ReactorNode), GFP_KERNEL);
+ node = kzalloc (sizeof(ReactorNode), GFP_KERNEL);
if (!node) {
fusion_reactor_unlock( reactor );
return -ENOMEM;
diff -Naur linux-fusion-1.1/linux/drivers/char/fusion/ref.c linux-fusion-1.1-kzalloc/linux/drivers/char/fusion/ref.c
--- linux-fusion-1.1/linux/drivers/char/fusion/ref.c 2004-11-07 13:20:53.000000000 +0100
+++ linux-fusion-1.1-kzalloc/linux/drivers/char/fusion/ref.c 2006-01-17 02:05:50.502744992 +0100
@@ -169,12 +169,10 @@
{
FusionRef *ref;
- ref = kmalloc (sizeof(FusionRef), GFP_KERNEL);
+ ref = kzalloc (sizeof(FusionRef), GFP_KERNEL);
if (!ref)
return -ENOMEM;
- memset (ref, 0, sizeof(FusionRef));
-
if (down_interruptible (&dev->ref.lock)) {
kfree (ref);
return -EINTR;
@@ -607,7 +605,7 @@
}
}
- local = kmalloc (sizeof(LocalRef), GFP_KERNEL);
+ local = kzalloc (sizeof(LocalRef), GFP_KERNEL);
if (!local)
return -ENOMEM;
@@ -714,7 +712,7 @@
{
Inheritor *inheritor;
- inheritor = kmalloc (sizeof(Inheritor), GFP_KERNEL);
+ inheritor = kzalloc (sizeof(Inheritor), GFP_KERNEL);
if (!inheritor)
return -ENOMEM;
_______________________________________________
directfb-users mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users