From: Przemek Kitszel <przemyslaw.kitszel@intel.com>
To: Michal Schmidt <mschmidt@redhat.com>, <netdev@vger.kernel.org>
Cc: Sudheer Mogilappagari <sudheer.mogilappagari@intel.com>,
Tony Nguyen <anthony.l.nguyen@intel.com>,
intel-wired-lan@lists.osuosl.org,
Jeff Kirsher <jeffrey.t.kirsher@intel.com>,
Jesse Brandeburg <jesse.brandeburg@intel.com>
Subject: Re: [Intel-wired-lan] [PATCH net] iavf: initialize waitqueues before starting watchdog_task
Date: Thu, 19 Oct 2023 11:15:53 +0200 [thread overview]
Message-ID: <1802984d-6083-ca37-afa2-e2c3c38de69e@intel.com> (raw)
In-Reply-To: <20231019071346.55949-1-mschmidt@redhat.com>
On 10/19/23 09:13, Michal Schmidt wrote:
> It is not safe to initialize the waitqueues after queueing the
> watchdog_task. It will be using them.
>
> The chance of this causing a real problem is very small, because
> there will be some sleeping before any of the waitqueues get used.
> I got a crash only after inserting an artificial sleep in iavf_probe.
>
> Queue the watchdog_task as the last step in iavf_probe. Add a comment to
> prevent repeating the mistake.
>
> Fixes: fe2647ab0c99 ("i40evf: prevent VF close returning before state transitions to DOWN")
> Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
> ---
> drivers/net/ethernet/intel/iavf/iavf_main.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c
> index 6a2e6d64bc3a..5b5c0525aa13 100644
> --- a/drivers/net/ethernet/intel/iavf/iavf_main.c
> +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
> @@ -4982,8 +4982,6 @@ static int iavf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> INIT_WORK(&adapter->finish_config, iavf_finish_config);
> INIT_DELAYED_WORK(&adapter->watchdog_task, iavf_watchdog_task);
> INIT_DELAYED_WORK(&adapter->client_task, iavf_client_task);
> - queue_delayed_work(adapter->wq, &adapter->watchdog_task,
> - msecs_to_jiffies(5 * (pdev->devfn & 0x07)));
>
> /* Setup the wait queue for indicating transition to down status */
> init_waitqueue_head(&adapter->down_waitqueue);
> @@ -4994,6 +4992,9 @@ static int iavf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> /* Setup the wait queue for indicating virtchannel events */
> init_waitqueue_head(&adapter->vc_waitqueue);
>
> + queue_delayed_work(adapter->wq, &adapter->watchdog_task,
> + msecs_to_jiffies(5 * (pdev->devfn & 0x07)));
> + /* Initialization goes on in the work. Do not add more of it below. */
> return 0;
>
> err_ioremap:
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
WARNING: multiple messages have this Message-ID (diff)
From: Przemek Kitszel <przemyslaw.kitszel@intel.com>
To: Michal Schmidt <mschmidt@redhat.com>, <netdev@vger.kernel.org>
Cc: Sudheer Mogilappagari <sudheer.mogilappagari@intel.com>,
<intel-wired-lan@lists.osuosl.org>,
Tony Nguyen <anthony.l.nguyen@intel.com>,
Jeff Kirsher <jeffrey.t.kirsher@intel.com>,
Jesse Brandeburg <jesse.brandeburg@intel.com>
Subject: Re: [Intel-wired-lan] [PATCH net] iavf: initialize waitqueues before starting watchdog_task
Date: Thu, 19 Oct 2023 11:15:53 +0200 [thread overview]
Message-ID: <1802984d-6083-ca37-afa2-e2c3c38de69e@intel.com> (raw)
In-Reply-To: <20231019071346.55949-1-mschmidt@redhat.com>
On 10/19/23 09:13, Michal Schmidt wrote:
> It is not safe to initialize the waitqueues after queueing the
> watchdog_task. It will be using them.
>
> The chance of this causing a real problem is very small, because
> there will be some sleeping before any of the waitqueues get used.
> I got a crash only after inserting an artificial sleep in iavf_probe.
>
> Queue the watchdog_task as the last step in iavf_probe. Add a comment to
> prevent repeating the mistake.
>
> Fixes: fe2647ab0c99 ("i40evf: prevent VF close returning before state transitions to DOWN")
> Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
> ---
> drivers/net/ethernet/intel/iavf/iavf_main.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c
> index 6a2e6d64bc3a..5b5c0525aa13 100644
> --- a/drivers/net/ethernet/intel/iavf/iavf_main.c
> +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
> @@ -4982,8 +4982,6 @@ static int iavf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> INIT_WORK(&adapter->finish_config, iavf_finish_config);
> INIT_DELAYED_WORK(&adapter->watchdog_task, iavf_watchdog_task);
> INIT_DELAYED_WORK(&adapter->client_task, iavf_client_task);
> - queue_delayed_work(adapter->wq, &adapter->watchdog_task,
> - msecs_to_jiffies(5 * (pdev->devfn & 0x07)));
>
> /* Setup the wait queue for indicating transition to down status */
> init_waitqueue_head(&adapter->down_waitqueue);
> @@ -4994,6 +4992,9 @@ static int iavf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> /* Setup the wait queue for indicating virtchannel events */
> init_waitqueue_head(&adapter->vc_waitqueue);
>
> + queue_delayed_work(adapter->wq, &adapter->watchdog_task,
> + msecs_to_jiffies(5 * (pdev->devfn & 0x07)));
> + /* Initialization goes on in the work. Do not add more of it below. */
> return 0;
>
> err_ioremap:
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
next prev parent reply other threads:[~2023-10-19 9:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-19 7:13 [Intel-wired-lan] [PATCH net] iavf: initialize waitqueues before starting watchdog_task Michal Schmidt
2023-10-19 7:13 ` Michal Schmidt
2023-10-19 8:14 ` [Intel-wired-lan] " Paul Menzel
2023-10-19 8:14 ` Paul Menzel
2023-10-19 9:15 ` Przemek Kitszel [this message]
2023-10-19 9:15 ` Przemek Kitszel
2023-10-20 23:51 ` Jakub Kicinski
2023-10-20 23:51 ` Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1802984d-6083-ca37-afa2-e2c3c38de69e@intel.com \
--to=przemyslaw.kitszel@intel.com \
--cc=anthony.l.nguyen@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=jeffrey.t.kirsher@intel.com \
--cc=jesse.brandeburg@intel.com \
--cc=mschmidt@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=sudheer.mogilappagari@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.