From 22dae167d326036ef3b91eb1d5c45acdaa89eb0c Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 20 Oct 2021 11:07:26 +0200 Subject: [PATCH] winebus.sys: Treat udev actions other than "remove" as "add". MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As per https://github.com/systemd/systemd/blob/v247-rc1/NEWS#L5 there are more kernel uevent types than just "add" and "remove", and we should be treating everything other than "remove" as being potentially an "add". To cope with this, try_add_device() now checks whether the same device was already added. If so, we ignore it. Signed-off-by: RĂ©mi Bernon Signed-off-by: Alexandre Julliard --- dlls/winebus.sys/bus_udev.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c index 1dfce05e4bc..57e5a169a69 100644 --- a/dlls/winebus.sys/bus_udev.c +++ b/dlls/winebus.sys/bus_udev.c @@ -1404,16 +1404,14 @@ static void process_monitor_event(struct udev_monitor *monitor) if (!action) WARN("No action received\n"); - else if (strcmp(action, "add") == 0) + else if (strcmp(action, "remove")) udev_add_device(dev); - else if (strcmp(action, "remove") == 0) + else { impl = find_device_from_udev(dev); if (impl) bus_event_queue_device_removed(&event_queue, &impl->unix_device); else WARN("failed to find device for udev device %p\n", dev); } - else - WARN("Unhandled action %s\n", debugstr_a(action)); udev_device_unref(dev); }