/* * Synchronous Compression operations * * Copyright 2015 LG Electronics Inc. * Copyright (c) 2016, Intel Corporation * Author: Giovanni Cabiddu * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * */ #ifndef _CRYPTO_SCOMP_INT_H #define _CRYPTO_SCOMP_INT_H #include #define SCOMP_SCRATCH_SIZE 131072 struct crypto_scomp { struct crypto_tfm base; }; /** * struct scomp_alg - synchronous compression algorithm * * @alloc_ctx: Function allocates algorithm specific context * @free_ctx: Function frees context allocated with alloc_ctx * @compress: Function performs a compress operation * @decompress: Function performs a de-compress operation * @init: Initialize the cryptographic transformation object. * This function is used to initialize the cryptographic * transformation object. This function is called only once at * the instantiation time, right after the transformation context * was allocated. In case the cryptographic hardware has some * special requirements which need to be handled by software, this * function shall check for the precise requirement of the * transformation and put any software fallbacks in place. * @exit: Deinitialize the cryptographic transformation object. This is a * counterpart to @init, used to remove various changes set in * @init. * @base: Common crypto API algorithm data structure */ struct scomp_alg { void *(*alloc_ctx)(struct crypto_scomp *tfm); void (*free_ctx)(struct crypto_scomp *tfm, void *ctx); int (*compress)(struct crypto_scomp *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen, void *ctx); int (*decompress)(struct crypto_scomp *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen, void *ctx); struct crypto_alg base; }; static inline struct scomp_alg *__crypto_scomp_alg(struct crypto_alg *alg) { return container_of(alg, struct scomp_alg, base); } static inline struct crypto_scomp *__crypto_scomp_tfm(struct crypto_tfm *tfm) { return container_of(tfm, struct crypto_scomp, base); } static inline struct crypto_tfm *crypto_scomp_tfm(struct crypto_scomp *tfm) { return &tfm->base; } static inline void crypto_free_scomp(struct crypto_scomp *tfm) { crypto_destroy_tfm(tfm, crypto_scomp_tfm(tfm)); } static inline struct scomp_alg *crypto_scomp_alg(struct crypto_scomp *tfm) { return __crypto_scomp_alg(crypto_scomp_tfm(tfm)->__crt_alg); } static inline void *crypto_scomp_alloc_ctx(struct crypto_scomp *tfm) { return crypto_scomp_alg(tfm)->alloc_ctx(tfm); } static inline void crypto_scomp_free_ctx(struct crypto_scomp *tfm, void *ctx) { return crypto_scomp_alg(tfm)->free_ctx(tfm, ctx); } static inline int crypto_scomp_compress(struct crypto_scomp *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen, void *ctx) { return crypto_scomp_alg(tfm)->compress(tfm, src, slen, dst, dlen, ctx); } static inline int crypto_scomp_decompress(struct crypto_scomp *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen, void *ctx) { return crypto_scomp_alg(tfm)->decompress(tfm, src, slen, dst, dlen, ctx); } int crypto_init_scomp_ops_async(struct crypto_tfm *tfm); struct acomp_req *crypto_acomp_scomp_alloc_ctx(struct acomp_req *req); void crypto_acomp_scomp_free_ctx(struct acomp_req *req); /** * crypto_register_scomp() -- Register synchronous compression algorithm * * Function registers an implementation of a synchronous * compression algorithm * * @alg: algorithm definition * * Return: zero on success; error code in case of error */ int crypto_register_scomp(struct scomp_alg *alg); /** * crypto_unregister_scomp() -- Unregister synchronous compression algorithm * * Function unregisters an implementation of a synchronous * compression algorithm * * @alg: algorithm definition * * Return: zero on success; error code in case of error */ int crypto_unregister_scomp(struct scomp_alg *alg); #endif ='40'>40space:mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-02-06 14:16:23 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2017-02-06 14:16:23 -0800
commit396bf4cd835e62d70fad4a03a8963e61f19021f2 (patch)
tree79ac8f33554260fea1a8d43e6f8c4c5460115f45 /include/dt-bindings/clock/r8a7790-clock.h
parentd5adbfcd5f7bcc6fa58a41c5c5ada0e5c826ce2c (diff)
parent7c2cf1c4615cc2f576d0604406cdf0065f00b83b (diff)
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto fixes from Herbert Xu: - use-after-free in algif_aead - modular aesni regression when pcbc is modular but absent - bug causing IO page faults in ccp - double list add in ccp - NULL pointer dereference in qat (two patches) - panic in chcr - NULL pointer dereference in chcr - out-of-bound access in chcr * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: crypto: chcr - Fix key length for RFC4106 crypto: algif_aead - Fix kernel panic on list_del crypto: aesni - Fix failure when pcbc module is absent crypto: ccp - Fix double add when creating new DMA command crypto: ccp - Fix DMA operations when IOMMU is enabled crypto: chcr - Check device is allocated before use crypto: chcr - Fix panic on dma_unmap_sg crypto: qat - zero esram only for DH85x devices crypto: qat - fix bar discovery for c62x
Diffstat (limited to 'include/dt-bindings/clock/r8a7790-clock.h')