YAMAMOTO Takashi wrote:
> hi,
> 
>> +unsigned long mem_container_isolate_pages(unsigned long nr_to_scan,
>> +                                    struct list_head *dst,
>> +                                    unsigned long *scanned, int order,
>> +                                    int mode, struct zone *z,
>> +                                    struct mem_container *mem_cont,
>> +                                    int active)
>> +{
>> +    unsigned long nr_taken = 0;
>> +    struct page *page;
>> +    unsigned long scan;
>> +    LIST_HEAD(mp_list);
>> +    struct list_head *src;
>> +    struct meta_page *mp;
>> +
>> +    if (active)
>> +            src = &mem_cont->active_list;
>> +    else
>> +            src = &mem_cont->inactive_list;
>> +
>> +    for (scan = 0; scan < nr_to_scan && !list_empty(src); scan++) {
>> +            mp = list_entry(src->prev, struct meta_page, lru);
>> +            page = mp->page;
>> +
> 
> - is it safe to pick the lists without mem_cont->lru_lock held?
> 
> - what prevents mem_container_uncharge from freeing this meta_page
>  behind us?
> 
> YAMAMOTO Takashi

Hi, YAMAMOTO,

We do take the lru_lock before deleting the page from the list
and in mem_container_move_lists(). But, I guess like you point
out page = mp->page might not be a safe operation. I'll fix
the problem in the next release.

Thanks for the review,
-- 
        Balbir Singh
        Linux Technology Center
        IBM, ISTL
_______________________________________________
Containers mailing list
[EMAIL PROTECTED]
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel

Reply via email to