Browse Source

s390/mm: don't drop errors in get_guest_storage_key

Commit 1e133ab296f3 ("s390/mm: split arch/s390/mm/pgtable.c") changed
the return value of get_guest_storage_key to an unsigned char, resulting
in -EFAULT getting interpreted as a valid storage key.

Cc: stable@vger.kernel.org # 4.6+
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
David Hildenbrand 9 years ago
parent
commit
c427c42cd6
2 changed files with 2 additions and 2 deletions
  1. 1 1
      arch/s390/include/asm/pgtable.h
  2. 1 1
      arch/s390/mm/pgtable.c

+ 1 - 1
arch/s390/include/asm/pgtable.h

@@ -893,7 +893,7 @@ void ptep_zap_key(struct mm_struct *mm, unsigned long addr, pte_t *ptep);
 bool test_and_clear_guest_dirty(struct mm_struct *mm, unsigned long address);
 bool test_and_clear_guest_dirty(struct mm_struct *mm, unsigned long address);
 int set_guest_storage_key(struct mm_struct *mm, unsigned long addr,
 int set_guest_storage_key(struct mm_struct *mm, unsigned long addr,
 			  unsigned char key, bool nq);
 			  unsigned char key, bool nq);
-unsigned char get_guest_storage_key(struct mm_struct *mm, unsigned long addr);
+unsigned long get_guest_storage_key(struct mm_struct *mm, unsigned long addr);
 
 
 /*
 /*
  * Certain architectures need to do special things when PTEs
  * Certain architectures need to do special things when PTEs

+ 1 - 1
arch/s390/mm/pgtable.c

@@ -543,7 +543,7 @@ int set_guest_storage_key(struct mm_struct *mm, unsigned long addr,
 }
 }
 EXPORT_SYMBOL(set_guest_storage_key);
 EXPORT_SYMBOL(set_guest_storage_key);
 
 
-unsigned char get_guest_storage_key(struct mm_struct *mm, unsigned long addr)
+unsigned long get_guest_storage_key(struct mm_struct *mm, unsigned long addr)
 {
 {
 	unsigned char key;
 	unsigned char key;
 	spinlock_t *ptl;
 	spinlock_t *ptl;