[dpdk-stable] [dpdk-dev] [PATCH] lib/cmdline: release cl when cmdline exit

Dmitry Kozlyuk dmitry.kozliuk at gmail.com
Mon Sep 6 09:33:33 CEST 2021


2021-09-06 05:51 (UTC+0000), Peng, ZhihongX:
> > -----Original Message-----
> > From: Dmitry Kozlyuk <dmitry.kozliuk at gmail.com>
> > Sent: Wednesday, September 1, 2021 1:52 AM
> > To: Peng, ZhihongX <zhihongx.peng at intel.com>
> > Cc: olivier.matz at 6wind.com; dev at dpdk.org; stable at dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH] lib/cmdline: release cl when cmdline exit
> > 
> > 2021-08-31 10:28 (UTC+0800), zhihongx.peng at intel.com:  
> > > From: Zhihong Peng <zhihongx.peng at intel.com>
> > >
> > > Malloc cl in the cmdline_stdin_new function, so release in the
> > > cmdline_stdin_exit function is logical, so that cl will not be
> > > released alone.
> > >
> > > Fixes: af75078fece3 (first public release)
> > > Cc: stable at dpdk.org
> > >
> > > Signed-off-by: Zhihong Peng <zhihongx.peng at intel.com>
> > > ---
> > >  lib/cmdline/cmdline_socket.c | 1 +
> > >  1 file changed, 1 insertion(+)
> > >
> > > diff --git a/lib/cmdline/cmdline_socket.c
> > > b/lib/cmdline/cmdline_socket.c index 998e8ade25..ebd5343754 100644
> > > --- a/lib/cmdline/cmdline_socket.c
> > > +++ b/lib/cmdline/cmdline_socket.c
> > > @@ -53,4 +53,5 @@ cmdline_stdin_exit(struct cmdline *cl)
> > >  		return;
> > >
> > >  	terminal_restore(cl);
> > > +	cmdline_free(cl);
> > >  }  
> > 
> > Now cmdline_free() may not be called after cmdline_stdin_exit().
> > User code that does so needs to be changed to avoid double-free.
> > This behavior change must be documented in the release notes.
> > I'm not sure it should be backported because of the above.  
> Using the asan tool, I found that many dpdk apps did not call cmdline_free, only one app called.

I mean external programs that use DPDK, not DPDK bundled apps only.
If some of them use a stable DPDK branch and the change is backported,
a double-free will be introduced by upgrading DPDK to a minor version.
Users of current DPDK version that call cmdline_free() after
cmdline_stdin_exit() will have to upgrade their code,
release notes are the place to inform them about this need.
The patch itself is good and now it is the right time for it.


More information about the stable mailing list