summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2018-07-04 12:42:30 +0000
committermpi <mpi@openbsd.org>2018-07-04 12:42:30 +0000
commit64c74df7e71a127f2137bc007cbf8f810f4bcbf7 (patch)
tree0aab06e0dca698a1ad2691c601778b2285f7398f
parentAdd set-hook -R to run a hook immediately (useful to set multiple hooks (diff)
downloadwireguard-openbsd-64c74df7e71a127f2137bc007cbf8f810f4bcbf7.tar.xz
wireguard-openbsd-64c74df7e71a127f2137bc007cbf8f810f4bcbf7.zip
Do not try to unlock the fdplock() in an error path if it isn't held.
Found the hardway by mlarkin@, ok bluhm@
-rw-r--r--sys/dev/diskmap.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/diskmap.c b/sys/dev/diskmap.c
index 2c9ecfdfb62..d13763d5d78 100644
--- a/sys/dev/diskmap.c
+++ b/sys/dev/diskmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: diskmap.c,v 1.21 2018/07/03 05:50:46 mpi Exp $ */
+/* $OpenBSD: diskmap.c,v 1.22 2018/07/04 12:42:30 mpi Exp $ */
/*
* Copyright (c) 2009, 2010 Joel Sing <jsing@openbsd.org>
@@ -86,7 +86,7 @@ diskmapioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct proc *p)
NDINIT(&ndp, 0, 0, UIO_SYSSPACE, devname, p);
ndp.ni_pledge = PLEDGE_RPATH;
if ((error = vn_open(&ndp, fp0->f_flag, 0)) != 0)
- goto bad;
+ goto invalid;
vp = ndp.ni_vp;
VOP_UNLOCK(vp);
@@ -138,10 +138,10 @@ bad:
if (vp)
vrele(vp);
+invalid:
if (fp0)
FRELE(fp0, p);
-invalid:
free(devname, M_DEVBUF, PATH_MAX);
return (error);