From b06abeac2fa90f9f53360782482ff97009c3ba8d Mon Sep 17 00:00:00 2001 From: Carsten Otte Date: Mon, 26 Sep 2011 16:40:34 +0200 Subject: [PATCH] --- yaml --- r: 264191 b: refs/heads/master c: 05873df981ca1dd32f398e7b4e19864de907e064 h: refs/heads/master i: 264189: 83caa6df25410ab136af5d45b01ee1c8005e29e6 264187: 24be1fe2d8acf1f720713e567ad63536de22ecf2 264183: 175acd96dc86261ca18585fe683cd39be6063543 264175: d8c9ffd57162a173580241504515b7dec9fbe38f 264159: f2dc179c6d8400b244c69b62b2650561e2dd6c1e 264127: 3bc04219f909fc9701ab83a3a3d19f8433ecda58 264063: 5d7ea9b5cc558a9603a5ede41b6bbd9888a61572 263935: 2aeffdc455642c4ae8453cc5a6ffa9d7ad678700 263679: 9b318b91cac13ec4f1a72906664d6aaf2ee7aab4 263167: b80f9c74578d1a2ae817d47e4d9e75929a2a2da9 262143: 10438bb1a705ac6f20e9ec7238d8999978d135f3 v: v3 --- [refs] | 2 +- trunk/arch/s390/mm/pgtable.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 070bc4096375..eb6ee30c0299 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f9783ec862ea8ce0071f34a7fd028229d9fd98b4 +refs/heads/master: 05873df981ca1dd32f398e7b4e19864de907e064 diff --git a/trunk/arch/s390/mm/pgtable.c b/trunk/arch/s390/mm/pgtable.c index f69ff3c13496..5d56c2b95b14 100644 --- a/trunk/arch/s390/mm/pgtable.c +++ b/trunk/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);