diff mbox series

[v5,3/4] checkpatch: add qemu_bh_new/aio_bh_new checks

Message ID 20230126052558.572634-4-alxndr@bu.edu
State New
Headers show
Series memory: prevent dma-reentracy issues | expand

Commit Message

Alexander Bulekov Jan. 26, 2023, 5:25 a.m. UTC
Advise authors to use the _guarded versions of the APIs, instead.

Signed-off-by: Alexander Bulekov <alxndr@bu.edu>
---
 scripts/checkpatch.pl | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Stefan Hajnoczi Jan. 26, 2023, 2:57 p.m. UTC | #1
On Thu, Jan 26, 2023 at 12:25:57AM -0500, Alexander Bulekov wrote:
> Advise authors to use the _guarded versions of the APIs, instead.
> 
> Signed-off-by: Alexander Bulekov <alxndr@bu.edu>
> ---
>  scripts/checkpatch.pl | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 6ecabfb2b5..61bb4b0a19 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -2865,6 +2865,14 @@ sub process {
>  		if ($line =~ /\bsignal\s*\(/ && !($line =~ /SIG_(?:IGN|DFL)/)) {
>  			ERROR("use sigaction to establish signal handlers; signal is not portable\n" . $herecurr);
>  		}
> +# recommend qemu_bh_new_guarded instead of qemu_bh_new
> +        if ($line =~ /\bqemu_bh_new\s*\(/) {
> +			ERROR("use qemu_bh_new_guarded() instead of qemu_bh_new() to avoid reentrancy problems\n" . $herecurr);
> +		}
> +# recommend aio_bh_new_guarded instead of aio_bh_new
> +        if ($line =~ /\baio_bh_new\s*\(/) {
> +			ERROR("use aio_bh_new_guarded() instead of aio_bh_new() to avoid reentrancy problems\n" . $herecurr);
> +		}

These checks should be limited to source code in hw/. Other directories
can use BHs without MemReentrancyGuard.

Stefan
diff mbox series

Patch

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 6ecabfb2b5..61bb4b0a19 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2865,6 +2865,14 @@  sub process {
 		if ($line =~ /\bsignal\s*\(/ && !($line =~ /SIG_(?:IGN|DFL)/)) {
 			ERROR("use sigaction to establish signal handlers; signal is not portable\n" . $herecurr);
 		}
+# recommend qemu_bh_new_guarded instead of qemu_bh_new
+        if ($line =~ /\bqemu_bh_new\s*\(/) {
+			ERROR("use qemu_bh_new_guarded() instead of qemu_bh_new() to avoid reentrancy problems\n" . $herecurr);
+		}
+# recommend aio_bh_new_guarded instead of aio_bh_new
+        if ($line =~ /\baio_bh_new\s*\(/) {
+			ERROR("use aio_bh_new_guarded() instead of aio_bh_new() to avoid reentrancy problems\n" . $herecurr);
+		}
 # check for module_init(), use category-specific init macros explicitly please
 		if ($line =~ /^module_init\s*\(/) {
 			ERROR("please use block_init(), type_init() etc. instead of module_init()\n" . $herecurr);