From: Al Viro Date: Thu, 20 Nov 2014 05:19:47 +0000 (+0000) Subject: GFS2: gfs2_dir_get_hash_table(): avoiding deferred vfree() is easy here... X-Git-Tag: firefly_0821_release~176^2~2740^2~1 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9265f1d0c7593e3e7e1e94a4a83a6dea34230a35;p=firefly-linux-kernel-4.4.55.git 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 Signed-off-by: Steven Whitehouse --- diff --git a/fs/gfs2/dir.c b/fs/gfs2/dir.c index c247fed4a9a6..c5a34f09e228 100644 --- a/fs/gfs2/dir.c +++ b/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; }