Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Nov 2017 11:52:53 +0000 (UTC)
From:      Marcin Wojtas <mw@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r325578 - head/sys/dev/ena
Message-ID:  <201711091152.vA9BqrZm049817@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mw
Date: Thu Nov  9 11:52:52 2017
New Revision: 325578
URL: https://svnweb.freebsd.org/changeset/base/325578

Log:
  Destroy admin queue after freeing interrupts in ENA driver
  
  On heavy load, when interrupt handling routine was slowed down, there
  could appear memory corruption, because resources were destroyed and
  interrupt was still being handled.
  
  Submitted by: Michal Krawczyk <mk@semihalf.com>
  Reviewed by: byenduri_gmail.com
  Obtained from: Semihalf
  Sponsored by: Amazon, Inc.
  Differential Revision: https://reviews.freebsd.org/D12858

Modified:
  head/sys/dev/ena/ena.c

Modified: head/sys/dev/ena/ena.c
==============================================================================
--- head/sys/dev/ena/ena.c	Thu Nov  9 11:50:52 2017	(r325577)
+++ head/sys/dev/ena/ena.c	Thu Nov  9 11:52:52 2017	(r325578)
@@ -3862,9 +3862,13 @@ ena_detach(device_t pdev)
 
 	ena_com_delete_host_info(ena_dev);
 
-	ena_com_admin_destroy(ena_dev);
-
 	ena_free_irqs(adapter);
+
+	ena_com_abort_admin_commands(ena_dev);
+
+	ena_com_wait_for_abort_completion(ena_dev);
+
+	ena_com_admin_destroy(ena_dev);
 
 	ena_com_mmio_reg_read_request_destroy(ena_dev);
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201711091152.vA9BqrZm049817>