<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: "Sitka Text", Cochin, serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted0">
Acked-by: Kai Ji <<a href="mailto:kai.ji@intel.com" class="ContentPasted0" data-loopstyle="linkonly">kai.ji@intel.com</a>><br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Power, Ciara <ciara.power@intel.com><br>
<b>Sent:</b> 05 July 2023 11:15<br>
<b>To:</b> dev@dpdk.org <dev@dpdk.org><br>
<b>Cc:</b> gakhil@marvell.com <gakhil@marvell.com>; De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>; Power, Ciara <ciara.power@intel.com>; Cornu, Marcel D <marcel.d.cornu@intel.com>; Ji, Kai <kai.ji@intel.com><br>
<b>Subject:</b> [PATCH] crypto/ipsec_mb: fix jobs array used for burst</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">The jobs variable was global, which meant it was not thread safe.<br>
This casued a segmentation fault when running the crypto performance<br>
app, using more than one lcore for crypto processing.<br>
<br>
Moving this to the dequeue function where it is used fixes the issue.<br>
<br>
Fixes: b50b8b5b38f8 ("crypto/ipsec_mb: use burst API in AESNI")<br>
Cc: marcel.d.cornu@intel.com<br>
<br>
Signed-off-by: Ciara Power <ciara.power@intel.com><br>
---<br>
 drivers/crypto/ipsec_mb/pmd_aesni_mb.c | 5 +----<br>
 1 file changed, 1 insertion(+), 4 deletions(-)<br>
<br>
diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
index f4322d9af4..f702127f7f 100644<br>
--- a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
+++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
@@ -9,10 +9,6 @@ struct aesni_mb_op_buf_data {<br>
         uint32_t offset;<br>
 };<br>
 <br>
-#if IMB_VERSION(1, 2, 0) < IMB_VERSION_NUM<br>
-static IMB_JOB *jobs[IMB_MAX_BURST_SIZE] = {NULL};<br>
-#endif<br>
-<br>
 /**<br>
  * Calculate the authentication pre-computes<br>
  *<br>
@@ -2044,6 +2040,7 @@ aesni_mb_dequeue_burst(void *queue_pair, struct rte_crypto_op **ops,<br>
         IMB_JOB *job;<br>
         int retval, processed_jobs = 0;<br>
         uint16_t i, nb_jobs;<br>
+       IMB_JOB *jobs[IMB_MAX_BURST_SIZE] = {NULL};<br>
 <br>
         if (unlikely(nb_ops == 0 || mb_mgr == NULL))<br>
                 return 0;<br>
-- <br>
2.25.1<br>
<br>
</div>
</span></font></div>
</body>
</html>