diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2006-12-04 15:40:20 +0100 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-12-04 15:40:20 +0100 |
commit | 6b4044bdd158aa9ad07b3f68d1c7598036d3ee58 (patch) | |
tree | cdc6d8852e2cd34b309ce4ccaf62d0bc74657d4c | |
parent | 645c98c8b6c09eae58ac2f97e0ade6ced4d6443f (diff) | |
download | kernel_samsung_aries-6b4044bdd158aa9ad07b3f68d1c7598036d3ee58.zip kernel_samsung_aries-6b4044bdd158aa9ad07b3f68d1c7598036d3ee58.tar.gz kernel_samsung_aries-6b4044bdd158aa9ad07b3f68d1c7598036d3ee58.tar.bz2 |
[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>
-rw-r--r-- | arch/s390/mm/extmem.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/s390/mm/extmem.c b/arch/s390/mm/extmem.c index 226275d..077af54 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; |