Author: ian
Date: Wed Jan 30 23:49:36 2013
New Revision: 246135
URL: http://svnweb.freebsd.org/changeset/base/246135

Log:
  Do metadata relocation fixup on all loaded modules, not just the kernel.
  
  Approved by:  cognet (mentor)

Modified:
  head/sys/boot/uboot/common/metadata.c

Modified: head/sys/boot/uboot/common/metadata.c
==============================================================================
--- head/sys/boot/uboot/common/metadata.c       Wed Jan 30 23:37:35 2013        
(r246134)
+++ head/sys/boot/uboot/common/metadata.c       Wed Jan 30 23:49:36 2013        
(r246135)
@@ -369,12 +369,15 @@ md_load(char *args, vm_offset_t *modulep
        /* Convert addresses to the final VA */
        *modulep -= __elfN(relocation_offset);
 
-       for (i = 0; i < sizeof mdt / sizeof mdt[0]; i++) {
-               md = file_findmetadata(kfp, mdt[i]);
-               if (md) {
-                       bcopy(md->md_data, &vaddr, sizeof vaddr);
-                       vaddr -= __elfN(relocation_offset);
-                       bcopy(&vaddr, md->md_data, sizeof vaddr);
+       /* Do relocation fixup on metadata of each module. */
+       for (xp = file_findfile(NULL, NULL); xp != NULL; xp = xp->f_next) {
+               for (i = 0; i < sizeof mdt / sizeof mdt[0]; i++) {
+                       md = file_findmetadata(xp, mdt[i]);
+                       if (md) {
+                               bcopy(md->md_data, &vaddr, sizeof vaddr);
+                               vaddr -= __elfN(relocation_offset);
+                               bcopy(&vaddr, md->md_data, sizeof vaddr);
+                       }
                }
        }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to