mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	ravb: Double free on error in ravb_start_xmit()
If skb_put_padto() fails then it frees the skb.  I shifted that code
up a bit to make my error handling a little simpler.
Fixes: a0d2f20650 ("Renesas Ethernet AVB PTP clock driver")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
			
			
This commit is contained in:
		
							parent
							
								
									b40c5f4fde
								
							
						
					
					
						commit
						9199cb7677
					
				
					 1 changed files with 4 additions and 3 deletions
				
			
		|  | @ -1516,11 +1516,12 @@ static netdev_tx_t ravb_start_xmit(struct sk_buff *skb, struct net_device *ndev) | |||
| 		spin_unlock_irqrestore(&priv->lock, flags); | ||||
| 		return NETDEV_TX_BUSY; | ||||
| 	} | ||||
| 	entry = priv->cur_tx[q] % (priv->num_tx_ring[q] * NUM_TX_DESC); | ||||
| 	priv->tx_skb[q][entry / NUM_TX_DESC] = skb; | ||||
| 
 | ||||
| 	if (skb_put_padto(skb, ETH_ZLEN)) | ||||
| 		goto drop; | ||||
| 		goto exit; | ||||
| 
 | ||||
| 	entry = priv->cur_tx[q] % (priv->num_tx_ring[q] * NUM_TX_DESC); | ||||
| 	priv->tx_skb[q][entry / NUM_TX_DESC] = skb; | ||||
| 
 | ||||
| 	buffer = PTR_ALIGN(priv->tx_align[q], DPTR_ALIGN) + | ||||
| 		 entry / NUM_TX_DESC * DPTR_ALIGN; | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Dan Carpenter
						Dan Carpenter