linux/crypto/ablkcipher.c
<<
>>
Prefs
   1/*
   2 * Asynchronous block chaining cipher operations.
   3 *
   4 * This is the asynchronous version of blkcipher.c indicating completion
   5 * via a callback.
   6 *
   7 * Copyright (c) 2006 Herbert Xu <herbert@gondor.apana.org.au>
   8 *
   9 * This program is free software; you can redistribute it and/or modify it
  10 * under the terms of the GNU General Public License as published by the Free
  11 * Software Foundation; either version 2 of the License, or (at your option)
  12 * any later version.
  13 *
  14 */
  15
  16#include <crypto/internal/skcipher.h>
  17#include <linux/cpumask.h>
  18#include <linux/err.h>
  19#include <linux/init.h>
  20#include <linux/kernel.h>
  21#include <linux/module.h>
  22#include <linux/rtnetlink.h>
  23#include <linux/sched.h>
  24#include <linux/slab.h>
  25#include <linux/seq_file.h>
  26#include <linux/cryptouser.h>
  27#include <net/netlink.h>
  28
  29#include <crypto/scatterwalk.h>
  30
  31#include "internal.h"
  32
  33static const char *skcipher_default_geniv __read_mostly;
  34
  35struct ablkcipher_buffer {
  36        struct list_head        entry;
  37        struct scatter_walk     dst;
  38        unsigned int            len;
  39        void                    *data;
  40};
  41
  42enum {
  43        ABLKCIPHER_WALK_SLOW = 1 << 0,
  44};
  45
  46static inline void ablkcipher_buffer_write(struct ablkcipher_buffer *p)
  47{
  48        scatterwalk_copychunks(p->data, &p->dst, p->len, 1);
  49}
  50
  51void __ablkcipher_walk_complete(struct ablkcipher_walk *walk)
  52{
  53        struct ablkcipher_buffer *p, *tmp;
  54
  55        list_for_each_entry_safe(p, tmp, &walk->buffers, entry) {
  56                ablkcipher_buffer_write(p);
  57                list_del(&p->entry);
  58                kfree(p);
  59        }
  60}
  61EXPORT_SYMBOL_GPL(__ablkcipher_walk_complete);
  62
  63static inline void ablkcipher_queue_write(struct ablkcipher_walk *walk,
  64                                          struct ablkcipher_buffer *p)
  65{
  66        p->dst = walk->out;
  67        list_add_tail(&p->entry, &walk->buffers);
  68}
  69
  70/* Get a spot of the specified length that does not straddle a page.
  71 * The caller needs to ensure that there is enough space for this operation.
  72 */
  73static inline u8 *ablkcipher_get_spot(u8 *start, unsigned int len)
  74{
  75        u8 *end_page = (u8 *)(((unsigned long)(start + len - 1)) & PAGE_MASK);
  76        return max(start, end_page);
  77}
  78
  79static inline unsigned int ablkcipher_done_slow(struct ablkcipher_walk *walk,
  80                                                unsigned int bsize)
  81{
  82        unsigned int n = bsize;
  83
  84        for (;;) {
  85                unsigned int len_this_page = scatterwalk_pagelen(&walk->out);
  86
  87                if (len_this_page > n)
  88                        len_this_page = n;
  89                scatterwalk_advance(&walk->out, n);
  90                if (n == len_this_page)
  91                        break;
  92                n -= len_this_page;
  93                scatterwalk_start(&walk->out, scatterwalk_sg_next(walk->out.sg));
  94        }
  95
  96        return bsize;
  97}
  98
  99static inline unsigned int ablkcipher_done_fast(struct ablkcipher_walk *walk,
 100                                                unsigned int n)
 101{
 102        scatterwalk_advance(&walk->in, n);
 103        scatterwalk_advance(&walk->out, n);
 104
 105        return n;
 106}
 107
 108static int ablkcipher_walk_next(struct ablkcipher_request *req,
 109                                struct ablkcipher_walk *walk);
 110
 111int ablkcipher_walk_done(struct ablkcipher_request *req,
 112                         struct ablkcipher_walk *walk, int err)
 113{
 114        struct crypto_tfm *tfm = req->base.tfm;
 115        unsigned int nbytes = 0;
 116
 117        if (likely(err >= 0)) {
 118                unsigned int n = walk->nbytes - err;
 119
 120                if (likely(!(walk->flags & ABLKCIPHER_WALK_SLOW)))
 121                        n = ablkcipher_done_fast(walk, n);
 122                else if (WARN_ON(err)) {
 123                        err = -EINVAL;
 124                        goto err;
 125                } else
 126                        n = ablkcipher_done_slow(walk, n);
 127
 128                nbytes = walk->total - n;
 129                err = 0;
 130        }
 131
 132        scatterwalk_done(&walk->in, 0, nbytes);
 133        scatterwalk_done(&walk->out, 1, nbytes);
 134
 135err:
 136        walk->total = nbytes;
 137        walk->nbytes = nbytes;
 138
 139        if (nbytes) {
 140                crypto_yield(req->base.flags);
 141                return ablkcipher_walk_next(req, walk);
 142        }
 143
 144        if (walk->iv != req->info)
 145                memcpy(req->info, walk->iv, tfm->crt_ablkcipher.ivsize);
 146        kfree(walk->iv_buffer);
 147
 148        return err;
 149}
 150EXPORT_SYMBOL_GPL(ablkcipher_walk_done);
 151
 152static inline int ablkcipher_next_slow(struct ablkcipher_request *req,
 153                                       struct ablkcipher_walk *walk,
 154                                       unsigned int bsize,
 155                                       unsigned int alignmask,
 156                                       void **src_p, void **dst_p)
 157{
 158        unsigned aligned_bsize = ALIGN(bsize, alignmask + 1);
 159        struct ablkcipher_buffer *p;
 160        void *src, *dst, *base;
 161        unsigned int n;
 162
 163        n = ALIGN(sizeof(struct ablkcipher_buffer), alignmask + 1);
 164        n += (aligned_bsize * 3 - (alignmask + 1) +
 165              (alignmask & ~(crypto_tfm_ctx_alignment() - 1)));
 166
 167        p = kmalloc(n, GFP_ATOMIC);
 168        if (!p)
 169                return ablkcipher_walk_done(req, walk, -ENOMEM);
 170
 171        base = p + 1;
 172
 173        dst = (u8 *)ALIGN((unsigned long)base, alignmask + 1);
 174        src = dst = ablkcipher_get_spot(dst, bsize);
 175
 176        p->len = bsize;
 177        p->data = dst;
 178
 179        scatterwalk_copychunks(src, &walk->in, bsize, 0);
 180
 181        ablkcipher_queue_write(walk, p);
 182
 183        walk->nbytes = bsize;
 184        walk->flags |= ABLKCIPHER_WALK_SLOW;
 185
 186        *src_p = src;
 187        *dst_p = dst;
 188
 189        return 0;
 190}
 191
 192static inline int ablkcipher_copy_iv(struct ablkcipher_walk *walk,
 193                                     struct crypto_tfm *tfm,
 194                                     unsigned int alignmask)
 195{
 196        unsigned bs = walk->blocksize;
 197        unsigned int ivsize = tfm->crt_ablkcipher.ivsize;
 198        unsigned aligned_bs = ALIGN(bs, alignmask + 1);
 199        unsigned int size = aligned_bs * 2 + ivsize + max(aligned_bs, ivsize) -
 200                            (alignmask + 1);
 201        u8 *iv;
 202
 203        size += alignmask & ~(crypto_tfm_ctx_alignment() - 1);
 204        walk->iv_buffer = kmalloc(size, GFP_ATOMIC);
 205        if (!walk->iv_buffer)
 206                return -ENOMEM;
 207
 208        iv = (u8 *)ALIGN((unsigned long)walk->iv_buffer, alignmask + 1);
 209        iv = ablkcipher_get_spot(iv, bs) + aligned_bs;
;
href="+code=iv" class="sref">iv != walk->bs =offsene(&walk-&rffsen_insize<44" id="L144" class= class="sref">data = dst;
bs =offsene(&m2mablkciph2ref">ABLKCIPHER_WALK_SLO2)22="crypto/ablkcipher.c#L129"  class="sref">data = bs =      if (bsizewalk-&gs="sref">bsize<  retdata =   84        for2e=ablkcip2er_done_fast" class="sre2">abl22c#L181" id="L181" class="line" name="L181"> 181        bs =offsene(&walk-&rffsen_insize<44" id="L144" class= class="sref">data = (&m2mpher.c#L2ame="L122"> 122     2     22
src;
e2r22-> 125              2 } el2e
2126 104
 105        return n;
 106}
 127->len, 1);
  49}
walk->;
 112                         struct ablkcipher_walk *walk, int err)
n;2walk *p;
bsize, alignmask + 1);
p;
nbyt2s23k_next" class=sref">ablkcipher_walk_done(struct p;
2133bsiz2p; 207
 207<8 *m2f="crypto2ablkcipher.c#L135" id="L235" c2ass="line" name="L135"> 135 116
nbytes);
m2f="L126" 2a>->n = nbytes;
<2 href23ne" name="L127"> 127
 138
m2class="sr2f">walk->n/a> = kmalloc(n, GFP_ATOMIC);
n);
m2if (2bytes) {
<>base. 181        nbyte= ~r.c#L206" id="L2line" name="L183"> 183        walk-> 173        dst = (n);
walk->bsiz2mcpy(2a href="+code=req" class2"sref2>req->walk *rass="sref">dst;
data = err;
 135 lbytref">walk-&gs="sref">bs lbyt  retdata = dst;
err;
ivsize);
walk-> lbytref">walk-&gs="sref">bs lbyt  retdata = (&walk->kfree( >= 0)) {
iv2buffe25bytes" class=/ablkcipher.c#L89" id="L89" class="line" &lgelen" class="srefcipher.c#L178" id="L178" clasl||gt;= 0)) {
err;
) {
 line" name="Lf="+coref">walk-&gs="sref">bsLf="+co  retdata = dst;
err;
,
 149<2a>}
<25
 line" name="Lf="+coref">walk-&gs="sref">bsLf="+co  retdata = (&,
n = ablkcipher_walk_done(struct walk *EXPORT_SYMBOL_GPef">n, GFP_ATOMIC);
 *walk,
ablkcipher_request *p->dst = (-> 153sen_phys_YMBmeref="crypto/ablksen_phys_YMBmer class="sref">walk-> 15> 1552/a>                     2     25
alignmask<2a>,
<25ef">walk->err:
p;
 157{
2a hre25/a> >= 0)) {
ALIGNlikely(!(n, GFP_ATOMIC);
2blkcipher2c#L160" id="L160" class=2line"2name="" class="sref">sen_phys_YMBmeref="crypto/ablksen_phys_YMBmer clas="sref">scatterwalk_done(&a2ref="+cod2=src" class="sref">src, *<2 href="+code=d/ablkcipher.c#L89" crypto/ablkcipher.c#L115" id="L115class="sref">n =  162
err:
walk->bs =      if (walk-&virt_tosize<  retef">n, walk->data = bs =      if (walk-&virt_tosize<  retef">n, dst = (-> * 3 - 2(err:
walk->bs =offsene(& 173        n,  173  PAGE_SIZE    += > 1552 1) +
data = bs =offsene(&dst = (< name=tef">n,  173  PAGE_SIZE    += > 167        p)
 = p;
 169     2     2    re>walk2/a>, 2E2OMEM)2

likely(!(n;
 106}
 *len, 1);
  49}
srcame="L112"> 112                         struct ablkcipher_walk *walk, int err)
 1552code=bsize" class="sref"2bsize27blkcipher.c#L195" id="L195" class="line" lk *p2><2 href="+code=len" class="sref">lenbs2ze;
 207
 207<8 *m2="crypto/2blkcipher.c#L179" id="L129" cl28bytes" class=/ablkcipher.c#L89" 21"> 12 12CE173"> 173  21"> 12 12CE44" id="L144" class=in_irf="+code=walk" cin_irf44" ir.c#L119" id="L119" class="line" n2) {
n);
2 0);
 182
 181        ablkcipher_qu name="L116"> 116
nbytes);
m2ref="+cod2=p" class="sref">p);2iv_buffer)
nint  204        nbytes);
nbytes = <28=alignmask" class="lkcode=src" class="sref">src;
;
tfm =  135err:
 203        n);
walk->walk->err:
walk *"line" name="L144"> 144        if (walk->s2c_p 206                return -ENOMEM;a href="+code=walk" cl name=f="+code=walk" walk,
n = n=sref">ablkcipher_walk_done(struct walk * 189        rets="sref">GFP_ATOMIC);
,
walk->d2t_p) {
;
<2 href="crypto/ablkcipher2c#L1829
(struct p;
2191
                2     295f">walk->bsstaref">n;
bsstare  retdata = dst;
err;
data = dst;
bs =sgf">n;
walk->crypto_tfm *->bsstaref">n;
bsstare  retdata = (&data = n;
walk->blocksize;
 105   ef">n, GFP_ATOMIC);
2vsize29alk" class="sref">walk-> 179       3e" class=3sref">ivsize +  1phys  ret     return n;
 106}
len, 1);
  49}
n =  202
 * * *walk, int err)
likely(!(n, GFP_ATOMIC);
kma30-> 147
 1phys  re->blocksizelen 208   3    <3 href=
walk-&getkey_unLf="+co  ret     return le               8 *="sref">lef="+code=ablkcipher_walk" class="sref">ablkcip, consreturn key href="+code=alkey106"> 106}
s195" id="L195" class="line" keycode=ablkcipher_gekeycodme="L49">  49}
n = ->ef">le               8f">lef="+cer_walk * *len" class=alg05" class="line8 *len" class=alg44" id="L144" class= href="crypto/ablkcipher.ref="+code=memcpy" class="sref">m3ss="sref"3ablkcipher_request *3a hre31c#L181" id="L206      ef="crypto/ablkc"line" name="L207"> 207
 207<8 *len" class=aline" na44" id="L144" class= href="crypto/ablkcipher.ref="+code=memcpy" class="sref">m3spher.c#L3o/ablkcipher.c#L112" id=3L112"31k_next" class=sref">ablkcipher_wrene(&p;
{
walk->="L203"> 203     er.c#L207" is" class="sref">alineine" name="L161"> 161p;
 *walk, req->walk->(er31e;
 203     er.c#L207"code=size" class="sref">size += crypto_tfm_ctx_alignment() -3ipher.c#L318" id="L118" class="lin3" nam32bytes" class=/able" name="L204"> ="L203"> 203     er.c#L207"L49">  49}

, GFP_ATOMIC);3mablkciph3ref">ABLKCIPHER_WALK_SLO3)32c#L180" id="L180" class="line" name=3e=ablkcip3er_done_fast" class="sre3">abl32c#L181" id="L181" class="linalineine" name="L161"> 161 171        base 203     er.c#L207" if="crypto/ablkc"line" name="L207"> 207
 122     3     32"L202"> 202
 1615" class="line" keycode=ablkcipher_gekeycodme="Lo/ablkcipher.c#L208" id="L208" c3me="L113"3ypto/ablkcipher.c#L123" 3d="L1325f">walk->le               8f">lef="+="sref">err:
walk-&getkey44" id="L144" class= href="crypto/ablkcipher. if="crypto/ablkc"lineine" name="L161"> 161e3r32req-> 161 125              3 } el32ss="line" name="L135"> 135 203     er.c#L207"Lo/ablkcipher.c#L208" id="L208" c3m       u3lass="line" name="L126">3126(&p;
walk->    3            179       3k" class=3sref">walk->
walk-&getkey44" i     return le               8 *="sref">lef="+code=ablkcipher_walk" class="sref">ablkcip, consreturn key href="+code=alkey106"> 106}
n;3  49}
n = nbyt3s33k_next" classa>->ef">le               8f">lef="+cer_walk * *len" class=alg05" class="line8 *len" class=alg44" id="L144" class= href="crypto/ablkcipher.ref="+code=memcpy" cl3133walk-206      ef="crypto/ablkc"line" name="L207"> 207
 207<8 *len" class=aline" na44" id="L144" class= href="crypto/ablkcipher.ref="+code=memcpy" class="sref">m3p;tfm = le               8f">lef="+="sref">err:
le               8f">lef="+="sref">err:
n = ->nbytes_walk * *len" class=sen_f="+code=nbytes" cla8 *len" class=sen_f="+c44" id="L144" class= href="crypto/ablkcipher. if="crypto/ablkcCRYPTO_TFM_RES_BAD_KEY_LE class="line" naCRYPTO_TFM_RES_BAD_KEY_LE her.ref="+code=memcpy" class="sref">m3pto/ablkc3ass="sref">nbytes;
<3 href33ne" name="L127"> 127n);
m3class="sr3f">walk->walk->34 = 3ode=base"3class="sref">base.base,
3oid="L1313kcipher.c#L141" id="L1413 clas342" id="L152" class="lr.c#L146" id="L146" clsetkey_unLf="+coref">walk-&getkey_unLf="+co  retd="L144" class= href="crypto/ablkcipher. if="crypto/ablkckey href="+code=alkey106">5" class="line" keycode=ablkcipher_gekeycodme="Lo/ablkcipher.c#L208" id="L208" c3      ret3rn le               8f">lef="+="sref">err:
walk-&getkey44" id="L144" class= href="crypto/ablkcipher. if="crypto/ablkckey href="+code=alkey106">5" class="line" keycode=ablkcipher_gekeycodme="Lo/ablkcipher.c#L208" id="L208" c3 ;->ivsize);
 *len" class=ctx                   8 *len" class=ctx    44" i     return alg05" class="line"lgned_>5" class="line" ue=n" class=ode=ali3
 106}
kfree( 127nbytes_walk *,
3="+code=i3_buffer" class="sref">iv3buffe35" cla        struct err;
) {
 196a=ctx                   8 149<3a>}
<35
ablkc href="crypto/ablkcs" class=null_given="+coref">walk-&g" class=null_given="+co44" i     return n;
ref="+code=GFP_ATOMIC" clc href="+code=dst" class="sref">3= href="c3                        3     35             struct  15r.c#L146" id="L146" cl8 *len" class=en="+coref">walk-&8 *len" class=en="+co44" iwalk, int                      3     35
alignmask<3a>,
<35href="+code=len" class="sref">len 157{
3a hre35/a> & href="crypto/ablkcs" class=null_givde="+coref">walk-&g" class=null_givde="+co44" i     return n;
ref="+code=GFP_ATOMIC" clc href="+code=dst" class="sref">3+code=ALI3N" class="sref">ALIGN) {
 *len" class=de="+coref">walk-&8 *len" class=de="+co44" iwalk, int src, *<362" idgt; 162
 *init*len" class=opcode=nbytes" cla8 *init*len" class=opc44" i     return ablkcip>5" class="line" ue=n" class=ode=ali3
 106}
nbytes_walk *,
3ss="sref"3aligned_bsize * 3 - 3ilg05" class="line"lgned_ =;ablkcipref">walk, int <__crt=alg05" class="line__crt=algned_line" name="L196"> 196a=="sref">le               8le44" o/ablkcipher.c#L208" id="L208" c3slignmask3ablkcipher.c#L166" id="L366" c3ass="line" nama>->len" class=alkned_bs" class="sref">eref">n;
ablkcipref">walk, int le               8le44" o/ablkcipher.c#L208" id="L208" c3sass="lin367"> 167        p)
 15"> 145                 173  PAGE_SIZE   3s="line" 3ame="L169"> 169     3     37ytes) {
n);
m3ref="+cod3=walk" class="sref">walk3/a>, 3E3OMEM)3
n;
err:
walk-&getkey44" L116" class="line"netkeyref">walk-&getkey44" ef="+code=memcpy" class="sref">m3rline" na3 href="crypto/ablkcipher3c#L1737"L202"> 202
n;
err:
walk-&en="+co44" lass="sref">walk * 1en="+coref">walk-&en="+co44" ef="+code=memcpy" class="sref">m3r> 153walk->n;
err:
walk-&de="+co44" lass="sref">walk * 1de="+coref">walk-&de="+co44" ef="+code=memcpy" class="sref">m3rs="sref"3     src/able" name="L204"> ilg05" class="line"lgned_line" name="L196"> 15"> 145                n =  1553code=bsize" class="sref"3bsize37.c#L165" id="lass="lkcipher.c#L129" eref">n;
err:
walk-&given="+co44" L116" class="line"n" class=null_given="+coref">walk-&g" class=null_given="+co44" ef="+code=memcpy" class="sref">m3rlignmask3de=p" class="sref">p3><37" class="sref">nbytes_walk *n;
err:
walk-&givde="+co44" L116" class="line"n" class=null_givde="+coref">walk-&g" class=null_givde="+co44" ef="+code=memcpy" class="sref">m3rass="lin3="+code=bsize" class="sr3f">bs3ze;
n;
err:
 *len" class=cass="sref">likely<__cr/a> *len" class=cass44" id="L144" class= href="crypto/ablkcipher.co/ablkcipher.c#L208" id="L208" c3) {
<"line" name="L28n;
err:
 145                walk * 15"> 145                 183
src;
p);3nbytes = <38href="+code=bsize" class="sref">bsiz3;
          CONFIG_NETref="+code=bsize" class="sref">bsiz3<55"> 1553 
n;
 *len" class=repowalk-&g" skbref">walk-&g"bkcip>5     return alg05" class="line"lgned_c href="+code=dst" class="sref">3rypto/abl3cipher.c#L186" id="L186"3class38ef">wlass="sref">n = s3c_p *repole               8 *repolele               r"sref">le44" o/ablkcipher.c#L208" id="L208" c3crypto/ab3kcipher.c#L187" id="L1873 clas39s="line" name="L179"> 179       3 href="+c3de=dst_p" class="sref">d3t_p) {
<"line" name="L2snpr hrhref">walk-&gnpr hrh44" id="L144" class=r"sref">le               r"sref">le44" ref">err)
if="crypto/ablkcCRYPTO_MAX_ALG_NAME173"> 173  CRYPTO_MAX_ALG_NAME106">ifspan73"> 173"%s"ifspan73"> 173"179   ";
<3 href="crypto/ablkcipher3c#L1839
walk-&gnpr hrh44" id="L144" class=r"sref">le               r"sref">le44" ref">err)
if="crypto/ablkcCRYPTO_MAX_ALG_NAME173"> 173  CRYPTO_MAX_ALG_NAME106">ifspan73"> 173"%s"/ablkcipher.c#L208" id="L208" c3s180"> 183191
 196a=="sref">le               8le44" ref">err)
 173"<defaultine""                3     395f">walk->le               r"sref">le44" ref">err)
 * 196a=                        8;
crypto_tfm *->le               r"sref">le44" ref">err)
 196a=="sref">le               8le44" ref">err)
 1553alignmask)
 135le               r"sref">le44" ref">err)
 * 196a=="sref">le               8le44" ref">err)
blocksize;
walk->le               r"sref">le44" ref">err)
 145                walk * 196a=="sref">le               8le44" ref">err)
 145                3vsize39/a> >= 0)) {
 199        unsigne4 int 40bytes" class=/ablkcipher.c#L89" ila_pblkcipher.c#L93" ila_pbl44" id="L144" class=skbref">walk-&g"bkcip>5f="crypto/ablkcCRYPTOCFGA_REss="la href="+173"> 173  CRYPTOCFGA_REss="la href="+106"> 106}
ivsize + le               8 *repolele               r"sref">le44" .c#L119" id="L119" class="line" n4ze) -4ila_pbl_failur45          ila_pbl_failur4 2004                        4  (src;
ila_pbl_failur45          ila_pbl_failur4scatterwalk_done(&a4kma40me="L154"> 15r.c#L14lkcipher.c#L168" MSGSIZE173"> 173   MSGSIZE7 href="4clignmask)
blocksize4    <4 href=
n;
 *len" class=repowalk-&g" skbref">walk-&g"bkcip>5     return alg05" class="line"lgned_c href="+code=dst" class="sref">41);
) {
 173    *4a hre41c#L18#endifgt;{
w
 * *len" class=sh_SYMBOL_GPL" clas8 *len" class=sh_S44" i     return ref="crypto/ablkmkcip>5     return alg05" class="line"lgned_c href="+code=dst" class="sref">41a href="4fm *->likely<__attribute__eqwalk-&
nusco44" .co/ablkcipher.c#L208" id="L208" c4/7 href="4ref">req->w
 * *len" class=sh_SYMBOL_GPL" clas8 *len" class=sh_S44" i     return ref="crypto/ablkmkcip>5     return alg05" class="line"lgned_c href="+code=dst" class="sref">418 href="4signed int wlass="sref">n = er41crypto/ablkci     return i"sref">le               ="sref">le44"  =; 196a=="sref">le               8le44" o/ablkcipher.c#L208" id="L208" c4ipher.c#L418" id="L118" class="lin4" nam42s="line" name="L179"> 179       4me="L119"4 119
walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173" yp ypto/k" c: 179   \n"ABLKCIPHER_WALK_SLO4)42
walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"asyncpto/k" c: %s\n" 196a=f="+code=nbytes" cla8abl422" id="L152" class="l44444444444444444444444444444fspan73"> 173"yes" 173"no" 122     4     42"L202"> 202
walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"         k" c: %u\n" 196a=                        8walk->walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"min keyf="+ c: %u\n"le               ="sref">le44" ="sref">err:
e4r42req->walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"max keyf="+ c: %u\n"le               ="sref">le44" ="sref">err:
 125              4 } el42ss="line" name="L135"> 135walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"      to/k" c: %u\n"le               ="sref">le44" ="sref">err:
 145                4126walk->walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"gens=pto/k" c: %s\n"le               ="sref">le44" ="sref">err:
 173"<defaultine""walk->    4            179       4k" class=4sref">walk->consre     return  * *len" class= yp                8 *len" class= yp 44"  =;lass="sref">n = n;4err)
 * *len" class=ctx                   8 *len" class=ctx    44" > 106}
err)
           nit44" cer_walk * *init*len" class=opcode=nbytes" cla8 *init*len" class=opc44" > 106}
nbyt4s43k_nex#ifdefif="crypto/ablkcCONFIG_PROC_FS173"> 173  CONFIG_PROC_FS="line" name="L179"> 179       4ke="L113"4lass="line" name="L133">4133walk-" class="line" nsh_SYMBOL_GPL" classh_S44" cer_walk * *len" class=sh_SYMBOL_GPL" clas8 *len" class=sh_S44" > 106}
n;
 * *len" class=repon;
 *len" class=repo 106}
->nbytes;
<4 href43ne" nkcipher.c#L168" /ablkcipher.c#L147" id="L147" class="line" name="L147"> 147
 *len" class= yp                8 *len" class= yp 44" co/ablkcipher.c#L208" id="L208" c4class="sr4f">walk-> 179       4if (44="/a>
walk-&no_givde="+co44" i     return n;
ref="+code=GFP_ATOMIC" clc href="+code=dst" class="sref">4ode=base"4class="sref">base.n =  173   bsiz4 ;-
 *init*giv=class=opc44" i     return ablkcip>5" class="line" ue=n" class=ode=ali3
 106}
,
4h="L126" 4"sref">ivsize);
wlass="sref">n = kfree(ilg05" class="line"lgned_ =;ablkcipref">walk, int <__crt=alg05" class="line__crt=algned_line" name="L196"> 196a=="sref">le               8le44" o/ablkcipher.c#L208" id="L208" c4="+code=i4_buffer" class="sref">iv4buffe450rypto/ablkci     return len" class=alkned_bs" class="sref">eref">n;
ablkcipref">walk, int le               8le44" o/ablkcipher.c#L208" id="L208" c4=f (err;
4=de=base"4"line" name="L149"> 149<4a>}
<452s="line" nam/ablf="crypto/ablkc"lg05" class="line"lgned_line" name="L196"> 15"> 145                 173  PAGE_SIZE   4> 1514n);
m4>     ret4blkcipher_request" class4"sref45
walk->n;
err:
walk-&getkey44" L116" class="line"alk" class="sref">ablkcipref">walk, int <__crt=alg05" class="line__crt=algned_line" name="L196"> 196a=f="+code=nbytes" cla8 1544444444444444f class="line" "lg05" class="line"lgned_line" name="L196"> 1=etkeyref">walk-&getkey44" L:16" class="line"netkeyref">walk-&getkey44" ef="+code=memcpy" class="sref">m4=ref="+co4/a>                     4     45ss="line" name="L135"> 135n;
err:
walk-&en="+co44" lass="sref">walk * 1en="+coref">walk-&en="+co44" ef="+code=memcpy" class="sref">m4>="L126" 4 class="sref">alignmask<4a>,
<45ef">walk->n;
err:
walk-&de="+co44" lass="sref">walk * 1de="+coref">walk-&de="+co44" ef="+code=memcpy" class="sref">m4lass="lin4" name="L157"> 157{
4a hre45e;
n;
err:
walk-&given="+co44" L116" class="line" 1given="+coref">walk-&given="+co44" ef="+code=memcpy" class="sref">m4+code=ALI4N" class="sref">ALIGNn;
err:
walk-&givde="+co44" L116" class="line" 1givde="+coref">walk-&givde="+co44" L?:16" class="line"no_givde="+coref">walk-&no_givde="+co44" ef="+code=memcpy" class="sref">m4+f (n;
err:
 *len" class=cass="sref">likely<__cr/a> *len" class=cass44" id="L144" class= href="crypto/ablkcipher.co/ablkcipher.c#L208" id="L208" c4blkcipher4c#L160" id="L160" class=4line"46
n;
err:
 145                walk * 15"> 145                src, *<462" idgt; 162
 202src;
 153),  * 3 - 4tfm =           CONFIG_NETref="+code=bsize" class="sref">bsiz4slignmask4ablkcipher.c#L166" id="L466" c46> 104
n;
 *giv=class=repowalk-&g" skbref">walk-&g"bkcip>5     return alg05" class="line"lgned_c href="+code=dst" class="sref">4sass="lin467"> 167        n = p)
 *repole05" class="line8 *repolele               r"sref">le44" o/ablkcipher.c#L208" id="L208" c4s="line" 4ame="L169"> 169     4     47 = 4ref="+cod4=walk" class="sref">walk4/a>, 47
walk-&gnpr hrh44" id="L144" class=r"sref">le               r"sref">le44" ref">err)
if="crypto/ablkcCRYPTO_MAX_ALG_NAME173"> 173  CRYPTO_MAX_ALG_NAME106">ifspan73"> 173"%s"ifspan73"> 173"giv=class")4
walk-&gnpr hrh44" id="L144" class=r"sref">le               r"sref">le44" ref">err)
if="crypto/ablkcCRYPTO_MAX_ALG_NAME173"> 173  CRYPTO_MAX_ALG_NAME106">ifspan73"> 173"%s"/ablkcipher.c#L208" id="L208" c4Oline" na4 href="crypto/ablkcipher4c#L1747"L202"> 202 196a=="sref">le               8le44" ref">err)
 173"<built-inine"" 153bsiz4rs="sref"4     ->le               r"sref">le44" ref">err)
 * 196a=                        8 1554code=bsize" class="sref"4bsize47ss="line" name="L135"> 135le               r"sref">le44" ref">err)
 196a=="sref">le               8le44" ref">err)
p4><47ef">walk->le               r"sref">le44" ref">err)
 * 196a=="sref">le               8le44" ref">err)
bs47e;
le               r"sref">le44" ref">err)
 145                walk * 196a=="sref">le               8le44" ref">err)
 145                 179       4) {
walk-&g"bkcip>5f="crypto/ablkcCRYPTOCFGA_REss="la href="+173"> 173  CRYPTOCFGA_REss="la href="+106"> 106}
le               8 *repolele               r"sref">le44" .c#L119" id="L119" class="line" n4L180"> 184
ila_pbl_failur45          ila_pbl_failur4p);4 202src;
 153nbytes = <48href="+code=bsize" class="sref">bsiz4;
ila_pbl_failur45          ila_pbl_failur4scatterwalk_done(&a4<55"> 1554  202 173   MSGSIZEw>s4c_p
n;
 *giv=class=repowalk-&g" skbref">walk-&g"bkcip>5     return alg05" class="line"lgned_c href="+code=dst" class="sref">4 href="+c4de=dst_p" class="sref">d4t_pn =  173    184191
                4     49href="+code=bsize" class="sref">bsiz4s/a>;
crypto_tfm *-
 * *giv=class=sh_SYMBOL_GPL" clas8 *giv=class=sh_S44" i     return ref="crypto/ablkmkcip>5     return alg05" class="line"lgned_c href="+code=dst" class="sref">4s55"> 1554alignmask)
 135likely<__attribute__eqwalk-&
nusco44" .co/ablkcipher.c#L208" id="L208" c4sypto/abl4class="sref">blocksize;
-
 * *giv=class=sh_SYMBOL_GPL" clas8 *giv=class=sh_S44" i     return ref="crypto/ablkmkcip>5     return alg05" class="line"lgned_c href="+code=dst" class="sref">4s= 4vsize49/a> &lass="sref">n =  199        unsigne5 int 500rypto/ablkci     return i"sref">le               ="sref">le44"  =; 196a=="sref">le               8le44" o/ablkcipher.c#L208" id="L208" c5e" class=5sref">ivsize + 5ze) -5walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173" yp ypto/k" c: giv=class\n" 2005                        5  (walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"asyncpto/k" c: %s\n" 196a=f="+code=nbytes" cla8 202 173"yes" 173"no"walk->walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"         k" c: %u\n" 196a=                        8kma50req->walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"min keyf="+ c: %u\n"le               ="sref">le44" ="sref">err:
7 href="5clignmask)
 135walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"max keyf="+ c: %u\n"le               ="sref">le44" ="sref">err:
blocksizewalk->walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"      to/k" c: %u\n"le               ="sref">le44" ="sref">err:
 145                5    <50e;
walk-&geq_pr hrh44" id="L144" class=ref="crypto/ablkmkcip>5fspan73"> 173"gens=pto/k" c: %s\n"le               ="sref">le44" ="sref">err:
 173"<built-inine""5/ablkciph5r.c#L110" id="L110" clas5="lin51
 * *giv=class= yp                8 *giv=class= yp 44"  =;lass="sref">n =  *5a hre513err)
 * *len" class=ctx                   8 *len" class=ctx    44" > 106}
err)
           nit44" cer_walk * *init*giv=class=opcode=nbytes" cla8 *init*giv=class=opc44" > 106}
w#ifdefif="crypto/ablkcCONFIG_PROC_FS173"> 173  CONFIG_PROC_FS="line" name="L179"> 179       51a href="5fm *-><" class="line" nsh_SYMBOL_GPL" classh_S44" cer_walk * *giv=class=sh_SYMBOL_GPL" clas8 *giv=class=sh_S44" > 106}
req->w#endifgt;n;
 * *giv=class=repon;
 *giv=class=repo 106}
er51crypt}o/ablkcipher.c#L208" id="L208" c5ipher.c#L518" id="L118" class="lin5" nam52s="likcipher.c#L168" /ablkcipher.c#L147" id="L147" class="line" name="L147"> 147
 *giv=class= yp                8 *giv=class= yp 44" co/ablkcipher.c#L208" id="L208" c5me="L119"5 119
5mablkciph5ref">ABLKCIPHER_WALK_SLO5)52
er/a> *default_gens="line" name="L1er/a> *default_gens="L147consre     return alg05" class="line"lgned_c href="+code=dst" class="sref">5ms="sref"5er_done_fast" class="sre5">abl522" idlass="sref">n =  122     5     52"L202"> 202 196a=f="+code=nbytes" cla8n = walk-a href="crypto/ablkcCRYPTO_ALG_TYPE_a href="+173"> 173  CRYPTO_ALG_TYPE_a href="+106" ?if="crypto/ablkc"lg05" class="line"lgned_line" name="L196"> 196a=  ref">le               8le44" ref">err)
 145                scatterwalk_done(&a5ma href="5code=err" class="sref">e5r52me="L154"> 15444444444444444444444444444444444ff="+code=data" 196a=="sref">le               8le44" ref">err)
 145                n =  125              5 } el52ss="line" nam4444ff="+code=data" 196a=                        8n = 5126nbytescode=srfspan73"> 173"chainiv"    5            196a=f="+code=nbytes" cla8walk-> 173"eseqiv"n;5nbyt5s53k_nex
alg05" class="line"lgned_>5" class="line" ue=n" class=ode=ali3
4f class="line" ue=n" class=ode=ali3
,
5ke="L113"5lass="line" name="L133">5133wlass="sref">n =  15     return n;
tbref">walk-&tbkcip[3]o/ablkcipher.c#L208" id="L208" c5k7 href="5ablkcipher.c#L135" id="L535" c5ass="line" nam     relass="sref">n = ->nbytes     return n;
attrf">n;
nbytes;
<5 href539 class="sref">nbytes     return data               dataned_o/ablkcipher.c#L208" id="L208" c5class="sr5f">walk->p yp                p yp ned_o/ablkcipher.c#L208" id="L208" c5c" class=5f="+code=nbytes" class="5ref">541s="line" nam     relass="sref">n = base.n;
attrf">n;
 *lttr==lg05" class="line8 *lttr==lgned_b" class="sref">data               dataned_o/ablkcipher.c#L208" id="L208" c5cpher.c#L5rn p=lg05" class="linep=lgned_o/ablkcipher.c#L208" id="L208" c5ce="L113"5/ablkcipher.c#L143" id="5143" 545e="L154"> 15     return tmplref">walk-&tmplned_o/ablkcipher.c#L208" id="L208" c5ca href="5a href="+code=req" class5"sref54me="L154"> 15     return in           nso44" ef="+code=memcpy" class="sref">m5href="+co5e=crt_ablkcipher" class=5sref"54ss="line" nam     return larvalref">walk-&larval44" ef="+code=memcpy" class="sref">m5h8 href="5"sref">ivsize);
gens="line" name="L1gens=106"ef="+code=memcpy" class="sref">m5h9 href="5sref">kfree(n;
m5="+code=i5_buffer" class="sref">iv5buffe55s="line" name="L179"> 179       5=f (err;
) {
<"line" name="L2larvalref">walk-&larval44" cer_walk * *larval_lookup05" class="line8 *larval_lookup"L147"> 147
 196a=drivss=">erode=nbytes" cla8er44" > 106}
 149<5a>}
<55
}
 173  CRYPTO_ALG_TYPE_GIVref="+44" > 106}
 202,
m5=e="L113"5                        5     555f">walk->n;
 * 173  PTR_ER+"L147"> 147
walk-&larval44" cef="+code=memcpy" class="sref">m5=a href="5#L154" id="L154" class="5ine" 5ame="L154"> 15/ablkcipher.c#L89" IS_ER+173"> 173  IS_ER+"L147"> 147
walk-&larval44" cc href="+code=dst" class="sref">5=ref="+co5/a>                     5     55ss="line" nam44444444RN_ON" class="sref">oblkcipher.c#L93" ouo44" ef="+code=memcpy" class="sref">m5>="L126" 5 class="sref">alignmask<5a>,
<55ef">wf="+code=memcpy" class="sref">m5>9 href="5" name="L157"> 157{
5a hre55e;
n;
m5+code=ALI5N" class="sref">ALIGNwalk-&8 *is_larval"L147"> 147
walk-&larval44" cc href="+code=dst" class="sref">5+f (drop_larvalref">walk-&drop_larval44" ef="+code=memcpy" class="sref">m5+de=base"5c#L160" id="L160" class=5line"56
m5+id="L1315=src" class="sref">src, *<56c#L181" id="L181" class="linp yp                p yp ned_ref">err)
n;
n;
m5"line" na5e="L162"> 162
 202err)
n;
 *m5+e="L113"5pher_buffer), walk->err)
err)
m5+a href="5aligned_bsize * 3 - 5-> 173comment">/* GENIV tells the  emplat  that we're making a default gens=. */m5+ref="+co5 1) +
 135

err
) err) , , m5+="L126" 5ablkcipher.c#L166" id="L566" c56ef">walk->walk-&tbkcip[0] =;err) n; m5+9 href="567"> 167 p) err) n; n; m5s="line" 5ame="L169"> 169 5 57ytes) { <"line" name="L2p=lg05" class="linep=lgned_ref">err) n; *m5ref="+cod5=walk" class="sref">walk5/a>, 57 173comment">/* Must use the exactef">w _ONlocat ourselves. */m5OMEM)5 walk-&memcpy"L147"> 147 err) err) erode=nbytes" cla">er44" >rfc#L137" id="L1"lg05" class="line"lgned_line" name="L196"> 196a=drivss=">erode=nbytes" cla8er44" >if="crypto/ablkcCRYPTO_MAX_ALG_NAME173"> 173 CRYPTO_MAX_ALG_NAME106"cef="+code=memcpy" class="sref">m5sline" na5 href="crypto/ablkcipher5c#L1757"L202"> 202walk-&tbkcip[1] =;err) n; m5se="L113"5 href="crypto/ablkcipher5c#L1757href="+code=bsize" class="sref">bsiz5rs="sref"5 ->walk-&tbkcip[2]cer_walk *m5sref="+co5code=bsize" class="sref"5bsize57ss="lf="+code=memcpy" class="sref">m5s="L126" 5de=p" class="sref">p5><57ef">walk-/abl(fc#L137" id="L1"lg05" class="line"lgned_line" name="L196"> 196a=f="+code=nbytes" cla8n = bs579 class="sref">nbf="+code=wald" CRYPTO_ALG_TYPE_a href="+173"> 173 CRYPTO_ALG_TYPE_a href="+106"c href="+code=dst" class="sref">5="crypto/5blkcipher.c#L179" id="L159" cl580 class="sref">nb">nbf="+code=wald" gens="line" name="L1gens=106" er_walk * 196a= ref">le 8le44" ref">err) m5) { * 196a=="sref">le 8le44" ref">err) m5)5 p);5 2025=e="L113"5s" class="sref">nbytes = <585f">walk-a hre" cf="+code=wald" gens="line" name="L1gens=106" er_walk * *default_gens="line" name="L1er/a> *default_gens="L147_walk *m5; tfm = 1555 135walk-&tmplned_cer_walk * *lookup* emplat 8 *lookup* emplat "L147_walk *m5<="L126" 5cipher.c#L186" id="L186"5class58ef">walk->n; NOENT106"ef="+code=memcpy" class="sref">m5s5c_p 202walk-&tmplned_c href="+code=dst" class="sref">5crypto/ab5kcipher.c#L187" id="L1875 clas590 class="sref">nb">nbRN_ON" class="sref">kill_larvalref">walk-&kill_larval106"ef="+code=memcpy" class="sref">m5 href="+c5de=dst_p" class="sref">d5t_p5st; <5 href="crypto/ablkcipher5c#L1859 in nso44" L116" class="line"amplref">walk-&tmplned_line" name="L196"> 1alloc05" class="line"lloc"L147_walk *walk-&tbkcipcef="+code=memcpy" class="sref">m5s180"> 185191 n; * 173 PTR_ER+"L147"> 147 nso44" cef="+code=memcpy" class="sref">m5sef="+cod5t 202 173 IS_ER+"L147"> 147 nso44" cc href="+code=dst" class="sref">5ce="L113"5 193 5 595f">walk-a hre" cRN_ON" class="sref">pbl_amplref">walk-&pbl_ampl106"ef="+code=memcpy" class="sref">m5 /a>; crypto_tfm *tfm = 1555alignmask) n; * *register*in *register*in *walk-&tmplned_>if="crypto/ablkcin nso44" cc)elass="sref">n = blocksize; nbytes6" class="line"amplref">walk-&tmplned_line" name="L196"> 1fre fre "L147"> 147 nso44" cef="+code=memcpy" class="sref">m5sass="lin5de=ivsize" class="sref">5vsize599 class="sref">nbytesRN_ON" class="sref">pbl_amplref">walk-&pbl_ampl106"ef="+code=memcpy" class="sref">m6ame="L1996> 199 unsigne6 int 600rypto/ablkci>ivsize + 6ze) -6 173comment">/* Redo the lookup _ONuse the inm6> 2006 6 (n; m6ipher.c#L602" id="L202" class="lin6" nam60 w" class="sref">pbl_amplref">walk-&pbl_ampl106"s="sref">scatterwalk_done(&a6kma60req-> * mpl_pbl"L147_walk *walk-&tmplned_cef="+code=memcpy" class="sref">m6>7 href="6clignmask) kill_larvalref">walk-&kill_larval106"s="sref">scatterwalk_done(&a6<8 href="6class="sref">blocksizewalk-> *walk-&larval44" cef="+code=memcpy" class="sref">m6<9 href="6re=ivsize" class="sref">6 <60eef">err) walk-&drop_larval44" s="sref">scatterwalk_done(&a61); *mod_pbl"L147_walk *walk-&larval44" cef="+code=memcpy" class="sref">m6a>; scatterwalk_done(&a61e) -6r.c#L110" id="L110" clas6="lin61 *mod_pbl"L147_walk *m6ss="sref"6ablkcipher_request *6a hre613n; m6spher.c#L6o/ablkcipher.c#L112" id=6L112"614bsiz61a href="6fm *- *=lg05" class="line8 *llgned_bs" class="sref">8 *lookup*sref">le 8 *lookup*sref">le"L147consrecharbs" class="sref">">erode=nbytes" cla">er44" >rfc#L137" id="L1ue=n" class=ode=ali3 4f class="line" ue=n" class=ode=ali3 , 6s7 href="6ref">req->wlass="sref">n = *=lg05" class="line8 *llgned_bs" class="sref">alg05" class="line"lgned_ef="+code=memcpy" class="sref">m6s9 href="6ef="+code=err" class="sr6f">er61/a> >= 0)) { * *llg*mod_lookup05" class="line8 *llg*mod_lookup"L147_walk *erode=nbytes" cla">er44" >rfc#L137" id="L1 yp yp 106">4f class="line" /a>, m6me="L119"6 119 173 IS_ER+"L147"> 147 6mablkciph6ref">ABLKCIPHER_WALK_SLO6)62 m6ms="sref"6er_done_fast" class="sre6">abl622" idgt; 122 6 62"L202"> 202 196a=f="+code=nbytes" cla8n = walk-a hrf="+code=wald" CRYPTO_ALG_TYPE_GIVref="+173"> 173 CRYPTO_ALG_TYPE_GIVref="+44" c href="+code=dst" class="sref">6ma href="6code=err" class="sref">e6r62me="L154"> 1544444444code=srfc#L137" id="L1"lg05" class="line"lgned_ef="+code=memcpy" class="sref">m6m7 href="6"> 125 6 } el62ss="lf="+code=memcpy" class="sref">m6m8 href="6lass="line" name="L126">6126walk-/abl!l(fc#L137" id="L1"lg05" class="line"lgned_line" name="L196"> 196a=f="+code=nbytes" cla8n = nbytf="+code=wald" CRYPTO_ALG_TYPE_a href="+173"> 173 CRYPTO_ALG_TYPE_a href="+106" ?if="crypto/ablkc"lg05" class="line"lgned_line" name="L196"> 196a= ref">le 8le44" ref">err) 145 scatterwalk_done(&a68 6 nb">nbbbbbbbbbbbbbbbbbbbbbbbbbbb_walk * 196a=="sref">le 8le44" ref">err) 145 6k" class=6sref">walk->m6kablkciph6e=n" class="sref">n;6m6 id="L1316 class="line" name="L1316> 13163c#L181" id="L181" class="lin8 *mod_pblkcipher.c#L93" 8 *mod_pbl"L147_walk *m6 pher.c#L6bytes" class="sref">nbyt6s63"L202"> 202 * *llg*mod_lookup05" class="line8 *llg*mod_lookup"L147_walk *erode=nbytes" cla">er44" >rfc#L137" id="L1 yp yp 106" |=f="+code=wald" CRYPTO_ALG_TESTED173"> 173 CRYPTO_ALG_TESTED44" >f="+code=memcpy" class="sref">m6 ); 6133walk-a hre" cbbbbbbbbbbbbbbbbbbbb_walk *, 173 CRYPTO_ALG_TESTED44" cef="+code=memcpy" class="sref">m6 a href="6"+code=walk" class="sref6>walk63me="L154"> 15/ablkcipher.c#L89" IS_ER+173"> 173 IS_ER+"L147"> 147 6k7 href="6ablkcipher.c#L135" id="L635" c6ass="line" nama href=4code=srfc#L137" id="L1"lg05" class="line"lgned_ef="+code=memcpy" class="sref">m6k8 href="6a>->wf="+code=memcpy" class="sref">m6k9 href="6ass="sref">nbytes; <6 href639L202"> 202 196a=f="+code=nbytes" cla8n = walk->nbf="+code=wald" CRYPTO_ALG_TYPE_GIVref="+173"> 173 CRYPTO_ALG_TYPE_GIVref="+44" celass="sref">n = 64ytes) { 196a=f="+code=nbytes" cla8, 173 CRYPTO_ALG_TESTED44" celass="sref">n = base. *mod_pbl"L147_walk *m6oid="L1316kcipher.c#L141" id="L1416 clas642" id="L152" class="l"> 202 * 173 ER+_PT+"L147lkcipher.c#L168" NOENT5 NOENT106"cef="+code=memcpy" class="sref">m6opher.c#L6rn 202walk-a hre" ccode=srfc#L137" id="L1"lg05" class="line"lgned_ef="+code=memcpy" class="sref">m6ca href="6a href="+code=req" class6"sref64me="L154"> 15>m6h8 href="6"sref">ivsize); walk-> 196a=f="+code=nbytes" cla8n = kfree(nbytestf="+code=wald" CRYPTO_ALG_TYPE_a href="+173"> 173 CRYPTO_ALG_TYPE_a href="+106" ?if="crypto/ablkc"lg05" class="line"lgned_line" name="L196"> 196a= ref">le 8le44" ref">err) 145 scatterw = iv6buffe650 class="sref">nb">nbbbbbbbbbbbbbbbbbbbbbbbbbbb2 196a=="sref">le 8le44" ref">err) 145 m6=f (err; 6=de=base"6"line" name="L149"> 149<6a>} <65 173 ER+_PT+"L147181" class="lin8 *giv=class=default 8 *giv=class=default44" i181" class="linalg05" class="line"lgned_>rfc#L137" id="L1 yp yp 106">4f class="line" /a>, m6=id="L1316 147 *lookup*sref">le 8 *lookup*sref">le"L14cef="+code=memcpy" class="sref">m6=e="L113"6 6 65href="+code=bsize" class="sref">bsiz6=a href="6#L154" id="L154" class="6ine" 6ame="L href="crypto/ablkc8 *grab*sref">le 8 *grab*sref">le"L147 return le_spawnf">n; *sref">le_spawnned_bs" class="sref">spawnf">n; ">erode=nbytes" cla">er44" >"+code=bsize" class="sref">bsiz6=7 href="6/a> 6 65ss="line" nam44444444bbbbbb24f class="line" ue=n" class=ode=ali3 , 6>="L126" 6 class="sref">alignmask<6a>, <65ef">wlass="sref">n = 157{ 6a hre65e; alg05" class="line"lgned_ef="+code=memcpy" class="sref">m6+code=ALI6N" class="sref">ALIGNn; m6+f (6+de=base"6c#L160" id="L160" class=6line"66 *sref">le_ yp 8 *sref">le_ yp "L147"> 147 m6+id="L1316=src" class="sref">src, *<66c#L181" id="L181" class="lin/a>, *sref">le_/a>, le_/a>,"L147"> 147 , m6"line" na6e="L162"> 162 ), walk-> * *lookup*sref">le 8 *lookup*sref">le"L147_walk *erode=nbytes" cla">er44" >rfc#L137" id="L1 yp yp 106">4f class="line" /a>, m6+a href="6aligned_bsize * 3 - 6 15/ablkcipher.c#L89" IS_ER+173"> 173 IS_ER+"L147"> 147 6+ref="+co6 1) + 173 PTR_ER+"L147"> 147 m6+="L126" 6ablkcipher.c#L166" id="L666" c66ef">wf="+code=memcpy" class="sref">m6+9 href="667"> 167 n; * *init*spawnf">n; *init*spawn"L147n; 1bas bas 106">4f class="line" alg05" class="line"lgned_>rfc#L137" id="L1spawnf">n; 1bas bas 106"ref">err) nso44" >4f class="line" /a>, m6"+code=p"6class="sref">p) *mod_pbl"L147_walk *m6s="line" 6ame="L169"> 169 6 67ytes) { n; m6ref="+cod6=walk" class="sref">walk6/a>, 67 147 *grab*sref">le 8 *grab*sref">le"L14cef="+code=memcpy" class="sref">m6sline" na6 href="crypto/ablkcipher6c#L1767 *="sref">le 8 *="sref">lened_bs" class="sref">8 *llloc*="sref">le 8 *=lloc*="sref">le"L147consrecharbs" class="sref">llg*">erode=nbytes" clallg*">er44" >"+code=bsize" class="sref">bsiz6rs="sref"6 15444444444444444444444444444444444bbbbbb24f class="line" ue=n" class=ode=ali3 , 6sref="+co6code=bsize" class="sref"6bsize677f">wlass="sref">n = p6><678eq->< return *tfrned_bs" class="sref">tfref="crypto/ablktfrned_ef="+code=memcpy" class="sref">m6s9 href="6="+code=bsize" class="sr6f">bs67crypto/ablkci href="crypto/ablkcerrf">n; m6="crypto/6blkcipher.c#L179" id="L169" cl68s="line" name="L179"> 179 6) { <"line" name="L2 yp yp 106"L116" class="line"8 *sref">le_ yp 8 *sref">le_ yp "L147"> 147 m6 *sref">le_/a>, le_/a>,"L147"> 147 , m6)6 p);6 202n = nbytes = <685f">walk-a hre" c return alg05" class="line"lgned_ef="+code=memcpy" class="sref">m6; tfm = 1556 * *lookup*sref">le 8 *lookup*sref">le"L147_walk *erode=nbytes" clallg*">er44" >rfc#L137" id="L1 yp yp 106">4f class="line" /a>, m6<="L126" 6cipher.c#L186" id="L186"6class68" class="sref">nbytes/ablkcipher.c#L89" IS_ER+173"> 173 IS_ER+"L147"> 147 n = s6c_pnbytest href=4>n; * 173 PTR_ER+"L147"> 147 m6crypto/ab6kcipher.c#L187" id="L1876 clas690 class="sref">nb">nbbbbbbbbbRN_ON" class="sref">errf">n; m6 href="+c6de=dst_p" class="sref">d6t_p) { m6s180"> 186191 tfref="crypto/ablktfrned_cer_walk * *=lloc*tfref="crypto/ablk__8 *=lloc*tfr44" i181" class="linalg05" class="line"lgned_>rfc#L137" id="L1 yp yp 106">4f class="line" /a>, m6 ef="+cod6t 202 173 IS_ER+"L147"> 147 6ce="L113"6 193 6 695f">walk-a hre" ccccccccccode=srfc#L137" id="L1__8 *=class="sr_ca __8 *=class="sr_ca 147 m6 /a>; crypto_tfm *tfm = 1556alignmask) *mod_pbl"L147_walk *m6sypto/abl6class="sref">blocksize; nbytes6" class="line"errf">n; * 173 PTR_ER+"L147"> 147 m6 9 href="6de=ivsize" class="sref">6vsize69/a> >= 0)) { 199 unsigne7 int 700rypt6" class="line"errf">n; scatterw = ivsize + n; 7ze) -7m7> 2007 7 (n; 147 n = 202n; 173 EINT+106"ef="+code=memcpy" class="sref">m71); walk-a hre" cccccccccbreakef="+code=memcpy" class="sref">m7>6; crypto_tfmkma70me="L154"> 1544444444>) blocksizewf="+code=memcpy" class="sref">m7<9 href="7re=ivsize" class="sref">7 <709 class="srefcode=srfc#L137" id="L1ER+_PT+173"> 173 ER+_PT+"L147181" class="linerrf">n; m71); * 147 *llloc*="sref">le 8 *=lloc*="sref">le"L14cef="+code=memcpy" class="sref">m71e) -7r.c#L110" id="L110" clas7="lin71 m7ss="sref"7ablkcipher_request *7a hre713le_/odule*init5 sref">le_/odule*init"L147voidc href="+code=dst" class="sref">7spher.c#L7o/ablkcipher.c#L112" id=7L112"714n = walk->le_default_gens="line" name="L1sref">le_default_gens=106"cer_walk *n = 154444444444444444444444444"span73"> 173str hg">"eseqiv" 173str hg">"chainiv"m717 href="7ref">req->m718 href="7signed int er71/a> >= 0)) { le_/odule*exit5 sref">le_/odule*exit"L147voidc href="+code=dst" class="sref">7me="L119"7 119 n = ABLKCIPHER_WALK_SLO7)72 abl722" idgt; 122 7 72"L202fc#L137" id="L1/odule*init5 /odule*init"L147d="L144" class=sref">le_/odule*init5 sref">le_/odule*init"L14cef="+code=memcpy" class="sref">m7m); w" class="sref">/odule*exit5 /odule*exit"L147d="L144" class=sref">le_/odule*exit5 sref">le_/odule*exit"L14cef="+code=memcpy" class="sref">m7m6; e7r72me="L
The original LXR software by the ="+code=mhttp://sourceforge.net/projects/lxe >LXR community106">4this experimental version by ="+code=mmailto:lxe@lasux.no">lxe@lasux.no106".
lxe.lasux.no kindly hosted by ="+code=mhttp://www.redpill-laspro.no">Redpill Laspro AS106">4provider of Lasuxfconsulting and operations services sinc 1995.