Johannes - just to make sure I did this correctly; I patched in the below code, recompiled, rebooted just to make sure I was loading the new modules. I brought up each interface, then I hit each one with an ifconfig <dev> down, until it got to the last one, then it hung. I hit Ctrl-C, and then: # echo $? 130 I looked in syslog as well as dmesg, and found no "ARGH" reference or line. I did see, however, the following upon creating the dvb0_? interfaces: Jul 14 14:38:24 beryllium kernel: dvb_net: created network interface dvb0_0 Jul 14 14:38:24 beryllium net.agent[8019]: add event not handled Jul 14 14:38:25 beryllium net.agent[8029]: add event not handled Jul 14 14:38:25 beryllium net.agent[8039]: add event not handled Jul 14 14:38:25 beryllium net.agent[8049]: add event not handled Jul 14 14:38:25 beryllium kernel: dvb_net: created network interface dvb0_1 Jul 14 14:38:25 beryllium kernel: dvb_net: created network interface dvb0_2 Jul 14 14:38:25 beryllium kernel: dvb_net: created network interface dvb0_3 Jul 14 14:38:25 beryllium net.agent[8059]: add event not handled And then when I went to bring down: Jul 14 14:40:43 beryllium net.agent[8280]: remove event not handled Since I see no ARGH line at console, syslog, or dmesg - can I assume we never even get to dmx_section_feed_release_filter call? Stonewall On Wednesday 13 July 2005 21:45, Johannes Stezenbach wrote: > Johannes Stezenbach wrote: > > One thing you could do is to add some debug to > > dmx_section_feed_release_filter, like: > > > > struct dvb_demux_filter *dvbdmxfilter = (struct dvb_demux_filter > > *) filter, *f; struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed > > *) feed; struct dvb_demux *dvbdmx = dvbdmxfeed->demux; > > > > if (down_interruptible (&dvbdmx->mutex)) { > > printk("ARGH: %d\n", atomic_read(dvbdmx->mutex.count)); > > return -ERESTARTSYS; > > } > > > > If the mutex count is something != 0 or 1 the someone trashed > > the memory. > > Could you please try this, and when it hangs at shutdown, ^C ifconfig > and look if the ARGH line prints 0, 1 or something totally wild. > > Thanks, > Johannes