]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selinux: annotate intentional data race in inode_doinit_with_dentry()
authorChristian Göttsche <cgzones@googlemail.com>
Mon, 2 Feb 2026 13:48:03 +0000 (14:48 +0100)
committerPaul Moore <paul@paul-moore.com>
Mon, 23 Feb 2026 16:14:29 +0000 (11:14 -0500)
Like other `isec->initialized == LABEL_INITIALIZED` checks annotate the
check in inode_doinit_with_dentry() with data_race to please KCSAN.

The value is rechecked next with lock held.

Reported-by: syzbot+9ab96b38b76bec93939a@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=9ab96b38b76bec93939a
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
security/selinux/hooks.c

index d8224ea113d1ac273aac1fb52324f00b3301ae75..6ef9c1aade65f833082322e1072e9837c2321050 100644 (file)
@@ -1436,7 +1436,8 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
        struct dentry *dentry;
        int rc = 0;
 
-       if (isec->initialized == LABEL_INITIALIZED)
+       /* check below is racy, but we will recheck with lock held */
+       if (data_race(isec->initialized == LABEL_INITIALIZED))
                return 0;
 
        spin_lock(&isec->lock);