tree: https://github.com/ammarfaizi2/linux-block akpm/mm/mm-unstable head: eecc1f68b7ae1e677dd01b728e58de61a2f8ae71 commit: d9c0ca7c6a02830de65fbc684cf0be7e6510737c [46/244] maple_tree: reorganize testing to restore module testing config: hexagon-allmodconfig compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 791a7ae1ba3efd6bca96338e10ffde557ba83920) 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/ammarfaizi2/linux-block/commit/d9c0ca7c6a02830de65fbc684cf0be7e6510737c git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block git fetch --no-tags ammarfaizi2-block akpm/mm/mm-unstable git checkout d9c0ca7c6a02830de65fbc684cf0be7e6510737c # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash lib/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> lib/test_maple_tree.c:453:12: warning: result of comparison of constant 4398046511104 with expression of type 'unsigned long' is always false [-Wtautological-constant-out-of-range-compare] if ((val == 4398046511104) || (val == ULONG_MAX)) ~~~ ^ ~~~~~~~~~~~~~ lib/test_maple_tree.c:496:17: warning: result of comparison of constant 4398046511104 with expression of type 'unsigned long' is always false [-Wtautological-constant-out-of-range-compare] else if ((val == 4398046511104) || (val == ULONG_MAX)) ~~~ ^ ~~~~~~~~~~~~~ lib/test_maple_tree.c:182:19: warning: unused function 'not_empty' [-Wunused-function] static inline int not_empty(struct maple_node *node) ^ 3 warnings generated. vim +453 lib/test_maple_tree.c 356 357 static noinline void check_find(struct maple_tree *mt) 358 { 359 unsigned long val = 0; 360 unsigned long count; 361 unsigned long max; 362 unsigned long last = 0, index = 0; 363 void *entry, *entry2; 364 365 MA_STATE(mas, mt, 0, 0); 366 367 /* Insert 0. */ 368 MT_BUG_ON(mt, mtree_insert_index(mt, val++, GFP_KERNEL)); 369 370 if (MAPLE_32BIT) 371 count = 15; 372 else 373 count = 20; 374 375 for (int i = 0; i <= count; i++) { 376 if (val != 64) 377 MT_BUG_ON(mt, mtree_insert_index(mt, val, GFP_KERNEL)); 378 else 379 MT_BUG_ON(mt, mtree_insert(mt, val, 380 XA_ZERO_ENTRY, GFP_KERNEL)); 381 382 val <<= 2; 383 } 384 385 val = 0; 386 mas_set(&mas, val); 387 mas_lock(&mas); 388 while ((entry = mas_find(&mas, 268435456)) != NULL) { 389 if (val != 64) 390 MT_BUG_ON(mt, xa_mk_value(val) != entry); 391 else 392 MT_BUG_ON(mt, entry != XA_ZERO_ENTRY); 393 394 val <<= 2; 395 /* For zero check. */ 396 if (!val) 397 val = 1; 398 } 399 mas_unlock(&mas); 400 401 val = 0; 402 mas_set(&mas, val); 403 mas_lock(&mas); 404 mas_for_each(&mas, entry, ULONG_MAX) { 405 if (val != 64) 406 MT_BUG_ON(mt, xa_mk_value(val) != entry); 407 else 408 MT_BUG_ON(mt, entry != XA_ZERO_ENTRY); 409 val <<= 2; 410 /* For zero check. */ 411 if (!val) 412 val = 1; 413 } 414 mas_unlock(&mas); 415 416 /* Test mas_pause */ 417 val = 0; 418 mas_set(&mas, val); 419 mas_lock(&mas); 420 mas_for_each(&mas, entry, ULONG_MAX) { 421 if (val != 64) 422 MT_BUG_ON(mt, xa_mk_value(val) != entry); 423 else 424 MT_BUG_ON(mt, entry != XA_ZERO_ENTRY); 425 val <<= 2; 426 /* For zero check. */ 427 if (!val) 428 val = 1; 429 430 mas_pause(&mas); 431 mas_unlock(&mas); 432 mas_lock(&mas); 433 } 434 mas_unlock(&mas); 435 436 val = 0; 437 max = 300; /* A value big enough to include XA_ZERO_ENTRY at 64. */ 438 mt_for_each(mt, entry, index, max) { 439 MT_BUG_ON(mt, xa_mk_value(val) != entry); 440 val <<= 2; 441 if (val == 64) /* Skip zero entry. */ 442 val <<= 2; 443 /* For zero check. */ 444 if (!val) 445 val = 1; 446 } 447 448 val = 0; 449 max = 0; 450 index = 0; 451 MT_BUG_ON(mt, mtree_insert_index(mt, ULONG_MAX, GFP_KERNEL)); 452 mt_for_each(mt, entry, index, ULONG_MAX) { > 453 if ((val == 4398046511104) || (val == ULONG_MAX)) 454 MT_BUG_ON(mt, entry != 455 xa_mk_value(ULONG_MAX & LONG_MAX)); 456 else 457 MT_BUG_ON(mt, xa_mk_value(val) != entry); 458 459 /* Workaround for 32bit */ 460 if ((val << 2) < val) 461 val = ULONG_MAX; 462 else 463 val <<= 2; 464 465 if (val == 64) /* Skip zero entry. */ 466 val <<= 2; 467 /* For zero check. */ 468 if (!val) 469 val = 1; 470 max++; 471 MT_BUG_ON(mt, max > 25); 472 } 473 mtree_erase_index(mt, ULONG_MAX); 474 475 mas_reset(&mas); 476 index = 17; 477 entry = mt_find(mt, &index, 512); 478 MT_BUG_ON(mt, xa_mk_value(256) != entry); 479 480 mas_reset(&mas); 481 index = 17; 482 entry = mt_find(mt, &index, 20); 483 MT_BUG_ON(mt, entry != NULL); 484 485 486 /* Range check.. */ 487 /* Insert ULONG_MAX */ 488 MT_BUG_ON(mt, mtree_insert_index(mt, ULONG_MAX, GFP_KERNEL)); 489 490 val = 0; 491 mas_set(&mas, 0); 492 mas_lock(&mas); 493 mas_for_each(&mas, entry, ULONG_MAX) { 494 if (val == 64) 495 MT_BUG_ON(mt, entry != XA_ZERO_ENTRY); 496 else if ((val == 4398046511104) || (val == ULONG_MAX)) 497 MT_BUG_ON(mt, entry != xa_mk_value(ULONG_MAX & LONG_MAX)); 498 else 499 MT_BUG_ON(mt, xa_mk_value(val) != entry); 500 501 /* Workaround for 32bit */ 502 if ((val << 2) < val) 503 val = ULONG_MAX; 504 else 505 val <<= 2; 506 507 /* For zero check. */ 508 if (!val) 509 val = 1; 510 mas_pause(&mas); 511 mas_unlock(&mas); 512 mas_lock(&mas); 513 } 514 mas_unlock(&mas); 515 516 mas_set(&mas, 1048576); 517 mas_lock(&mas); 518 entry = mas_find(&mas, 1048576); 519 mas_unlock(&mas); 520 MT_BUG_ON(mas.tree, entry == NULL); 521 522 /* 523 * Find last value. 524 * 1. get the expected value, leveraging the existence of an end entry 525 * 2. delete end entry 526 * 3. find the last value but searching for ULONG_MAX and then using 527 * prev 528 */ 529 /* First, get the expected result. */ 530 mas_lock(&mas); 531 mas_reset(&mas); 532 mas.index = ULONG_MAX; /* start at max.. */ 533 entry = mas_find(&mas, ULONG_MAX); 534 entry = mas_prev(&mas, 0); 535 index = mas.index; 536 last = mas.last; 537 538 /* Erase the last entry. */ 539 mas_reset(&mas); 540 mas.index = ULONG_MAX; 541 mas.last = ULONG_MAX; 542 mas_erase(&mas); 543 544 /* Get the previous value from MAS_START */ 545 mas_reset(&mas); 546 entry2 = mas_prev(&mas, 0); 547 548 /* Check results. */ 549 MT_BUG_ON(mt, entry != entry2); 550 MT_BUG_ON(mt, index != mas.index); 551 MT_BUG_ON(mt, last != mas.last); 552 553 554 mas.node = MAS_NONE; 555 mas.index = ULONG_MAX; 556 mas.last = ULONG_MAX; 557 entry2 = mas_prev(&mas, 0); 558 MT_BUG_ON(mt, entry != entry2); 559 560 mas_set(&mas, 0); 561 MT_BUG_ON(mt, mas_prev(&mas, 0) != NULL); 562 563 mas_unlock(&mas); 564 mtree_destroy(mt); 565 } 566 -- 0-DAY CI Kernel Test Service https://01.org/lkp