From 83dfdd298d14d885b9ebc37b3b1af703cdd27f8c Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Sat, 7 Dec 2013 15:50:46 +0100 Subject: trans: unlock nodes with faked attributes in fakeroot When a node has faked attributes, we cannot drop our node. Reinitialize the lock box as if the node was dropped. This fixes the following bug: % fakeroot-hurd /bin/sh -c 'touch /tmp/$$.lock chown 0 /tmp/$$.lock l(){ flock /tmp/$$.lock true; }; l; l' * trans/fakeroot.c (fake_node_dropweak): Unlock the node if the last real reference is dropped but we keep a fake one. --- trans/fakeroot.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'trans') diff --git a/trans/fakeroot.c b/trans/fakeroot.c index 3756f489..920367d1 100644 --- a/trans/fakeroot.c +++ b/trans/fakeroot.c @@ -172,6 +172,9 @@ fakeroot_netfs_release_protid (void *cookie) account for that fake reference. */ np->nn->faked |= FAKE_REFERENCE; + /* Clear the lock box as if the file was closed. */ + fshelp_lock_init (&np->userlock); + /* We keep our node. */ goto out; } -- cgit v1.2.3