On 3/16/21 2:56 PM, Song Liu wrote:
> On Mar 15, 2021, at 7:29 PM, Xiao Ni <xni(a)redhat.com> 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
Hi all,
Thanks for the clarification, we have disabled such warning.
Best Regards,
Rong Chen
> 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 <lkp(a)intel.com>
>>
>>
>> "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
_______________________________________________
kbuild-all mailing list -- kbuild-all(a)lists.01.org
To unsubscribe send an email to kbuild-all-leave(a)lists.01.org