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