Message ID | 20230126052558.572634-4-alxndr@bu.edu (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | memory: prevent dma-reentracy issues | expand |
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 --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);
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(+)