aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2003-05-02 12:49:41 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2003-05-02 12:49:41 +0000
commit3e7b7bb1cb68737b35b620acc268fee4d0547d3b (patch)
treeb4a055177e8c0eb5651addf1147e6b309ec682f0 /sys
parent0a124c37042c94b1e069e3b956005e3cace1e205 (diff)
downloadsrc-3e7b7bb1cb68737b35b620acc268fee4d0547d3b.tar.gz
src-3e7b7bb1cb68737b35b620acc268fee4d0547d3b.zip
Plug memory leaks.
Notes
Notes: svn path=/head/; revision=114531
Diffstat (limited to 'sys')
-rw-r--r--sys/geom/geom_ctl.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/geom/geom_ctl.c b/sys/geom/geom_ctl.c
index 92ef4615d712..aea950e61ddd 100644
--- a/sys/geom/geom_ctl.c
+++ b/sys/geom/geom_ctl.c
@@ -196,6 +196,18 @@ gctl_copyin(struct gctl_req *req)
}
static void
+gctl_free(struct gctl_req *req)
+{
+ int i;
+
+ for (i = 0; i < req->narg; i++) {
+ if (req->arg[i].nlen == 0 && req->arg[i].name != NULL)
+ g_free(req->arg[i].name);
+ }
+ g_free(req->arg);
+}
+
+static void
gctl_dump(struct gctl_req *req)
{
u_int i;
@@ -306,6 +318,7 @@ gctl_get_class(struct gctl_req *req)
return (cp);
}
}
+ g_free(p);
gctl_error(req, "Class not found");
return (NULL);
}
@@ -337,6 +350,7 @@ gctl_get_geom(struct gctl_req *req, struct g_class *mpr)
}
}
gctl_error(req, "Geom not found");
+ g_free(p);
return (NULL);
}
@@ -368,6 +382,7 @@ gctl_get_provider(struct gctl_req *req)
}
}
gctl_error(req, "Provider not found");
+ g_free(p);
return (NULL);
}
@@ -501,6 +516,7 @@ g_ctl_ioctl_ctl(dev_t dev, u_long cmd, caddr_t data, int fflag, struct thread *t
error = gctl_error(req, "XXX: TBD");
break;
}
+ gctl_free(req);
g_topology_unlock();
return (error);
}