@@ -328,10 +328,10 @@ static int crypt_scatterlist(struct ecryptfs_crypt_stat *crypt_stat,
328
328
* Convert an eCryptfs page index into a lower byte offset
329
329
*/
330
330
static loff_t lower_offset_for_page (struct ecryptfs_crypt_stat * crypt_stat ,
331
- struct page * page )
331
+ struct folio * folio )
332
332
{
333
333
return ecryptfs_lower_header_size (crypt_stat ) +
334
- (( loff_t )page -> index << PAGE_SHIFT ) ;
334
+ (loff_t )folio -> index * PAGE_SIZE ;
335
335
}
336
336
337
337
/**
@@ -340,6 +340,7 @@ static loff_t lower_offset_for_page(struct ecryptfs_crypt_stat *crypt_stat,
340
340
* encryption operation
341
341
* @dst_page: The page to write the result into
342
342
* @src_page: The page to read from
343
+ * @page_index: The offset in the file (in units of PAGE_SIZE)
343
344
* @extent_offset: Page extent offset for use in generating IV
344
345
* @op: ENCRYPT or DECRYPT to indicate the desired operation
345
346
*
@@ -350,9 +351,9 @@ static loff_t lower_offset_for_page(struct ecryptfs_crypt_stat *crypt_stat,
350
351
static int crypt_extent (struct ecryptfs_crypt_stat * crypt_stat ,
351
352
struct page * dst_page ,
352
353
struct page * src_page ,
354
+ pgoff_t page_index ,
353
355
unsigned long extent_offset , int op )
354
356
{
355
- pgoff_t page_index = op == ENCRYPT ? src_page -> index : dst_page -> index ;
356
357
loff_t extent_base ;
357
358
char extent_iv [ECRYPTFS_MAX_IV_BYTES ];
358
359
struct scatterlist src_sg , dst_sg ;
@@ -392,7 +393,7 @@ static int crypt_extent(struct ecryptfs_crypt_stat *crypt_stat,
392
393
393
394
/**
394
395
* ecryptfs_encrypt_page
395
- * @page: Page mapped from the eCryptfs inode for the file; contains
396
+ * @folio: Folio mapped from the eCryptfs inode for the file; contains
396
397
* decrypted content that needs to be encrypted (to a temporary
397
398
* page; not in place) and written out to the lower file
398
399
*
@@ -406,7 +407,7 @@ static int crypt_extent(struct ecryptfs_crypt_stat *crypt_stat,
406
407
*
407
408
* Returns zero on success; negative on error
408
409
*/
409
- int ecryptfs_encrypt_page (struct page * page )
410
+ int ecryptfs_encrypt_page (struct folio * folio )
410
411
{
411
412
struct inode * ecryptfs_inode ;
412
413
struct ecryptfs_crypt_stat * crypt_stat ;
@@ -416,7 +417,7 @@ int ecryptfs_encrypt_page(struct page *page)
416
417
loff_t lower_offset ;
417
418
int rc = 0 ;
418
419
419
- ecryptfs_inode = page -> mapping -> host ;
420
+ ecryptfs_inode = folio -> mapping -> host ;
420
421
crypt_stat =
421
422
& (ecryptfs_inode_to_private (ecryptfs_inode )-> crypt_stat );
422
423
BUG_ON (!(crypt_stat -> flags & ECRYPTFS_ENCRYPTED ));
@@ -431,16 +432,17 @@ int ecryptfs_encrypt_page(struct page *page)
431
432
for (extent_offset = 0 ;
432
433
extent_offset < (PAGE_SIZE / crypt_stat -> extent_size );
433
434
extent_offset ++ ) {
434
- rc = crypt_extent (crypt_stat , enc_extent_page , page ,
435
- extent_offset , ENCRYPT );
435
+ rc = crypt_extent (crypt_stat , enc_extent_page ,
436
+ folio_page (folio , 0 ), folio -> index ,
437
+ extent_offset , ENCRYPT );
436
438
if (rc ) {
437
439
printk (KERN_ERR "%s: Error encrypting extent; "
438
440
"rc = [%d]\n" , __func__ , rc );
439
441
goto out ;
440
442
}
441
443
}
442
444
443
- lower_offset = lower_offset_for_page (crypt_stat , page );
445
+ lower_offset = lower_offset_for_page (crypt_stat , folio );
444
446
enc_extent_virt = kmap_local_page (enc_extent_page );
445
447
rc = ecryptfs_write_lower (ecryptfs_inode , enc_extent_virt , lower_offset ,
446
448
PAGE_SIZE );
@@ -461,7 +463,7 @@ int ecryptfs_encrypt_page(struct page *page)
461
463
462
464
/**
463
465
* ecryptfs_decrypt_page
464
- * @page: Page mapped from the eCryptfs inode for the file; data read
466
+ * @folio: Folio mapped from the eCryptfs inode for the file; data read
465
467
* and decrypted from the lower file will be written into this
466
468
* page
467
469
*
@@ -475,7 +477,7 @@ int ecryptfs_encrypt_page(struct page *page)
475
477
*
476
478
* Returns zero on success; negative on error
477
479
*/
478
- int ecryptfs_decrypt_page (struct page * page )
480
+ int ecryptfs_decrypt_page (struct folio * folio )
479
481
{
480
482
struct inode * ecryptfs_inode ;
481
483
struct ecryptfs_crypt_stat * crypt_stat ;
@@ -484,13 +486,13 @@ int ecryptfs_decrypt_page(struct page *page)
484
486
loff_t lower_offset ;
485
487
int rc = 0 ;
486
488
487
- ecryptfs_inode = page -> mapping -> host ;
489
+ ecryptfs_inode = folio -> mapping -> host ;
488
490
crypt_stat =
489
491
& (ecryptfs_inode_to_private (ecryptfs_inode )-> crypt_stat );
490
492
BUG_ON (!(crypt_stat -> flags & ECRYPTFS_ENCRYPTED ));
491
493
492
- lower_offset = lower_offset_for_page (crypt_stat , page );
493
- page_virt = kmap_local_page ( page );
494
+ lower_offset = lower_offset_for_page (crypt_stat , folio );
495
+ page_virt = kmap_local_folio ( folio , 0 );
494
496
rc = ecryptfs_read_lower (page_virt , lower_offset , PAGE_SIZE ,
495
497
ecryptfs_inode );
496
498
kunmap_local (page_virt );
@@ -504,8 +506,9 @@ int ecryptfs_decrypt_page(struct page *page)
504
506
for (extent_offset = 0 ;
505
507
extent_offset < (PAGE_SIZE / crypt_stat -> extent_size );
506
508
extent_offset ++ ) {
507
- rc = crypt_extent (crypt_stat , page , page ,
508
- extent_offset , DECRYPT );
509
+ struct page * page = folio_page (folio , 0 );
510
+ rc = crypt_extent (crypt_stat , page , page , folio -> index ,
511
+ extent_offset , DECRYPT );
509
512
if (rc ) {
510
513
printk (KERN_ERR "%s: Error decrypting extent; "
511
514
"rc = [%d]\n" , __func__ , rc );
0 commit comments