Module Name: src Committed By: riastradh Date: Sat Apr 22 11:58:01 UTC 2023
Modified Files: src/sys/kern: subr_disk.c Log Message: disk(9): Fix missing unlock in error branch in previous change. Reported-by: syzbot+870665adaf8911c0d...@syzkaller.appspotmail.com https://syzkaller.appspot.com/bug?id=a4ae17cf66b5bb999182ae77fd3c7ad9ad18c891 To generate a diff of this commit: cvs rdiff -u -r1.135 -r1.136 src/sys/kern/subr_disk.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/kern/subr_disk.c diff -u src/sys/kern/subr_disk.c:1.135 src/sys/kern/subr_disk.c:1.136 --- src/sys/kern/subr_disk.c:1.135 Fri Apr 21 18:30:04 2023 +++ src/sys/kern/subr_disk.c Sat Apr 22 11:58:01 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_disk.c,v 1.135 2023/04/21 18:30:04 riastradh Exp $ */ +/* $NetBSD: subr_disk.c,v 1.136 2023/04/22 11:58:01 riastradh Exp $ */ /*- * Copyright (c) 1996, 1997, 1999, 2000, 2009 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: subr_disk.c,v 1.135 2023/04/21 18:30:04 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_disk.c,v 1.136 2023/04/22 11:58:01 riastradh Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -535,10 +535,15 @@ disk_ioctl(struct disk *dk, dev_t dev, u int error; mutex_enter(&dk->dk_openlock); - if ((disk_info = dk->dk_info) == NULL) - return ENOTSUP; - prop_object_retain(disk_info); + if ((disk_info = dk->dk_info) == NULL) { + error = ENOTSUP; + } else { + prop_object_retain(disk_info); + error = 0; + } mutex_exit(&dk->dk_openlock); + if (error) + return error; error = prop_dictionary_copyout_ioctl(data, cmd, disk_info); prop_object_release(disk_info);