common/octeontx2: fix crash on running procinfo
authorHarman Kalra <hkalra@marvell.com>
Mon, 29 Jun 2020 13:26:05 +0000 (18:56 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 7 Jul 2020 21:38:26 +0000 (23:38 +0200)
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>
drivers/common/octeontx2/otx2_mbox.c

index 2b78109..6df1e8e 100644 (file)
@@ -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;