| From f6a2e94b3f9d89cb40771ff746b16b5687650cbb Mon Sep 17 00:00:00 2001 |
| From: Geert Uytterhoeven <geert+renesas@glider.be> |
| Date: Mon, 18 Jan 2021 16:08:12 +0100 |
| Subject: sh_eth: Fix power down vs. is_opened flag ordering |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Geert Uytterhoeven <geert+renesas@glider.be> |
| |
| commit f6a2e94b3f9d89cb40771ff746b16b5687650cbb upstream. |
| |
| sh_eth_close() does a synchronous power down of the device before |
| marking it closed. Revert the order, to make sure the device is never |
| marked opened while suspended. |
| |
| While at it, use pm_runtime_put() instead of pm_runtime_put_sync(), as |
| there is no reason to do a synchronous power down. |
| |
| Fixes: 7fa2955ff70ce453 ("sh_eth: Fix sleeping function called from invalid context") |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| Reviewed-by: Sergei Shtylyov <sergei.shtylyov@gmail.com> |
| Reviewed-by: Niklas Sรถderlund <niklas.soderlund+renesas@ragnatech.se> |
| Link: https://lore.kernel.org/r/20210118150812.796791-1-geert+renesas@glider.be |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/ethernet/renesas/sh_eth.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/net/ethernet/renesas/sh_eth.c |
| +++ b/drivers/net/ethernet/renesas/sh_eth.c |
| @@ -2517,10 +2517,10 @@ static int sh_eth_close(struct net_devic |
| /* Free all the skbuffs in the Rx queue and the DMA buffer. */ |
| sh_eth_ring_free(ndev); |
| |
| - pm_runtime_put_sync(&mdp->pdev->dev); |
| - |
| mdp->is_opened = 0; |
| |
| + pm_runtime_put(&mdp->pdev->dev); |
| + |
| return 0; |
| } |
| |