|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] page_list_splice() seems buggy (4.1.2)
>>> On 06.06.12 at 03:36, Jisoo Yang <jisooy@xxxxxxxxx> wrote:
> It looks like page_list_splice(list, head) in include/xen/mm.h is buggy.
> (4.1.2)
>
> After calling it, head->next.prev incorrectly points to the old first page,
> when it really should point to null (i.e., PAGE_LIST_NULL).
> The 'head' list becomes inconsistent and the system will crash later when
> you pop items out from the list. (usually fatal page fault) .
>
> To patch this bug I suggest to remove 'first->list.prev =
> page_to_pdx(head->next);' line.
While removing this line indeed appears to be correct, it would
make it less obvious to compare the functionality here with
__list_splice(). Therefore I'd replace it either with
ASSERT(first->list.prev == PAGE_LIST_NULL);
or with (possibly commented out, i.e. just for documentation)
first->list.prev = at->list.prev;
Apparently the sole current in-tree user simply doesn't
reference head->next.prev, and hence the bug never
manifested itself.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |