From 15d500a57e6b707a1a36908ccd272a1c35cf7a0f Mon Sep 17 00:00:00 2001 From: avg Date: Thu, 19 Feb 2009 15:05:30 +0000 Subject: fs/udf: fix incorrect error return (-1) when reading a large dir Not enough space in user-land buffer is not an error, userland will read further until eof is reached. So instead of propagating -1 to caller we convert it to zero/success. cd9660 code works exactly the same way. PR: kern/78987 Reviewed by: jhb (mentor) Approved by: jhb (mentor) --- sys/fs/udf/udf_vnops.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'sys/fs/udf/udf_vnops.c') diff --git a/sys/fs/udf/udf_vnops.c b/sys/fs/udf/udf_vnops.c index 05481bc..9ac9495 100644 --- a/sys/fs/udf/udf_vnops.c +++ b/sys/fs/udf/udf_vnops.c @@ -831,17 +831,16 @@ udf_readdir(struct vop_readdir_args *a) error = udf_uiodir(&uiodir, dir.d_reclen, uio, ds->this_off); } - if (error) { - printf("uiomove returned %d\n", error); + if (error) break; - } - } /* tell the calling layer whether we need to be called again */ *a->a_eofflag = uiodir.eofflag; uio->uio_offset = ds->offset + ds->off; + if(error < 0) + error = 0; if (!error) error = ds->error; -- cgit v1.1