• Home
  • Raw
  • Download

Lines Matching refs:walk

40 static int hash_walk_next(struct crypto_hash_walk *walk)  in hash_walk_next()  argument
42 unsigned int alignmask = walk->alignmask; in hash_walk_next()
43 unsigned int offset = walk->offset; in hash_walk_next()
44 unsigned int nbytes = min(walk->entrylen, in hash_walk_next()
47 if (walk->flags & CRYPTO_ALG_ASYNC) in hash_walk_next()
48 walk->data = kmap(walk->pg); in hash_walk_next()
50 walk->data = kmap_atomic(walk->pg); in hash_walk_next()
51 walk->data += offset; in hash_walk_next()
60 walk->entrylen -= nbytes; in hash_walk_next()
64 static int hash_walk_new_entry(struct crypto_hash_walk *walk) in hash_walk_new_entry() argument
68 sg = walk->sg; in hash_walk_new_entry()
69 walk->offset = sg->offset; in hash_walk_new_entry()
70 walk->pg = sg_page(walk->sg) + (walk->offset >> PAGE_SHIFT); in hash_walk_new_entry()
71 walk->offset = offset_in_page(walk->offset); in hash_walk_new_entry()
72 walk->entrylen = sg->length; in hash_walk_new_entry()
74 if (walk->entrylen > walk->total) in hash_walk_new_entry()
75 walk->entrylen = walk->total; in hash_walk_new_entry()
76 walk->total -= walk->entrylen; in hash_walk_new_entry()
78 return hash_walk_next(walk); in hash_walk_new_entry()
81 int crypto_hash_walk_done(struct crypto_hash_walk *walk, int err) in crypto_hash_walk_done() argument
83 unsigned int alignmask = walk->alignmask; in crypto_hash_walk_done()
85 walk->data -= walk->offset; in crypto_hash_walk_done()
87 if (walk->entrylen && (walk->offset & alignmask) && !err) { in crypto_hash_walk_done()
90 walk->offset = ALIGN(walk->offset, alignmask + 1); in crypto_hash_walk_done()
91 nbytes = min(walk->entrylen, in crypto_hash_walk_done()
92 (unsigned int)(PAGE_SIZE - walk->offset)); in crypto_hash_walk_done()
94 walk->entrylen -= nbytes; in crypto_hash_walk_done()
95 walk->data += walk->offset; in crypto_hash_walk_done()
100 if (walk->flags & CRYPTO_ALG_ASYNC) in crypto_hash_walk_done()
101 kunmap(walk->pg); in crypto_hash_walk_done()
103 kunmap_atomic(walk->data); in crypto_hash_walk_done()
108 crypto_yield(walk->flags); in crypto_hash_walk_done()
114 if (walk->entrylen) { in crypto_hash_walk_done()
115 walk->offset = 0; in crypto_hash_walk_done()
116 walk->pg++; in crypto_hash_walk_done()
117 return hash_walk_next(walk); in crypto_hash_walk_done()
120 if (!walk->total) in crypto_hash_walk_done()
123 walk->sg = sg_next(walk->sg); in crypto_hash_walk_done()
125 return hash_walk_new_entry(walk); in crypto_hash_walk_done()
130 struct crypto_hash_walk *walk) in crypto_hash_walk_first() argument
132 walk->total = req->nbytes; in crypto_hash_walk_first()
134 if (!walk->total) { in crypto_hash_walk_first()
135 walk->entrylen = 0; in crypto_hash_walk_first()
139 walk->alignmask = crypto_ahash_alignmask(crypto_ahash_reqtfm(req)); in crypto_hash_walk_first()
140 walk->sg = req->src; in crypto_hash_walk_first()
141 walk->flags = req->base.flags & CRYPTO_TFM_REQ_MASK; in crypto_hash_walk_first()
143 return hash_walk_new_entry(walk); in crypto_hash_walk_first()
148 struct crypto_hash_walk *walk) in crypto_ahash_walk_first() argument
150 walk->total = req->nbytes; in crypto_ahash_walk_first()
152 if (!walk->total) { in crypto_ahash_walk_first()
153 walk->entrylen = 0; in crypto_ahash_walk_first()
157 walk->alignmask = crypto_ahash_alignmask(crypto_ahash_reqtfm(req)); in crypto_ahash_walk_first()
158 walk->sg = req->src; in crypto_ahash_walk_first()
159 walk->flags = req->base.flags & CRYPTO_TFM_REQ_MASK; in crypto_ahash_walk_first()
160 walk->flags |= CRYPTO_ALG_ASYNC; in crypto_ahash_walk_first()
164 return hash_walk_new_entry(walk); in crypto_ahash_walk_first()