Bladeren bron

GFS2: gfs2_dir_get_hash_table(): avoiding deferred vfree() is easy here...

vfree() is allowed under spinlock these days, but it's cheaper when
it doesn't step into deferred case and here it's very easy to avoid.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Al Viro 10 jaren geleden
bovenliggende
commit
9265f1d0c7
1 gewijzigde bestanden met toevoegingen van 4 en 3 verwijderingen
  1. 4 3
      fs/gfs2/dir.c

+ 4 - 3
fs/gfs2/dir.c

@@ -370,11 +370,12 @@ static __be64 *gfs2_dir_get_hash_table(struct gfs2_inode *ip)
 	}
 
 	spin_lock(&inode->i_lock);
-	if (ip->i_hash_cache)
-		kvfree(hc);
-	else
+	if (likely(!ip->i_hash_cache)) {
 		ip->i_hash_cache = hc;
+		hc = NULL;
+	}
 	spin_unlock(&inode->i_lock);
+	kvfree(hc);
 
 	return ip->i_hash_cache;
 }