| From 27c5fb7a84242b66bf1e0b2fe6bf40d19bcc5c04 Mon Sep 17 00:00:00 2001 |
| From: Horia Geanta <horia.geanta@freescale.com> |
| Date: Fri, 18 Apr 2014 13:01:42 +0300 |
| Subject: crypto: caam - add allocation failure handling in SPRINTFCAT macro |
| |
| From: Horia Geanta <horia.geanta@freescale.com> |
| |
| commit 27c5fb7a84242b66bf1e0b2fe6bf40d19bcc5c04 upstream. |
| |
| GFP_ATOMIC memory allocation could fail. |
| In this case, avoid NULL pointer dereference and notify user. |
| |
| Cc: Kim Phillips <kim.phillips@freescale.com> |
| Signed-off-by: Horia Geanta <horia.geanta@freescale.com> |
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/crypto/caam/error.c | 10 +++++++--- |
| 1 file changed, 7 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/crypto/caam/error.c |
| +++ b/drivers/crypto/caam/error.c |
| @@ -16,9 +16,13 @@ |
| char *tmp; \ |
| \ |
| tmp = kmalloc(sizeof(format) + max_alloc, GFP_ATOMIC); \ |
| - sprintf(tmp, format, param); \ |
| - strcat(str, tmp); \ |
| - kfree(tmp); \ |
| + if (likely(tmp)) { \ |
| + sprintf(tmp, format, param); \ |
| + strcat(str, tmp); \ |
| + kfree(tmp); \ |
| + } else { \ |
| + strcat(str, "kmalloc failure in SPRINTFCAT"); \ |
| + } \ |
| } |
| |
| static void report_jump_idx(u32 status, char *outstr) |