Thread (15 messages) 15 messages, 5 authors, 2015-01-07

Re: p54usb kernel panic on recent mainline kernels

From: Christian Lamparter <chunkeey@googlemail.com>
Date: 2014-12-27 10:10:20

[Readded Larry to the CC]

On Saturday, December 27, 2014 12:15:58 AM Christopher Chavez wrote:
quoted
My bisection led to a branch commit d17ec4d as the "bad" commit. 
Rather than finding out where the bisection went bad, I added 
code to check skb->tail, skb->end, and the length to be added.
At the time of the call that panics, there are 6 bytes between
tail and end with 8 bytes needed.

I will be looking for the place where the driver calculates how
large the skb should be.
I think this narrows it down. However, I'm not 100% sure yet if the
problem is just because of "mac80211: don't resize skbs needlessly".
From looking at a other patch from that time and context. I think: "
commit ca34e3b5c808385b175650605faa29e71e91991b
Author: Ido Yariv [off-list ref]
Date:   Tue Jul 29 15:38:53 2014 +0300

    mac80211: Fix accounting of the tailroom-needed counter [1]
    
    When hw acceleration is enabled, the GENERATE_IV or PUT_IV_SPACE flags
    will only require headroom space. Consequently, the tailroom-needed
    counter can safely be decremented."

changed/broke things for p54* (note: cw1200 could be affected as well?
This driver also modifies the tailroom for skbs in cw1200_tx_h_crypt).
Previously, the driver didn't need to manage the tailroom. If the 
IEEE80211_KEY_FLAG_GENERATE_IV flag was set, mac80211 would take care of
resizing the skb at the right time and just in one place [of course the
downside was that mac80211 did the resize needlessly].

I can think of several ways of dealing with this issue:

 1. move the expand and trim tailroom into the driver.
    AFAICT this would add an additional resize [at a bad time].

 2. add extra IEEE80211_KEY_FLAG_ or HW_FLAG to restore the old behavior.
    This should be possible and relatively simple. But we/I have to be
    especially careful to differentiate properly between the old and new.
    [i.e.: I need to know what the deal is behind: 
    IEEE80211_KEY_FLAG_GENERATE_IV_MGMT in this case? Looks like it can
    be ignored?]

 3. suggestions?
    [No, I'm not going to touch crypto_tx_tailroom_needed_cnt outside of
    mac80211 :D]

Regards,
Christian

[1] <http://www.spinics.net/lists/linux-wireless/msg125374.html>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help