18 #include <linux/kernel.h>
20 #include <linux/module.h>
25 static inline void memcpy_dir(
void *
buf,
void *sgdata,
size_t nbytes,
int out)
27 void *
src = out ? buf : sgdata;
28 void *
dst = out ? sgdata :
buf;
64 if (walk->
offset >= walk->
sg->offset + walk->
sg->length)
71 if (!(scatterwalk_pagelen(walk) & (
PAGE_SIZE - 1)) || !more)
72 scatterwalk_pagedone(walk, out, more);
80 unsigned int len_this_page = scatterwalk_pagelen(walk);
83 if (len_this_page > nbytes)
87 memcpy_dir(buf, vaddr, len_this_page, out);
88 scatterwalk_unmap(vaddr);
90 scatterwalk_advance(walk, len_this_page);
92 if (nbytes == len_this_page)
96 nbytes -= len_this_page;
98 scatterwalk_pagedone(walk, out, 1);
115 if (start < offset + sg->
length)
119 sg = scatterwalk_sg_next(sg);
122 scatterwalk_advance(&walk, start - offset);