git: 433ab9b6987b - main - ena: Prevent reset after device destruction
Marcin Wojtas
mw at FreeBSD.org
Wed Sep 1 23:07:35 UTC 2021
The branch main has been updated by mw:
URL: https://cgit.FreeBSD.org/src/commit/?id=433ab9b6987b42b3e5b25b8b5dc7e5178c7ef9bb
commit 433ab9b6987b42b3e5b25b8b5dc7e5178c7ef9bb
Author: Artur Rojek <ar at semihalf.com>
AuthorDate: 2021-08-12 08:34:25 +0000
Commit: Marcin Wojtas <mw at FreeBSD.org>
CommitDate: 2021-09-01 23:06:06 +0000
ena: Prevent reset after device destruction
Check for ENA_FLAG_TRIGGER_RESET inside a locked context in order to
avoid potential race conditions with ena_destroy_device. This aligns the
reset task logic with the Linux driver.
Obtained from: Semihalf
MFC after: 2 weeks
Sponsored by: Amazon, Inc.
---
sys/dev/ena/ena.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c
index 84d58c844332..7615bf4d7cc0 100644
--- a/sys/dev/ena/ena.c
+++ b/sys/dev/ena/ena.c
@@ -3539,15 +3539,11 @@ ena_reset_task(void *arg, int pending)
{
struct ena_adapter *adapter = (struct ena_adapter *)arg;
- if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))) {
- ena_log(adapter->pdev, WARN,
- "device reset scheduled but trigger_reset is off\n");
- return;
- }
-
ENA_LOCK_LOCK(adapter);
- ena_destroy_device(adapter, false);
- ena_restore_device(adapter);
+ if (likely(ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))) {
+ ena_destroy_device(adapter, false);
+ ena_restore_device(adapter);
+ }
ENA_LOCK_UNLOCK(adapter);
}
More information about the dev-commits-src-main
mailing list