[thirdparty-commits] rmudgett: mISDN/trunk r136 - /mISDN/trunk/drivers/isdn/hardware/mISDN/dsp_core.c

SVN commits to the Digium third-party software repository thirdparty-commits at lists.digium.com
Tue Oct 6 10:55:41 CDT 2009


Author: rmudgett
Date: Tue Oct  6 10:55:39 2009
New Revision: 136

URL: http://svnview.digium.com/svn/thirdparty?view=rev&rev=136
Log:
mISDN eats one 512 byte kernel buffer whenever a new call is made.

Caused by dsp module control frame handlers:
*  dsp_from_down() leaked a kernel buffer every control(VOL_CHANGE_TX).
*  dsp_from_up() caused a double free of a kernel buffer if passing a
buffer to the down queue failed.

Patches:
        dsp-skb2.patch

JIRA ABE-1991

Modified:
    mISDN/trunk/drivers/isdn/hardware/mISDN/dsp_core.c

Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/dsp_core.c
URL: http://svnview.digium.com/svn/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/dsp_core.c?view=diff&rev=136&r1=135&r2=136
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/dsp_core.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/dsp_core.c Tue Oct  6 10:55:39 2009
@@ -469,7 +469,6 @@
 					dsp_bf_encrypt(dsp, skb->data, skb->len);
 				/* send packet */
 				if (mISDN_queue_down(&dsp->inst, 0, skb)) {
-					dev_kfree_skb(skb);
 					printk(KERN_ERR "%s: failed to send tx-packet\n", __FUNCTION__);
 
 					return (-EIO);
@@ -647,7 +646,9 @@
 					printk(KERN_DEBUG "%s: change tx volume to %d\n", __FUNCTION__, dsp->tx_volume);
 				printk(KERN_DEBUG "%s: change tx volume to %d\n", __FUNCTION__, dsp->tx_volume);
 				dsp_cmx_hardware(dsp->conf, dsp);
+				dev_kfree_skb(skb);
 				break;
+
 				default:
 				if (dsp_debug & DEBUG_DSP_CORE)
 					printk(KERN_DEBUG "%s: ctrl ind %x unhandled %s\n", __FUNCTION__, hh->dinfo, dsp->inst.name);




More information about the thirdparty-commits mailing list