On 02/06/2017 02:35 PM, David Laight wrote:

Implement the get_wol() and set_wol() helpers in the Annapurna Labs
Alpine Ethernet driver.
---
 drivers/net/ethernet/annapurna/al_eth.c | 44 +++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/drivers/net/ethernet/annapurna/al_eth.c 
b/drivers/net/ethernet/annapurna/al_eth.c
index 8dd84f66b5d1..d06a75a49ce5 100644
--- a/drivers/net/ethernet/annapurna/al_eth.c
+++ b/drivers/net/ethernet/annapurna/al_eth.c
@@ -2519,10 +2519,54 @@ static u32 al_eth_get_rxfh_indir_size(struct net_device 
*netdev)
        return AL_ETH_RX_RSS_TABLE_SIZE;
 }

+static void al_eth_get_wol(struct net_device *netdev,
+                          struct ethtool_wolinfo *wol)
+{
+       struct al_eth_adapter *adapter = netdev_priv(netdev);
+       struct phy_device *phydev;
+
+       wol->wolopts = adapter->wol;
+
+       if ((adapter) && (adapter->phy_exist) && (adapter->mdio_bus)) {

    Now that's somewhat stupid looking... does the whole driver use this 
"style"?

Not only that, in one of the two functions it is followed by:

+       device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol);

Which assumes that 'adapter' is not NULL.
Some verifiers will detect that as a possible NULL pointer dereference.

   I only meant unneeded parens. :-)

[...]

        David

MBR, Sergei

Reply via email to