• Ioana Ciornei's avatar
    dpaa2-eth: fix the size of the mapped SGT buffer · 54a57d1c
    Ioana Ciornei authored
    This patch fixes an error condition triggered when the code path which
    transmits a S/G frame descriptor when the skb's headroom is not enough
    for DPAA2's needs.
    
    We are greated with a splat like the one below when a SGT structure is
    recycled and that is because even though a dma_unmap is performed on the
    Tx confirmation path, the unmap is not done with the proper size.
    
    [  714.464927] WARNING: CPU: 13 PID: 0 at drivers/iommu/io-pgtable-arm.c:281 __arm_lpae_map+0x2d4/0x30c
    (...)
    [  714.465343] Call trace:
    [  714.465348]  __arm_lpae_map+0x2d4/0x30c
    [  714.465353]  __arm_lpae_map+0x114/0x30c
    [  714.465357]  __arm_lpae_map+0x114/0x30c
    [  714.465362]  __arm_lpae_map+0x114/0x30c
    [  714.465366]  arm_lpae_map+0xf4/0x180
    [  714.465373]  arm_smmu_map+0x4c/0xc0
    [  714.465379]  __iommu_map+0x100/0x2bc
    [  714.465385]  iommu_map_atomic+0x20/0x30
    [  714.465391]  __iommu_dma_map+0xb0/0x110
    [  714.465397]  iommu_dma_map_page+0xb8/0x120
    [  714.465404]  dma_map_page_attrs+0x1a8/0x210
    [  714.465413]  __dpaa2_eth_tx+0x384/0xbd0 [fsl_dpaa2_eth]
    [  714.465421]  dpaa2_eth_tx+0x84/0x134 [fsl_dpaa2_eth]
    [  714.465427]  dev_hard_start_xmit+0x10c/0x2b0
    [  714.465433]  sch_direct_xmit+0x1a0/0x550
    (...)
    
    The dpaa2-eth driver uses an area of software annotations to transmit
    necessary information from the Tx path to the Tx confirmation one. This
    SWA structure has a different layout for each kind of frame that we are
    dealing with: linear, S/G or XDP.
    
    The commit referenced was incorrectly setting up the 'sgt_size' field
    for the S/G type of SWA even though we are dealing with a linear skb
    here.
    
    Fixes: d70446ee ("dpaa2-eth: send a scatter-gather FD instead of realloc-ing")
    Reported-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
    Tested-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
    Link: https://lore.kernel.org/r/20201211171607.108034-1-ciorneiioana@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    54a57d1c
dpaa2-eth.c 115 KB