From 85d7a015ea0c440735f58a4859cf6de25b664af7 Mon Sep 17 00:00:00 2001 From: "Michael I. Bushnell" Date: Mon, 18 Dec 1995 22:09:23 +0000 Subject: Formerly cache.c.~6~ --- nfs/cache.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'nfs/cache.c') diff --git a/nfs/cache.c b/nfs/cache.c index f72bba59..75a8b250 100644 --- a/nfs/cache.c +++ b/nfs/cache.c @@ -78,17 +78,24 @@ netfs_node_norefs (struct node *np) { if (np->nn->dead_dir) { + struct node *dir; + char *name; + np->references++; spin_unlock (&netfs_node_refcnt_lock); - - netfs_attempt_unlink ((struct netcred *)-1, np->nn->dead_dir, - np->nn->dead_name); - netfs_nrele (np->nn->dead_dir); - free (np->nn->dead_name); + + dir = np->nn->dead_dir; + name = np->nn->dead_name; np->nn->dead_dir = 0; np->nn->dead_name = 0; netfs_nput (np); + mutex_lock (&dir->lock); + netfs_attempt_unlink ((struct netcred *)-1, dir, name); + + netfs_nput (dir); + free (name); + /* Caller expects us to leave this locked... */ spin_lock (&netfs_node_refcnt_lock); } -- cgit v1.2.3