https://bugzilla.kernel.org/show_bug.cgi?id=205569 Bug ID: 205569 Summary: potential data race (likely benign) on inode->i_state (reading and writing to different bits) Product: File System Version: 2.5 Kernel Version: 5.4-rc5 Hardware: All OS: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: ext4 Assignee: fs_ext4@xxxxxxxxxxxxxxxxxxxx Reporter: mengxu.gatech@xxxxxxxxx Regression: No I am reporting a potential data race (maybe benign) in the ext4 layer on inode->i_state, with reading and writing to the same byte but different bits: I_DIRTY_PAGES (bit 2) and I_NEW | I_FREEING (bit 3 and 5), observable during the write-back phase. The function call trace is shown below: [Thread 1: SYS_rmdir] __do_sys_rmdir do_rmdir vfs_rmdir ext4_rmdir ext4_orphan_add [READ] WARN_ON_ONCE(!(inode->i_state & (I_NEW | I_FREEING)) && !inode_is_locked(inode)); [Thread 2: write-back thread] wb_workfn wb_do_writeback wb_writeback writeback_sb_inodes __writeback_single_inode [WRITE] dirty = inode->i_state & I_DIRTY; I could confirm that the WRITE may happen before and after the READ operation by controlling the timing of the two threads, i.e., by setting breakpoints before the WRITE statement. However, I am not very sure about the implication of such a data race (e.g., causing violations of assumptions). I would appreciate if you could help check on this potential bug and advise whether this is a harmful data race or it is intended. Thank you! -- You are receiving this mail because: You are watching the assignee of the bug.