Hi Namjae,
First bad commit (maybe != root cause):
tree:
https://github.com/zen-kernel/zen-kernel 5.6/exfat
head: 800eabb6d277b1cc412857441bbf532bb76dcf56
commit: 42256ca2e038dc7fd23e4c19898877392bd3d512 [12/14] exfat: add exfat in fs/Kconfig
and fs/Makefile
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gcc (GCC) 9.3.0
reproduce:
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 42256ca2e038dc7fd23e4c19898877392bd3d512
# save the attached .config to linux build tree
GCC_VERSION=9.3.0 make.cross ARCH=sh
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
> fs/exfat/super.c:222:37: error: macro "fsparam_enum"
requires 3 arguments, but only 2 given
222 | fsparam_enum("errors",
Opt_errors),
| ^
In file included from fs/exfat/super.c:7:
include/linux/fs_parser.h:126: note: macro "fsparam_enum" defined here
126 | #define fsparam_enum(NAME, OPT, array) __fsparam(fs_param_is_enum, NAME, OPT,
0, array)
|
> fs/exfat/super.c:222:2: error: 'fsparam_enum' undeclared
here (not in a function); did you mean 'fs_param_is_enum'?
222 |
fsparam_enum("errors", Opt_errors),
| ^~~~~~~~~~~~
| fs_param_is_enum
> fs/exfat/super.c:228:39: error: array type has incomplete element
type 'struct fs_parameter_enum'
228 | static const struct
fs_parameter_enum exfat_param_enums[] = {
| ^~~~~~~~~~~~~~~~~
> fs/exfat/super.c:235:21: error: variable
'exfat_parameters' has initializer but incomplete type
235 | static
const struct fs_parameter_description exfat_parameters = {
| ^~~~~~~~~~~~~~~~~~~~~~~~
> fs/exfat/super.c:236:3: error: 'const struct
fs_parameter_description' has no member named 'name'
236 | .name
= "exfat",
| ^~~~
> fs/exfat/super.c:236:11: warning: excess elements in struct
initializer
236 | .name = "exfat",
| ^~~~~~~
fs/exfat/super.c:236:11: note: (near initialization for 'exfat_parameters')
> fs/exfat/super.c:237:3: error: 'const struct
fs_parameter_description' has no member named 'specs'
237 | .specs
= exfat_param_specs,
| ^~~~~
fs/exfat/super.c:237:12: warning: excess elements in struct initializer
237 | .specs = exfat_param_specs,
| ^~~~~~~~~~~~~~~~~
fs/exfat/super.c:237:12: note: (near initialization for 'exfat_parameters')
> fs/exfat/super.c:238:3: error: 'const struct
fs_parameter_description' has no member named 'enums'
238 | .enums
= exfat_param_enums,
| ^~~~~
fs/exfat/super.c:238:12: warning: excess elements in struct initializer
238 | .enums = exfat_param_enums,
| ^~~~~~~~~~~~~~~~~
fs/exfat/super.c:238:12: note: (near initialization for 'exfat_parameters')
fs/exfat/super.c: In function 'exfat_parse_param':
> fs/exfat/super.c:248:21: error: passing argument 2 of
'fs_parse' from incompatible pointer type [-Werror=incompatible-pointer-types]
248 | opt = fs_parse(fc, &exfat_parameters, param, &result);
| ^~~~~~~~~~~~~~~~~
| |
| const struct fs_parameter_description *
In file included from fs/exfat/super.c:7:
include/linux/fs_parser.h:69:39: note: expected 'const struct fs_parameter_spec
*' but argument is of type 'const struct fs_parameter_description *'
69 | const struct fs_parameter_spec *desc,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
fs/exfat/super.c: At top level:
> fs/exfat/super.c:669:17: error: initialization of 'const
struct fs_parameter_spec *' from incompatible pointer type 'const struct
fs_parameter_description *' [-Werror=incompatible-pointer-types]
669 |
.parameters = &exfat_parameters,
| ^
fs/exfat/super.c:669:17: note: (near initialization for
'exfat_fs_type.parameters')
> fs/exfat/super.c:235:46: error: storage size of
'exfat_parameters' isn't known
235 | static const struct
fs_parameter_description exfat_parameters = {
| ^~~~~~~~~~~~~~~~
fs/exfat/super.c:228:39: warning: 'exfat_param_enums' defined but not used
[-Wunused-variable]
228 | static const struct fs_parameter_enum exfat_param_enums[] = {
| ^~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/fsparam_enum +222 fs/exfat/super.c
03e85038b1b69b Namjae Jeon 2020-01-15 213
03e85038b1b69b Namjae Jeon 2020-01-15 214 static const struct fs_parameter_spec
exfat_param_specs[] = {
03e85038b1b69b Namjae Jeon 2020-01-15 215 fsparam_u32("uid", Opt_uid),
03e85038b1b69b Namjae Jeon 2020-01-15 216 fsparam_u32("gid", Opt_gid),
03e85038b1b69b Namjae Jeon 2020-01-15 217
fsparam_u32oct("umask", Opt_umask),
03e85038b1b69b Namjae Jeon 2020-01-15 218
fsparam_u32oct("dmask", Opt_dmask),
03e85038b1b69b Namjae Jeon 2020-01-15 219
fsparam_u32oct("fmask", Opt_fmask),
03e85038b1b69b Namjae Jeon 2020-01-15 220
fsparam_u32oct("allow_utime", Opt_allow_utime),
03e85038b1b69b Namjae Jeon 2020-01-15 221
fsparam_string("iocharset", Opt_charset),
03e85038b1b69b Namjae Jeon 2020-01-15 @222
fsparam_enum("errors", Opt_errors),
03e85038b1b69b Namjae Jeon 2020-01-15 223
fsparam_flag("discard", Opt_discard),
03e85038b1b69b Namjae Jeon 2020-01-15 224
fsparam_s32("time_offset", Opt_time_offset),
03e85038b1b69b Namjae Jeon 2020-01-15 225 {}
03e85038b1b69b Namjae Jeon 2020-01-15 226 };
03e85038b1b69b Namjae Jeon 2020-01-15 227
03e85038b1b69b Namjae Jeon 2020-01-15 @228 static const struct fs_parameter_enum
exfat_param_enums[] = {
03e85038b1b69b Namjae Jeon 2020-01-15 229 {
Opt_errors, "continue", EXFAT_ERRORS_CONT },
03e85038b1b69b Namjae Jeon 2020-01-15 230 {
Opt_errors, "panic", EXFAT_ERRORS_PANIC },
03e85038b1b69b Namjae Jeon 2020-01-15 231 {
Opt_errors, "remount-ro", EXFAT_ERRORS_RO },
03e85038b1b69b Namjae Jeon 2020-01-15 232 {}
03e85038b1b69b Namjae Jeon 2020-01-15 233 };
03e85038b1b69b Namjae Jeon 2020-01-15 234
03e85038b1b69b Namjae Jeon 2020-01-15 @235 static const struct fs_parameter_description
exfat_parameters = {
03e85038b1b69b Namjae Jeon 2020-01-15 @236 .name = "exfat",
03e85038b1b69b Namjae Jeon 2020-01-15 @237 .specs = exfat_param_specs,
03e85038b1b69b Namjae Jeon 2020-01-15 @238 .enums = exfat_param_enums,
03e85038b1b69b Namjae Jeon 2020-01-15 239 };
03e85038b1b69b Namjae Jeon 2020-01-15 240
03e85038b1b69b Namjae Jeon 2020-01-15 241 static int exfat_parse_param(struct fs_context
*fc, struct fs_parameter *param)
03e85038b1b69b Namjae Jeon 2020-01-15 242 {
03e85038b1b69b Namjae Jeon 2020-01-15 243 struct exfat_sb_info *sbi =
fc->s_fs_info;
03e85038b1b69b Namjae Jeon 2020-01-15 244 struct exfat_mount_options *opts =
&sbi->options;
03e85038b1b69b Namjae Jeon 2020-01-15 245 struct fs_parse_result result;
03e85038b1b69b Namjae Jeon 2020-01-15 246 int opt;
03e85038b1b69b Namjae Jeon 2020-01-15 247
03e85038b1b69b Namjae Jeon 2020-01-15 @248 opt = fs_parse(fc, &exfat_parameters,
param, &result);
03e85038b1b69b Namjae Jeon 2020-01-15 249 if (opt < 0)
03e85038b1b69b Namjae Jeon 2020-01-15 250 return opt;
03e85038b1b69b Namjae Jeon 2020-01-15 251
03e85038b1b69b Namjae Jeon 2020-01-15 252 switch (opt) {
03e85038b1b69b Namjae Jeon 2020-01-15 253 case Opt_uid:
03e85038b1b69b Namjae Jeon 2020-01-15 254 opts->fs_uid =
make_kuid(current_user_ns(), result.uint_32);
03e85038b1b69b Namjae Jeon 2020-01-15 255 break;
03e85038b1b69b Namjae Jeon 2020-01-15 256 case Opt_gid:
03e85038b1b69b Namjae Jeon 2020-01-15 257 opts->fs_gid =
make_kgid(current_user_ns(), result.uint_32);
03e85038b1b69b Namjae Jeon 2020-01-15 258 break;
03e85038b1b69b Namjae Jeon 2020-01-15 259 case Opt_umask:
03e85038b1b69b Namjae Jeon 2020-01-15 260 opts->fs_fmask = result.uint_32;
03e85038b1b69b Namjae Jeon 2020-01-15 261 opts->fs_dmask = result.uint_32;
03e85038b1b69b Namjae Jeon 2020-01-15 262 break;
03e85038b1b69b Namjae Jeon 2020-01-15 263 case Opt_dmask:
03e85038b1b69b Namjae Jeon 2020-01-15 264 opts->fs_dmask = result.uint_32;
03e85038b1b69b Namjae Jeon 2020-01-15 265 break;
03e85038b1b69b Namjae Jeon 2020-01-15 266 case Opt_fmask:
03e85038b1b69b Namjae Jeon 2020-01-15 267 opts->fs_fmask = result.uint_32;
03e85038b1b69b Namjae Jeon 2020-01-15 268 break;
03e85038b1b69b Namjae Jeon 2020-01-15 269 case Opt_allow_utime:
03e85038b1b69b Namjae Jeon 2020-01-15 270 opts->allow_utime = result.uint_32 &
0022;
03e85038b1b69b Namjae Jeon 2020-01-15 271 break;
03e85038b1b69b Namjae Jeon 2020-01-15 272 case Opt_charset:
03e85038b1b69b Namjae Jeon 2020-01-15 273 exfat_free_iocharset(sbi);
03e85038b1b69b Namjae Jeon 2020-01-15 274 opts->iocharset =
kstrdup(param->string, GFP_KERNEL);
03e85038b1b69b Namjae Jeon 2020-01-15 275 if (!opts->iocharset)
03e85038b1b69b Namjae Jeon 2020-01-15 276 return -ENOMEM;
03e85038b1b69b Namjae Jeon 2020-01-15 277 break;
03e85038b1b69b Namjae Jeon 2020-01-15 278 case Opt_errors:
03e85038b1b69b Namjae Jeon 2020-01-15 279 opts->errors = result.uint_32;
03e85038b1b69b Namjae Jeon 2020-01-15 280 break;
03e85038b1b69b Namjae Jeon 2020-01-15 281 case Opt_discard:
03e85038b1b69b Namjae Jeon 2020-01-15 282 opts->discard = 1;
03e85038b1b69b Namjae Jeon 2020-01-15 283 break;
03e85038b1b69b Namjae Jeon 2020-01-15 284 case Opt_time_offset:
03e85038b1b69b Namjae Jeon 2020-01-15 285 /*
03e85038b1b69b Namjae Jeon 2020-01-15 286 * GMT+-12 zones may have DST corrections so
at least
03e85038b1b69b Namjae Jeon 2020-01-15 287 * 13 hours difference is needed. Make the
limit 24
03e85038b1b69b Namjae Jeon 2020-01-15 288 * just in case someone invents something
unusual.
03e85038b1b69b Namjae Jeon 2020-01-15 289 */
03e85038b1b69b Namjae Jeon 2020-01-15 290 if (result.int_32 < -24 * 60 ||
result.int_32 > 24 * 60)
03e85038b1b69b Namjae Jeon 2020-01-15 291 return -EINVAL;
03e85038b1b69b Namjae Jeon 2020-01-15 292 opts->time_offset = result.int_32;
03e85038b1b69b Namjae Jeon 2020-01-15 293 break;
03e85038b1b69b Namjae Jeon 2020-01-15 294 default:
03e85038b1b69b Namjae Jeon 2020-01-15 295 return -EINVAL;
03e85038b1b69b Namjae Jeon 2020-01-15 296 }
03e85038b1b69b Namjae Jeon 2020-01-15 297
03e85038b1b69b Namjae Jeon 2020-01-15 298 return 0;
03e85038b1b69b Namjae Jeon 2020-01-15 299 }
03e85038b1b69b Namjae Jeon 2020-01-15 300
:::::: The code at line 222 was first introduced by commit
:::::: 03e85038b1b69bde7977190d95e967723b1ba39f exfat: add super block operations
:::::: TO: Namjae Jeon <namjae.jeon(a)samsung.com>
:::::: CC: Jan Alexander Steffens (heftig) <jan.steffens(a)gmail.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org