[systemd-devel] [PATCH] util.c: ignore pollfd.revent for loop_read/loop_write

Zbigniew Jędrzejewski-Szmek zbyszek at in.waw.pl
Thu Sep 26 06:04:49 PDT 2013


On Sun, Sep 22, 2013 at 09:10:47PM +0800, cee1 wrote:
> Let read()/write() report any error/EOF.
This look OK, but can you provide a bit of motivation?

Zbyszek

> ---
>  src/shared/util.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/src/shared/util.c b/src/shared/util.c
> index 2009553..3c08650 100644
> --- a/src/shared/util.c
> +++ b/src/shared/util.c
> @@ -2186,8 +2186,10 @@ ssize_t loop_read(int fd, void *buf, size_t
> nbytes, bool do_poll) {
>                                          return n > 0 ? n : -errno;
>                                  }
> 
> -                                if (pollfd.revents != POLLIN)
> -                                        return n > 0 ? n : -EIO;
> +                                /* We knowingly ignore the revents value here,
> +                                 * and expect that any error/EOF is reported
> +                                 * via read()/write()
> +                                 */
> 
>                                  continue;
>                          }
> @@ -2234,8 +2236,10 @@ ssize_t loop_write(int fd, const void *buf,
> size_t nbytes, bool do_poll) {
>                                          return n > 0 ? n : -errno;
>                                  }
> 
> -                                if (pollfd.revents != POLLOUT)
> -                                        return n > 0 ? n : -EIO;
> +                                /* We knowingly ignore the revents value here,
> +                                 * and expect that any error/EOF is reported
> +                                 * via read()/write()
> +                                 */
> 
>                                  continue;
>                          }
> -- 


More information about the systemd-devel mailing list