Do metadata relocation fixup on all loaded modules, not just the kernel.
Approved by: cognet (mentor)
This commit is contained in:
parent
5dfc0f6c53
commit
33f9e1bd94
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=246135
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user