Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Jan 2021 14:53:59 GMT
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: a0d7f3d90046 - stable/12 - safexcel: Stop using a stack buffer for the ring lock name
Message-ID:  <202101111453.10BErxde073715@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/12 has been updated by markj:

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

commit a0d7f3d9004675b0da39745a0e17747a8d55beb4
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2021-01-08 18:32:04 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2021-01-11 14:42:15 +0000

    safexcel: Stop using a stack buffer for the ring lock name
    
    mtx_init() does not make a copy of the name so the buffer must be valid
    for the lifetime of the driver instance.  Store each ring's lock's name
    in the ring structure.
    
    (cherry picked from commit 8ba6acbbe6995efcd12c375e1826d55e35a8bdc9)
---
 sys/dev/safexcel/safexcel.c     | 6 +++---
 sys/dev/safexcel/safexcel_var.h | 2 ++
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/sys/dev/safexcel/safexcel.c b/sys/dev/safexcel/safexcel.c
index 9762a20e7c4d..079e9653bfb1 100644
--- a/sys/dev/safexcel/safexcel.c
+++ b/sys/dev/safexcel/safexcel.c
@@ -783,15 +783,15 @@ safexcel_init_rings(struct safexcel_softc *sc)
 {
 	struct safexcel_cmd_descr *cdesc;
 	struct safexcel_ring *ring;
-	char buf[32];
 	uint64_t atok;
 	int i, j;
 
 	for (i = 0; i < sc->sc_config.rings; i++) {
 		ring = &sc->sc_ring[i];
 
-		snprintf(buf, sizeof(buf), "safexcel_ring%d", i);
-		mtx_init(&ring->mtx, buf, NULL, MTX_DEF);
+		snprintf(ring->lockname, sizeof(ring->lockname),
+		    "safexcel_ring%d", i);
+		mtx_init(&ring->mtx, ring->lockname, NULL, MTX_DEF);
 		STAILQ_INIT(&ring->free_requests);
 		STAILQ_INIT(&ring->ready_requests);
 		STAILQ_INIT(&ring->queued_requests);
diff --git a/sys/dev/safexcel/safexcel_var.h b/sys/dev/safexcel/safexcel_var.h
index 4c6b9b73642a..b35ea8cead7b 100644
--- a/sys/dev/safexcel/safexcel_var.h
+++ b/sys/dev/safexcel/safexcel_var.h
@@ -392,6 +392,8 @@ struct safexcel_ring {
 
 	struct safexcel_dma_mem		dma_atok;
 	bus_dma_tag_t   		data_dtag;
+
+	char				lockname[32];
 };
 
 struct safexcel_intr_handle {



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