Re: [cocci] [PATCH 02/21] HID: add documentation and Coccinelle script for FF registration race

Julia Lawall <[email protected]>
Newsgroups fr.inria.cocci,org.kernel.vger.linux-doc,org.kernel.vger.linux-input,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
> diff --git a/scripts/coccinelle/hid/ff_race.cocci b/scripts/coccinelle/hid/ff_race.cocci
> new file mode 100644
> index 000000000000..479f5d1e3184
> --- /dev/null
> +++ b/scripts/coccinelle/hid/ff_race.cocci
> @@ -0,0 +1,34 @@
> +/// Detect HID drivers that initialize force-feedback after hid_hw_start()
> +/// when HID_CONNECT_HIDINPUT is used. This is a lifecycle violation as
> +/// the input device is already registered.
> +//
> +// Confidence: High
> +// Copyright: (C) 2026 Gemini. GPLv2.
> +
> +virtual report
> +
> +@r@
> +identifier probe_fn;
> +expression hdev, flags;
> +position p1, p2;
> +@@
> +
> +probe_fn(struct hid_device *hdev, ...) {
> +  <...
> +  hid_hw_start@p1(hdev, flags)
> +  ...
> +  \(input_ff_create\|input_ff_create_memless\)@p2(...)
> +  ...>
> +}


This seems unnecessarily costly.  The pattern can be just:

hid_hw_start@p1(hdev, flags)
...
\(input_ff_create\|input_ff_create_memless\)@p2(...)

Or does it matter that struct hid_device *hdev is the first parameter
of the enclosing function?

julia

> +
> +@script:python depends on report@
> +p1 << r.p1;
> +p2 << r.p2;
> +flags << r.flags;
> +@@
> +
> +# Check if flags include HID_CONNECT_HIDINPUT (0x01) or HID_CONNECT_DEFAULT (0x0f)
> +# Note: HID_CONNECT_DEFAULT is 0x0f, HID_CONNECT_HIDINPUT is 0x01
> +if "HID_CONNECT_HIDINPUT" in flags or "HID_CONNECT_DEFAULT" in flags:
> +    msg = "WARNING: force-feedback initialized after hid_hw_start() with HID_CONNECT_HIDINPUT. Input device is already registered at this point. Use .input_configured() instead."
> +    coccilib.report.print_report(p2[0], msg)
>
> --
> 2.55.0.629.g250fe7f194-goog
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.