* [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked
[not found] <11490938158-936-1-git-send-email-shreyansh.jain@nxp.com>
@ 2017-03-31 5:35 ` Shreyansh Jain
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 2/3] mempool: introduce ring mempool driver Shreyansh Jain
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Shreyansh Jain @ 2017-03-31 5:35 UTC (permalink / raw)
To: olivier.matz
Cc: dev, thomas.monjalon, hemant.agrawal, david.hunt, Shreyansh Jain
Fixes: 449c49b93a6b ("mempool: support handler operations")
In case the stack or ring mempool handler are compiled as shared
library and not linked in with test binary, segfault is reported.
This is because return value of rte_mempool_set_ops_byname is not
being checked in rte_mempool_ops_alloc.
This patch handles error returned from rte_mempool_set_ops_byname
when a mempool is not found.
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
---
v3:
* resending as v2 didn't contain version
* Added this fix after v1 as segault occurs when an unregistered mempool
handler is requested
lib/librte_mempool/rte_mempool.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c
index 40d3afd..ef7d3d1 100644
--- a/lib/librte_mempool/rte_mempool.c
+++ b/lib/librte_mempool/rte_mempool.c
@@ -868,6 +868,7 @@ rte_mempool_create(const char *name, unsigned n, unsigned elt_size,
rte_mempool_obj_cb_t *obj_init, void *obj_init_arg,
int socket_id, unsigned flags)
{
+ int ret;
struct rte_mempool *mp;
mp = rte_mempool_create_empty(name, n, elt_size, cache_size,
@@ -880,13 +881,16 @@ rte_mempool_create(const char *name, unsigned n, unsigned elt_size,
* set the correct index into the table of ops structs.
*/
if ((flags & MEMPOOL_F_SP_PUT) && (flags & MEMPOOL_F_SC_GET))
- rte_mempool_set_ops_byname(mp, "ring_sp_sc", NULL);
+ ret = rte_mempool_set_ops_byname(mp, "ring_sp_sc", NULL);
else if (flags & MEMPOOL_F_SP_PUT)
- rte_mempool_set_ops_byname(mp, "ring_sp_mc", NULL);
+ ret = rte_mempool_set_ops_byname(mp, "ring_sp_mc", NULL);
else if (flags & MEMPOOL_F_SC_GET)
- rte_mempool_set_ops_byname(mp, "ring_mp_sc", NULL);
+ ret = rte_mempool_set_ops_byname(mp, "ring_mp_sc", NULL);
else
- rte_mempool_set_ops_byname(mp, "ring_mp_mc", NULL);
+ ret = rte_mempool_set_ops_byname(mp, "ring_mp_mc", NULL);
+
+ if (ret)
+ goto fail;
/* call the mempool priv initializer */
if (mp_init)
--
2.7.4
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH v3 2/3] mempool: introduce ring mempool driver
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked Shreyansh Jain
@ 2017-03-31 5:35 ` Shreyansh Jain
2017-03-31 13:49 ` Olivier Matz
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 3/3] mempool: introduce stack " Shreyansh Jain
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Shreyansh Jain @ 2017-03-31 5:35 UTC (permalink / raw)
To: olivier.matz
Cc: dev, thomas.monjalon, hemant.agrawal, david.hunt, Shreyansh Jain
Moved from lib/librte_mempool, ring mempool is now an independent
driver.
Shared builds would now need to add librte_mempool_ring for:
* ring_mp_mc
* ring_sp_sc
* ring_sp_mc
* ring_mp_sc
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
---
v3:
* Update MAINTAINER file
* fix shared build issue
MAINTAINERS | 1 +
config/common_base | 5 +++
drivers/Makefile | 1 +
drivers/mempool/Makefile | 39 ++++++++++++++++++
drivers/mempool/ring/Makefile | 48 ++++++++++++++++++++++
.../mempool/ring}/rte_mempool_ring.c | 0
drivers/mempool/ring/rte_mempool_ring_version.map | 4 ++
lib/librte_mempool/Makefile | 1 -
mk/rte.app.mk | 1 +
9 files changed, 99 insertions(+), 1 deletion(-)
create mode 100644 drivers/mempool/Makefile
create mode 100644 drivers/mempool/ring/Makefile
rename {lib/librte_mempool => drivers/mempool/ring}/rte_mempool_ring.c (100%)
create mode 100644 drivers/mempool/ring/rte_mempool_ring_version.map
diff --git a/MAINTAINERS b/MAINTAINERS
index 4cb6e49..403d0dd 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -211,6 +211,7 @@ Core Libraries
Memory pool
M: Olivier Matz <olivier.matz@6wind.com>
F: lib/librte_mempool/
+F: drivers/mempool/ring
F: doc/guides/prog_guide/mempool_lib.rst
F: test/test/test_mempool*
F: test/test/test_func_reentrancy.c
diff --git a/config/common_base b/config/common_base
index 2d54ddf..9acd557 100644
--- a/config/common_base
+++ b/config/common_base
@@ -461,6 +461,11 @@ CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
#
+# Compile Mempool drivers
+#
+CONFIG_RTE_DRIVER_MEMPOOL_RING=y
+
+#
# Compile librte_mbuf
#
CONFIG_RTE_LIBRTE_MBUF=y
diff --git a/drivers/Makefile b/drivers/Makefile
index 81c03a8..193056b 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -31,6 +31,7 @@
include $(RTE_SDK)/mk/rte.vars.mk
+DIRS-y += mempool
DIRS-y += net
DIRS-$(CONFIG_RTE_LIBRTE_CRYPTODEV) += crypto
diff --git a/drivers/mempool/Makefile b/drivers/mempool/Makefile
new file mode 100644
index 0000000..6a8a1da
--- /dev/null
+++ b/drivers/mempool/Makefile
@@ -0,0 +1,39 @@
+# BSD LICENSE
+#
+# Copyright(c) 2017 NXP. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of NXP nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+core-libs := librte_eal librte_mempool librte_ring
+
+DIRS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING) += ring
+DEPDIRS-ring = $(core-libs)
+
+include $(RTE_SDK)/mk/rte.subdir.mk
diff --git a/drivers/mempool/ring/Makefile b/drivers/mempool/ring/Makefile
new file mode 100644
index 0000000..54630d9
--- /dev/null
+++ b/drivers/mempool/ring/Makefile
@@ -0,0 +1,48 @@
+# BSD LICENSE
+#
+# Copyright(c) 2017 NXP.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of NXP nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+#
+# library name
+#
+LIB = librte_mempool_ring.a
+
+CFLAGS += -O3
+CFLAGS += $(WERROR_FLAGS)
+
+EXPORT_MAP := rte_mempool_ring_version.map
+
+LIBABIVER := 1
+
+SRCS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING) += rte_mempool_ring.c
+
+include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/lib/librte_mempool/rte_mempool_ring.c b/drivers/mempool/ring/rte_mempool_ring.c
similarity index 100%
rename from lib/librte_mempool/rte_mempool_ring.c
rename to drivers/mempool/ring/rte_mempool_ring.c
diff --git a/drivers/mempool/ring/rte_mempool_ring_version.map b/drivers/mempool/ring/rte_mempool_ring_version.map
new file mode 100644
index 0000000..8591cc0
--- /dev/null
+++ b/drivers/mempool/ring/rte_mempool_ring_version.map
@@ -0,0 +1,4 @@
+DPDK_17.05 {
+
+ local: *;
+};
diff --git a/lib/librte_mempool/Makefile b/lib/librte_mempool/Makefile
index 96b6ca2..efd4383 100644
--- a/lib/librte_mempool/Makefile
+++ b/lib/librte_mempool/Makefile
@@ -43,7 +43,6 @@ LIBABIVER := 2
# all source are stored in SRCS-y
SRCS-$(CONFIG_RTE_LIBRTE_MEMPOOL) += rte_mempool.c
SRCS-$(CONFIG_RTE_LIBRTE_MEMPOOL) += rte_mempool_ops.c
-SRCS-$(CONFIG_RTE_LIBRTE_MEMPOOL) += rte_mempool_ring.c
SRCS-$(CONFIG_RTE_LIBRTE_MEMPOOL) += rte_mempool_stack.c
# install includes
SYMLINK-$(CONFIG_RTE_LIBRTE_MEMPOOL)-include := rte_mempool.h
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 62a2a1a..5ebb6ec 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -101,6 +101,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder
ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n)
# plugins (link only if static libraries)
+_LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING) += -lrte_mempool_ring
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += -lrte_pmd_af_packet
_LDLIBS-$(CONFIG_RTE_LIBRTE_BNX2X_PMD) += -lrte_pmd_bnx2x -lz
--
2.7.4
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH v3 3/3] mempool: introduce stack mempool driver
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked Shreyansh Jain
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 2/3] mempool: introduce ring mempool driver Shreyansh Jain
@ 2017-03-31 5:35 ` Shreyansh Jain
2017-03-31 13:50 ` Olivier Matz
2017-03-31 5:41 ` [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked Shreyansh Jain
2017-03-31 13:49 ` Olivier Matz
3 siblings, 1 reply; 9+ messages in thread
From: Shreyansh Jain @ 2017-03-31 5:35 UTC (permalink / raw)
To: olivier.matz
Cc: dev, thomas.monjalon, hemant.agrawal, david.hunt, Shreyansh Jain
Moved from lib/librte_mempool, stack mempool handler is an independent
driver.
Shared builds would now require to link in librte_mempool_stack for
"stack" mempool handler.
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
---
v3:
* fix shared build issue
MAINTAINERS | 1 +
config/common_base | 1 +
drivers/mempool/Makefile | 2 +
drivers/mempool/stack/Makefile | 51 ++++++++++++++++++++++
.../mempool/stack}/rte_mempool_stack.c | 0
.../mempool/stack/rte_mempool_stack_version.map | 4 ++
lib/librte_mempool/Makefile | 1 -
mk/rte.app.mk | 1 +
8 files changed, 60 insertions(+), 1 deletion(-)
create mode 100644 drivers/mempool/stack/Makefile
rename {lib/librte_mempool => drivers/mempool/stack}/rte_mempool_stack.c (100%)
create mode 100644 drivers/mempool/stack/rte_mempool_stack_version.map
diff --git a/MAINTAINERS b/MAINTAINERS
index 403d0dd..bd402d1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -211,6 +211,7 @@ Core Libraries
Memory pool
M: Olivier Matz <olivier.matz@6wind.com>
F: lib/librte_mempool/
+F: drivers/mempool/stack
F: drivers/mempool/ring
F: doc/guides/prog_guide/mempool_lib.rst
F: test/test/test_mempool*
diff --git a/config/common_base b/config/common_base
index 9acd557..41191c8 100644
--- a/config/common_base
+++ b/config/common_base
@@ -464,6 +464,7 @@ CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
# Compile Mempool drivers
#
CONFIG_RTE_DRIVER_MEMPOOL_RING=y
+CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
#
# Compile librte_mbuf
diff --git a/drivers/mempool/Makefile b/drivers/mempool/Makefile
index 6a8a1da..0c6c45c 100644
--- a/drivers/mempool/Makefile
+++ b/drivers/mempool/Makefile
@@ -35,5 +35,7 @@ core-libs := librte_eal librte_mempool librte_ring
DIRS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING) += ring
DEPDIRS-ring = $(core-libs)
+DIRS-$(CONFIG_RTE_DRIVER_MEMPOOL_STACK) += stack
+DEPDIRS-stack = $(core-libs)
include $(RTE_SDK)/mk/rte.subdir.mk
diff --git a/drivers/mempool/stack/Makefile b/drivers/mempool/stack/Makefile
new file mode 100644
index 0000000..8f3125c
--- /dev/null
+++ b/drivers/mempool/stack/Makefile
@@ -0,0 +1,51 @@
+# BSD LICENSE
+#
+# Copyright(c) 2017 NXP.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of NXP nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+#
+# library name
+#
+LIB = librte_mempool_stack.a
+
+CFLAGS += -O3
+CFLAGS += $(WERROR_FLAGS)
+
+# Headers
+CFLAGS += -I$(RTE_SDK)/lib/librte_mempool
+
+EXPORT_MAP := rte_mempool_stack_version.map
+
+LIBABIVER := 1
+
+SRCS-$(CONFIG_RTE_DRIVER_MEMPOOL_STACK) += rte_mempool_stack.c
+
+include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/lib/librte_mempool/rte_mempool_stack.c b/drivers/mempool/stack/rte_mempool_stack.c
similarity index 100%
rename from lib/librte_mempool/rte_mempool_stack.c
rename to drivers/mempool/stack/rte_mempool_stack.c
diff --git a/drivers/mempool/stack/rte_mempool_stack_version.map b/drivers/mempool/stack/rte_mempool_stack_version.map
new file mode 100644
index 0000000..8591cc0
--- /dev/null
+++ b/drivers/mempool/stack/rte_mempool_stack_version.map
@@ -0,0 +1,4 @@
+DPDK_17.05 {
+
+ local: *;
+};
diff --git a/lib/librte_mempool/Makefile b/lib/librte_mempool/Makefile
index efd4383..7b5bdfe 100644
--- a/lib/librte_mempool/Makefile
+++ b/lib/librte_mempool/Makefile
@@ -43,7 +43,6 @@ LIBABIVER := 2
# all source are stored in SRCS-y
SRCS-$(CONFIG_RTE_LIBRTE_MEMPOOL) += rte_mempool.c
SRCS-$(CONFIG_RTE_LIBRTE_MEMPOOL) += rte_mempool_ops.c
-SRCS-$(CONFIG_RTE_LIBRTE_MEMPOOL) += rte_mempool_stack.c
# install includes
SYMLINK-$(CONFIG_RTE_LIBRTE_MEMPOOL)-include := rte_mempool.h
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 5ebb6ec..336e448 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -102,6 +102,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder
ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n)
# plugins (link only if static libraries)
_LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING) += -lrte_mempool_ring
+_LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_STACK) += -lrte_mempool_stack
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += -lrte_pmd_af_packet
_LDLIBS-$(CONFIG_RTE_LIBRTE_BNX2X_PMD) += -lrte_pmd_bnx2x -lz
--
2.7.4
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked Shreyansh Jain
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 2/3] mempool: introduce ring mempool driver Shreyansh Jain
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 3/3] mempool: introduce stack " Shreyansh Jain
@ 2017-03-31 5:41 ` Shreyansh Jain
2017-03-31 13:44 ` Olivier Matz
2017-03-31 13:49 ` Olivier Matz
3 siblings, 1 reply; 9+ messages in thread
From: Shreyansh Jain @ 2017-03-31 5:41 UTC (permalink / raw)
To: olivier.matz; +Cc: dev, thomas.monjalon, hemant.agrawal, david.hunt
On Friday 31 March 2017 11:05 AM, Shreyansh Jain wrote:
> Fixes: 449c49b93a6b ("mempool: support handler operations")
>
> In case the stack or ring mempool handler are compiled as shared
> library and not linked in with test binary, segfault is reported.
> This is because return value of rte_mempool_set_ops_byname is not
> being checked in rte_mempool_ops_alloc.
>
> This patch handles error returned from rte_mempool_set_ops_byname
> when a mempool is not found.
>
> Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
> ---
$ devtools/check-git-log.sh <this patch>
Is it candidate for Cc: stable@dpdk.org backport?
mempool: fix segfault when shared mempool handler not linked
I am not sure this needs to be in stable. Previous versions never had
an external mempool handler and ring/stack are statically linked in
always.
Though, if a new handler is added (out of tree) over 16.11, and somehow
and application requests for it without linking the library, this
segfault would occur.
Any suggestions?
And just to add to this patch, this segfault is in 'test' binary. It may
not necessarily be the case for other application if they are
handling the error well.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked
2017-03-31 5:41 ` [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked Shreyansh Jain
@ 2017-03-31 13:44 ` Olivier Matz
0 siblings, 0 replies; 9+ messages in thread
From: Olivier Matz @ 2017-03-31 13:44 UTC (permalink / raw)
To: Shreyansh Jain; +Cc: dev, thomas.monjalon, hemant.agrawal, david.hunt
Hi Shreyansh,
On Fri, 31 Mar 2017 11:11:19 +0530, Shreyansh Jain <shreyansh.jain@nxp.com> wrote:
> On Friday 31 March 2017 11:05 AM, Shreyansh Jain wrote:
> > Fixes: 449c49b93a6b ("mempool: support handler operations")
> >
> > In case the stack or ring mempool handler are compiled as shared
> > library and not linked in with test binary, segfault is reported.
> > This is because return value of rte_mempool_set_ops_byname is not
> > being checked in rte_mempool_ops_alloc.
> >
> > This patch handles error returned from rte_mempool_set_ops_byname
> > when a mempool is not found.
> >
> > Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
> > ---
>
> $ devtools/check-git-log.sh <this patch>
> Is it candidate for Cc: stable@dpdk.org backport?
> mempool: fix segfault when shared mempool handler not linked
>
> I am not sure this needs to be in stable. Previous versions never had
> an external mempool handler and ring/stack are statically linked in
> always.
> Though, if a new handler is added (out of tree) over 16.11, and somehow
> and application requests for it without linking the library, this
> segfault would occur.
>
> Any suggestions?
>
> And just to add to this patch, this segfault is in 'test' binary. It may
> not necessarily be the case for other application if they are
> handling the error well.
>
I think it's not needed to backport in stable. As you said, the
crash cannot occur because ring handler is always registered (it's
part of the same mempool lib).
Thanks,
Olivier
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked Shreyansh Jain
` (2 preceding siblings ...)
2017-03-31 5:41 ` [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked Shreyansh Jain
@ 2017-03-31 13:49 ` Olivier Matz
2017-04-03 16:58 ` Thomas Monjalon
3 siblings, 1 reply; 9+ messages in thread
From: Olivier Matz @ 2017-03-31 13:49 UTC (permalink / raw)
To: Shreyansh Jain; +Cc: dev, thomas.monjalon, hemant.agrawal, david.hunt
On Fri, 31 Mar 2017 11:05:35 +0530, Shreyansh Jain <shreyansh.jain@nxp.com> wrote:
> Fixes: 449c49b93a6b ("mempool: support handler operations")
>
> In case the stack or ring mempool handler are compiled as shared
> library and not linked in with test binary, segfault is reported.
> This is because return value of rte_mempool_set_ops_byname is not
> being checked in rte_mempool_ops_alloc.
>
> This patch handles error returned from rte_mempool_set_ops_byname
> when a mempool is not found.
>
> Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH v3 2/3] mempool: introduce ring mempool driver
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 2/3] mempool: introduce ring mempool driver Shreyansh Jain
@ 2017-03-31 13:49 ` Olivier Matz
0 siblings, 0 replies; 9+ messages in thread
From: Olivier Matz @ 2017-03-31 13:49 UTC (permalink / raw)
To: Shreyansh Jain; +Cc: dev, thomas.monjalon, hemant.agrawal, david.hunt
On Fri, 31 Mar 2017 11:05:36 +0530, Shreyansh Jain <shreyansh.jain@nxp.com> wrote:
> Moved from lib/librte_mempool, ring mempool is now an independent
> driver.
> Shared builds would now need to add librte_mempool_ring for:
> * ring_mp_mc
> * ring_sp_sc
> * ring_sp_mc
> * ring_mp_sc
>
> Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH v3 3/3] mempool: introduce stack mempool driver
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 3/3] mempool: introduce stack " Shreyansh Jain
@ 2017-03-31 13:50 ` Olivier Matz
0 siblings, 0 replies; 9+ messages in thread
From: Olivier Matz @ 2017-03-31 13:50 UTC (permalink / raw)
To: Shreyansh Jain; +Cc: dev, thomas.monjalon, hemant.agrawal, david.hunt
On Fri, 31 Mar 2017 11:05:37 +0530, Shreyansh Jain <shreyansh.jain@nxp.com> wrote:
> Moved from lib/librte_mempool, stack mempool handler is an independent
> driver.
> Shared builds would now require to link in librte_mempool_stack for
> "stack" mempool handler.
>
> Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked
2017-03-31 13:49 ` Olivier Matz
@ 2017-04-03 16:58 ` Thomas Monjalon
0 siblings, 0 replies; 9+ messages in thread
From: Thomas Monjalon @ 2017-04-03 16:58 UTC (permalink / raw)
To: Shreyansh Jain; +Cc: Olivier Matz, dev, hemant.agrawal, david.hunt
2017-03-31 15:49, Olivier Matz:
> On Fri, 31 Mar 2017 11:05:35 +0530, Shreyansh Jain <shreyansh.jain@nxp.com> wrote:
> > Fixes: 449c49b93a6b ("mempool: support handler operations")
> >
> > In case the stack or ring mempool handler are compiled as shared
> > library and not linked in with test binary, segfault is reported.
> > This is because return value of rte_mempool_set_ops_byname is not
> > being checked in rte_mempool_ops_alloc.
> >
> > This patch handles error returned from rte_mempool_set_ops_byname
> > when a mempool is not found.
> >
> > Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
>
> Acked-by: Olivier Matz <olivier.matz@6wind.com>
Series applied, thanks
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2017-04-03 16:58 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <11490938158-936-1-git-send-email-shreyansh.jain@nxp.com>
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked Shreyansh Jain
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 2/3] mempool: introduce ring mempool driver Shreyansh Jain
2017-03-31 13:49 ` Olivier Matz
2017-03-31 5:35 ` [dpdk-dev] [PATCH v3 3/3] mempool: introduce stack " Shreyansh Jain
2017-03-31 13:50 ` Olivier Matz
2017-03-31 5:41 ` [dpdk-dev] [PATCH v3 1/3] mempool: fix segfault when shared mempool handler not linked Shreyansh Jain
2017-03-31 13:44 ` Olivier Matz
2017-03-31 13:49 ` Olivier Matz
2017-04-03 16:58 ` Thomas Monjalon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).