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,