summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_cpu.c
diff options
context:
space:
mode:
authorbrueffer <brueffer@FreeBSD.org>2010-01-08 22:58:50 +0000
committerbrueffer <brueffer@FreeBSD.org>2010-01-08 22:58:50 +0000
commit69131979da764dc40c72b67d2266ef970b612c83 (patch)
treee723cb0386ea9621930e9b820bce100fc9c85254 /sys/kern/kern_cpu.c
parentca938e57e7490deb967828949eb8d4b9f90bd349 (diff)
downloadFreeBSD-src-69131979da764dc40c72b67d2266ef970b612c83.zip
FreeBSD-src-69131979da764dc40c72b67d2266ef970b612c83.tar.gz
Free allocated sbufs before returning ENOMEM.
PR: 128335 Submitted by: Mateusz Guzik <mjguzik@gmail.com> MFC after: 2 week
Diffstat (limited to 'sys/kern/kern_cpu.c')
-rw-r--r--sys/kern/kern_cpu.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/kern/kern_cpu.c b/sys/kern/kern_cpu.c
index 9f7f615..4c4f961 100644
--- a/sys/kern/kern_cpu.c
+++ b/sys/kern/kern_cpu.c
@@ -935,8 +935,10 @@ cpufreq_levels_sysctl(SYSCTL_HANDLER_ARGS)
/* Get settings from the device and generate the output string. */
count = CF_MAX_LEVELS;
levels = malloc(count * sizeof(*levels), M_TEMP, M_NOWAIT);
- if (levels == NULL)
+ if (levels == NULL) {
+ sbuf_delete(&sb);
return (ENOMEM);
+ }
error = CPUFREQ_LEVELS(sc->dev, levels, &count);
if (error) {
if (error == E2BIG)
@@ -974,8 +976,10 @@ cpufreq_settings_sysctl(SYSCTL_HANDLER_ARGS)
/* Get settings from the device and generate the output string. */
set_count = MAX_SETTINGS;
sets = malloc(set_count * sizeof(*sets), M_TEMP, M_NOWAIT);
- if (sets == NULL)
+ if (sets == NULL) {
+ sbuf_delete(&sb);
return (ENOMEM);
+ }
error = CPUFREQ_DRV_SETTINGS(dev, sets, &set_count);
if (error)
goto out;
OpenPOWER on IntegriCloud