[v2] common/octeontx2: fix seg fault on running procinfo

Message ID 1593437165-18065-1-git-send-email-hkalra@marvell.com (mailing list archive)
State Accepted, archived
Delegated to: Jerin Jacob
Headers
Series [v2] common/octeontx2: fix seg fault on running procinfo |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-nxp-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK
ci/travis-robot success Travis build: passed
ci/iol-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Harman Kalra June 29, 2020, 1:26 p.m. UTC
  Segmentation fault has been observed while running procinfo
with reset options i.e. --stats-reset and --xstats-reset.
Reason is procinfo runs as a secondary process and tries to
hold a lock which is part of struct mdev, which was not
allocated as part of shared memory.

Fixes: 5ca59711f771 ("common/octeontx2: add mailbox base support infra")
Cc: stable@dpdk.org

Signed-off-by: Harman Kalra <hkalra@marvell.com>
---
*V2: Minor corrections in commit message.

 drivers/common/octeontx2/otx2_mbox.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
  

Comments

Jerin Jacob June 30, 2020, 10:44 a.m. UTC | #1
On Mon, Jun 29, 2020 at 6:56 PM Harman Kalra <hkalra@marvell.com> wrote:
>
> Segmentation fault has been observed while running procinfo
> with reset options i.e. --stats-reset and --xstats-reset.
> Reason is procinfo runs as a secondary process and tries to
> hold a lock which is part of struct mdev, which was not
> allocated as part of shared memory.
>
> Fixes: 5ca59711f771 ("common/octeontx2: add mailbox base support infra")
> Cc: stable@dpdk.org
>
> Signed-off-by: Harman Kalra <hkalra@marvell.com>

Acked-by: Jerin Jacob <jerinj@marvell.com>

Delegated this patch to Thomas as it belongs to common/



> ---
> *V2: Minor corrections in commit message.
>
>  drivers/common/octeontx2/otx2_mbox.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/common/octeontx2/otx2_mbox.c b/drivers/common/octeontx2/otx2_mbox.c
> index 2b7810929..6df1e8ea6 100644
> --- a/drivers/common/octeontx2/otx2_mbox.c
> +++ b/drivers/common/octeontx2/otx2_mbox.c
> @@ -9,6 +9,7 @@
>
>  #include <rte_atomic.h>
>  #include <rte_cycles.h>
> +#include <rte_malloc.h>
>
>  #include "otx2_mbox.h"
>  #include "otx2_dev.h"
> @@ -36,7 +37,7 @@ otx2_mbox_fini(struct otx2_mbox *mbox)
>  {
>         mbox->reg_base = 0;
>         mbox->hwbase = 0;
> -       free(mbox->dev);
> +       rte_free(mbox->dev);
>         mbox->dev = NULL;
>  }
>
> @@ -128,7 +129,9 @@ otx2_mbox_init(struct otx2_mbox *mbox, uintptr_t hwbase, uintptr_t reg_base,
>                 return -ENODEV;
>         }
>
> -       mbox->dev = malloc(ndevs * sizeof(struct otx2_mbox_dev));
> +       mbox->dev = rte_zmalloc("mbox dev",
> +                               ndevs * sizeof(struct otx2_mbox_dev),
> +                               OTX2_ALIGN);
>         if (!mbox->dev) {
>                 otx2_mbox_fini(mbox);
>                 return -ENOMEM;
> --
> 2.18.0
>
  

Patch

diff --git a/drivers/common/octeontx2/otx2_mbox.c b/drivers/common/octeontx2/otx2_mbox.c
index 2b7810929..6df1e8ea6 100644
--- a/drivers/common/octeontx2/otx2_mbox.c
+++ b/drivers/common/octeontx2/otx2_mbox.c
@@ -9,6 +9,7 @@ 
 
 #include <rte_atomic.h>
 #include <rte_cycles.h>
+#include <rte_malloc.h>
 
 #include "otx2_mbox.h"
 #include "otx2_dev.h"
@@ -36,7 +37,7 @@  otx2_mbox_fini(struct otx2_mbox *mbox)
 {
 	mbox->reg_base = 0;
 	mbox->hwbase = 0;
-	free(mbox->dev);
+	rte_free(mbox->dev);
 	mbox->dev = NULL;
 }
 
@@ -128,7 +129,9 @@  otx2_mbox_init(struct otx2_mbox *mbox, uintptr_t hwbase, uintptr_t reg_base,
 		return -ENODEV;
 	}
 
-	mbox->dev = malloc(ndevs * sizeof(struct otx2_mbox_dev));
+	mbox->dev = rte_zmalloc("mbox dev",
+				ndevs * sizeof(struct otx2_mbox_dev),
+				OTX2_ALIGN);
 	if (!mbox->dev) {
 		otx2_mbox_fini(mbox);
 		return -ENOMEM;