drbd: fix memory leak in drbd_adm_resize
new_disk_conf could be leaked if the follow on checks fail, so make sure to free it on error if it was not assigned yet. Found with smatch. Signed-off-by: Oleg Drokin <green@linuxhacker.ru> Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
5bded4effb
commit
706447861b
|
@ -2706,6 +2706,7 @@ int drbd_adm_resize(struct sk_buff *skb, struct genl_info *info)
|
||||||
mutex_unlock(&device->resource->conf_update);
|
mutex_unlock(&device->resource->conf_update);
|
||||||
synchronize_rcu();
|
synchronize_rcu();
|
||||||
kfree(old_disk_conf);
|
kfree(old_disk_conf);
|
||||||
|
new_disk_conf = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ddsf = (rs.resize_force ? DDSF_FORCED : 0) | (rs.no_resync ? DDSF_NO_RESYNC : 0);
|
ddsf = (rs.resize_force ? DDSF_FORCED : 0) | (rs.no_resync ? DDSF_NO_RESYNC : 0);
|
||||||
|
@ -2739,6 +2740,7 @@ int drbd_adm_resize(struct sk_buff *skb, struct genl_info *info)
|
||||||
|
|
||||||
fail_ldev:
|
fail_ldev:
|
||||||
put_ldev(device);
|
put_ldev(device);
|
||||||
|
kfree(new_disk_conf);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue