Commit 1e16322d authored by Marek Vasut's avatar Marek Vasut Committed by Herbert Xu

crypto: caam - Clean up report_ccb_status()

Clean this function up and rework it into sensible shape. This function
now contains one single dev_err() instead of the previous insanity full
of memory allocation, possible stack overwriting, chaotic string handling
and use of SPRINTFCAT().
Signed-off-by: default avatarMarek Vasut <marex@denx.de>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Horia Geanta <horia.geanta@freescale.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 526243cc
...@@ -171,46 +171,41 @@ static const char * const rng_err_id_list[] = { ...@@ -171,46 +171,41 @@ static const char * const rng_err_id_list[] = {
static void report_ccb_status(struct device *jrdev, u32 status, static void report_ccb_status(struct device *jrdev, u32 status,
const char *error, char *__outstr) const char *error, char *__outstr)
{ {
char outstr[CAAM_ERROR_STR_MAX];
u8 cha_id = (status & JRSTA_CCBERR_CHAID_MASK) >> u8 cha_id = (status & JRSTA_CCBERR_CHAID_MASK) >>
JRSTA_CCBERR_CHAID_SHIFT; JRSTA_CCBERR_CHAID_SHIFT;
u8 err_id = status & JRSTA_CCBERR_ERRID_MASK; u8 err_id = status & JRSTA_CCBERR_ERRID_MASK;
u8 idx = (status & JRSTA_DECOERR_INDEX_MASK) >> u8 idx = (status & JRSTA_DECOERR_INDEX_MASK) >>
JRSTA_DECOERR_INDEX_SHIFT; JRSTA_DECOERR_INDEX_SHIFT;
char *idx_str;
sprintf(outstr, "%s: ", error); const char *cha_str = "unidentified cha_id value 0x";
char cha_err_code[3] = { 0 };
const char *err_str = "unidentified err_id value 0x";
char err_err_code[3] = { 0 };
if (status & JRSTA_DECOERR_JUMP) if (status & JRSTA_DECOERR_JUMP)
strcat(outstr, "jump tgt desc idx "); idx_str = "jump tgt desc idx";
else else
strcat(outstr, "desc idx "); idx_str = "desc idx";
SPRINTFCAT(outstr, "%d: ", idx, sizeof("255"));
if (cha_id < ARRAY_SIZE(cha_id_list)) { if (cha_id < ARRAY_SIZE(cha_id_list))
SPRINTFCAT(outstr, "%s: ", cha_id_list[cha_id], cha_str = cha_id_list[cha_id];
strlen(cha_id_list[cha_id])); else
} else { snprintf(cha_err_code, sizeof(cha_err_code), "%02x", cha_id);
SPRINTFCAT(outstr, "unidentified cha_id value 0x%02x: ",
cha_id, sizeof("ff"));
}
if ((cha_id << JRSTA_CCBERR_CHAID_SHIFT) == JRSTA_CCBERR_CHAID_RNG && if ((cha_id << JRSTA_CCBERR_CHAID_SHIFT) == JRSTA_CCBERR_CHAID_RNG &&
err_id < ARRAY_SIZE(rng_err_id_list) && err_id < ARRAY_SIZE(rng_err_id_list) &&
strlen(rng_err_id_list[err_id])) { strlen(rng_err_id_list[err_id])) {
/* RNG-only error */ /* RNG-only error */
SPRINTFCAT(outstr, "%s", rng_err_id_list[err_id], err_str = rng_err_id_list[err_id];
strlen(rng_err_id_list[err_id])); } else if (err_id < ARRAY_SIZE(err_id_list))
} else if (err_id < ARRAY_SIZE(err_id_list)) { err_str = err_id_list[err_id];
SPRINTFCAT(outstr, "%s", err_id_list[err_id], else
strlen(err_id_list[err_id])); snprintf(err_err_code, sizeof(err_err_code), "%02x", err_id);
} else {
SPRINTFCAT(outstr, "unidentified err_id value 0x%02x",
err_id, sizeof("ff"));
}
dev_err(jrdev, "%08x: %s\n", status, outstr); dev_err(jrdev, "%08x: %s: %s %d: %s%s: %s%s\n",
status, error, idx_str, idx,
cha_str, cha_err_code,
err_str, err_err_code);
} }
static void report_jump_status(struct device *jrdev, u32 status, static void report_jump_status(struct device *jrdev, u32 status,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment