diff options
author | Arnd Bergmann <arnd@arndb.de> | 2011-10-30 20:59:09 +0100 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2011-10-30 20:59:09 +0100 |
commit | b8bc83971cc20cae3c3b65c26a804f350d74960c (patch) | |
tree | 2573e6367e1806c298344fa023bb49a16cc4d1e4 /arch/s390 | |
parent | 11f0d9311c6e9ed928dc98ce6e9d14c0ee274b05 (diff) | |
parent | bca7ab316edd819edd0e3d59f9ccb26c6b2173f5 (diff) | |
download | linux-next-b8bc83971cc20cae3c3b65c26a804f350d74960c.tar.gz |
Merge branch 'pxa/devel' into next/devel2
Conflicts:
arch/arm/mach-s3c2416/s3c2416.c
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/include/asm/elf.h | 3 | ||||
-rw-r--r-- | arch/s390/mm/pgtable.c | 7 |
2 files changed, 6 insertions, 4 deletions
diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h index 64b61bf72e93..547f1a6a35d4 100644 --- a/arch/s390/include/asm/elf.h +++ b/arch/s390/include/asm/elf.h @@ -188,7 +188,8 @@ extern char elf_platform[]; #define SET_PERSONALITY(ex) \ do { \ if (personality(current->personality) != PER_LINUX32) \ - set_personality(PER_LINUX); \ + set_personality(PER_LINUX | \ + (current->personality & ~PER_MASK)); \ if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ set_thread_flag(TIF_31BIT); \ else \ diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index f69ff3c13496..5d56c2b95b14 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c @@ -303,15 +303,15 @@ int gmap_unmap_segment(struct gmap *gmap, unsigned long to, unsigned long len) /* Walk the guest addr space page table */ table = gmap->table + (((to + off) >> 53) & 0x7ff); if (*table & _REGION_ENTRY_INV) - return 0; + goto out; table = (unsigned long *)(*table & _REGION_ENTRY_ORIGIN); table = table + (((to + off) >> 42) & 0x7ff); if (*table & _REGION_ENTRY_INV) - return 0; + goto out; table = (unsigned long *)(*table & _REGION_ENTRY_ORIGIN); table = table + (((to + off) >> 31) & 0x7ff); if (*table & _REGION_ENTRY_INV) - return 0; + goto out; table = (unsigned long *)(*table & _REGION_ENTRY_ORIGIN); table = table + (((to + off) >> 20) & 0x7ff); @@ -319,6 +319,7 @@ int gmap_unmap_segment(struct gmap *gmap, unsigned long to, unsigned long len) flush |= gmap_unlink_segment(gmap, table); *table = _SEGMENT_ENTRY_INV; } +out: up_read(&gmap->mm->mmap_sem); if (flush) gmap_flush_tlb(gmap); |