summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2005-09-08 03:33:55 +0000
committerkrw <krw@openbsd.org>2005-09-08 03:33:55 +0000
commit817e312bc67bbd6d9c2171f6e45accf75a09a580 (patch)
tree1a14dff95630ccfc75e8b60351364420c3fdfcbd
parentadd missing TULIP_STS_LINKFAIL flag in tulip_21041_media_probe(). (diff)
downloadwireguard-openbsd-817e312bc67bbd6d9c2171f6e45accf75a09a580.tar.xz
wireguard-openbsd-817e312bc67bbd6d9c2171f6e45accf75a09a580.zip
free(NULL, ...) is not safe in the kernel. So check for NULL'ness
before free()'ing buf in sd_get_parms(). Tweak code so there is only one free(buf, ...) to worry about. ok deraadt@.
-rw-r--r--sys/scsi/sd.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/scsi/sd.c b/sys/scsi/sd.c
index 7e5d583f277..cea8569a3b1 100644
--- a/sys/scsi/sd.c
+++ b/sys/scsi/sd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sd.c,v 1.90 2005/08/27 03:50:04 krw Exp $ */
+/* $OpenBSD: sd.c,v 1.91 2005/09/08 03:33:55 krw Exp $ */
/* $NetBSD: sd.c,v 1.111 1997/04/02 02:29:41 mycroft Exp $ */
/*-
@@ -1398,10 +1398,12 @@ sd_get_parms(sd, dp, flags)
}
validate:
- if (dp->disksize == 0) {
+ if (buf)
free(buf, M_TEMP);
+
+ if (dp->disksize == 0)
return (SDGP_RESULT_OFFLINE);
- }
+
if (ssblksize > 0)
dp->blksize = ssblksize;
else
@@ -1423,7 +1425,6 @@ validate:
default:
SC_DEBUG(sd->sc_link, SDEV_DB1,
("sd_get_parms: bad blksize: %#x\n", dp->blksize));
- free(buf, M_TEMP);
return (SDGP_RESULT_OFFLINE);
}
@@ -1445,7 +1446,6 @@ validate:
dp->cyls = (cyls == 0) ? dp->disksize / (dp->heads * dp->sectors) :
cyls;
- free(buf, M_TEMP);
return (SDGP_RESULT_OK);
}