From 43412bc5139ea5a1a6a0ce127abb6e7e99b26a15 Mon Sep 17 00:00:00 2001 From: Tzafrir Cohen Date: Wed, 7 Dec 2011 19:42:20 +0000 Subject: [PATCH] xpp: bugfix -- manage xpd refcount for EC module Signed-off-by: Tzafrir Cohen git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/branches/2.5@10374 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- drivers/dahdi/xpp/xpp_dahdi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/dahdi/xpp/xpp_dahdi.c b/drivers/dahdi/xpp/xpp_dahdi.c index 2de7845..4cf3054 100644 --- a/drivers/dahdi/xpp/xpp_dahdi.c +++ b/drivers/dahdi/xpp/xpp_dahdi.c @@ -915,6 +915,7 @@ static void echocan_free(struct dahdi_chan *chan, LINE_DBG(GENERAL, xpd, pos, "mode=0x%X\n", ec->status.mode); CALL_EC_METHOD(ec_set, xbus, xpd, pos, 0); CALL_EC_METHOD(ec_update, xbus, xbus); + put_xpd(__FUNCTION__, xpd); /* aquired in xpp_echocan_create() */ } static const struct dahdi_echocan_features xpp_ec_features = { @@ -937,7 +938,7 @@ const char *xpp_echocan_name(const struct dahdi_chan *chan) xpd = chan->pvt; xbus = xpd->xbus; pos = chan->chanpos - 1; - LINE_DBG(GENERAL, xpd, pos, "%s:\n", __func__); + LINE_DBG(GENERAL, xpd, pos, "\n"); if (!ECHOOPS(xbus)) return NULL; /* @@ -986,6 +987,7 @@ int xpp_echocan_create(struct dahdi_chan *chan, *ec = phonedev->ec[pos]; (*ec)->ops = &xpp_ec_ops; (*ec)->features = xpp_ec_features; + xpd = get_xpd(__FUNCTION__, xpd); /* Returned in echocan_free() */ LINE_DBG(GENERAL, xpd, pos, "(tap=%d, param_count=%d)\n", ecp->tap_length, ecp->param_count); ret = CALL_EC_METHOD(ec_set, xbus, xpd, pos, 1);