Description
In the Linux kernel, the following vulnerability has been resolved: fsverity: RCU-delay the freeing of struct fsverity_info __fsverity_get_info() calls rhashtable_lookup_fast(), which just uses rcu_read_lock() and doesn't directly synchronize with fsverity_remove_info(). For the same inode this isn't a problem: its fsverity_info is removed only at inode eviction time or upon failure to enable verity, when the inode no longer needs its fsverity_info and it will no longer be accessed via that inode. However, this is broken and can cause a use-after-free for concurrent __fsverity_get_info() for *different* inodes. Those rely on following fsverity_info::rhash_head in the rhashtable under rcu_read_lock() only. They also use fsverity_info::inode to do the key comparison. Fix this by RCU-delaying the freeing of 'struct fsverity_info' after it's been removed from the rhashtable.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
f77f281b61183a5c0b87e6a4d101c70bd32c1c79 to < fa84f091a8e7fc46fd29834496fab9739dd4c8dcaffectedf77f281b61183a5c0b87e6a4d101c70bd32c1c79 to < e58c3805ed325fe2d4ae2dd467c0486cc860b733affected
Linux Linux
Default version status: affected
7.0affected0 to < 7.0unaffected7.2.11 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected