[v4,0/2] ipc: fix possible memleaks
mbox series

Message ID 20190425124817.28409-1-herakliusz.lipiec@intel.com
Headers show
Series
  • ipc: fix possible memleaks
Related show

Message

Lipiec, Herakliusz April 25, 2019, 12:48 p.m. UTC
When sending multiple requests, rte_mp_request_sync
can succeed sending a few of those requests, but then
fail on a later one and in the end return with rc=-1.
The upper layers - e.g. device hotplug - currently
handles this case as if no messages were sent and no
memory for response buffers was allocated, which is
not true. Fixed by always initializing message buffer
to NULL and calling free everytime rte_mp_request_sync
is used.

v2:
- resending as patchset to make it easier to review it.
- changed commit message as requested.
- added bugzilla id.
Bugzilla ID: 228

v3:
- rework of the patchset
- caller is no longer responsible for freeing buffers on failure
- caller still has to free response buffers on success
v4:
- fixed checkpatch issues

Herakliusz Lipiec (2):
  ipc: fix rte_mp_request_sync memleak
  ipc: fix tap pmd memleak

 drivers/net/tap/rte_eth_tap.c           |  2 +-
 lib/librte_eal/common/eal_common_proc.c | 22 +++++++++++++++-------
 2 files changed, 16 insertions(+), 8 deletions(-)

Comments

Thomas Monjalon May 3, 2019, 8:34 a.m. UTC | #1
25/04/2019 14:48, Herakliusz Lipiec:
> When sending multiple requests, rte_mp_request_sync
> can succeed sending a few of those requests, but then
> fail on a later one and in the end return with rc=-1.
> The upper layers - e.g. device hotplug - currently
> handles this case as if no messages were sent and no
> memory for response buffers was allocated, which is
> not true. Fixed by always initializing message buffer
> to NULL and calling free everytime rte_mp_request_sync
> is used.
> 
> v2:
> - resending as patchset to make it easier to review it.

Heraliusz, it's a total mess.
There were 8 patches in v2. Why they disappeared?
The title prefixes are often wrong, so it's harder to classify them.

Should I merge all these patches?
  ipc: fix rte_mp_request_sync memleak
  ipc: fix hotplug memleak
  ipc: fix vdev memleak
  ipc: fix vfio memleak
  ipc: fix pdump memleak
  ipc: fix tap pmd memleak
  ipc: fix net/mlx4 memleak
  ipc: fix net/mlx5 memleak
Burakov, Anatoly May 3, 2019, 8:38 a.m. UTC | #2
On 03-May-19 9:34 AM, Thomas Monjalon wrote:
> 25/04/2019 14:48, Herakliusz Lipiec:
>> When sending multiple requests, rte_mp_request_sync
>> can succeed sending a few of those requests, but then
>> fail on a later one and in the end return with rc=-1.
>> The upper layers - e.g. device hotplug - currently
>> handles this case as if no messages were sent and no
>> memory for response buffers was allocated, which is
>> not true. Fixed by always initializing message buffer
>> to NULL and calling free everytime rte_mp_request_sync
>> is used.
>>
>> v2:
>> - resending as patchset to make it easier to review it.
> 
> Heraliusz, it's a total mess.
> There were 8 patches in v2. Why they disappeared?
> The title prefixes are often wrong, so it's harder to classify them.
> 
> Should I merge all these patches?
>    ipc: fix rte_mp_request_sync memleak
>    ipc: fix hotplug memleak
>    ipc: fix vdev memleak
>    ipc: fix vfio memleak
>    ipc: fix pdump memleak
>    ipc: fix tap pmd memleak
>    ipc: fix net/mlx4 memleak
>    ipc: fix net/mlx5 memleak
> 

Hi Thomas,

you've also skipped the following:

 > v3:
 > - rework of the patchset
 > - caller is no longer responsible for freeing buffers on failure
 > - caller still has to free response buffers on success

the v3 was where the 8 patch patchset was reworked into two-patch 
patchset, because we've changed our approach.

So no, those 8 patches should not be merged - they're superseded by v3 
(well, v4 now).