mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 10:33:41 +02:00
s390: Make UV folio operations work on whole folio
uv_destroy_folio() and uv_convert_from_secure_folio() should work on all pages in the folio, not just the first one. This was fine until now, but it will become a problem with upcoming patches. Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
This commit is contained in:
parent
013bf0f57e
commit
21401ce497
|
|
@ -134,14 +134,15 @@ static int uv_destroy(unsigned long paddr)
|
|||
*/
|
||||
int uv_destroy_folio(struct folio *folio)
|
||||
{
|
||||
unsigned long i;
|
||||
int rc;
|
||||
|
||||
/* Large folios cannot be secure */
|
||||
if (unlikely(folio_test_large(folio)))
|
||||
return 0;
|
||||
|
||||
folio_get(folio);
|
||||
rc = uv_destroy(folio_to_phys(folio));
|
||||
for (i = 0; i < (1 << folio_order(folio)); i++) {
|
||||
rc = uv_destroy(folio_to_phys(folio) + i * PAGE_SIZE);
|
||||
if (rc)
|
||||
break;
|
||||
}
|
||||
if (!rc)
|
||||
clear_bit(PG_arch_1, &folio->flags.f);
|
||||
folio_put(folio);
|
||||
|
|
@ -183,14 +184,15 @@ EXPORT_SYMBOL_GPL(uv_convert_from_secure);
|
|||
*/
|
||||
int uv_convert_from_secure_folio(struct folio *folio)
|
||||
{
|
||||
unsigned long i;
|
||||
int rc;
|
||||
|
||||
/* Large folios cannot be secure */
|
||||
if (unlikely(folio_test_large(folio)))
|
||||
return 0;
|
||||
|
||||
folio_get(folio);
|
||||
rc = uv_convert_from_secure(folio_to_phys(folio));
|
||||
for (i = 0; i < (1 << folio_order(folio)); i++) {
|
||||
rc = uv_convert_from_secure(folio_to_phys(folio) + i * PAGE_SIZE);
|
||||
if (rc)
|
||||
break;
|
||||
}
|
||||
if (!rc)
|
||||
clear_bit(PG_arch_1, &folio->flags.f);
|
||||
folio_put(folio);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user