Hi,

This patch fixes a rare code path that's doing use-after-free
I spotted in pass2.

Regards,

Bob Peterson
Red Hat File Systems

Signed-off-by: Bob Peterson <rpete...@redhat.com> 
---
diff --git a/gfs2/fsck/pass2.c b/gfs2/fsck/pass2.c
index 27b7336..4ea322a 100644
--- a/gfs2/fsck/pass2.c
+++ b/gfs2/fsck/pass2.c
@@ -1928,13 +1928,14 @@ int pass2(struct gfs2_sbd *sdp)
                        ip = fsck_load_inode(sdp, dirblk);
                        cur_blks = ip->i_di.di_blocks;
                        error = check_metatree(ip, &pass2_fxns);
-                       fsck_inode_put(&ip);
                        if (error < 0) {
                                stack;
+                               fsck_inode_put(&ip);
                                return error;
                        }
                        if (ip->i_di.di_blocks != cur_blks)
                                reprocess_inode(ip, "current");
+                       fsck_inode_put(&ip);
                }
                error = check_dir(sdp, dirblk, &pass2_fxns);
                if (skip_this_pass || fsck_abort) /* if asked to skip the rest 
*/

Reply via email to