| From: Martin Habets <mhabets@solarflare.com> |
| Date: Thu, 21 Nov 2019 17:52:15 +0000 |
| Subject: sfc: Only cancel the PPS workqueue if it exists |
| |
| commit 723eb53690041740a13ac78efeaf6804f5d684c9 upstream. |
| |
| The workqueue only exists for the primary PF. For other functions |
| we hit a WARN_ON in kernel/workqueue.c. |
| |
| Fixes: 7c236c43b838 ("sfc: Add support for IEEE-1588 PTP") |
| Signed-off-by: Martin Habets <mhabets@solarflare.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/net/ethernet/sfc/ptp.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/ethernet/sfc/ptp.c |
| +++ b/drivers/net/ethernet/sfc/ptp.c |
| @@ -1310,7 +1310,8 @@ void efx_ptp_remove(struct efx_nic *efx) |
| (void)efx_ptp_disable(efx); |
| |
| cancel_work_sync(&efx->ptp_data->work); |
| - cancel_work_sync(&efx->ptp_data->pps_work); |
| + if (efx->ptp_data->pps_workwq) |
| + cancel_work_sync(&efx->ptp_data->pps_work); |
| |
| skb_queue_purge(&efx->ptp_data->rxq); |
| skb_queue_purge(&efx->ptp_data->txq); |