The branch main has been updated by mw:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=433ab9b6987b42b3e5b25b8b5dc7e5178c7ef9bb

commit 433ab9b6987b42b3e5b25b8b5dc7e5178c7ef9bb
Author:     Artur Rojek <a...@semihalf.com>
AuthorDate: 2021-08-12 08:34:25 +0000
Commit:     Marcin Wojtas <m...@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);
 }
 
_______________________________________________
dev-commits-src-main@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "dev-commits-src-main-unsubscr...@freebsd.org"

Reply via email to