the sysfs interface from the rtc framework seems to incorrectly label the add function with __devinit ... the proc and dev interfaces do not have this label on their add functions ive been trying to develop a rtc module and it kept crashing ... after debugging it, i'm pretty sure ive traced it back to the devinit markings ... dropping this lets my module load nicely :) the crash would happen after my rtc called rtc_device_register ... down in class_device_add in drivers/base/class.c, the active class interface list is walked and the add function is checked ... if it's non-null (aka in some interface would like to be notified of additions), then it's called with the new device information on my board, this add pointer would seemingly point into garbage because the memory it refers to was freed by the kernel :( -mike
Attachment:
pgpYp3d9AMIPL.pgp
Description: PGP signature
rtc_sysfs_add_device is needed even after dev initialization, so drop __devinit. Signed-off-by: Mike Frysinger <[email protected]> diff --git a/drivers/rtc/rtc-sysfs.c b/drivers/rtc/rtc-sysfs.c index 9418a59..2ddd0cf 100644 --- a/drivers/rtc/rtc-sysfs.c +++ b/drivers/rtc/rtc-sysfs.c @@ -78,7 +78,7 @@ static struct attribute_group rtc_attr_group = { .attrs = rtc_attrs, }; -static int __devinit rtc_sysfs_add_device(struct class_device *class_dev, +static int rtc_sysfs_add_device(struct class_device *class_dev, struct class_interface *class_intf) { int err;
- Follow-Ups:
- Re: [patch] remove __devinit markings from rtc_sysfs_add_device()
- From: Alessandro Zummo <[email protected]>
- Re: [patch] remove __devinit markings from rtc_sysfs_add_device()
- Prev by Date: Re: [patch 3/3] clockevent driver for arm/pxa2xx
- Next by Date: Re: [PATCH] Undo some of the pseudo-security madness
- Previous by thread: Serial port blues
- Next by thread: Re: [patch] remove __devinit markings from rtc_sysfs_add_device()
- Index(es):