Module Name:    src
Committed By:   riastradh
Date:           Sat Mar 12 17:27:50 UTC 2022

Modified Files:
        src/sys/dev: ccd.c

Log Message:
ccd(4): Only pathbuf_destroy if pathbuf_copyin succeeded.

Reported-by: syzbot+a46aadc788a80afc8...@syzkaller.appspotmail.com


To generate a diff of this commit:
cvs rdiff -u -r1.186 -r1.187 src/sys/dev/ccd.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/ccd.c
diff -u src/sys/dev/ccd.c:1.186 src/sys/dev/ccd.c:1.187
--- src/sys/dev/ccd.c:1.186	Fri Feb 11 23:20:09 2022
+++ src/sys/dev/ccd.c	Sat Mar 12 17:27:50 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: ccd.c,v 1.186 2022/02/11 23:20:09 riastradh Exp $	*/
+/*	$NetBSD: ccd.c,v 1.187 2022/03/12 17:27:50 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 1999, 2007, 2009 The NetBSD Foundation, Inc.
@@ -88,7 +88,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ccd.c,v 1.186 2022/02/11 23:20:09 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ccd.c,v 1.187 2022/03/12 17:27:50 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1313,8 +1313,8 @@ ccdioctl(dev_t dev, u_long cmd, void *da
 			error = pathbuf_copyin(cpp[i], &pb);
 			if (error == 0) {
 				error = vn_bdev_openpath(pb, &vpp[i], l);
+				pathbuf_destroy(pb);
 			}
-			pathbuf_destroy(pb);
 			if (error != 0) {
 				for (j = 0; j < lookedup; ++j)
 					(void)vn_close(vpp[j], FREAD|FWRITE,

Reply via email to