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: David S. Miller <davem@davemloft.net>
This commit is contained in:
Коммит
dda2626b86
|
@ -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,8 +630,7 @@ static s32 nps_enet_probe(struct platform_device *pdev)
|
|||
out_netif_api:
|
||||
netif_napi_del(&priv->napi);
|
||||
out_netdev:
|
||||
if (err)
|
||||
free_netdev(ndev);
|
||||
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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче