linux/crypto/cryptd.c
<<
9.5" /spaion /formon a 9.5" href="../linux+v3.7.9/crypto/cryptd.c">9.5" img src="../.static/gfx/right.png" alt=">>">9. /spaion9. spai class="lxr_search">9.5"9.5" input typluehidden" namluenavtarget" n value">9.5" input typluetext" namluesearch" iduesearch">9.5" butttiotypluesubmit">Search9.5" Prefsn /a>9. /spaion5" /divon5" form acopti="ajax+*" method="post" onsubmit="return false;">9. input typluehidden" namlueajax_lookup" idueajax_lookup" n value">95" /formon95" div class="headingbotttm">n div iduefile_contents"o
 
1 /a> spai class="comment">/* /spaion
 
2 /a> spai class="comment"> * Software async crypto daemon. /spaion
 
3 /a> spai class="comment"> * /spaion
 
4 /a> spai class="comment"> * Copyright (c) 2006 Herbert Xu <herbert@gondor.apaia.org.au> /spaion
 
5 /a> spai class="comment"> * /spaion
 
6 /a> spai class="comment"> * Added AEAD support to cryptd. /spaion
 
7 /a> spai class="comment"> *    Authors: Tadeusz Struk (tadeusz.struk@intel.com) /spaion
 
8 /a> spai class="comment"> *             Adriai Hobai <adriai.hobai@intel.com> /spaion
 
9 /a> spai class="comment"> *             Gabriele Paoloni <gabriele.paoloni@intel.com> /spaion
 8.11a> spai class="comment"> *             Aidai O'Mahony (aidai.o.mahony@intel.com) /spaion
 11 /a> spai class="comment"> *    Copyright (c) 2010, Intel Corporaopti. /spaion
 12 /a> spai class="comment"> * /spaion
 13 /a> spai class="comment"> * This program is free software; you cai redistribute it and/or modify it /spaion
 14 /a> spai class="comment"> * under the terms of the GNU General Public License as published by the Free /spaion
 15 /a> spai class="comment"> * Software Foundaopti; either versptio2 of the License, or (at your 
 16 /a> spai class="comment"> * any later verspti. /spaion
 17 /a> spai class="comment"> * /spaion
 18 /a> spai class="comment"> */ /spaion
 19 /a>n
 2.11a>#include <crypto/algapi.h11a>>n
 2111a>#include <crypto/internal/hash.h11a>>n
 2211a>#include <crypto/internal/aead.h11a>>n
 2311a>#include <crypto/cryptd.h11a>>n
 2411a>#include <crypto/crypto_wq.h11a>>n
 2511a>#include <linux/err.h11a>>n
 2611a>#include <linux/init.h11a>>n
 2711a>#include <linux/kernel.h11a>>n
 2811a>#include <linux/list.h11a>>n
 2911a>#include <linux/module.h11a>>n
 3.11a>#include <linux/scatterlist.h11a>>n
 3111a>#include <linux/sched.h11a>>n
 3211a>#include <linux/slab.h11a>>n
 33 /a>n
 3411a>#define
 a href="+code=CRYPTD_MAX_CPU_QLEN" class="sref">CRYPTD_MAX_CPU_QLEN11a> 8.0n
 35 /a>n
 3611a>struct
 a href="+code=cryptd_cpu_queue" class="sref">cryptd_cpu_queue11a> {n
 3711a>        struct
 a href="+code=crypto_queue" class="sref">crypto_queue11a>  a href="+code=queue" class="sref">queue11a>;n
 3811a>        struct
 a href="+code=work_struct" class="sref">work_struct11a>  a href="+code=work" class="sref">work11a>;n
 3911a>};n
 40 /a>n
 4111a>struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> {n
 4211a>        struct
 a href="+code=cryptd_cpu_queue" class="sref">cryptd_cpu_queue11a>  a href="+code=__percpu" class="sref">__percpu11a> * a href="+code=cpu_queue" class="sref">cpu_queue11a>;n
 4311a>};n
 44 /a>n
 4511a>struct
 a href="+code=cryptd_instance_ctx" class="sref">cryptd_instance_ctx11a> {n
 4611a>        struct
 a href="+code=crypto_spawn" class="sref">crypto_spawn11a>  a href="+code=spawn" class="sref">spawn11a>;n
 4711a>        struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sref">queue11a>;n
 4811a>};n
 49 /a>n
 5011a>struct
 a href="+code=hashd_instance_ctx" class="sref">hashd_instance_ctx11a> {n
 5111a>        struct
 a href="+code=crypto_shash_spawn" class="sref">crypto_shash_spawn11a>  a href="+code=spawn" class="sref">spawn11a>;n
 5211a>        struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sref">queue11a>;n
 5311a>};n
 54 /a>n
 5511a>struct
 a href="+code=aead_instance_ctx" class="sref">aead_instance_ctx11a> {n
 5611a>        struct
 a href="+code=crypto_aead_spawn" class="sref">crypto_aead_spawn11a>  a href="+code=aead_spawn" class="sref">aead_spawn11a>;n
 5711a>        struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sref">queue11a>;n
 5811a>};n
 59 /a>n
 6011a>struct
 a href="+code=cryptd_blkcipher_ctx" class="sref">cryptd_blkcipher_ctx11a> {n
 6111a>        struct
 a href="+code=crypto_blkcipher" class="sref">crypto_blkcipher11a> * a href="+code=child" class="sref">child11a>;n
 6211a>};n
 63 /a>n
 6411a>struct
 a href="+code=cryptd_blkcipher_request_ctx" class="sref">cryptd_blkcipher_request_ctx11a> {n
 6511a>         a href="+code=crypto_compleopti_t" class="sref">crypto_compleopti_t11a>  a href="+code=compleoe" class="sref">compleoe11a>;n
 6611a>};n
 67 /a>n
 6811a>struct
 a href="+code=cryptd_hash_ctx" class="sref">cryptd_hash_ctx11a> {n
 6911a>        struct
 a href="+code=crypto_shash" class="sref">crypto_shash11a> * a href="+code=child" class="sref">child11a>;n
 7011a>};n
 71 /a>n
 7211a>struct
 a href="+code=cryptd_hash_request_ctx" class="sref">cryptd_hash_request_ctx11a> {n
 7311a>         a href="+code=crypto_compleopti_t" class="sref">crypto_compleopti_t11a>  a href="+code=compleoe" class="sref">compleoe11a>;n
 7411a>        struct
 a href="+code=shash_desc" class="sref">shash_desc11a>  a href="+code=desc" class="sref">desc11a>;n
 7511a>};n
 76 /a>n
 7711a>struct
 a href="+code=cryptd_aead_ctx" class="sref">cryptd_aead_ctx11a> {n
 7811a>        struct
 a href="+code=crypto_aead" class="sref">crypto_aead11a> * a href="+code=child" class="sref">child11a>;n
 7911a>};n
 80 /a>n
 8111a>struct
 a href="+code=cryptd_aead_request_ctx" class="sref">cryptd_aead_request_ctx11a> {n
 8211a>         a href="+code=crypto_compleopti_t" class="sref">crypto_compleopti_t11a>  a href="+code=compleoe" class="sref">compleoe11a>;n
 8311a>};n
 84 /a>n
 8511a>static void
 a href="+code=cryptd_queue_worker" class="sref">cryptd_queue_worker11a>(struct
 a href="+code=work_struct" class="sref">work_struct11a> * a href="+code=work" class="sref">work11a>);n
 86 /a>n
 8711a>static int
 a href="+code=cryptd_init_queue" class="sref">cryptd_init_queue11a>(struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sref">queue11a>,n
 8811a>                             unsigned int
 a href="+code=max_cpu_qlen" class="sref">max_cpu_qlen11a>)n
 8911a>{n
 9011a>        int
 a href="+code=cpu" class="sref">cpu11a>;n
 9111a>        struct
 a href="+code=cryptd_cpu_queue" class="sref">cryptd_cpu_queue11a> * a href="+code=cpu_queue" class="sref">cpu_queue11a>;n
 92 /a>n
 9311a>         a href="+code=queue" class="sref">queue11a>-> a href="+code=cpu_queue" class="sref">cpu_queue11a> =  a href="+code=alloc_percpu" class="sref">alloc_percpu11a>(struct
 a href="+code=cryptd_cpu_queue" class="sref">cryptd_cpu_queue11a>);n
 9411a>        if (! a href="+code=queue" class="sref">queue11a>-> a href="+code=cpu_queue" class="sref">cpu_queue11a>)n
 9511a>                return - a href="+code=ENOMEM" class="sref">ENOMEM11a>;n
 9611a>         a href="+code=for_each_possible_cpu" class="sref">for_each_possible_cpu11a>( a href="+code=cpu" class="sref">cpu11a>) {n
 9711a>                 a href="+code=cpu_queue" class="sref">cpu_queue11a> =  a href="+code=per_cpu_ptr" class="sref">per_cpu_ptr11a>( a href="+code=queue" class="sref">queue11a>-> a href="+code=cpu_queue" class="sref">cpu_queue11a>,
 a href="+code=cpu" class="sref">cpu11a>);n
 9811a>                 a href="+code=crypto_init_queue" class="sref">crypto_init_queue11a>(& a href="+code=cpu_queue" class="sref">cpu_queue11a>-> a href="+code=queue" class="sref">queue11a>,
 a href="+code=max_cpu_qlen" class="sref">max_cpu_qlen11a>);n
 9911a>                 a href="+code=INIT_WORK" class="sref">INIT_WORK11a>(& a href="+code=cpu_queue" class="sref">cpu_queue11a>-> a href="+code=work" class="sref">work11a>,
 a href="+code=cryptd_queue_worker" class="sref">cryptd_queue_worker11a>);n
10011a>        }n
10111a>        return 0;n
10211a>}n
103 /a>n
10411a>static void
 a href="+code=cryptd_fini_queue" class="sref">cryptd_fini_queue11a>(struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sref">queue11a>)n
10511a>{n
10611a>        int
 a href="+code=cpu" class="sref">cpu11a>;n
10711a>        struct
 a href="+code=cryptd_cpu_queue" class="sref">cryptd_cpu_queue11a> * a href="+code=cpu_queue" class="sref">cpu_queue11a>;n
108 /a>n
10911a>         a href="+code=for_each_possible_cpu" class="sref">for_each_possible_cpu11a>( a href="+code=cpu" class="sref">cpu11a>) {n
11011a>                 a href="+code=cpu_queue" class="sref">cpu_queue11a> =  a href="+code=per_cpu_ptr" class="sref">per_cpu_ptr11a>( a href="+code=queue" class="sref">queue11a>-> a href="+code=cpu_queue" class="sref">cpu_queue11a>,
 a href="+code=cpu" class="sref">cpu11a>);n
11111a>                 a href="+code=BUG_ON" class="sref">BUG_ON11a>( a href="+code=cpu_queue" class="sref">cpu_queue11a>-> a href="+code=queue" class="sref">queue11a>. a href="+code=qlen" class="sref">qlen11a>);n
11211a>        }n
11311a>         a href="+code=free_percpu" class="sref">free_percpu11a>( a href="+code=queue" class="sref">queue11a>-> a href="+code=cpu_queue" class="sref">cpu_queue11a>);n
114 /a>}n
115 /a>n
11611a>static int
 a href="+code=cryptd_enqueue_request" class="sref">cryptd_enqueue_request11a>(struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sref">queue11a>,n
11711a>                                  struct
 a href="+code=crypto_async_request" class="sref">crypto_async_request11a> * a href="+code=request" class="sref">request11a>)n
118 /a>{n
11911a>        int
 a href="+code=cpu" class="sref">cpu11a>,
 a href="+code=err" class="sref">err11a>;n
12011a>        struct
 a href="+code=cryptd_cpu_queue" class="sref">cryptd_cpu_queue11a> * a href="+code=cpu_queue" class="sref">cpu_queue11a>;n
121 /a>n
12211a>         a href="+code=cpu" class="sref">cpu11a> =  a href="+code=get_cpu" class="sref">get_cpu11a>();n
12311a>         a href="+code=cpu_queue" class="sref">cpu_queue11a> =  a href="+code=this_cpu_ptr" class="sref">this_cpu_ptr11a>( a href="+code=queue" class="sref">queue11a>-> a href="+code=cpu_queue" class="sref">cpu_queue11a>);n
12411a>         a href="+code=err" class="sref">err11a> =  a href="+code=crypto_enqueue_request" class="sref">crypto_enqueue_request11a>(& a href="+code=cpu_queue" class="sref">cpu_queue11a>-> a href="+code=queue" class="sref">queue11a>,
 a href="+code=request" class="sref">request11a>);n
12511a>         a href="+code=queue_work_on" class="sref">queue_work_on11a>( a href="+code=cpu" class="sref">cpu11a>,
 a href="+code=kcrypto_wq" class="sref">kcrypto_wq11a>,
& a href="+code=cpu_queue" class="sref">cpu_queue11a>-> a href="+code=work" class="sref">work11a>);n
12611a>         a href="+code=put_cpu" class="sref">put_cpu11a>();n
127 /a>n
12811a>        return  a href="+code=err" class="sref">err11a>;n
12911a>}n
130 /a>n
131 /a> spai class="comment">/* Called in workqueue context, do one real cryptptiowork (via /spaion
132 /a> spai class="comment"> * req->compleoe) and reschedule itself if there are more work to /spaion
133 /a> spai class="comment"> * do. */ /spaion
13411a>static void
 a href="+code=cryptd_queue_worker" class="sref">cryptd_queue_worker11a>(struct
 a href="+code=work_struct" class="sref">work_struct11a> * a href="+code=work" class="sref">work11a>)n
13511a>{n
13611a>        struct
 a href="+code=cryptd_cpu_queue" class="sref">cryptd_cpu_queue11a> * a href="+code=cpu_queue" class="sref">cpu_queue11a>;n
13711a>        struct
 a href="+code=crypto_async_request" class="sref">crypto_async_request11a> * a href="+code=req" class="sref">req11a>,
* a href="+code=backlog" class="sref">backlog11a>;n
138 /a>n
13911a>         a href="+code=cpu_queue" class="sref">cpu_queue11a> =  a href="+code=container_of" class="sref">container_of11a>( a href="+code=work" class="sref">work11a>,
struct
 a href="+code=cryptd_cpu_queue" class="sref">cryptd_cpu_queue11a>,
 a href="+code=work" class="sref">work11a>);n
14011a>         spai class="comment">/* /spaion
141 /a> spai class="comment">         * Only handle one request at a time to avoid
hogging crypto workqueue. /spaion
142 /a> spai class="comment">         * preempt_disable/enable is used to prevent being preempted by /spaion
143 /a> spai class="comment">         * cryptd_enqueue_request(). local_bh_disable/enable is used to prevent /spaion
144 /a> spai class="comment">         * cryptd_enqueue_request() being accessed from software interrupts. /spaion
145 /a> spai class="comment">         */ /spaion
14611a>         a href="+code=local_bh_disable" class="sref">local_bh_disable11a>();n
14711a>         a href="+code=preempt_disable" class="sref">preempt_disable11a>();n
14811a>         a href="+code=backlog" class="sref">backlog11a> =  a href="+code=crypto_get_backlog" class="sref">crypto_get_backlog11a>(& a href="+code=cpu_queue" class="sref">cpu_queue11a>-> a href="+code=queue" class="sref">queue11a>);n
14911a>         a href="+code=req" class="sref">req11a> =  a href="+code=crypto_dequeue_request" class="sref">crypto_dequeue_request11a>(& a href="+code=cpu_queue" class="sref">cpu_queue11a>-> a href="+code=queue" class="sref">queue11a>);n
15011a>         a href="+code=preempt_enable" class="sref">preempt_enable11a>();n
15111a>         a href="+code=local_bh_enable" class="sref">local_bh_enable11a>();n
152 /a>n
15311a>        if (! a href="+code=req" class="sref">req11a>)n
15411a>                return;n
155 /a>n
15611a>        if ( a href="+code=backlog" class="sref">backlog11a>)n
15711a>                 a href="+code=backlog" class="sref">backlog11a>-> a href="+code=compleoe" class="sref">compleoe11a>( a href="+code=backlog" class="sref">backlog11a>, - a href="+code=EINPROGRESS" class="sref">EINPROGRESS11a>);n
15811a>         a href="+code=req" class="sref">req11a>-> a href="+code=compleoe" class="sref">compleoe11a>( a href="+code=req" class="sref">req11a>,
0);n
159 /a>n
16011a>        if ( a href="+code=cpu_queue" class="sref">cpu_queue11a>-> a href="+code=queue" class="sref">queue11a>. a href="+code=qlen" class="sref">qlen11a>)n
16111a>                 a href="+code=queue_work" class="sref">queue_work11a>( a href="+code=kcrypto_wq" class="sref">kcrypto_wq11a>,
& a href="+code=cpu_queue" class="sref">cpu_queue11a>-> a href="+code=work" class="sref">work11a>);n
16211a>}n
163 /a>n
16411a>static  a href="+code=inline" class="sref">inline11a> struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=cryptd_get_queue" class="sref">cryptd_get_queue11a>(struct
 a href="+code=crypto_tfm" class="sref">crypto_tfm11a> * a href="+code=tfm" class="sref">tfm11a>)n
16511a>{n
16611a>        struct
 a href="+code=crypto_instance" class="sref">crypto_instance11a> * a href="+code=inst" class="sref">inst11a> =  a href="+code=crypto_tfm_alg_instance" class="sref">crypto_tfm_alg_instance11a>( a href="+code=tfm" class="sref">tfm11a>);n
16711a>        struct
 a href="+code=cryptd_instance_ctx" class="sref">cryptd_instance_ctx11a> * a href="+code=ictx" class="sref">ictx11a> =  a href="+code=crypto_instance_ctx" class="sref">crypto_instance_ctx11a>( a href="+code=inst" class="sref">inst11a>);n
16811a>        return  a href="+code=ictx" class="sref">ictx11a>-> a href="+code=queue" class="sref">queue11a>;n
16911a>}n
170 /a>n
17111a>static int
 a href="+code=cryptd_blkcipher_setkey" class="sref">cryptd_blkcipher_setkey11a>(struct
 a href="+code=crypto_ablkcipher" class="sref">crypto_ablkcipher11a> * a href="+code=parent" class="sref">parent11a>,n
17211a>                                   const
 a href="+code=u8" class="sref">u811a> * a href="+code=key" class="sref">key11a>, unsigned int
 a href="+code=keylen" class="sref">keylen11a>)n
17311a>{n
17411a>        struct
 a href="+code=cryptd_blkcipher_ctx" class="sref">cryptd_blkcipher_ctx11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_ablkcipher_ctx" class="sref">crypto_ablkcipher_ctx11a>( a href="+code=parent" class="sref">parent11a>);n
17511a>        struct
 a href="+code=crypto_blkcipher" class="sref">crypto_blkcipher11a> * a href="+code=child" class="sref">child11a> =  a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sref">child11a>;n
17611a>        int
 a href="+code=err" class="sref">err11a>;n
177 /a>n
17811a>         a href="+code=crypto_blkcipher_clear_flags" class="sref">crypto_blkcipher_clear_flags11a>( a href="+code=child" class="sref">child11a>,
 a href="+code=CRYPTO_TFM_REQ_MASK" class="sref">CRYPTO_TFM_REQ_MASK11a>);n
17911a>         a href="+code=crypto_blkcipher_set_flags" class="sref">crypto_blkcipher_set_flags11a>( a href="+code=child" class="sref">child11a>,
 a href="+code=crypto_ablkcipher_get_flags" class="sref">crypto_ablkcipher_get_flags11a>( a href="+code=parent" class="sref">parent11a>)
&n
18011a>                                           a href="+code=CRYPTO_TFM_REQ_MASK" class="sref">CRYPTO_TFM_REQ_MASK11a>);n
18111a>         a href="+code=err" class="sref">err11a> =  a href="+code=crypto_blkcipher_setkey" class="sref">crypto_blkcipher_setkey11a>( a href="+code=child" class="sref">child11a>,
 a href="+code=key" class="sref">key11a>,  a href="+code=keylen" class="sref">keylen11a>);n
18211a>         a href="+code=crypto_ablkcipher_set_flags" class="sref">crypto_ablkcipher_set_flags11a>( a href="+code=parent" class="sref">parent11a>,
 a href="+code=crypto_blkcipher_get_flags" class="sref">crypto_blkcipher_get_flags11a>( a href="+code=child" class="sref">child11a>)
&n
18311a>                                             a href="+code=CRYPTO_TFM_RES_MASK" class="sref">CRYPTO_TFM_RES_MASK11a>);n
18411a>        return  a href="+code=err" class="sref">err11a>;n
18511a>}n
186 /a>n
18711a>static void
 a href="+code=cryptd_blkcipher_crypt" class="sref">cryptd_blkcipher_crypt11a>(struct
 a href="+code=ablkcipher_request" class="sref">ablkcipher_request11a> * a href="+code=req" class="sref">req11a>,n
18811a>                                   struct
 a href="+code=crypto_blkcipher" class="sref">crypto_blkcipher11a> * a href="+code=child" class="sref">child11a>,n
18911a>                                   int
 a href="+code=err" class="sref">err11a>,n
19011a>                                   int
(* a href="+code=crypt" class="sref">crypt11a>)(struct
 a href="+code=blkcipher_desc" class="sref">blkcipher_desc11a> * a href="+code=desc" class="sref">desc11a>,n
19111a>                                                struct
 a href="+code=scatterlist" class="sref">scatterlist11a> * a href="+code=dst" class="sref">dst11a>,n
19211a>                                                struct
 a href="+code=scatterlist" class="sref">scatterlist11a> * a href="+code=src" class="sref">src11a>,n
19311a>                                                unsigned int
 a href="+code=len" class="sref">len11a>))n
19411a>{n
19511a>        struct
 a href="+code=cryptd_blkcipher_request_ctx" class="sref">cryptd_blkcipher_request_ctx11a> * a href="+code=rctx" class="sref">rctx11a>;n
19611a>        struct
 a href="+code=blkcipher_desc" class="sref">blkcipher_desc11a>  a href="+code=desc" class="sref">desc11a>;n
197 /a>n
19811a>         a href="+code=rctx" class="sref">rctx11a> =  a href="+code=ablkcipher_request_ctx" class="sref">ablkcipher_request_ctx11a>( a href="+code=req" class="sref">req11a>);n
199 /a>n
20011a>        if ( a href="+code=unlikely" class="sref">unlikely11a>( a href="+code=err" class="sref">err11a> == - a href="+code=EINPROGRESS" class="sref">EINPROGRESS11a>))n
20111a>                goto  a href="+code=out" class="sref">out11a>;n
202 /a>n
20311a>         a href="+code=desc" class="sref">desc11a>. a href="+code=tfm" class="sref">tfm11a> =  a href="+code=child" class="sref">child11a>;n
20411a>         a href="+code=desc" class="sref">desc11a>. a href="+code=info" class="sref">info11a> =  a href="+code=req" class="sref">req11a>-> a href="+code=info" class="sref">info11a>;n
20511a>         a href="+code=desc" class="sref">desc11a>. a href="+code=flags" class="sref">flags11a> =  a href="+code=CRYPTO_TFM_REQ_MAY_SLEEP" class="sref">CRYPTO_TFM_REQ_MAY_SLEEP11a>;n
206 /a>n
20711a>         a href="+code=err" class="sref">err11a> =  a href="+code=crypt" class="sref">crypt11a>(& a href="+code=desc" class="sref">desc11a>,  a href="+code=req" class="sref">req11a>-> a href="+code=dst" class="sref">dst11a>,  a href="+code=req" class="sref">req11a>-> a href="+code=src" class="sref">src11a>,  a href="+code=req" class="sref">req11a>-> a href="+code=nbytes" class="sref">nbytes11a>);n
208 /a>n
20911a>         a href="+code=req" class="sref">req11a>-> a href="+code=base" class="sref">base11a>. a href="+code=compleoe" class="sref">compleoe11a> =  a href="+code=rctx" class="sref">rctx11a>-> a href="+code=compleoe" class="sref">compleoe11a>;n
210 /a>n
21111a> a href="+code=out" class="sref">out11a>:n
21211a>         a href="+code=local_bh_disable" class="sref">local_bh_disable11a>();n
21311a>         a href="+code=rctx" class="sref">rctx11a>-> a href="+code=compleoe" class="sref">compleoe11a>(& a href="+code=req" class="sref">req11a>-> a href="+code=base" class="sref">base11a>,
 a href="+code=err" class="sref">err11a>);n
21411a>         a href="+code=local_bh_enable" class="sref">local_bh_enable11a>();n
21511a>}n
216 /a>n
21711a>static void
 a href="+code=cryptd_blkcipher_encrypt" class="sref">cryptd_blkcipher_encrypt11a>(struct
 a href="+code=crypto_async_request" class="sref">crypto_async_request11a> * a href="+code=req" class="sref">req11a>,
int
 a href="+code=err" class="sref">err11a>)n
218 /a>{n
21911a>        struct
 a href="+code=cryptd_blkcipher_ctx" class="sref">cryptd_blkcipher_ctx11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a href="+code=req" class="sref">req11a>-> a href="+code=tfm" class="sref">tfm11a>);n
22011a>        struct
 a href="+code=crypto_blkcipher" class="sref">crypto_blkcipher11a> * a href="+code=child" class="sref">child11a> =  a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sref">child11a>;n
221 /a>n
22211a>         a href="+code=cryptd_blkcipher_crypt" class="sref">cryptd_blkcipher_crypt11a>( a href="+code=ablkcipher_request_cast" class="sref">ablkcipher_request_cast11a>( a href="+code=req" class="sref">req11a>),
 a href="+code=child" class="sref">child11a>,
 a href="+code=err" class="sref">err11a>,n
22311a>                                a href="+code=crypto_blkcipher_crt" class="sref">crypto_blkcipher_crt11a>( a href="+code=child" class="sref">child11a>)-> a href="+code=encrypt" class="sref">encrypt11a>);n
224 /a>}n
225 /a>n
22611a>static void
 a href="+code=cryptd_blkcipher_decrypt" class="sref">cryptd_blkcipher_decrypt11a>(struct
 a href="+code=crypto_async_request" class="sref">crypto_async_request11a> * a href="+code=req" class="sref">req11a>,
int
 a href="+code=err" class="sref">err11a>)n
227 /a>{n
22811a>        struct
 a href="+code=cryptd_blkcipher_ctx" class="sref">cryptd_blkcipher_ctx11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a href="+code=req" class="sref">req11a>-> a href="+code=tfm" class="sref">tfm11a>);n
22911a>        struct
 a href="+code=crypto_blkcipher" class="sref">crypto_blkcipher11a> * a href="+code=child" class="sref">child11a> =  a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sref">child11a>;n
230 /a>n
23111a>         a href="+code=cryptd_blkcipher_crypt" class="sref">cryptd_blkcipher_crypt11a>( a href="+code=ablkcipher_request_cast" class="sref">ablkcipher_request_cast11a>( a href="+code=req" class="sref">req11a>),
 a href="+code=child" class="sref">child11a>,
 a href="+code=err" class="sref">err11a>,n
23211a>                                a href="+code=crypto_blkcipher_crt" class="sref">crypto_blkcipher_crt11a>( a href="+code=child" class="sref">child11a>)-> a href="+code=decrypt" class="sref">decrypt11a>);n
233 /a>}n
234 /a>n
23511a>static int
 a href="+code=cryptd_blkcipher_enqueue" class="sref">cryptd_blkcipher_enqueue11a>(struct
 a href="+code=ablkcipher_request" class="sref">ablkcipher_request11a> * a href="+code=req" class="sref">req11a>,n
23611a>                                     a href="+code=crypto_compleopti_t" class="sref">crypto_compleopti_t11a>  a href="+code=compleoe" class="sref">compleoe11a>)n
237 /a>{n
23811a>        struct
 a href="+code=cryptd_blkcipher_request_ctx" class="sref">cryptd_blkcipher_request_ctx11a> * a href="+code=rctx" class="sref">rctx11a> =  a href="+code=ablkcipher_request_ctx" class="sref">ablkcipher_request_ctx11a>( a href="+code=req" class="sref">req11a>);n
23911a>        struct
 a href="+code=crypto_ablkcipher" class="sref">crypto_ablkcipher11a> * a href="+code=tfm" class="sref">tfm11a> =  a href="+code=crypto_ablkcipher_reqtfm" class="sref">crypto_ablkcipher_reqtfm11a>( a href="+code=req" class="sref">req11a>);n
24011a>        struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sref">queue11a>;n
241 /a>n
24211a>         a href="+code=queue" class="sref">queue11a> =  a href="+code=cryptd_get_queue" class="sref">cryptd_get_queue11a>( a href="+code=crypto_ablkcipher_tfm" class="sref">crypto_ablkcipher_tfm11a>( a href="+code=tfm" class="sref">tfm11a>));n
24311a>         a href="+code=rctx" class="sref">rctx11a>-> a href="+code=compleoe" class="sref">compleoe11a> =  a href="+code=req" class="sref">req11a>-> a href="+code=base" class="sref">base11a>. a href="+code=compleoe" class="sref">compleoe11a>;n
24411a>         a href="+code=req" class="sref">req11a>-> a href="+code=base" class="sref">base11a>. a href="+code=compleoe" class="sref">compleoe11a> =  a href="+code=compleoe" class="sref">compleoe11a>;n
245 /a>n
24611a>        return  a href="+code=cryptd_enqueue_request" class="sref">cryptd_enqueue_request11a>( a href="+code=queue" class="sref">queue11a>,
& a href="+code=req" class="sref">req11a>-> a href="+code=base" class="sref">base11a>);n
24711a>}n
248 /a>n
24911a>static int
 a href="+code=cryptd_blkcipher_encrypt_enqueue" class="sref">cryptd_blkcipher_encrypt_enqueue11a>(struct
 a href="+code=ablkcipher_request" class="sref">ablkcipher_request11a> * a href="+code=req" class="sref">req11a>)n
25011a>{n
25111a>        return  a href="+code=cryptd_blkcipher_enqueue" class="sref">cryptd_blkcipher_enqueue11a>( a href="+code=req" class="sref">req11a>,
 a href="+code=cryptd_blkcipher_encrypt" class="sref">cryptd_blkcipher_encrypt11a>);n
25211a>}n
253 /a>n
25411a>static int
 a href="+code=cryptd_blkcipher_decrypt_enqueue" class="sref">cryptd_blkcipher_decrypt_enqueue11a>(struct
 a href="+code=ablkcipher_request" class="sref">ablkcipher_request11a> * a href="+code=req" class="sref">req11a>)n
25511a>{n
25611a>        return  a href="+code=cryptd_blkcipher_enqueue" class="sref">cryptd_blkcipher_enqueue11a>( a href="+code=req" class="sref">req11a>,
 a href="+code=cryptd_blkcipher_decrypt" class="sref">cryptd_blkcipher_decrypt11a>);n
25711a>}n
258 /a>n
25911a>static int
 a href="+code=cryptd_blkcipher_init_tfm" class="sref">cryptd_blkcipher_init_tfm11a>(struct
 a href="+code=crypto_tfm" class="sref">crypto_tfm11a> * a href="+code=tfm" class="sref">tfm11a>)n
26011a>{n
26111a>        struct
 a href="+code=crypto_instance" class="sref">crypto_instance11a> * a href="+code=inst" class="sref">inst11a> =  a href="+code=crypto_tfm_alg_instance" class="sref">crypto_tfm_alg_instance11a>( a href="+code=tfm" class="sref">tfm11a>);n
26211a>        struct
 a href="+code=cryptd_instance_ctx" class="sref">cryptd_instance_ctx11a> * a href="+code=ictx" class="sref">ictx11a> =  a href="+code=crypto_instance_ctx" class="sref">crypto_instance_ctx11a>( a href="+code=inst" class="sref">inst11a>);n
26311a>        struct
 a href="+code=crypto_spawn" class="sref">crypto_spawn11a> * a href="+code=spawn" class="sref">spawn11a> =
& a href="+code=ictx" class="sref">ictx11a>-> a href="+code=spawn" class="sref">spawn11a>;n
26411a>        struct
 a href="+code=cryptd_blkcipher_ctx" class="sref">cryptd_blkcipher_ctx11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a href="+code=tfm" class="sref">tfm11a>);n
26511a>        struct
 a href="+code=crypto_blkcipher" class="sref">crypto_blkcipher11a> * a href="+code=cipher" class="sref">cipher11a>;n
266 /a>n
26711a>         a href="+code=cipher" class="sref">cipher11a> =  a href="+code=crypto_spawn_blkcipher" class="sref">crypto_spawn_blkcipher11a>( a href="+code=spawn" class="sref">spawn11a>);n
26811a>        if ( a href="+code=IS_ERR" class="sref">IS_ERR11a>( a href="+code=cipher" class="sref">cipher11a>))n
26911a>                return  a href="+code=PTR_ERR" class="sref">PTR_ERR11a>( a href="+code=cipher" class="sref">cipher11a>);n
270 /a>n
27111a>         a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sref">child11a> =  a href="+code=cipher" class="sref">cipher11a>;n
27211a>         a href="+code=tfm" class="sref">tfm11a>-> a href="+code=crt_ablkcipher" class="sref">crt_ablkcipher11a>. a href="+code=reqsize" class="sref">reqsize11a> =n
27311a>                sizeof(struct
 a href="+code=cryptd_blkcipher_request_ctx" class="sref">cryptd_blkcipher_request_ctx11a>);n
27411a>        return 0;n
27511a>}n
276 /a>n
27711a>static void
 a href="+code=cryptd_blkcipher_exit_tfm" class="sref">cryptd_blkcipher_exit_tfm11a>(struct
 a href="+code=crypto_tfm" class="sref">crypto_tfm11a> * a href="+code=tfm" class="sref">tfm11a>)n
278 /a>{n
27911a>        struct
 a href="+code=cryptd_blkcipher_ctx" class="sref">cryptd_blkcipher_ctx11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a href="+code=tfm" class="sref">tfm11a>);n
280 /a>n
28111a>         a href="+code=crypto_free_blkcipher" class="sref">crypto_free_blkcipher11a>( a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sref">child11a>);n
28211a>}n
283 /a>n
28411a>static void
* a href="+code=cryptd_alloc_instance" class="sref">cryptd_alloc_instance11a>(struct
 a href="+code=crypto_alg" class="sref">crypto_alg11a> * a href="+code=alg" class="sref">alg11a>, unsigned int
 a href="+code=head" class="sref">head11a>,n
28511a>                                   unsigned int
 a href="+code=tail" class="sref">tail11a>)n
286 /a>{n
28711a>        char * a href="+code=p" class="sref">p11a>;n
28811a>        struct
 a href="+code=crypto_instance" class="sref">crypto_instance11a> * a href="+code=inst" class="sref">inst11a>;n
28911a>        int
 a href="+code=err" class="sref">err11a>;n
290 /a>n
29111a>         a href="+code=p" class="sref">p11a> =  a href="+code=kzalloc" class="sref">kzalloc11a>( a href="+code=head" class="sref">head11a> + sizeof(* a href="+code=inst" class="sref">inst11a>) +  a href="+code=tail" class="sref">tail11a>,
 a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL11a>);n
29211a>        if (! a href="+code=p" class="sref">p11a>)n
29311a>                return  a href="+code=ERR_PTR" class="sref">ERR_PTR11a>(- a href="+code=ENOMEM" class="sref">ENOMEM11a>);n
294 /a>n
29511a>         a href="+code=inst" class="sref">inst11a> = (void
*)( a href="+code=p" class="sref">p11a> +  a href="+code=head" class="sref">head11a>);n
296 /a>n
29711a>         a href="+code=err" class="sref">err11a> = - a href="+code=ENAMETOOLONG" class="sref">ENAMETOOLONG11a>;n
29811a>        if ( a href="+code=snprintf" class="sref">snprintf11a>( a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href="+code=cra_driver_naml" class="sref">cra_driver_naml11a>,
 a href="+code=CRYPTO_MAX_ALG_NAME" class="sref">CRYPTO_MAX_ALG_NAME11a>,n
29911a>                      spai class="string">"cryptd(%s)" /spaio,
 a href="+code=alg" class="sref">alg11a>-> a href="+code=cra_driver_naml" class="sref">cra_driver_naml11a>) >=  a href="+code=CRYPTO_MAX_ALG_NAME" class="sref">CRYPTO_MAX_ALG_NAME11a>)n
30011a>                goto  a href="+code=out_free_inst" class="sref">out_free_inst11a>;n
301 /a>n
30211a>         a href="+code=memcpy" class="sref">memcpy11a>( a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href="+code=cra_naml" class="sref">cra_naml11a>,
 a href="+code=alg" class="sref">alg11a>-> a href="+code=cra_naml" class="sref">cra_naml11a>,
 a href="+code=CRYPTO_MAX_ALG_NAME" class="sref">CRYPTO_MAX_ALG_NAME11a>);n
303 /a>n
30411a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href="+code=cra_priority" class="sref">cra_priority11a> =  a href="+code=alg" class="sref">alg11a>-> a href="+code=cra_priority" class="sref">cra_priority11a> + 50;n
30511a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href="+code=cra_blocksize" class="sref">cra_blocksize11a> =  a href="+code=alg" class="sref">alg11a>-> a href="+code=cra_blocksize" class="sref">cra_blocksize11a>;n
30611a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href="+code=cra_alignmask" class="sref">cra_alignmask11a> =  a href="+code=alg" class="sref">alg11a>-> a href="+code=cra_alignmask" class="sref">cra_alignmask11a>;n
307 /a>n
308 /a> a href="+code=out" class="sref">out /a>:n
30911a>        return  a href="+code=p" class="sref">p11a>;n
310 /a>n
31111a> a href="+code=out_free_inst" class="sref">out_free_inst11a>:n
31211a>         a href="+code=kfree" class="sref">kfree11a>( a href="+code=p" class="sref">p11a>);n
31311a>         a href="+code=p" class="sref">p11a> =  a href="+code=ERR_PTR" class="sref">ERR_PTR11a>( a href="+code=err" class="sref">err11a>);n
31411a>        goto  a href="+code=out" class="sref">out11a>;n
31511a>}n
316 /a>n
31711a>static int
 a href="+code=cryptd_create_blkcipher" class="sref">cryptd_create_blkcipher11a>(struct
 a href="+code=crypto_templaoe" class="sref">crypto_templaoe11a> * a href="+code=tmpl" class="sref">tmpl11a>,n
31811a>                                   struct
 a href="+code=rtattr" class="sref">rtattr11a> ** a href="+code=tb" class="sref">tb11a>,n
31911a>                                   struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sref">queue11a>)n
32011a>{n
32111a>        struct
 a href="+code=cryptd_instance_ctx" class="sref">cryptd_instance_ctx11a> * a href="+code=ctx" class="sref">ctx11a>;n
32211a>        struct
 a href="+code=crypto_instance" class="sref">crypto_instance11a> * a href="+code=inst" class="sref">inst11a>;n
32311a>        struct
 a href="+code=crypto_alg" class="sref">crypto_alg11a> * a href="+code=alg" class="sref">alg11a>;n
32411a>        int
 a href="+code=err" class="sref">err11a>;n
325 /a>n
32611a>         a href="+code=alg" class="sref">alg11a> =  a href="+code=crypto_get_attr_alg" class="sref">crypto_get_attr_alg11a>( a href="+code=tb" class="sref">tb11a>,
 a href="+code=CRYPTO_ALG_TYPE_BLKCIPHER" class="sref">CRYPTO_ALG_TYPE_BLKCIPHER11a>,n
32711a>                                   a href="+code=CRYPTO_ALG_TYPE_MASK" class="sref">CRYPTO_ALG_TYPE_MASK11a>);n
32811a>        if ( a href="+code=IS_ERR" class="sref">IS_ERR11a>( a href="+code=alg" class="sref">alg11a>))n
32911a>                return  a href="+code=PTR_ERR" class="sref">PTR_ERR11a>( a href="+code=alg" class="sref">alg11a>);n
330 /a>n
33111a>         a href="+code=inst" class="sref">inst11a> =  a href="+code=cryptd_alloc_instance" class="sref">cryptd_alloc_instance11a>( a href="+code=alg" class="sref">alg11a>, 0, sizeof(* a href="+code=ctx" class="sref">ctx11a>));n
33211a>         a href="+code=err" class="sref">err11a> =  a href="+code=PTR_ERR" class="sref">PTR_ERR11a>( a href="+code=inst" class="sref">inst11a>);n
33311a>        if ( a href="+code=IS_ERR" class="sref">IS_ERR11a>( a href="+code=inst" class="sref">inst11a>))n
33411a>                goto  a href="+code=out_put_alg" class="sref">out_put_alg11a>;n
335 /a>n
33611a>         a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_instance_ctx" class="sref">crypto_instance_ctx11a>( a href="+code=inst" class="sref">inst11a>);n
33711a>         a href="+code=ctx" class="sref">ctx11a>-> a href="+code=queue" class="sref">queue11a> =  a href="+code=queue" class="sref">queue11a>;n
338 /a>n
33911a>         a href="+code=err" class="sref">err11a> =  a href="+code=crypto_init_spawn" class="sref">crypto_init_spawn11a>(& a href="+code=ctx" class="sref">ctx11a>-> a href="+code=spawn" class="sref">spawn11a>,
 a href="+code=alg" class="sref">alg11a>,
 a href="+code=inst" class="sref">inst11a>,n
34011a>                                 a href="+code=CRYPTO_ALG_TYPE_MASK" class="sref">CRYPTO_ALG_TYPE_MASK11a> |  a href="+code=CRYPTO_ALG_ASYNC" class="sref">CRYPTO_ALG_ASYNC11a>);n
34111a>        if ( a href="+code=err" class="sref">err11a>)n
34211a>                goto  a href="+code=out_free_inst" class="sref">out_free_inst11a>;n
343 /a>n
34411a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href="+code=cra_flags" class="sref">cra_flags11a> =  a href="+code=CRYPTO_ALG_TYPE_ABLKCIPHER" class="sref">CRYPTO_ALG_TYPE_ABLKCIPHER11a> |  a href="+code=CRYPTO_ALG_ASYNC" class="sref">CRYPTO_ALG_ASYNC11a>;n
34511a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href="+code=cra_type" class="sref">cra_typ namlueL339"ME" class"sref">crypto_"+code=cra_type" claass"sref">crypto_"+cTO_ALG_ASYNC11a>;n
316 /a>n
33711a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href=yptd_create_blkcipher" claas="sref">crt_ablkcipher11a>. a ivde=cra_blocksize" civde=cra_blocksize11a> =  a href="+code=alg" class="sref">alg11a>-> a href="td_create_blkcipher" claas"sref">crt_ablkcipher11a>. a ivde=cra_blocksize" civde=cra_bLG_ASYNC11a>;n
19811a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href=yptd_create_blkcipher" claas="sref">crt_ablkcipher11a>. a min_keyde=cra_blocksize" cmin_keyde=cra_blocksize11a> =  a href="+code=alg" class="sref">alg11a>-> a href="td_create_blkcipher" claas"sref">crt_ablkcipher11a>. a min_keyde=cra_blocksize" cmin_keyde=cra_bLG_ASYNC11a>;n
33911a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href=yptd_create_blkcipher" claas="sref">crt_ablkcipher11a>. a max_keyde=cra_blocksize" cmax_keyde=cra_blocksize11a> =  a href="+code=alg" class="sref">alg11a>-> a href="td_create_blkcipher" claas"sref">crt_ablkcipher11a>. a max_keyde=cra_blocksize" cmax_keyde=cra_bLG_ASYNC11a>;n
330 /a>n
33111a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href=yptd_create_blkcipher" claas="sref">crt_ablkcipher11a>. a genivte_blkcipher" cgenivra_blocksize11a> =  a href="+code=alg" class="sref">alg11a>-> a href="td_create_blkcipher" claas"sref">crt_ablkcipher11a>. a genivte_blkcipher" cgenivra_bLG_ASYNC11a>;n
202 /a>n
31311a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a hreflasde=cra_blocksize" classlasde=cra_bloc            sizeof(struct
 a href="+code=cryptd_blkcipher_ctx" class="sref">cryptd_blkciLG_ASYNC11a>);n
294 /a>n
34511a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a hrefref"ra_blocksize" classref"="sref">inst11a> =  a href="+code=cryptd_blkcipher_init_tfm" class="sref">cryptd_blkcipher_G_ASYNC11a>);n
30611a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a hrefd_blra_blocksize" classd_bl="sref">inst11a> =  a href="+code=cryptd_blkcipher_exit_tfm" class="sref">cryptd_blkcipher_G_ASYNC11a>);n
307 /a>n
19811a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href=yptd_create_blkcipher" claas="sref">crt_ablkcipher11a>. a setkey"+code=spawn" cletkey="sref">inst11a> =  a href="+code=cryptsetkey"+code=spawn" chref="+code=cryptsetkeyher_G_ASYNC11a>);n
33911a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href=yptd_create_blkcipher" claas="sref">crt_ablkcipher11a>. a d_blkcipher_encrypt" cd_blkcipheref">inst11a> =  a href="+code=cryptd_blkcipher_encrypt_enqueue" class="sref">cryptd_blkcipher_encryptG_ASYNC11a>);n
33911a>         a href="+code=inst" class="sref">inst11a>-> a href="+code=alg" class="sref">alg11a>. a href=yptd_create_blkcipher" claas="sref">crt_ablkcipher11a>. a href="+code=decrypt" class="sref"ef">inst11a> =  a href="+code=cryptd_blkcipher_decrypt_enqueue" class="sref">cryptd_blkcipher_decryptG_ASYNC11a>);n
301 /a>n
33211a>         a href="+code=err" class="sref">err11a> =  a laass"sregistyptd_de=crypto_instance" class="sregistyptd_de=cryinstance_ctx11a>( a href="+code=tmpl" class="sre911a>         a href="+code=inst" class="srLG_ASYNC11a>);n
33311a>        if ( a href="+code=err" class="sr 20">
32011a>{n
33411a>    ">err11a> =  a laass"sdrop=crypto_init_spawn" class="sdrop=crypto_init_spawn11a>(& a href="+code=ctx" class="sref">ctx11a>-> a href="+code=spawn" class="sreLG_ASYNC11a>);nout_free_inst11a>:n
23611a>           goto  a href="+code=kfree" class="sref">kfree11a>( a href="+code=inst" class="srLG_ASYNC11a>);n
26715">
31511a>}n
338 /a>noutree_inst11a>:n
33911a>         a lass="smods="so_init_spawn" class="smods="s"sref">kfree11a>( a href="+code=alg" class="sref">alg11a>);n
25111a>        return  a href="+code=err" class="sref">err11a>;n
28211a>}n
343 /a>n
25411a>static int
 a href="+hashtd_blkcipher_init_tfm" class="shashtd_blkcip"srefxit_tfm11a>(struct
 a href="+code=crypto_tfm" class="sref">crypto_tfm11a> * a href="+code=tfm" class="sref">tfm11a>)n
25511a>{n
23611a>        struct
 a href="+code=crypto_instance" class="sref">crypto_instance11a> * a href="+code=inst" class="sref">inst11a> =  a href="+code=crypto_tfm_alg_instance" class="sref">crypto_tfm_alg_instance11a>( a href="+code=tfm" class="sref">tfm11a>);n
23611a>        struct
 a hash"+code=cryptd_instance_ctx" chash"+code=cryptd_pto_instance11a> * a href="+code=ictx" class="sref">ictx11a> =  a href="+code=crypto_instance_ctx" class="sref">crypto_instance_ctx11a>( a href="+code=inst" class="sref">inst11a>);n
28811a>        struct
 a href="+shashtcode=crypto_spawn" class="srhashtcode=pto_instance11a> * a href="+code=spawn" class="sref">spawn11a> =
& a href="+code=ictx" class="sref">ictx11a>-> a href="+code=spawn" class="sref">spawn11a>;n
27911a>        struct
 a href="+hashtd_blkcipher_ctx" class="shashtd_bpto_instance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a href="+code=tfm" class="sref">tfm11a>);n
22011a>        struct
 a href="+rhashcrypto_spawn" class="srhashpto_instance11a> * a hashcrypto_spawn" chashpto_ef">tfm11a>);n
301 /a>n
33211a>         a hashcrypto_spawn" chashpto_">cipher11a> =  a href="+code=crhashcrypto_spawn" class="srode=crhashypto_tfm_ctx11a>( a href="+code=spawn" class="sreLG_ASYNC11a>);n
33311a>        if ( a href="+code=IS_ERR" class="sref">IS_ERR11a>( a hashcrypto_spawn" chashpto_ef">inst11a>))n
33411a>                return  a href="+code=PTR_ERR" class="sref">PTR_ERR11a>( a hashcrypto_spawn" chashpto_eG_ASYNC11a>);n
335 /a>n
33611a>         a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sref">child11a> =  a hashcrypto_spawn" chashpto_ef">tfm11a>);n
33711a>         a hass="sahashtcet_href="+code=reqsize" chass="sahashtcet_href="+ref">PTR_ERR11a>( a __hass="sahashther_request_cast" c__hass="sahashther_ypto_tfm_ctx11a>( a href="+code=tfm" class="sref">inst11a>,n
31811a>                                 sizeof(struct
 a href="+hashtd_blkcipher_request_ctx" class="shashtd_blkciphers="sr +f">inst11a>,n
31911a>                          struct
 a href="+shashtdescf="+code=reqsize" chass="sshashtdescf="+sref">IS_ERR11a>( a hashcrypto_spawn" chashpto_efef">tfm11a>);n
22011a>        return 0;n
28211a>}n
202 /a>n
27711a>static void
 a href="+hashtd_blkcipher_exit_tfm" class="shashtd_blkcip"srefxit_tfm11a>(struct
 a href="+code=crypto_tfm" class="sref">crypto_tfm11a> * a href="+code=tfm" class="sref">tfm11a>)n
25511a>{n
29511a>        struct
 a href="+hashtd_blkcipher_ctx" class="shashtd_bpto_instance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a href="+code=tfm" class="sref">tfm11a>);n
296 /a>n
29711a>         a lass="s="srerhashcrypto_spawn" class="s="srerhashypto_tfm_ctx11a>( a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sref">child11a>);n
28211a>}n
28211a>}n
25411a>static int
 a href="+hashtsetkey"+code=spawn" chref="+hashtsetkey"srefxit_tfm11a>(struct
 a href="+ahashcrypto_spawn" class="sahashpto_instance11a> * a paren_request_cast" cparen_="sre2">
28211a>}n
31911a>                       consfm11a>(struct
 a u8request_cast" cu8pto_instance11a> * a key"+code=spawn" ckey"sreref">alg11a>, unsigned int
 a keyle="+code=spawn" ckeyle=s="sref">tfm11a>)n
25511a>{n
32311a>        struct
 a href="+hashtd_blkcipher_ctx" class="shashtd_bpto_instance11a> * a href="+code=ctx" class="sr ref">tfm11a> =  a href="+chashtd_blkcipher_ctx" class="+chashtd_bypto_tfm_ctx11a>( a paren_request_cast" cparen_="srf">child11a>);n
30411a>        struct
 a href="+rhashcrypto_spawn" class="srhashpto_instance11a> * a href="+code=child" class="sref">child11a> =  a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sre">child11a>);n
30511a>        int
 a href="+code=err" class="sref">err11a>;n
296 /a>n
29711a>         a lass="sshashtclearf="+code=cra_flags" class="sshashtclearf="+coypto_tfm_ctx11a>( a href="+code=child" class="sresref">tb11a>,
 a href="+TFM_REQPTO_ALG_TYPE_MASK" class="sTFM_REQPTO_A="srf">child11a>);n
19811a>         a lass="srhashtcet_="+code=cra_flags" class="sshashtcet_="+coypto_tfm_ctx11a>( a href="+code=child" class="sresref">tb11a>,
 a lass="+chashtget_="+code=cra_flags" class="schashtget_="+coypto_tfm_ctx11a>( a paren_request_cast" cparen_="srf>spawn>child11a>);n
31911a>                       19811a>         a href="+TFM_REQPTO_ALG_TYPE_MASK" class="sTFM_REQPTO_A="srf">child11a>);n
33911a>         a href="+code=err" class="sref">err11a> =  a laass"sshashtsetkey"+code=spawn" chref="sshashtsetkeyypto_tfm_ctx11a>( a href="+code=child" class="sresref">tb11a>,
 a key"+code=spawn" ckey"srerensigned int
 a keyle="+code=spawn" ckeyle=s="sr">child11a>);n
28111a>         a href="+ahashtcet_="+code=cra_flags" class="sahashtcet_="+coypto_tfm_ctx11a>( a paren_request_cast" cparen_="sref">err11a> =  a laass"sshashtget_="+code=cra_flags" class="sshashtget_="+coypto_tfm_ctx11a>( a href="+code=child" class="sref>spawn>child11a>);n
34211a>                        19811a>         a href="+TFM_RESPTO_ALG_TYPE_MASK" class="sTFM_RESPTO_A="srf">child11a>);n
31311a>        return  a href="+code=err" class="sref">err11a>;n
28211a>}n
335 /a>n
25411a>static int
 a href="+hashther_decrypt_enqueue" class="shashther_dec"srefxit_tfm11a>(struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="sr35">
335 /a>n
32711a>                    ">err11a> =  a laass"scompletion_so_init_spawn" class="scompletion_sueL32">err11a> =  a lompletcrypt_enqueue" clompletcs="sref">tfm11a>)n
278 /a>{n
27911a>        struct
 a href="+hashtd_blkcipher_request_ctx" class="shashtd_blkciphers="sinstance11a> * a hher_request_ctx" crlass="sref">ctx11a> =  a ahashtd_blkcipher_request_ctx" cahashtd_blkcipherypto_tfm_ctx11a>( a href="+code=req" class="srref">err11a>;n
22011a>        struct
 a href="+ahashcrypto_spawn" class="sahashpto_instance11a> * a href="+code=tfm" class="sref">tfm11a> =  a href="+chashtlascode=crypto_tfm" class="schashtlascodypto_tfm_ctx11a>( a href="+code=req" class="srref">err11a>;n
32111a>        struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sre>reqsize11a> =n
34211a>         struct
 a href="+get_code=cryptd_queue" class="sget_code=ypto_tfm_ctx11a>( a hass="schashtcode=crypto_tfm" class="schashtcodypto_tfm_ctx11a>( a href="+code=tfm" class="srrref">err11a>;n
343 /a>n
324stance11a> * a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sref">tfm11a> =  a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a hompletcrypt_enqueue" clompletcs="sref">err11a>;n
34511a>         a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a hompletcrypt_enqueue" clompletcs="sref">tfm11a> =  a hompletcrypt_enqueue" clompletcs="sref">err11a>;n
296 /a>n
32711a>        return  a lass="sher_dectd_blkcirypt_enqueue" class="sher_dectd_blkciypto_tfm_ctx11a>( a href="+code=queue" class="sre,>spawn11a> =
& a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="srref">err11a>;n
28211a>}n
28211a>}n
25711a>static void
 a href="+hashtref"ra_blocksize" claef="+hashtref""srefxit_tfm11a>(struct
 a href="+asynctd_blkcirypt_enqueue" class="+asynctd_blkcipto_instance11a> * a hre+asyncf="+code=req" clas+async"sre,>11a>        int
 a href="+code=err" class="sref">tfm11a>)n
278 /a>{n
33211a>        struct
 a href="+hashtd_blkcipher_ctx" class="shashtd_bpto_instance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a hre+asyncf="+code=req" clas+async"sreref">ctx11a>-> a href="+code=tfm" class="sref">tfm11a>);n
32311a>        struct
 a href="+rhashcrypto_spawn" class="srhashpto_instance11a> * a href="+code=child" class="sref">child11a> =  a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sre">child11a>);n
30411a>        struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="sref">ctx11a> =  a ahashtd_blkcipher_request_cast" cahashtd_blkcipher_ypto_tfm_ctx11a>( a hre+asyncf="+code=req" clas+async"sreref">tfm11a>);n
29511a>        struct
 a href="+hashtd_blkcipher_request_ctx" class="shashtd_blkciphers="sinstance11a> * a hher_request_ctx" crlass="sref">ctx11a> =  a ahashtd_blkcipher_request_ctx" cahashtd_blkcipherypto_tfm_ctx11a>( a href="+code=req" class="srref">err11a>;n
23611a>        struct
 a shashtdescf="+code=req" cshashtdescs="sinstance11a> * a descf="+code=req" cdescs="si">spawn11a> =
& a hher_request_ctx" crlass="sref">ctx11a>-> a descf="+code=req" cdescs="sref">err11a>;n
307 /a>n
32811a>        if ( a unlikely"+code=spawn" cunlikelyypto_tfm_ctx11a>( a href="+code=err" class="sreef">err11a> = - a hINPROGRESSf="+code=err" chINPROGRESSs="srr07">
307 /a>n
31911a>    11a>        goto  a href="+code=out" class="sref">out11a>;n
330 /a>n
28111a>         a descf="+code=req" cdescs="sref">ctx11a>-> a href="+code=tfm" class="sf">child11a> =  a href="+code=child" class="sre">child11a>);n
33211a>         a descf="+code=req" cdescs="sref">ctx11a>-> a ="+code=cra_flags" c="sref">cra_flags11a> =  a href="+TFM_REQPTOY_SLEEPLG_TYPE_MASK" class="sTFM_REQPTOY_SLEEP"sre">child11a>);n
343 /a>n
34411a>         a href="+code=err" class="sref">err11a> =  a laass"sshashtref"ra_blocksize" claef="sshashtref"ypto_tfm_ctx11a>( a descf="+code=req" cdescs="srref">err11a>;n
335 /a>n
33611a>         a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a hompletcrypt_enqueue" clompletcs="sref">tfm11a> =  a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sref">err11a>;n
307 /a>n
308 /a> a href="+code=out" class="sref">out /a>:n
33911a>         a local_bhtdisablcrypt_enqueue" clocal_bhtdisablcypto_rref">err11a>;n
33911a>         a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sit_spawn11a>(& a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sef">err11a> =  a href="+code=err" class="sref">err11a>);n
33111a>         a local_bhtenablcrypt_enqueue" clocal_bhtenablcypto_rref">err11a>;n
28211a>}n
343 /a>n
25411a>static int
 a href="+hashtd_blkher_decrypt_enqueue" class="shashtd_blkher_dec"srefxit_tfm11a>(struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="sr07">
307 /a>n
25511a>{n
30611a>        return  a lass="shashther_decrypt_enqueue" class="shashther_dec"srefstance11a> * a href="+code=req" class="sr>static void
 a href="+hashtref"ra_blocksize" claef="+hashtref""srerref">err11a>;n
28211a>}n
338 /a>n
25711a>static void
 a href="+hashtupdcrypto_templaoe" class="+hashtupdcry"srefxit_tfm11a>(struct
 a href="+asynctd_blkcirypt_enqueue" class="+asynctd_blkcipto_instance11a> * a hre+asyncf="+code=req" clas+async"sre,>11a>        int
 a href="+code=err" class="sref">tfm11a>)n
32011a>{n
32111a>        struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="sref">ctx11a> =  a ahashtd_blkcipher_request_cast" cahashtd_blkcipher_ypto_tfm_ctx11a>( a hre+asyncf="+code=req" clas+async"sreref">tfm11a>);n
33211a>        struct
 a href="+hashtd_blkcipher_request_ctx" class="shashtd_blkciphers="sinstance11a> * a hher_request_ctx" crlass="sef">tfm11a>);n
343 /a>n
324stance11a> * a hher_request_ctx" crlass="sref">ctx11a> =  a ahashtd_blkcipher_request_ctx" cahashtd_blkcipherypto_tfm_ctx11a>( a href="+code=req" class="srref">err11a>;n
335 /a>n
23611a>        if ( a unlikely"+code=spawn" cunlikelyypto_tfm_ctx11a>( a href="+code=err" class="sreef">err11a> = - a hINPROGRESSf="+code=err" chINPROGRESSs="srr07">
307 /a>n
32711a>    11a>        goto  a href="+code=out" class="sref">out11a>;n
338 /a>n
33911a>         a href="+code=err" class="sref">err11a> =  a shashtahashtupdcrypto_templaoe" cshashtahashtupdcry"srefstance11a> * a href="+code=req" class="sr>spawn11a> =
& a hher_request_ctx" crlass="sref">ctx11a>-> a descf="+code=req" cdescs="srref">err11a>;n
330 /a>n
33111a>         a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a hompletcrypt_enqueue" clompletcs="sref">tfm11a> =  a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sref">err11a>;n
202 /a>n
308 /a> a href="+code=out" class="sref">out /a>:n
324stance11a> * a local_bhtdisablcrypt_enqueue" clocal_bhtdisablcypto_rref">err11a>;n
34511a>         a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sit_spawn11a>(& a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sef">err11a> =  a href="+code=err" class="sref">err11a>);n
33611a>         a local_bhtenablcrypt_enqueue" clocal_bhtenablcypto_rref">err11a>;n
28211a>}n
338 /a>n
25411a>static int
 a href="+hashtupdcryther_decrypt_enqueue" class="shashtupdcryther_dec"srefxit_tfm11a>(struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="sr07">
307 /a>n
32011a>{n
25111a>        return  a lass="shashther_decrypt_enqueue" class="shashther_dec"srefstance11a> * a href="+code=req" class="sr>static void
 a href="+hashtupdcrypto_templaoe" class="+hashtupdcry"srerref">err11a>;n
28211a>}n
343 /a>n
25711a>static void
 a href="+hashtfinaf="+code=tmpl" chref="+hashtfinaf"srefxit_tfm11a>(struct
 a href="+asynctd_blkcirypt_enqueue" class="+asynctd_blkcipto_instance11a> * a hre+asyncf="+code=req" clas+async"sre,>11a>        int
 a href="+code=err" class="sref">tfm11a>)n
25511a>{n
23611a>        struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="sref">ctx11a> =  a ahashtd_blkcipher_request_cast" cahashtd_blkcipher_ypto_tfm_ctx11a>( a hre+asyncf="+code=req" clas+async"sreref">tfm11a>);n
23611a>        struct
 a href="+hashtd_blkcipher_request_ctx" class="shashtd_blkciphers="sinstance11a> * a hher_request_ctx" crlass="sref">ctx11a> =  a ahashtd_blkcipher_request_ctx" cahashtd_blkcipherypto_tfm_ctx11a>( a href="+code=req" class="srref">err11a>;n
338 /a>n
31911a>        if ( a unlikely"+code=spawn" cunlikelyypto_tfm_ctx11a>( a href="+code=err" class="sreef">err11a> = - a hINPROGRESSf="+code=err" chINPROGRESSs="srr07">
307 /a>n
34011a>    11a>        goto  a href="+code=out" class="sref">out11a>;n
301 /a>n
33211a>         a href="+code=err" class="sref">err11a> =  a laass"sshashtfinaf="+code=tmpl" chref="sshashtfinafs="sit_spawn11a>(& a hher_request_ctx" crlass="sref">ctx11a>-> a descf="+code=req" cdescs="sr>static void
 a href="+code=req" class="sref">ctx11a>-> a resulef="+code=out" cresules="srref">err11a>;n
343 /a>n
324stance11a> * a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a hompletcrypt_enqueue" clompletcs="sref">tfm11a> =  a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sref">err11a>;n
335 /a>n
308 /a> a href="+code=out" class="sref">out /a>:n
29711a>         a local_bhtdisablcrypt_enqueue" clocal_bhtdisablcypto_rref">err11a>;n
19811a>         a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sit_spawn11a>(& a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sef">err11a> =  a href="+code=err" class="sref">err11a>);n
33911a>         a local_bhtenablcrypt_enqueue" clocal_bhtenablcypto_rref">err11a>;n
28211a>}n
301 /a>n
25411a>static int
 a href="+hashtfinafther_decrypt_enqueue" class="shashtfinafther_dec"srefxit_tfm11a>(struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="sr07">
307 /a>n
25511a>{n
30411a>        return  a lass="shashther_decrypt_enqueue" class="shashther_dec"srefstance11a> * a href="+code=req" class="sr>static void
 a href="+hashtfinaf="+code=tmpl" chref="+hashtfinaf"srerref">err11a>;n
28211a>}n
296 /a>n
25711a>static void
 a href="+hashtfinup="+code=tmpl" chref="+hashtfinup"srefxit_tfm11a>(struct
 a href="+asynctd_blkcirypt_enqueue" class="+asynctd_blkcipto_instance11a> * a hre+asyncf="+code=req" clas+async"sre,>11a>        int
 a href="+code=err" class="sref">tfm11a>)n
278 /a>{n
27911a>        struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="sref">ctx11a> =  a ahashtd_blkcipher_request_cast" cahashtd_blkcipher_ypto_tfm_ctx11a>( a hre+asyncf="+code=req" clas+async"sreref">tfm11a>);n
22011a>        struct
 a href="+hashtd_blkcipher_request_ctx" class="shashtd_blkciphers="sinstance11a> * a hher_request_ctx" crlass="sref">ctx11a> =  a ahashtd_blkcipher_request_ctx" cahashtd_blkcipherypto_tfm_ctx11a>( a href="+code=req" class="srref">err11a>;n
301 /a>n
34211a>        if ( a unlikely"+code=spawn" cunlikelyypto_tfm_ctx11a>( a href="+code=err" class="sreef">err11a> = - a hINPROGRESSf="+code=err" chINPROGRESSs="srr07">
307 /a>n
31311a>    11a>        goto  a href="+code=out" class="sref">out11a>;n
294 /a>n
34511a>         a href="+code=err" class="sref">err11a> =  a shashtahashtfinup="+code=tmpl" cshashtahashtfinup"srefstance11a> * a href="+code=req" class="sr>spawn11a> =
& a hher_request_ctx" crlass="sref">ctx11a>-> a descf="+code=req" cdescs="srref">err11a>;n
296 /a>n
29711a>         a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a hompletcrypt_enqueue" clompletcs="sref">tfm11a> =  a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sref">err11a>;n
338 /a>nout /a>:n
33911a>         a local_bhtdisablcrypt_enqueue" clocal_bhtdisablcypto_rref">err11a>;n
33111a>         a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sit_spawn11a>(& a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sef">err11a> =  a href="+code=err" class="sref">err11a>);n
33211a>         a local_bhtenablcrypt_enqueue" clocal_bhtenablcypto_rref">err11a>;n
28211a>}n
294 /a>n
25411a>static int
 a href="+hashtfinupther_decrypt_enqueue" class="shashtfinupther_dec"srefxit_tfm11a>(struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="sr07">
307 /a>n
278 /a>{n
32711a>        return  a lass="shashther_decrypt_enqueue" class="shashther_dec"srefstance11a> * a href="+code=req" class="sr>static void
 a href="+hashtfinup="+code=tmpl" chref="+hashtfinup"srerref">err11a>;n
28211a>}n
28211a>}n
25711a>static void
 a href="+hashtdigkcirypt_enqueue" class="shashtdigkci"srefxit_tfm11a>(struct
 a href="+asynctd_blkcirypt_enqueue" class="+asynctd_blkcipto_instance11a> * a hre+asyncf="+code=req" clas+async"sre,>11a>        int
 a href="+code=err" class="sref">tfm11a>)n
278 /a>{n
33211a>        struct
 a href="+hashtd_blkcipher_ctx" class="shashtd_bpto_instance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a hre+asyncf="+code=req" clas+async"sreref">ctx11a>-1a>( a href="+code=tfm" class="sref">tfm11a>);n
32311a>        struct
 a href="+rhashcrypto_spawn" class="srhashpto_instance11a> * a href="+code=child" class="sref">child11a> =  a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sre">child11a>);n
30411a>        struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="sref">ctx11a> =  a ahashtd_blkcipher_request_cast" cahashtd_blkcipher_ypto_tfm_ctx11a>( a hre+asyncf="+code=req" clas+async"sreref">tfm11a>);n
29511a>        struct
 a href="+hashtd_blkcipher_request_ctx" class="shashtd_blkciphers="sinstance11a> * a hher_request_ctx" crlass="sref">ctx11a> =  a ahashtd_blkcipher_request_ctx" cahashtd_blkcipherypto_tfm_ctx11a>( a href="+code=req" class="sref">tfm11a>);n
23611a>        struct
 a shashtdescf="+code=req" cshashtdescs="sinstance11a> * a descf="+code=req" cdescs="si">spawn11a> =
& a hher_request_ctx" crlass="sref">ctx11a>-> a descf="+code=req" cdescs="sref">err11a>;n
307 /a>n
32811a>        if ( a unlikely"+code=spawn" cunlikelyypto_tfm_ctx11a>( a href="+code=err" class="sreef">err11a> = - a hINPROGRESSf="+code=err" chINPROGRESSs="srr07">
307 /a>n
31911a>    11a>        goto  a href="+code=out" class="sref">out11a>;n
330 /a>n
28111a>         a descf="+code=req" cdescs="sref">ctx11a>-> a href="+code=tfm" class="sf">child11a> =  a href="+code=child" class="sre">child11a>);n
33211a>         a descf="+code=req" cdescs="sref">ctx11a>-> a ="+code=cra_flags" c="sref">cra_flags11a> =  a href="+TFM_REQPTOY_SLEEPLG_TYPE_MASK" class="sTFM_REQPTOY_SLEEP"sre">child11a>);n
343 /a>n
34411a>         a href="+code=err" class="sref">err11a> =  a shashtahashtdigkcirypt_enqueue" cshashtahashtdigkci"srefstance11a> * a href="+code=req" class="sr>static void
 a descf="+code=req" cdescs="srref">err11a>;n
335 /a>n
33611a>         a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a hompletcrypt_enqueue" clompletcs="sref">tfm11a> =  a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sref">e335 /a>n
307 /a>n
308 /a> a href="+code=out" class="sref">out /a>:n
33911a>         a local_bhtdisablcrypt_enqueue" clocal_bhtdisablcypto_rref">err11a>;n
33911a>         a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sit_spawn11a>(& a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sef">err11a> =  a href="+code=err" class="sref">err11a>>;n
33111a>         a local_bhtenablcrypt_enqueue" clocal_bhtenablcypto_rref">err11a>;n
28211a>}n
343 /a>n
25411a>static int
 a href="+hashtdigkcither_decrypt_enqueue" class="shashtdigkcither_dec"srefxit_tfm11a>(struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="sr07">
307 /a>n
25511a>{n
30611a>        return  a lass="shashther_decrypt_enqueue" class="shashther_dec"srefstance11a> * a href="+code=req" class="sr>static void
 a href="+hashtdigkcirypt_enqueue" class="shashtdigkci"srerref">err11a>;n
28211a>}n
338 /a>n
25411a>static int
 a href="+hashtexporirypt_enqueue" class="shashtexpori"srefxit_tfm11a>(struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="s,5711a>nstance11a> * a href="+code=out" class="sr07">
307 /a>n
32011a>{n
32111a>        struct
 a href="+hashtd_blkcipher_request_ctx" class="shashtd_blkciphers="sinstance11a> * a hher_request_ctx" crlass="sref">ctx11a> =  a ahashtd_blkcipher_request_ctx" cahashtd_blkcipherypto_tfm_ctx11a>( a href="+code=req" class="sref">tfm11a>);n
202 /a>n
31311a>        return  a lass="srhashtexporirypt_enqueue" class="srhashtexporis="sit_spawn11a>(& a hher_request_ctx" crlass="sref">ctx11a>-> a descf="+code=req" cdescs="sr>static void
 a href="+code=out" class="sref">tfm11a>);n
28211a>}n
335 /a>n
25411a>static int
 a href="+hashtimporirypt_enqueue" class="shashtimpori"srefxit_tfm11a>(struct
 a ahashtd_blkcirypt_enqueue" cahashtd_blkcipto_instance11a> * a href="+code=req" class="s,5consfm711a>nstance11a> * a i="+code=spawn" ci=s="sref">tfm11a>)n
32011a>{n
32111a>        struct
 a href="+hashtd_blkcipher_request_ctx" class="shashtd_blkciphers="sinstance11a> * a hher_request_ctx" crlass="sref">ctx11a> =  a ahashtd_blkcipher_request_ctx" cahashtd_blkcipherypto_tfm_ctx11a>( a href="+code=req" class="sref">
32011a>{n
28211a>}n
31311a>        return  a lass="srhashtimporirypt_enqueue" class="srhashtimporis="sit_spawn11a>(& a hher_request_ctx" crlass="sref">ctx11a>-> a descf="+code=req" cdescs="sr>static void
 a i="+code=spawn" ci=s="sref">
32011a>{n
28211a>}n
202 /a>n
25411a>static int
 a href="+crecrythashcrypto_spawn" class="+crecrythash"srefxit_tfm11a>(struct
 a href="+templcrypto_templaoe" class="+templcrys="sinstance11a> * a tmplf="+code=tfm" clmpls="sr>xit_tfm11a>(struct
 a r4">tef="+code=err" cr4">tes="sinnstance11a> * a tbf="+code=tfm" clbs="sr02">
202 /a>n
324444444444444444444444411a>        struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sreref">tfm11a>)n
25511a>{n
23611a>        struct
 a hashd_insfancepher_request_ctx" chashd_insfancepherpto_instance11a> * a href="+code=ctx" class="sef">
32011a>{n
23611a>        struct
 a ahashtresfance_request_ctx" cahashtresfancepto_instance11a> * a resf"+code=spawn" ci=sss="sref">out11a>;n
32111a>        struct
 a shashtalgrypt_enqueue" cshashtalgpto_instance11a> * a salgrypt_enqueue" csalgpto_ref">out11a>;n
27911a>        struct
 a href=otalgrypt_enqueue" chref=otalgpto_instance11a> * a algrypt_enqueue" calgpto_ref">out11a>;n
31311a>        int
 a href="+code=err" class="sref">err11a>;n
301 /a>n
33211a>         a salgrypt_enqueue" csalgpto_ref">err11a> =  a shashta>tetalgrypt_enqueue" cshashta>tetalgypto_tfm_ctx11a>( a tbf="+code=tfm" clbs="s[1], 0, 0ref">
32011a>{n
31311a>        if ( a IS_ERRf="+code=tfm" cIS_ERRypto_tfm_ctx11a>( a salgrypt_enqueue" csalgpto_rr07">
307 /a>n
3244444444411a>        return  a PTR_ERRf="+code=tfm" cPTR_ERRypto_tfm_ctx11a>( a salgrypt_enqueue" csalgpto_ref">
32011a>{n
335 /a>n
33611a>         a algrypt_enqueue" calgpto_i">spawn11a> =
& a salgrypt_enqueue" csalgpto_ref">ctx11a>-> a bascrypt_enqueue" cbascs="sef">
32011a>{n
29711a>         a resf"+code=spawn" ci=sss="sref">ctx11a> =  a href=dtalloctresfance_request_ctx" chref=dtalloctresfanceypto_tfm_ctx11a>( a algrypt_enqueue" calgpto_r>static void
 a ahashtresfance_headrooef="+code=tfm" cahashtresfance_headrooeypto_rr02">
202 /a>n
324444444444444444444444444444441izeof(nstance11a> * a href="+code=ctx" class="srrref">err11a>;n
33911a>         a href="+code=err" class="sref">err11a> =  a PTR_ERRf="+code=tfm" cPTR_ERRypto_tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
34011a>        if ( a IS_ERRf="+code=tfm" cIS_ERRypto_tfm_ctx11a>( a resf"+code=spawn" ci=sss="srr07">
307 /a>n
3244444444411a>        goto  a hre_pre_algrypt_enqueue" chre_pre_algs="sef">
32011a>{n
202 /a>n
33911a>         a href="+code=ctx" class="sref">ctx11a> =  a ahashtresfance_her_request_ctx" cahashtinsfancepherpto__tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
324stance11a> * a href="+code=ctx" class="sref">ctx11a>-> a href="+code=queue" class="sre>r4stance11a> * a href="+code=queue" class="sreref">err11a>;n
335 /a>n
33611a>         a href="+code=err" class="sref">err11a> =  a laass"sd_blkshashtspaw="+code=spawn" claass"sd_blkshashtspaw=s="sit_spawn11a>(& a href="+code=ctx" class="sref">ctx11a>-> a spaw="+code=spawn" cspaw=s="sr>static void
 a salgrypt_enqueue" csalgpto_r02">
202 /a>n
32711a>                          ">ctx11a> =  a ahashtlaass"sd_sfance_request_ctx" cahashtlaass"sd_sfanceypto_tfm_ctx11a>( a resf"+code=spawn" ci=sss="srrref">err11a>;n
32811a>        if ( a href="+code=err" class="sref">tfm11a>)n
31911a>    11a>        goto  a hre_free_resf"+code=spawn" chre_free_resf"sreref">err11a>;n
330 /a>n
33111a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a halgrypt_enqueue" chalgpto_ref">alg11a>. a bascrypt_enqueue" cbascs="sref">alg11a>. a hra_="+code=cra_flags" chra_="+cos="sref">err11a> =  a lass="sALG_ASYNCde=cra_flags" class="sALG_ASYNC"sreref">err11a>;n
202 /a>n
33911a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a halgrypt_enqueue" chalgpto_ref">alg11a>. a digkci1izef="+code=req" cdigkci1izepto_ref">err11a> =  a salgrypt_enqueue" csalgpto_ref">ctx11a>-> a digkci1izef="+code=req" cdigkci1izepto_ref">err11a>;n
324stance11a> * a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a halgrypt_enqueue" chalgpto_ref">alg11a>. a bascrypt_enqueue" cbascs="sref">alg11a>. a hra_las1izef="+code=req" chra_las1izepto_ref1izeof(11a>        struct
 a href="+hashtd_blkcipher_ctx" class="shashtd_bpto_rref">err11a>;n
335 /a>n
33611a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a halgrypt_enqueue" chalgpto_ref">alg11a>. a bascrypt_enqueue" cbascs="sref">alg11a>. a hra_ref"ra_blocksize" claatref""sreref">ctx11a> =  a href=dthashtinblkhref="+code=tfm" chref=dthashtinblkhrepto_ref">err11a>;n
29711a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a halgrypt_enqueue" chalgpto_ref">alg11a>. a bascrypt_enqueue" cbascs="sref">alg11a>. a hra_exf"ra_blocksize" claatexf""sreref">ctx11a> =  a href=dthashtexf"khref="+code=tfm" chref=dthashtexf"khrepto_ref">err11a>;n
338 /a>n
33911a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a ref"ra_blocksize" cref""srer ref">ctx11a> =  a href=dthashtinblkher_decrypt_enqueue" class="shashtd_blkher_dec"sreref">err11a>;n
33911a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a updcrypto_templaoe" cupdcry"sreref">ctx11a> =  a href=dthashtupdcryther_decrypt_enqueue" class="shashtupdcryther_dec"sreref">err11a>;n
33111a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a finaf="+code=tmpl" cfinaf"sre ref">ctx11a> =  a href=dthashtfinafther_decrypt_enqueue" class="shashtfinafther_dec"sreref">err11a>;n
33211a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a finup="+code=tmpl" cfinup"sre ref">ctx11a> =  a href=dthashtfinupther_decrypt_enqueue" class="shashtfinupther_dec"sreref">err11a>;n
33911a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a exporirypt_enqueue" cexporis="sref">ctx11a> =  a href=dthashtexporirypt_enqueue" class="shashtexpori"sreref">err11a>;n
324stance11a> * a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a imporirypt_enqueue" cimporis="sref">ctx11a> =  a href=dthashtimporirypt_enqueue" class="shashtimpori"sreref">err11a>;n
34511a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a setkey"+code=spawn" csetkeys="sref">ctx11a> =  a href=dthashtsetkey"+code=spawn" chref=dthashtsetkey"sreref">err11a>;n
33611a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a digkcirypt_enqueue" cdigkci"sreref">ctx11a> =  a href=dthashtdigkcither_decrypt_enqueue" class="shashtdigkcither_dec"sreref">err11a>;n
307 /a>n
19811a>         a href="+code=err" class="sref">err11a> =  a ahashtd_gistersd_sfance_request_ctx" cahashtd_gistersd_sfanceypto_tfm_ctx11a>( a tmplf="+code=tfm" clmpls="sr>tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
31911a>        if ( a href="+code=err" class="sr 55">
25511a>{n
34011a>    ">err11a> =  a laass"sdrop+rhashcrypto_spawn" class="sdrop+rhashs="sit_spawn11a>(& a href="+code=ctx" class="sref">ctx11a>-> a spaw="+code=spawn" cspaw=s="srref">err11a>;nout /a>:n
33211a>    ">err11a> =  a kfree"+code=spawn" ckfreepto__tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
33982">
28211a>}n
294 /a>nout /a>:n
33611a>         a lass="smod_precrypto_spawn" class="smod_prepto__tfm_ctx11a>( a algrypt_enqueue" calgpto_rref">err11a>;n
32711a>        return  a href="+code=err" class="sref">err11a>;n
28211a>}n
28211a>}n
25711a>static void
 a href="+aeadtlaassrypt_enqueue" class="saeadtlaasspto__11a>        struct
 a aeadtd_blkcirypt_enqueue" caeadtd_blkciueL32nstance11a> * a href="+code=req" class="s,2">
28211a>}n
324444444444444444411a>        struct
 a href=otaeadcrypto_spawn" class="saeadueL32nstance11a> * a href="+code=child" class="sre,2">
28211a>}n
33211a>    19">
31911a>        int
 a href="+code=err" class="s,2">
28211a>}n
31311a>    19">
31911a>(nstance11a> * a haassrypt_enqueue" class=pto_r_11a>        struct
 a aeadtd_blkcirypt_enqueue" caeadtd_blkciueL32nstance11a> * a href="+code=req" class="srr07">
307 /a>n
25511a>{n
29511a>        struct
 a href="+aeadtd_blkcitd_blkcipher_ctx" class="saeadtd_blkcitd_bueL32nstance11a> * a hher_request_ctx" crlass="sef">tfm11a>);n
33611a>         a hher_request_ctx" crlass="sref">ctx11a> =  a aeadtd_blkcitd_blkcipher_ctx" caeadtd_blkcitd_bueL3_tfm_ctx11a>( a href="+code=req" class="sref">
32011a>{n
307 /a>n
32811a>        if ( a unlikely"+code=spawn" cunlikelyypto_tfm_ctx11a>( a href="+code=err" class="sreef">err11a> = - a hINPROGRESSf="+code=err" chINPROGRESSs="srr07">
307 /a>n
31911a>    11a>        goto  a href="+code=out" class="sref">out11a>;n
33911a>         a aeadtd_blkcitse"khref="+code=tfm" caeadtd_blkcitse"khreueL3_tfm_ctx11a>( a href="+code=req" class="sr>static void
 a href="+code=child" class="sreref">
32011a>{n
28111a>         a href="+code=err" class="sref">err11a> =  a laassrypt_enqueue" class=pto_(611a>         a href="+code=req" class="s ref">
32011a>{n
33211a>         a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a hompletcrypt_enqueue" clompletcs="sref">tfm11a> =  a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sref">e335 /a>n
308 /a> a href="+code=out" class="sref">out /a>:n
34411a>         a local_bhtdisablcrypt_enqueue" clocal_bhtdisablcypto_rref">err11a>;n
34511a>         a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sit_spawn11a>(& a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sef">err11a> =  a href="+code=err" class="sref">err11a>);n
33611a>         a local_bhtenablcrypt_enqueue" clocal_bhtenablcypto_rref">err11a>;n
28211a>}n
338 /a>n
25711a>static void
 a href="+aeadtenlaassrypt_enqueue" class="saeadtenlaasspto__11a>        struct
 a lass="sasynctd_blkcirypt_enqueue" class="+asynctd_blkcipto_instance11a> * a ahref="+code=req" calass="sr>11a>        int
 a href="+code=err" class="sref">tfm11a>)n
32011a>{n
32111a>        struct
 a href="+aeadtl_blkcipher_ctx" class="saeadtd_bpto_instance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a ahref="+code=req" calass="sref">ctx11a>-1a>( a href="+code=tfm" class="sref">tfm11a>);n
33211a>        struct
 a href=otaeadcrypto_spawn" class="saeadueL32nstance11a> * a href="+code=child" class="sref">child11a> =  a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sre">child11a>);n
32311a>        struct
 a aeadtd_blkcirypt_enqueue" caeadtd_blkciueL32nstance11a> * a href="+code=req" class="s">child11a>);n
294 /a>n
34511a>         a href="+code=req" class="sref">ctx11a> =  a conta55"r_ofrypt_enqueue" clonta55"r_ofypto_tfm_ctx11a>( a ahref="+code=req" calass="sr>xit_tfm11a>(struct
 a aeadtd_blkcirypt_enqueue" caeadtd_blkciueL3ef">err11a> =  a bascrypt_enqueue" cbascs="sref">tfm11a>);n
33611a>         a lass="+aeadtlaassrypt_enqueue" class="saeadtlaasspto__tfm_ctx11a>( a href="+code=req" class="sr>static void
 a href="+code=child" class="sreef">err11a> =  a href="+code=err" class="sr>static void
 a href=osaeadtlairypt_enqueue" class="+aeadtlaipto__tfm_ctx11a>( a href="+code=child" class="srerref">ctx11a>-> a enlaassrypt_enqueue" cenlaasspto_ref">tfm11a>);n
28211a>}n
338 /a>n
25711a>static void
 a href="+aeadtdelaassrypt_enqueue" class="saeadtdelaasspto__11a>        struct
 a lass="sasynctd_blkcirypt_enqueue" class="+asynctd_blkcipto_instance11a> * a ahref="+code=req" calass="sr>11a>        int
 a href="+code=err" class="sref">tfm11a>)n
32011a>{n
32111a>        struct
 a href="+aeadtl_blkcipher_ctx" class="saeadtd_bpto_instance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a ahref="+code=req" calass="sref">ctx11a>-1a>( a href="+code=tfm" class="sref">tfm11a>);n
33211a>        struct
 a href=otaeadcrypto_spawn" class="saeadueL32nstance11a> * a href="+code=child" class="sref">child11a> =  a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sre">child11a>);n
32311a>        struct
 a aeadtd_blkcirypt_enqueue" caeadtd_blkciueL32nstance11a> * a href="+code=req" class="s">child11a>);n
294 /a>n
34511a>         a href="+code=req" class="sref">ctx11a> =  a conta55"r_ofrypt_enqueue" clonta55"r_ofypto_tfm_ctx11a>( a ahref="+code=req" calass="sr>xit_tfm11a>(struct
 a aeadtd_blkcirypt_enqueue" caeadtd_blkciueL3ef">err11a> =  a bascrypt_enqueue" cbascs="sref">tfm11a>);n
33611a>         a lass="+aeadtlaassrypt_enqueue" class="saeadtlaasspto__tfm_ctx11a>( a href="+code=req" class="sr>static void
 a href="+code=child" class="sreef">err11a> =  a href="+code=err" class="sr>static void
 a href=osaeadtlairypt_enqueue" class="+aeadtlaipto__tfm_ctx11a>( a href="+code=child" class="srerref">ctx11a>-> a delaassrypt_enqueue" cdelaasspto_ref">tfm11a>);n
28211a>}n
338 /a>n
25411a>static int
 a href="+aeadtenr_decrypt_enqueue" class="saeadtenr_decpto__11a>        struct
 a aeadtd_blkcirypt_enqueue" caeadtd_blkciueL32nstance11a> * a href="+code=req" class="s,2">
28211a>}n
34011a>                        static void
 a href=oslompletion_irypt_enqueue" class="+lompletion_iueL34ctx11a>-> a hompletcrypt_enqueue" clompletcs="sref">tfm11a>)n
278 /a>{n
33211a>        struct
 a href="+aeadtd_blkcitd_blkcipher_ctx" class="saeadtd_blkcitd_bueL32nstance11a> * a hher_request_ctx" crlass="sref">ctx11a> =  a aeadtd_blkcitd_blkcipher_ctx" caeadtd_blkcitd_bueL3_tfm_ctx11a>( a href="+code=req" class="sref">
32011a>{n
32311a>        struct
 a href="+aeadcrypto_spawn" class="saeadueL32nstance11a> * a href="+code=tfm" class="sf">child11a> =  a hass="+aeadtlashref="+code=tfm" chref="+aeadtlashreueL3_tfm_ctx11a>( a href="+code=req" class="sref">
32011a>{n
32411a>        struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sreref">ctx11a> =  a href=dtget+code=cryptd_queue" class="sget+code=pto__tfm_ctx11a>( a href="+aeadthref="+code=tfm" chref="+aeadthreueL3_tfm_ctx11a>( a href="+code=tfm" class="srref">
32011a>{n
335 /a>n
33611a>         a hher_request_ctx" crlass="sref">ctx11a>-> a hompletcrypt_enqueue" clompletcs="sref">tfm11a> =  a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a hompletcrypt_enqueue" clompletcs="sef">
32011a>{n
29711a>         a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a hompletcrypt_enqueue" clompletcs="sref">tfm11a> =  a hompletcrypt_enqueue" clompletcs="sef">
32011a>{n
32111a>        return  a lass="senr_dectd_blkcirypt_enqueue" class="senr_dectd_blkciueL3_tfm_ctx11a>( a href="+code=queue" class="srer>spawn11a> =
& a href="+code=req" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">
32011a>{n
28211a>}n
330 /a>n
25411a>static int
 a href="+aeadtenhref=tenr_decrypt_enqueue" class="saeadtenhref=tenr_decpto__11a>        struct
 a aeadtd_blkcirypt_enqueue" caeadtd_blkciueL32nstance11a> * a href="+code=req" class="sref">tfm11a>)n
278 /a>{n
31311a>        return  a lass="+aeadtenr_decrypt_enqueue" class="saeadtenr_decpto__tfm_ctx11a>( a href="+code=req" class="sr>static void
 a hass="saeadtenhref=rypt_enqueue" class="saeadtenlaasspto_ ref">
32011a>{n
28211a>}n
335 /a>n
25411a>static int
 a href="+aeadtdelaasstenr_decrypt_enqueue" class="saeadtdelaasstenr_decpto__11a>        struct
 a aeadtd_blkcirypt_enqueue" caeadtd_blkciueL32nstance11a> * a href="+code=req" class="sref">tfm11a>)n
32011a>{n
32111a>        return  a lass="saeadtenr_decrypt_enqueue" class="saeadtenr_decpto__tfm_ctx11a>( a href="+code=req" class="sr>static void
 a hass="saeadtdelaassrypt_enqueue" class="saeadtdelaasspto_ ref">
32011a>{n
28211a>}n
330 /a>n
25411a>static int
 a href="+aeadtinblkhref="+code=tfm" chref=dtaeadtinblkhrepto__11a>        struct
 a lass="shref="+code=tfm" chref="+lass="sfnstance11a> * a href="+code=tfm" class="sref">tfm11a>)n
278 /a>{n
32311a>        struct
 a href="+resfance_request_ctx" chref=otresfancepto_instance11a> * a resf"+code=spawn" ci=sss="sref">ctx11a> =  a href="+codealg+resfance_request_ctx" chref=otcodealg+resfanceueL3_tfm_ctx11a>( a href="+code=tfm" class="sref">
32011a>{n
32411a>        struct
 a aeadtinsfance_her_request_ctx" caeadtinsfance_herpto_instance11a> * a rher_request_ctx" cilass="sref">ctx11a> =  a href="+insfance_her_request_ctx" chref="+insfance_herueL3_tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
29511a>        struct
 a href="+aeadtspaw="+code=spawn" claass"saeadtspaw=pto_instance11a> * a spaw="+code=spawn" cspaw=s="si">spawn11a> =
& a rher_request_ctx" cilass="sref">ctx11a>-> a aeadtspaw="+code=spawn" caeadtspaw=pto_ref">err11a>;n
23611a>        struct
 a lass="saeadtl_blkcipher_ctx" class="saeadtd_bpto_instance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a href="+code=tfm" class="sref">
32011a>{n
32711a>        struct
 a href=otaeadcrypto_spawn" class="saeadueL32nstance11a> * a hipheef="+code=err" chipheepto_ref">err11a>;n
338 /a>n
33911a>         a hipheef="+code=err" chipheepto_ref">ctx11a> =  a href="+spaw=taeadcrypto_spawn" class="sspaw=taeadypto_tfm_ctx11a>( a spaw="+code=spawn" cspaw=s="srref">err11a>;n
34011a>        if ( a IS_ERRf="+code=tfm" cIS_ERRypto_tfm_ctx11a>( a hipheef="+code=err" chipheepto_rr07">
307 /a>n
33121">
32111a>        return  a PTR_ERRf="+code=tfm" cPTR_ERRypto_tfm_ctx11a>( a hipheef="+code=err" chipheepto_rref">err11a>;n
202 /a>n
33911a>         a laass"saeadtset_="+code=cra_flags" chrass"saeadtset_="+coypto_tfm_ctx11a>( a hipheef="+code=err" chipheepto_r>static void
 a href="+TFM_REQPTOY_SLEEPLG_TYPE_MASK" class="sTFM_REQPTOY_SLEEP"srerref">err11a>;n
324stance11a> * a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sreref">ctx11a> =  a hipheef="+code=err" chipheepto_ref">err11a>;n
34511a>         a href="+code=tfm" class="sref">ctx11a>-> a hrttaeadcrypto_spawn" clattaeadyptoref">alg11a>. a las1izef="+code=req" clas1ize"sreref1izeof(11a>        struct
 a href="+aeadtd_blkcitd_blkcipher_ctx" class="saeadtd_blkcitd_bueL3rref">err11a>;n
30611a>   0ref">err11a>;n
28211a>}n
338 /a>n
25711a>static void
 a href="+aeadtexf"khref="+code=tfm" chref=dtaeadtexf"khrepto__11a>        struct
 a lass="shref="+code=tfm" chref="+lass="sfnstance11a> * a href="+code=tfm" class="sref">tfm11a>)n
32011a>{n
32111a>        struct
 a href="+aeadtl_blkcipher_ctx" class="saeadtd_bpto_instance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+code=crypto_tfm_ctx" class="sref">crypto_tfm_ctx11a>( a href="+code=tfm" class="sref">
32011a>{n
33211a>         a lass="sfree_aeadcrypto_spawn" class="sfree_aeadypto_tfm_ctx11a>( a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sreref">
32011a>{n
28211a>}n
294 /a>n
25411a>static int
 a href="+crecrytaeadcrypto_spawn" class="+crecrytaeadpto__11a>        struct
 a lass="shemplcrypto_templaoe" class="+templcrys="sinstance11a> * a tmplf="+code=tfm" clmpls="sr94">
294 /a>n
3366666666666666666666666xit_tfm11a>(struct
 a r4">tef="+code=err" cr4">tes="sinnstance11a> * a tbf="+code=tfm" clbs="sr02">
202 /a>n
32711a>                  11a>        struct
 a href="+code=cryptd_queue" class="sref">cryptd_queue11a> * a href="+code=queue" class="sreref">tfm11a>)n
32011a>{n
27911a>        struct
 a aeadtinsfance_her_request_ctx" caeadtinsfance_herpto_instance11a> * a href="+code=ctx" class="sef">
32011a>{n
34011a>        struct
 a href="+resfance_request_ctx" chref=otresfancepto_instance11a> * a resf"+code=spawn" ci=sss="sef">
32011a>{n
32111a>        struct
 a href=otalgrypt_enqueue" chref=otalgpto_instance11a> * a algrypt_enqueue" calgpto_ref">out11a>;n
33211a>        int
 a href="+code=err" class="sref">err11a>;nerr11a>;n
324stance11a> * a algrypt_enqueue" calgpto_i">     struct
 a href=otget+a>tetalgrypt_enqueue" chref=otget+a>tetalgypto_tfm_ctx11a>( a hbf="+code=tfm" clbs="sr>static void
 a href="+ALG_TYPE_AEADLG_TYPE_MASK" class="sALG_TYPE_AEADs="sr02">
202 /a>n
32711a>                  24stance11a> * a lass="sALG_TYPE_MASKLG_TYPE_MASK" class="sALG_TYPE_MASK"sreref">
32011a>{n
33611a>        if ( a IS_ERRf="+code=tfm" cIS_ERRypto_tfm_ctx11a>( a algrypt_enqueue" calgpto_rref">tfm11a>)n
32711a>    11a>        return  a PTR_ERRf="+code=tfm" cPTR_ERRypto_tfm_ctx11a>( a algrypt_enqueue" calgpto_rref">err11a>;n
338 /a>n
33911a>         a resf"+code=spawn" ci=sss="sref">ctx11a> =  a href=dtalloctresfance_request_ctx" chref=dtalloctresfanceypto_tfm_ctx11a>( a algrypt_enqueue" calgpto_r>0,41izeof(nstance11a> * a href="+code=ctx" class="srrref">err11a>;n
33911a>         a href="+code=err" class="sref">err11a> =  a PTR_ERRf="+code=tfm" cPTR_ERRypto_tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
32411a>        if ( a IS_ERRf="+code=tfm" cIS_ERRypto_tfm_ctx11a>( a resf"+code=spawn" ci=sss="srr07">
307 /a>n
33211a>    11a>        goto  a hre_pre_algrypt_enqueue" chre_pre_algs="sef">
32011a>{nerr11a>;n
324stance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+insfance_her_request_ctx" chref="+insfance_herueL3_tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
34511a>         a href="+code=ctx" class="sref">ctx11a>-> a href="+code=queue" class="sre>r4stance11a> * a href="+code=queue" class="sreref">err11a>;nerr11a>;n
29711a>         a href="+code=err" class="sref">err11a> =  a laass"sd_blkspaw="+code=spawn" claass"sd_blkspaw=s="sit_spawn11a>(& a href="+code=ctx" class="sref">ctx11a>-> a aeadtspaw="+code=spawn" caeadtspaw=pto_ref">alg11a>. a bascrypt_enqueue" cbascs="sr>static void
 a algrypt_enqueue" calgpto_r>static void
 a resf"+code=spawn" ci=sss="sr02">
202 /a>n
328              24stance11a> * a lass="sALG_TYPE_MASKLG_TYPE_MASK" class="sALG_TYPE_MASK"sre |4stance11a> * a lass="sALG_ASYNCde=cra_flags" class="sALG_ASYNC"srerref">err11a>;n
31911a>        if ( a href="+code=err" class="sref">err11a>;n
34011a>    11a>        goto  a hre_free_resf"+code=spawn" chre_free_resf"sreref">err11a>;n
301 /a>n
33211a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_="+code=cra_flags" chra_="+cos="sref">err11a> =  a lass="sALG_TYPE_AEADLG_TYPE_MASK" class="sALG_TYPE_AEADs="s |4stance11a> * a lass="sALG_ASYNCde=cra_flags" class="sALG_ASYNC"sreref">err11a>;n
33911a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_type_request_ctx" chra_types="sref">err11a> =  a algrypt_enqueue" calgpto_ref">ctx11a>-> a hra_type_request_ctx" chra_types="sref">err11a>;n
34411a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_las1izef="+code=req" chra_las1izepto_ref1izeof(11a>        struct
 a href="+aeadtl_blkcipher_ctx" class="saeadtd_bpto_rref">err11a>;n
34511a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_ref"ra_blocksize" claatref""sreref">ctx11a> =  a href=dtaeadtinblkhref="+code=tfm" chref=dtaeadtinblkhrepto_ref">err11a>;n
33611a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_exf"ra_blocksize" claatexf""sreref">ctx11a> =  a href=dtaeadtexf"khref="+code=tfm" chref=dtaeadtexf"khrepto_ref">err11a>;n
29711a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a laataeadcrypto_spawn" claataeadyptoref">alg11a>. a setkey"+code=spawn" csetkeys="srrrrrref">err11a> =  a algrypt_enqueue" calgpto_ref">ctx11a>-> a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a setkey"+code=spawn" csetkeys="sref">err11a>;n
19811a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a laataeadcrypto_spawn" claataeadyptoref">alg11a>. a setauth1izef="+code=req" csetauth1izes="sref">err11a> =  a algrypt_enqueue" calgpto_ref">ctx11a>-> a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a setauth1izef="+code=req" csetauth1izes="sref">err11a>;n
33911a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a genivcrypto_spawn" cgenivueL339">
33ef">err11a> =  a algrypt_enqueue" calgpto_ref">ctx11a>-> a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a genivcrypto_spawn" cgenivueL3ref">err11a>;n
33911a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a iv1izef="+code=req" civ1izes="srrrrrref">err11a> =  a algrypt_enqueue" calgpto_ref">ctx11a>-> a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a iv1izef="+code=req" civ1izes="sref">err11a>;n
32111a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a maxauth1izef="+code=req" cmaxauth1izes="sref">err11a> =  a algrypt_enqueue" calgpto_ref">ctx11a>-> a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a maxauth1izef="+code=req" cmaxauth1izes="sref">err11a>;n
33211a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a enlaassrypt_enqueue" cenlaasspto_rrrrref">err11a> =  a href=dtaeadtenhref=tenr_decrypt_enqueue" class="saeadtenhref=tenr_decpto_ref">err11a>;n
33911a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a delaassrypt_enqueue" cdelaasspto_rrrrref">err11a> =  a href=dtaeadtdelaasstenr_decrypt_enqueue" class="saeadtdelaasstenr_decpto_ref">err11a>;n
34411a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a givenlaassrypt_enqueue" cgivenlaassueL344ef">err11a> =  a algrypt_enqueue" calgpto_ref">ctx11a>-> a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a givenlaassrypt_enqueue" cgivenlaassueL3ref">err11a>;n
34511a>         a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a givdelaassrypt_enqueue" cgivdelaassueL344ef">err11a> =  a algrypt_enqueue" calgpto_ref">ctx11a>-> a hra_aeadcrypto_spawn" claataeadyptoref">alg11a>. a givdelaassrypt_enqueue" cgivdelaassueL3ref">err11a>;nerr11a>;n
29711a>         a href="+code=err" class="sref">err11a> =  a laass"sd_gistersd_sfance_request_ctx" claass"sd_gistersd_sfanceueL3_tfm_ctx11a>( a tmplf="+code=tfm" clmpls="sr>tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
32811a>        if ( a href="+code=err" class="sr 55">
25511a>{n
31911a>    ">err11a> =  a laass"sdrop+rpaw="+code=spawn" claass"sdrop+rpaw=s="sit_spawn11a>(& a href="+code=ctx" class="sref">ctx11a>-> a aeadtspaw="+code=spawn" caeadtspaw=pto_ref">alg11a>. a bascrypt_enqueue" cbascs="srref">err11a>;nout /a>:n
33121">
321       goto  a kfree"+code=spawn" ckfreepto__tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
33282">
28211a>}n
308 /a> a hre_pre_algrypt_enqueue" chre_pre_algs="sref">out /a>:n
324stance11a> * a haass"smod_precrypto_spawn" class="smod_prepto__tfm_ctx11a>( a algrypt_enqueue" calgpto_rref">err11a>;n
34511a>        return  a href="+code=err" class="sref">err11a>;n
28211a>}n
307 /a>n
2511a>        struct
 a href="+code=cryptd_queue" class="sref">crypt     struct
 a href="+code=queue" class="sreref">err11a>;n
28211a>}n
25411a>static int
 a href="+crecrycryptd_queue" class="screcrypto__11a>        struct
 a lass="shemplcrypto_templaoe" class="+templcrys="sinstance11a> * a tmplf="+code=tfm" clmpls="sr6xit_tfm11a>(struct
 a r4">tef="+code=err" cr4">tes="sinnstance11a> * a tbf="+code=tfm" clbs="sref">err11a>;n
278 /a>{n
33211a>        struct
 a href=o+a>tettype_request_ctx" chref=o+a>tettypes="sinstance11a> * a algirypt_enqueue" calgi"sreref">err11a>;nerr11a>;n
324stance11a> * a algirypt_enqueue" calgi"srei">     struct
 a href=otget+a>tettype_request_ctx" chref=o+get+a>tettypeueL3_tfm_ctx11a>( a tbf="+code=tfm" clbs="srref">err11a>;n
34511a>        if ( a IS_ERRf="+code=tfm" cIS_ERRypto_tfm_ctx11a>( a algirypt_enqueue" calgi"srerr07">
307 /a>n
3366666666611a>        return  a PTR_ERRf="+code=tfm" cPTR_ERRypto_tfm_ctx11a>( a algirypt_enqueue" calgi"srerref">err11a>;n
307 /a>n
321switcha>        if ( a algirypt_enqueue" calgi"sreref">ctx11a>-1a>( a hype_request_ctx" ctypes="sit_spa4stance11a> * a algirypt_enqueue" calgi"sreref">ctx11a>-1a>( a maskf="+code=req" cmasks="sit_spa4stance11a> * a lass="sALG_TYPE_MASKLG_TYPE_MASK" class="sALG_TYPE_MASK"srer 55">
25511a>{n
319casc4stance11a> * a lass="sALG_TYPE_BLKCIPHERf="+code=tfm" class="sALG_TYPE_BLKCIPHERs="sref">out /a>:n
34011a>    11a>        return  a lass="screcry_blkhipheef="+code=err" chass="screcry_blkhipheeueL3_tfm_ctx11a>( a tmplf="+code=tfm" clmpls="sr>tfm_ctx11a>( a hbf="+code=tfm" clbs="sr>t_spawn11a>(& a href="+code=queue" class="srerref">err11a>;n
319casc4stance11a> * a lass="sALG_TYPE_DIGESTf="+code=tfm" class="sALG_TYPE_DIGESTs="sref">out /a>:n
33211a>    11a>        return  a lass="screcry_hashf="+code=err" chass="screcry_hashueL3_tfm_ctx11a>( a tmplf="+code=tfm" clmpls="sr>tfm_ctx11a>( a hbf="+code=tfm" clbs="sr>t_spawn11a>(& a href="+code=queue" class="srerref">err11a>;n
313casc4stance11a> * a lass="sALG_TYPE_AEADLG_TYPE_MASK" class="sALG_TYPE_AEADs="sref">out /a>:n
33211a>    11a>        return  a lass="screcry_aeadcrypto_spawn" class="+crecrytaeadpto__tfm_ctx11a>( a tmplf="+code=tfm" clmpls="sr>tfm_ctx11a>( a hbf="+code=tfm" clbs="sr>t_spawn11a>(& a href="+code=queue" class="srerref">err11a>;n
34582">
28211a>}nerr11a>;n
29711a>   ">err11a> = - a hINVAL"+code=queue" chINVAL"sreref">err11a>;n
28211a>}n
28211a>}n
25711a>static void
 a href="+free"+code=spawn" chref="+freepto__11a>        struct
 a lass="sresfance_request_ctx" chref=otresfancepto_instance11a> * a resf"+code=spawn" ci=sss="sr07">
307 /a>n
278 /a>{n
33211a>        struct
 a href="+insfance_her_request_ctx" chref=dtinsfance_herpto_instance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+insfance_her_request_ctx" chref="+insfance_herueL3_tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
32311a>        struct
 a hash"+insfance_her_request_ctx" chash"+insfance_herpto_instance11a> * a hher_request_ctx" chlass="sref">ctx11a> =  a href="+insfance_her_request_ctx" chref="+insfance_herueL3_tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
32411a>        struct
 a aeadtinsfance_her_request_ctx" caeadtinsfance_herpto_instance11a> * a aeadtl_blkcipher_ctx" caeadtd_bpto_ief">ctx11a> =  a href="+insfance_her_request_ctx" chref="+insfance_herueL3_tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
335 /a>n
2361witcha>        if ( a resf"+code=spawn" ci=sss="sref">ctx11a>-> a algrypt_enqueue" calgpto_ref">alg11a>. a hra_="+code=cra_flags" chra_="+cos="srt_spa4stance11a> * a lass="sALG_TYPE_MASKLG_TYPE_MASK" class="sALG_TYPE_MASK"srer 55">
25511a>{n
327casc4stance11a> * a lass="sALG_TYPE_AHASHLG_TYPE_MASK" class="sALG_TYPE_AHASHs="sref">out /a>:n
328        ">err11a> =  a laass"sdrop+rhashf="+code=err" chass="sdrop+rhashs="sit_spawn11a>(& a hher_request_ctx" chlass="sref">ctx11a>-> a spaw="+code=spawn" cspaw=s="srref">err11a>;n
31911a>    ">err11a> =  a kfree"+code=spawn" ckfreepto__tfm_ctx11a>( a ahashsresfance_request_ctx" cahashsresfanceueL3_tfm_ctx11a>( a resf"+code=spawn" ci=sss="srrref">err11a>;n
34011a>    11a>  ref">err11a>;n
319casc4stance11a> * a lass="sALG_TYPE_AEADLG_TYPE_MASK" class="sALG_TYPE_AEADs="sref">out /a>:n
33211a>    ">err11a> =  a laass"sdrop+rpaw="+code=spawn" claass"sdrop+rpaw=s="sit_spawn11a>(& a aeadtl_blkcipher_ctx" caeadtd_bpto_ref">ctx11a>-> a aeadtspaw="+code=spawn" caeadtspaw=pto_ref">alg11a>. a bascrypt_enqueue" cbascs="srref">err11a>;n
33911a>    ">err11a> =  a kfree"+code=spawn" ckfreepto__tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
33211a>    11a>  ref">err11a>;n
345defaultref">out /a>:n
33666666666">err11a> =  a laass"sdrop+rpaw="+code=spawn" claass"sdrop+rpaw=s="sit_spawn11a>(& a href="+code=ctx" class="sref">ctx11a>-> a spaw="+code=spawn" cspaw=s="srref">err11a>;n
32711a>    ">err11a> =  a kfree"+code=spawn" ckfreepto__tfm_ctx11a>( a resf"+code=spawn" ci=sss="srref">err11a>;n
32882">
28211a>}n
28211a>}n
330 /a>n
2511a>        struct
 a lass="shemplcrypto_templaoe" class="+templcrys="si     struct
 a href="+tmplf="+code=tfm" chref="+tmplpto_ief55">
25511a>{n
332ref">alg11a>. a lassf="+code=tfm" classpto_ief"span="+code=ttring">"ref="c"
202 /a>n
332ref">alg11a>. a crecrycryptd_queue" claecrypto_ref">err11a> =  a href=dtcrecrycryptd_queue" class="screcrypto_r02">
202 /a>n
332ref">alg11a>. a free"+code=spawn" cfreepto_ref">err11a> =  a href=dtfree"+code=spawn" chref="+freepto_r02">
202 /a>n
332ref">alg11a>. a modulef="+code=req" cmodulepto_ref">err11a> =  a THIS_MODULEf="+code=req" cTHIS_MODULEpto_r02">
202 /a>nerr11a>;n
307 /a>n        struct
 a href="+ablkhipheef="+code=err" chass="sablkhipheeueL3instance11a> * a hass="salloctablkhipheef="+code=err" chass="salloctablkhipheepto__co=ss charinstance11a> * a alg_lassf="+code=tfm" calg_lasspto_r02">
202 /a>n
31911a>                                      stance11a> * a uL332" idueLtfm" cu3lueL33ctx11a>-1a>( a hype_request_ctx" ctypes="sr>tfm_ctx11a>( a uL332" idueLtfm" cu3lueL33ctx11a>-1a>( a maskf="+code=req" cmasks="sr07">
307 /a>n
32011a>{n
321charistance11a> * a hass="salg_lassf="+code=tfm" chass="salg_lassueL3[stance11a> * a lass="sMAXsALG_NAMEf="+code=req" class="sMAXsALG_NAMEueL3]ref">err11a>;n
33211a>        struct
 a href=o+href="+code=tfm" chref="+lass="sfnstance11a> * a href="+code=tfm" class="sref">err11a>;nerr11a>;n
32411a>        if ( a snprintfrypt_enqueue" csnprintfpto__tfm_ctx11a>( a hass="salg_lassf="+code=tfm" chass="salg_lassueL3r>static void
 a href="+MAXsALG_NAMEf="+code=req" class="sMAXsALG_NAMEueL3r02">
202 /a>n
32711a>         "span="+code=ttring">"ref="c(%s)" * a alg_lassf="+code=tfm" calg_lasspto_) ef">ef">err11a> =  a lass="sMAXsALG_NAMEf="+code=req" class="sMAXsALG_NAMEueL3r07">
307 /a>n
3366666666611a>        return  a ERR_PTRf="+code=tfm" cERR_PTRpto__">err11a> = - a hINVAL"+code=queue" chINVAL"srerref">err11a>;n
29711a>         a hype_request_ctx" ctypes="sit_spa= ~_tfm_ctx11a>( a lass="sALG_TYPE_MASKLG_TYPE_MASK" class="sALG_TYPE_MASK"sre |4stance11a> * a lass="sALG_GENIVLG_TYPE_MASK" class="sALG_GENIV"srerref">err11a>;n
19811a>         a hype_request_ctx" ctypes="si|ef">err11a> =  a lass="sALG_TYPE_BLKCIPHERf="+code=tfm" class="sALG_TYPE_BLKCIPHERs="sref">err11a>;n
33911a>         a maskf="+code=req" cmasks="sit_spa= ~tfm_ctx11a>( a lass="sALG_TYPE_MASKLG_TYPE_MASK" class="sALG_TYPE_MASK"sreref">err11a>;n
33911a>         a maskf="+code=req" cmasks="si|ef_tfm_ctx11a>( a lass="sALG_GENIVLG_TYPE_MASK" class="sALG_GENIV"sre |4stance11a> * a lass="sALG_TYPE_BLKCIPHER_MASKLG_TYPE_MASK" class="sALG_TYPE_BLKCIPHER_MASK"srerref">err11a>;n
32111a>         a href="+code=tfm" class="sf">child11a> =  a hass="+alloctbascrypt_enqueue" chass="+alloctbascpto__tfm_ctx11a>( a hass="salg_lassf="+code=tfm" chass="salg_lassueL3r>static void
 a hype_request_ctx" ctypes="sr>tfm_ctx11a>( a maskf="+code=req" cmasks="srref">err11a>;n
33211a>        if ( a IS_ERRf="+code=tfm" cIS_ERRypto_tfm_ctx11a>( a href="+code=tfm" class="srref">err11a>;n
33911a>    11a>        return  a ERR_CASTf="+code=tfm" cERR_CASTypto_tfm_ctx11a>( a href="+code=tfm" class="srref">err11a>;n
32411a>        if ( a href="+code=tfm" class="sref">ctx11a>-> a __lattalgrypt_enqueue" c__lattalgs="sref">ctx11a>-> a hra_modulef="+code=req" chra_moduleueL32!ef">err11a> =  a THIS_MODULEf="+code=req" cTHIS_MODULEpto_r 55">
25511a>{n
32711a>    child11a> =  a hass="+free_href="+code=tfm" chref="+free_hreypto_tfm_ctx11a>( a href="+code=tfm" class="srref">err11a>;n
3366666666611a>        return  a ERR_PTRf="+code=tfm" cERR_PTRpto__">err11a> = - a hINVAL"+code=queue" chINVAL"srerref">err11a>;n
29782">
28211a>}n
338 /a>n
31911a>        return  a __lass="sablkhiphee_casf"+code=spawn" c__lass="sablkhiphee_casfypto_tfm_ctx11a>( a __lass=osablkhiphee_casf"+code=spawn" c__lass=osablkhiphee_casfypto_tfm_ctx11a>( a href="+code=tfm" class="srrref">err11a>;n
28211a>}nerr11a> = - a hXPORT_SYMBOL_GPL"+code=queue" chXPORT_SYMBOL_GPLpto__tfm_ctx11a>( a hass="salloctablkhipheef="+code=err" chass="salloctablkhipheepto_rref">err11a>;n
202 /a>n        struct
 a href=o+blkhipheef="+code=err" chass=o_blkhipheeueL3instance11a> * a hass="sablkhiphee_cref="+code=child" class="sablkhiphee_cref=pto__54a>        struct
 a href="+ablkhipheef="+code=err" chass="sablkhipheeueL3instance11a> * a href="+code=tfm" class="sref">tfm11a>)n
25511a>{n
34554a>        struct
 a href="+blkhiphee_cer_request_ctx" chref=dtblkhiphee_cerueL3instance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+ablkhiphee_cer_request_ctx" chref="+ablkhiphee_cers="sit_spawn11a>(& a href="+code=tfm" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="srref">err11a>;n
30611a>   wn11a>(& a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sreref">err11a>;n
28211a>}nerr11a> = - a hXPORT_SYMBOL_GPL"+code=queue" chXPORT_SYMBOL_GPLpto__tfm_ctx11a>( a hass="sablkhiphee_cref="+code=child" class="sablkhiphee_cref=pto_rref">err11a>;n
28211a>}nstatic void
 a href="+free+ablkhipheef="+code=err" chass="sfree+ablkhipheepto__54a>        struct
 a href="+ablkhipheef="+code=err" chass="sablkhipheeueL3instance11a> * a href="+code=tfm" class="sref">tfm11a>)n
278 /a>{n
33211a>         a href="+free_ablkhipheef="+code=err" chass="+free_ablkhiphees="sit_spawn11a>(& a href="+code=tfm" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="srref">err11a>;n
28211a>}nerr11a> = - a hXPORT_SYMBOL_GPL"+code=queue" chXPORT_SYMBOL_GPLpto__tfm_ctx11a>( a hass="sfree+ablkhipheef="+code=err" chass="sfree+ablkhipheepto_rref">err11a>;n
335 /a>n        struct
 a href="+ahashf="+code=err" chass="sahashs="sinstance11a> * a hass="salloctahashf="+code=err" chass="salloctahashpto__co=ss charinstance11a> * a alg_lassf="+code=tfm" calg_lasspto_r02">
202 /a>n
32711a>                            stance11a> * a uL332" idueLtfm" cu3lueL33ctx11a>-1a>( a hype_request_ctx" ctypes="sr>tfm_ctx11a>( a uL332" idueLtfm" cu3lueL33ctx11a>-1a>( a maskf="+code=req" cmasks="sr07">
307 /a>n
32011a>{n
319charistance11a> * a hass="salg_lassf="+code=tfm" chass="salg_lassueL3[stance11a> * a lass="sMAXsALG_NAMEf="+code=req" class="sMAXsALG_NAMEueL3]ref">err11a>;n
34011a>        struct
 a href="+ahashf="+code=err" chass=osahashs="sinstance11a> * a href="+code=tfm" class="sref">err11a>;n
301 /a>n
33211a>        if ( a snprintfrypt_enqueue" csnprintfpto__tfm_ctx11a>( a hass="salg_lassf="+code=tfm" chass="salg_lassueL3r>static void
 a href="+MAXsALG_NAMEf="+code=req" class="sMAXsALG_NAMEueL3r02">
202 /a>n
33911a>         sspan="+code=ttring">"ref="c(%s)" * a alg_lassf="+code=tfm" calg_lasspto_) ef">ef">err11a> =  a lass="sMAXsALG_NAMEf="+code=req" class="sMAXsALG_NAMEueL3r07">
307 /a>n
33211a>    11a>        return  a ERR_PTRf="+code=tfm" cERR_PTRpto__">err11a> = - a hINVAL"+code=queue" chINVAL"srerref">err11a>;n
34511a>         a href="+code=tfm" class="sf">child11a> =  a hass="+alloctahashf="+code=err" chass=osalloctahashpto__tfm_ctx11a>( a hass="salg_lassf="+code=tfm" chass="salg_lassueL3r>static void
 a hype_request_ctx" ctypes="sr>tfm_ctx11a>( a maskf="+code=req" cmasks="srref">err11a>;n
33611a>        if ( a IS_ERRf="+code=tfm" cIS_ERRypto_tfm_ctx11a>( a href="+code=tfm" class="srref">err11a>;n
32711a>    11a>        return  a ERR_CASTf="+code=tfm" cERR_CASTypto_tfm_ctx11a>( a href="+code=tfm" class="srref">err11a>;n
32811a>        if ( a href="+code=tfm" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a __lattalgrypt_enqueue" c__lattalgs="sref">ctx11a>-> a hra_modulef="+code=req" chra_moduleueL32!ef">err11a> =  a THIS_MODULEf="+code=req" cTHIS_MODULEpto_r 55">
25511a>{n
31911a>    ">err11a> =  a laass"sfree+ahashf="+code=err" chass=osfree+ahashypto_tfm_ctx11a>( a href="+code=tfm" class="srref">err11a>;n
34011a>    11a>        return  a ERR_PTRf="+code=tfm" cERR_PTRpto__">err11a> = - a hINVAL"+code=queue" chINVAL"srerref">err11a>;n
32182">
28211a>}n
202 /a>n
33911a>        return  a __lass="sahashscasf"+code=spawn" c__lass="sahashscasfypto_tfm_ctx11a>( a href="+code=tfm" class="srref">err11a>;n
28211a>}nerr11a> = - a hXPORT_SYMBOL_GPL"+code=queue" chXPORT_SYMBOL_GPLpto__tfm_ctx11a>( a hass="salloctahashf="+code=err" chass="salloctahashpto_rref">err11a>;nerr11a>;n        struct
 a href="+rhashf="+code=err" chass="sshashs="sinstance11a> * a hass="sahashscref="+code=child" class="sahashscref=pto__54a>        struct
 a href="+ahashf="+code=err" chass="sahashs="sinstance11a> * a href="+code=tfm" class="sref">tfm11a>)n
32011a>{n
27911a>        struct
 a hass="shashscer_request_ctx" chref=dthashscerueL3instance11a> * a href="+code=ctx" class="sref">ctx11a> =  a href="+ahashscer_request_ctx" chref="+ahashscers="sit_spawn11a>(& a href="+code=tfm" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="srref">err11a>;n
330 /a>n
31911a>   wn11a>(& a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sreref">err11a>;n
28211a>}n
308 /a> a hXPORT_SYMBOL_GPL"+code=queue" chXPORT_SYMBOL_GPLpto__tfm_ctx11a>( a hass="sahashscref="+code=child" class="sahashscref=pto_rref">err11a>;nerr11a>;n        struct
 a shash_descrypt_enqueue" cshash_descs="sinstance11a> * a hass="sshash_descrypt_enqueue" chass="sshash_descpto__54a>        struct
 a ahashsrequesf"+code=spawn" cahashsrequesfs="sinstance11a> * a req"+code=spawn" creqs="sref">tfm11a>)n
32011a>{n
29711a>        struct
 a hass="shashsrequesfscer_request_ctx" chref=dthashsrequesfscers="sinstance11a> * a rcer_request_ctx" crlass="sref">ctx11a> =  a ahashsrequesfscer_request_ctx" cahashsrequesfscerpto__tfm_ctx11a>( a req"+code=spawn" creqs="srref">err11a>;n
31911a>   t_spawn11a>(& a rcer_request_ctx" crlass="sref">ctx11a>-> a descrypt_enqueue" cdescpto_ref">err11a>;n
28211a>}n( a hass="sshash_descrypt_enqueue" chass="sshash_descpto_rref">err11a>;n
301 /a>nstatic void
 a href="+free+ahashf="+code=err" chass="sfree+ahashypto_54a>        struct
 a href="+ahashf="+code=err" chass="sahashs="sinstance11a> * a href="+code=tfm" class="sref">tfm11a>)n
32011a>{n
324">err11a> =  a laass"sfree+ahashf="+code=err" chass=osfree+ahashypto_t_spawn11a>(& a href="+code=tfm" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="srref">err11a>;n
28211a>}nerr11a> = - a hXPORT_SYMBOL_GPL"+code=queue" chXPORT_SYMBOL_GPLpto__tfm_ctx11a>( a hass="sfree+ahashf="+code=err" chass="sfree+ahashyptorref">err11a>;n
307 /a>n        struct
 a href="+aeadcrypto_spawn" class="+aeadpto_instance11a> * a hass="salloctaeadcrypto_spawn" class="+alloctaeadpto__co=ss charinstance11a> * a alg_lassf="+code=tfm" calg_lasspto_r02">
202 /a>n
31911a>                                      stance11a> * a uL332" idueLtfm" cu3lueL33ctx11a>-1a>( a hype_request_ctx" ctypes="sr>tfm_ctx11a>( a uL332" idueLtfm" cu3lueL33ctx11a>-1a>( a maskf="+code=req" cmasks="sr07">
307 /a>n
32011a>{n
321charistance11a> * a hass="salg_lassf="+code=tfm" chass="salg_lassueL3[stance11a> * a lass="sMAXsALG_NAMEf="+code=req" class="sMAXsALG_NAMEueL3]ref">err11a>;n
33211a>        struct
 a href=o+aeadcrypto_spawn" class=o+aeadpto_instance11a> * a href="+code=tfm" class="sref">err11a>;nerr11a>;n
32411a>        if ( a snprintfrypt_enqueue" csnprintfpto__tfm_ctx11a>( a hass="salg_lassf="+code=tfm" chass="salg_lassueL3r>static void
 a href="+MAXsALG_NAMEf="+code=req" class="sMAXsALG_NAMEueL3r02">
202 /a>n
32711a>         sspan="+code=ttring">"ref="c(%s)" * a alg_lassf="+code=tfm" calg_lasspto_) ef">ef">err11a> =  a lass="sMAXsALG_NAMEf="+code=req" class="sMAXsALG_NAMEueL3r07">
307 /a>n
3366666666611a>        return  a ERR_PTRf="+code=tfm" cERR_PTRpto__">err11a> = - a hINVAL"+code=queue" chINVAL"srerref">err11a>;n
29711a>         a href="+code=tfm" class="sf">child11a> =  a hass="+alloctaeadcrypto_spawn" class=o+alloctaeadpto__tfm_ctx11a>( a hass="salg_lassf="+code=tfm" chass="salg_lassueL3r>static void
 a hype_request_ctx" ctypes="sr>tfm_ctx11a>( a maskf="+code=req" cmasks="srref">err11a>;n
32811a>        if ( a IS_ERRf="+code=tfm" cIS_ERRypto_tfm_ctx11a>( a href="+code=tfm" class="srref">err11a>;n
31911a>    11a>        return  a ERR_CASTf="+code=tfm" cERR_CASTypto_tfm_ctx11a>( a href="+code=tfm" class="srref">err11a>;n
32811a>        if ( a href="+code=tfm" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="sref">alg11a>. a __lattalgrypt_enqueue" c__lattalgs="sref">ctx11a>-> a hra_modulef="+code=req" chra_moduleueL32!ef">err11a> =  a THIS_MODULEf="+code=req" cTHIS_MODULEpto_r 55">
25511a>;n
33121">
321       goto  a hass=osfree+aeadcrypto_spawn" class=o+free+aeadypto_tfm_ctx11a>( a href="+code=tfm" class="srref">err11a>;n
3326666666611a>        return  a ERR_PTRf="+code=tfm" cERR_PTRpto__">err11a> = - a hINVAL"+code=queue" chINVAL"srerref">err11a>;n
33282">
28211a>}n
33211a>        return  a __lass="saeadtdasf"+code=spawn" c__lass="saeadtdasfypto_tfm_ctx11a>( a href="+code=tfm" class="srref">err11a>;n
28211a>}nerr11a> = - a hXPORT_SYMBOL_GPL"+code=queue" chXPORT_SYMBOL_GPLpto__tfm_ctx11a>( a hass="salloctaeadcrypto_spawn" class="+alloctaeadpto_rref">err11a>;n
307 /a>n        struct
 a href=o+aeadcrypto_spawn" class=o+aeadpto_instance11a> * a lass="saeadtdref="+code=child" class="saeadtdref=ypto_54a>        struct
 a href="+aeadcrypto_spawn" class="+aeadpto_instance11a> * a href="+code=tfm" class="sref">tfm11a>)n
25511a>;n
34011a>        struct
 a href="saeadtder_request_ctx" chref=dtaeadtd_bpto_instance11a> * a href="+code=ctx" class="sref">err11a>;n
32111a>         a href="+code=ctx" class="sref">ctx11a> =  a href="+aeadtder_request_ctx" chref=otaeadtd_bpto__t_spawn11a>(& a href="+code=tfm" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="srref">err11a>;n
33211a>   wn11a>(& a href="+code=ctx" class="sref">ctx11a>-> a href="+code=child" class="sreref">err11a>;n
28211a>}nerr11a> = - a hXPORT_SYMBOL_GPL"+code=queue" chXPORT_SYMBOL_GPLpto__tfm_ctx11a>( a hass="saeadtdref="+code=child" class="saeadtdref=yptorref">err11a>;n
335 /a>nstatic void
 a href="+free+aeadcrypto_spawn" class="+free+aeadypto_54a>        struct
 a href="+aeadcrypto_spawn" class="+aeadpto_instance11a> * a href="+code=tfm" class="sref">tfm11a>)n
25511a>;n
19811a>         a hass=osfree+aeadcrypto_spawn" class=o+free+aeadypto_t_spawn11a>(& a href="+code=tfm" class="sref">ctx11a>-> a bascrypt_enqueue" cbascs="srref">err11a>;n
28211a>}n( a hass="sfree+aeadcrypto_spawn" class="+free+aeadyptorref">err11a>;n
301 /a>n
25411a>static int
 a __inif"+code=spawn" c__inifueL33ctx11a>-1a>( a lass="+inif"+code=spawn" class="+inifpto__711aref">tfm11a>)n
32011a>{n
324111a>static int
 a href="+code=err" class="sref">err11a>;n
335 /a>n
336>static int
 a href="+code=err" class="sref">err11a> =  a href=dtinif+code=cryptd_queue" class="sinif+code=ypto_t_spawn11a>(& a href="+code=queue" class="srer>static void
 a href=DsMAXsCPU_QLENf="+code=req" class=DsMAXsCPU_QLENyptorref">err11a>;n
29711a>        if ( a href="+code=err" class="sref">tfm11a>)n
328        11a>        return  a href="+code=err" class="sref">err11a>;n
28211a>}n
33911a>         a href="+code=err" class="sref">err11a> =  a href=o_registershemplcrypto_templaoe" class="+registershemplcryypto_t_spawn11a>(& a lass="stmplf="+code=tfm" chref="+tmplpto_rref">err11a>;n
29711a>        if ( a href="+code=err" class="sref">tfm11a>)n
33211a>    ">err11a> =  a laass"+fini+code=cryptd_queue" class="sfini+code=ypto_t_spawn11a>(& a href="+code=queue" class="srerref">err11a>;nerr11a>;n
33211a>        return  a href="+code=err" class="sref">err11a>;n
28211a>}nerr11a>;n
25711a>static void
 a __exif"+code=spawn" c__exifueL33ctx11a>-1a>( a lass="+exif"+code=spawn" class="+exifpto__711aref">tfm11a>)n
32011a>{n
33911a>         a laass"+fini+code=cryptd_queue" class="sfini+code=ypto_t_spawn11a>(& a href="+code=queue" class="srerref">err11a>;n
33911a>         a lass="+unregistershemplcrypto_templaoe" class="+unregistershemplcryypto_t_spawn11a>(& a lass="stmplf="+code=tfm" chref="+tmplpto_rref">err11a>;n
28211a>}n
202 /a>n
308 /a> a subsyssinifcallf="+code=tfm" csubsyssinifcallpto__tfm_ctx11a>( a hass="sinif"+code=spawn" class="+inifpto_rref">err11a>;nerr11a> = - a module+exif"+code=spawn" cmodule+exifpto__tfm_ctx11a>( a hass="sexif"+code=spawn" class="+exifpto_rref">err11a>;n
335 /a>nerr11a> = - a MODULE_LICENSEf="+code=req" cMODULE_LICENSEpto__tspan="+code=ttring">"GPL"err11a>;nerr11a> = - a MODULE_DESCRIPTIONf="+code=req" cMODULE_DESCRIPTIONpto__tspan="+code=ttring">"Software async >;nerr11a>;n


The original LXR software by thc4stance11ahttp://sourceforge.net/projects/lxr">LXR communify"srer>this experimental version by stance11amailto:lxr@258ux.no">lxr@258ux.nos="sr
lxr.258ux.no kindly hosted by stance11ahttp://www.redpill-258pro.no">Redpill L58pro AS"srer>provider of L58ux co=sulting and oper"> o=s services since 1995.