Additional icache paranoia: non-PLT relocations can modify the text segment.
It is then important to make sure the icache is synchronized again to prevent (rare) random seg faults and illegal instructions. MFC after: 3 days
This commit is contained in:
parent
270e7ed83a
commit
f8b4a766de
@ -317,6 +317,10 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, RtldLockState *lockstate)
|
||||
done:
|
||||
if (cache != NULL)
|
||||
free(cache);
|
||||
|
||||
/* Synchronize icache for text seg in case we made any changes */
|
||||
__syncicache(obj->mapbase, obj->textsize);
|
||||
|
||||
return (r);
|
||||
}
|
||||
|
||||
|
@ -313,9 +313,12 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, RtldLockState *lockstate)
|
||||
}
|
||||
r = 0;
|
||||
done:
|
||||
if (cache) {
|
||||
if (cache)
|
||||
munmap(cache, bytes);
|
||||
}
|
||||
|
||||
/* Synchronize icache for text seg in case we made any changes */
|
||||
__syncicache(obj->mapbase, obj->textsize);
|
||||
|
||||
return (r);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user