[systemd-devel] [PATCH bluez] hid2hci: Fix udev rules for linux-4.14+

Ville Syrjälä ville.syrjala at linux.intel.com
Wed Jun 20 16:46:21 UTC 2018


On Mon, May 07, 2018 at 05:44:59PM +0000, Zbigniew Jędrzejewski-Szmek wrote:
> On Mon, May 07, 2018 at 04:06:38PM +0300, Ville Syrjala wrote:
> > From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > 
> > Since commit 1455cf8dbfd0 ("driver core: emit uevents when
> > device is bound to a driver") the kernel started emitting
> > "bound" and "unbound" uevents which confuse the hid2hci
> > udev rules.
> > 
> > The symptoms on an affected machine (Dell E5400 in my case)
> > include bluetooth devices not appearing and udev hogging
> > the cpu as it's busy processing a constant stream of these
> > "bound"+"unbound" uevents.
> > 
> > Change the udev rules only kick in for an "add" event.
> > This seems to cure my machine at least.
> > 
> > Cc: Dmitry Torokhov <dmitry.torokhov at gmail.com>
> > Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
> > Cc: Marcel Holtmann <marcel at holtmann.org>
> > Cc: Kay Sievers <kay.sievers at vrfy.org>
> > Cc: systemd-devel at lists.freedesktop.org
> > Cc: linux-kernel at vger.kernel.org
> > Cc: linux-bluetooth at vger.kernel.org
> > Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > ---
> >  tools/hid2hci.rules | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/tools/hid2hci.rules b/tools/hid2hci.rules
> > index db6bb03d2ef3..daa381d77387 100644
> > --- a/tools/hid2hci.rules
> > +++ b/tools/hid2hci.rules
> > @@ -1,6 +1,6 @@
> >  # do not edit this file, it will be overwritten on update
> >  
> > -ACTION=="remove", GOTO="hid2hci_end"
> > +ACTION!="add", GOTO="hid2hci_end"
> >  SUBSYSTEM!="usb*", GOTO="hid2hci_end"
> 
> This will skip over lines 22-23. Is the rule there supposed to
> work for ACTION==add only (in which case your patch would be OK),
> or also for ACTION==change? Maybe it'd be safer to just add the GOTO
> for bind/unbind.

Forgot about this one. Thanks for catching that. I think checking for
"add|change" is the sanest approach. I fired off a v2 with that
approach.

Actually I'm not sure if this change stuff is working at all in any
case. On my systems udevadm is in /bin, but this rules file
hardcodes /sbin/udevadm as the path.

-- 
Ville Syrjälä
Intel


More information about the systemd-devel mailing list