s390/zcrypt: fix zcard and zqueue hot-unplug memleak
commit70fac8088cupstream. Tests with kvm and a kmemdebug kernel showed, that on hot unplug the zcard and zqueue structs for the unplugged card or queue are not properly freed because of a mismatch with get/put for the embedded kref counter. This fix now adjusts the handling of the kref counters. With init the kref counter starts with 1. This initial value needs to drop to zero with the unregister of the card or queue to trigger the release and free the object. Fixes:29c2680fd2("s390/ap: fix ap devices reference counting") Reported-by: Marc Hartmayer <mhartmay@linux.ibm.com> Signed-off-by: Harald Freudenberger <freude@linux.ibm.com> Cc: stable@vger.kernel.org Reviewed-by: Julian Wiedmann <jwi@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e534a4b139
commit
026499a9c2
2 changed files with 2 additions and 0 deletions
|
|
@ -192,5 +192,6 @@ void zcrypt_card_unregister(struct zcrypt_card *zc)
|
|||
spin_unlock(&zcrypt_list_lock);
|
||||
sysfs_remove_group(&zc->card->ap_dev.device.kobj,
|
||||
&zcrypt_card_attr_group);
|
||||
zcrypt_card_put(zc);
|
||||
}
|
||||
EXPORT_SYMBOL(zcrypt_card_unregister);
|
||||
|
|
|
|||
|
|
@ -223,5 +223,6 @@ void zcrypt_queue_unregister(struct zcrypt_queue *zq)
|
|||
sysfs_remove_group(&zq->queue->ap_dev.device.kobj,
|
||||
&zcrypt_queue_attr_group);
|
||||
zcrypt_card_put(zc);
|
||||
zcrypt_queue_put(zq);
|
||||
}
|
||||
EXPORT_SYMBOL(zcrypt_queue_unregister);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue