[asterisk-bugs] [DAHDI-linux 0017724]: [patch] Race condition in handling writes to proslic LINEFEED register

Asterisk Bug Tracker noreply at bugs.digium.com
Fri Jul 30 13:48:27 CDT 2010


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=17724 
====================================================================== 
Reported By:                alecdavis
Assigned To:                
====================================================================== 
Project:                    DAHDI-linux
Issue ID:                   17724
Category:                   wctdm24xxp
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     new
JIRA:                       DAHDI-677 
Reviewboard Link:            
====================================================================== 
Date Submitted:             2010-07-27 06:32 CDT
Last Modified:              2010-07-30 13:48 CDT
====================================================================== 
Summary:                    [patch] Race condition in handling writes to proslic
LINEFEED register
Description: 
set_lasttxhook_interruptible times out waiting for SLIC_LF_OPPENDING on 
fxs->lasttxhook to go.

Even changing the timeout in set_lasttxhook_interruptible to 2 Seconds,
the bottom half of <b>if (SLIC_LF_OPPENDING & fxs->lasttxhook)  {</b>
randomly get executed.




======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
related to          0017318 [patch] FXS Polarity Reversal on Hangup...
related to          0017764 [patch] Prevent FXS Proslic Linefeed st...
====================================================================== 

---------------------------------------------------------------------- 
 (0125392) svnbot (reporter) - 2010-07-30 13:48
 https://issues.asterisk.org/view.php?id=17724#c125392 
---------------------------------------------------------------------- 
Repository: dahdi
Revision: 9063

U   linux/trunk/drivers/dahdi/wctdm24xxp/base.c
U   linux/trunk/drivers/dahdi/wctdm24xxp/wctdm24xxp.h

------------------------------------------------------------------------
r9063 | alecdavis | 2010-07-30 13:48:26 -0500 (Fri, 30 Jul 2010) | 19
lines

SLIC_LF_OPPENDING confict between wctdm_proslic_recheck_sanity() and
set_lasttxhook_interruptible()

Problem:

'wctdm_proslic_recheck_sanity()' is executed (4 times??) every ~256ms
which monitors and clears the SLIC_LF_OPPENDING on fxs->lasttxhook when the
LF state has been reached.
  
'set_lasttxhook_interruptible()' times out after 100ms waiting from the
previous write to the SLIC_LF register, by waiting for SLIC_LF_OPPENDING to
be cleared, thus the write will fail.

Solution:
adds wctdm_proslic_check_oppending which does the monitoring and clearing
of SLIC_LF_OPPENDING, which is execute every 1ms. It also if the correct
state is not reached within 100ms, resends the lasttxhook state.


(closes issue https://issues.asterisk.org/view.php?id=17724)
Reported by: alecdavis
Patches: 
      wctdm24xxp_fxs_answer.diff4.txt uploaded by alecdavis (license 585)
Tested by: alecdavis, sruffell


------------------------------------------------------------------------

http://svn.digium.com/view/dahdi?view=rev&revision=9063 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2010-07-30 13:48 svnbot         Checkin                                      
2010-07-30 13:48 svnbot         Note Added: 0125392                          
======================================================================




More information about the asterisk-bugs mailing list