On Tue, Jul 30, 2019 at 06:46:25PM -0700, Ralph Campbell wrote: >> for (i = 0; i < npages; i += c) { >> - unsigned long next; >> - >> c = min(SG_MAX_SINGLE_ALLOC, npages); >> - next = start + (c << PAGE_SHIFT); >> - ret = migrate_vma(&nouveau_dmem_migrate_ops, vma, start, >> - next, src_pfns, dst_pfns, &migrate); >> + args.end = start + (c << PAGE_SHIFT); > > Since migrate_vma_setup() is called in a loop, either args.cpages and > args.npages need to be cleared here or cleared in migrate_vma_setup(). I think clearing everything that is not used for argument passing in migrate_vma_setup is a good idea. I'll do that. Btw, it seems like this was a fullquote just for the little comment as far as I could tell from wading through it. It would be very appreciated to properly quote the replies.