[clang-tidy] Add a module for the Linux kernel.
Summary:
Now that clang is going to be able to build the Linux kernel again on
x86, and we have gen_compile_commands.py upstream for generating
compile_commands.json, clang-tidy can be used on the Linux kernel
source.
To that end, this commit adds a new clang-tidy module to be used for
checks specific to Linux kernel source. The Linux kernel follows its own
style of C, and it will be useful to separate those checks into their
own module.
This also adds an initial check that makes sure that return values from
the kernel error functions like PTR_ERR and ERR_PTR are checked. It also
makes sure that any functions that directly return values from these
functions are checked.
Subscribers: xazax.hun, gribozavr, Eugene.Zelenko, lebedev.ri, mgorny, jdoerfert, cfe-commits
Tags: #clang, #clang-tools-extra
Reviewers: aaron.ballman, alexfh, hokein, JonasToth
Differential Revision: https://reviews.llvm.org/D59963
llvm-svn: 367071
2019-07-26 06:32:50 +08:00
|
|
|
.. title:: clang-tidy - linuxkernel-must-use-errs
|
|
|
|
|
|
|
|
linuxkernel-must-use-errs
|
|
|
|
=========================
|
|
|
|
|
2019-07-31 00:49:28 +08:00
|
|
|
Checks Linux kernel code to see if it uses the results from the functions in
|
|
|
|
``linux/err.h``. Also checks to see if code uses the results from functions that
|
|
|
|
directly return a value from one of these error functions.
|
|
|
|
|
|
|
|
This is important in the Linux kernel because ``ERR_PTR``, ``PTR_ERR``,
|
|
|
|
``IS_ERR``, ``IS_ERR_OR_NULL``, ``ERR_CAST``, and ``PTR_ERR_OR_ZERO`` return
|
|
|
|
values must be checked, since positive pointers and negative error codes are
|
|
|
|
being used in the same context. These functions are marked with
|
|
|
|
``__attribute__((warn_unused_result))``, but some kernel versions do not have
|
|
|
|
this warning enabled for clang.
|
[clang-tidy] Add a module for the Linux kernel.
Summary:
Now that clang is going to be able to build the Linux kernel again on
x86, and we have gen_compile_commands.py upstream for generating
compile_commands.json, clang-tidy can be used on the Linux kernel
source.
To that end, this commit adds a new clang-tidy module to be used for
checks specific to Linux kernel source. The Linux kernel follows its own
style of C, and it will be useful to separate those checks into their
own module.
This also adds an initial check that makes sure that return values from
the kernel error functions like PTR_ERR and ERR_PTR are checked. It also
makes sure that any functions that directly return values from these
functions are checked.
Subscribers: xazax.hun, gribozavr, Eugene.Zelenko, lebedev.ri, mgorny, jdoerfert, cfe-commits
Tags: #clang, #clang-tools-extra
Reviewers: aaron.ballman, alexfh, hokein, JonasToth
Differential Revision: https://reviews.llvm.org/D59963
llvm-svn: 367071
2019-07-26 06:32:50 +08:00
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
|
|
|
.. code-block:: c
|
|
|
|
|
|
|
|
/* Trivial unused call to an ERR function */
|
|
|
|
PTR_ERR_OR_ZERO(some_function_call());
|
|
|
|
|
|
|
|
/* A function that returns ERR_PTR. */
|
|
|
|
void *fn() { ERR_PTR(-EINVAL); }
|
|
|
|
|
|
|
|
/* An invalid use of fn. */
|
|
|
|
fn();
|