DPDK patches and discussions
 help / color / Atom feed
From: wangyunjian <wangyunjian@huawei.com>
To: "Chautru, Nicolas" <nicolas.chautru@intel.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Cc: "Lilijun (Jerry)" <jerry.lilijun@huawei.com>,
	xudingke <xudingke@huawei.com>,
	"stable@dpdk.org" <stable@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH] baseband/turbo_sw: fix memory leak in error path
Date: Thu, 15 Oct 2020 12:50:31 +0000
Message-ID: <34EFBCA9F01B0748BEB6B629CE643AE60DAAE45D@DGGEMM533-MBX.china.huawei.com> (raw)
In-Reply-To: <BY5PR11MB4451B1AC2BE12752E1DBCE6FF80A0@BY5PR11MB4451.namprd11.prod.outlook.com>

> -----Original Message-----
> From: Chautru, Nicolas [mailto:nicolas.chautru@intel.com]
> Sent: Thursday, October 8, 2020 7:45 AM
> To: wangyunjian <wangyunjian@huawei.com>; dev@dpdk.org
> Cc: Lilijun (Jerry) <jerry.lilijun@huawei.com>; xudingke
> <xudingke@huawei.com>; stable@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH] baseband/turbo_sw: fix memory leak in error
> path
> 
> Hi wangyunjian,
> 
> > -----Original Message-----
> > From: wangyunjian <wangyunjian@huawei.com>
> > Sent: Wednesday, October 7, 2020 2:04 AM
> > To: dev@dpdk.org
> > Cc: Chautru, Nicolas <nicolas.chautru@intel.com>;
> > jerry.lilijun@huawei.com; xudingke@huawei.com; Yunjian Wang
> > <wangyunjian@huawei.com>; stable@dpdk.org
> > Subject: [dpdk-dev] [PATCH] baseband/turbo_sw: fix memory leak in
> > error path
> >
> > From: Yunjian Wang <wangyunjian@huawei.com>
> >
> > In q_setup() allocated memory for the queue data, we should free it
> > when error happens, otherwise it will lead to memory leak.
> >
> > Fixes: b8cfe2c9aed2 ("bb/turbo_sw: add software turbo driver")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
> > ---
> >  drivers/baseband/turbo_sw/bbdev_turbo_software.c | 16
> > ++++++++--------
> >  1 file changed, 8 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/baseband/turbo_sw/bbdev_turbo_software.c
> > b/drivers/baseband/turbo_sw/bbdev_turbo_software.c
> > index a36099e91..e55b32927 100644
> > --- a/drivers/baseband/turbo_sw/bbdev_turbo_software.c
> > +++ b/drivers/baseband/turbo_sw/bbdev_turbo_software.c
> > @@ -302,7 +302,7 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
> >  		rte_bbdev_log(ERR,
> >  				"Creating queue name for device %u queue %u failed",
> >  				dev->data->dev_id, q_id);
> > -		return -ENAMETOOLONG;
> > +		goto free_q;
> 
> It may be better to move the freeing into a common function and return the
> relevant failure ENUM for each failure reason.
> With the proposed changed it would always return EFAULT to application.
> 
> For information did you ever catch that exception from actually running the
> code or purely from code review? I struggle to see that error genuinely
> happening.

By code review. I will fix return code in the next version.

Thanks,
Yunjian

> 
> Thanks,
> Nic
> 
> >  	}
> >  	q->enc_out = rte_zmalloc_socket(name,
> >  			((RTE_BBDEV_TURBO_MAX_TB_SIZE >> 3) + 3) * @@
> > -322,7 +322,7 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
> >  		rte_bbdev_log(ERR,
> >  				"Creating queue name for device %u queue %u failed",
> >  				dev->data->dev_id, q_id);
> > -		return -ENAMETOOLONG;
> > +		goto free_q;
> >  	}
> >  	q->enc_in = rte_zmalloc_socket(name,
> >  			(RTE_BBDEV_LDPC_MAX_CB_SIZE >> 3) * sizeof(*q-
> > >enc_in), @@ -340,7 +340,7 @@ q_setup(struct rte_bbdev *dev, uint16_t
> > q_id,
> >  		rte_bbdev_log(ERR,
> >  				"Creating queue name for device %u queue %u failed",
> >  				dev->data->dev_id, q_id);
> > -		return -ENAMETOOLONG;
> > +		goto free_q;
> >  	}
> >  	q->ag = rte_zmalloc_socket(name,
> >  			RTE_BBDEV_TURBO_MAX_CB_SIZE * 10 * sizeof(*q-
> > >ag), @@ -358,7 +358,7 @@ q_setup(struct rte_bbdev *dev, uint16_t
> > >q_id,
> >  		rte_bbdev_log(ERR,
> >  				"Creating queue name for device %u queue %u failed",
> >  				dev->data->dev_id, q_id);
> > -		return -ENAMETOOLONG;
> > +		goto free_q;
> >  	}
> >  	q->code_block = rte_zmalloc_socket(name,
> >  			RTE_BBDEV_TURBO_MAX_CB_SIZE * sizeof(*q-
> > >code_block), @@ -377,7 +377,7 @@ q_setup(struct rte_bbdev *dev,
> > uint16_t q_id,
> >  		rte_bbdev_log(ERR,
> >  				"Creating queue name for device %u queue %u failed",
> >  				dev->data->dev_id, q_id);
> > -		return -ENAMETOOLONG;
> > +		goto free_q;
> >  	}
> >  	q->deint_input = rte_zmalloc_socket(name,
> >  			DEINT_INPUT_BUF_SIZE * sizeof(*q->deint_input), @@ -396,7
> +396,7
> > @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
> >  		rte_bbdev_log(ERR,
> >  				"Creating queue name for device %u queue %u failed",
> >  				dev->data->dev_id, q_id);
> > -		return -ENAMETOOLONG;
> > +		goto free_q;
> >  	}
> >  	q->deint_output = rte_zmalloc_socket(NULL,
> >  			DEINT_OUTPUT_BUF_SIZE * sizeof(*q-
> > >deint_output), @@ -415,7 +415,7 @@ q_setup(struct rte_bbdev *dev,
> > uint16_t q_id,
> >  		rte_bbdev_log(ERR,
> >  				"Creating queue name for device %u queue %u failed",
> >  				dev->data->dev_id, q_id);
> > -		return -ENAMETOOLONG;
> > +		goto free_q;
> >  	}
> >  	q->adapter_output = rte_zmalloc_socket(NULL,
> >  			ADAPTER_OUTPUT_BUF_SIZE * sizeof(*q-
> > >adapter_output), @@ -433,7 +433,7 @@ q_setup(struct rte_bbdev *dev,
> > uint16_t q_id,
> >  		rte_bbdev_log(ERR,
> >  				"Creating queue name for device %u queue %u failed",
> >  				dev->data->dev_id, q_id);
> > -		return -ENAMETOOLONG;
> > +		goto free_q;
> >  	}
> >  	q->processed_pkts = rte_ring_create(name, queue_conf-
> > >queue_size,
> >  			queue_conf->socket, RING_F_SP_ENQ | RING_F_SC_DEQ);
> > --
> > 2.23.0


  reply index

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-07  9:03 wangyunjian
2020-10-07 23:45 ` Chautru, Nicolas
2020-10-15 12:50   ` wangyunjian [this message]
2020-10-15 13:45 ` [dpdk-dev] [PATCH v2] " wangyunjian
2020-10-17  0:22   ` Chautru, Nicolas
2020-10-28 11:29   ` Akhil Goyal

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=34EFBCA9F01B0748BEB6B629CE643AE60DAAE45D@DGGEMM533-MBX.china.huawei.com \
    --to=wangyunjian@huawei.com \
    --cc=dev@dpdk.org \
    --cc=jerry.lilijun@huawei.com \
    --cc=nicolas.chautru@intel.com \
    --cc=stable@dpdk.org \
    --cc=xudingke@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

DPDK patches and discussions

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/ public-inbox