On Wed, Mar 18, 2020 at 9:54 PM Sasha Levin sashal@kernel.org wrote:
From: Peter Zijlstra peterz@infradead.org
[ Upstream commit 8019ad13ef7f64be44d4f892af9c840179009254 ]
As reported by Jann, ihold() does not in fact guarantee inode persistence. And instead of making it so, replace the usage of inode pointers with a per boot, machine wide, unique inode identifier.
This sequence number is global, but shared (file backed) futexes are rare enough that this should not become a performance issue.
Please also take this patch, together with 8d67743653dce5a0e7aa500fcccb237cde7ad88e "futex: Unbreak futex hashing", into the older stable branches. This has to go all the way back; as far as I can tell, the bug already existed at the beginning of git history.