net/mvneta: check allocation in rx queue flush
Checks
Commit Message
From: Yunjian Wang <wangyunjian@huawei.com>
The function rte_malloc() could return NULL, the return value
need to be checked.
Fixes: ce7ea764597e ("net/mvneta: support Rx/Tx")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
drivers/net/mvneta/mvneta_rxtx.c | 10 ++++++++++
1 file changed, 10 insertions(+)
Comments
Hi,
How about use 2 local arrays for descs & bufs instead of the malloc/free?
Liron
-----Original Message-----
From: wangyunjian <wangyunjian@huawei.com>
Sent: Monday, 7 December 2020 13:37
To: dev@dpdk.org
Cc: Liron Himi <lironh@marvell.com>; zr@semihalf.com; jerry.lilijun@huawei.com; xudingke@huawei.com; Yunjian Wang <wangyunjian@huawei.com>; stable@dpdk.org
Subject: [EXT] [dpdk-dev] [PATCH] net/mvneta: check allocation in rx queue flush
External Email
----------------------------------------------------------------------
From: Yunjian Wang <wangyunjian@huawei.com>
The function rte_malloc() could return NULL, the return value need to be checked.
Fixes: ce7ea764597e ("net/mvneta: support Rx/Tx")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
drivers/net/mvneta/mvneta_rxtx.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/net/mvneta/mvneta_rxtx.c b/drivers/net/mvneta/mvneta_rxtx.c
index 10b6f57584..dfa7ecc090 100644
--- a/drivers/net/mvneta/mvneta_rxtx.c
+++ b/drivers/net/mvneta/mvneta_rxtx.c
@@ -872,7 +872,17 @@ mvneta_rx_queue_flush(struct mvneta_rxq *rxq)
int ret, i;
descs = rte_malloc("rxdesc", MRVL_NETA_RXD_MAX * sizeof(*descs), 0);
+ if (descs == NULL) {
+ MVNETA_LOG(ERR, "Failed to allocate descs.");
+ return;
+ }
+
bufs = rte_malloc("buffs", MRVL_NETA_RXD_MAX * sizeof(*bufs), 0);
+ if (bufs == NULL) {
+ MVNETA_LOG(ERR, "Failed to allocate bufs.");
+ rte_free(descs);
+ return;
+ }
do {
num = MRVL_NETA_RXD_MAX;
--
2.23.0
> -----Original Message-----
> From: Liron Himi [mailto:lironh@marvell.com]
> Sent: Monday, December 7, 2020 8:38 PM
> To: wangyunjian <wangyunjian@huawei.com>; dev@dpdk.org
> Cc: zr@semihalf.com; Lilijun (Jerry) <jerry.lilijun@huawei.com>; xudingke
> <xudingke@huawei.com>; stable@dpdk.org; Liron Himi <lironh@marvell.com>
> Subject: RE: [EXT] [dpdk-dev] [PATCH] net/mvneta: check allocation in rx queue
> flush
>
> Hi,
>
> How about use 2 local arrays for descs & bufs instead of the malloc/free?
The definition of these 2 arrays is 2048. If it is a local array, is it too large?
>
> Liron
>
>
> -----Original Message-----
> From: wangyunjian <wangyunjian@huawei.com>
> Sent: Monday, 7 December 2020 13:37
> To: dev@dpdk.org
> Cc: Liron Himi <lironh@marvell.com>; zr@semihalf.com;
> jerry.lilijun@huawei.com; xudingke@huawei.com; Yunjian Wang
> <wangyunjian@huawei.com>; stable@dpdk.org
> Subject: [EXT] [dpdk-dev] [PATCH] net/mvneta: check allocation in rx queue flush
>
> External Email
>
> ----------------------------------------------------------------------
> From: Yunjian Wang <wangyunjian@huawei.com>
>
> The function rte_malloc() could return NULL, the return value need to be
> checked.
>
> Fixes: ce7ea764597e ("net/mvneta: support Rx/Tx")
> Cc: stable@dpdk.org
>
> Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
> ---
> drivers/net/mvneta/mvneta_rxtx.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/net/mvneta/mvneta_rxtx.c
> b/drivers/net/mvneta/mvneta_rxtx.c
> index 10b6f57584..dfa7ecc090 100644
> --- a/drivers/net/mvneta/mvneta_rxtx.c
> +++ b/drivers/net/mvneta/mvneta_rxtx.c
> @@ -872,7 +872,17 @@ mvneta_rx_queue_flush(struct mvneta_rxq *rxq)
> int ret, i;
>
> descs = rte_malloc("rxdesc", MRVL_NETA_RXD_MAX * sizeof(*descs), 0);
> + if (descs == NULL) {
> + MVNETA_LOG(ERR, "Failed to allocate descs.");
> + return;
> + }
> +
> bufs = rte_malloc("buffs", MRVL_NETA_RXD_MAX * sizeof(*bufs), 0);
> + if (bufs == NULL) {
> + MVNETA_LOG(ERR, "Failed to allocate bufs.");
> + rte_free(descs);
> + return;
> + }
>
> do {
> num = MRVL_NETA_RXD_MAX;
> --
> 2.23.0
-----Original Message-----
From: wangyunjian <wangyunjian@huawei.com>
Sent: Monday, 7 December 2020 15:08
To: Liron Himi <lironh@marvell.com>; dev@dpdk.org
Cc: zr@semihalf.com; Lilijun (Jerry) <jerry.lilijun@huawei.com>; xudingke <xudingke@huawei.com>; stable@dpdk.org
Subject: RE: [EXT] [dpdk-dev] [PATCH] net/mvneta: check allocation in rx queue flush
> -----Original Message-----
> From: Liron Himi [mailto:lironh@marvell.com]
> Sent: Monday, December 7, 2020 8:38 PM
> To: wangyunjian <wangyunjian@huawei.com>; dev@dpdk.org
> Cc: zr@semihalf.com; Lilijun (Jerry) <jerry.lilijun@huawei.com>;
> xudingke <xudingke@huawei.com>; stable@dpdk.org; Liron Himi
> <lironh@marvell.com>
> Subject: RE: [EXT] [dpdk-dev] [PATCH] net/mvneta: check allocation in
> rx queue flush
>
> Hi,
>
> How about use 2 local arrays for descs & bufs instead of the malloc/free?
The definition of these 2 arrays is 2048. If it is a local array, is it too large?
[L.H.] I'm not sure. Lets stay with your original patch.
Acked-by: Liron Himi <lironh@marvell.com>
>
> Liron
>
>
> -----Original Message-----
> From: wangyunjian <wangyunjian@huawei.com>
> Sent: Monday, 7 December 2020 13:37
> To: dev@dpdk.org
> Cc: Liron Himi <lironh@marvell.com>; zr@semihalf.com;
> jerry.lilijun@huawei.com; xudingke@huawei.com; Yunjian Wang
> <wangyunjian@huawei.com>; stable@dpdk.org
> Subject: [EXT] [dpdk-dev] [PATCH] net/mvneta: check allocation in rx
> queue flush
>
> External Email
>
> ----------------------------------------------------------------------
> From: Yunjian Wang <wangyunjian@huawei.com>
>
> The function rte_malloc() could return NULL, the return value need to
> be checked.
>
> Fixes: ce7ea764597e ("net/mvneta: support Rx/Tx")
> Cc: stable@dpdk.org
>
> Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
> ---
> drivers/net/mvneta/mvneta_rxtx.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/net/mvneta/mvneta_rxtx.c
> b/drivers/net/mvneta/mvneta_rxtx.c
> index 10b6f57584..dfa7ecc090 100644
> --- a/drivers/net/mvneta/mvneta_rxtx.c
> +++ b/drivers/net/mvneta/mvneta_rxtx.c
> @@ -872,7 +872,17 @@ mvneta_rx_queue_flush(struct mvneta_rxq *rxq)
> int ret, i;
>
> descs = rte_malloc("rxdesc", MRVL_NETA_RXD_MAX * sizeof(*descs), 0);
> + if (descs == NULL) {
> + MVNETA_LOG(ERR, "Failed to allocate descs.");
> + return;
> + }
> +
> bufs = rte_malloc("buffs", MRVL_NETA_RXD_MAX * sizeof(*bufs), 0);
> + if (bufs == NULL) {
> + MVNETA_LOG(ERR, "Failed to allocate bufs.");
> + rte_free(descs);
> + return;
> + }
>
> do {
> num = MRVL_NETA_RXD_MAX;
> --
> 2.23.0
On Mon, Dec 7, 2020 at 5:07 PM wangyunjian <wangyunjian@huawei.com> wrote:
>
> From: Yunjian Wang <wangyunjian@huawei.com>
>
> The function rte_malloc() could return NULL, the return value
> need to be checked.
>
> Fixes: ce7ea764597e ("net/mvneta: support Rx/Tx")
> Cc: stable@dpdk.org
>
> Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Acked-by: Liron Himi <lironh@marvell.com>
Applied to dpdk-next-net-mrvl/for-main. Thanks
> ---
> drivers/net/mvneta/mvneta_rxtx.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/net/mvneta/mvneta_rxtx.c b/drivers/net/mvneta/mvneta_rxtx.c
> index 10b6f57584..dfa7ecc090 100644
> --- a/drivers/net/mvneta/mvneta_rxtx.c
> +++ b/drivers/net/mvneta/mvneta_rxtx.c
> @@ -872,7 +872,17 @@ mvneta_rx_queue_flush(struct mvneta_rxq *rxq)
> int ret, i;
>
> descs = rte_malloc("rxdesc", MRVL_NETA_RXD_MAX * sizeof(*descs), 0);
> + if (descs == NULL) {
> + MVNETA_LOG(ERR, "Failed to allocate descs.");
> + return;
> + }
> +
> bufs = rte_malloc("buffs", MRVL_NETA_RXD_MAX * sizeof(*bufs), 0);
> + if (bufs == NULL) {
> + MVNETA_LOG(ERR, "Failed to allocate bufs.");
> + rte_free(descs);
> + return;
> + }
>
> do {
> num = MRVL_NETA_RXD_MAX;
> --
> 2.23.0
>
@@ -872,7 +872,17 @@ mvneta_rx_queue_flush(struct mvneta_rxq *rxq)
int ret, i;
descs = rte_malloc("rxdesc", MRVL_NETA_RXD_MAX * sizeof(*descs), 0);
+ if (descs == NULL) {
+ MVNETA_LOG(ERR, "Failed to allocate descs.");
+ return;
+ }
+
bufs = rte_malloc("buffs", MRVL_NETA_RXD_MAX * sizeof(*bufs), 0);
+ if (bufs == NULL) {
+ MVNETA_LOG(ERR, "Failed to allocate bufs.");
+ rte_free(descs);
+ return;
+ }
do {
num = MRVL_NETA_RXD_MAX;