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"