diff options
author | Thomas Bächler <thomas@archlinux.org> | 2010-01-31 13:49:02 +0100 |
---|---|---|
committer | Kay Sievers <kay.sievers@vrfy.org> | 2010-01-31 23:04:57 +0100 |
commit | 86a7a2f853fe6022c5b0c1b415918047b65533be (patch) | |
tree | d8bc564c5953d3ba9b9cc8fed2479ed6743cba23 /extras/firmware/firmware.c | |
parent | f5846e8c220b5408a81582089dbf89162a32ca91 (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.c | 3 |
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); |