summaryrefslogtreecommitdiffstats
path: root/drivers/crypto/talitos.h
diff options
context:
space:
mode:
authorAaron Sierra <asierra@xes-inc.com>2015-08-05 23:52:08 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2015-08-10 17:19:05 +0200
commit35a3bb3d39d5a84b1adc02e5289d01a33d1073b6 (patch)
treeb5cf6032c6c886a512433d50fae0a3ba8312c9ca /drivers/crypto/talitos.h
parentARM: imx_v6_v7_defconfig: Select CAAM (diff)
downloadlinux-35a3bb3d39d5a84b1adc02e5289d01a33d1073b6.tar.xz
linux-35a3bb3d39d5a84b1adc02e5289d01a33d1073b6.zip
crypto: talitos - Prevent panic in probe error path
The probe error path for this driver, for all intents and purposes, is the talitos_remove() function due to the common "goto err_out". Without this patch applied, talitos_remove() will panic under these two conditions: 1. If the RNG device hasn't been registered via talitos_register_rng() prior to entry into talitos_remove(), then the attempt to unregister the RNG "device" will cause a panic. 2. If the priv->chan array has not been allocated prior to entry into talitos_remove(), then the per-channel FIFO cleanup will panic because of the dereference of that NULL "array". Both of the above scenarios occur if talitos_probe_irq() fails. This patch resolves issue #1 by introducing a boolean to mask the hwrng_unregister() call in talitos_unregister_rng() if RNG device registration was unsuccessful. It resolves issue #2 by checking that priv->chan is not NULL in the per-channel FIFO cleanup for loop. Signed-off-by: Aaron Sierra <asierra@xes-inc.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/talitos.h')
-rw-r--r--drivers/crypto/talitos.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/crypto/talitos.h b/drivers/crypto/talitos.h
index 163cfe733bf0..0090f3211d68 100644
--- a/drivers/crypto/talitos.h
+++ b/drivers/crypto/talitos.h
@@ -149,6 +149,7 @@ struct talitos_private {
/* hwrng device */
struct hwrng rng;
+ bool rng_registered;
};
extern int talitos_submit(struct device *dev, int ch, struct talitos_desc *desc,