On Mon, Jun 17, 2019 at 10:24:23AM +0200, Christoph Hellwig wrote: > > - for (i = 0; i < (len / bsize_elem); i++, buffer += bsize_elem) { > > - struct page *page = sg_page(&scatterlist[i]); > > + for (i = 0; i < (len / bsize_elem); i++, sg = sg_next(sg), buffer += bsize_elem) { > > Please split the overly long line. Fine. > > > + struct page *page = sg_page(sg); > > > > kaddr = kmap(page); > > memcpy(kaddr, buffer, bsize_elem); > > kunmap(page); > > Not new in this patch, but this is buggy as scatterlists could have > offsets. This should probably use the scatterlist.c copy helper > eventually. This sglist is allocated by driver, see ipr_copy_ucode_buffer(), so offset for any element is zero. Thanks, Ming