[dpdk-stable] [PATCH 2/3] vhost: fix fd leak in dirty logging setup

Maxime Coquelin maxime.coquelin at redhat.com
Fri Nov 6 09:07:50 CET 2020



On 11/6/20 3:53 AM, Xia, Chenbo wrote:
> Hi Maxime,
> 
>> -----Original Message-----
>> From: Maxime Coquelin <maxime.coquelin at redhat.com>
>> Sent: Thursday, November 5, 2020 7:46 PM
>> To: dev at dpdk.org; Ding, Xuan <xuan.ding at intel.com>;
>> stephen at networkplumber.org; Yigit, Ferruh <ferruh.yigit at intel.com>;
>> thomas at monjalon.net; Xia, Chenbo <chenbo.xia at intel.com>
>> Cc: stable at dpdk.org; Maxime Coquelin <maxime.coquelin at redhat.com>
>> Subject: [PATCH 2/3] vhost: fix fd leak in dirty logging setup
>>
>> This patch fixes a file descriptor leak which happens
>> in the error path of vhost_user_set_log_base().
>>
>> Fixes: 4796ad63ba1f ("examples/vhost: import userspace vhost application")
>> Cc: stable at dpdk.org
>>
>> Reported-by: Xuan Ding <xuan.ding at intel.com>
>> Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com>
>> ---
>>  lib/librte_vhost/vhost_user.c | 10 +++++++---
>>  1 file changed, 7 insertions(+), 3 deletions(-)
>>
>> diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
>> index 473fd778ca..7dfda15991 100644
>> --- a/lib/librte_vhost/vhost_user.c
>> +++ b/lib/librte_vhost/vhost_user.c
>> @@ -2076,14 +2076,14 @@ vhost_user_set_log_base(struct virtio_net **pdev,
>> struct VhostUserMsg *msg,
>>
>>  	if (fd < 0) {
>>  		VHOST_LOG_CONFIG(ERR, "invalid log fd: %d\n", fd);
>> -		return RTE_VHOST_MSG_RESULT_ERR;
>> +		goto close_msg_fds;
> 
> IMHO, there's nothing to close in this case. Before this check, validate_msg_fds
> makes sure that this msg has only one fd and now this fd is invalid. So when this
> error occurs, going to close_msg_fds always does nothing. So I think we don't need
> this change here?

Thanks for the detailed review.
Yes, you are right, we can simply return here as before since no FD are
to close.

I will post v2 soon.

Thanks,
Maxime

> Thanks!
> Chenbo



More information about the stable mailing list