diff options
| author | 2007-10-11 16:52:59 +1000 | |
|---|---|---|
| committer | 2007-10-11 16:52:59 +1000 | |
| commit | c1561cf463f4a480d1960e833c8fe628207b24e4 (patch) | |
| tree | b612e5257611ef33196aacc00fba813c943384d5 /fs/binfmt_flat.c | |
| parent | Revert "[XFS] Avoid replaying inode buffer initialisation log items if on-disk version is newer." (diff) | |
| parent | Linux 2.6.23 (diff) | |
| download | linux-dev-c1561cf463f4a480d1960e833c8fe628207b24e4.tar.xz linux-dev-c1561cf463f4a480d1960e833c8fe628207b24e4.zip | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus
Diffstat (limited to 'fs/binfmt_flat.c')
| -rw-r--r-- | fs/binfmt_flat.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c index 861141b4f6d6..fcb3405bb14e 100644 --- a/fs/binfmt_flat.c +++ b/fs/binfmt_flat.c @@ -742,6 +742,7 @@ static int load_flat_file(struct linux_binprm * bprm, * __start to address 4 so that is okay). */ if (rev > OLD_FLAT_VERSION) { + unsigned long persistent = 0; for (i=0; i < relocs; i++) { unsigned long addr, relval; @@ -749,6 +750,8 @@ static int load_flat_file(struct linux_binprm * bprm, relocated (of course, the address has to be relocated first). */ relval = ntohl(reloc[i]); + if (flat_set_persistent (relval, &persistent)) + continue; addr = flat_get_relocate_addr(relval); rp = (unsigned long *) calc_reloc(addr, libinfo, id, 1); if (rp == (unsigned long *)RELOC_FAILED) { @@ -757,7 +760,8 @@ static int load_flat_file(struct linux_binprm * bprm, } /* Get the pointer's value. */ - addr = flat_get_addr_from_rp(rp, relval, flags); + addr = flat_get_addr_from_rp(rp, relval, flags, + &persistent); if (addr != 0) { /* * Do the relocation. PIC relocs in the data section are |
