On Thu, Oct 21, 2021 at 04:40:42PM -0700, John.C.Harrison@xxxxxxxxx wrote: > From: John Harrison <John.C.Harrison@xxxxxxxxx> > > The syfs helper functions were all using basic 'int' data types for > sizs, offsets, etc. when reading from sysfs. This works fine for > little files, but not for large error capture logs (which can be > gigabytes in sizes). > > Signed-off-by: John Harrison <John.C.Harrison@xxxxxxxxx> Reviewed-by: Matthew Brost <matthew.brost@xxxxxxxxx> > --- > lib/igt_sysfs.c | 17 +++++++++++------ > 1 file changed, 11 insertions(+), 6 deletions(-) > > diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c > index 6919ac361..ee75e3ef1 100644 > --- a/lib/igt_sysfs.c > +++ b/lib/igt_sysfs.c > @@ -53,9 +53,11 @@ > * provides basic support for like igt_sysfs_open(). > */ > > -static int readN(int fd, char *buf, int len) > +static ssize_t readN(int fd, char *buf, size_t len) > { > - int ret, total = 0; > + ssize_t ret; > + size_t total = 0; > + > do { > ret = read(fd, buf + total, len - total); > if (ret < 0) > @@ -69,9 +71,11 @@ static int readN(int fd, char *buf, int len) > return total ?: ret; > } > > -static int writeN(int fd, const char *buf, int len) > +static ssize_t writeN(int fd, const char *buf, size_t len) > { > - int ret, total = 0; > + ssize_t ret; > + size_t total = 0; > + > do { > ret = write(fd, buf + total, len - total); > if (ret < 0) > @@ -218,8 +222,9 @@ bool igt_sysfs_set(int dir, const char *attr, const char *value) > char *igt_sysfs_get(int dir, const char *attr) > { > char *buf; > - int len, offset, rem; > - int ret, fd; > + size_t len, offset, rem; > + ssize_t ret; > + int fd; > > fd = openat(dir, attr, O_RDONLY); > if (igt_debug_on(fd < 0)) > -- > 2.25.1 >