path: root/drivers/crypto/ccp/sev-dev.c
diff options
authorJohn Allen <>2020-03-03 07:57:23 -0600
committerHerbert Xu <>2020-03-12 23:00:12 +1100
commit1f14b57ffc0adcbba0cf35214b0a6129ceae9d09 (patch)
treea675171177195ece13b36c3b30c2f8cded38c348 /drivers/crypto/ccp/sev-dev.c
parent7548bf8c17d84607c106bd45d81834afd95a2edb (diff)
crypto: ccp - Cleanup misc_dev on sev_exit()
Explicitly free and clear misc_dev in sev_exit(). Since devm_kzalloc() associates misc_dev with the first device that gets probed, change from devm_kzalloc() to kzalloc() and explicitly free memory in sev_exit() as the first device probed is not guaranteed to be the last device released. To ensure that the variable gets properly set to NULL, remove the local definition of misc_dev. Fixes: 200664d5237f ("crypto: ccp: Add Secure Encrypted Virtualization (SEV) command support") Signed-off-by: John Allen <> Acked-by: Tom Lendacky <> Signed-off-by: Herbert Xu <>
Diffstat (limited to 'drivers/crypto/ccp/sev-dev.c')
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/crypto/ccp/sev-dev.c b/drivers/crypto/ccp/sev-dev.c
index e467860f797d..aa591dae067c 100644
--- a/drivers/crypto/ccp/sev-dev.c
+++ b/drivers/crypto/ccp/sev-dev.c
@@ -896,9 +896,9 @@ EXPORT_SYMBOL_GPL(sev_guest_df_flush);
static void sev_exit(struct kref *ref)
- struct sev_misc_dev *misc_dev = container_of(ref, struct sev_misc_dev, refcount);
+ kfree(misc_dev);
+ misc_dev = NULL;
static int sev_misc_init(struct sev_device *sev)
@@ -916,7 +916,7 @@ static int sev_misc_init(struct sev_device *sev)
if (!misc_dev) {
struct miscdevice *misc;
- misc_dev = devm_kzalloc(dev, sizeof(*misc_dev), GFP_KERNEL);
+ misc_dev = kzalloc(sizeof(*misc_dev), GFP_KERNEL);
if (!misc_dev)
return -ENOMEM;