Hi, I also experienced this bug on my machine (bug is still present in latest dahdi-linux code in SID), so I investigated a bit into the code.
Analysis: I recognized that the sk_buff at first sight is needed in both cases of the if statement, but the memcpy to the sk_buff in the true case is totally pointless as the data is not passed on at all. It seems to be a relic of the software based HDLC times, when we passed the frame data on to the dahdi-hdlc code. The struct sk_buff is only used as a temporary buffer to remove the frame from the FIFO without any further processing, if the channel is not open. Patch: 1. Replace the struct sk_buff with a plain void * that is only allocated when needed. It’s a throw away buffer, so no need the added complexity of sk_buff. 2. Remove memcpy which copies frame data from the channel buffer to the SKB in the channel open case. 3. As a consequence of (2) the alloc/dealloc code is moved into the channel closed case of the if statement. The attached patch is tested successfully on my live EDSS1 line here in Germany. Kind Regards Karsten
721147.patch
Description: Binary data