On 10/03/2015 06:24 AM, Nicholas Krause wrote:
This uses the proper skb wrapper function sk_unlink in the function brcmf_sdio_txpkt_postp to properly protect against concurrent users accessing this skb_buff pointer or skb_buff_head pointer by locking the spinlock as part of the passed skb_buff_head's definition due to neither this function nor its callers locking this spinlock before calling skb_unlink in order to avoid possible concurrent access on either of these possibly shared structure pointers. Signed-off-by: Nicholas Krause <xerofoify@xxxxxxxxx> --- drivers/net/wireless/brcm80211/brcmfmac/sdio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/sdio.c index f990e3d..6b66542 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/sdio.c @@ -2308,7 +2308,7 @@ brcmf_sdio_txpkt_postp(struct brcmf_sdio *bus, struct sk_buff_head *pktq) pkt_prev = pkt_next->prev; skb_put(pkt_prev, chop_len); } - __skb_unlink(pkt_next, pktq); + skb_unlink(pkt_next, pktq);
Not sure what issue you are trying to solve here. I am pretty sure I used __skb_unlink here on purpose. To my knowledge there is no concurrency issue so please elaborate. Your commit message seems a bit hypothetical.
Regards, Arend
brcmu_pkt_buf_free_skb(pkt_next); } else { hdr = pkt_next->data + bus->tx_hdrlen - SDPCM_SWHDR_LEN;
-- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html