diff options
author | John Johansen <john.johansen@canonical.com> | 2018-05-02 00:38:52 -0700 |
---|---|---|
committer | John Johansen <john.johansen@canonical.com> | 2018-05-02 00:38:52 -0700 |
commit | db5c6566ee03e097b4b7f7e207189c0906e9d1aa (patch) | |
tree | fb78e31032dcca2fcb0e9123cf11be12728f99c5 /crypto/simd.c | |
parent | 21864b027d847a6d91903a5ba219770403ba8aad (diff) | |
parent | ef734472771a62ae9f901367a40a89382a991917 (diff) | |
download | linux-crypto-db5c6566ee03e097b4b7f7e207189c0906e9d1aa.tar.gz linux-crypto-db5c6566ee03e097b4b7f7e207189c0906e9d1aa.zip |
Merge tag 'v4.17-rc3' into apparmor-next
Linux v4.17-rc3
Merge in v4.17 for LSM updates
Signed-off-by: John Johansen <john.johansen@canonical.com>
Diffstat (limited to 'crypto/simd.c')
-rw-r--r-- | crypto/simd.c | 54 |
1 files changed, 51 insertions, 3 deletions
diff --git a/crypto/simd.c b/crypto/simd.c index 88203370..ea7240be 100644 --- a/crypto/simd.c +++ b/crypto/simd.c @@ -19,9 +19,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA + * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ @@ -223,4 +221,54 @@ void simd_skcipher_free(struct simd_skcipher_alg *salg) } EXPORT_SYMBOL_GPL(simd_skcipher_free); +int simd_register_skciphers_compat(struct skcipher_alg *algs, int count, + struct simd_skcipher_alg **simd_algs) +{ + int err; + int i; + const char *algname; + const char *drvname; + const char *basename; + struct simd_skcipher_alg *simd; + + err = crypto_register_skciphers(algs, count); + if (err) + return err; + + for (i = 0; i < count; i++) { + WARN_ON(strncmp(algs[i].base.cra_name, "__", 2)); + WARN_ON(strncmp(algs[i].base.cra_driver_name, "__", 2)); + algname = algs[i].base.cra_name + 2; + drvname = algs[i].base.cra_driver_name + 2; + basename = algs[i].base.cra_driver_name; + simd = simd_skcipher_create_compat(algname, drvname, basename); + err = PTR_ERR(simd); + if (IS_ERR(simd)) + goto err_unregister; + simd_algs[i] = simd; + } + return 0; + +err_unregister: + simd_unregister_skciphers(algs, count, simd_algs); + return err; +} +EXPORT_SYMBOL_GPL(simd_register_skciphers_compat); + +void simd_unregister_skciphers(struct skcipher_alg *algs, int count, + struct simd_skcipher_alg **simd_algs) +{ + int i; + + crypto_unregister_skciphers(algs, count); + + for (i = 0; i < count; i++) { + if (simd_algs[i]) { + simd_skcipher_free(simd_algs[i]); + simd_algs[i] = NULL; + } + } +} +EXPORT_SYMBOL_GPL(simd_unregister_skciphers); + MODULE_LICENSE("GPL"); |