summaryrefslogtreecommitdiffstats
path: root/security/tomoyo/network.c
diff options
context:
space:
mode:
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>2021-02-01 03:52:11 +0100
committerTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>2021-02-01 03:52:11 +0100
commit5797e861e402fff2bedce4ec8b7c89f4248b6073 (patch)
tree8703689665da1be3512f2a3efa3024f6404dea9c /security/tomoyo/network.c
parentLinux 5.11-rc6 (diff)
downloadlinux-5797e861e402fff2bedce4ec8b7c89f4248b6073.tar.xz
linux-5797e861e402fff2bedce4ec8b7c89f4248b6073.zip
tomoyo: ignore data race while checking quota
syzbot is reporting that tomoyo's quota check is racy [1]. But this check is tolerant of some degree of inaccuracy. Thus, teach KCSAN to ignore this data race. [1] https://syzkaller.appspot.com/bug?id=999533deec7ba6337f8aa25d8bd1a4d5f7e50476 Reported-by: syzbot <syzbot+0789a72b46fd91431bd8@syzkaller.appspotmail.com> Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Diffstat (limited to 'security/tomoyo/network.c')
-rw-r--r--security/tomoyo/network.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/security/tomoyo/network.c b/security/tomoyo/network.c
index f9ff121d7e1e..a89ed55d85d4 100644
--- a/security/tomoyo/network.c
+++ b/security/tomoyo/network.c
@@ -233,14 +233,14 @@ static bool tomoyo_merge_inet_acl(struct tomoyo_acl_info *a,
{
u8 * const a_perm =
&container_of(a, struct tomoyo_inet_acl, head)->perm;
- u8 perm = *a_perm;
+ u8 perm = READ_ONCE(*a_perm);
const u8 b_perm = container_of(b, struct tomoyo_inet_acl, head)->perm;
if (is_delete)
perm &= ~b_perm;
else
perm |= b_perm;
- *a_perm = perm;
+ WRITE_ONCE(*a_perm, perm);
return !perm;
}
@@ -259,14 +259,14 @@ static bool tomoyo_merge_unix_acl(struct tomoyo_acl_info *a,
{
u8 * const a_perm =
&container_of(a, struct tomoyo_unix_acl, head)->perm;
- u8 perm = *a_perm;
+ u8 perm = READ_ONCE(*a_perm);
const u8 b_perm = container_of(b, struct tomoyo_unix_acl, head)->perm;
if (is_delete)
perm &= ~b_perm;
else
perm |= b_perm;
- *a_perm = perm;
+ WRITE_ONCE(*a_perm, perm);
return !perm;
}