Skip to content

Commit

Permalink
kernel: make kcov_common_handle consider the current context
Browse files Browse the repository at this point in the history
kcov_common_handle is a method that is used to obtain a "default" KCOV
remote handle of the current process. The handle can later be passed
to kcov_remote_start in order to collect coverage for the processing
that is initiated by one process, but done in another. For details see
Documentation/dev-tools/kcov.rst and comments in kernel/kcov.c.

Presently, if kcov_common_handle is called in an IRQ context, it will
return a handle for the interrupted process. This may lead to
unreliable and incorrect coverage collection.

Adjust the behavior of kcov_common_handle in the following way. If it
is called in a task context, return the common handle for the
currently running task. Otherwise, return 0.

Signed-off-by: Aleksandr Nogikh <[email protected]>
Reviewed-by: Andrey Konovalov <[email protected]>
Signed-off-by: Jakub Kicinski <[email protected]>
  • Loading branch information
a-nogikh authored and kuba-moo committed Nov 3, 2020
1 parent 0e8c266 commit b08e84d
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions kernel/kcov.c
Original file line number Diff line number Diff line change
Expand Up @@ -1023,6 +1023,8 @@ EXPORT_SYMBOL(kcov_remote_stop);
/* See the comment before kcov_remote_start() for usage details. */
u64 kcov_common_handle(void)
{
if (!in_task())
return 0;
return current->kcov_handle;
}
EXPORT_SYMBOL(kcov_common_handle);
Expand Down

0 comments on commit b08e84d

Please sign in to comment.