drivers/ipsec_mb: fix aesni_mb set session ID
Checks
Commit Message
In the case of multiprocess, when the same session is being used for both
primary and secondary processes, the session ID will be the same.
However the pointers are not available to the secondary process, so in this
case when the session was created by a different process ID, then copy
the template session to the job again.
Fixes: 0fb4834e00af ("crypto/ipsec_mb: set and use session ID")
Cc: pablo.de.lara.guarch@intel.com
Signed-off-by: Ciara Power <ciara.power@intel.com>
---
drivers/crypto/ipsec_mb/pmd_aesni_mb.c | 8 +++++++-
drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h | 2 ++
2 files changed, 9 insertions(+), 1 deletion(-)
Comments
Acked-by: Kai Ji <kai.ji@intel.com<mailto:kai.ji@intel.com>>
> -----Original Message-----
> From: Power, Ciara <ciara.power@intel.com>
> Sent: Friday, June 30, 2023 9:35 AM
> To: dev@dpdk.org
> Cc: Ji, Kai <kai.ji@intel.com>; Power, Ciara <ciara.power@intel.com>; De Lara
> Guarch, Pablo <pablo.de.lara.guarch@intel.com>
> Subject: [PATCH] drivers/ipsec_mb: fix aesni_mb set session ID
>
> In the case of multiprocess, when the same session is being used for both
> primary and secondary processes, the session ID will be the same.
> However the pointers are not available to the secondary process, so in this
> case when the session was created by a different process ID, then copy the
> template session to the job again.
>
> Fixes: 0fb4834e00af ("crypto/ipsec_mb: set and use session ID")
> Cc: pablo.de.lara.guarch@intel.com
>
> Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
> > Subject: [PATCH] drivers/ipsec_mb: fix aesni_mb set session ID
> >
> > In the case of multiprocess, when the same session is being used for both
> > primary and secondary processes, the session ID will be the same.
> > However the pointers are not available to the secondary process, so in this
> > case when the session was created by a different process ID, then copy the
> > template session to the job again.
> >
> > Fixes: 0fb4834e00af ("crypto/ipsec_mb: set and use session ID")
> > Cc: pablo.de.lara.guarch@intel.com
> >
> > Signed-off-by: Ciara Power <ciara.power@intel.com>
>
> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Applied to dpdk-next-crypto
Thanks.
@@ -2,6 +2,8 @@
* Copyright(c) 2015-2021 Intel Corporation
*/
+#include <unistd.h>
+
#include "pmd_aesni_mb_priv.h"
struct aesni_mb_op_buf_data {
@@ -847,6 +849,7 @@ aesni_mb_session_configure(IMB_MGR *mb_mgr,
#if IMB_VERSION(1, 3, 0) < IMB_VERSION_NUM
sess->session_id = imb_set_session(mb_mgr, &sess->template_job);
+ sess->pid = getpid();
#endif
return 0;
@@ -1482,7 +1485,10 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp,
session->template_job.cipher_mode;
#if IMB_VERSION(1, 3, 0) < IMB_VERSION_NUM
- if (job->session_id != session->session_id)
+ if (session->pid != getpid()) {
+ memcpy(job, &session->template_job, sizeof(IMB_JOB));
+ imb_set_session(mb_mgr, job);
+ } else if (job->session_id != session->session_id)
#endif
memcpy(job, &session->template_job, sizeof(IMB_JOB));
@@ -854,6 +854,8 @@ struct aesni_mb_session {
/*< Template job structure */
uint32_t session_id;
/*< IPSec MB session ID */
+ pid_t pid;
+ /*< Process ID that created session */
struct {
uint16_t offset;
} iv;