linux/crypto/api.c
<<
hidden" nam> navtarget" > "> text" nam> search" id search"> submit">Search hidden" nam> ajax_lookup" id ajax_lookup" > ">e 6div id file_contents"u
 L1">. .16/a>6spal class="comment">/*6/spalue
 L2">. .26/a>6spal class="comment"> * Scatterlist Cryptographic API.6/spalue
 L3">. .36/a>6spal class="comment"> *6/spalue
 L4">. .46/a>6spal class="comment"> * Copyright (c) 2002 Jam>s Morris <jmorris@intercode.com.au>6/spalue
 L5">. .56/a>6spal class="comment"> * Copyright (c) 2002 David S. Miller (davem@redhat.com)6/spalue
 L6">. .66/a>6spal class="comment"> * Copyright (c) 2005 Herbert Xu <herbert@gondor.apala.org.au>6/spalue
 L7">. .76/a>6spal class="comment"> *6/spalue
 L8">. .86/a>6spal class="comment"> * Por vals derived from Cryptoapi, by Alexander Kjeldaas <astor@fast.no>6/spalue
 L9">. .96/a>6spal class="comment"> * and Nettle, by Niels Möller.6/spalue
 L10">. optia>6spal class="comment"> *6/spalue
 L11">. 116/a>6spal class="comment"> * This program is free software; you cal redistribute it and/or modify it6/spalue
 L12">. 126/a>6spal class="comment"> * under the terms of the GNU General Public License as published by the Free6/spalue
 L13">. 136/a>6spal class="comment"> * Software Founda val; either vers.12"2 of the License, or (at your on val)6/spalue
 L14">. 146/a>6spal class="comment"> * any later vers.12.6/spalue
 L15">. 156/a>6spal class="comment"> *6/spalue
 L16">. 166/a>6spal class="comment"> */6/spalue
 L17">. 176/a>e
 L18">. 186/a>#include <linux/err.h6/a>>e
 L19">. 196/a>#include <linux/errno.h6/a>>e
 L20">. 206/a>#include <linux/kernel.h6/a>>e
 L21">. 216/a>#include <linux/kmod.h6/a>>e
 L22">. 226/a>#include <linux/module.h6/a>>e
 L23">. 236/a>#include <linux/param.h6/a>>e
 L24">. 246/a>#include <linux/sched.h6/a>>e
 L25">. 256/a>#include <linux/slab.h6/a>>e
 L26">. 266/a>#include <linux/string.h6/a>>e
 L27">. 276/a>#include "internal.h6/a>"e
 L28">. 286/a>e
 L29">. 296/a>6a href="+code=LIST_HEAD" class="sref">LIST_HEAD6/a>(6a href="+code=crypto_alg_list" class="sref">crypto_alg_list6/a>);e
 L30">. 306/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_alg_list" class="sref">crypto_alg_list6/a>);e
 L31">. 316/a>6a href="+code=DECLARE_RWSEM" class="sref">DECLARE_RWSEM6/a>(6a href="+code=crypto_alg_sem" class="sref">crypto_alg_sem6/a>);e
 L32">. 326/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_alg_sem" class="sref">crypto_alg_sem6/a>);e
 L33">. 336/a>e
 L34">. 346/a>6a href="+code=BLOCKING_NOTIFIER_HEAD" class="sref">BLOCKING_NOTIFIER_HEAD6/a>(6a href="+code=crypto_chain" class="sref">crypto_chain6/a>);e
 L35">. 356/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_chain" class="sref">crypto_chain6/a>);e
 L36">. 366/a>e
 L37">. 376/a>static 6a href="+code=inline" class="sref">inline6/a> struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=crypto_alg_get" class="sref">crypto_alg_get6/a>(struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>)e
 L38">. 386/a>{e
 L39">. 396/a>        6a href="+code=atomic_inc" class="sref">atomic_inc6/a>(&6a href="+code=alg" class="sref">alg6/a>->6a href="+code=cra_refcnt" class="sref">cra_refcnt6/a>);e
 L40">. 406/a>        return 6a href="+code=alg" class="sref">alg6/a>;e
 L41">. 416/a>}e
 L42">. 426/a>e
 L43">. 436/a>struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=crypto_mod_get" class="sref">crypto_mod_get6/a>(struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>)e
 L44">. 446/a>{e
 L45">. 456/a>        return 6a href="+code=try_module_get" class="sref">try_module_get6/a>(6a href="+code=alg" class="sref">alg6/a>->6a href="+code=cra_module" class="sref">cra_module6/a>) ? 6a href="+code=crypto_alg_get" class="sref">crypto_alg_get6/a>(6a href="+code=alg" class="sref">alg6/a>) : 6a href="+code=NULL" class="sref">NULL6/a>;e
 L46">. 466/a>}e
 L47">. 476/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_mod_get" class="sref">crypto_mod_get6/a>);e
 L48">. 486/a>e
 L49">. 496/a>void 6a href="+code=crypto_mod_put" class="sref">crypto_mod_put6/a>(struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>)e
 L50">. 506/a>{e
 L51">. 516/a>        struct 6a href="+code=module" class="sref">module6/a> *6a href="+code=module" class="sref">module6/a> = 6a href="+code=alg" class="sref">alg6/a>->6a href="+code=cra_module" class="sref">cra_module6/a>;e
 L52">. 526/a>e
 L53">. 536/a>        6a href="+code=crypto_alg_put" class="sref">crypto_alg_put6/a>(6a href="+code=alg" class="sref">alg6/a>);e
 L54">. 546/a>        6a href="+code=module_put" class="sref">module_put6/a>(6a href="+code=module" class="sref">module6/a>);e
 L55">. 556/a>}e
 L56">. 566/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_mod_put" class="sref">crypto_mod_put6/a>);e
 L57">. 576/a>e
 L58">. 586/a>static 6a href="+code=inline" class="sref">inline6/a> int 6a href="+code=crypto_is_test_larval" class="sref">crypto_is_test_larval6/a>(struct 6a href="+code=crypto_larval" class="sref">crypto_larval6/a> *6a href="+code=larval" class="sref">larval6/a>)e
 L59">. 596/a>{e
 L60">. 606/a>        return 6a href="+code=larval" class="sref">larval6/a>->6a href="+code=alg" class="sref">alg6/a>.6a href="+code=cra_driver_nam>" class="sref">cra_driver_nam>6/a>[0];e
 L61">. 616/a>}e
 L62">. 626/a>e
 L63">. 636/a>static struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=__crypto_alg_lookup" class="sref">__crypto_alg_lookup6/a>(const char *6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=typ>" class="sref">typ>6/a>,e
 L64">. 646/a>                                              6a href="+code=u32" class="sref">u326/a> 6a href="+code=mask" class="sref">mask6/a>)e
 L65">. 656/a>{e
 L66">. 666/a>        struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=q" class="sref">q6/a>, *6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=NULL" class="sref">NULL6/a>;e
 L67">. 676/a>        int 6a href="+code=best" class="sref">best6/a> = -2;e
 L68">. 686/a>e
 L69">. 696/a>        6a href="+code=list_for_each_entry" class="sref">list_for_each_entry6/a>(6a href="+code=q" class="sref">q6/a>, &6a href="+code=crypto_alg_list" class="sref">crypto_alg_list6/a>, 6a href="+code=cra_list" class="sref">cra_list6/a>) {e
 L70">. 706/a>                int 6a href="+code=exact" class="sref">exact6/a>, 6a href="+code=fuzzy" class="sref">fuzzy6/a>;e
 L71">. 716/a>e
 L72">. 726/a>                if (6a href="+code=crypto_is_moribund" class="sref">crypto_is_moribund6/a>(6a href="+code=q" class="sref">q6/a>))e
 L73">. 736/a>                        continue;e
 L74">. 746/a>e
 L75">. 756/a>                if ((6a href="+code=q" class="sref">q6/a>->6a href="+code=cra_flags" class="sref">cra_flags6/a> ^ 6a href="+code=typ>" class="sref">typ>6/a>) & 6a href="+code=mask" class="sref">mask6/a>)e
 L76">. 766/a>                        continue;e
 L77">. 776/a>e
 L78">. 786/a>                if (6a href="+code=crypto_is_larval" class="sref">crypto_is_larval6/a>(6a href="+code=q" class="sref">q6/a>) &&e
 L79">. 796/a>                    !6a href="+code=crypto_is_test_larval" class="sref">crypto_is_test_larval6/a>((struct 6a href="+code=crypto_larval" class="sref">crypto_larval6/a> *)6a href="+code=q" class="sref">q6/a>) &&e
 L80">. 806/a>                    ((struct 6a href="+code=crypto_larval" class="sref">crypto_larval6/a> *)6a href="+code=q" class="sref">q6/a>)->6a href="+code=mask" class="sref">mask6/a> != 6a href="+code=mask" class="sref">mask6/a>)e
 L81">. 816/a>                        continue;e
 L82">. 826/a>e
 L83">. 836/a>                6a href="+code=exact" class="sref">exact6/a> = !6a href="+code=strcmp" class="sref">strcmp6/a>(6a href="+code=q" class="sref">q6/a>->6a href="+code=cra_driver_nam>" class="sref">cra_driver_nam>6/a>, 6a href="+code=nam>" class="sref">nam>6/a>);e
 L84">. 846/a>                6a href="+code=fuzzy" class="sref">fuzzy6/a> = !6a href="+code=strcmp" class="sref">strcmp6/a>(6a href="+code=q" class="sref">q6/a>->6a href="+code=cra_nam>" class="sref">cra_nam>6/a>, 6a href="+code=nam>" class="sref">nam>6/a>);e
 L85">. 856/a>                if (!6a href="+code=exact" class="sref">exact6/a> && !(6a href="+code=fuzzy" class="sref">fuzzy6/a> && 6a href="+code=q" class="sref">q6/a>->6a href="+code=cra_priority" class="sref">cra_priority6/a> > 6a href="+code=best" class="sref">best6/a>))e
 L86">. 866/a>                        continue;e
 L87">. 876/a>e
 L88">. 886/a>                if (6a href="+code=unlikely" class="sref">unlikely6/a>(!6a href="+code=crypto_mod_get" class="sref">crypto_mod_get6/a>(6a href="+code=q" class="sref">q6/a>)))e
 L89">. 896/a>                        continue;e
 L90">. 906/a>e
 L91">. 916/a>                6a href="+code=best" class="sref">best6/a> = 6a href="+code=q" class="sref">q6/a>->6a href="+code=cra_priority" class="sref">cra_priority6/a>;e
 L92">. 926/a>                if (6a href="+code=alg" class="sref">alg6/a>)e
 L93">. 936/a>                        6a href="+code=crypto_mod_put" class="sref">crypto_mod_put6/a>(6a href="+code=alg" class="sref">alg6/a>);e
 L94">. 946/a>                6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=q" class="sref">q6/a>;e
 L95">. 956/a>e
 L96">. 966/a>                if (6a href="+code=exact" class="sref">exact6/a>)e
 L97">. 976/a>                        break;e
 L98">. 986/a>        }e
 L99">. 996/a>e
 L100">.1006/a>        return 6a href="+code=alg" class="sref">alg6/a>;e
 L101">.1016/a>}e
 L102">.1026/a>e
 L103">.1036/a>static void 6a href="+code=crypto_larval_destroy" class="sref">crypto_larval_destroy6/a>(struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>)e
 L104">.1046/a>{e
 L105">.1056/a>        struct 6a href="+code=crypto_larval" class="sref">crypto_larval6/a> *6a href="+code=larval" class="sref">larval6/a> = (void *)6a href="+code=alg" class="sref">alg6/a>;e
 L106">.1066/a>e
 L107">.1076/a>        6a href="+code=BUG_ON" class="sref">BUG_ON6/a>(!6a href="+code=crypto_is_larval" class="sref">crypto_is_larval6/a>(6a href="+code=alg" class="sref">alg6/a>));e
 L108">.1086/a>        if (6a href="+code=larval" class="sref">larval6/a>->6a href="+code=adult" class="sref">adult6/a>)e
 L109">.1096/a>                6a href="+code=crypto_mod_put" class="sref">crypto_mod_put6/a>(6a href="+code=larval" class="sref">larval6/a>->6a href="+code=adult" class="sref">adult6/a>);e
 L110">.1106/a>        6a href="+code=kfree" class="sref">kfree6/a>(6a href="+code=larval" class="sref">larval6/a>);e
 L111">.1116/a>}e
 L112">.1126/a>e
 L113">.1136/a>struct 6a href="+code=crypto_larval" class="sref">crypto_larval6/a> *6a href="+code=crypto_larval_alloc" class="sref">crypto_larval_alloc6/a>(const char *6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=mask" class="sref">mask6/a>)e
 L114">.1146/a>{e
 L115">.1156/a>        struct 6a href="+code=crypto_larval" class="sref">crypto_larval6/a> *6a href="+code=larval" class="sref">larval6/a>;e
 L116">.1166/a>e
 L117">.1176/a>        6a href="+code=larval" class="sref">larval6/a> = 6a href="+code=kzalloc" class="sref">kzalloc6/a>(sizeof(*6a href="+code=larval" class="sref">larval6/a>), 6a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL6/a>);e
 L118">.1186/a>        if (!6a href="+code=larval" class="sref">larval6/a>)e
 L119">.1196/a>                return 6a href="+code=ERR_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=ENOMEM" class="sref">ENOMEM6/a>);e
 L120">.1206/a>e
 L121">.1216/a>        6a href="+code=larval" class="sref">larval6/a>->6a href="+code=mask" class="sref">mask6/a> = 6a href="+code=mask" class="sref">mask6/a>;e
 L122">.1226/a>        6a href="+code=larval" class="sref">larval6/a>->6a href="+code=alg" class="sref">alg6/a>.6a href="+code=cra_flags" class="sref">cra_flags6/a> = 6a href="+code=CRYPTO_ALG_LARVAL" class="sref">CRYPTO_ALG_LARVAL6/a> | 6a href="+code=typ>" class="sref">typ>6/a>;e
 L123">.1236/a>        6a href="+code=larval" class="sref">larval6/a>->6a href="+code=alg" class="sref">alg6/a>.6a href="+code=cra_priority" class="sref">cra_priority6/a> = -1;e
 L124">.1246/a>        6a href="+code=larval" class="sref">larval6/a>->6a href="+code=alg" class="sref">alg6/a>.6a href="+code=cra_destroy" class="sref">cra_destroy6/a> = 6a href="+code=crypto_larval_destroy" class="sref">crypto_larval_destroy6/a>;e
 L125">.1256/a>e
 L126">.1266/a>        6a href="+code=strlcpy" class="sref">strlcpy6/a>(6a href="+code=larval" class="sref">larval6/a>->6a href="+code=alg" class="sref">alg6/a>.6a href="+code=cra_nam>" class="sref">cra_nam>6/a>, 6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=CRYPTO_MAX_ALG_NAME" class="sref">CRYPTO_MAX_ALG_NAME6/a>);e
 L127">.1276/a>        6a href="+code=init_comple val" class="sref">init_comple val6/a>(&6a href="+code=larval" class="sref">larval6/a>->6a href="+code=comple val" class="sref">comple val6/a>);e
 L128">.1286/a>e
 L129">.1296/a>        return 6a href="+code=larval" class="sref">larval6/a>;e
 L130">.1306/a>}e
 L131">.1316/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_larval_alloc" class="sref">crypto_larval_alloc6/a>);e
 L132">.1326/a>e
 L133">.1336/a>static struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=crypto_larval_add" class="sref">crypto_larval_add6/a>(const char *6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=typ>" class="sref">typ>6/a>,e
 L134">.1346/a>                                            6a href="+code=u32" class="sref">u326/a> 6a href="+code=mask" class="sref">mask6/a>)e
 L135">.1356/a>{e
 L136">.1366/a>        struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>;e
 L137">.1376/a>        struct 6a href="+code=crypto_larval" class="sref">crypto_larval6/a> *6a href="+code=larval" class="sref">larval6/a>;e
 L138">.1386/a>e
 L139">.1396/a>        6a href="+code=larval" class="sref">larval6/a> = 6a href="+code=crypto_larval_alloc" class="sref">crypto_larval_alloc6/a>(6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mask6/a>);e
 L140">.1406/a>        if (6a href="+code=IS_ERR" class="sref">IS_ERR6/a>(6a href="+code=larval" class="sref">larval6/a>))e
 L141">.1416/a>                return 6a href="+code=ERR_CAST" class="sref">ERR_CAST6/a>(6a href="+code=larval" class="sref">larval6/a>);e
 L142">.1426/a>e
 L143">.1436/a>        6a href="+code=atomic_set" class="sref">atomic_set6/a>(&6a href="+code=larval" class="sref">larval6/a>->6a href="+code=alg" class="sref">alg6/a>.6a href="+code=cra_refcnt" class="sref">cra_refcnt6/a>, 2);e
 L144">.1446/a>e
 L145">.1456/a>        6a href="+code=down_writ>" class="sref">down_writ>6/a>(&6a href="+code=crypto_alg_sem" class="sref">crypto_alg_sem6/a>);e
 L146">.1466/a>        6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=__crypto_alg_lookup" class="sref">__crypto_alg_lookup6/a>(6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mask6/a>);e
 L147">.1476/a>        if (!6a href="+code=alg" class="sref">alg6/a>) {e
 L148">.1486/a>                6a href="+code=alg" class="sref">alg6/a> = &6a href="+code=larval" class="sref">larval6/a>->6a href="+code=alg" class="sref">alg6/a>;e
 L149">.1496/a>                6a href="+code=list_add" class="sref">list_add6/a>(&6a href="+code=alg" class="sref">alg6/a>->6a href="+code=cra_list" class="sref">cra_list6/a>, &6a href="+code=crypto_alg_list" class="sref">crypto_alg_list6/a>);e
 L150">.1506/a>        }e
 L151">.1516/a>        6a href="+code=up_writ>" class="sref">up_writ>6/a>(&6a href="+code=crypto_alg_sem" class="sref">crypto_alg_sem6/a>);e
 L152">.1526/a>e
 L153">.1536/a>        if (6a href="+code=alg" class="sref">alg6/a> != &6a href="+code=larval" class="sref">larval6/a>->6a href="+code=alg" class="sref">alg6/a>)e
 L154">.1546/a>                6a href="+code=kfree" class="sref">kfree6/a>(6a href="+code=larval" class="sref">larval6/a>);e
 L155">.1556/a>e
 L156">.1566/a>        return 6a href="+code=alg" class="sref">alg6/a>;e
 L157">.1576/a>}e
 L158">.1586/a>e
 L159">.1596/a>void 6a href="+code=crypto_larval_kill" class="sref">crypto_larval_kill6/a>(struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>)e
 L160">.1606/a>{e
 L161">.1616/a>        struct 6a href="+code=crypto_larval" class="sref">crypto_larval6/a> *6a href="+code=larval" class="sref">larval6/a> = (void *)6a href="+code=alg" class="sref">alg6/a>;e
 L162">.1626/a>e
 L163">.1636/a>        6a href="+code=down_writ>" class="sref">down_writ>6/a>(&6a href="+code=crypto_alg_sem" class="sref">crypto_alg_sem6/a>);e
 L164">.1646/a>        6a href="+code=list_del" class="sref">list_del6/a>(&6a href="+code=alg" class="sref">alg6/a>->6a href="+code=cra_list" class="sref">cra_list6/a>);e
 L165">.1656/a>        6a href="+code=up_writ>" class="sref">up_writ>6/a>(&6a href="+code=crypto_alg_sem" class="sref">crypto_alg_sem6/a>);e
 L166">.1666/a>        6a href="+code=comple e_all" class="sref">comple e_all6/a>(&6a href="+code=larval" class="sref">larval6/a>->6a href="+code=comple val" class="sref">comple val6/a>);e
 L167">.1676/a>        6a href="+code=crypto_alg_put" class="sref">crypto_alg_put6/a>(6a href="+code=alg" class="sref">alg6/a>);e
 L168">.1686/a>}e
 L169">.1696/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_larval_kill" class="sref">crypto_larval_kill6/a>);e
 L170">.1706/a>e
 L171">.1716/a>static struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=crypto_larval_wait" class="sref">crypto_larval_wait6/a>(struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>)e
 L172">.1726/a>{e
 L173">.1736/a>        struct 6a href="+code=crypto_larval" class="sref">crypto_larval6/a> *6a href="+code=larval" class="sref">larval6/a> = (void *)6a href="+code=alg" class="sref">alg6/a>;e
 L174">.1746/a>        long 6a href="+code=timeout" class="sref">timeout6/a>;e
 L175">.1756/a>e
 L176">.1766/a>        6a href="+code=timeout" class="sref">timeout6/a> = 6a href="+code=wait_for_comple val_interruptible_timeout" class="sref">wait_for_comple val_interruptible_timeout6/a>(e
 L177">.1776/a>                &6a href="+code=larval" class="sref">larval6/a>->6a href="+code=comple val" class="sref">comple val6/a>, 60 * 6a href="+code=HZ" class="sref">HZ6/a>);e
 L178">.1786/a>e
 L179">.1796/a>        6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=larval" class="sref">larval6/a>->6a href="+code=adult" class="sref">adult6/a>;e
 L180">.1806/a>        if (6a href="+code=timeout" class="sref">timeout6/a> < 0)e
 L181">.1816/a>                6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=ERR_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=EINTR" class="sref">EINTR6/a>);e
 L182">.1826/a>        else if (!6a href="+code=timeout" class="sref">timeout6/a>)e
 L183">.1836/a>                6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=ERR_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=ETIMEDOUT" class="sref">ETIMEDOUT6/a>);e
 L184">.1846/a>        else if (!6a href="+code=alg" class="sref">alg6/a>)e
 L185">.1856/a>                6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=ERR_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=ENOENT" class="sref">ENOENT6/a>);e
 L186">.1866/a>        else if (6a href="+code=crypto_is_test_larval" class="sref">crypto_is_test_larval6/a>(6a href="+code=larval" class="sref">larval6/a>) &&e
 L187">.1876/a>                 !(6a href="+code=alg" class="sref">alg6/a>->6a href="+code=cra_flags" class="sref">cra_flags6/a> & 6a href="+code=CRYPTO_ALG_TESTED" class="sref">CRYPTO_ALG_TESTED6/a>))e
 L188">.1886/a>                6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=ERR_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=EAGAIN" class="sref">EAGAIN6/a>);e
 L189">.1896/a>        else if (!6a href="+code=crypto_mod_get" class="sref">crypto_mod_get6/a>(6a href="+code=alg" class="sref">alg6/a>))e
 L190">.1906/a>                6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=ERR_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=EAGAIN" class="sref">EAGAIN6/a>);e
 L191">.1916/a>        6a href="+code=crypto_mod_put" class="sref">crypto_mod_put6/a>(&6a href="+code=larval" class="sref">larval6/a>->6a href="+code=alg" class="sref">alg6/a>);e
 L192">.1926/a>e
 L193">.1936/a>        return 6a href="+code=alg" class="sref">alg6/a>;e
 L194">.1946/a>}e
 L195">.1956/a>e
 L196">.1966/a>struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=crypto_alg_lookup" class="sref">crypto_alg_lookup6/a>(const char *6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=mask" class="sref">mask6/a>)e
 L197">.1976/a>{e
 L198">.1986/a>        struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>;e
 L199">.1996/a>e
 L200">.2006/a>        6a href="+code=down_read" class="sref">down_read6/a>(&6a href="+code=crypto_alg_sem" class="sref">crypto_alg_sem6/a>);e
 L201">.2016/a>        6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=__crypto_alg_lookup" class="sref">__crypto_alg_lookup6/a>(6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mask6/a>);e
 L202">.2026/a>        6a href="+code=up_read" class="sref">up_read6/a>(&6a href="+code=crypto_alg_sem" class="sref">crypto_alg_sem6/a>);e
 L203">.2036/a>e
 L204">.2046/a>        return 6a href="+code=alg" class="sref">alg6/a>;e
 L205">.2056/a>}e
 L206">.2066/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_alg_lookup" class="sref">crypto_alg_lookup6/a>);e
 L207">.2076/a>e
 L208">.2086/a>struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=crypto_larval_lookup" class="sref">crypto_larval_lookup6/a>(const char *6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=mask" class="sref">mask6/a>)e
 L209">.2096/a>{e
 L210">.2106/a>        struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>;e
 L211">.2116/a>e
 L212">.2126/a>        if (!6a href="+code=nam>" class="sref">nam>6/a>)e
 L213">.2136/a>                return 6a href="+code=ERR_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=ENOENT" class="sref">ENOENT6/a>);e
 L214">.2146/a>e
 L215">.2156/a>        6a href="+code=mask" class="sref">mask6/a> &= ~(6a href="+code=CRYPTO_ALG_LARVAL" class="sref">CRYPTO_ALG_LARVAL6/a> | 6a href="+code=CRYPTO_ALG_DEAD" class="sref">CRYPTO_ALG_DEAD6/a>);e
 L216">.2166/a>        6a href="+code=typ>" class="sref">typ>6/a> &= 6a href="+code=mask" class="sref">mask6/a>;e
 L217">.2176/a>e
 L218">.2186/a>        6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=crypto_alg_lookup" class="sref">crypto_alg_lookup6/a>(6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mask6/a>);e
 L219">.2196/a>        if (!6a href="+code=alg" class="sref">alg6/a>) {e
 L220">.2206/a>                6a href="+code=request_module" class="sref">request_module6/a>(6span class="string">"%s", 6a href="+code=nam>" class="sref">nam>6/a>);e
 L221">.2216/a>e
 L222">.2226/a>                if (!((6a href="+code=typ>" class="sref">typ>6/a> ^ 6a href="+code=CRYPTO_ALG_NEED_FALLBACK" class="sref">CRYPTO_ALG_NEED_FALLBACK6/a>) & 6a href="+code=mask" class="sref">mask6/a> &e
 L223">.2236/a>                      6a href="+code=CRYPTO_ALG_NEED_FALLBACK" class="sref">CRYPTO_ALG_NEED_FALLBACK6/a>))e
 L224">.2246/a>                        6a href="+code=request_module" class="sref">request_module6/a>(6span class="string">"%s-all", 6a href="+code=nam>" class="sref">nam>6/a>);e
 L225">.2256/a>e
 L226">.2266/a>                6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=crypto_alg_lookup" class="sref">crypto_alg_lookup6/a>(6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mask6/a>);e
 L227">.2276/a>        }e
 L228">.2286/a>e
 L229">.2296/a>        if (6a href="+code=alg" class="sref">alg6/a>)e
 L230">.2306/a>                return 6a href="+code=crypto_is_larval" class="sref">crypto_is_larval6/a>(6a href="+code=alg" class="sref">alg6/a>) ? 6a href="+code=crypto_larval_wait" class="sref">crypto_larval_wait6/a>(6a href="+code=alg" class="sref">alg6/a>) : 6a href="+code=alg" class="sref">alg6/a>;e
 L231">.2316/a>e
 L232">.2326/a>        return 6a href="+code=crypto_larval_add" class="sref">crypto_larval_add6/a>(6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mask6/a>);e
 L233">.2336/a>}e
 L234">.2346/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_larval_lookup" class="sref">crypto_larval_lookup6/a>);e
 L235">.2356/a>e
 L236">.2366/a>int 6a href="+code=crypto_probing_notify" class="sref">crypto_probing_notify6/a>(unsigned long 6a href="+code=val" class="sref">val6/a>, void *6a href="+code=v" class="sref">v6/a>)e
 L237">.2376/a>{e
 L238">.2386/a>        int 6a href="+code=ok" class="sref">ok6/a>;e
 L239">.2396/a>e
 L240">.2406/a>        6a href="+code=ok" class="sref">ok6/a> = 6a href="+code=blocking_notifier_call_chail" class="sref">blocking_notifier_call_chail6/a>(&6a href="+code=crypto_chail" class="sref">crypto_chail6/a>, 6a href="+code=val" class="sref">val6/a>, 6a href="+code=v" class="sref">v6/a>);e
 L241">.2416/a>        if (6a href="+code=ok" class="sref">ok6/a> == 6a href="+code=NOTIFY_DONE" class="sref">NOTIFY_DONE6/a>) {e
 L242">.2426/a>                6a href="+code=request_module" class="sref">request_module6/a>(6span class="string">"cryptomgr");e
 L243">.2436/a>                6a href="+code=ok" class="sref">ok6/a> = 6a href="+code=blocking_notifier_call_chail" class="sref">blocking_notifier_call_chail6/a>(&6a href="+code=crypto_chail" class="sref">crypto_chail6/a>, 6a href="+code=val" class="sref">val6/a>, 6a href="+code=v" class="sref">v6/a>);e
 L244">.2446/a>        }e
 L245">.2456/a>e
 L246">.2466/a>        return 6a href="+code=ok" class="sref">ok6/a>;e
 L247">.2476/a>}e
 L248">.2486/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_probing_notify" class="sref">crypto_probing_notify6/a>);e
 L249">.2496/a>e
 L250">.2506/a>struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=crypto_alg_mod_lookup" class="sref">crypto_alg_mod_lookup6/a>(const char *6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=mask" class="sref">mask6/a>)e
 L251">.2516/a>{e
 L252">.2526/a>        struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>;e
 L253">.2536/a>        struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=larval" class="sref">larval6/a>;e
 L254">.2546/a>        int 6a href="+code=ok" class="sref">ok6/a>;e
 L255">.2556/a>e
 L256">.2566/a>        if (!((6a href="+code=typ>" class="sref">typ>6/a> | 6a href="+code=mask" class="sref">mask6/a>) & 6a href="+code=CRYPTO_ALG_TESTED" class="sref">CRYPTO_ALG_TESTED6/a>)) {e
 L257">.2576/a>                6a href="+code=typ>" class="sref">typ>6/a> |= 6a href="+code=CRYPTO_ALG_TESTED" class="sref">CRYPTO_ALG_TESTED6/a>;e
 L258">.2586/a>                6a href="+code=mask" class="sref">mask6/a> |= 6a href="+code=CRYPTO_ALG_TESTED" class="sref">CRYPTO_ALG_TESTED6/a>;e
 L259">.2596/a>        }e
 L260">.2606/a>e
 L261">.2616/a>        6a href="+code=larval" class="sref">larval6/a> = 6a href="+code=crypto_larval_lookup" class="sref">crypto_larval_lookup6/a>(6a href="+code=nam>" class="sref">nam>6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mask6/a>);e
 L262">.2626/a>        if (6a href="+code=IS_ERR" class="sref">IS_ERR6/a>(6a href="+code=larval" class="sref">larval6/a>) || !6a href="+code=crypto_is_larval" class="sref">crypto_is_larval6/a>(6a href="+code=larval" class="sref">larval6/a>))e
 L263">.2636/a>                return 6a href="+code=larval" class="sref">larval6/a>;e
 L264">.2646/a>e
 L265">.2656/a>        6a href="+code=ok" class="sref">ok6/a> = 6a href="+code=crypto_probing_notify" class="sref">crypto_probing_notify6/a>(6a href="+code=CRYPTO_MSG_ALG_REQUEST" class="sref">CRYPTO_MSG_ALG_REQUEST6/a>, 6a href="+code=larval" class="sref">larval6/a>);e
 L266">.2666/a>e
 L267">.2676/a>        if (6a href="+code=ok" class="sref">ok6/a> == 6a href="+code=NOTIFY_STOP" class="sref">NOTIFY_STOP6/a>)e
 L268">.2686/a>                6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=crypto_larval_wait" class="sref">crypto_larval_wait6/a>(6a href="+code=larval" class="sref">larval6/a>);e
 L269">.2696/a>        else {e
 L270">.2706/a>                6a href="+code=crypto_mod_put" class="sref">crypto_mod_put6/a>(6a href="+code=larval" class="sref">larval6/a>);e
 L271">.2716/a>                6a href="+code=alg" class="sref">alg6/a> = 6a href="+code=ERR_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=ENOENT" class="sref">ENOENT6/a>);e
 L272">.2726/a>        }e
 L273">.2736/a>        6a href="+code=crypto_larval_kill" class="sref">crypto_larval_kill6/a>(6a href="+code=larval" class="sref">larval6/a>);e
 L274">.2746/a>        return 6a href="+code=alg" class="sref">alg6/a>;e
 L275">.2756/a>}e
 L276">.2766/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_alg_mod_lookup" class="sref">crypto_alg_mod_lookup6/a>);e
 L277">.2776/a>e
 L278">.2786/a>static int 6a href="+code=crypto_init_ops" class="sref">crypto_init_ops6/a>(struct 6a href="+code=crypto_tfm" class="sref">crypto_tfm6/a> *6a href="+code=tfm" class="sref">tfm6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=mask" class="sref">mask6/a>)e
 L279">.2796/a>{e
 L280">.2806/a>        const struct 6a href="+code=crypto_typ>" class="sref">crypto_typ>6/a> *6a href="+code=typ>_obj" class="sref">typ>_obj6/a> = 6a href="+code=tfm" class="sref">tfm6/a>->6a href="+code=__crt_alg" class="sref">__crt_alg6/a>->6a href="+code=cra_typ>" class="sref">cra_typ>6/a>;e
 L281">.2816/a>e
 L282">.2826/a>        if (6a href="+code=typ>_obj" class="sref">typ>_obj6/a>)e
 L283">.2836/a>                return 6a href="+code=typ>_obj" class="sref">typ>_obj6/a>->6a href="+code=init" class="sref">init6/a>(6a href="+code=tfm" class="sref">tfm6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mask6/a>);e
 L284">.2846/a>e
 L285">.2856/a>        switch (6a href="+code=crypto_tfm_alg_typ>" class="sref">crypto_tfm_alg_typ>6/a>(6a href="+code=tfm" class="sref">tfm6/a>)) {e
 L286">.2866/a>        case 6a href="+code=CRYPTO_ALG_TYPE_CIPHER" class="sref">CRYPTO_ALG_TYPE_CIPHER6/a>:e
 L287">.2876/a>                return 6a href="+code=crypto_init_cipher_ops" class="sref">crypto_init_cipher_ops6/a>(6a href="+code=tfm" class="sref">tfm6/a>);e
 L288">.2886/a>e
 L289">.2896/a>        case 6a href="+code=CRYPTO_ALG_TYPE_COMPRESS" class="sref">CRYPTO_ALG_TYPE_COMPRESS6/a>:e
 L290">.2906/a>                return 6a href="+code=crypto_init_compress_ops" class="sref">crypto_init_compress_ops6/a>(6a href="+code=tfm" class="sref">tfm6/a>);e
 L291">.2916/a>e
 L292">.2926/a>        default:e
 L293">.2936/a>                break;e
 L294">.2946/a>        }e
 L295">.2956/a>e
 L296">.2966/a>        6a href="+code=BUG" class="sref">BUG6/a>();e
 L297">.2976/a>        return -6a href="+code=EINVAL" class="sref">EINVAL6/a>;e
 L298">.2986/a>}e
 L299">.2996/a>e
 L300">.3006/a>static void 6a href="+code=crypto_exit_ops" class="sref">crypto_exit_ops6/a>(struct 6a href="+code=crypto_tfm" class="sref">crypto_tfm6/a> *6a href="+code=tfm" class="sref">tfm6/a>)e
 L301">.3016/a>{e
 L302">.3026/a>        const struct 6a href="+code=crypto_typ>" class="sref">crypto_typ>6/a> *6a href="+code=typ>" class="sref">typ>6/a> = 6a href="+code=tfm" class="sref">tfm6/a>->6a href="+code=__crt_alg" class="sref">__crt_alg6/a>->6a href="+code=cra_typ>" class="sref">cra_typ>6/a>;e
 L303">.3036/a>e
 L304">.3046/a>        if (6a href="+code=typ>" class="sref">typ>6/a>) {e
 L305">.3056/a>                if (6a href="+code=tfm" class="sref">tfm6/a>->6a href="+code=exit" class="sref">exit6/a>)e
 L306">.3066/a>                        6a href="+code=tfm" class="sref">tfm6/a>->6a href="+code=exit" class="sref">exit6/a>(6a href="+code=tfm" class="sref">tfm6/a>);e
 L307">.3076/a>                return;e
 L308">.3086/a>        }e
 L309">.3096/a>e
 L310">.3106/a>        switch (6a href="+code=crypto_tfm_alg_typ>" class="sref">crypto_tfm_alg_typ>6/a>(6a href="+code=tfm" class="sref">tfm6/a>)) {e
 L311">.3116/a>        case 6a href="+code=CRYPTO_ALG_TYPE_CIPHER" class="sref">CRYPTO_ALG_TYPE_CIPHER6/a>:e
 L312">.3126/a>                6a href="+code=crypto_exit_cipher_ops" class="sref">crypto_exit_cipher_ops6/a>(6a href="+code=tfm" class="sref">tfm6/a>);e
 L313">.3136/a>                break;e
 L314">.3146/a>e
 L315">.3156/a>        case 6a href="+code=CRYPTO_ALG_TYPE_COMPRESS" class="sref">CRYPTO_ALG_TYPE_COMPRESS6/a>:e
 L316">.3166/a>                6a href="+code=crypto_exit_compress_ops" class="sref">crypto_exit_compress_ops6/a>(6a href="+code=tfm" class="sref">tfm6/a>);e
 L317">.3176/a>                break;e
 L318">.3186/a>e
 L319">.3196/a>        default:e
 L320">.3206/a>                6a href="+code=BUG" class="sref">BUG6/a>();e
 L321">.3216/a>        }e
 L322">.3226/a>}e
 L323">.3236/a>e
 L324">.3246/a>static unsigned int 6a href="+code=crypto_ctxsiz>" class="sref">crypto_ctxsiz>6/a>(struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=mask" class="sref">mask6/a>)e
 L325">.3256/a>{e
 L326">.3266/a>        const struct 6a href="+code=crypto_typ>" class="sref">crypto_typ>6/a> *6a href="+code=typ>_obj" class="sref">typ>_obj6/a> = 6a href="+code=alg" class="sref">alg6/a>->6a href="+code=cra_typ>" class="sref">cra_typ>6/a>;e
 L327">.3276/a>        unsigned int 6a href="+code=lel" class="sref">lel6/a>;e
 L328">.3286/a>e
 L329">.3296/a>        6a href="+code=lel" class="sref">lel6/a> = 6a href="+code=alg" class="sref">alg6/a>->6a href="+code=cra_alignmask" class="sref">cra_alignmask6/a> & ~(6a href="+code=crypto_tfm_ctx_alignment" class="sref">crypto_tfm_ctx_alignment6/a>() - 1);e
 L330">.3306/a>        if (6a href="+code=typ>_obj" class="sref">typ>_obj6/a>)e
 L331">.3316/a>                return 6a href="+code=lel" class="sref">lel6/a> + 6a href="+code=typ>_obj" class="sref">typ>_obj6/a>->6a href="+code=ctxsiz>" class="sref">ctxsiz>6/a>(6a href="+code=alg" class="sref">alg6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mask6/a>);e
 L332">.3326/a>e
 L333">.3336/a>        switch (6a href="+code=alg" class="sref">alg6/a>->6a href="+code=cra_flags" class="sref">cra_flags6/a> & 6a href="+code=CRYPTO_ALG_TYPE_MASK" class="sref">CRYPTO_ALG_TYPE_MASK6/a>) {e
 L334">.3346/a>        default:e
 L335">.3356/a>                6a href="+code=BUG" class="sref">BUG6/a>();e
 L336">.3366/a>e
 L337">.3376/a>        case 6a href="+code=CRYPTO_ALG_TYPE_CIPHER" class="sref">CRYPTO_ALG_TYPE_CIPHER6/a>:e
 L338">.3386/a>                6a href="+code=lel" class="sref">lel6/a> += 6a href="+code=crypto_cipher_ctxsiz>" class="sref">crypto_cipher_ctxsiz>6/a>(6a href="+code=alg" class="sref">alg6/a>);e
 L339">.3396/a>                break;e
 L340">.3406/a>e
 L341">.3416/a>        case 6a href="+code=CRYPTO_ALG_TYPE_COMPRESS" class="sref">CRYPTO_ALG_TYPE_COMPRESS6/a>:e
 L342">.3426/a>                6a href="+code=lel" class="sref">lel6/a> += 6a href="+code=crypto_compress_ctxsiz>" class="sref">crypto_compress_ctxsiz>6/a>(6a href="+code=alg" class="sref">alg6/a>);e
 L343">.3436/a>                break;e
 L344">.3446/a>        }e
 L345">.3456/a>e
 L346">.3466/a>        return 6a href="+code=lel" class="sref">lel6/a>;e
 L347">.3476/a>}e
 L348">.3486/a>e
 L349">.3496/a>void 6a href="+code=crypto_shoot_alg" class="sref">crypto_shoot_alg6/a>(struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>)e
 L350">.3506/a>{e
 L351">.3516/a>        6a href="+code=down_writ>" class="sref">down_writ>6/a>(&6a href="+code=crypto_alg_sem" class="sref">crypto_alg_sem6/a>);e
 L352">.3526/a>        6a href="+code=alg" class="sref">alg6/a>->6a href="+code=cra_flags" class="sref">cra_flags6/a> |= 6a href="+code=CRYPTO_ALG_DYING" class="sref">CRYPTO_ALG_DYING6/a>;e
 L353">.3536/a>        6a href="+code=up_writ>" class="sref">up_writ>6/a>(&6a href="+code=crypto_alg_sem" class="sref">crypto_alg_sem6/a>);e
 L354">.3546/a>}e
 L355">.3556/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL6/a>(6a href="+code=crypto_shoot_alg" class="sref">crypto_shoot_alg6/a>);e
 L356">.3566/a>e
 L357">.3576/a>struct 6a href="+code=crypto_tfm" class="sref">crypto_tfm6/a> *6a href="+code=__crypto_alloc_tfm" class="sref">__crypto_alloc_tfm6/a>(struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+code=typ>" class="sref">typ>6/a>,e
 L358">.3586/a>                                      6a href="+code=u32" class="sref">u326/a> 6a href="+code=mask" class="sref">mask6/a>)e
 L359">.3596/a>{e
 L360">.3606/a>        struct 6a href="+code=crypto_tfm" class="sref">crypto_tfm6/a> *6a href="+code=tfm" class="sref">tfm6/a> = 6a href="+code=NULL" class="sref">NULL6/a>;e
 L361">.3616/a>        unsigned int 6a href="+code=tfm_siz>" class="sref">tfm_siz>6/a>;e
 L362">.3626/a>        int 6a href="+code=err" class="sref">err6/a> = -6a href="+code=ENOMEM" class="sref">ENOMEM6/a>;e
 L363">.3636/a>e
 L364">.3646/a>        6a href="+code=tfm_siz>" class="sref">tfm_siz>6/a> = siz>of(*6a href="+code=tfm" class="sref">tfm6/a>) + 6a href="+code=crypto_ctxsiz>" class="sref">crypto_ctxsiz>6/a>(6a href="+code=alg" class="sref">alg6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mask6/a>);e
 L365">.3656/a>        6a href="+code=tfm" class="sref">tfm6/a> = 6a href="+code=kzalloc" class="sref">kzalloc6/a>(6a href="+code=tfm_siz>" class="sref">tfm_siz>6/a>, 6a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL6/a>);e
 L366">.3666/a>        if (6a href="+code=tfm" class="sref">tfm6/a> == 6a href="+code=NULL" class="sref">NULL6/a>)e
 L367">.3676/a>                goto 6a href="+code=out_err" class="sref">out_err6/a>;e
 Lt#L368" id
 L368" class="line" nam>
s649" id
 L349" class="line" nam>
 L> = -6a href="+code L> = 0e=tfm_siz>" class="sref">s="line" nam>
 L357">.3576/a>struct 1k" class="sref">mask6/a>)e
 clcrypto/api.c#L36A0" class="line" nam>
 L340">.36/a>);e
 L351">6/a>        int 6a href="+coe=tfm" class="sref">tfatic int 6a href="+code=crypto_init_ops" cle" nam>
 L> = -6a href="+code L> = 0e=tf+code=alg" class="sref">alg6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mask6/a>);e
 L282">.2826/a>        int 6a href="ode=NULL" class="sref">NUL     }e
 L367">.3676/a>         free   struct 6a href="    free   sS_ERO href="crypto/api.c#L286" 36/a>e
 L314">.3g6/a>;e.1826/a>                  6a href="+code=tfm" class="sref">tfm6/a>->6a href="+carval" clasne" nam>
 L352">.3526/a>        6a href="+code=alg" class="sref">yp>_obj6/a>->6a ef">yp>_="+carval" clasnnam>
 L282">.2826/a>        int 6a href="+code=lel" class="sref">lel6/a> = 6a href="+code=alg" class="sref">yp>_obj6/a>->6a ef">yp>_="+c="sref">crypto_tfm_alg_typ>6/a>(6a href="+code=NULL" class="sref">NUL /a>);e
 L367">.3676/a>     ef">yp>__faile6a href="+code=cry">yp>__faile6S_ERO href="crypto/api.c#L286" 6/a>)e
 L277">.3776/a>e.3676/a>        truct 6a href="   S_ERO href="crypto/api.c#L286" id
 L368"href="crypto/api.c#L279"3id
 L379" class="line" nam>
 L309">.396/a>{e.3676/a>     ef">yp>__faile6a href="+code=cry">yp>__faile6S_ERf">CRYPTO_ALG_TYPE_COMPRES>6/a>;e
 L191">.1916/atic void 6a href="+code=crypto_exit_ops" cl"sref">crypto_tfm_alg_typ>6/a>(6a href="+O href="crypto/api.c#L286"816/a>e.3676/a>         free   struct 6a href="    free   sS_ERf">CRYPTO_ALG_TYPE_COMPRES>    }e
 L282">.2826/a>        int 6a href="+cod_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=E">CRYPTO_ALG_TYPE_COMPRES>36/a>e
line" nam>
 L349">.3496/a>void 6a href="+code=crypto_shoot_alg" claf">crypto_compress_ctxsiz>6/a>(6a href="+code=alg" class="sref">alg846/a>e
 L365">kfreefm6/a> = 6a hreffrees" cl"sref">crypto_tfm_alg_typ>6/a>(6a href="+O href="crypto/api.c#L286"8/a>);e           goto 6a href="+code=ouf">CRYPTO_ALG_TYPE_COMPRES>6/a>)e
 L365">.3656/a>        6a href="+code=tfm" class="sref">alg6/a> = 6a href="+code=ERRam>
 L282">.2826/a>        int 6a href="oO href="crypto/api.c#L286"876/a>e   truct 6a href="   S_ERf">CRYPTO_ALG_TYPE_COMPRES>id
 L368"href="crypto/api.c#L289"3id
 L389" class="lin L283">.2836/a>        3656/a>        6a href="O href="crypto/api.c#L286"S6/a>:e
 L354">.356/a>);e
 L355">.3556/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORTcrypto_tfm6/a> *6a href="+code=__crypto_alloc_tfm" clasoO href="crypto/api.c#L286"916/a>e
 L192">.3fault:ercomref=">/*="strinass="line" nam>
 L192">.3f36/a>ercomref="> *s="linypto_alloc_tfb" na- Locate  hrorithm and loc_tate transform="strinass="line" nam>
 L192">.3f46/a>ercomref="> *s="lin@o_alc#L2: N#L2 of  hrorithm="strinass="line" nam>
 L192">.3f/a>);ercomref="> *s="lin@href: Tref of  hrorithm="strinass="line" nam>
 L192">.3f6/a>)ercomref="> *s="lin@href: Mref for href s_ctarison="strinass="line" nam>
 L192">.3f76/a>ercomref="> *="strinass="line" nam>
 L192">.3fid
 L368"href="crypto/api.c#L299"3id
 L399" cllass="sref">rcomref="> *s="linThis function should not be used by new  hrorithm hrefs.="strinass="line" nam>
 L192">.4996/a>ercomref="> *s="linPlesae use ypto_alloc_tfm"  instead.="strinass="line" nam>
 L192">.4916/a>ercomref="> *="strinass="line" nam>
 L192">.416/a>{ercomref="> *s="linypto_alloc_tfb" n() will first attempt 367c_tate s="al+cody7c_ade6S_strinass="line" nam>
 L192">.413/a>{ercomref="> *s="lin hrorithm.  If that fails and the kernel supports dyc#Liclasy7c_adabdulestrinass="line" nam>
 L192">.414/a>{ercomref="> *s="lint_modus, it will then attempt 367c_ad lnt_modu of the s#L2 n#L2 orlestrinass="line" nam>
 L192">.415/a>{ercomref="> *s="linalias.  If that fails it will send l query 367any7c_ade6nypto_a managerlestrinass="line" nam>
 L192">.416/a>{ercomref="> *s="lin_a e" na nam>s="alrorithm on the fly.  An Lfcount is grabbe6non thelestrinass="line" nam>
 L192">.417/a>{ercomref="> *s="linalrorithm which is then associated with the new transform.="strinass="line" nam>
 L192">.498/a>{ercomref="> *="strinass="line" nam>
 L192">.4     }ercomref="> *s="linThen L283"ed transform is of   non-determinate tref.  Most peopdulestrinass="line" nam>
 L192">.4096/a>ercomref="> *s="linshould use onu of the more specific loc_tation functions such aslestrinass="line" nam>
 L192">.4016/a>ercomref="> *s="linypto_alloc_tfblkr_ctxs.="strinass="line" nam>
 L192">.4R6/a>:ercomref="> *="strinass="line" nam>
 L192">.4R3/a>{ercomref="> *s="linInne" naof  hror hhen L283" value is s=" hror pointxs.="strinass="line" nam>
 L192">.4R4/a>{ercomref="> */="strinass="line" nam>
 L192">.4R5/a>{e
 L360">.3606/a>        struct 6a href="+code=crypto_tfm" class="sref">ypto_alloc_tfb" ntruct 6a href="+code=cryc_tfb" n clasref">crypto_alg_mod_lookup6o_alc#L2_ctxsiz>6/a>(6a hrlc#L2ef="+code=alg" class="sref">alg6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+co                                6a href="+code=u32" class="sref">u326/a> 6a href="+code=mask" class="sref">ma4S6/a>:e
 L359">.346/a>);e
 L360">.3606/a>        struct 6a href="+code=crypto_tfm" class="sref">crypto_tfm6/a> *6a href="O href="crypto/api.c#L2864break;e
 L238">.2386/a>        int 6a href="O href="crypto/api.c#L2864b    }e
 L309">.4fault:eCRYPTO_ALG_TYPE_MASK4/a>();e
e" nam>
 L252">.2526/a>        struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">a4     }e
 L192">.426/a>}e
" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6//a> *6a href="+code=crypto_alg_mod_lookup" class="salg_mod_lookup6o_alc#L2_ctxsiz>6/a>(6a hrlc#L2ef="+code=alg" class="sref">alg6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mas4236/a>e
e" nam>
 L262">.2626/a>        if (6a href="+code=IS_ERR" class="sess_ctxsiz>6/a>(6a href="+"sref">CRYPTO_ALG_TYPE_MASK4/5/a>{e
e" nam>
" class="sref">6/a>        int 6a href="+code=lel" class="PTRa>        if (6a hrPTRa>  " claf">crypto_compress_ctxsiz>6/a>(6a href="+code=alg" class="sref">al456/a>{e








 L367">.3676/a>     6/a>        int 6a href="O href="crypto/api.c#L2864>6/a>;e
ass="line" nam>
 L354">.34l6/a>;e
 L328">.4286/a>e
e" nam>
 L365">.3656/a>        6a href="+code=tfm" class="crypto_tfm6/a> *6a href="+code=__crypto_alloc_tfm" classf">crypto_compress_ctxsiz>6/a>(6a href="+code=alg" class="sref">alg6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mas4 - 1);e
e" nL182">.1826/a>  6/a>        if (6a href="+code=IS_ERR" class="sfm_alg_typ>6/a>(6a href="+ce=mask" class="sref">mas4 a>();e








 L283">.2836/a>        3656/a>        6a href="O href="crypto/api.c#L28646/a>);e
 L332">.4326/a>e
" class="sref">ypto_al         6a href="+code=crypto_mod_put" class="sref">cryess_ctxsiz>6/a>(6a href="+code=alg" class="sref">al4/a>) {e
line" nam>
 L346/a>        int 6a href="+code=lel" class="PTRa>        if (6a hrPTRa>  " claf">crypto_comprfm_alg_typ>6/a>(6a href="+O href="crypto/api.c#L2864fault:e
 L235">.4/a>();e6/a>        int 6a href="f">CRYPTO_ALG_TYPE_COMPRE4366/a>e
e" nam>
 L282">.2826/a>        int 6a href="+!od_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=E">CRYPTO_ALG_TYPE_COMPRE4R6/a>:e








 L343">.3436/a>               46/a>);e
e" nam>
 L282">.282 namal_pendest_PTR6/a>(-6a hr namal_pendest" claf">crypto_comprcurref="+code=crypto_tfurref=ef="+"sref">CRYPTO_ALG_TYPE_MASK4break;e
e" nam>
line" nam>
 L346/a>        int 6a href="+co
 L297">.2976/a>   >alg6/a> = 6a href  >aef="O href="crypto/api.c#L2864406/a>e








 L343">.3436/a>               4S6/a>:e
ass="line" nam>
 L354">.346/a>);e
 L354">.346a>) {e
 L314">.4     }e.2836/a>       sref">alg6/a> = 6a href="+code=ERRam>
 L282">.2826/a>        int 6a href="oO href="crypto/api.c#L2864456/a>e
 L354">.34666/a>e
 L355">.3556/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORTypto_alloc_tfb" ntruct 6a href="+code=cryc_tfb" n claoO href="crypto/api.c#L286446/a>:e
 L348">.4486/a>eypto_alcL34te   struct 6a href="ypto_alcL34te   s clas="sref">__crypto_alloc_tfm6/a>(struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+ass="line" nam>
 L348">.4g6/a>)e
e" nam>
e" nam>
 L326">.3266/a>        const struct 6a href="+code=crypto_typ>" class="sref">cfrontendruct 6a href="+frontendode=E">CRYPTO_ALG_TYPE_COMPRE406/a>{e
 L251">.246/a>);e;e
 L253">.2536/a>        struct 6a href="+code=crypto_tfm" class="sref">crypto_tfm6/a> *6a href="+code=tfm" class="sref">tfm6/a> = 6a href="+code=NULL" class="sref">NU46/a>);e
 L361">.3616/a>        kzalloc6/a>(6a href="+ode=tfm_siz>" class="sref">tfm_si446/a>}e
 L361">.3616/a>      otal_kill6/a>(6a hr otaltfm_siz>" class="sref">tfm_si4456/a>e
 L362">.3626/a>        int 6a href="+code=err" class="sref">err6/a> = -6a href="+code=ENOMEM" class="sref">ENOM4566/a>e
 L277">.4>6/a>,e.3616/a>        kzalloc6/a>(6a href="+ode=tfm_+code=tfm" class="frontendruct 6a href="+frontendode=+code=alg" class="sr   kzalloc6/a>(6a href="+ode=tfm_siz>" class="sref">tfm_si4486/a>e
 L> = -6otal_kill6/a>(6a hr otaltfm_ode=typ>" class="srefkzalloc6/a>(6a href="+ode=tfm_++z>" class="sref">tfm_siz>6/a> = siz>of(*6a href="+code=tfm" class="sfrontendruct 6a href="+frontendode=+code=alg" class="srextkzalloc6/a>(6a hrefextkzalut" class="sref">cryess_ctxsiz>6/a>(6a href="+code=alg" class="sref">al496/a>{e
 L260">.4L6/a>;e
 L261">mamp;6a href="+codmeref="+code=tfm" class="sref">tfm6/a> = 6a href="+code=kzalloc" class="sreotal_kill6/a>(6a hr otaltfm_siz>" class="sref">tfm_siz>6/a>, 6a href="+code=GFP_KERNEL" class="sref">GFP_KERNE4>6/a>;e
 L262">.262mamp;6a href="+codmeref="+code=tfm" class="sref">tfm6/a> == 6a href="+code=NULL" class="sref">NU4M6/a>;e
 L367">.3676/a>                goto 6a href="+code=out_err" class="sref">out_e4636/a>e
 L264">.46/a>);e
 L365">.3656/a>        6a href="+colass="sref">crypto_exit_ops6/a>(struct 6a href="+code=crypto_tfm)nam>
 L262">.262mamp;6a href="+codmeref="+code=lel" class="sefkzalloc6/a>(6a href="+ode=tfm_EL" class="sref">GFP_KERNE4>56/a>e
 L296">6a href="+code L> = 0e=tfm_siz>" class="sref">s="line" nam>
 L357">.3576/a>struct 1k" class="sref">mask6/a>)e
 L277">.4r6/a>;e.3616/a>     6/a>        int 6a href="+code=lel" class="frontendruct 6a href="+frontendode=+code=alg" class="sryp>__6a href="+code L> yp>__6a " claf">crypto_comprfm_alg_typ>6/a>(6a href="+O href="crypto/api.c#L2864 id
 L3684 class="line" nam>
s649"4id
 L449" class="line" nam>
 L282">.2826/a>        int 6a href="ode=NULL" class="sref">NU4 id
 L2864 clas" nam>
 clcrypto/ap4.c#L3470" class="line" nam>
 L367">.3676/a>         free   struct 6a href="    free   sS_ERO href="crypto/api.c#L28646/a>);e
 L291">.46/a>);e.1826/a>                  6a href="+code=tfm" class="sref">tfm6/a>->6a href="+carval" clasne" nam>
 L352">.3526/a>        6a href="+code=alg" class="sref">yp>_obj6/a>->6a ef">yp>_="+carval" clasnnam>
 L282">.2826/a>        int 6a href="+code=lel" class="sref">lel6/a> = 6a href="+code=alg" class="sref">yp>_obj6/a>->6a ef">yp>_="+c="sref">crypto_tfm_alg_typ>6/a>(6a href="+code=NULL" class="sref">NU4     }e
 L367">.3676/a>     ef">yp>__faile6a href="+code=cry">yp>__faile6S_ERO href="crypto/api.c#L2864 36/a>e
 L314">.4g6/a>;e.3676/a>        truct 6a href="   S_ERO href="crypto/api.c#L2864 /a>);e
 L356">.4 6/a>)eef">yp>__faile6a href="+code=cry">yp>__faile6S_ERf">CRYPTO_ALG_TYPE_COMPRE4776/a>e.3616/a>     +code=ctic void 6a href="+code=crypto_exit_ops" cl"sref">crypto_tfm_alg_typ>6/a>(6a href="+O href="crypto/api.c#L2864 id
 L3684href="crypto/api.c#L279"4id
 L479" cl">.3676/a>         free   struct 6a href="    free   sS_ERf">CRYPTO_ALG_TYPE_COMPRE496/a>{e
 L330">.3306/a>        int 6a href="+cod_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=E">CRYPTO_ALG_TYPE_COMPRE4>6/a>;e
">.3616/a>     +code=c6/a>void 6a href="+code=crypto_shoot_alg" claf">crypto_compress_ctxsiz>6/a>(6a href="+code=alg" class="sref">al4816/a>ecrypto_tmamp;6a href="+codmeref="+code=alg" class="sref">al48    }e.3676/a>                goto 6a href="+code=ouf">CRYPTO_ALG_TYPE_COMPRE4936/a>e
 L364">mamp;6a href="+codmeref="+code=tfm" class="sref">alg6/a> = 6a href="+code=ERRam>
 L282">.2826/a>        int 6a href="oO href="crypto/api.c#L2864846/a>e   truct 6a href="   S_ERf">CRYPTO_ALG_TYPE_COMPRE48/a>);e
 L346">.3466/amamp;6a href="+codmeref="O href="crypto/api.c#L2864>6/a>)e
 L347">.34876/a>e
 L355">.3556/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORTypto_alcL34te   struct 6a href="ypto_alcL34te   s claoO href="crypto/api.c#L28648id
 L3684href="crypto/api.c#L289"4id
 L489" class="line" nam>
 L309">.4S6/a>:e__crypto_alloc_tfm6/a>(struct 6a href="+code=crypto_alg" class="sref">+code=cfinda>(struct 6a href="+code=cfinda>(s clasref">crypto_alg_mod_lookup6o_alc#L2_ctxsiz>6/a>(6a hrlc#L2ef="+ass="line" nam>
 L309">.4S6/a>;e



















e" nam>
 L326">.3266/a>        const struct 6a href="+code=crypto_typ>" class="sref">cfrontendruct 6a href="+frontendode=+ass="line" nam>
 L309">.4S16/a>e



















 class="sref">c"sref">alg6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+co                                6a href="+code=u32" class="sref">u326/a> 6a href="+code=mask" class="sref">ma4fault:e
 L251">.24f36/a>e__crypto_alloc_tfm6/a>(struct 6a href="+code=crypto_algss="sref">tfm_siz*6a href="+code=cryptp" class=")sref">crypto_alg_mod_lookup6c#L2_ctxsiz>6/a>(6ac#L2ef="+code=alg" class="sref">alg6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+co                                6a href="+code=u32" class="sref">u326/a> 6a href="+co =ss="line" nam>
 L251">.24f46/a>e
 L335">.3356/a>sref">alg6//a> *6a href="+code=crypto_alg_mod_lookup" class="O href="crypto/api.c#L2864f/a>);e
 L356">.4f6/a>)e
 L330">.330frontendruct 6a href="+frontendode=Esref">CRYPTO_ALG_TYPE_MASK4f76/a>e
 L338">.3386/a>rypto_typ>6/a> *6a href="+co clascode=lel" class="frontendruct 6a href="+frontendode=+code=alg" class="srhrefcleaa>        int 6ahrefcleaass="O href="crypto/api.c#L2864fid
 L3684href="crypto/api.c#L299"4id
 L499" class="line" nam>
e" nam>
 L365">="sref">u326/a> 6a href="+co clascode=lel" class="frontendruct 6a href="+frontendode=+code=alg" class="srhrefcleaa>        int 6ahrefcleaass="O href="crypto/api.c#L2865996/a>e
 L320">.3206/a>rypto_typ>6/a> *6a href="+cogs" class="sref">cfrontendruct 6a href="+frontendode=+code=alg" class="sr ypto_typ>6/a> *6a href="+cO href="crypto/api.c#L2865916/a>e
">.3616/a>     ="sref">u326/a> 6a href="+cogs" class="sref">cfrontendruct 6a href="+frontendode=+code=alg" class="srhrefse truct 6a href="hrefse ="+cO href="crypto/api.c#L2865926/a>e
 L332">.513/a>{e
e" nam>
 L330">.330frontendruct 6a href="+frontendode=+code=alg" class="sr*6a href="+code=cryptp" class=")ass="line" nam>
 L332">.514/a>{e
e" nam>
">.3616/a>     *6a href="+code=cryptp" class="+code=lel" class="frontendruct 6a href="+frontendode=+code=alg" class="sr*6a href="+code=cryptp" class="O href="crypto/api.c#L286595/a>{e
 L347">.3516/a>{e
 L356">.517/a>{e
 L346">.3466/a>6a href="+code=cryptp" class="salg_mod_lookup6o_alc#L2_ctxsiz>6/a>(6a hrlc#L2ef="+code=alg" class="sref">alg6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mas598/a>{e
 L347">.3519/a>{e.3676/a>     
 L355">.3556/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORTypto_alfinda>(struct 6a href="+code=cfinda>(s claode=mask" class="sref">mas5096/a>e
 L260">.5016/a>ercomref=">/*="strinass="line" nam>
 L192">.5R6/a>:ercomref="> *s="linypto_alloc_tfm" a- Locate  hrorithm and loc_tate transform="strinass="line" nam>
 L192">.5R3/a>{ercomref="> *s="lin@o_alc#L2: N#L2 of  hrorithm="strinass="line" nam>
 L192">.5R4/a>{ercomref="> *s="lin@frontend: Frontend  hrorithm href="strinass="line" nam>
 L192">.5R5/a>{ercomref="> *s="lin@href: Tref of  hrorithm="strinass="line" nam>
 L192">.5S6/a>:ercomref="> *s="lin@href: Mref for href s_ctarison="strinass="line" nam>
 L192">.56/a>);ercomref="> *="strinass="line" nam>
 L192">.568/a>{ercomref="> *s="linypto_alloc_tfm" () will first attempt 367c_tate s="al+cody7c_ade6S_strinass="line" nam>
 L192">.5b    }ercomref="> *s="lin hrorithm.  If that fails and the kernel supports dyc#Liclasy7c_adabdulestrinass="line" nam>
 L192">.5fault:ercomref="> *s="lint_modus, it will then attempt 367c_ad lnt_modu of the s#L2 n#L2 orlestrinass="line" nam>
 L192">.5/a>();ercomref="> *s="linalias.  If that fails it will send l query 367any7c_ade6nypto_a managerlestrinass="line" nam>
 L192">.5     }ercomref="> *s="lin_a e" na nam>s="alrorithm on the fly.  An Lfcount is grabbe6non thelestrinass="line" nam>
 L192">.526/a>}ercomref="> *s="lin hrorithm which is then associated with the new transform.="strinass="line" nam>
 L192">.5236/a>ercomref="> *="strinass="line" nam>
 L192">.525/a>{ercomref="> *s="linThen L283"ed transform is of   non-determinate tref.  Most peopdulestrinass="line" nam>
 L192">.556/a>{ercomref="> *s="linshould use onu of the more specific loc_tation functions such aslestrinass="line" nam>
 L192">.5>6/a>;ercomref="> *s="lin+code=cryc_tfblkr_ctxs.="strinass="line" nam>
 L192">.5l6/a>;ercomref="> *="strinass="line" nam>
 L192">.5286/a>ercomref="> *s="linInne" naof  hror hhen L283" value is s=" hror pointxs.="strinass="line" nam>
 L192">.5 - 1);ercomref="> */="strinass="line" nam>
 L192">.5 a>();eypto_alm6/a> *6a href="+code=__ypto_alm6/a> *6a clasref">crypto_alg_mod_lookup6o_alc#L2_ctxsiz>6/a>(6a hrlc#L2ef="+ass="line" nam>
 L309">.56/a>);e







e" nam>
 L326">.3266/a>        const struct 6a href="+code=crypto_typ>" class="sref">cfrontendruct 6a href="+frontendode=+code=alg" class="sref">alg6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+co                                6a href="+code=u32" class="sref">u326/a> 6a href="+coass="line" nam>
 L309">.566/a>}e
 L251">.25/a>) {e 3656/a>        6a href="O href="crypto/api.c#L2865fault:e
 L238">.2386/a>        int 6a href="O href="crypto/api.c#L2865/a>();e
 L336">.5366/a>eCRYPTO_ALG_TYPE_MASK5R6/a>:e
e" nam>
 L252">.2526/a>        struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">a56/a>);e
 L309">.5break;e
" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">afinda>(struct 6a href="+code=cfinda>(s clasalg_mod_lookup6o_alc#L2_ctxsiz>6/a>(6a hrlc#L2ef="+code=alg" class=frontendruct 6a href="+frontendode=+code=alg" class="sref">alg6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mas5406/a>e
e" nam>
 L262">.2626/a>        if (6a href="+code=IS_ERR" class="sess_ctxsiz>6/a>(6a href="+"sref">CRYPTO_ALG_TYPE_MASK5S6/a>:e
e" nam>
" class="sref">6/a>        int 6a href="+code=lel" class="PTRa>        if (6a hrPTRa>  " claf">crypto_compress_ctxsiz>6/a>(6a href="+code=alg" class="sref">al56/a>);e








 L367">.3676/a>     6/a>        int 6a href="O href="crypto/api.c#L28656a>) {e
ass="line" nam>
 L347">.35     }e
 L345">.5456/a>e
" class="sref"> 3656/a>        6a href="+code=alg" class="sref">acL34te   struct 6a href="ypto_alcL34te   s clasf">crypto_compress_ctxsiz>6/a>(6a href="+code=alg" class=frontendruct 6a href="+frontendode=EO href="crypto/api.c#L2865666/a>e
e" nL182">.1826/a>  6/a>        if (6a href="+code=IS_ERR" class="sfm_alg_typ>6/a>(6a href="+ce=mask" class="sref">mas546/a>:e








 L283">.2836/a>        3656/a>        6a href="O href="crypto/api.c#L2865486/a>e
 L309">.5g6/a>)e
de=alg" class="sref">a         6a href="+code=crypto_mod_put" class="sref">cryess_ctxsiz>6/a>(6a href="+code=alg" class="sref">al506/a>{e
">.3616/a>     6/a>        int 6a href="+code=lel" class="PTRa>        if (6a hrPTRa>  " claf">crypto_comprfm_alg_typ>6/a>(6a href="+O href="crypto/api.c#L28656/a>);e
 L332">.5G6/a>;e.3676/a>     6/a>        int 6a href="f">CRYPTO_ALG_TYPE_COMPRE56/a>);e
e" nam>
 L282">.2826/a>        int 6a href="+!od_PTR" class="sref">ERR_PTR6/a>(-6a href="+code=E">CRYPTO_ALG_TYPE_COMPRE546/a>}e








 L343">.3436/a>               5456/a>e
e" nam>
 L282">.282 namal_pendest_PTR6/a>(-6a hr namal_pendest" claf">crypto_comprcurref="+code=crypto_tfurref=ef="+"sref">CRYPTO_ALG_TYPE_MASK5566/a>e
e" nam>
">.3616/a>     6/a>        int 6a href="+co
 L297">.2976/a>   >alg6/a> = 6a href  >aef="O href="crypto/api.c#L2865>6/a>,e
 L358">. L343">.3436/a>               5486/a>e
ass="line" nam>
 L347">.3596/a>{e
 L347">.3596/a>{e
 L291">.5>6/a>;e.2836/a>       sref">alg6/a> = 6a href="+code=ERRam>
 L282">.2826/a>        int 6a href="oO href="crypto/api.c#L2865M6/a>;e
 L347">.359/a>);e.3676/a>     
 L355">.3556/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORTypto_alm6/a> *6a href="+code=__ypto_alm6/a> *6a claoO href="crypto/api.c#L2865M6/a>}e
 L345">.5>56/a>ercomref=">/*="strinass="line" nam>
 L192">.5L6/a>)ercomref="> *s="lin+code=cdestroyfm" a- Free ypto_a transform="strinass="line" nam>
 L192">.5r6/a>;ercomref="> *s="lin@mem: Start of t" aslab="strinass="line" nam>
 L192">.5r86/a>e
s649"5id
 L569" cllass="sref">rcomref="> *s="lin@t" : Transform _a frees"strinass="line" nam>
 L192">.5 id
 L2865 clas" nam>
 clcrypto/ap5.c#L3570" cllass="sref">rcomref="> *s"strinass="line" nam>
 L192">.5 6/a>{ercomref="> *s="linThis function frees up hhentransform and lny associated resources,s"strinass="line" nam>
 L192">.5 6/a>;ercomref="> *s="lin_hen drops hhen Lfcount on the associated  hrorithm.s"strinass="line" nam>
 L192">.5 6/a>;ercomref="> */="strinass="line" nam>
 L192">.5 36/a>eEXPORTypto_aldestroyfm"  href="+code=__ypto_aldestroyfm"  clasass="m" class="sref">mamp;6a href="+codmeref=",ne" nam>
 L253">.2536/a>        struct 6a href="+code=crypto_tfm" class="sref">crypto_tfm6/a> *6a href="E">CRYPTO_ALG_TYPE_COMPRE5g6/a>;eCRYPTO_ALG_TYPE_MASK5 /a>);e
 L252">.2526/a>        struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">a5 6/a>)e
 L277">.5776/a>e
 L282">.282unlikely             6a nlikely clasL182">.1826/a>  mamp;6a href="+codmeref="+E">CRYPTO_ALG_TYPE_COMPRE5g86/a>e
 L283"+code=alg" class="sref">a596/a>{e
 L260">.5>6/a>;e
 L191">crypto_alg6/a> *6a href="+code=alg" class="6a href="+code L> = 0e=tfm_siz>" class="sref">s="line" nam>
 L357">.3576/a>struct +code=alg" class="sref">a596/a>;e
 L332">.58    }e.1826/a>                  6a href="+code=tfm" class="sref">tfm6/a>->6a href="+carval" clasne" nam>
 L352">.3526/a>        6a href="+code=alg" class="sref">ef">tfm6/a>->6a ef">ef">ef="E">CRYPTO_ALG_TYPE_COMPRE5936/a>e
line" nam>
 L34.3526/a>        6a href="+code=alg" class="sref">ef">tfm6/a>->6a ef">ef">ef="af">crypto_comprfm_alg_typ>6/a>(6a href="+O href="crypto/api.c#L2865846/a>e
 L365">+code=ctic void 6a href="+code=crypto_exit_ops" cl"sref">crypto_tfm_alg_typ>6/a>(6a href="+O href="crypto/api.c#L28658/a>);e
 L296">sref">a         6a href="+code=crypto_mod_put" class="sref">cryess_ctxsiz>6/a>(6a href="+code=alg" class="sref">al5>6/a>)e
 L365">kzfreefm6/a> = 6a hrefzfrees" cl"sref">crypto_tmamp;6a href="+codmeref="+code=alg" class="sref">al5876/a>e
 L347">.358id
 L3685href="crypto/api.c#L289"5id
 L589" cl">.3676/a>     
 L355">.3556/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORTypto_aldestroyfm"  href="+code=__ypto_aldestroyfm"  cla+code=alg" class="sref">al5S6/a>:e
 L260">.5S6/a>;e
 L238">.238ypto_alhas   struct 6a href="+code=chas   s clasref">crypto_alg_mod_lookup6c#L2_ctxsiz>6/a>(6ac#L2ef="+code=alg" class="sref">alg6/a>, 6a href="+code=u32" class="sref">u326/a> 6a href="+co                                6a href="+code=u32" class="sref">u326/a> 6a href="+coass="line" nam>
 L260">.5S6/a>;eCRYPTO_ALG_TYPE_MASK5fault:e
 L238">.238re truct 6a href="re ="+c+co0code=alg" class="sref">al5S36/a>e__crypto_alloc_tfm6/a>(struct 6a href="+code=crypto_alg" class="sref">crypto_alg6/a> *6a href="+code=alg" class="sref">alg6//a> *6a href="+code=crypto_alg_mod_lookup" class="salg_mod_lookup6c#L2_ctxsiz>6/a>(6ac#L2ef="+code=alg" class="sref">alg6/a>, 6a href="+code=typ>" class="sref">typ>6/a>, 6a href="+code=mask" class="sref">mas5f46/a>e
 L345">.5f/a>);e.1826/a>  6/a>        if (6a href="+code=IS_ERR" class="sess_ctxsiz>6/a>(6a href="+"sref">CRYPTO_ALG_TYPE_MASK5f6/a>)e
e" nam>
 L296">sref">a         6a href="+code=crypto_mod_put" class="sref">cryess_ctxsiz>6/a>(6a href="+code=alg" class="sref">al5f76/a>e
 L338">.3386/a>re truct 6a href="re ="+c+co1code=alg" class="sref">al5fid
 L3685href="crypto/api.c#L299"5id
 L599" class="linass="line" nam>
 L347">.36996/a>e
 L260">.6916/a>e.2836/a>       re truct 6a href="re ="+ccode=alg" class="sref">al6926/a>e
 L347">.36936/a>e.3676/a>     
 L355">.3556/a>6a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORTypto_alhas   struct 6a href="+code=chas   s cla+code=alg" class="sref">al614/a>{e
 L314">.695/a>{eMODULE_DESCRIPTIOR_PTR6/a>(-6a hrMODULE_DESCRIPTIOR classass="sref">rassest_>"Cnam>
graphic core API"="strin+code=alg" class="sref">al616/a>{eMODULE_LICENSE_PTR6/a>(-6a hrMODULE_LICENSE classass="sref">rassest_>"PL""="strin+code=alg" class="sref">al617/a>{e


l/div>


Thenoriginal LXR software by the de=alg" chttp://sourceforge.net/projects/lxr">LXR comrunity="+codthis experiref=al version by de=alg" cmailto:lxr@o/aux.no">lxr@o/aux.no="+c.
l/div>

lxr.o/aux.no kindly hosted by de=alg" chttp://www.redpill-o/apro.no">Redpill L/apro AS="+codprovider of L/aux
e" nultest and operations services since 1995.
l/div>