summaryrefslogtreecommitdiff
path: root/arch/s390/mm/extmem.c
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2006-12-04 15:40:20 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2006-12-04 15:40:20 +0100
commit6b4044bdd158aa9ad07b3f68d1c7598036d3ee58 (patch)
treecdc6d8852e2cd34b309ce4ccaf62d0bc74657d4c /arch/s390/mm/extmem.c
parent645c98c8b6c09eae58ac2f97e0ade6ced4d6443f (diff)
[S390] extmem unbalanced spin_lock.
segment save will exit with a lock held if the passed segment doesn't exist. Any subsequent call to segment_save will lead to a deadlock. Fix this and give up the lock before returning. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/mm/extmem.c')
-rw-r--r--arch/s390/mm/extmem.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/s390/mm/extmem.c b/arch/s390/mm/extmem.c
index 226275d5c4f6..077af5404948 100644
--- a/arch/s390/mm/extmem.c
+++ b/arch/s390/mm/extmem.c
@@ -563,8 +563,9 @@ segment_save(char *name)
seg = segment_by_name (name);
if (seg == NULL) {
- PRINT_ERR ("could not find segment %s in segment_save, please report to linux390@de.ibm.com\n",name);
- return;
+ PRINT_ERR("could not find segment %s in segment_save, please "
+ "report to linux390@de.ibm.com\n", name);
+ goto out;
}
startpfn = seg->start_addr >> PAGE_SHIFT;