diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2009-07-07 23:03:06 +0200 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-07-07 23:03:06 +0200 |
commit | 122426daab0fbd2fce244ac018d737a8f302f974 (patch) | |
tree | fd60e9d11e161f8cd19d1f4d93d6de1ad7c261b2 /smalloc.c | |
parent | cf98708da292cb9e77bb6aff4eda7652103f4f77 (diff) | |
download | fio-122426daab0fbd2fce244ac018d737a8f302f974.tar.gz |
smalloc: just round alloc_size to int aligned for post redzone pointer
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'smalloc.c')
-rw-r--r-- | smalloc.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -27,6 +27,7 @@ #define SMALLOC_POST_RED 0x5aa55aa5U unsigned int smalloc_pool_size = INITIAL_SIZE; +const int int_mask = sizeof(int) - 1; struct pool { struct fio_mutex *lock; /* protects this pool */ @@ -270,7 +271,6 @@ void scleanup(void) #ifdef SMALLOC_REDZONE static void *postred_ptr(struct block_hdr *hdr) { - const int int_mask = sizeof(unsigned int) - 1; unsigned long ptr; ptr = (unsigned long) hdr + hdr->size - sizeof(unsigned int); @@ -426,11 +426,12 @@ static void *smalloc_pool(struct pool *pool, unsigned int size) void *ptr; /* - * Use twice the size for good luck, we may need to adjust - * alignment. + * Round to int alignment, so that the postred pointer will + * be naturally aligned as well. */ #ifdef SMALLOC_REDZONE - alloc_size += 2 * sizeof(unsigned int); + alloc_size += sizeof(unsigned int); + alloc_size = (alloc_size + int_mask) & ~int_mask; #endif ptr = __smalloc_pool(pool, alloc_size); |