Index: sys/kern/kern_sendfile.c =================================================================== --- sys/kern/kern_sendfile.c +++ sys/kern/kern_sendfile.c @@ -1007,8 +1007,15 @@ uap->nbytes, &sbytes, uap->flags, td); fdrop(fp, td); - if (uap->sbytes != NULL) - copyout(&sbytes, uap->sbytes, sizeof(off_t)); + /* + * Only copy out the number of bytes if fo_sendfile did not fail or + * failed with EAGAIN or EINTR. + */ + if (error == 0 || error == EAGAIN || error == EINTR) { + if (uap->sbytes != NULL) { + error = copyout(&sbytes, uap->sbytes, sizeof(off_t)); + } + } out: free(hdr_uio, M_IOV);