| From afb31cd2d1a1bc3ca055fb2519ec4e9ab969ffe0 Mon Sep 17 00:00:00 2001 |
| From: Tom Lendacky <thomas.lendacky@amd.com> |
| Date: Thu, 26 Jul 2018 09:37:59 -0500 |
| Subject: crypto: ccp - Check for NULL PSP pointer at module unload |
| |
| From: Tom Lendacky <thomas.lendacky@amd.com> |
| |
| commit afb31cd2d1a1bc3ca055fb2519ec4e9ab969ffe0 upstream. |
| |
| Should the PSP initialization fail, the PSP data structure will be |
| freed and the value contained in the sp_device struct set to NULL. |
| At module unload, psp_dev_destroy() does not check if the pointer |
| value is NULL and will end up dereferencing a NULL pointer. |
| |
| Add a pointer check of the psp_data field in the sp_device struct |
| in psp_dev_destroy() and return immediately if it is NULL. |
| |
| Cc: <stable@vger.kernel.org> # 4.16.x- |
| Fixes: 2a6170dfe755 ("crypto: ccp: Add Platform Security Processor (PSP) device support") |
| Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> |
| Acked-by: Gary R Hook <gary.hook@amd.com> |
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/crypto/ccp/psp-dev.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/crypto/ccp/psp-dev.c |
| +++ b/drivers/crypto/ccp/psp-dev.c |
| @@ -732,6 +732,9 @@ void psp_dev_destroy(struct sp_device *s |
| { |
| struct psp_device *psp = sp->psp_data; |
| |
| + if (!psp) |
| + return; |
| + |
| if (psp->sev_misc) |
| kref_put(&misc_dev->refcount, sev_exit); |
| |