sanjay nadkarni (Laptop) wrote:
> Hi Sarah,
> See comments in line
>
> Joseph J. VLcek wrote:
>> Thank you Sarah!
>>
>> Sarah Jelinek wrote:
>>>
>>>
>>> Joseph J. VLcek wrote:
>>>> Sarah Jelinek wrote:
>>>>>
>>>>>
>>>>> Joseph J. VLcek wrote:
>>>>>> Sarah Jelinek wrote:
>>>>>>> Hi Jan and Ginnie,
>>>>>>>
>>>>>>> Could you do a code review for:
>>>>>>>
>>>>>>> 6795293 libdiskmgt coredump on x86 with devices under mpxio
>>>>>>> control/SUN-Universal Xport inbound mangement
>>>>>>>
>>>>>>> Webrev is here:
>>>>>>>
>>>>>>> http://cr.opensolaris.org/~sjelinek/6795293/
>>>>>>>
>>>>>>> ****Building and Testing done:
>>>>>>> -Both sparc and x86 built clean
>>>>>>> -Tested on both x86 and sparc:
>>>>>>> x86 testing reproduced bug and also shows bug fix
>>>>>>> sparc testing for regression testing. Bug does not present
>>>>>>> itself on sparc.
>>>>>>>
>>>>>>> -Reproduced bug and tested fix on oaf627.ireland. This is an x86
>>>>>>> box with Qlogic FC controllers.
>>>>>>> -Tested both mpxio and non-mpxio
>>>>>>> -ran ::findleaks. No leaks detected.
>>>>>>>
>>>>>>> Test output is located here:
>>>>>>>
>>>>>>> /net/irperf.ireland/export/work/bfu/sjelinek
>>>>>>>
>>>>>>> The files in this directory are specifically:
>>>>>>> ***Bad run(bug is present):
>>>>>>> -core.test_td.2664.1263495933.gz-core showing original bug
>>>>>>> reproduced
>>>>>>> -libdiskmgt_bad.txt
>>>>>>> -test_td_bad.txt
>>>>>>>
>>>>>>> ***Good run(bug fixed):
>>>>>>> -libdiskmgt_good.txt
>>>>>>> -test_td_good.txt
>>>>>>> -format.txt - shows output of format to show match with
>>>>>>> test_td_good.txt data.
>>>>>>>
>>>>>>> ***Good run, mpxio disabled(bug fixed):
>>>>>>> -libdiskmgt_nonmpxio.txt
>>>>>>> -test_td_nonmpxio.txt
>>>>>>> -format_nonmpxio.txt - shows output of format to show match with
>>>>>>> -test_td_nonmpxio.txt data.
>>>>>>>
>>>>>>>
>>>>>>> thanks,
>>>>>>> sarah
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> caiman-discuss mailing list
>>>>>>> caiman-discuss at opensolaris.org
>>>>>>> http://mail.opensolaris.org/mailman/listinfo/caiman-discuss
>>>>>> Sarah,
>>>>>>
>>>>>> This looks good to me.
>>>>>>
>>>>>> I have one questions.
>>>>>>
>>>>>> 869-884
>>>>>> Is moving items up in the lists creating a memory leak?
> I think what Joe is specifically referring to is the "i"th instance,
> i.e. when dp->controllers[i]->name matches cp->name. In this case, we
> overwrite dp->controllers[i] with i+1 (referred to as "j" with
> "j+1"). At this point any reference to matched instance from
> dp->controllers[i] is lost.
>
> So the assertion made is that it points cp, which is freed below.
>
> Is that correct ?
>
> -Sanjay
Yes that was my point... but my understanding from what Sarah has
described is that the memory is properly cleaned up.
Joe
>
>
>>>>>>
>>>>> Hi Joe,
>>>>>
>>>>> Thank you for the review.
>>>>>
>>>>> No, because I free that memory, with cache_free_controller() at
>>>>> line 897:
>>>>>> 897 cache_free_controller(cp);
>>>>>
>>>>> All I am doing at lines 869-884 is moving the pointers in the Disk
>>>>> N datastructure that point to the controllers associated with Disk
>>>>> N. I do this first, then free the memory that is actually
>>>>> allocated to the controller that we have just disassociated with
>>>>> Disk N.
>>>> Thanks for the reply Sarah.
>>>>
>>>> Where is the memory freed? By the call to:
>>>>
>>>> 900 cache_free_controller(cp);
>>>
>>> Yes, in the updated webrev, which has changed based on Jan's
>>> comments, this is where the memory is freed.
>>>
>>> This code does:
>>>
>>>> void
>>>> cache_free_controller(controller_t *cp)
>>>> {
>>>> free(cp->name);
>>>> free(cp->kstat_name);
>>>> free(cp->disks);
>>>> if (cp->paths != NULL) {
>>>> int i;
>>>>
>>>> for (i = 0; cp->paths[i]; i++) {
>>>> /* free the path since it can't exist w/o
>>>> the ctrlr */
>>>> cache_free_path(cp->paths[i]);
>>>> }
>>>> free(cp->paths);
>>>> }
>>>>
>>>> free(cp);
>>>> }
>>>
>>> It's in cache.c
>>>
>>> thanks,
>>> sarah
>>> *****
>>>
>>>>
>>>> ?
>>>>
>>>> Joe
>>>>
>>>>
>>>>
>>
>> _______________________________________________
>> caiman-discuss mailing list
>> caiman-discuss at opensolaris.org
>> http://mail.opensolaris.org/mailman/listinfo/caiman-discuss
>