Skip to content

Commit a8772fa

Browse files
Tetsuo HandaTetsuo Handa
authored andcommitted
tomoyo: Use atomic_t for statistics counter
syzbot is reporting that there is a race at tomoyo_stat_update() [1]. Although it is acceptable to fail to track exact number of times policy was updated, convert to atomic_t because this is not a hot path. [1] https://syzkaller.appspot.com/bug?id=a4d7b973972eeed410596e6604580e0133b0fc04 Reported-by: syzbot <[email protected]> Signed-off-by: Tetsuo Handa <[email protected]>
1 parent 738d290 commit a8772fa

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

security/tomoyo/common.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2322,9 +2322,9 @@ static const char * const tomoyo_memory_headers[TOMOYO_MAX_MEMORY_STAT] = {
23222322
[TOMOYO_MEMORY_QUERY] = "query message:",
23232323
};
23242324

2325-
/* Timestamp counter for last updated. */
2326-
static unsigned int tomoyo_stat_updated[TOMOYO_MAX_POLICY_STAT];
23272325
/* Counter for number of updates. */
2326+
static atomic_t tomoyo_stat_updated[TOMOYO_MAX_POLICY_STAT];
2327+
/* Timestamp counter for last updated. */
23282328
static time64_t tomoyo_stat_modified[TOMOYO_MAX_POLICY_STAT];
23292329

23302330
/**
@@ -2336,10 +2336,7 @@ static time64_t tomoyo_stat_modified[TOMOYO_MAX_POLICY_STAT];
23362336
*/
23372337
void tomoyo_update_stat(const u8 index)
23382338
{
2339-
/*
2340-
* I don't use atomic operations because race condition is not fatal.
2341-
*/
2342-
tomoyo_stat_updated[index]++;
2339+
atomic_inc(&tomoyo_stat_updated[index]);
23432340
tomoyo_stat_modified[index] = ktime_get_real_seconds();
23442341
}
23452342

@@ -2360,7 +2357,7 @@ static void tomoyo_read_stat(struct tomoyo_io_buffer *head)
23602357
for (i = 0; i < TOMOYO_MAX_POLICY_STAT; i++) {
23612358
tomoyo_io_printf(head, "Policy %-30s %10u",
23622359
tomoyo_policy_headers[i],
2363-
tomoyo_stat_updated[i]);
2360+
atomic_read(&tomoyo_stat_updated[i]));
23642361
if (tomoyo_stat_modified[i]) {
23652362
struct tomoyo_time stamp;
23662363

0 commit comments

Comments
 (0)