linux/drivers/crypto/ccp
Brijesh Singh 716c7c32ea crypto: ccp - add check to get PSP master only when PSP is detected
Paulian reported the below kernel crash on Ryzen 5 system:

BUG: unable to handle kernel NULL pointer dereference at 0000000000000073
RIP: 0010:.LC0+0x41f/0xa00
RSP: 0018:ffffa9968003bdd0 EFLAGS: 00010002
RAX: ffffffffb113b130 RBX: 0000000000000000 RCX: 00000000000005a7
RDX: 00000000000000ff RSI: ffff8b46dee651a0 RDI: ffffffffb1bd617c
RBP: 0000000000000246 R08: 00000000000251a0 R09: 0000000000000000
R10: ffffd81f11a38200 R11: ffff8b52e8e0a161 R12: ffffffffb19db220
R13: 0000000000000007 R14: ffffffffb17e4888 R15: 5dccd7affc30a31e
FS:  0000000000000000(0000) GS:ffff8b46dee40000(0000) knlGS:0000000000000000
CR2: 0000000000000073 CR3: 000080128120a000 CR4: 00000000003406e0
Call Trace:
 ? sp_get_psp_master_device+0x56/0x80
 ? map_properties+0x540/0x540
 ? psp_pci_init+0x20/0xe0
 ? map_properties+0x540/0x540
 ? sp_mod_init+0x16/0x1a
 ? do_one_initcall+0x4b/0x190
 ? kernel_init_freeable+0x19b/0x23c
 ? rest_init+0xb0/0xb0
 ? kernel_init+0xa/0x100
 ? ret_from_fork+0x22/0x40

Since Ryzen does not support PSP/SEV firmware hence i->psp_data will
NULL in all sp instances. In those cases, 'i' will point to the
list head after list_for_each_entry(). Dereferencing the head will
cause kernel crash.

Add check to call get master device only when PSP/SEV is detected.

Reported-by: Paulian Bogdan Marinca <paulian@marinca.net>
Cc: Borislav Petkov <bp@suse.de>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
CC: Gary R Hook <gary.hook@amd.com>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2018-03-03 00:03:39 +08:00
..
ccp-crypto-aes-cmac.c crypto: ccp - Prevent information leakage on export 2016-04-15 22:13:56 +08:00
ccp-crypto-aes-galois.c crypto: drivers - remove duplicate includes 2017-12-22 19:29:01 +11:00
ccp-crypto-aes-xts.c crypto: ccp - Add XTS-AES-256 support for CCP version 5 2017-08-04 09:27:44 +08:00
ccp-crypto-aes.c crypto: ccp - CCP versioning support 2016-03-11 21:19:16 +08:00
ccp-crypto-des3.c crypto: ccp - Update copyright dates for 2017. 2017-07-28 17:58:01 +08:00
ccp-crypto-main.c crypto: ccp - use -ENOSPC for transient busy indication 2017-11-03 22:11:16 +08:00
ccp-crypto-rsa.c csrypto: ccp - Expand RSA support for a v5 ccp 2017-07-28 17:58:06 +08:00
ccp-crypto-sha.c crypto: ccp - Update copyright dates for 2017. 2017-07-28 17:58:01 +08:00
ccp-crypto.h crypto: ccp - Add XTS-AES-256 support for CCP version 5 2017-08-04 09:27:44 +08:00
ccp-debugfs.c crypto: ccp - Provide an error path for debugfs setup failure 2017-07-18 17:50:53 +08:00
ccp-dev-v3.c csrypto: ccp - Expand RSA support for a v5 ccp 2017-07-28 17:58:06 +08:00
ccp-dev-v5.c crypto: ccp - remove unused variable qim 2017-11-03 21:53:30 +08:00
ccp-dev.c crypto: ccp - use -ENOSPC for transient busy indication 2017-11-03 22:11:16 +08:00
ccp-dev.h crypto: ccp - Fix XTS-AES-128 support on v5 CCPs 2017-08-04 09:27:41 +08:00
ccp-dmaengine.c crypto: ccp - Make function ccp_get_dma_chan_attr static 2018-02-15 23:26:56 +08:00
ccp-ops.c crypto: ccp - use dma_mapping_error to check map error 2017-08-17 16:53:33 +08:00
Kconfig crypto: ccp: Add Platform Security Processor (PSP) device support 2017-12-04 10:57:28 -06:00
Makefile crypto: ccp: Add Platform Security Processor (PSP) device support 2017-12-04 10:57:28 -06:00
psp-dev.c crypto: ccp: Implement SEV_PDH_CERT_EXPORT ioctl command 2017-12-04 10:57:31 -06:00
psp-dev.h crypto: ccp: Add Secure Encrypted Virtualization (SEV) command support 2017-12-04 10:57:28 -06:00
sp-dev.c crypto: ccp - add check to get PSP master only when PSP is detected 2018-03-03 00:03:39 +08:00
sp-dev.h crypto: ccp: Add Secure Encrypted Virtualization (SEV) command support 2017-12-04 10:57:28 -06:00
sp-pci.c crypto: ccp: Add Platform Security Processor (PSP) device support 2017-12-04 10:57:28 -06:00
sp-platform.c crypto: ccp - rename ccp driver initialize files as sp device 2017-07-18 18:15:54 +08:00