Skip to content

Commit

Permalink
crypto: caam - fix printk recursion for long error texts
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Kim Phillips authored and Herbert Xu committed May 4, 2011
1 parent 701af31 commit de2954d
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 3 deletions.
6 changes: 3 additions & 3 deletions drivers/crypto/caam/caamalg.c
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
Expand Down Expand Up @@ -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));
}
Expand Down Expand Up @@ -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));
}
Expand Down
1 change: 1 addition & 0 deletions drivers/crypto/caam/error.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */

0 comments on commit de2954d

Please sign in to comment.