diff options
author | Bryn M. Reeves <bmr@redhat.com> | 2017-03-29 17:37:10 +0100 |
---|---|---|
committer | Bryn M. Reeves <bmr@redhat.com> | 2017-03-29 18:34:30 +0100 |
commit | bc5d67884fd489682c0267002474e9089e368fe2 (patch) | |
tree | 563dad5e753b3eb61eb7eb3785d3147013fca4a1 | |
parent | 13426092e9681d13acfa9eae505b20537c236340 (diff) | |
download | lvm2-bc5d67884fd489682c0267002474e9089e368fe2.tar.gz |
libdm: do not leak FIEMAP extent buffer if pool allocation fails (coverity)
-rw-r--r-- | libdm/libdm-stats.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/libdm/libdm-stats.c b/libdm/libdm-stats.c index fa865a125..5041d6112 100644 --- a/libdm/libdm-stats.c +++ b/libdm/libdm-stats.c @@ -4401,10 +4401,14 @@ static struct _extent *_stats_get_extents_for_file(struct dm_pool *mem, int fd, unsigned long flags = 0; uint64_t *buf; + /* grow temporary extent table in the pool */ + if (!dm_pool_begin_object(mem, sizeof(*extents))) + return NULL; + buf = dm_zalloc(STATS_FIE_BUF_LEN); if (!buf) { log_error("Could not allocate memory for FIEMAP buffer."); - return NULL; + goto bad; } /* initialise pointers into the ioctl buffer. */ @@ -4415,10 +4419,6 @@ static struct _extent *_stats_get_extents_for_file(struct dm_pool *mem, int fd, *count = (STATS_FIE_BUF_LEN - sizeof(*fiemap)) / sizeof(struct fiemap_extent); - /* grow temporary extent table in the pool */ - if (!dm_pool_begin_object(mem, sizeof(*extents))) - return NULL; - flags = FIEMAP_FLAG_SYNC; do { |