summaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-stripe.c
diff options
context:
space:
mode:
authorPavitra Kumar <pavitrak@nvidia.com>2014-10-10 17:19:46 +0200
committerMike Snitzer <snitzer@redhat.com>2014-10-11 04:05:18 +0200
commita3f2af2547884e02f7e43f995a6c442a4e54f1ea (patch)
tree30a5927b0819c371f70f2116ead52ba142ce573a /drivers/md/dm-stripe.c
parentdm log userspace: fix memory leak in dm_ulog_tfr_init failure path (diff)
downloadlinux-a3f2af2547884e02f7e43f995a6c442a4e54f1ea.tar.xz
linux-a3f2af2547884e02f7e43f995a6c442a4e54f1ea.zip
dm stripe: fix potential for leak in stripe_ctr error path
Fix a potential struct stripe_c leak that would occur if the chunk_size exceeded the maximum allowed by dm_set_target_max_io_len (UINT_MAX). However, in practice there is no possibility of this occuring given that chunk_size is of type uint32_t. But it is good to fix this to future-proof in case dm_set_target_max_io_len's implementation were to change. Signed-off-by: Pavitra Kumar <pavitrak@nvidia.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/dm-stripe.c')
-rw-r--r--drivers/md/dm-stripe.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c
index d1600d2aa2e2..f8b37d4c05d8 100644
--- a/drivers/md/dm-stripe.c
+++ b/drivers/md/dm-stripe.c
@@ -159,8 +159,10 @@ static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
sc->stripes_shift = __ffs(stripes);
r = dm_set_target_max_io_len(ti, chunk_size);
- if (r)
+ if (r) {
+ kfree(sc);
return r;
+ }
ti->num_flush_bios = stripes;
ti->num_discard_bios = stripes;