[asterisk-bugs] [JIRA] (DAHLIN-328) dahdi_dynamic kernel warning then crash due to driver flush in interrupt context

Michael Walton (JIRA) noreply at issues.asterisk.org
Tue Oct 1 01:33:05 CDT 2013


    [ https://issues.asterisk.org/jira/browse/DAHLIN-328?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=210706#comment-210706 ] 

Michael Walton edited comment on DAHLIN-328 at 10/1/13 1:31 AM:
----------------------------------------------------------------

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}

This change solves the problem for me. I have tried with ENABLE_TASKLETS defined and undefined, both OK.
                
      was (Author: mike at farsouthnet.com):
    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}
                  
> dahdi_dynamic kernel warning then crash due to driver flush in interrupt context
> --------------------------------------------------------------------------------
>
>                 Key: DAHLIN-328
>                 URL: https://issues.asterisk.org/jira/browse/DAHLIN-328
>             Project: DAHDI-Linux
>          Issue Type: Bug
>      Security Level: None
>          Components: dahdi_dynamic, dahdi_dynamic_eth
>    Affects Versions: 2.7.0
>         Environment: Ubuntu 10.04 with natty backport kernel 2.6.38-13
>            Reporter: Michael Walton
>            Assignee: Russ Meyerriecks
>            Severity: Critical
>
> 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

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.asterisk.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the asterisk-bugs mailing list