• Bob Peterson's avatar
    GFS2: Set gl_object in inode lookup only after block type check · 4d7c18c7
    Bob Peterson authored
    Before this patch, the inode glock's gl_object was set after a
    reference was acquired, but before the block type was verified.
    In cases where the block was unlinked, then freed and reused on
    another node, a residule delete callback (delete_work) would try
    to look up the inode, eventually failing the block check, but
    only after it overwrites gl_object with a pointer to the wrong
    inode. This patch moves the assignment of gl_object after the
    block check so it won't be improperly overwritten.
    
    Likewise, at the end of the function, gfs2_inode_lookup was
    clearing gl_object after it unlocked the glock, which meant
    another process might free the glock in the meantime. This
    patch guards against that case.
    Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
    Reviewed-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    4d7c18c7
inode.c 48.3 KB