Lines Matching refs:walk

34 static int hash_walk_next(struct crypto_hash_walk *walk)  in hash_walk_next()  argument
36 unsigned int alignmask = walk->alignmask; in hash_walk_next()
37 unsigned int offset = walk->offset; in hash_walk_next()
38 unsigned int nbytes = min(walk->entrylen, in hash_walk_next()
41 walk->data = kmap_local_page(walk->pg); in hash_walk_next()
42 walk->data += offset; in hash_walk_next()
51 walk->entrylen -= nbytes; in hash_walk_next()
55 static int hash_walk_new_entry(struct crypto_hash_walk *walk) in hash_walk_new_entry() argument
59 sg = walk->sg; in hash_walk_new_entry()
60 walk->offset = sg->offset; in hash_walk_new_entry()
61 walk->pg = sg_page(walk->sg) + (walk->offset >> PAGE_SHIFT); in hash_walk_new_entry()
62 walk->offset = offset_in_page(walk->offset); in hash_walk_new_entry()
63 walk->entrylen = sg->length; in hash_walk_new_entry()
65 if (walk->entrylen > walk->total) in hash_walk_new_entry()
66 walk->entrylen = walk->total; in hash_walk_new_entry()
67 walk->total -= walk->entrylen; in hash_walk_new_entry()
69 return hash_walk_next(walk); in hash_walk_new_entry()
72 int crypto_hash_walk_done(struct crypto_hash_walk *walk, int err) in crypto_hash_walk_done() argument
74 unsigned int alignmask = walk->alignmask; in crypto_hash_walk_done()
76 walk->data -= walk->offset; in crypto_hash_walk_done()
78 if (walk->entrylen && (walk->offset & alignmask) && !err) { in crypto_hash_walk_done()
81 walk->offset = ALIGN(walk->offset, alignmask + 1); in crypto_hash_walk_done()
82 nbytes = min(walk->entrylen, in crypto_hash_walk_done()
83 (unsigned int)(PAGE_SIZE - walk->offset)); in crypto_hash_walk_done()
85 walk->entrylen -= nbytes; in crypto_hash_walk_done()
86 walk->data += walk->offset; in crypto_hash_walk_done()
91 kunmap_local(walk->data); in crypto_hash_walk_done()
92 crypto_yield(walk->flags); in crypto_hash_walk_done()
97 if (walk->entrylen) { in crypto_hash_walk_done()
98 walk->offset = 0; in crypto_hash_walk_done()
99 walk->pg++; in crypto_hash_walk_done()
100 return hash_walk_next(walk); in crypto_hash_walk_done()
103 if (!walk->total) in crypto_hash_walk_done()
106 walk->sg = sg_next(walk->sg); in crypto_hash_walk_done()
108 return hash_walk_new_entry(walk); in crypto_hash_walk_done()
113 struct crypto_hash_walk *walk) in crypto_hash_walk_first() argument
115 walk->total = req->nbytes; in crypto_hash_walk_first()
117 if (!walk->total) { in crypto_hash_walk_first()
118 walk->entrylen = 0; in crypto_hash_walk_first()
122 walk->alignmask = crypto_ahash_alignmask(crypto_ahash_reqtfm(req)); in crypto_hash_walk_first()
123 walk->sg = req->src; in crypto_hash_walk_first()
124 walk->flags = req->base.flags; in crypto_hash_walk_first()
126 return hash_walk_new_entry(walk); in crypto_hash_walk_first()