diff options
Diffstat (limited to 'kernel/acct.c')
-rw-r--r-- | kernel/acct.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/acct.c b/kernel/acct.c index 85389fe2abd0..8d6e145138bb 100644 --- a/kernel/acct.c +++ b/kernel/acct.c | |||
@@ -540,10 +540,15 @@ static void do_acct_process(struct bsd_acct_struct *acct, | |||
540 | ac.ac_swaps = encode_comp_t(0); | 540 | ac.ac_swaps = encode_comp_t(0); |
541 | 541 | ||
542 | /* | 542 | /* |
543 | * Get freeze protection. If the fs is frozen, just skip the write | ||
544 | * as we could deadlock the system otherwise. | ||
545 | */ | ||
546 | if (!file_start_write_trylock(file)) | ||
547 | goto out; | ||
548 | /* | ||
543 | * Kernel segment override to datasegment and write it | 549 | * Kernel segment override to datasegment and write it |
544 | * to the accounting file. | 550 | * to the accounting file. |
545 | */ | 551 | */ |
546 | file_start_write(file); | ||
547 | fs = get_fs(); | 552 | fs = get_fs(); |
548 | set_fs(KERNEL_DS); | 553 | set_fs(KERNEL_DS); |
549 | /* | 554 | /* |