mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-25 20:10:23 +09:00
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:
committed by
Greg Kroah-Hartman
parent
e534a4b139
commit
026499a9c2
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user