mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
[XFS] Remove a race condition where a linked inode could BUG_ON in
d_instantiate, due to fast transaction committal removing the last remaining reference before we were all done. SGI-PV: 953287 SGI-Modid: xfs-linux-melb:xfs-kern:26347a Signed-off-by: Nathan Scott <nathans@sgi.com>
This commit is contained in:
parent
05a3332885
commit
97dfd70c89
@ -422,10 +422,12 @@ xfs_vn_link(
|
||||
tdvp = vn_from_inode(dir);
|
||||
vp = vn_from_inode(ip);
|
||||
|
||||
VN_HOLD(vp);
|
||||
error = bhv_vop_link(tdvp, vp, dentry, NULL);
|
||||
if (likely(!error)) {
|
||||
if (unlikely(error)) {
|
||||
VN_RELE(vp);
|
||||
} else {
|
||||
VMODIFY(tdvp);
|
||||
VN_HOLD(vp);
|
||||
xfs_validate_fields(ip, &vattr);
|
||||
d_instantiate(dentry, ip);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user