From 878ded6621a7b8d4385aaf2c4217bcacbe5a3635 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 25 Jul 2011 04:10:14 +0200 Subject: udev: Fix race condition with Novatel modem detection --- plugins/udev.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'plugins/udev.c') diff --git a/plugins/udev.c b/plugins/udev.c index 54b86a9d..90d0aad8 100644 --- a/plugins/udev.c +++ b/plugins/udev.c @@ -399,8 +399,9 @@ static void add_novatel(struct ofono_modem *modem, DBG("modem %p", modem); registered = ofono_modem_get_integer(modem, "Registered"); - if (registered != 0) - return; + + if (registered > 1) + return; intfnum = get_property(udev_device, "ID_USB_INTERFACE_NUM"); @@ -409,13 +410,17 @@ static void add_novatel(struct ofono_modem *modem, if (g_strcmp0(intfnum, "00") == 0) { devnode = udev_device_get_devnode(udev_device); ofono_modem_set_string(modem, "PrimaryDevice", devnode); + + ofono_modem_set_integer(modem, "Registered", ++registered); } else if (g_strcmp0(intfnum, "01") == 0) { devnode = udev_device_get_devnode(udev_device); ofono_modem_set_string(modem, "SecondaryDevice", devnode); - ofono_modem_set_integer(modem, "Registered", 1); - ofono_modem_register(modem); + ofono_modem_set_integer(modem, "Registered", ++registered); } + + if (registered > 1) + ofono_modem_register(modem); } static void add_nokia(struct ofono_modem *modem, -- cgit v1.2.3