Message ID | 20230605-txgbe-wake-v2-1-82e1f0441c72@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | e7214663e023be5e518e8d0d8f2dca6848731652 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next,v2] net: txgbe: Avoid passing uninitialised parameter to pci_wake_from_d3() | expand |
On Tue, Jun 06, 2023 at 03:49:45PM +0200, Simon Horman wrote: > txgbe_shutdown() relies on txgbe_dev_shutdown() to initialise > wake by passing it by reference. However, txgbe_dev_shutdown() > doesn't use this parameter at all. > > wake is then passed uninitialised by txgbe_dev_shutdown() > to pci_wake_from_d3(). > > Resolve this problem by: > * Removing the unused parameter from txgbe_dev_shutdown() > * Removing the uninitialised variable wake from txgbe_dev_shutdown() > * Passing false to pci_wake_from_d3() - this assumes that > although uninitialised wake was in practice false (0). > > I'm not sure that this counts as a bug, as I'm not sure that > it manifests in any unwanted behaviour. But in any case, the issue > was introduced by: > > 3ce7547e5b71 ("net: txgbe: Add build support for txgbe") > > Flagged by Smatch as: > > .../txgbe_main.c:486 txgbe_shutdown() error: uninitialized symbol 'wake'. > > No functional change intended. > Compile tested only. > > Signed-off-by: Simon Horman <horms@kernel.org> > Reviewed-by: Jiawen Wu <jiawenwu@trustnetic.com> Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com> > --- > Changes in v2: > - Correct referenced commit: it self referential in v1 > - Add added Reviewed-by tag from Jiawen Wu > - Link to v1: https://lore.kernel.org/r/20230605-txgbe-wake-v1-1-ea6c441780f9@kernel.org > --- > drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c > index 0f0d9fa1cde1..cfe47f3d2503 100644 > --- a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c > +++ b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c > @@ -457,7 +457,7 @@ static int txgbe_close(struct net_device *netdev) > return 0; > } > > -static void txgbe_dev_shutdown(struct pci_dev *pdev, bool *enable_wake) > +static void txgbe_dev_shutdown(struct pci_dev *pdev) > { > struct wx *wx = pci_get_drvdata(pdev); > struct net_device *netdev; > @@ -477,12 +477,10 @@ static void txgbe_dev_shutdown(struct pci_dev *pdev, bool *enable_wake) > > static void txgbe_shutdown(struct pci_dev *pdev) > { > - bool wake; > - > - txgbe_dev_shutdown(pdev, &wake); > + txgbe_dev_shutdown(pdev); > > if (system_state == SYSTEM_POWER_OFF) { > - pci_wake_from_d3(pdev, wake); > + pci_wake_from_d3(pdev, false); > pci_set_power_state(pdev, PCI_D3hot); > } > } >
Hello: This patch was applied to netdev/net-next.git (main) by David S. Miller <davem@davemloft.net>: On Tue, 06 Jun 2023 15:49:45 +0200 you wrote: > txgbe_shutdown() relies on txgbe_dev_shutdown() to initialise > wake by passing it by reference. However, txgbe_dev_shutdown() > doesn't use this parameter at all. > > wake is then passed uninitialised by txgbe_dev_shutdown() > to pci_wake_from_d3(). > > [...] Here is the summary with links: - [net-next,v2] net: txgbe: Avoid passing uninitialised parameter to pci_wake_from_d3() https://git.kernel.org/netdev/net-next/c/e7214663e023 You are awesome, thank you!
diff --git a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c index 0f0d9fa1cde1..cfe47f3d2503 100644 --- a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c +++ b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c @@ -457,7 +457,7 @@ static int txgbe_close(struct net_device *netdev) return 0; } -static void txgbe_dev_shutdown(struct pci_dev *pdev, bool *enable_wake) +static void txgbe_dev_shutdown(struct pci_dev *pdev) { struct wx *wx = pci_get_drvdata(pdev); struct net_device *netdev; @@ -477,12 +477,10 @@ static void txgbe_dev_shutdown(struct pci_dev *pdev, bool *enable_wake) static void txgbe_shutdown(struct pci_dev *pdev) { - bool wake; - - txgbe_dev_shutdown(pdev, &wake); + txgbe_dev_shutdown(pdev); if (system_state == SYSTEM_POWER_OFF) { - pci_wake_from_d3(pdev, wake); + pci_wake_from_d3(pdev, false); pci_set_power_state(pdev, PCI_D3hot); } }