[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 Wed, Nov 26, 2014 at 08:44:41PM +0000, Dave Scott wrote:
> 
> > 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>

OK, Release-Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>

Thank you.
> 
> 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®.