Message ID | 156944725182.297677.5778254084930145538.stgit@magnolia (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | libfrog/xfs_scrub: fix error handling | expand |
On 9/25/19 4:34 PM, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > Check library calls for error codes being returned. > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> > --- > libfrog/bitmap.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > Reviewed-by: Eric Sandeen <sandeen@redhat.com>
diff --git a/libfrog/bitmap.c b/libfrog/bitmap.c index be95965f..a75d085a 100644 --- a/libfrog/bitmap.c +++ b/libfrog/bitmap.c @@ -72,21 +72,30 @@ bitmap_alloc( struct bitmap **bmapp) { struct bitmap *bmap; + int ret; bmap = calloc(1, sizeof(struct bitmap)); if (!bmap) return errno; bmap->bt_tree = malloc(sizeof(struct avl64tree_desc)); if (!bmap->bt_tree) { - free(bmap); - return errno; + ret = errno; + goto out; } - pthread_mutex_init(&bmap->bt_lock, NULL); + ret = pthread_mutex_init(&bmap->bt_lock, NULL); + if (ret) + goto out_tree; + avl64_init_tree(bmap->bt_tree, &bitmap_ops); *bmapp = bmap; return 0; +out_tree: + free(bmap->bt_tree); +out: + free(bmap); + return ret; } /* Free a bitmap. */