Commit dda2626b authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'ezchip-fixes'



Pavel Skripkin says:

====================
net: ethernat: ezchip: bug fixing and code improvments

While manual code reviewing, I found some error in ezchip driver.
Two of them looks very dangerous:
  1. use-after-free in nps_enet_remove
      Accessing netdev private data after free_netdev()

  2. wrong error handling of platform_get_irq()
      It can cause passing negative irq to request_irq()

Also, in 2nd patch I removed redundant check to increase execution
speed and make code more straightforward.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents e3a5de6d 0de449d5
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -607,7 +607,7 @@ static s32 nps_enet_probe(struct platform_device *pdev)

	/* Get IRQ number */
	priv->irq = platform_get_irq(pdev, 0);
	if (!priv->irq) {
	if (priv->irq < 0) {
		dev_err(dev, "failed to retrieve <irq Rx-Tx> value from device tree\n");
		err = -ENODEV;
		goto out_netdev;
@@ -630,7 +630,6 @@ static s32 nps_enet_probe(struct platform_device *pdev)
out_netif_api:
	netif_napi_del(&priv->napi);
out_netdev:
	if (err)
	free_netdev(ndev);

	return err;
@@ -642,8 +641,8 @@ static s32 nps_enet_remove(struct platform_device *pdev)
	struct nps_enet_priv *priv = netdev_priv(ndev);

	unregister_netdev(ndev);
	free_netdev(ndev);
	netif_napi_del(&priv->napi);
	free_netdev(ndev);

	return 0;
}