Re: [ceph-client:testing 32/75] fs/ceph/crypto.c:296:26: error: implicit declaration of function 'fscrypt_base64url_decode'; did you mean 'ceph_base64_decode'?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

Thanks very much for pointing this out.

This was introduced by an intermediate commit and I will revise it.

- Xiubo

On 27/02/2023 05:38, kernel test robot wrote:
tree:   https://github.com/ceph/ceph-client.git testing
head:   69aa49c89640a5018393d2ae30e5a6071e3cf9c8
commit: 44947f44747cf0c16f0999962b4a43b6d8a2c6e8 [32/75] ceph: add helpers for converting names for userland presentation
config: sh-allmodconfig (https://download.01.org/0day-ci/archive/20230227/202302270537.vINNROs9-lkp@xxxxxxxxx/config)
compiler: sh4-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
         chmod +x ~/bin/make.cross
         # https://github.com/ceph/ceph-client/commit/44947f44747cf0c16f0999962b4a43b6d8a2c6e8
         git remote add ceph-client https://github.com/ceph/ceph-client.git
         git fetch --no-tags ceph-client testing
         git checkout 44947f44747cf0c16f0999962b4a43b6d8a2c6e8
         # save the config file
         mkdir build_dir && cp config build_dir/.config
         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=sh olddefconfig
         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=sh SHELL=/bin/bash fs/ceph/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Link: https://lore.kernel.org/oe-kbuild-all/202302270537.vINNROs9-lkp@xxxxxxxxx/

Note: the ceph-client/testing HEAD 69aa49c89640a5018393d2ae30e5a6071e3cf9c8 builds fine.
       It only hurts bisectability.

All errors (new ones prefixed by >>):

    fs/ceph/crypto.c: In function 'ceph_fname_to_usr':
    fs/ceph/crypto.c:267:31: error: implicit declaration of function 'FSCRYPT_BASE64URL_CHARS'; did you mean 'CEPH_BASE64_CHARS'? [-Werror=implicit-function-declaration]
      267 |         if (fname->name_len > FSCRYPT_BASE64URL_CHARS(NAME_MAX))
          |                               ^~~~~~~~~~~~~~~~~~~~~~~
          |                               CEPH_BASE64_CHARS
fs/ceph/crypto.c:296:26: error: implicit declaration of function 'fscrypt_base64url_decode'; did you mean 'ceph_base64_decode'? [-Werror=implicit-function-declaration]
      296 |                 declen = fscrypt_base64url_decode(fname->name, fname->name_len, tname->name);
          |                          ^~~~~~~~~~~~~~~~~~~~~~~~
          |                          ceph_base64_decode
    cc1: some warnings being treated as errors


vim +296 fs/ceph/crypto.c

    237	
    238	/**
    239	 * ceph_fname_to_usr - convert a filename for userland presentation
    240	 * @fname: ceph_fname to be converted
    241	 * @tname: temporary name buffer to use for conversion (may be NULL)
    242	 * @oname: where converted name should be placed
    243	 * @is_nokey: set to true if key wasn't available during conversion (may be NULL)
    244	 *
    245	 * Given a filename (usually from the MDS), format it for presentation to
    246	 * userland. If @parent is not encrypted, just pass it back as-is.
    247	 *
    248	 * Otherwise, base64 decode the string, and then ask fscrypt to format it
    249	 * for userland presentation.
    250	 *
    251	 * Returns 0 on success or negative error code on error.
    252	 */
    253	int ceph_fname_to_usr(const struct ceph_fname *fname, struct fscrypt_str *tname,
    254			      struct fscrypt_str *oname, bool *is_nokey)
    255	{
    256		int ret;
    257		struct fscrypt_str _tname = FSTR_INIT(NULL, 0);
    258		struct fscrypt_str iname;
    259	
    260		if (!IS_ENCRYPTED(fname->dir)) {
    261			oname->name = fname->name;
    262			oname->len = fname->name_len;
    263			return 0;
    264		}
    265	
    266		/* Sanity check that the resulting name will fit in the buffer */
    267		if (fname->name_len > FSCRYPT_BASE64URL_CHARS(NAME_MAX))
    268			return -EIO;
    269	
    270		ret = __fscrypt_prepare_readdir(fname->dir);
    271		if (ret)
    272			return ret;
    273	
    274		/*
    275		 * Use the raw dentry name as sent by the MDS instead of
    276		 * generating a nokey name via fscrypt.
    277		 */
    278		if (!fscrypt_has_encryption_key(fname->dir)) {
    279			memcpy(oname->name, fname->name, fname->name_len);
    280			oname->len = fname->name_len;
    281			if (is_nokey)
    282				*is_nokey = true;
    283			return 0;
    284		}
    285	
    286		if (fname->ctext_len == 0) {
    287			int declen;
    288	
    289			if (!tname) {
    290				ret = fscrypt_fname_alloc_buffer(NAME_MAX, &_tname);
    291				if (ret)
    292					return ret;
    293				tname = &_tname;
    294			}
    295	
  > 296			declen = fscrypt_base64url_decode(fname->name, fname->name_len, tname->name);

--
Best Regards,

Xiubo Li (李秀波)

Email: xiubli@xxxxxxxxxx/xiubli@xxxxxxx
Slack: @Xiubo Li




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Ceph Dev]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux