aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto
diff options
context:
space:
mode:
authorKim Phillips <kim.phillips@freescale.com>2011-05-02 18:29:17 -0500
committerHerbert Xu <herbert@gondor.apana.org.au>2011-05-04 15:15:06 +1000
commitde2954d66408da3ae34effda777bb564fd17781b (patch)
tree4d2c85fd33cfb72ebcb6870320eba3e5f4a22a70 /drivers/crypto
parentcrypto: caam - remove unused keylen from session context (diff)
downloadlinux-dev-de2954d66408da3ae34effda777bb564fd17781b.tar.xz
linux-dev-de2954d66408da3ae34effda777bb564fd17781b.zip
crypto: caam - fix printk recursion for long error texts
during recent descriptor development, an Invalid Sequence Command error triggered a: BUG: recent printk recursion! due to insufficient memory allocated for the error text. The Invalid Sequence Command error text is the longest. The length of the maximum error string is computed as the sum of: "DECO: ": 6 "jump tgt desc idx 255: ": 23 Invalid Sequence Command text: 272 zero termination character: 1 i.e, 302 characters. Define this maximum error string length in error.h and fix caam_jr_strstatus callsites. Signed-off-by: Kim Phillips <kim.phillips@freescale.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto')
-rw-r--r--drivers/crypto/caam/caamalg.c6
-rw-r--r--drivers/crypto/caam/error.h1
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/crypto/caam/caamalg.c b/drivers/crypto/caam/caamalg.c
index 5c16019cf306..b97575e414f6 100644
--- a/drivers/crypto/caam/caamalg.c
+++ b/drivers/crypto/caam/caamalg.c
@@ -113,7 +113,7 @@ static void split_key_done(struct device *dev, u32 *desc, u32 err,
dev_err(dev, "%s %d: err 0x%x\n", __func__, __LINE__, err);
#endif
if (err) {
- char tmp[256];
+ char tmp[CAAM_ERROR_STR_MAX];
dev_err(dev, "%08x: %s\n", err, caam_jr_strstatus(tmp, err));
}
@@ -414,7 +414,7 @@ static void ipsec_esp_encrypt_done(struct device *jrdev, u32 *desc, u32 err,
offsetof(struct ipsec_esp_edesc, hw_desc));
if (err) {
- char tmp[256];
+ char tmp[CAAM_ERROR_STR_MAX];
dev_err(jrdev, "%08x: %s\n", err, caam_jr_strstatus(tmp, err));
}
@@ -454,7 +454,7 @@ static void ipsec_esp_decrypt_done(struct device *jrdev, u32 *desc, u32 err,
offsetof(struct ipsec_esp_edesc, hw_desc));
if (err) {
- char tmp[256];
+ char tmp[CAAM_ERROR_STR_MAX];
dev_err(jrdev, "%08x: %s\n", err, caam_jr_strstatus(tmp, err));
}
diff --git a/drivers/crypto/caam/error.h b/drivers/crypto/caam/error.h
index 067afc120132..02c7baa1748e 100644
--- a/drivers/crypto/caam/error.h
+++ b/drivers/crypto/caam/error.h
@@ -6,5 +6,6 @@
#ifndef CAAM_ERROR_H
#define CAAM_ERROR_H
+#define CAAM_ERROR_STR_MAX 302
extern char *caam_jr_strstatus(char *outstr, u32 status);
#endif /* CAAM_ERROR_H */