Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto updates from Herbert Xu: "Here is the crypto update for 4.15: API: - Disambiguate EBUSY when queueing crypto request by adding ENOSPC. This change touches code outside the crypto API. - Reset settings when empty string is written to rng_current. Algorithms: - Add OSCCA SM3 secure hash. Drivers: - Remove old mv_cesa driver (replaced by marvell/cesa). - Enable rfc3686/ecb/cfb/ofb AES in crypto4xx. - Add ccm/gcm AES in crypto4xx. - Add support for BCM7278 in iproc-rng200. - Add hash support on Exynos in s5p-sss. - Fix fallback-induced error in vmx. - Fix output IV in atmel-aes. - Fix empty GCM hash in mediatek. Others: - Fix DoS potential in lib/mpi. - Fix potential out-of-order issues with padata" * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (162 commits) lib/mpi: call cond_resched() from mpi_powm() loop crypto: stm32/hash - Fix return issue on update crypto: dh - Remove pointless checks for NULL 'p' and 'g' crypto: qat - Clean up error handling in qat_dh_set_secret() crypto: dh - Don't permit 'key' or 'g' size longer than 'p' crypto: dh - Don't permit 'p' to be 0 crypto: dh - Fix double free of ctx->p hwrng: iproc-rng200 - Add support for BCM7278 dt-bindings: rng: Document BCM7278 RNG200 compatible crypto: chcr - Replace _manual_ swap with swap macro crypto: marvell - Add a NULL entry at the end of mv_cesa_plat_id_table[] hwrng: virtio - Virtio RNG devices need to be re-registered after suspend/resume crypto: atmel - remove empty functions crypto: ecdh - remove empty exit() MAINTAINERS: update maintainer for qat crypto: caam - remove unused param of ctx_map_to_sec4_sg() crypto: caam - remove unneeded edesc zeroization crypto: atmel-aes - Reset the controller before each use crypto: atmel-aes - properly set IV after {en,de}crypt hwrng: core - Reset user selected rng by writing "" to rng_current ...
This commit is contained in:
@@ -228,11 +228,8 @@ int adf_devmgr_add_dev(struct adf_accel_dev *accel_dev,
|
||||
list_add_tail(&map->list, &vfs_table);
|
||||
} else if (accel_dev->is_vf && pf) {
|
||||
/* VF on host */
|
||||
struct adf_accel_vf_info *vf_info;
|
||||
struct vf_id_map *map;
|
||||
|
||||
vf_info = pf->pf.vf_info + adf_get_vf_id(accel_dev);
|
||||
|
||||
map = adf_find_vf(adf_get_vf_num(accel_dev));
|
||||
if (map) {
|
||||
struct vf_id_map *next;
|
||||
|
@@ -443,9 +443,6 @@ static int qat_dh_set_params(struct qat_dh_ctx *ctx, struct dh *params)
|
||||
struct qat_crypto_instance *inst = ctx->inst;
|
||||
struct device *dev = &GET_DEV(inst->accel_dev);
|
||||
|
||||
if (unlikely(!params->p || !params->g))
|
||||
return -EINVAL;
|
||||
|
||||
if (qat_dh_check_params_length(params->p_size << 3))
|
||||
return -EINVAL;
|
||||
|
||||
@@ -462,11 +459,8 @@ static int qat_dh_set_params(struct qat_dh_ctx *ctx, struct dh *params)
|
||||
}
|
||||
|
||||
ctx->g = dma_zalloc_coherent(dev, ctx->p_size, &ctx->dma_g, GFP_KERNEL);
|
||||
if (!ctx->g) {
|
||||
dma_free_coherent(dev, ctx->p_size, ctx->p, ctx->dma_p);
|
||||
ctx->p = NULL;
|
||||
if (!ctx->g)
|
||||
return -ENOMEM;
|
||||
}
|
||||
memcpy(ctx->g + (ctx->p_size - params->g_size), params->g,
|
||||
params->g_size);
|
||||
|
||||
@@ -507,18 +501,22 @@ static int qat_dh_set_secret(struct crypto_kpp *tfm, const void *buf,
|
||||
|
||||
ret = qat_dh_set_params(ctx, ¶ms);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
goto err_clear_ctx;
|
||||
|
||||
ctx->xa = dma_zalloc_coherent(dev, ctx->p_size, &ctx->dma_xa,
|
||||
GFP_KERNEL);
|
||||
if (!ctx->xa) {
|
||||
qat_dh_clear_ctx(dev, ctx);
|
||||
return -ENOMEM;
|
||||
ret = -ENOMEM;
|
||||
goto err_clear_ctx;
|
||||
}
|
||||
memcpy(ctx->xa + (ctx->p_size - params.key_size), params.key,
|
||||
params.key_size);
|
||||
|
||||
return 0;
|
||||
|
||||
err_clear_ctx:
|
||||
qat_dh_clear_ctx(dev, ctx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static unsigned int qat_dh_max_size(struct crypto_kpp *tfm)
|
||||
|
@@ -567,26 +567,26 @@ qat_uclo_check_image_compat(struct icp_qat_uof_encap_obj *encap_uof_obj,
|
||||
code_page->imp_expr_tab_offset);
|
||||
if (uc_var_tab->entry_num || imp_var_tab->entry_num ||
|
||||
imp_expr_tab->entry_num) {
|
||||
pr_err("QAT: UOF can't contain imported variable to be parsed");
|
||||
pr_err("QAT: UOF can't contain imported variable to be parsed\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
neigh_reg_tab = (struct icp_qat_uof_objtable *)
|
||||
(encap_uof_obj->beg_uof +
|
||||
code_page->neigh_reg_tab_offset);
|
||||
if (neigh_reg_tab->entry_num) {
|
||||
pr_err("QAT: UOF can't contain shared control store feature");
|
||||
pr_err("QAT: UOF can't contain shared control store feature\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
if (image->numpages > 1) {
|
||||
pr_err("QAT: UOF can't contain multiple pages");
|
||||
pr_err("QAT: UOF can't contain multiple pages\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
if (ICP_QAT_SHARED_USTORE_MODE(image->ae_mode)) {
|
||||
pr_err("QAT: UOF can't use shared control store feature");
|
||||
pr_err("QAT: UOF can't use shared control store feature\n");
|
||||
return -EFAULT;
|
||||
}
|
||||
if (RELOADABLE_CTX_SHARED_MODE(image->ae_mode)) {
|
||||
pr_err("QAT: UOF can't use reloadable feature");
|
||||
pr_err("QAT: UOF can't use reloadable feature\n");
|
||||
return -EFAULT;
|
||||
}
|
||||
return 0;
|
||||
@@ -702,7 +702,7 @@ static int qat_uclo_map_ae(struct icp_qat_fw_loader_handle *handle, int max_ae)
|
||||
}
|
||||
}
|
||||
if (!mflag) {
|
||||
pr_err("QAT: uimage uses AE not set");
|
||||
pr_err("QAT: uimage uses AE not set\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
@@ -791,6 +791,7 @@ static int qat_uclo_init_reg(struct icp_qat_fw_loader_handle *handle,
|
||||
case ICP_GPA_ABS:
|
||||
case ICP_GPB_ABS:
|
||||
ctx_mask = 0;
|
||||
/* fall through */
|
||||
case ICP_GPA_REL:
|
||||
case ICP_GPB_REL:
|
||||
return qat_hal_init_gpr(handle, ae, ctx_mask, reg_type,
|
||||
@@ -800,6 +801,7 @@ static int qat_uclo_init_reg(struct icp_qat_fw_loader_handle *handle,
|
||||
case ICP_SR_RD_ABS:
|
||||
case ICP_DR_RD_ABS:
|
||||
ctx_mask = 0;
|
||||
/* fall through */
|
||||
case ICP_SR_REL:
|
||||
case ICP_DR_REL:
|
||||
case ICP_SR_RD_REL:
|
||||
@@ -809,6 +811,7 @@ static int qat_uclo_init_reg(struct icp_qat_fw_loader_handle *handle,
|
||||
case ICP_SR_WR_ABS:
|
||||
case ICP_DR_WR_ABS:
|
||||
ctx_mask = 0;
|
||||
/* fall through */
|
||||
case ICP_SR_WR_REL:
|
||||
case ICP_DR_WR_REL:
|
||||
return qat_hal_init_wr_xfer(handle, ae, ctx_mask, reg_type,
|
||||
|
Reference in New Issue
Block a user