diff options
-rw-r--r-- | kernel/acct.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/acct.c b/kernel/acct.c index 0feba97e114e..dd68b9059418 100644 --- a/kernel/acct.c +++ b/kernel/acct.c | |||
@@ -657,7 +657,8 @@ static void acct_process_in_ns(struct pid_namespace *ns) | |||
657 | } | 657 | } |
658 | 658 | ||
659 | /** | 659 | /** |
660 | * acct_process - now just a wrapper around do_acct_process | 660 | * acct_process - now just a wrapper around acct_process_in_ns, |
661 | * which in turn is a wrapper around do_acct_process. | ||
661 | * | 662 | * |
662 | * handles process accounting for an exiting task | 663 | * handles process accounting for an exiting task |
663 | */ | 664 | */ |
@@ -665,6 +666,11 @@ void acct_process(void) | |||
665 | { | 666 | { |
666 | struct pid_namespace *ns; | 667 | struct pid_namespace *ns; |
667 | 668 | ||
669 | /* | ||
670 | * This loop is safe lockless, since current is still | ||
671 | * alive and holds its namespace, which in turn holds | ||
672 | * its parent. | ||
673 | */ | ||
668 | for (ns = task_active_pid_ns(current); ns != NULL; ns = ns->parent) | 674 | for (ns = task_active_pid_ns(current); ns != NULL; ns = ns->parent) |
669 | acct_process_in_ns(ns); | 675 | acct_process_in_ns(ns); |
670 | } | 676 | } |