summaryrefslogtreecommitdiff
path: root/extras/firmware/firmware.c
diff options
context:
space:
mode:
authorThomas Bächler <thomas@archlinux.org>2010-01-31 13:49:02 +0100
committerKay Sievers <kay.sievers@vrfy.org>2010-01-31 23:04:57 +0100
commit86a7a2f853fe6022c5b0c1b415918047b65533be (patch)
treed8bc564c5953d3ba9b9cc8fed2479ed6743cba23 /extras/firmware/firmware.c
parentf5846e8c220b5408a81582089dbf89162a32ca91 (diff)
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.
Diffstat (limited to 'extras/firmware/firmware.c')
-rw-r--r--extras/firmware/firmware.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/extras/firmware/firmware.c b/extras/firmware/firmware.c
index 8f70be42ac..16455dec8f 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);