[POWERPC] Fix alignment problem in rh_alloc_align() with exact-sized blocks
[pandora-kernel.git] / arch / powerpc / lib / rheap.c
index b2f6dcc..180ee29 100644 (file)
@@ -468,25 +468,19 @@ unsigned long rh_alloc_align(rh_info_t * info, int size, int alignment, const ch
        if (blk->size == size) {
                /* Move from free list to taken list */
                list_del(&blk->list);
-               blk->owner = owner;
-               start = blk->start;
-
-               attach_taken_block(info, blk);
+               newblk = blk;
+       } else {
+               newblk = get_slot(info);
+               newblk->start = blk->start;
+               newblk->size = size;
 
-               return start;
+               /* blk still in free list, with updated start, size */
+               blk->start += size;
+               blk->size -= size;
        }
 
-       newblk = get_slot(info);
-       newblk->start = blk->start;
-       newblk->size = size;
        newblk->owner = owner;
-
-       /* blk still in free list, with updated start, size */
-       blk->start += size;
-       blk->size -= size;
-
        start = newblk->start;
-
        attach_taken_block(info, newblk);
 
        /* for larger alignment return fixed up pointer  */