- cnt = syscall(SYS_writev, f->fd, iov, iovcnt);
- if (cnt == rem) return len;
+ pthread_cleanup_push(cleanup, f);
+ cnt = syscall_cp(SYS_writev, f->fd, iov, iovcnt);
+ pthread_cleanup_pop(0);
+ if (cnt == rem) {
+ f->wpos = f->wbase = f->buf;
+ return len;
+ }