From 58f78ea0c81a106cb2b9220eb9290bef15466cd9 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Fri, 4 Apr 2014 20:55:34 +0200 Subject: Fix spurious unlock on error Thanks Cyril Roelandt for finding the issue. * libdiskfs/dir-renamed.c (diskfs_rename_dir): On diskfs_lookup error, set fnp to NULL to avoid unlocking it spuriously. --- libdiskfs/dir-renamed.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'libdiskfs') diff --git a/libdiskfs/dir-renamed.c b/libdiskfs/dir-renamed.c index 9b7ec3a6..9e37e234 100644 --- a/libdiskfs/dir-renamed.c +++ b/libdiskfs/dir-renamed.c @@ -209,7 +209,12 @@ diskfs_rename_dir (struct node *fdp, struct node *fnp, const char *fromname, if (tmpnp) diskfs_nrele (tmpnp); if (err) - goto out; + { + assert (!tmpnp); + /* diskfs_lookup has not locked fnp then, do not unlock it. */ + fnp = NULL; + goto out; + } diskfs_dirremove (fdp, fnp, fromname, ds); ds = 0; -- cgit v1.2.3