On Wed, May 27, 2020 at 11:24:04AM +0200, Bartosz Golaszewski wrote: > From: Bartosz Golaszewski <bgolaszew...@baylibre.com> > > The dma_addr field in desc_data must not be overwritten until after the > new skb is mapped. Currently we do replace it with uninitialized value > in error path. This change fixes it by moving the assignment before the > label to which we jump after mapping or allocation errors. > > Fixes: 8c7bd5a454ff ("net: ethernet: mtk-star-emac: new driver") > Reported-by: Nathan Chancellor <natechancel...@gmail.com> > Signed-off-by: Bartosz Golaszewski <bgolaszew...@baylibre.com>
Tested-by: Nathan Chancellor <natechancel...@gmail.com> # build > --- > drivers/net/ethernet/mediatek/mtk_star_emac.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/mediatek/mtk_star_emac.c > b/drivers/net/ethernet/mediatek/mtk_star_emac.c > index b74349cede28..72bb624a6a68 100644 > --- a/drivers/net/ethernet/mediatek/mtk_star_emac.c > +++ b/drivers/net/ethernet/mediatek/mtk_star_emac.c > @@ -1308,6 +1308,8 @@ static int mtk_star_receive_packet(struct mtk_star_priv > *priv) > goto push_new_skb; > } > > + desc_data.dma_addr = new_dma_addr; > + > /* We can't fail anymore at this point: it's safe to unmap the skb. */ > mtk_star_dma_unmap_rx(priv, &desc_data); > > @@ -1318,7 +1320,6 @@ static int mtk_star_receive_packet(struct mtk_star_priv > *priv) > netif_receive_skb(desc_data.skb); > > push_new_skb: > - desc_data.dma_addr = new_dma_addr; > desc_data.len = skb_tailroom(new_skb); > desc_data.skb = new_skb; > > -- > 2.25.0 >