Commit 4d5030b6 authored by Max Kellermann's avatar Max Kellermann Committed by Mauro Carvalho Chehab

[media] dvb-core/en50221: use dvb_remove_device()

Commit da677fe1 ("[media] dvb-core/en50221: use kref to manage
struct dvb_ca_private") moved the dvb_unregister_device() call to the
kref callback, but that left lots of stale device state visible to
userspace (e.g. in sysfs).  By using dvb_remove_device() and
dvb_free_device() instead of dvb_unregister_device(), we can avoid
that.
Signed-off-by: default avatarMax Kellermann <max.kellermann@gmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 1f4ed6cd
...@@ -171,7 +171,7 @@ static void dvb_ca_private_free(struct dvb_ca_private *ca) ...@@ -171,7 +171,7 @@ static void dvb_ca_private_free(struct dvb_ca_private *ca)
{ {
unsigned int i; unsigned int i;
dvb_unregister_device(ca->dvbdev); dvb_free_device(ca->dvbdev);
for (i = 0; i < ca->slot_count; i++) for (i = 0; i < ca->slot_count; i++)
vfree(ca->slot_info[i].rx_buffer.data); vfree(ca->slot_info[i].rx_buffer.data);
...@@ -1807,6 +1807,7 @@ void dvb_ca_en50221_release(struct dvb_ca_en50221 *pubca) ...@@ -1807,6 +1807,7 @@ void dvb_ca_en50221_release(struct dvb_ca_en50221 *pubca)
for (i = 0; i < ca->slot_count; i++) { for (i = 0; i < ca->slot_count; i++) {
dvb_ca_en50221_slot_shutdown(ca, i); dvb_ca_en50221_slot_shutdown(ca, i);
} }
dvb_remove_device(ca->dvbdev);
dvb_ca_private_put(ca); dvb_ca_private_put(ca);
pubca->private = NULL; pubca->private = NULL;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment