<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<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">
Can you fix the commit messages with signed-off and Fixes</div>
<div style="font-family: "Sitka Text", Cochin, serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<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>
<div style="font-family: "Sitka Text", Cochin, serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size: 11pt; color: rgb(0, 0, 0);"><b>From:</b> Stephen Hemminger <stephen@networkplumber.org><br>
<b>Sent:</b> 31 May 2023 00:34<br>
<b>To:</b> Fan Zhang <fanzhang.oss@gmail.com><br>
<b>Cc:</b> dev@dpdk.org <dev@dpdk.org><br>
<b>Subject:</b> ring name length simplification in ipsec_mb_qp_create_processed_ops_ring</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">I was looking at places in DPDK that are using rte_strlcpy which should be using strlcpy<br>
directly instead. Looking at this code in ipsec_mb, the use of strlcpy is actually<br>
not needed at all.<br>
<br>
/** Create a ring to place processed operations on */<br>
static struct rte_ring<br>
*ipsec_mb_qp_create_processed_ops_ring(<br>
struct ipsec_mb_qp *qp, unsigned int ring_size, int socket_id)<br>
{<br>
struct rte_ring *r;<br>
char ring_name[RTE_CRYPTODEV_NAME_MAX_LEN];<br>
<br>
unsigned int n = rte_strlcpy(ring_name, qp->name, sizeof(ring_name));<br>
<br>
if (n >= sizeof(ring_name))<br>
return NULL;<br>
<br>
r = rte_ring_lookup(ring_name);<br>
<br>
1. The maximum length name allowed for rte_ring is 30 characters which comes from<br>
RTE_MEMZONE_NAMESIZE- sizeof(RTE_RING_MZ_PREFIX) + 1 = 32 - 3 + 1 = 30<br>
<br>
2. RTE_CRYPTODEV_NAME_MAX_LEN is 64, qp->name is in struct ipsec_mb_qp is always the same size.<br>
<br>
3. Ring create already does a copy of name, so making a copy here is not needed.<br>
<br>
Therefore copying the name is not going to ever catch any errors. And if qp->name is<br>
too long it won't fail until ring_create().<br>
<br>
Would be better to just do something simpler like:<br>
<br>
diff --git a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c<br>
index 3e52f9567401..4af6592f12c5 100644<br>
--- a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c<br>
+++ b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c<br>
@@ -185,12 +185,7 @@ static struct rte_ring<br>
struct ipsec_mb_qp *qp, unsigned int ring_size, int socket_id)<br>
{<br>
struct rte_ring *r;<br>
- char ring_name[RTE_CRYPTODEV_NAME_MAX_LEN];<br>
-<br>
- unsigned int n = rte_strlcpy(ring_name, qp->name, sizeof(ring_name));<br>
-<br>
- if (n >= sizeof(ring_name))<br>
- return NULL;<br>
+ const char *ring_name = qp->name;<br>
<br>
r = rte_ring_lookup(ring_name);<br>
if (r) {<br>
</div>
</span></font></div>
</body>
</html>