From: Nikolai Kondrashov Date: Wed, 29 Jun 2016 12:05:08 +0000 (+0300) Subject: tevent: Clarify apparently useless conditions X-Git-Tag: tdb-1.3.10~421 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9d29593d9224ba1d380bb697d45238f34c1edf53;p=thirdparty%2Fsamba.git tevent: Clarify apparently useless conditions Comment on two similar conditions in tevent_standard.c, which, otherwise, at a first glance, seem useless, i.e. always true. The conditions checking glue->epoll_ops for being non-NULL, imply that it *can* be NULL. A casual reader would not generally expect a "member" function to modify its container's pointer in a container higher up, and would assume that glue->epoll_ops could be NULL before the call, resulting in a near-NULL pointer dereference. However, in this case epoll_ops is indeed cleared in those "member" functions, in the case of an epoll interface failure, to signify fallback to poll interface. Reviewed-by: Jeremy Allison Reviewed-by: Uri Simchoni Autobuild-User(master): Uri Simchoni Autobuild-Date(master): Tue Jul 12 13:56:41 CEST 2016 on sn-devel-144 --- diff --git a/lib/tevent/tevent_standard.c b/lib/tevent/tevent_standard.c index a050901fa3f..30e9b91a865 100644 --- a/lib/tevent/tevent_standard.c +++ b/lib/tevent/tevent_standard.c @@ -112,6 +112,11 @@ static int std_event_loop_once(struct tevent_context *ev, const char *location) int ret; ret = glue->epoll_ops->loop_once(ev, location); + /* + * If the above hasn't panicked due to an epoll interface failure, + * std_fallback_to_poll() wasn't called, and hasn't cleared epoll_ops to + * signify fallback to poll_ops. + */ if (glue->epoll_ops != NULL) { /* No fallback */ return ret; @@ -138,6 +143,11 @@ static int std_event_loop_wait(struct tevent_context *ev, const char *location) int ret; ret = glue->epoll_ops->loop_wait(ev, location); + /* + * If the above hasn't panicked due to an epoll interface failure, + * std_fallback_to_poll() wasn't called, and hasn't cleared epoll_ops to + * signify fallback to poll_ops. + */ if (glue->epoll_ops != NULL) { /* No fallback */ return ret;