[Xenomai-core] rtdm_dev_register oops

2010-05-18 Thread Stefan Kisdaroczi
hi,

i got a exception in rtdm_dev_register(). I didnt call rtdm_dev_unregister in 
my driver
and after insmodding the module again I got a oops.
xenomai 2.5.3, linux 2.6.32.11, x86 32bit, ubuntu 10.04.

Attached is the dmesg-trace and a small rtdm-module foo.c for reproduction:
insmod ./xeno_foo.ko
rmmod xeno_foo
insmod ./xeno_foo.ko - oops

thanks
stefan
UNAME := $(shell uname -r)
PWD   := $(shell pwd)

LINUXSOURCEDIR:= /usr/src/linux-headers-$(UNAME)

obj-m := xeno_foo.o
xeno_foo-y:= foo.o
EXTRA_CFLAGS  := -I/usr/src/linux-headers-$(UNAME)/include/xenomai

all::
$(MAKE) -C $(LINUXSOURCEDIR) SUBDIRS=$(PWD) modules

clean::
$(RM) .*.cmd *.cmd *.o *.ko *.mod.c *.order *.symvers
$(RM) -R .tmp*

.PHONY: clean


#include linux/module.h
#include rtdm/rtdm_driver.h

MODULE_AUTHOR( Stefan Kisdaroczi );
MODULE_LICENSE( GPL );


int foo_open_nrt( struct rtdm_dev_context *context,
 rtdm_user_info_t *user_info,
 int oflags ) {
return 0;
}

int foo_close_nrt( struct rtdm_dev_context *context,
  rtdm_user_info_t *user_info ) {
return 0;
}

struct rtdm_device foo_rtdm_device = {
device_flags:   RTDM_NAMED_DEVICE,
device_class:   RTDM_CLASS_EXPERIMENTAL,
device_sub_class:   RTDM_SUBCLASS_GENERIC,
device_name:foo0,
proc_name:  foo0,
device_id:  0,

open_nrt :  foo_open_nrt,
ops: {
close_nrt:  foo_close_nrt,
},
};


int __init foo_init( void ) {
return rtdm_dev_register( foo_rtdm_device );
}

void __exit foo_exit( void ) {
/* rtdm_dev_unregister( foo_rtdm_device, 1000 ); */
}

module_init( foo_init );
module_exit( foo_exit );
[  185.000326] BUG: unable to handle kernel NULL pointer dereference at (null)
[  185.000340] IP: [c01f873a] rtdm_dev_register+0x2ea/0x470
[  185.000358] *pde =  
[  185.000365] Oops:  [#1] SMP 
[  185.000373] last sysfs file: 
/sys/devices/pci:00/:00:02.0/:01:00.2/:03:0d.0/host4/target4:0:1/4:0:1:0/block/sdb/uevent
[  185.000381] Modules linked in: xeno_foo(+) snd_intel8x0 snd_ac97_codec 
ac97_bus snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy hisax crc_ccitt isdn 
snd_seq_oss com20020_pci snd_seq_midi snd_rawmidi snd_seq_midi_event com20020 
arcnet snd_seq snd_timer snd_seq_device psmouse e752x_edac snd shpchp ppdev 
soundcore serio_raw edac_core snd_page_alloc lp dcdbas parport_pc parport 
usbhid floppy hid aic79xx e1000 scsi_transport_spi [last unloaded: xeno_foo]
[  185.000468] 
[  185.000476] Pid: 2216, comm: insmod Not tainted (2.6.32.11-xenomai-2.5.3 #2) 
Precision WorkStation 470
[  185.000483] EIP: 0060:[c01f873a] EFLAGS: 00210202 CPU: 0
[  185.000491] EIP is at rtdm_dev_register+0x2ea/0x470
[  185.000498] EAX: 0001 EBX: 03a0 ECX: 03a0 EDX: f832e06c
[  185.000503] ESI:  EDI: f833f06c EBP: f6595f54 ESP: f6595f34
[  185.000509]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[  185.000515] Process insmod (pid: 2216, ti=f6594000 task=ecc1b340 
task.ti=f6594000)
[  185.000520] I-pipe domain Linux
[  185.000524] Stack:
[  185.000528]  c019ba17 f6595f54 c059b953 f833f060 03a0 fffc f833f120 

[  185.000544] 0 f6595f5c f834200d f6595f88 c0101132 f833f120 c07723a0 
fffc f833f120
[  185.000563] 0 b7815ff4 f8342000 fffc f833f120 b7815ff4 f6595fac 
c0175371 00200046
[  185.000583] Call Trace:
[  185.000594]  [c019ba17] ? tracepoint_module_notify+0x27/0x30
[  185.000605]  [c059b953] ? notifier_call_chain+0x43/0x60
[  185.000616]  [f834200d] ? foo_init+0xd/0xf [xeno_foo]
[  185.000627]  [c0101132] ? do_one_initcall+0x32/0x1b0
[  185.000636]  [f8342000] ? foo_init+0x0/0xf [xeno_foo]
[  185.000648]  [c0175371] ? sys_init_module+0xb1/0x220
[  185.000657]  [c0103145] ? sysenter_do_call+0x12/0x16
[  185.000663] Code: bf 92 c0 21 f1 c1 e1 03 89 4d f0 01 c8 8b 30 8b 16 0f 18 
02 90 39 f0 0f 84 c8 00 00 00 89 5d ec 89 cb eb 1c 90 8d 74 26 00 8b 36 8b 06 
0f 18 00 90 a1 c0 bf 92 c0 01 d8 39 c6 0f 84 a2 00 00 00 
[  185.000756] EIP: [c01f873a] rtdm_dev_register+0x2ea/0x470 SS:ESP 
0068:f6595f34
[  185.000767] CR2: 
[  185.000772] ---[ end trace dbaf656208b2cc62 ]---


signature.asc
Description: OpenPGP digital signature
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] rtdm_dev_register oops

2010-05-18 Thread Jan Kiszka
Stefan Kisdaroczi wrote:
 hi,
 
 i got a exception in rtdm_dev_register(). I didnt call rtdm_dev_unregister in 
 my driver
 and after insmodding the module again I got a oops.

And that is surprising to you? :)

If you leave the previous device registered on rmmod, oopses are
programmed to occur: You leave references to unallocated memory behind.

Jan

 xenomai 2.5.3, linux 2.6.32.11, x86 32bit, ubuntu 10.04.
 
 Attached is the dmesg-trace and a small rtdm-module foo.c for reproduction:
 insmod ./xeno_foo.ko
 rmmod xeno_foo
 insmod ./xeno_foo.ko - oops
 
 thanks
 stefan



signature.asc
Description: OpenPGP digital signature
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] rtdm_dev_register oops

2010-05-18 Thread Stefan Kisdaroczi
Am 18.05.2010 13:03, schrieb Jan Kiszka:
 Stefan Kisdaroczi wrote:
 hi,

 i got a exception in rtdm_dev_register(). I didnt call rtdm_dev_unregister 
 in my driver
 and after insmodding the module again I got a oops.
 
 And that is surprising to you? :)

A bit.

 If you leave the previous device registered on rmmod, oopses are
 programmed to occur: You leave references to unallocated memory behind.

If one device fails to unregister i can't register any other device anymore,
the rtdm registry is broken (cat /proc/xenomai/rtdm/names_devices hangs).
That was surprising. If I have one corrupt file on my disk i can still
create/access other files or list the filenames without exception.

Please don't get me wrong, but its not obvious for me that a registry
behaves like that, but i can life with it. Sorry for the noise.

Stefan

 Jan
 
 xenomai 2.5.3, linux 2.6.32.11, x86 32bit, ubuntu 10.04.

 Attached is the dmesg-trace and a small rtdm-module foo.c for reproduction:
 insmod ./xeno_foo.ko
 rmmod xeno_foo
 insmod ./xeno_foo.ko - oops

 thanks
 stefan
 




signature.asc
Description: OpenPGP digital signature
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] rtdm_dev_register oops

2010-05-18 Thread Jan Kiszka
Stefan Kisdaroczi wrote:
 Am 18.05.2010 13:03, schrieb Jan Kiszka:
 Stefan Kisdaroczi wrote:
 hi,

 i got a exception in rtdm_dev_register(). I didnt call rtdm_dev_unregister 
 in my driver
 and after insmodding the module again I got a oops.
 And that is surprising to you? :)
 
 A bit.
 
 If you leave the previous device registered on rmmod, oopses are
 programmed to occur: You leave references to unallocated memory behind.
 
 If one device fails to unregister i can't register any other device anymore,

Then you have to find the bug that prevents proper deregistration.

 the rtdm registry is broken (cat /proc/xenomai/rtdm/names_devices hangs).

That hanging of /proc output is fixed in a series of mine that is yet
unmerged (as it is on hold, waiting for /proc infrastructure
refactorings by Philippe).

 That was surprising. If I have one corrupt file on my disk i can still
 create/access other files or list the filenames without exception.

If your filesystem hangs due to some bug of its own or in the underlying
layers, you won't be able to touch any further file on that system as well.

 
 Please don't get me wrong, but its not obvious for me that a registry
 behaves like that, but i can life with it. Sorry for the noise.

Again, the problem is that the deregistration hangs. That needs to be
understood and resolved.

Jan



signature.asc
Description: OpenPGP digital signature
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core