]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Fix memory leak in zvol_set_volsize()
authorLOLi <loli10K@users.noreply.github.com>
Wed, 31 May 2017 19:52:12 +0000 (21:52 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 31 May 2017 19:52:12 +0000 (12:52 -0700)
Move kmem_free() so it's called for every error path: this is
preferred over making `dmu_object_info_t doi` local to accommodate
older kernels with limited stacks.

Reviewed by: Boris Protopopov <bprotopopov@hotmail.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov>
Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
Closes #6177

module/zfs/zvol.c

index 8ca510b794efc8d90c3720a02e3258a6e018a9bb..cff3da8b491367a9c39643fb125b3da00cfa89a3 100644 (file)
@@ -419,11 +419,12 @@ zvol_set_volsize(const char *name, uint64_t volsize)
                goto out;
 
        error = zvol_update_volsize(volsize, os);
-       kmem_free(doi, sizeof (dmu_object_info_t));
 
        if (error == 0 && zv != NULL)
                error = zvol_update_live_volsize(zv, volsize);
 out:
+       kmem_free(doi, sizeof (dmu_object_info_t));
+
        if (owned) {
                dmu_objset_disown(os, FTAG);
                if (zv != NULL)