From 320de9f89fbae08027ec0479b338cfc612e24c04 Mon Sep 17 00:00:00 2001 From: Pierrick Bouvier Date: Mon, 15 Jun 2026 12:35:23 -0700 Subject: [PATCH] scripts/checkpatch: ignore spaces required around some operators in C++ C++ has a different style when it comes to space around references, dereferences, so don't report it. Also, closing templates with >> gets wrongly confused with >> operator, so just relax this check. Some examples: ERROR: spaces required around that '&' (ctx:WxV) + auto &[counter, p] = *static_cast(udata); ^ ERROR: spaces required around that '*' (ctx:VxO) + auto &[counter, p] = *static_cast(udata); ^ ERROR: spaces required around that '>>' (ctx:VxW) + std::vector> v; ^ Reviewed-by: Peter Maydell Reviewed-by: Manos Pitsidianakis Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-25-pierrick.bouvier@oss.qualcomm.com Signed-off-by: Pierrick Bouvier --- scripts/checkpatch.pl | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 2189db19f5..538e059e26 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -2621,6 +2621,31 @@ sub process { if ($op eq '::') { $ok = 1; } + + # Ignore * in C++: templates and + # pointer types are incorrectly + # flagged. Example: + # static_cast + if ($op eq '*') { + $ok = 1; + } + + # Ignore & in C++: & means a + # reference, and this create + # issues with some constructions. + # Example: + # auto &[first, second] = pair; + if ($op eq '&') { + $ok = 1; + } + + # Ignore >> in C++ + # checkpatch is confused by + # >> closing templates. Example: + # vector> + if ($op eq '>>') { + $ok = 1; + } } # Ignore email addresses