]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: s390: vsie: Fix possible race when shadowing region 3 tables
authorDavid Hildenbrand <david@redhat.com>
Fri, 3 Apr 2020 15:30:48 +0000 (17:30 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Tue, 7 Apr 2020 11:12:38 +0000 (13:12 +0200)
commit4273d40506fb4382f9164942942c971a7abb9e57
tree12965b63fca71bbb0e6567a530ca98ee3c68e7c9
parent4d56992458a3c7aaff1b641936fb2cc7385bf70b
KVM: s390: vsie: Fix possible race when shadowing region 3 tables

We have to properly retry again by returning -EINVAL immediately in case
somebody else instantiated the table concurrently. We missed to add the
goto in this function only. The code now matches the other, similar
shadowing functions.

We are overwriting an existing region 2 table entry. All allocated pages
are added to the crst_list to be freed later, so they are not lost
forever. However, when unshadowing the region 2 table, we wouldn't trigger
unshadowing of the original shadowed region 3 table that we replaced. It
would get unshadowed when the original region 3 table is modified. As it's
not connected to the page table hierarchy anymore, it's not going to get
used anymore. However, for a limited time, this page table will stick
around, so it's in some sense a temporary memory leak.

Identified by manual code inspection. I don't think this classifies as
stable material.

Fixes: 02f026b3071c ("s390/mm: avoid races on region/segment/page table shadowing")
Signed-off-by: David Hildenbrand <david@redhat.com>
Link: https://lore.kernel.org/r/20200403153050.20569-4-david@redhat.com
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/mm/gmap.c