On Tue, Oct 08, 2013 at 05:52:42PM -0700, Linus Torvalds wrote: > On Tue, Oct 8, 2013 at 5:15 PM, Al Viro <viro@xxxxxxxxxxxxxxxx> wrote: > > > > ... and deal with short writes properly > > .. except you don't. > > > + while (nr) { > > + if (dump_interrupted()) > > + return 0; > > + n = vfs_write(file, addr, nr, &pos); > > + if (n < 0) > > + return 0; > > + file->f_pos = pos; > > + cprm->written += n; > > + nr -= n; > > + } > > Please handle 'n == 0' too. Maybe it never happens (ie you get EPIPE > or ENOSPC), but write returning zero is actually possible and a valid > return value and traditional for "end of media". Looping forever is > not a good idea. Point, but I would argue that we should yell very loud if we get 0 from vfs_write() for non-zero size. I'm not sure if POSIX allows write(2) to return that, but a lot of userland code won't be expecting that and won't be able to cope... -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html