qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 1/2] net: tap: check if the file descriptor is valid befor


From: Laurent Vivier
Subject: Re: [PATCH v3 1/2] net: tap: check if the file descriptor is valid before using it
Date: Tue, 7 Jul 2020 12:21:02 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0

On 07/07/2020 09:56, Jason Wang wrote:
> 
> On 2020/7/2 上午3:39, Laurent Vivier wrote:
>> +void qemu_set_nonblock(int fd)
>> +{
>> +    int f;
>> +    f = qemu_try_set_nonblock(fd);
>> +    assert(f == 0);
>>   }
> 
> 
> So we keep this assert which means it can still be triggered from monitor?
> 
> I don't check all the callers, but I got:
> 
> in tap_init_one() we had:
> 
>         if (vhostfdname) {
>             vhostfd = monitor_fd_param(cur_mon, vhostfdname, &err);
>             if (vhostfd == -1) {
>                 if (tap->has_vhostforce && tap->vhostforce) {
>                     error_propagate(errp, err);
>                 } else {
>                     warn_report_err(err);
>                 }
>                 return;
>             }
>             qemu_set_nonblock(vhostfd);
>         } else {
> 
> and in net_init_socket() we had:
> 
>     if (sock->has_fd) {
>         int fd;
> 
>         fd = monitor_fd_param(cur_mon, sock->fd, errp);
>         if (fd == -1) {
>             return -1;
>         }
>         qemu_set_nonblock(fd);
>         if (!net_socket_fd_init(peer, "socket", name, fd, 1, sock->mcast,
>                                 errp)) {
>             return -1;
>         }
>         return 0;
>     }
> 

Yes, I think you're right, all fd that come from monitor and passed to
qemu_set_nonblock() before any other use should use
qemu_try_set_nonblock() and report an error.

I update my patch accordingly.

Thanks,
Laurent




reply via email to

[Prev in Thread] Current Thread [Next in Thread]