Re: 2.6.14-rc2-mm2

From: Alexander Zarochentsev
Date: Fri Sep 30 2005 - 04:20:01 EST


On Friday 30 September 2005 12:45, Laurent Riffard wrote:
> Le 30.09.2005 01:54, Brice Goglin a écrit :
> > Le 30.09.2005 01:40, Michal Piotrowski a écrit :
> >>It maybe a problem with gentoo gcc.
> >
> > I'm seeing the same error with Debian gcc4.
> >
> > bgoglin@puligny:/usr/src/linux-mm$ gcc --version
> > gcc (GCC) 4.0.1 (Debian 4.0.1-2)
> >
> > By the way, the error appears when compiling
> > CC [M] fs/reiser4/debug.o
> > while DEBUG is disabled for REISER4.
> >
> > My .config attached
> > Note that Alexandre forgot to reenable Reiser4 in the .config he sent.
> >
> > Regards,
> > Brice
>
> It seems to appear when CONFIG_SMP=N and CONFIG_DEBUG_SPINLOCK=N and
> CONFIG_REISER4_DEBUG=N.
>
> In this case, spinlock_t is an empty struct (see
> include/linux/spinlock_types.h and
> include/linux/spinlock_types_up.h). Then sizeof(spinlock_t) _is_ 0,
> and this breaks some code like cassert calls from
> fs/reiser4/spin_macros.h line 85 (FIELD is a spinlock_t) :
> 82 static inline void spin_ ## NAME ## _init(TYPE *x) \
> 83 { \
>
> 84 __ODCA("nikita-2987", x != NULL); \
> 85 cassert(sizeof(x->FIELD) != 0); \
>
> 86 memset(& x->FIELD, 0, sizeof x->FIELD); \
>
> 87 spin_lock_init(& x->FIELD.lock); \
>
> 88 } \
>
> 89

correct.

the code will be reworked soon,
a hot fix for now is:

-----------------------------------
diff --git a/spin_macros.h b/spin_macros.h
--- a/spin_macros.h
+++ b/spin_macros.h
@@ -82,8 +82,6 @@ typedef struct reiser4_rw_data {
static inline void spin_ ## NAME ## _init(TYPE *x) \
{ \
__ODCA("nikita-2987", x != NULL); \
- cassert(sizeof(x->FIELD) != 0); \
- memset(& x->FIELD, 0, sizeof x->FIELD); \
spin_lock_init(& x->FIELD.lock); \
} \
\
@@ -236,7 +234,6 @@ typedef struct { int foo; } NAME ## _spi
static inline void rw_ ## NAME ## _init(TYPE *x) \
{ \
__ODCA("nikita-2988", x != NULL); \
- memset(& x->FIELD, 0, sizeof x->FIELD); \
rwlock_init(& x->FIELD.lock); \
} \
\
-----------------------------------

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