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

Julia Lawall posted 1 patch 1 month ago
scripts/coccinelle/hid/ff_race.cocci |   11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
[PATCH] HID: fix semantic patch and improve its performance
Posted by Julia Lawall 1 month ago
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 <ribalda@chromium.org>
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: [PATCH] HID: fix semantic patch and improve its performance
Posted by Jiri Kosina 2 weeks, 1 day ago
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 <ribalda@chromium.org>
> Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>

Applied, thank you.

-- 
Jiri Kosina
SUSE Labs
Re: [cocci] [PATCH] HID: fix semantic patch and improve its performance
Posted by Markus Elfring 1 month ago
> Replace "expression" with "identifier" in the declaration of hdev.
> This is necessary because hdev is used as the name of a function
> parameter.
…
> +++ b/scripts/coccinelle/hid/ff_race.cocci
…
> -@r@
> +@r exists@
>  identifier probe_fn;
> -expression hdev, flags;
> +identifier hdev;

May the following SmPL code variant be applied?

 identifier hdev, probe_fn;


> +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
)(...)


> +  ... when any
>  }
>  
>  @script:python depends on report@

Regards,
Markus
Re: [cocci] [PATCH] HID: fix semantic patch and improve its performance
Posted by Julia Lawall 1 month ago

On Thu, 27 Aug 2026, Markus Elfring wrote:

> > Replace "expression" with "identifier" in the declaration of hdev.
> > This is necessary because hdev is used as the name of a function
> > parameter.
> …
> > +++ b/scripts/coccinelle/hid/ff_race.cocci
> …
> > -@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.

>
>
> > +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

>
>
> > +  ... when any
> >  }
> >
> >  @script:python depends on report@
>
> Regards,
> Markus
>
Re: [cocci] [PATCH] HID: fix semantic patch and improve its performance
Posted by Markus Elfring 1 month ago
>> …
>>> +++ b/scripts/coccinelle/hid/ff_race.cocci
>> …
>>> -@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?


>>> +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