]> git.baikalelectronics.ru Git - kernel.git/commit
gfs2: gfs2_setattr_size error path fix
authorAndreas Gruenbacher <agruenba@redhat.com>
Fri, 10 Dec 2021 13:43:36 +0000 (14:43 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 8 Apr 2022 12:24:10 +0000 (14:24 +0200)
commit9ca4f32de509e2657afb373e0ac3f202184bc78e
tree63e5bb67252337812b831fc0d95078b0326c23f9
parent39f1f3fa388816090b2b7d8899fcf5112f43a948
gfs2: gfs2_setattr_size error path fix

commit 958470187a43d46c2d20389ae0b2c0addcdc4030 upstream.

When gfs2_setattr_size() fails, it calls gfs2_rs_delete(ip, NULL) to get
rid of any reservations the inode may have.  Instead, it should pass in
the inode's write count as the second parameter to allow
gfs2_rs_delete() to figure out if the inode has any writers left.

In a next step, there are two instances of gfs2_rs_delete(ip, NULL) left
where we know that there can be no other users of the inode.  Replace
those with gfs2_rs_deltree(&ip->i_res) to avoid the unnecessary write
count check.

With that, gfs2_rs_delete() is only called with the inode's actual write
count, so get rid of the second parameter.

Fixes: a940b8347d6d ("GFS2: Make rgrp reservations part of the gfs2_inode structure")
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/gfs2/bmap.c
fs/gfs2/file.c
fs/gfs2/inode.c
fs/gfs2/rgrp.c
fs/gfs2/rgrp.h
fs/gfs2/super.c