David Brownell wrote:
>
> There are two problems I see.
>
> (1) CONFIG_SLAB_DEBUG breaks the documented
> requirement that the slab cache return adequately aligned
> data ...
adequately aligned for the _cpu_, not for some controllers. It's neither
documented that HW_CACHEALIGN aligns to 16 byte boundaries nor that
kmalloc uses HW_CACHEALIGN.
> which the appended patch should probably handle
> nicely (something like it sure did :-) and with less danger
> than the large patch you posted.
>
> (2) The USB host controller drivers all need something
> like a pci_consistent slab cache, which doesn't currently
> exist. I have something like that in the works, and David
> Miller noted one driver that I may steal from.
>
> - Dave
>
> --- slab.c-orig Tue Mar 6 15:01:26 2001
> +++ slab.c Tue Mar 6 15:05:58 2001
> @@ -676,12 +676,10 @@
> }
>
> #if DEBUG
> + /* redzoning would break cache alignment requirements */
> + if (flags & SLAB_HWCACHE_ALIGN)
> + flags &= ~SLAB_RED_ZONE;
The problem is that you've just disabled red zoning for kmalloc. And
kmalloc is the only case where redzoning is important: If a caller uses
kmem_cache_alloc() for a structure then he won't write beyond the end of
the structure.
I think everyone agrees that (2) correct fix.
I see 2 temporary workarounds: either your patch or
+ #ifdef CONFIG_SLAB_DEBUG
+ #error
+ #endif
in uhci.c.
-- Manfred - 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/
This archive was generated by hypermail 2b29 : Wed Mar 07 2001 - 21:00:22 EST