[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