Messages in this thread | | | Date | Thu, 21 Oct 2004 10:09:03 +0100 | From | Russell King <> | Subject | Am I paranoid or is everyone out to break my kernel builds (Breakage in drivers/pcmcia) |
| |
It would appear that this change:
-module_param_array(irq_list, int, irq_list_count, 0444); +module_param_array(irq_list, int, &irq_list_count, 0444);
given:
static int irq_list[16]; static int irq_list_count;
breaks PCMCIA drivers. Why?
#define module_param_array(name, type, num, perm) \ module_param_array_named(name, name, type, num, perm)
#define module_param_array_named(name, array, type, num, perm) \ static struct kparam_array __param_arr_##name \ = { ARRAY_SIZE(array), &num, param_set_##type, param_get_##type,\ sizeof(array[0]), array }; \ module_param_call(name, param_array_set, param_array_get, \ &__param_arr_##name, perm)
Take special note of the '&' before 'num' in the above initialiser, and check the structure:
struct kparam_array { unsigned int max; unsigned int *num; param_set_fn set; param_get_fn get; unsigned int elemsize; void *elem; };
Therefore, module_param_array() does _NOT_ take a pointer to an integer. Rusty - please fix.
-- Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/ 2.6 Serial core - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |