> - 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. > + 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.