summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Mustacchi <rm@joyent.com>2014-04-02 18:04:36 +0000
committerRobert Mustacchi <rm@joyent.com>2014-04-02 18:11:26 +0000
commit98c66d68005665426f29c599ea0fe1b4e92712e8 (patch)
tree4ff66513c6d7f9a24914e77536a9f4f4be6a0fda
parent666ed05bdafe19726bbb92d9754ba35e088051a0 (diff)
downloadillumos-joyent-98c66d68005665426f29c599ea0fe1b4e92712e8.tar.gz
OS-2846 writing NT_FDINFO leaks vnode
-rw-r--r--usr/src/uts/common/exec/elf/elf_notes.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/usr/src/uts/common/exec/elf/elf_notes.c b/usr/src/uts/common/exec/elf/elf_notes.c
index 51db603177..81ce155db0 100644
--- a/usr/src/uts/common/exec/elf/elf_notes.c
+++ b/usr/src/uts/common/exec/elf/elf_notes.c
@@ -26,7 +26,7 @@
/*
* Copyright 2012 DEY Storage Systems, Inc. All rights reserved.
- * Copyright (c) 2013, Joyent, Inc. All rights reserved.
+ * Copyright (c) 2014, Joyent, Inc. All rights reserved.
*/
#include <sys/types.h>
@@ -405,10 +405,13 @@ write_elfnotes(proc_t *p, int sig, vnode_t *vp, offset_t offset,
error = elfnote(vp, &offset, NT_FDINFO,
sizeof (fdinfo), &fdinfo, rlimit, credp);
if (error) {
+ VN_RELE(vroot);
goto done;
}
}
+ VN_RELE(vroot);
+
#if defined(__i386) || defined(__i386_COMPAT)
mutex_enter(&p->p_ldtlock);
ssdsize = prnldt(p) * sizeof (struct ssd);