Re: spinlock_t typedef visibility and uninitialized spinlock

From: Zwane Mwaikambo
Date: Mon Nov 01 2004 - 09:16:10 EST


On Mon, 1 Nov 2004, Carlos Vidal wrote:

> I'm porting CIPE 1.6.0 kernel module to Kernel 2.6.8 and had problems
> with "spin_is_locked on uninitialized spinlock".
>
> After tracing the problem I found that the spinlock_t structure is not
> visible to the module code. A 'gcc -E' yields:
> typedef struct { } spinlock_t;
>
> In spinlock.h, this declaration is inside a #ifdef
> CONFIG_DEBUG_SPINLOCK block, so it becomes visible only
> CONFIG_DEBUG_SPINLOCK is 'y'.
>
> If I turn CONFIG_DEBUG_SPINLOCK on, the module loads nicely. Otherwise
> I get a nasty error in syslog and sometimes a system crash, as if in
> CIPE the struct was not allocated (what is the case if the compiler
> uses the typedef as it is above).
>
> The question is: is this a bug or a feature? ;-)
>
> Should the declaration be out of the #ifdef CONFIG_DEBUG_SPINLOCK? Or
> should I use a special compiler flag?

Try including <linux/config.h> at the top of the compilation unit and run
through the preprocessor again. By the way, spinlock code got shuffled
around in 2.6.9...

Zwane

-
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/