patch "staging: rtl8192e: rtl92e_fill_tx_desc fix write to mapped out" added to staging-linus
Subsystems (2)
This is a note to let you know that I've just added the patch titled
staging: rtl8192e: rtl92e_fill_tx_desc fix write to mapped out
to my staging git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
in the staging-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
Quoted 1 line
From
baabd567f87be05330faa5140f72a91960e7405aMon Sep 17 00:00:00 2001
From: Malcolm Priestley <[email protected]>
Date: Thu, 11 May 2017 18:57:43 +0100
Subject: staging: rtl8192e: rtl92e_fill_tx_desc fix write to mapped out
memory.
The driver attempts to alter memory that is mapped to PCI device.
This is because tx_fwinfo_8190pci points to skb->data
Move the pci_map_single to when completed buffer is ready to be mapped with psdec is empty to drop on mapping error.
--- drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c +9 -4
@@ -1182,8 +1182,7 @@ void rtl92e_fill_tx_desc(struct net_device *dev, struct tx_desc *pdesc, struct cb_desc *cb_desc, struct sk_buff *skb) { struct r8192_priv *priv = rtllib_priv(dev); -dma_addr_t mapping =pci_map_single (priv->pdev, skb->data, skb->len, -PCI_DMA_TODEVICE ); +dma_addr_t mapping;struct tx_fwinfo_8190pci *pTxFwInfo; pTxFwInfo = (struct tx_fwinfo_8190pci *)skb->data;
@@ -1194,8 +1193,6 @@ void rtl92e_fill_tx_desc(struct net_device *dev, struct tx_desc *pdesc, pTxFwInfo->Short =_rtl92e_query_is_short (pTxFwInfo->TxHT, pTxFwInfo->TxRate, cb_desc); -if (pci_dma_mapping_error (priv->pdev, mapping)) -netdev_err (dev,"%s(): DMA Mapping error\n" , __func__);if (cb_desc->bAMPDUEnable) { pTxFwInfo->AllowAggregation =1 ; pTxFwInfo->RxMF = cb_desc->ampdu_factor;
@@ -1230,6 +1227,14 @@ void rtl92e_fill_tx_desc(struct net_device *dev, struct tx_desc *pdesc, }memset ((u8 *)pdesc,0 ,12 ); + + mapping =pci_map_single (priv->pdev, skb->data, skb->len, +PCI_DMA_TODEVICE ); +if (pci_dma_mapping_error (priv->pdev, mapping)) { +netdev_err (dev,"%s(): DMA Mapping error\n" , __func__); +return ; + } + pdesc->LINIP =0 ; pdesc->CmdInit =1 ; pdesc->Offset =sizeof (struct tx_fwinfo_8190pci ) +8 ;
Signature · 1 line
2.13.0