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