summaryrefslogtreecommitdiffstats
path: root/mm/kasan/report.c
diff options
context:
space:
mode:
authorAshish Samant <ashish.samant@oracle.com>2018-05-11 16:02:07 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2018-05-11 17:28:45 -0700
commite4383029201470523c3ffe339bd7d57e9b4a7d65 (patch)
tree4299fa734f9decf395158470afcb72aa2adb73e5 /mm/kasan/report.c
parent27ae357fa82be5ab73b2ef8d39dcb8ca2563483a (diff)
downloadlinux-e4383029201470523c3ffe339bd7d57e9b4a7d65.tar.gz
linux-e4383029201470523c3ffe339bd7d57e9b4a7d65.tar.bz2
linux-e4383029201470523c3ffe339bd7d57e9b4a7d65.zip
ocfs2: take inode cluster lock before moving reflinked inode from orphan dir
While reflinking an inode, we create a new inode in orphan directory, then take EX lock on it, reflink the original inode to orphan inode and release EX lock. Once the lock is released another node could request it in EX mode from ocfs2_recover_orphans() which causes downconvert of the lock, on this node, to NL mode. Later we attempt to initialize security acl for the orphan inode and move it to the reflink destination. However, while doing this we dont take EX lock on the inode. This could potentially cause problems because we could be starting transaction, accessing journal and modifying metadata of the inode while holding NL lock and with another node holding EX lock on the inode. Fix this by taking orphan inode cluster lock in EX mode before initializing security and moving orphan inode to reflink destination. Use the __tracker variant while taking inode lock to avoid recursive locking in the ocfs2_init_security_and_acl() call chain. Link: http://lkml.kernel.org/r/1523475107-7639-1-git-send-email-ashish.samant@oracle.com Signed-off-by: Ashish Samant <ashish.samant@oracle.com> Reviewed-by: Joseph Qi <jiangqi903@gmail.com> Reviewed-by: Junxiao Bi <junxiao.bi@oracle.com> Acked-by: Jun Piao <piaojun@huawei.com> Cc: Mark Fasheh <mark@fasheh.com> Cc: Joel Becker <jlbec@evilplan.org> Cc: Changwei Ge <ge.changwei@h3c.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/kasan/report.c')
0 files changed, 0 insertions, 0 deletions