Module Name:    src
Committed By:   andvar
Date:           Mon Jul 19 21:04:39 UTC 2021

Modified Files:
        src/sys/ufs/chfs: chfs_build.c chfs_write.c

Log Message:
Release mutexes in few more places on failure path. Reviewed them in chfs code 
after fixing PR kern/56242.
ok riastradh


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/ufs/chfs/chfs_build.c \
    src/sys/ufs/chfs/chfs_write.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/ufs/chfs/chfs_build.c
diff -u src/sys/ufs/chfs/chfs_build.c:1.5 src/sys/ufs/chfs/chfs_build.c:1.6
--- src/sys/ufs/chfs/chfs_build.c:1.5	Fri Oct 19 12:44:39 2012
+++ src/sys/ufs/chfs/chfs_build.c	Mon Jul 19 21:04:39 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: chfs_build.c,v 1.5 2012/10/19 12:44:39 ttoth Exp $	*/
+/*	$NetBSD: chfs_build.c,v 1.6 2021/07/19 21:04:39 andvar Exp $	*/
 
 /*-
  * Copyright (c) 2010 Department of Software Engineering,
@@ -252,8 +252,10 @@ chfs_build_filesystem(struct chfs_mount 
 				if (chmp->chm_nextblock) {
 					err = chfs_close_eraseblock(chmp,
 					    chmp->chm_nextblock);
-					if (err)
+					if (err) {
+						mutex_exit(&chmp->chm_lock_mountfields);
 						return err;
+					}
 				}
 				chmp->chm_nextblock = &chmp->chm_blocks[i];
 			} else {
@@ -261,8 +263,10 @@ chfs_build_filesystem(struct chfs_mount 
 				 * dirty and put it on a list */
 				err = chfs_close_eraseblock(chmp,
 				    &chmp->chm_blocks[i]);
-				if (err)
+				if (err) {
+					mutex_exit(&chmp->chm_lock_mountfields);
 					return err;
+				}
 			}
 			break;
 		case CHFS_BLK_STATE_ALLDIRTY:
Index: src/sys/ufs/chfs/chfs_write.c
diff -u src/sys/ufs/chfs/chfs_write.c:1.5 src/sys/ufs/chfs/chfs_write.c:1.6
--- src/sys/ufs/chfs/chfs_write.c:1.5	Fri Oct 19 12:44:39 2012
+++ src/sys/ufs/chfs/chfs_write.c	Mon Jul 19 21:04:39 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: chfs_write.c,v 1.5 2012/10/19 12:44:39 ttoth Exp $	*/
+/*	$NetBSD: chfs_write.c,v 1.6 2021/07/19 21:04:39 andvar Exp $	*/
 
 /*-
  * Copyright (c) 2010 Department of Software Engineering,
@@ -438,8 +438,10 @@ chfs_do_link(struct chfs_inode *ip, stru
 
 	/* update vnode information */
 	error = chfs_write_flash_vnode(chmp, ip, ALLOC_NORMAL);
-	if (error)
+	if (error) {
+		mutex_exit(&chmp->chm_lock_mountfields);
 		return error;
+	}
 
 	/* write out the new dirent */
 	error = chfs_write_flash_dirent(chmp,

Reply via email to