On Wed, Sep 30, 2020 at 07:42:42PM +0300, Jouni Roivas wrote: > Do not report failure on zero sized writes, and handle them as no-op. > > There's issues for example in case of writev() when there's iovec > containing zero buffer as a first one. It's expected writev() on below > example to successfully perform the write to specified writable cgroup > file expecting integer value, and to return 2. For now it's returning > value -1, and skipping the write: > > int writetest(int fd) { > const char *buf1 = ""; > const char *buf2 = "1\n"; > struct iovec iov[2] = { > { .iov_base = (void*)buf1, .iov_len = 0 }, > { .iov_base = (void*)buf2, .iov_len = 2 } > }; > return writev(fd, iov, 2); > } > > This patch fixes the issue by checking if there's nothing to write, > and handling the write as no-op by just returning 0. Applied to cgroup/for-5.10. Thanks. -- tejun