Summary: | DAHLIN-00328: dahdi_dynamic kernel warning then crash due to driver flush in interrupt context | ||
Reporter: | Michael Walton (mike@farsouthnet.com) | Labels: | |
Date Opened: | 2013-10-01 01:18:18 | Date Closed: | 2014-08-15 15:01:01 |
Priority: | Critical | Regression? | |
Status: | Closed/Complete | Components: | dahdi_dynamic dahdi_dynamic_eth |
Versions: | 2.7.0 | Frequency of Occurrence | Constant |
Related Issues: | |||
Environment: | Ubuntu 10.04 with natty backport kernel 2.6.38-13 | Attachments: | |
Description: | Steps to reproduce
* Build dahdi-linux, in my case: {{make ARCH=i386 KVERS=2.6.38-13-generic-pae}} * Set up a dynamic_eth span (e.g. dynamic = eth,eth1/00:50:c2:97:93:a1/3,16,4) * Start dahdi driver, kernel WARN below: {{WARNING: at .../kernel/softirq.c:159 local_bh_enable+0x60/0x90()}} * After some time (seconds to minutes), on my system, I get a kernel freeze with no additional messages | ||
Comments: | By: Michael Walton (mike@farsouthnet.com) 2013-10-01 01:20:39.168-0500 I believe the bug is simply dahdi_dynamic.c:213 (see code snippet below from line 213 onward) - the #ifdef should in fact be #ifndef (as implied by the comment). {code:title=dahdi_dynamic.c:213} #ifdef ENABLE_TASKLETS /* If tasklets are not enabled, the above section will be called in * interrupt context and the flushing of each driver will be called in a * separate tasklet that only handles that. This is necessary since some * of the dynamic spans need to call functions that require interrupts * to be enabled but dahdi_transmit / ...sendmessage needs to be called * each time the masterspan is processed which happens with interrupts * disabled. * */ tasklet_hi_schedule(&dahdi_dynamic_flush_tlet); #else {code} Should be: {code:title=dahdi_dynamic.c:213} #ifndef ENABLE_TASKLETS {code} This change solves the problem for me. I have tried with ENABLE_TASKLETS defined and undefined, both OK. By: Russ Meyerriecks (rmeyerriecks) 2014-08-12 15:08:18.121-0500 patch in code review By: Russ Meyerriecks (rmeyerriecks) 2014-08-15 15:00:42.699-0500 Pushed into master. Thanks Michael! http://git.asterisk.org/gitweb/?p=dahdi/linux.git;a=commitdiff;h=eedb4bf9441ae3545a4ab74eac2d10fa57681355 |