> On Mar 15, 2021, at 7:29 PM, Xiao Ni wrote: > > Hi all > > The atomic_t r10_bio->remaining starts at 1 in raid10_handle_discard. It means > raid10_handle_discard uses it and sets it to 1. So in fact it starts at 0 and sets to 1 > when it's used at first time. Then r10_bio->remaining is added by atomic_inc per usage. > > It decrements the value when leaving raid10_handle_discard and in every callback function. > So the count of r10_bio->remaining in this patch is right. > > Regards > Xiao It does look like a false alarm, as we set r10bio to first_r10bio after the free. Thanks, Song > > On 03/16/2021 08:29 AM, kernel test robot wrote: >> tree: git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git md-next >> head: 49c4d345c81f149a29b3db6e521e5191e55f02b6 >> commit: f3cf8c2b2caf6ae77b7c786218d3b060faef63a6 [5/6] md/raid10: improve discard request for far layout >> config: x86_64-allyesconfig (attached as .config) >> compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 >> >> If you fix the issue, kindly add following tag as appropriate >> Reported-by: kernel test robot >> >> >> "coccinelle warnings: (new ones prefixed by >>)" >>>> drivers/md/raid10.c:1526:8-27: atomic_dec_and_test variation before object free at line 1532. >> drivers/md/raid10.c:1526:8-27: atomic_dec_and_test variation before object free at line 1537. >> >> vim +1526 drivers/md/raid10.c >> >> 1520 >> 1521 static void raid_end_discard_bio(struct r10bio *r10bio) >> 1522 { >> 1523 struct r10conf *conf = r10bio->mddev->private; >> 1524 struct r10bio *first_r10bio; >> 1525 >>> 1526 while (atomic_dec_and_test(&r10bio->remaining)) { >> 1527 >> 1528 allow_barrier(conf); >> 1529 >> 1530 if (!test_bit(R10BIO_Discard, &r10bio->state)) { >> 1531 first_r10bio = (struct r10bio *)r10bio->master_bio; >>> 1532 free_r10bio(r10bio); >> 1533 r10bio = first_r10bio; >> 1534 } else { >> 1535 md_write_end(r10bio->mddev); >> 1536 bio_endio(r10bio->master_bio); >> 1537 free_r10bio(r10bio); >> 1538 break; >> 1539 } >> 1540 } >> 1541 } >> 1542 >> >> --- >> 0-DAY CI Kernel Test Service, Intel Corporation >> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org