Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux-dvb] Patch: Fix mem leak
Hi,
as promised the two patches which close the memleaks. I've not spend very much
time to find out how much impact this bug has. It is at least a mem leak.
Maybe it will kill the ioctl callbacks at all if the demux module has been
reloaded. That depends on how the list_for_each traverses the list.
The ioctl patch should be applied. The other depends on the patch i send
earlier today.
But be aware. Again untested. I just verified it compiles.
So long,
Florian
--- dvb_frontend.c-patched Fri Nov 15 12:13:41 2002
+++ dvb_frontend.c Fri Nov 15 12:26:21 2002
@@ -682,7 +682,7 @@ dvb_remove_frontend_ioctls (struct dvb_a
int (*after_ioctl) (struct dvb_frontend *frontend,
unsigned int cmd, void *arg))
{
- struct list_head *entry;
+ struct list_head *entry, *n;
dprintk ("%s\n", __FUNCTION__);
@@ -704,6 +704,22 @@ dvb_remove_frontend_ioctls (struct dvb_a
}
}
+ list_for_each_safe (entry, n, &frontend_ioctl_list) {
+ struct dvb_frontend_ioctl_data *ioctl;
+
+ ioctl = list_entry (entry, struct dvb_frontend_ioctl_data, list_head);
+
+ if (ioctl->adapter == adapter &&
+ ioctl->before_ioctl == before_ioctl &&
+ ioctl->after_ioctl == after_ioctl)
+ {
+ list_del (&ioctl->list_head);
+ kfree (ioctl);
+
+ break;
+ }
+ }
+
up (&frontend_mutex);
}
--- dvb_frontend.c-patched2 Fri Nov 15 12:26:21 2002
+++ dvb_frontend.c Fri Nov 15 12:29:52 2002
@@ -775,7 +775,7 @@ void
dvb_remove_frontend_notifier (struct dvb_adapter *adapter,
void (*callback) (fe_status_t s, void *data))
{
- struct list_head *entry;
+ struct list_head *entry, *n;
dprintk ("%s\n", __FUNCTION__);
@@ -795,6 +795,21 @@ dvb_remove_frontend_notifier (struct dvb
}
}
+ list_for_each_safe (entry, n, &frontend_notifier_list) {
+ struct dvb_frontend_notifier_data *notifier;
+
+ notifier = list_entry (entry, struct dvb_frontend_notifier_data, list_head);
+
+ if (notifier->adapter == adapter &&
+ notifier->callback == callback)
+ {
+ list_del (¬ifier->list_head);
+ kfree (notifier);
+
+ break;
+ }
+ }
+
up (&frontend_mutex);
}
Home |
Main Index |
Thread Index