Re: Kernel panic during SysRq-b on Alpha

From: Ivan Kokshaysky
Date: Thu Sep 22 2005 - 05:35:08 EST


On Thu, Sep 22, 2005 at 02:21:52AM -0700, Andrew Morton wrote:
> hm, you might need to do some special-casing around that function.

Maybe something like this?
I think this also makes more obvious how index_of() was
supposed to work.

Ivan.

--- 2.6.14-rc1/include/asm-alpha/compiler.h.inline Mon Aug 29 03:41:01 2005
+++ linux/include/asm-alpha/compiler.h Thu Sep 22 13:49:53 2005
@@ -98,6 +98,9 @@
#undef inline
#undef __inline__
#undef __inline
-
+#if __GNUC__ == 3 && __GNUC_MINOR__ >= 1 || __GNUC__ > 3
+#undef __always_inline
+#define __always_inline inline __attribute__((always_inline))
+#endif

#endif /* __ALPHA_COMPILER_H */
--- 2.6.14-rc1/mm/slab.c Tue Sep 13 14:16:37 2005
+++ linux/mm/slab.c Thu Sep 22 13:58:18 2005
@@ -308,12 +308,12 @@ struct kmem_list3 __initdata initkmem_li
#define SIZE_L3 (1 + MAX_NUMNODES)

/*
- * This function may be completely optimized away if
+ * This function must be completely optimized away if
* a constant is passed to it. Mostly the same as
* what is in linux/slab.h except it returns an
* index.
*/
-static inline int index_of(const size_t size)
+static __always_inline int index_of(const size_t size)
{
if (__builtin_constant_p(size)) {
int i = 0;
@@ -329,7 +329,8 @@ static inline int index_of(const size_t
extern void __bad_size(void);
__bad_size();
}
- }
+ } else
+ BUG();
return 0;
}

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