diff options
author | Ioana Radulescu <ruxandra.radulescu@nxp.com> | 2017-06-15 15:19:11 (GMT) |
---|---|---|
committer | Xie Xiaobo <xiaobo.xie@nxp.com> | 2017-09-25 07:25:37 (GMT) |
commit | b2821d386fb92f432b41d42258576eec595653f6 (patch) | |
tree | 53863a69cdc203e6edbb5548b01f9d44a08bebae /drivers | |
parent | 182f1498cc9401dae8674111a34a5adda4b2d813 (diff) | |
download | linux-b2821d386fb92f432b41d42258576eec595653f6.tar.xz |
staging: fsl-dpaa2/eth: Fix NULL pointer access
If build_frag_skb() fails, we risk accessing the skb
pointer before checking it's not NULL.
Signed-off-by: Ioana Radulescu <ruxandra.radulescu@nxp.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c index 6b5b2be..abfc908 100644 --- a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c @@ -256,10 +256,6 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, break; case dpaa2_fd_sg: skb = build_frag_skb(priv, ch, buf_data); - - /* prefetch newly built skb data */ - prefetch(skb->data); - put_page(virt_to_head_page(vaddr)); percpu_extras->rx_sg_frames++; percpu_extras->rx_sg_bytes += dpaa2_fd_get_len(fd); @@ -272,6 +268,8 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, if (unlikely(!skb)) goto err_build_skb; + prefetch(skb->data); + /* Get the timestamp value */ if (priv->ts_rx_en) { struct skb_shared_hwtstamps *shhwtstamps = skb_hwtstamps(skb); |