[lvm-devel] [PATCH 5/8] Simplify boundary checks
Zdenek Kabelac
zkabelac at redhat.com
Tue Mar 22 21:34:14 UTC 2011
As we do not support such large allocation they could wrap around
the pointer size - I think this optimisation is correct
and make the code easier to read and understand.
Signed-off-by: Zdenek Kabelac <zkabelac at redhat.com>
---
libdm/mm/pool-fast.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/libdm/mm/pool-fast.c b/libdm/mm/pool-fast.c
index b651449..29d61a4 100644
--- a/libdm/mm/pool-fast.c
+++ b/libdm/mm/pool-fast.c
@@ -92,7 +92,7 @@ void *dm_pool_alloc_aligned(struct dm_pool *p, size_t s, unsigned alignment)
_align_chunk(c, alignment);
/* have we got room ? */
- if (!c || (c->begin > c->end) || (c->end - c->begin < s)) {
+ if (!c || ((c->begin + s) > c->end)) {
/* allocate new chunk */
size_t needed = s + alignment + sizeof(struct chunk);
c = _new_chunk(p, (needed > p->chunk_size) ?
@@ -169,7 +169,7 @@ int dm_pool_begin_object(struct dm_pool *p, size_t hint)
if (c)
_align_chunk(c, align);
- if (!c || (c->begin > c->end) || (c->end - c->begin < hint)) {
+ if (!c || ((c->begin + hint) > c->end)) {
/* allocate a new chunk */
c = _new_chunk(p,
hint > (p->chunk_size - sizeof(struct chunk)) ?
@@ -192,7 +192,7 @@ int dm_pool_grow_object(struct dm_pool *p, const void *extra, size_t delta)
if (!delta)
delta = strlen(extra);
- if (c->end - (c->begin + p->object_len) < delta) {
+ if ((c->begin + p->object_len + delta) > c->end) {
/* move into a new chunk */
if (p->object_len + delta > (p->chunk_size / 2))
nc = _new_chunk(p, (p->object_len + delta) * 2);
--
1.7.4.1
More information about the lvm-devel
mailing list