linux/fs/gfs2
Bob Peterson 4d7c18c7df GFS2: Set gl_object in inode lookup only after block type check
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: Bob Peterson <rpeterso@redhat.com>
Reviewed-by: Andreas Gruenbacher <agruenba@redhat.com>
2017-07-21 08:20:42 -05:00
..
acl.c gfs2: Don't clear SGID when inheriting ACLs 2017-07-19 10:58:54 -05:00
acl.h gfs2: Switch to generic xattr handlers 2016-05-12 22:28:05 -04:00
aops.c We've got eight GFS2 patches for this merge window: 2017-02-21 07:46:34 -08:00
bmap.c gfs2: add flag REQ_PRIO for metadata I/O 2017-07-21 07:48:22 -05:00
bmap.h
dentry.c gfs2: Lock holder cleanup 2016-06-27 09:47:09 -05:00
dir.c gfs2: add flag REQ_PRIO for metadata I/O 2017-07-21 07:48:22 -05:00
dir.h
export.c gfs2: Get rid of gfs2_ilookup 2016-06-27 09:47:08 -05:00
file.c gfs2: Lock holder cleanup (fixup) 2017-07-17 13:39:15 -05:00
gfs2.h
glock.c gfs2: Fix glock rhashtable rcu bug 2017-07-07 13:22:05 -05:00
glock.h GFS2: Introduce helper for clearing gl_object 2017-07-21 08:20:05 -05:00
glops.c GFS2: fix code parameter error in inode_go_lock 2017-07-21 07:40:59 -05:00
glops.h
incore.h gfs2: Fix glock rhashtable rcu bug 2017-07-07 13:22:05 -05:00
inode.c GFS2: Set gl_object in inode lookup only after block type check 2017-07-21 08:20:42 -05:00
inode.h GFS2: use BIT() macro 2016-08-02 12:05:27 -05:00
Kconfig
lock_dlm.c sched/headers: Prepare to move signal wakeup & sigpending methods from <linux/sched.h> into <linux/sched/signal.h> 2017-03-02 08:42:32 +01:00
log.c We've got eight GFS2 patches for this merge window: 2017-07-05 16:57:08 -07:00
log.h
lops.c Writeback error handling fixes (pile #2) 2017-07-07 19:38:17 -07:00
lops.h gfs2: use bio op accessors 2016-06-07 13:41:38 -06:00
main.c GFS2: Remove gl_list from glock structure 2017-06-12 14:39:12 -05:00
Makefile
meta_io.c gfs2: add flag REQ_PRIO for metadata I/O 2017-07-21 07:48:22 -05:00
meta_io.h GFS2: Refactor gfs2_remove_from_journal 2016-05-06 11:27:27 -05:00
ops_fstype.c Merge branch 'uuid-types' of bombadil.infradead.org:public_git/uuid into nvme-base 2017-06-13 11:45:14 +02:00
quota.c gfs2: add flag REQ_PRIO for metadata I/O 2017-07-21 07:48:22 -05:00
quota.h GFS2: Make rgrp reservations part of the gfs2_inode structure 2015-12-14 12:16:38 -06:00
recovery.c GFS2: Fix gfs2_replay_incr_blk for multiple journal sizes 2016-07-21 13:02:44 -05:00
recovery.h GFS2: Fix gfs2_replay_incr_blk for multiple journal sizes 2016-07-21 13:02:44 -05:00
rgrp.c gfs2: Protect gl->gl_object by spin lock 2017-07-05 07:20:52 -05:00
rgrp.h GFS2: Non-recursive delete 2017-04-19 08:25:43 -04:00
super.c GFS2: Introduce helper for clearing gl_object 2017-07-21 08:20:05 -05:00
super.h
sys.c We've got eight GFS2 patches for this merge window: 2017-07-05 16:57:08 -07:00
sys.h
trace_gfs2.h gfs2: Make statistics unsigned, suitable for use with do_div() 2015-09-03 13:33:32 -05:00
trans.c GFS2: Reduce contention on gfs2_log_lock 2017-01-30 12:10:25 -05:00
trans.h
util.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
util.h GFS2: Make rgrp reservations part of the gfs2_inode structure 2015-12-14 12:16:38 -06:00
xattr.c gfs2: Protect gl->gl_object by spin lock 2017-07-05 07:20:52 -05:00
xattr.h gfs2: Remove gfs2_xattr_acl_chmod 2015-12-06 21:25:17 -05:00