@@ -328,10 +328,10 @@ static int crypt_scatterlist(struct ecryptfs_crypt_stat *crypt_stat,
328328 * Convert an eCryptfs page index into a lower byte offset
329329 */
330330static loff_t lower_offset_for_page (struct ecryptfs_crypt_stat * crypt_stat ,
331- struct page * page )
331+ struct folio * folio )
332332{
333333 return ecryptfs_lower_header_size (crypt_stat ) +
334- (( loff_t )page -> index << PAGE_SHIFT ) ;
334+ (loff_t )folio -> index * PAGE_SIZE ;
335335}
336336
337337/**
@@ -340,6 +340,7 @@ static loff_t lower_offset_for_page(struct ecryptfs_crypt_stat *crypt_stat,
340340 * encryption operation
341341 * @dst_page: The page to write the result into
342342 * @src_page: The page to read from
343+ * @page_index: The offset in the file (in units of PAGE_SIZE)
343344 * @extent_offset: Page extent offset for use in generating IV
344345 * @op: ENCRYPT or DECRYPT to indicate the desired operation
345346 *
@@ -350,9 +351,9 @@ static loff_t lower_offset_for_page(struct ecryptfs_crypt_stat *crypt_stat,
350351static int crypt_extent (struct ecryptfs_crypt_stat * crypt_stat ,
351352 struct page * dst_page ,
352353 struct page * src_page ,
354+ pgoff_t page_index ,
353355 unsigned long extent_offset , int op )
354356{
355- pgoff_t page_index = op == ENCRYPT ? src_page -> index : dst_page -> index ;
356357 loff_t extent_base ;
357358 char extent_iv [ECRYPTFS_MAX_IV_BYTES ];
358359 struct scatterlist src_sg , dst_sg ;
@@ -392,7 +393,7 @@ static int crypt_extent(struct ecryptfs_crypt_stat *crypt_stat,
392393
393394/**
394395 * 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
396397 * decrypted content that needs to be encrypted (to a temporary
397398 * page; not in place) and written out to the lower file
398399 *
@@ -406,7 +407,7 @@ static int crypt_extent(struct ecryptfs_crypt_stat *crypt_stat,
406407 *
407408 * Returns zero on success; negative on error
408409 */
409- int ecryptfs_encrypt_page (struct page * page )
410+ int ecryptfs_encrypt_page (struct folio * folio )
410411{
411412 struct inode * ecryptfs_inode ;
412413 struct ecryptfs_crypt_stat * crypt_stat ;
@@ -416,7 +417,7 @@ int ecryptfs_encrypt_page(struct page *page)
416417 loff_t lower_offset ;
417418 int rc = 0 ;
418419
419- ecryptfs_inode = page -> mapping -> host ;
420+ ecryptfs_inode = folio -> mapping -> host ;
420421 crypt_stat =
421422 & (ecryptfs_inode_to_private (ecryptfs_inode )-> crypt_stat );
422423 BUG_ON (!(crypt_stat -> flags & ECRYPTFS_ENCRYPTED ));
@@ -431,16 +432,17 @@ int ecryptfs_encrypt_page(struct page *page)
431432 for (extent_offset = 0 ;
432433 extent_offset < (PAGE_SIZE / crypt_stat -> extent_size );
433434 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 );
436438 if (rc ) {
437439 printk (KERN_ERR "%s: Error encrypting extent; "
438440 "rc = [%d]\n" , __func__ , rc );
439441 goto out ;
440442 }
441443 }
442444
443- lower_offset = lower_offset_for_page (crypt_stat , page );
445+ lower_offset = lower_offset_for_page (crypt_stat , folio );
444446 enc_extent_virt = kmap_local_page (enc_extent_page );
445447 rc = ecryptfs_write_lower (ecryptfs_inode , enc_extent_virt , lower_offset ,
446448 PAGE_SIZE );
@@ -461,7 +463,7 @@ int ecryptfs_encrypt_page(struct page *page)
461463
462464/**
463465 * 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
465467 * and decrypted from the lower file will be written into this
466468 * page
467469 *
@@ -475,7 +477,7 @@ int ecryptfs_encrypt_page(struct page *page)
475477 *
476478 * Returns zero on success; negative on error
477479 */
478- int ecryptfs_decrypt_page (struct page * page )
480+ int ecryptfs_decrypt_page (struct folio * folio )
479481{
480482 struct inode * ecryptfs_inode ;
481483 struct ecryptfs_crypt_stat * crypt_stat ;
@@ -484,13 +486,13 @@ int ecryptfs_decrypt_page(struct page *page)
484486 loff_t lower_offset ;
485487 int rc = 0 ;
486488
487- ecryptfs_inode = page -> mapping -> host ;
489+ ecryptfs_inode = folio -> mapping -> host ;
488490 crypt_stat =
489491 & (ecryptfs_inode_to_private (ecryptfs_inode )-> crypt_stat );
490492 BUG_ON (!(crypt_stat -> flags & ECRYPTFS_ENCRYPTED ));
491493
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 );
494496 rc = ecryptfs_read_lower (page_virt , lower_offset , PAGE_SIZE ,
495497 ecryptfs_inode );
496498 kunmap_local (page_virt );
@@ -504,8 +506,9 @@ int ecryptfs_decrypt_page(struct page *page)
504506 for (extent_offset = 0 ;
505507 extent_offset < (PAGE_SIZE / crypt_stat -> extent_size );
506508 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 );
509512 if (rc ) {
510513 printk (KERN_ERR "%s: Error decrypting extent; "
511514 "rc = [%d]\n" , __func__ , rc );
0 commit comments