eal: fix memleak on mp request error handler
Checks
Commit Message
From: Gao Feng <davidfgao@tencent.com>
When rte_eal_alarm_set failed, need to free the bundle mem in the
error handler of handle_primary_request and handle_secondary_request.
Signed-off-by: Gao Feng <davidfgao@tencent.com>
---
lib/librte_eal/common/hotplug_mp.c | 4 ++++
1 file changed, 4 insertions(+)
Comments
On 05-Dec-18 2:50 AM, gfree.wind@vip.163.com wrote:
> From: Gao Feng <davidfgao@tencent.com>
>
> When rte_eal_alarm_set failed, need to free the bundle mem in the
> error handler of handle_primary_request and handle_secondary_request.
>
> Signed-off-by: Gao Feng <davidfgao@tencent.com>
> ---
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
10/12/2018 17:38, Burakov, Anatoly:
> On 05-Dec-18 2:50 AM, gfree.wind@vip.163.com wrote:
> > From: Gao Feng <davidfgao@tencent.com>
> >
> > When rte_eal_alarm_set failed, need to free the bundle mem in the
> > error handler of handle_primary_request and handle_secondary_request.
> >
> > Signed-off-by: Gao Feng <davidfgao@tencent.com>
>
> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Applied, thanks
@@ -208,6 +208,8 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)
ret = rte_eal_alarm_set(1, __handle_secondary_request, bundle);
if (ret != 0) {
RTE_LOG(ERR, EAL, "failed to add mp task\n");
+ free(bundle->peer);
+ free(bundle);
return send_response_to_secondary(req, ret, peer);
}
return 0;
@@ -332,6 +334,8 @@ static void __handle_primary_request(void *param)
*/
ret = rte_eal_alarm_set(1, __handle_primary_request, bundle);
if (ret != 0) {
+ free(bundle->peer);
+ free(bundle);
resp->result = ret;
ret = rte_mp_reply(&mp_resp, peer);
if (ret != 0) {