diff options
author | Christoph Lameter <cl@linux.com> | 2011-05-20 10:42:48 -0400 |
---|---|---|
committer | Pekka Enberg <penberg@kernel.org> | 2011-05-21 05:53:53 -0400 |
commit | 3e0c2ab67e48f77c2da0a5c826aac397792a214e (patch) | |
tree | 937d195659cb72bbd038907e36b23e5c0e7c262d /include | |
parent | 442b06bcea23a01934d3da7ec5898fa154a6cafb (diff) |
slub: Deal with hyperthetical case of PAGE_SIZE > 2M
kmalloc_index() currently returns -1 if the PAGE_SIZE is larger than 2M
which seems to cause some concern since the callers do not check for -1.
Insert a BUG() and add a comment to the -1 explaining that the code
cannot be reached.
Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/slub_def.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h index ca0c076b2374..c8668d161dd8 100644 --- a/include/linux/slub_def.h +++ b/include/linux/slub_def.h | |||
@@ -177,7 +177,8 @@ static __always_inline int kmalloc_index(size_t size) | |||
177 | if (size <= 4 * 1024) return 12; | 177 | if (size <= 4 * 1024) return 12; |
178 | /* | 178 | /* |
179 | * The following is only needed to support architectures with a larger page | 179 | * The following is only needed to support architectures with a larger page |
180 | * size than 4k. | 180 | * size than 4k. We need to support 2 * PAGE_SIZE here. So for a 64k page |
181 | * size we would have to go up to 128k. | ||
181 | */ | 182 | */ |
182 | if (size <= 8 * 1024) return 13; | 183 | if (size <= 8 * 1024) return 13; |
183 | if (size <= 16 * 1024) return 14; | 184 | if (size <= 16 * 1024) return 14; |
@@ -188,7 +189,8 @@ static __always_inline int kmalloc_index(size_t size) | |||
188 | if (size <= 512 * 1024) return 19; | 189 | if (size <= 512 * 1024) return 19; |
189 | if (size <= 1024 * 1024) return 20; | 190 | if (size <= 1024 * 1024) return 20; |
190 | if (size <= 2 * 1024 * 1024) return 21; | 191 | if (size <= 2 * 1024 * 1024) return 21; |
191 | return -1; | 192 | BUG(); |
193 | return -1; /* Will never be reached */ | ||
192 | 194 | ||
193 | /* | 195 | /* |
194 | * What we really wanted to do and cannot do because of compiler issues is: | 196 | * What we really wanted to do and cannot do because of compiler issues is: |