summaryrefslogtreecommitdiff
path: root/sys/src/9/pc/devvmx.c
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2017-06-21 09:59:32 +0000
committeraiju <devnull@localhost>2017-06-21 09:59:32 +0000
commit37b9ab5a043e45a68979632c177e11af7a439027 (patch)
tree996501d5cc3d7c97655ce9799ebbd188a1d9e4aa /sys/src/9/pc/devvmx.c
parent779f6cb3b8a304677c293e5deff3305336681997 (diff)
devvmx: error handling in clearmeminfo
Diffstat (limited to 'sys/src/9/pc/devvmx.c')
-rw-r--r--sys/src/9/pc/devvmx.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/src/9/pc/devvmx.c b/sys/src/9/pc/devvmx.c
index b1df66666..6b86f861f 100644
--- a/sys/src/9/pc/devvmx.c
+++ b/sys/src/9/pc/devvmx.c
@@ -703,9 +703,14 @@ cmdsetmeminfo(VmCmd *, va_list va)
q = strchr(p, '\n');
if(q == 0) break;
*q = 0;
- if(mp == nil)
+ if(mp == nil){
mp = malloc(sizeof(VmMem));
+ if(mp == nil)
+ error(Enomem);
+ }
+ memset(mp, 0, sizeof(VmMem));
if(waserror()){
+ putseg(mp->seg);
free(mp->name);
free(mp);
nexterror();
@@ -714,7 +719,6 @@ cmdsetmeminfo(VmCmd *, va_list va)
p = q + 1;
if(rc == 0) goto next;
if(rc != 4 && rc != 6) error("number of fields wrong");
- memset(mp, 0, sizeof(VmMem));
for(q = f[0]; *q != 0; q++)
switch(*q){
case 'r': if((mp->attr & 1) != 0) goto tinval; mp->attr |= 1; break;