CC: [email protected] BCC: [email protected] CC: [email protected] TO: Richard Fitzgerald <[email protected]> CC: Petr Mladek <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 4b97bac0756a81cda5afd45417a99b5bccdcff67 commit: 900fdc4573766dd43b847b4f54bd4a1ee2bc7360 lib: vsprintf: Fix handling of number field widths in vsscanf date: 12 months ago :::::: branch date: 14 hours ago :::::: commit date: 12 months ago config: openrisc-randconfig-m031-20220506 (https://download.01.org/0day-ci/archive/20220507/[email protected]/config) compiler: or1k-linux-gcc (GCC) 11.3.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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=900fdc4573766dd43b847b4f54bd4a1ee2bc7360 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 900fdc4573766dd43b847b4f54bd4a1ee2bc7360 # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 ARCH=openrisc If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> All errors (new ones prefixed by >>): or1k-linux-ld: arch/openrisc/kernel/entry.o: in function `_external_irq_handler': >> (.text+0x83c): undefined reference to `printk' (.text+0x83c): relocation truncated to fit: R_OR1K_INSN_REL_26 against undefined symbol `printk' Kconfig warnings: (for reference only) WARNING: unmet direct dependencies detected for LOCKDEP Depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT && (FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86) Selected by - PROVE_LOCKING && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT - DEBUG_LOCK_ALLOC && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT New smatch warnings: lib/vsprintf.c:3615 vsscanf() error: uninitialized symbol 'next'. Old smatch warnings: lib/vsprintf.c:1440 ip6_compressed_string() warn: possible spectre second half. '*p' lib/vsprintf.c:1443 ip6_compressed_string() warn: possible spectre second half. '*p' vim +/next +3615 lib/vsprintf.c 4370aa4aa75391 Lai Jiangshan 2009-03-06 3344 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3345 /** ^1da177e4c3f41 Linus Torvalds 2005-04-16 3346 * vsscanf - Unformat a buffer into a list of arguments ^1da177e4c3f41 Linus Torvalds 2005-04-16 3347 * @buf: input buffer ^1da177e4c3f41 Linus Torvalds 2005-04-16 3348 * @fmt: format of buffer ^1da177e4c3f41 Linus Torvalds 2005-04-16 3349 * @args: arguments ^1da177e4c3f41 Linus Torvalds 2005-04-16 3350 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 3351 int vsscanf(const char *buf, const char *fmt, va_list args) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3352 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3353 const char *str = buf; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3354 char *next; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3355 char digit; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3356 int num = 0; ef0658f3de484b Joe Perches 2010-03-06 3357 u8 qualifier; 53809751ac230a Jan Beulich 2012-12-17 3358 unsigned int base; 53809751ac230a Jan Beulich 2012-12-17 3359 union { 53809751ac230a Jan Beulich 2012-12-17 3360 long long s; 53809751ac230a Jan Beulich 2012-12-17 3361 unsigned long long u; 53809751ac230a Jan Beulich 2012-12-17 3362 } val; ef0658f3de484b Joe Perches 2010-03-06 3363 s16 field_width; d4be151b2180fb André Goddard Rosa 2009-12-14 3364 bool is_sign; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3365 da99075c1d3683 Jan Beulich 2012-10-04 3366 while (*fmt) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3367 /* skip any white space in format */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 3368 /* white space in format matchs any amount of ^1da177e4c3f41 Linus Torvalds 2005-04-16 3369 * white space, including none, in the input. ^1da177e4c3f41 Linus Torvalds 2005-04-16 3370 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 3371 if (isspace(*fmt)) { e7d2860b690d4f André Goddard Rosa 2009-12-14 3372 fmt = skip_spaces(++fmt); e7d2860b690d4f André Goddard Rosa 2009-12-14 3373 str = skip_spaces(str); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3374 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3375 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3376 /* anything that is not a conversion must match exactly */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 3377 if (*fmt != '%' && *fmt) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3378 if (*fmt++ != *str++) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3379 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3380 continue; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3381 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3382 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3383 if (!*fmt) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3384 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3385 ++fmt; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3386 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3387 /* skip this conversion. ^1da177e4c3f41 Linus Torvalds 2005-04-16 3388 * advance both strings to next white space ^1da177e4c3f41 Linus Torvalds 2005-04-16 3389 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 3390 if (*fmt == '*') { da99075c1d3683 Jan Beulich 2012-10-04 3391 if (!*str) da99075c1d3683 Jan Beulich 2012-10-04 3392 break; f9310b2f9a19b7 Jessica Yu 2016-03-17 3393 while (!isspace(*fmt) && *fmt != '%' && *fmt) { f9310b2f9a19b7 Jessica Yu 2016-03-17 3394 /* '%*[' not yet supported, invalid format */ f9310b2f9a19b7 Jessica Yu 2016-03-17 3395 if (*fmt == '[') f9310b2f9a19b7 Jessica Yu 2016-03-17 3396 return num; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3397 fmt++; f9310b2f9a19b7 Jessica Yu 2016-03-17 3398 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3399 while (!isspace(*str) && *str) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3400 str++; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3401 continue; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3402 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3403 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3404 /* get field width */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 3405 field_width = -1; 53809751ac230a Jan Beulich 2012-12-17 3406 if (isdigit(*fmt)) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3407 field_width = skip_atoi(&fmt); 53809751ac230a Jan Beulich 2012-12-17 3408 if (field_width <= 0) 53809751ac230a Jan Beulich 2012-12-17 3409 break; 53809751ac230a Jan Beulich 2012-12-17 3410 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3411 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3412 /* get conversion qualifier */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 3413 qualifier = -1; 75fb8f269305fc Andy Shevchenko 2011-07-25 3414 if (*fmt == 'h' || _tolower(*fmt) == 'l' || 5b5e0928f742cf Alexey Dobriyan 2017-02-27 3415 *fmt == 'z') { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3416 qualifier = *fmt++; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3417 if (unlikely(qualifier == *fmt)) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3418 if (qualifier == 'h') { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3419 qualifier = 'H'; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3420 fmt++; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3421 } else if (qualifier == 'l') { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3422 qualifier = 'L'; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3423 fmt++; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3424 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3425 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3426 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3427 da99075c1d3683 Jan Beulich 2012-10-04 3428 if (!*fmt) da99075c1d3683 Jan Beulich 2012-10-04 3429 break; da99075c1d3683 Jan Beulich 2012-10-04 3430 da99075c1d3683 Jan Beulich 2012-10-04 3431 if (*fmt == 'n') { da99075c1d3683 Jan Beulich 2012-10-04 3432 /* return number of characters read so far */ da99075c1d3683 Jan Beulich 2012-10-04 3433 *va_arg(args, int *) = str - buf; da99075c1d3683 Jan Beulich 2012-10-04 3434 ++fmt; da99075c1d3683 Jan Beulich 2012-10-04 3435 continue; da99075c1d3683 Jan Beulich 2012-10-04 3436 } da99075c1d3683 Jan Beulich 2012-10-04 3437 da99075c1d3683 Jan Beulich 2012-10-04 3438 if (!*str) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3439 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3440 d4be151b2180fb André Goddard Rosa 2009-12-14 3441 base = 10; 3f623eba2a7fc0 Fabian Frederick 2014-06-04 3442 is_sign = false; d4be151b2180fb André Goddard Rosa 2009-12-14 3443 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3444 switch (*fmt++) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3445 case 'c': ^1da177e4c3f41 Linus Torvalds 2005-04-16 3446 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3447 char *s = (char *)va_arg(args, char*); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3448 if (field_width == -1) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3449 field_width = 1; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3450 do { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3451 *s++ = *str++; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3452 } while (--field_width > 0 && *str); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3453 num++; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3454 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3455 continue; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3456 case 's': ^1da177e4c3f41 Linus Torvalds 2005-04-16 3457 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3458 char *s = (char *)va_arg(args, char *); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3459 if (field_width == -1) 4be929be34f9bd Alexey Dobriyan 2010-05-24 3460 field_width = SHRT_MAX; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3461 /* first, skip leading white space in buffer */ e7d2860b690d4f André Goddard Rosa 2009-12-14 3462 str = skip_spaces(str); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3463 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3464 /* now copy until next white space */ 7b9186f5eb0b17 André Goddard Rosa 2009-12-14 3465 while (*str && !isspace(*str) && field_width--) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3466 *s++ = *str++; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3467 *s = '\0'; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3468 num++; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3469 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3470 continue; f9310b2f9a19b7 Jessica Yu 2016-03-17 3471 /* f9310b2f9a19b7 Jessica Yu 2016-03-17 3472 * Warning: This implementation of the '[' conversion specifier f9310b2f9a19b7 Jessica Yu 2016-03-17 3473 * deviates from its glibc counterpart in the following ways: f9310b2f9a19b7 Jessica Yu 2016-03-17 3474 * (1) It does NOT support ranges i.e. '-' is NOT a special f9310b2f9a19b7 Jessica Yu 2016-03-17 3475 * character f9310b2f9a19b7 Jessica Yu 2016-03-17 3476 * (2) It cannot match the closing bracket ']' itself f9310b2f9a19b7 Jessica Yu 2016-03-17 3477 * (3) A field width is required f9310b2f9a19b7 Jessica Yu 2016-03-17 3478 * (4) '%*[' (discard matching input) is currently not supported f9310b2f9a19b7 Jessica Yu 2016-03-17 3479 * f9310b2f9a19b7 Jessica Yu 2016-03-17 3480 * Example usage: f9310b2f9a19b7 Jessica Yu 2016-03-17 3481 * ret = sscanf("00:0a:95","%2[^:]:%2[^:]:%2[^:]", f9310b2f9a19b7 Jessica Yu 2016-03-17 3482 * buf1, buf2, buf3); f9310b2f9a19b7 Jessica Yu 2016-03-17 3483 * if (ret < 3) f9310b2f9a19b7 Jessica Yu 2016-03-17 3484 * // etc.. f9310b2f9a19b7 Jessica Yu 2016-03-17 3485 */ f9310b2f9a19b7 Jessica Yu 2016-03-17 3486 case '[': f9310b2f9a19b7 Jessica Yu 2016-03-17 3487 { f9310b2f9a19b7 Jessica Yu 2016-03-17 3488 char *s = (char *)va_arg(args, char *); f9310b2f9a19b7 Jessica Yu 2016-03-17 3489 DECLARE_BITMAP(set, 256) = {0}; f9310b2f9a19b7 Jessica Yu 2016-03-17 3490 unsigned int len = 0; f9310b2f9a19b7 Jessica Yu 2016-03-17 3491 bool negate = (*fmt == '^'); f9310b2f9a19b7 Jessica Yu 2016-03-17 3492 f9310b2f9a19b7 Jessica Yu 2016-03-17 3493 /* field width is required */ f9310b2f9a19b7 Jessica Yu 2016-03-17 3494 if (field_width == -1) f9310b2f9a19b7 Jessica Yu 2016-03-17 3495 return num; f9310b2f9a19b7 Jessica Yu 2016-03-17 3496 f9310b2f9a19b7 Jessica Yu 2016-03-17 3497 if (negate) f9310b2f9a19b7 Jessica Yu 2016-03-17 3498 ++fmt; f9310b2f9a19b7 Jessica Yu 2016-03-17 3499 f9310b2f9a19b7 Jessica Yu 2016-03-17 3500 for ( ; *fmt && *fmt != ']'; ++fmt, ++len) f9310b2f9a19b7 Jessica Yu 2016-03-17 3501 set_bit((u8)*fmt, set); f9310b2f9a19b7 Jessica Yu 2016-03-17 3502 f9310b2f9a19b7 Jessica Yu 2016-03-17 3503 /* no ']' or no character set found */ f9310b2f9a19b7 Jessica Yu 2016-03-17 3504 if (!*fmt || !len) f9310b2f9a19b7 Jessica Yu 2016-03-17 3505 return num; f9310b2f9a19b7 Jessica Yu 2016-03-17 3506 ++fmt; f9310b2f9a19b7 Jessica Yu 2016-03-17 3507 f9310b2f9a19b7 Jessica Yu 2016-03-17 3508 if (negate) { f9310b2f9a19b7 Jessica Yu 2016-03-17 3509 bitmap_complement(set, set, 256); f9310b2f9a19b7 Jessica Yu 2016-03-17 3510 /* exclude null '\0' byte */ f9310b2f9a19b7 Jessica Yu 2016-03-17 3511 clear_bit(0, set); f9310b2f9a19b7 Jessica Yu 2016-03-17 3512 } f9310b2f9a19b7 Jessica Yu 2016-03-17 3513 f9310b2f9a19b7 Jessica Yu 2016-03-17 3514 /* match must be non-empty */ f9310b2f9a19b7 Jessica Yu 2016-03-17 3515 if (!test_bit((u8)*str, set)) f9310b2f9a19b7 Jessica Yu 2016-03-17 3516 return num; f9310b2f9a19b7 Jessica Yu 2016-03-17 3517 f9310b2f9a19b7 Jessica Yu 2016-03-17 3518 while (test_bit((u8)*str, set) && field_width--) f9310b2f9a19b7 Jessica Yu 2016-03-17 3519 *s++ = *str++; f9310b2f9a19b7 Jessica Yu 2016-03-17 3520 *s = '\0'; f9310b2f9a19b7 Jessica Yu 2016-03-17 3521 ++num; f9310b2f9a19b7 Jessica Yu 2016-03-17 3522 } f9310b2f9a19b7 Jessica Yu 2016-03-17 3523 continue; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3524 case 'o': ^1da177e4c3f41 Linus Torvalds 2005-04-16 3525 base = 8; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3526 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3527 case 'x': ^1da177e4c3f41 Linus Torvalds 2005-04-16 3528 case 'X': ^1da177e4c3f41 Linus Torvalds 2005-04-16 3529 base = 16; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3530 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3531 case 'i': ^1da177e4c3f41 Linus Torvalds 2005-04-16 3532 base = 0; 4c1ca831adb101 Nick Desaulniers 2020-11-15 3533 fallthrough; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3534 case 'd': 3f623eba2a7fc0 Fabian Frederick 2014-06-04 3535 is_sign = true; 4c1ca831adb101 Nick Desaulniers 2020-11-15 3536 fallthrough; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3537 case 'u': ^1da177e4c3f41 Linus Torvalds 2005-04-16 3538 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3539 case '%': ^1da177e4c3f41 Linus Torvalds 2005-04-16 3540 /* looking for '%' in str */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 3541 if (*str++ != '%') ^1da177e4c3f41 Linus Torvalds 2005-04-16 3542 return num; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3543 continue; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3544 default: ^1da177e4c3f41 Linus Torvalds 2005-04-16 3545 /* invalid format; stop here */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 3546 return num; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3547 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3548 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3549 /* have some sort of integer conversion. ^1da177e4c3f41 Linus Torvalds 2005-04-16 3550 * first, skip white space in buffer. ^1da177e4c3f41 Linus Torvalds 2005-04-16 3551 */ e7d2860b690d4f André Goddard Rosa 2009-12-14 3552 str = skip_spaces(str); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3553 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3554 digit = *str; 11b3dda5e8b6cd Richard Fitzgerald 2021-05-14 3555 if (is_sign && digit == '-') { 11b3dda5e8b6cd Richard Fitzgerald 2021-05-14 3556 if (field_width == 1) 11b3dda5e8b6cd Richard Fitzgerald 2021-05-14 3557 break; 11b3dda5e8b6cd Richard Fitzgerald 2021-05-14 3558 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3559 digit = *(str + 1); 11b3dda5e8b6cd Richard Fitzgerald 2021-05-14 3560 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3561 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3562 if (!digit ^1da177e4c3f41 Linus Torvalds 2005-04-16 3563 || (base == 16 && !isxdigit(digit)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3564 || (base == 10 && !isdigit(digit)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3565 || (base == 8 && (!isdigit(digit) || digit > '7')) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3566 || (base == 0 && !isdigit(digit))) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3567 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3568 53809751ac230a Jan Beulich 2012-12-17 3569 if (is_sign) 900fdc4573766d Richard Fitzgerald 2021-05-14 3570 val.s = simple_strntoll(str, 900fdc4573766d Richard Fitzgerald 2021-05-14 3571 field_width >= 0 ? field_width : INT_MAX, 900fdc4573766d Richard Fitzgerald 2021-05-14 3572 &next, base); 53809751ac230a Jan Beulich 2012-12-17 3573 else 900fdc4573766d Richard Fitzgerald 2021-05-14 3574 val.u = simple_strntoull(str, 900fdc4573766d Richard Fitzgerald 2021-05-14 3575 field_width >= 0 ? field_width : INT_MAX, 900fdc4573766d Richard Fitzgerald 2021-05-14 3576 &next, base); 53809751ac230a Jan Beulich 2012-12-17 3577 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3578 switch (qualifier) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3579 case 'H': /* that's 'hh' in format */ 53809751ac230a Jan Beulich 2012-12-17 3580 if (is_sign) 53809751ac230a Jan Beulich 2012-12-17 3581 *va_arg(args, signed char *) = val.s; 53809751ac230a Jan Beulich 2012-12-17 3582 else 53809751ac230a Jan Beulich 2012-12-17 3583 *va_arg(args, unsigned char *) = val.u; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3584 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3585 case 'h': 53809751ac230a Jan Beulich 2012-12-17 3586 if (is_sign) 53809751ac230a Jan Beulich 2012-12-17 3587 *va_arg(args, short *) = val.s; 53809751ac230a Jan Beulich 2012-12-17 3588 else 53809751ac230a Jan Beulich 2012-12-17 3589 *va_arg(args, unsigned short *) = val.u; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3590 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3591 case 'l': 53809751ac230a Jan Beulich 2012-12-17 3592 if (is_sign) 53809751ac230a Jan Beulich 2012-12-17 3593 *va_arg(args, long *) = val.s; 53809751ac230a Jan Beulich 2012-12-17 3594 else 53809751ac230a Jan Beulich 2012-12-17 3595 *va_arg(args, unsigned long *) = val.u; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3596 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3597 case 'L': 53809751ac230a Jan Beulich 2012-12-17 3598 if (is_sign) 53809751ac230a Jan Beulich 2012-12-17 3599 *va_arg(args, long long *) = val.s; 53809751ac230a Jan Beulich 2012-12-17 3600 else 53809751ac230a Jan Beulich 2012-12-17 3601 *va_arg(args, unsigned long long *) = val.u; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3602 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3603 case 'z': 53809751ac230a Jan Beulich 2012-12-17 3604 *va_arg(args, size_t *) = val.u; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3605 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3606 default: 53809751ac230a Jan Beulich 2012-12-17 3607 if (is_sign) 53809751ac230a Jan Beulich 2012-12-17 3608 *va_arg(args, int *) = val.s; 53809751ac230a Jan Beulich 2012-12-17 3609 else 53809751ac230a Jan Beulich 2012-12-17 3610 *va_arg(args, unsigned int *) = val.u; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3611 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3612 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3613 num++; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3614 ^1da177e4c3f41 Linus Torvalds 2005-04-16 @3615 if (!next) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3616 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3617 str = next; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3618 } c6b40d16d1cfa1 Johannes Berg 2007-05-08 3619 ^1da177e4c3f41 Linus Torvalds 2005-04-16 3620 return num; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3621 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3622 EXPORT_SYMBOL(vsscanf); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3623 :::::: The code at line 3615 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 :::::: TO: Linus Torvalds <[email protected]> :::::: CC: Linus Torvalds <[email protected]> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
