[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1233763938.15119.92.camel@desktop>
Date: Wed, 04 Feb 2009 08:12:18 -0800
From: Daniel Walker <dwalker@...o99.com>
To: Luca Olivetti <luca@...toso.org>
Cc: Ingo Molnar <mingo@...e.hu>, Greg KH <gregkh@...e.de>,
Mauro Carvalho Chehab <mchehab@...radead.org>,
linux-kernel@...r.kernel.org, Hans Verkuil <hverkuil@...all.nl>,
Janne Grunau <janne-dvb@...nau.be>
Subject: Re: [crash] af9005_usb_module_init(): BUG: unable to handle kernel
paging request at ff100000
On Wed, 2009-02-04 at 16:49 +0100, Luca Olivetti wrote:
>
> No, I havent: the source file isn't compiled, so those symbols are
> unavailable to the linker.
> The only reference I could find (well, I haven't searched that much) on
> the expected behaviour of the linker when a weak attribute is not found
> is this:
>
> http://software.intel.com/en-us/articles/software-convention-models-using-elf-visibility-attributes/
>
> "# STB_WEAK. A weak symbol behaves as does a global symbol, with a few
> differences. If there are both a weak and a global definition of a name,
> the global definition takes precedence and any weak definitions are
> ignored. The Linker will not extract archive members to resolve
> undefined weak symbols. It is not an error to have unresolved weak
> references; unresolved weak symbols have the value zero. "
I wrote a little test to see if this was true in gcc, and it does appear
to give a NULL in a simple case. However, after reviewing Ingo's
disassmbled function it look like the crash is happening on this line,
/* module stuff */
static int __init af9005_usb_module_init(void)
{
int result;
if ((result = usb_register(&af9005_usb_driver))) {
err("usb_register failed. (%d)", result);
return result;
}
rc_decode = symbol_request(af9005_rc_decode);
rc_keys = symbol_request(af9005_rc_keys);
rc_keys_size = symbol_request(af9005_rc_keys_size);
if (rc_decode == NULL || rc_keys == NULL || rc_keys_size == NULL) {
err("af9005_rc_decode function not found, disabling remote");
af9005_properties.rc_query = NULL;
} else {
af9005_properties.rc_key_map = rc_keys;
af9005_properties.rc_key_map_size = *rc_keys_size; /* <= crash !!! */
}
return 0;
}
That line should never run if everything is NULL ..
Daniel
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists