[PATCH] HID: fix semantic patch and improve its performance

Subsystems: coccinelle/semantic patches (smpl), the rest

COLD27d

5 messages, 3 authors, 27d ago · open the first message on its own page

[PATCH] HID: fix semantic patch and improve its performance

From: Julia Lawall <Julia.Lawall@inria.fr>
Date: 2026-08-27 11:30:02

Replace "expression" with "identifier" in the declaration of hdev.
This is necessary because hdev is used as the name of a function
parameter.

Move the two uses of @p2 to the relevant function names.

Convert <... ...>, meaning that the contained pattern is optional,
to use ..., when any, and exists.  This requires that the function
contain calls to hid_hw_start, etc, which reduces the set of files
that are considered for matching against this pattern.

Reported-by: Ricardo Ribalda <redacted>
Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>

---
 scripts/coccinelle/hid/ff_race.cocci |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/scripts/coccinelle/hid/ff_race.cocci b/scripts/coccinelle/hid/ff_race.cocci
index 479f5d1e3..e861de00c 100644
--- a/scripts/coccinelle/hid/ff_race.cocci
+++ b/scripts/coccinelle/hid/ff_race.cocci
@@ -7,18 +7,19 @@
 
 virtual report
 
-@r@
+@r exists@
 identifier probe_fn;
-expression hdev, flags;
+identifier hdev;
+expression flags;
 position p1, p2;
 @@
 
 probe_fn(struct hid_device *hdev, ...) {
-  <...
+  ... when any
   hid_hw_start@p1(hdev, flags)
   ...
-  \(input_ff_create\|input_ff_create_memless\)@p2(...)
-  ...>
+  \(input_ff_create@p2\|input_ff_create_memless@p2\)(...)
+  ... when any
 }
 
 @script:python depends on report@

Re: [cocci] [PATCH] HID: fix semantic patch and improve its performance

From: Markus Elfring <hidden>
Date: 2026-08-27 11:51:26

Replace "expression" with "identifier" in the declaration of hdev.
This is necessary because hdev is used as the name of a function
parameter.
…
quoted hunk
+++ b/scripts/coccinelle/hid/ff_race.cocci
…
quoted hunk
-@r@
+@r exists@
 identifier probe_fn;
-expression hdev, flags;
+identifier hdev;
May the following SmPL code variant be applied?

 identifier hdev, probe_fn;

quoted hunk
+expression flags;
 position p1, p2;
 @@
 
 probe_fn(struct hid_device *hdev, ...) {
-  <...
+  ... when any
   hid_hw_start@p1(hdev, flags)
   ...
-  \(input_ff_create\|input_ff_create_memless\)@p2(...)
-  ...>
+  \(input_ff_create@p2\|input_ff_create_memless@p2\)(...)
How do you think about to use the following SmPL code variation?

(input_ff_create@p2
|input_ff_create_memless@p2
)(...)

quoted hunk
+  ... when any
 }
 
 @script:python depends on report@
Regards,
Markus

Re: [cocci] [PATCH] HID: fix semantic patch and improve its performance

From: Julia Lawall <julia.lawall@inria.fr>
Date: 2026-08-27 12:00:08


On Thu, 27 Aug 2026, Markus Elfring wrote:
quoted
Replace "expression" with "identifier" in the declaration of hdev.
This is necessary because hdev is used as the name of a function
parameter.
…
quoted
+++ b/scripts/coccinelle/hid/ff_race.cocci
…
quoted
-@r@
+@r exists@
 identifier probe_fn;
-expression hdev, flags;
+identifier hdev;
May the following SmPL code variant be applied?

 identifier hdev, probe_fn;
Yes, but it doesn't matter.
quoted
+expression flags;
 position p1, p2;
 @@

 probe_fn(struct hid_device *hdev, ...) {
-  <...
+  ... when any
   hid_hw_start@p1(hdev, flags)
   ...
-  \(input_ff_create\|input_ff_create_memless\)@p2(...)
-  ...>
+  \(input_ff_create@p2\|input_ff_create_memless@p2\)(...)
How do you think about to use the following SmPL code variation?

(input_ff_create@p2
|input_ff_create_memless@p2
)(...)
I find this completely unreadable.

julia
quoted
+  ... when any
 }

 @script:python depends on report@
Regards,
Markus

Re: [cocci] [PATCH] HID: fix semantic patch and improve its performance

From: Markus Elfring <hidden>
Date: 2026-08-27 12:09:02

quoted
…
quoted
+++ b/scripts/coccinelle/hid/ff_race.cocci
…
quoted
-@r@
+@r exists@
 identifier probe_fn;
-expression hdev, flags;
+identifier hdev;
May the following SmPL code variant be applied?

 identifier hdev, probe_fn;
Yes, but it doesn't matter.
Can it occasionally matter to avoid the duplication of such an SmPL key word?

Can SmPL variable declarations become a bit shorter?

quoted
quoted
+expression flags;
 position p1, p2;
 @@

 probe_fn(struct hid_device *hdev, ...) {
-  <...
+  ... when any
   hid_hw_start@p1(hdev, flags)
   ...
-  \(input_ff_create\|input_ff_create_memless\)@p2(...)
-  ...>
+  \(input_ff_create@p2\|input_ff_create_memless@p2\)(...)
How do you think about to use the following SmPL code variation?

(input_ff_create@p2
|input_ff_create_memless@p2
)(...)
I find this completely unreadable.
I find this view surprising.

There are special views involved for the layout of such SmPL disjunctions.

Regards,
Markus

Re: [PATCH] HID: fix semantic patch and improve its performance

From: Jiri Kosina <jikos@kernel.org>
Date: 2026-09-11 14:52:31

On Thu, 27 Aug 2026, Julia Lawall wrote:
Replace "expression" with "identifier" in the declaration of hdev.
This is necessary because hdev is used as the name of a function
parameter.

Move the two uses of @p2 to the relevant function names.

Convert <... ...>, meaning that the contained pattern is optional,
to use ..., when any, and exists.  This requires that the function
contain calls to hid_hw_start, etc, which reduces the set of files
that are considered for matching against this pattern.

Reported-by: Ricardo Ribalda <redacted>
Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
Applied, thank you.

-- 
Jiri Kosina
SUSE Labs
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help