pipebuffer: slab: if size < alignment, use alignment to find bucket

If the size is lower than the alignment, we must use the alignment to
select the bucket.

Otherwise, the selected bucket won't be able to satisfy our request
and will fail.

Signed-off-by: José Fonseca <jfonseca@vmware.com>
This commit is contained in:
Luca Barbieri 2010-02-23 08:55:24 -08:00 committed by José Fonseca
parent c36b912e09
commit 2f5beb4b53

View file

@ -483,11 +483,15 @@ pb_slab_range_manager_create_buffer(struct pb_manager *_mgr,
{
struct pb_slab_range_manager *mgr = pb_slab_range_manager(_mgr);
pb_size bufSize;
pb_size reqSize = size;
unsigned i;
if(desc->alignment > reqSize)
reqSize = desc->alignment;
bufSize = mgr->minBufSize;
for (i = 0; i < mgr->numBuckets; ++i) {
if(bufSize >= size)
if(bufSize >= reqSize)
return mgr->buckets[i]->create_buffer(mgr->buckets[i], size, desc);
bufSize *= 2;
}