On 3/3/20 7:57 AM, John Allen wrote: > 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 <john.allen@xxxxxxx> Acked-by: Tom Lendacky <thomas.lendacky@xxxxxxx> > --- > drivers/crypto/ccp/sev-dev.c | 6 +++--- > 1 file 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); > - > misc_deregister(&misc_dev->misc); > + 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; > >