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

Re: [Xen-devel] [PATCH for-4.5] tools/oxenstored: Fix | vs & error in fd event handling



> On 26 Nov 2014, at 18:41, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> 
> wrote:
> 
> On Wed, Nov 26, 2014 at 06:24:11PM +0000, Dave Scott wrote:
>> 
>>> On 26 Nov 2014, at 15:38, Zheng Li <dev@xxxxxxxx> wrote:
>>> 
>>> On 26/11/2014 15:09, Andrew Cooper wrote:
>>>> This makes fields 0 and 1 true more often than they should be, resulting
>>>> problems when handling events.
>>> 
>>> Indeed, looks like a mistake I made when rewriting the logic terms lately. 
>>> The result is POLLUP or POLLERR events being returned in more categories 
>>> than we'd interest. Thanks for fixing this!
>>> 
>>> Acked-by: Zheng Li <dev@xxxxxxxx>
>> 
>> This also looks fine to me
>> 
>> Acked-by: David Scott <dave.scott@xxxxxxxxxx>
> 
> Would it be possible to get an Reviewed-by please?

Iâll certainly offer

Reviewed-by: David Scott <dave.scott@xxxxxxxxxx>

Cheers,
Dave

> 
> Thank you.
>> 
>> Cheers,
>> Dave
>> 
>>> 
>>> 
>>> Cheers,
>>> Zheng
>>> 
>>> 
>>>> ---
>>>> 
>>>> This was discovered with XenServers internal Coverity instance.  I have 
>>>> yet to
>>>> work out why the issue is not identified by the upstream coverity scanning.
>>>> 
>>>> Konrad: This is a bug in the default event handling used by oxenstored in 
>>>> 4.5,
>>>> as the default switched from select() to poll() in the 4.5 timeframe.  It
>>>> would appear that the negative side effects are limited to just logspam 
>>>> about
>>>> certain clients attempting invalid actions, but I can't rule out anything 
>>>> more
>>>> problematic.
>>>> ---
>>>> tools/ocaml/xenstored/select_stubs.c |    4 ++--
>>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>> 
>>>> diff --git a/tools/ocaml/xenstored/select_stubs.c 
>>>> b/tools/ocaml/xenstored/select_stubs.c
>>>> index 4a8edb5..af72b84 100644
>>>> --- a/tools/ocaml/xenstored/select_stubs.c
>>>> +++ b/tools/ocaml/xenstored/select_stubs.c
>>>> @@ -56,8 +56,8 @@ CAMLprim value stub_select_on_poll(value fd_events, 
>>>> value timeo) {
>>>>                    events = Field(Field(fd_events, i), 1);
>>>> 
>>>>                    if (c_fds[i].revents & POLLNVAL) unix_error(EBADF, 
>>>> "select", Nothing);
>>>> -                  Field(events, 0) = Val_bool(c_fds[i].events | POLLIN  
>>>> && c_fds[i].revents & (POLLIN |POLLHUP|POLLERR));
>>>> -                  Field(events, 1) = Val_bool(c_fds[i].events | POLLOUT 
>>>> && c_fds[i].revents & (POLLOUT|POLLHUP|POLLERR));
>>>> +                  Field(events, 0) = Val_bool(c_fds[i].events & POLLIN  
>>>> && c_fds[i].revents & (POLLIN |POLLHUP|POLLERR));
>>>> +                  Field(events, 1) = Val_bool(c_fds[i].events & POLLOUT 
>>>> && c_fds[i].revents & (POLLOUT|POLLHUP|POLLERR));
>>>>                    Field(events, 2) = Val_bool(c_fds[i].revents & POLLPRI);
>>>> 
>>>>            }
>>>> 
>> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.