Messages in this thread Patch in this message | | | From | Mateusz Guzik <> | Subject | [PATCH] vfs: fix up the assert in i_readcount_dec | Date | Fri, 11 Aug 2023 21:48:14 +0200 |
| |
Drops a race where 2 threads could spot a positive value and both proceed to dec to -1, without reporting anything.
Signed-off-by: Mateusz Guzik <mjguzik@gmail.com> --- include/linux/fs.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/include/linux/fs.h b/include/linux/fs.h index 562f2623c9c9..21c8f8ae014d 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2613,8 +2613,7 @@ static inline bool inode_is_open_for_write(const struct inode *inode) #if defined(CONFIG_IMA) || defined(CONFIG_FILE_LOCKING) static inline void i_readcount_dec(struct inode *inode) { - BUG_ON(!atomic_read(&inode->i_readcount)); - atomic_dec(&inode->i_readcount); + BUG_ON(atomic_dec_return(&inode->i_readcount) < 0); } static inline void i_readcount_inc(struct inode *inode) { -- 2.39.2
| |