Re: 2.6.14-rc2-mm2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux