From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A9A872DEA93 for ; Mon, 17 Aug 2026 04:03:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786939426; cv=none; b=OYvw7+QHytGg81CLkvb1CiBrjMxqFRhPp/1G2QFQeMxZnSShFyF5diSLAKRFo1Df8EnuAdDb+w9qO7bUheOKTKD7bw15oYO9B8whDRlj/rPjBrac4ibaAfObZiIdFqmNhvXaW+4T6yoPcsxIP3Tm3Wn/H5G9URYXFpIicsgSt+w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786939426; c=relaxed/simple; bh=+gWzjDUObb8T8GNGrc3WT5wMpsR/A53me91WisAXjrk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=DFv4W6tR2tX/cQJcXA/lEsrJmkBHc5nEI9Bs0KC223/8fzsfTacH2izJ7YvmnqtfkpHVrxUUh1ADhu9+6JiOhr8GEAWV9w1dDS6YY8btLK5XN1s7xbsP86jXUj/CaCfhUAErDWmo6p/2shjXldfvkDmtvKR8y67WAXnq6ZtG9Hs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=tALYs4gj; arc=none smtp.client-ip=209.85.216.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="tALYs4gj" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-38f0f132f56so3219534a91.0 for ; Sun, 16 Aug 2026 21:03:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786939425; x=1787544225; darn=vger.kernel.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=WNZ1E4rL+SU/YqoSMpvG/W9/4ld37Pvt6CrdV4W2B6A=; b=tALYs4gjQvZjxX/D0sNIn1ojNocXBGbY4bxYASj1aFvlz9Rh/Qi4bxfxBAMN9ZG9t2 cS/qvW8R91o3I/wCitGsxTyf70o3m/QLL9zXRH7vyidOPQD1bfTYuaVwuDEE0Dsc9+bV Wznxeo++/qatUjSqxAxh7cvmJAGKzdqpCxZ10N8qXo9Fo073PSTRnvAKPyFytVYaPloe hj0lFmOmjkxZztDQtOxucpPgsW12/n5e3oC+IbfImyHZqzqyTwc+aiVfnso6EmGzMEpq d+wFFYz9wwTvAeChOTzDlcWQth6west5IDTc0irPWgBEgj7R9xlUN/bkUH+VUA8U/KC0 GPNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786939425; x=1787544225; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=WNZ1E4rL+SU/YqoSMpvG/W9/4ld37Pvt6CrdV4W2B6A=; b=qVBg3GH25FF+4MYqtItTOa0bp963+WbXVJ2PVKVZUobH209WySDojafCipXvbsG/ZR tZVaAGfdbQrryaH6uv1UVk6YX7xsM8LvmrlyiLMhCj9rHw4ViTy9QWty/HVI+Io1KxEJ xJ9e4ebJ5ABfuuXAGXnT9Nezm2Q2+vzarkCOhBdE1VpPtT4Ojfbs6is/sg1WpqS3N7Jv b78kntTN00PNzAwTgC31N75C1XHCfi6V49I1yNZXyrMDRFRTdUbp7d3dF4D9cklulk8Y VEZKMZKQ0DaK4n7uSgsFHjwF4nTb3Ul2pYCIPO5YyAtMjFuGb5IoydFkIRXY26j0h/tF Y0JA== X-Forwarded-Encrypted: i=1; AHgh+Rp0jNn6J8a8c8JNr0mqoI9XZifiiQFHIxu8C7/mgClKbpNdsiYHy8/iPxMhFu1uo2U2WxDxXFKC9pYtNdM=@vger.kernel.org X-Gm-Message-State: AOJu0YwSUZ/CYhzMNATI7d1mXdRhJz/JEmoKLvpBOGbOPXIJ/eC5wIXt QAhlDS573p7duuP8b3NWtX08pjOgddsF3xT9IwtwYXQFSMSDqGT8vUEa X-Gm-Gg: AR+sD12vyhW4vJjlVSGVLZ4fSt96LUvDpSQG/rTDq7MbFS5t38u4SludsT8EGSZdU+W cPgKVlMXENKXxZwTsF2smcO+7BcUoVPJuPLsr6Ml1tRIKPUVjA0kJr80LFJxKGq3mxetIQmj9cA Vhuj+7gpa5Ugj0nLOegGMxuCOi5H6E26rIen4CkzS1OM7ss4Ckz4nKL5o1YOIoCubWIreXB8Kp7 /qV4K/0VYf3zpjLOO9ehRklPWW5Zc0uCbOK5+gkay3z+KdGmFKB61hY6USoa28fxG3ZLBjDDmWO HI7UGN9ecE2+0hPbb7NjSDgg+wM7pfOulWxkVj0ibRdaDgXHiB8Ip23AiVDbYxgPr1Rwm/zvEFm BfV1q/xuD7X75kDBAjC8KUOsmosUoI76iA+/da5SrmYql9E4eeCNk+pg/03Ea2Ij5nRohPLubWZ +Ill0HULjhCam229Asno3zZelkn9YVLQ3st4GfUoaBBm1RykqL5IlEzKICivwx6PGmr0oNDnlxj mshI8GDOBMk+dlqp/jU2Omh/ES6jRVGPEBPuhDp X-Received: by 2002:a17:90b:5630:b0:37e:1620:dabc with SMTP id 98e67ed59e1d1-3931f24d641mr23244322a91.0.1786939424631; Sun, 16 Aug 2026 21:03:44 -0700 (PDT) Received: from google.com ([2a00:79e0:2ebe:8:5ab4:90f4:c0f9:b344]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14153064d86sm1615556c88.6.2026.08.16.21.03.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Aug 2026 21:03:43 -0700 (PDT) Date: Sun, 16 Aug 2026 21:03:40 -0700 From: Dmitry Torokhov To: Julia Lawall Cc: Jiri Kosina , Benjamin Tissoires , Jonathan Corbet , Shuah Khan , Nicolas Palix , Filipe =?utf-8?B?TGHDrW5z?= , Bastien Nocera , linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, cocci@inria.fr Subject: Re: [PATCH 02/21] HID: add documentation and Coccinelle script for FF registration race Message-ID: References: <20260803-hid-ff-input-configured-v1-0-1dc9bbacd88c@gmail.com> <20260803-hid-ff-input-configured-v1-2-1dc9bbacd88c@gmail.com> <5e96c91-164f-9ec5-43e4-474189e2a337@inria.fr> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5e96c91-164f-9ec5-43e4-474189e2a337@inria.fr> On Sun, Aug 16, 2026 at 08:52:51PM +0200, Julia Lawall wrote: > > 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? > I guess not. I was trying to limit the check to what looks like HID driver probe function, but that would miss similar issues in helpers that use different order or set of arguments. Thanks. -- Dmitry