diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2020-03-15 12:55:52 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-03-15 12:55:52 -0700 |
commit | 34d5a4b336e7e4c247d532a841d05367357197f8 (patch) | |
tree | c07c789d1a075d460c4effad4acddb1f4fdfee9f /fs | |
parent | ec181b7f30bdae2fbbba1c0dd76aeaad89c7963e (diff) | |
parent | 8d67743653dce5a0e7aa500fcccb237cde7ad88e (diff) |
Merge tag 'locking-urgent-2020-03-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull futex fix from Thomas Gleixner:
"Fix for yet another subtle futex issue.
The futex code used ihold() to prevent inodes from vanishing, but
ihold() does not guarantee inode persistence. Replace the inode
pointer with a per boot, machine wide, unique inode identifier.
The second commit fixes the breakage of the hash mechanism which
causes a 100% performance regression"
* tag 'locking-urgent-2020-03-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
futex: Unbreak futex hashing
futex: Fix inode life-time issue
Diffstat (limited to 'fs')
-rw-r--r-- | fs/inode.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/inode.c b/fs/inode.c index 7d57068b6b7a..93d9252a00ab 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -138,6 +138,7 @@ int inode_init_always(struct super_block *sb, struct inode *inode) inode->i_sb = sb; inode->i_blkbits = sb->s_blocksize_bits; inode->i_flags = 0; + atomic64_set(&inode->i_sequence, 0); atomic_set(&inode->i_count, 1); inode->i_op = &empty_iops; inode->i_fop = &no_open_fops; |