From: Thomas Bächler Date: Sun, 31 Jan 2010 12:49:02 +0000 (+0100) Subject: firmware: fix error reporting on missing firmware files X-Git-Tag: 174~619 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=86a7a2f853fe6022c5b0c1b415918047b65533be firmware: fix error reporting on missing firmware files The new firmware loader does not report an error to the kernel if a firmware file is missing. This results in modprobe stalling for 60 seconds for each firmware a module tries to load. --- diff --git a/extras/firmware/firmware.c b/extras/firmware/firmware.c index 8f70be42a..16455dec8 100644 --- a/extras/firmware/firmware.c +++ b/extras/firmware/firmware.c @@ -149,6 +149,7 @@ int main(int argc, char **argv) util_path_encode(firmware, fwencpath, sizeof(fwencpath)); util_strscpyl(misspath, sizeof(misspath), udev_get_dev_path(udev), "/.udev/firmware-missing/", fwencpath, NULL); + util_strscpyl(loadpath, sizeof(loadpath), udev_get_sys_path(udev), devpath, "/loading", NULL); if (fwfile == NULL) { int err; @@ -166,6 +167,7 @@ int main(int argc, char **argv) udev_selinux_resetfscreatecon(udev); } while (err == -ENOENT); rc = 2; + set_loading(udev, loadpath, "-1"); goto exit; } @@ -176,7 +178,6 @@ int main(int argc, char **argv) if (unlink(misspath) == 0) util_delete_path(udev, misspath); - util_strscpyl(loadpath, sizeof(loadpath), udev_get_sys_path(udev), devpath, "/loading", NULL); set_loading(udev, loadpath, "1"); util_strscpyl(datapath, sizeof(datapath), udev_get_sys_path(udev), devpath, "/data", NULL);