Re: [crash] af9005_usb_module_init(): BUG: unable to handle kernelpaging request at ff100000

From: Daniel Walker
Date: Wed Feb 04 2009 - 11:12:43 EST


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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/