• Jouni Roivas's avatar
    cgroup: Zero sized write should be no-op · 65026da5
    Jouni Roivas authored
    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.
    Signed-off-by: default avatarJouni Roivas <jouni.roivas@tuxera.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    65026da5
cgroup.c 172 KB