aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/slub_def.h
diff options
context:
space:
mode:
authorAaro Koskinen <aaro.koskinen@nokia.com>2009-08-28 07:28:54 -0400
committerPekka Enberg <penberg@cs.helsinki.fi>2009-08-30 07:56:48 -0400
commitacdfcd04d9df7d084ff752f82afad6ed4ad5f363 (patch)
treeedee979b012067348978d7ea23a58acd4b532a7d /include/linux/slub_def.h
parentcf5d11317e8f2671d3115622aec76274a40f4fc2 (diff)
SLUB: fix ARCH_KMALLOC_MINALIGN cases 64 and 256
If the minalign is 64 bytes, then the 96 byte cache should not be created because it would conflict with the 128 byte cache. If the minalign is 256 bytes, patching the size_index table should not result in a buffer overrun. The calculation "(i - 1) / 8" used to access size_index[] is moved to a separate function as suggested by Christoph Lameter. Acked-by: Christoph Lameter <cl@linux-foundation.org> Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com> Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Diffstat (limited to 'include/linux/slub_def.h')
-rw-r--r--include/linux/slub_def.h6
1 files changed, 2 insertions, 4 deletions
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
index 4dcbc2c71491..aa5d4a69d461 100644
--- a/include/linux/slub_def.h
+++ b/include/linux/slub_def.h
@@ -152,12 +152,10 @@ static __always_inline int kmalloc_index(size_t size)
152 if (size <= KMALLOC_MIN_SIZE) 152 if (size <= KMALLOC_MIN_SIZE)
153 return KMALLOC_SHIFT_LOW; 153 return KMALLOC_SHIFT_LOW;
154 154
155#if KMALLOC_MIN_SIZE <= 64 155 if (KMALLOC_MIN_SIZE <= 32 && size > 64 && size <= 96)
156 if (size > 64 && size <= 96)
157 return 1; 156 return 1;
158 if (size > 128 && size <= 192) 157 if (KMALLOC_MIN_SIZE <= 64 && size > 128 && size <= 192)
159 return 2; 158 return 2;
160#endif
161 if (size <= 8) return 3; 159 if (size <= 8) return 3;
162 if (size <= 16) return 4; 160 if (size <= 16) return 4;
163 if (size <= 32) return 5; 161 if (size <= 32) return 5;