[PATCH] Search /lib/firmware/updates and /tmp/DD/lib/firmware/updates

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



New version of this patch, we need to prepend the paths.

Resolves: rhbz#784327
---
 loader/driverdisk.c |    8 +++-----
 loader/driverdisk.h |    1 +
 loader/fwloader.c   |    7 +++++++
 loader/fwloader.h   |    1 +
 loader/loader.c     |    2 +-
 5 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/loader/driverdisk.c b/loader/driverdisk.c
index 707c253..092de64 100644
--- a/loader/driverdisk.c
+++ b/loader/driverdisk.c
@@ -300,7 +300,6 @@ static int loadDriverDisk(struct loaderData_s *loaderData, char *mntpt) {
     /* FIXME moduleInfoSet modInfo = loaderData->modInfo; */
     char file[200], dest[200], src[200];
     char *title;
-    char *fwdir = NULL;
     struct moduleBallLocation * location;
     struct stat sb;
     static int disknum = 0;
@@ -374,13 +373,12 @@ static int loadDriverDisk(struct loaderData_s *loaderData, char *mntpt) {
       logMessage(ERROR, "Error running depmod -a for driverdisc no.%d", disknum);
     }
 
-    checked_asprintf(&fwdir, DD_FIRMWARE);
-    if (!access(fwdir, R_OK|X_OK)) {
-        add_fw_search_dir(loaderData, fwdir);
+    if (!access(DD_FIRMWARE, R_OK|X_OK)) {
+        insert_fw_search_dir(loaderData, DD_FIRMWARE);
+        insert_fw_search_dir(loaderData, DD_FIRMWARE_UPDATES);
         stop_fw_loader(loaderData);
         start_fw_loader(loaderData);
     }
-    free(fwdir);
 
     /* TODO generate and read module info
      *
diff --git a/loader/driverdisk.h b/loader/driverdisk.h
index 4dc8685..d70fe49 100644
--- a/loader/driverdisk.h
+++ b/loader/driverdisk.h
@@ -28,6 +28,7 @@
 #define DD_EXTRACTED "/tmp/DD"
 #define DD_MODULES "/tmp/DD/lib/modules"
 #define DD_FIRMWARE "/tmp/DD/lib/firmware"
+#define DD_FIRMWARE_UPDATES "/tmp/DD/lib/firmware/updates"
 
 extern char *ddFsTypes[];
 
diff --git a/loader/fwloader.c b/loader/fwloader.c
index a91ff6b..902c63f 100644
--- a/loader/fwloader.c
+++ b/loader/fwloader.c
@@ -604,6 +604,13 @@ void add_fw_search_dir(struct loaderData_s *loaderData, char *dir)
             dir);
 }
 
+void insert_fw_search_dir(struct loaderData_s *loaderData, char *dir)
+{
+    argz_insert(&loaderData->fw_search_pathz, &loaderData->fw_search_pathz_len,
+                loaderData->fw_search_pathz, dir);
+}
+
+
 void do_fw_loader(struct loaderData_s *loaderData)
 {
     struct fw_loader fwl;
diff --git a/loader/fwloader.h b/loader/fwloader.h
index e0b0fe8..daa69ec 100644
--- a/loader/fwloader.h
+++ b/loader/fwloader.h
@@ -26,6 +26,7 @@
 
 extern void set_fw_search_path(struct loaderData_s *loaderData, char *path);
 extern void add_fw_search_dir(struct loaderData_s *loaderData, char *dir);
+extern void insert_fw_search_dir(struct loaderData_s *loaderData, char *dir);
 extern void start_fw_loader(struct loaderData_s *loaderData);
 extern void stop_fw_loader(struct loaderData_s *loaderData);
 
diff --git a/loader/loader.c b/loader/loader.c
index 177d8a3..5bbb7c1 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -2079,7 +2079,7 @@ int main(int argc, char ** argv) {
     }
     if (hasGraphicalOverride())
         flags |= LOADER_FLAGS_EARLY_NETWORKING;
-    set_fw_search_path(&loaderData, "/firmware:/lib/firmware");
+    set_fw_search_path(&loaderData, "/lib/firmware/updates:/firmware:/lib/firmware");
     start_fw_loader(&loaderData);
 
     arg = "/lib/modules/module-info";
-- 
1.7.4.4

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list


[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux