* [dhowells-fs:ceph-iter 104/105] fs/ceph/crypto.c:591:5: error: conflicting types for 'ceph_fscrypt_decrypt_extents'
@ 2024-01-17 1:05 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-01-17 1:05 UTC (permalink / raw)
To: David Howells; +Cc: llvm, oe-kbuild-all
tree: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git ceph-iter
head: 2cf82c6e7baf6d3a2adc0692707028da395f1553
commit: 8c002b7822991845125f6d219796f28b75055b90 [104/105] fixes
config: i386-buildonly-randconfig-002-20240116 (https://download.01.org/0day-ci/archive/20240117/202401170901.sSLtPhTr-lkp@intel.com/config)
compiler: ClangBuiltLinux clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240117/202401170901.sSLtPhTr-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401170901.sSLtPhTr-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
>> fs/ceph/crypto.c:545:5: warning: no previous prototype for function 'ceph_fscrypt_decrypt_pages' [-Wmissing-prototypes]
545 | int ceph_fscrypt_decrypt_pages(struct inode *inode, struct ceph_databuf *dbuf,
| ^
fs/ceph/crypto.c:545:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
545 | int ceph_fscrypt_decrypt_pages(struct inode *inode, struct ceph_databuf *dbuf,
| ^
| static
>> fs/ceph/crypto.c:591:5: error: conflicting types for 'ceph_fscrypt_decrypt_extents'
591 | int ceph_fscrypt_decrypt_extents(struct inode *inode, struct page **page,
| ^
fs/ceph/crypto.h:160:5: note: previous declaration is here
160 | int ceph_fscrypt_decrypt_extents(struct inode *inode, struct ceph_databuf *dbuf, u64 off,
| ^
>> fs/ceph/crypto.c:625:44: error: incompatible pointer types passing 'struct page **' to parameter of type 'struct ceph_databuf *' [-Werror,-Wincompatible-pointer-types]
625 | fret = ceph_fscrypt_decrypt_pages(inode, &page[pgidx],
| ^~~~~~~~~~~~
fs/ceph/crypto.c:545:74: note: passing argument to parameter 'dbuf' here
545 | int ceph_fscrypt_decrypt_pages(struct inode *inode, struct ceph_databuf *dbuf,
| ^
1 warning and 2 errors generated.
vim +/ceph_fscrypt_decrypt_extents +591 fs/ceph/crypto.c
77cdb7e17e39eb Jeff Layton 2022-08-25 529
77cdb7e17e39eb Jeff Layton 2022-08-25 530 /**
8c002b78229918 David Howells 2023-08-23 531 * ceph_fscrypt_decrypt_data - Decrypt buffered data
77cdb7e17e39eb Jeff Layton 2022-08-25 532 * @inode: pointer to inode associated with these pages
8c002b78229918 David Howells 2023-08-23 533 * @dbuf: pointer to buffer containing the data
77cdb7e17e39eb Jeff Layton 2022-08-25 534 * @off: offset into the file that the read data starts
77cdb7e17e39eb Jeff Layton 2022-08-25 535 * @len: max length to decrypt
77cdb7e17e39eb Jeff Layton 2022-08-25 536 *
8c002b78229918 David Howells 2023-08-23 537 * Decrypt an buffer of fscrypt'ed pages and return the amount of
77cdb7e17e39eb Jeff Layton 2022-08-25 538 * data decrypted. Any data in the page prior to the start of the
77cdb7e17e39eb Jeff Layton 2022-08-25 539 * first complete block in the read is ignored. Any incomplete
77cdb7e17e39eb Jeff Layton 2022-08-25 540 * crypto blocks at the end of the array are ignored (and should
77cdb7e17e39eb Jeff Layton 2022-08-25 541 * probably be zeroed by the caller).
77cdb7e17e39eb Jeff Layton 2022-08-25 542 *
77cdb7e17e39eb Jeff Layton 2022-08-25 543 * Returns the length of the decrypted data or a negative errno.
77cdb7e17e39eb Jeff Layton 2022-08-25 544 */
8c002b78229918 David Howells 2023-08-23 @545 int ceph_fscrypt_decrypt_pages(struct inode *inode, struct ceph_databuf *dbuf,
77cdb7e17e39eb Jeff Layton 2022-08-25 546 u64 off, int len)
77cdb7e17e39eb Jeff Layton 2022-08-25 547 {
77cdb7e17e39eb Jeff Layton 2022-08-25 548 int i, num_blocks;
77cdb7e17e39eb Jeff Layton 2022-08-25 549 u64 baseblk = off >> CEPH_FSCRYPT_BLOCK_SHIFT;
77cdb7e17e39eb Jeff Layton 2022-08-25 550 int ret = 0;
77cdb7e17e39eb Jeff Layton 2022-08-25 551
77cdb7e17e39eb Jeff Layton 2022-08-25 552 /*
77cdb7e17e39eb Jeff Layton 2022-08-25 553 * We can't deal with partial blocks on an encrypted file, so mask off
77cdb7e17e39eb Jeff Layton 2022-08-25 554 * the last bit.
77cdb7e17e39eb Jeff Layton 2022-08-25 555 */
77cdb7e17e39eb Jeff Layton 2022-08-25 556 num_blocks = ceph_fscrypt_blocks(off, len & CEPH_FSCRYPT_BLOCK_MASK);
77cdb7e17e39eb Jeff Layton 2022-08-25 557
77cdb7e17e39eb Jeff Layton 2022-08-25 558 /* Decrypt each block */
77cdb7e17e39eb Jeff Layton 2022-08-25 559 for (i = 0; i < num_blocks; ++i) {
77cdb7e17e39eb Jeff Layton 2022-08-25 560 int blkoff = i << CEPH_FSCRYPT_BLOCK_SHIFT;
77cdb7e17e39eb Jeff Layton 2022-08-25 561 int pgidx = blkoff >> PAGE_SHIFT;
77cdb7e17e39eb Jeff Layton 2022-08-25 562 unsigned int pgoffs = offset_in_page(blkoff);
77cdb7e17e39eb Jeff Layton 2022-08-25 563 int fret;
77cdb7e17e39eb Jeff Layton 2022-08-25 564
8c002b78229918 David Howells 2023-08-23 565 fret = ceph_fscrypt_decrypt_block_inplace(inode,
8c002b78229918 David Howells 2023-08-23 566 ceph_databuf_page(dbuf, pgidx),
77cdb7e17e39eb Jeff Layton 2022-08-25 567 CEPH_FSCRYPT_BLOCK_SIZE, pgoffs,
77cdb7e17e39eb Jeff Layton 2022-08-25 568 baseblk + i);
77cdb7e17e39eb Jeff Layton 2022-08-25 569 if (fret < 0) {
77cdb7e17e39eb Jeff Layton 2022-08-25 570 if (ret == 0)
77cdb7e17e39eb Jeff Layton 2022-08-25 571 ret = fret;
77cdb7e17e39eb Jeff Layton 2022-08-25 572 break;
77cdb7e17e39eb Jeff Layton 2022-08-25 573 }
77cdb7e17e39eb Jeff Layton 2022-08-25 574 ret += CEPH_FSCRYPT_BLOCK_SIZE;
77cdb7e17e39eb Jeff Layton 2022-08-25 575 }
77cdb7e17e39eb Jeff Layton 2022-08-25 576 return ret;
77cdb7e17e39eb Jeff Layton 2022-08-25 577 }
77cdb7e17e39eb Jeff Layton 2022-08-25 578
77cdb7e17e39eb Jeff Layton 2022-08-25 579 /**
77cdb7e17e39eb Jeff Layton 2022-08-25 580 * ceph_fscrypt_decrypt_extents: decrypt received extents in given buffer
77cdb7e17e39eb Jeff Layton 2022-08-25 581 * @inode: inode associated with pages being decrypted
77cdb7e17e39eb Jeff Layton 2022-08-25 582 * @page: pointer to page array
77cdb7e17e39eb Jeff Layton 2022-08-25 583 * @off: offset into the file that the data in page[0] starts
77cdb7e17e39eb Jeff Layton 2022-08-25 584 * @map: pointer to extent array
77cdb7e17e39eb Jeff Layton 2022-08-25 585 * @ext_cnt: length of extent array
77cdb7e17e39eb Jeff Layton 2022-08-25 586 *
77cdb7e17e39eb Jeff Layton 2022-08-25 587 * Given an extent map and a page array, decrypt the received data in-place,
77cdb7e17e39eb Jeff Layton 2022-08-25 588 * skipping holes. Returns the offset into buffer of end of last decrypted
77cdb7e17e39eb Jeff Layton 2022-08-25 589 * block.
77cdb7e17e39eb Jeff Layton 2022-08-25 590 */
77cdb7e17e39eb Jeff Layton 2022-08-25 @591 int ceph_fscrypt_decrypt_extents(struct inode *inode, struct page **page,
77cdb7e17e39eb Jeff Layton 2022-08-25 592 u64 off, struct ceph_sparse_extent *map,
77cdb7e17e39eb Jeff Layton 2022-08-25 593 u32 ext_cnt)
77cdb7e17e39eb Jeff Layton 2022-08-25 594 {
38d46409c4639a Xiubo Li 2023-06-12 595 struct ceph_client *cl = ceph_inode_to_client(inode);
77cdb7e17e39eb Jeff Layton 2022-08-25 596 int i, ret = 0;
77cdb7e17e39eb Jeff Layton 2022-08-25 597 struct ceph_inode_info *ci = ceph_inode(inode);
77cdb7e17e39eb Jeff Layton 2022-08-25 598 u64 objno, objoff;
77cdb7e17e39eb Jeff Layton 2022-08-25 599 u32 xlen;
77cdb7e17e39eb Jeff Layton 2022-08-25 600
77cdb7e17e39eb Jeff Layton 2022-08-25 601 /* Nothing to do for empty array */
77cdb7e17e39eb Jeff Layton 2022-08-25 602 if (ext_cnt == 0) {
38d46409c4639a Xiubo Li 2023-06-12 603 doutc(cl, "%p %llx.%llx empty array, ret 0\n", inode,
38d46409c4639a Xiubo Li 2023-06-12 604 ceph_vinop(inode));
77cdb7e17e39eb Jeff Layton 2022-08-25 605 return 0;
77cdb7e17e39eb Jeff Layton 2022-08-25 606 }
77cdb7e17e39eb Jeff Layton 2022-08-25 607
77cdb7e17e39eb Jeff Layton 2022-08-25 608 ceph_calc_file_object_mapping(&ci->i_layout, off, map[0].len,
77cdb7e17e39eb Jeff Layton 2022-08-25 609 &objno, &objoff, &xlen);
77cdb7e17e39eb Jeff Layton 2022-08-25 610
77cdb7e17e39eb Jeff Layton 2022-08-25 611 for (i = 0; i < ext_cnt; ++i) {
77cdb7e17e39eb Jeff Layton 2022-08-25 612 struct ceph_sparse_extent *ext = &map[i];
77cdb7e17e39eb Jeff Layton 2022-08-25 613 int pgsoff = ext->off - objoff;
77cdb7e17e39eb Jeff Layton 2022-08-25 614 int pgidx = pgsoff >> PAGE_SHIFT;
77cdb7e17e39eb Jeff Layton 2022-08-25 615 int fret;
77cdb7e17e39eb Jeff Layton 2022-08-25 616
77cdb7e17e39eb Jeff Layton 2022-08-25 617 if ((ext->off | ext->len) & ~CEPH_FSCRYPT_BLOCK_MASK) {
38d46409c4639a Xiubo Li 2023-06-12 618 pr_warn_client(cl,
38d46409c4639a Xiubo Li 2023-06-12 619 "%p %llx.%llx bad encrypted sparse extent "
38d46409c4639a Xiubo Li 2023-06-12 620 "idx %d off %llx len %llx\n",
38d46409c4639a Xiubo Li 2023-06-12 621 inode, ceph_vinop(inode), i, ext->off,
38d46409c4639a Xiubo Li 2023-06-12 622 ext->len);
77cdb7e17e39eb Jeff Layton 2022-08-25 623 return -EIO;
77cdb7e17e39eb Jeff Layton 2022-08-25 624 }
77cdb7e17e39eb Jeff Layton 2022-08-25 @625 fret = ceph_fscrypt_decrypt_pages(inode, &page[pgidx],
77cdb7e17e39eb Jeff Layton 2022-08-25 626 off + pgsoff, ext->len);
38d46409c4639a Xiubo Li 2023-06-12 627 doutc(cl, "%p %llx.%llx [%d] 0x%llx~0x%llx fret %d\n", inode,
38d46409c4639a Xiubo Li 2023-06-12 628 ceph_vinop(inode), i, ext->off, ext->len, fret);
77cdb7e17e39eb Jeff Layton 2022-08-25 629 if (fret < 0) {
77cdb7e17e39eb Jeff Layton 2022-08-25 630 if (ret == 0)
77cdb7e17e39eb Jeff Layton 2022-08-25 631 ret = fret;
77cdb7e17e39eb Jeff Layton 2022-08-25 632 break;
77cdb7e17e39eb Jeff Layton 2022-08-25 633 }
77cdb7e17e39eb Jeff Layton 2022-08-25 634 ret = pgsoff + fret;
77cdb7e17e39eb Jeff Layton 2022-08-25 635 }
38d46409c4639a Xiubo Li 2023-06-12 636 doutc(cl, "ret %d\n", ret);
77cdb7e17e39eb Jeff Layton 2022-08-25 637 return ret;
77cdb7e17e39eb Jeff Layton 2022-08-25 638 }
77cdb7e17e39eb Jeff Layton 2022-08-25 639
:::::: The code at line 591 was first introduced by commit
:::::: 77cdb7e17e39ebb986f60bbd3c2b3507687bf475 ceph: add infrastructure for file encryption and decryption
:::::: TO: Jeff Layton <jlayton@kernel.org>
:::::: CC: Ilya Dryomov <idryomov@gmail.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-01-17 1:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-17 1:05 [dhowells-fs:ceph-iter 104/105] fs/ceph/crypto.c:591:5: error: conflicting types for 'ceph_fscrypt_decrypt_extents' kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox