On 07/01/2016 01:55 PM, Kuthonuzo Luruo wrote: > On Fri, Jul 1, 2016 at 1:41 PM, Andrey Ryabinin <aryabinin@xxxxxxxxxxxxx> wrote: >> >> >> On 07/01/2016 10:53 AM, js1304@xxxxxxxxx wrote: >>> From: Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> >>> >>> If we move an item on qlist's tail, we need to update qlist's tail >>> properly. curr->next can be NULL since it is singly linked list >>> so it is invalid for tail. curr is scheduled to be moved so >>> using prev would be correct. >> >> Hmm.. prev may be the element that moved in 'to' list. We need to assign the last element >> from which is in ther 'from' list. > > something like this should handle qlink == head == tail: > > --- a/mm/kasan/quarantine.c > +++ b/mm/kasan/quarantine.c > @@ -251,11 +251,11 @@ static void qlist_move_cache(struct qlist_head *from, > if (obj_cache == cache) { > if (unlikely(from->head == qlink)) { > from->head = curr->next; > - prev = curr; > + prev = from->head; This will break 'to' list. > } else > prev->next = curr->next; > if (unlikely(from->tail == qlink)) > - from->tail = curr->next; > + from->tail = prev; > from->bytes -= cache->size; > qlist_put(to, qlink, cache->size); > } else { > > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>