diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
index f913a69..0e4d88e 100644
--- a/fs/ufs/inode.c
+++ b/fs/ufs/inode.c
@@ -867,11 +867,7 @@
 
 int ufs_write_inode(struct inode *inode, struct writeback_control *wbc)
 {
-	int ret;
-	lock_ufs(inode->i_sb);
-	ret = ufs_update_inode(inode, wbc->sync_mode == WB_SYNC_ALL);
-	unlock_ufs(inode->i_sb);
-	return ret;
+	return ufs_update_inode(inode, wbc->sync_mode == WB_SYNC_ALL);
 }
 
 int ufs_sync_inode (struct inode *inode)
@@ -890,22 +886,17 @@
 	if (want_delete) {
 		loff_t old_i_size;
 		/*UFS_I(inode)->i_dtime = CURRENT_TIME;*/
-		lock_ufs(inode->i_sb);
 		mark_inode_dirty(inode);
 		ufs_update_inode(inode, IS_SYNC(inode));
 		old_i_size = inode->i_size;
 		inode->i_size = 0;
 		if (inode->i_blocks && ufs_truncate(inode, old_i_size))
 			ufs_warning(inode->i_sb, __func__, "ufs_truncate failed\n");
-		unlock_ufs(inode->i_sb);
 	}
 
 	invalidate_inode_buffers(inode);
 	clear_inode(inode);
 
-	if (want_delete) {
-		lock_ufs(inode->i_sb);
+	if (want_delete)
 		ufs_free_inode(inode);
-		unlock_ufs(inode->i_sb);
-	}
 }
diff --git a/fs/ufs/truncate.c b/fs/ufs/truncate.c
index 2115470..90cf3a7 100644
--- a/fs/ufs/truncate.c
+++ b/fs/ufs/truncate.c
@@ -457,6 +457,7 @@
 	if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
 		return -EPERM;
 
+	lock_ufs(sb);
 	err = ufs_alloc_lastblock(inode);
 
 	if (err) {
@@ -486,6 +487,7 @@
 	ufsi->i_lastfrag = DIRECT_FRAGMENT;
 	mark_inode_dirty(inode);
 out:
+	unlock_ufs(sb);
 	UFSD("EXIT: err %d\n", err);
 	return err;
 }
@@ -506,9 +508,7 @@
 		/* XXX(truncate): truncate_setsize should be called last */
 		truncate_setsize(inode, attr->ia_size);
 
-		lock_ufs(inode->i_sb);
 		error = ufs_truncate(inode, old_i_size);
-		unlock_ufs(inode->i_sb);
 		if (error)
 			return error;
 	}
