diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/igt_drm_fdinfo.c | 8 | ||||
-rw-r--r-- | lib/igt_drm_fdinfo.h | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c index b422f67a..250d9e89 100644 --- a/lib/igt_drm_fdinfo.c +++ b/lib/igt_drm_fdinfo.c @@ -44,12 +44,12 @@ static size_t read_fdinfo(char *buf, const size_t sz, int at, const char *name) if (fd < 0) return 0; - buf[sz - 1] = 0; - count = read(fd, buf, sz); - buf[sz - 1] = 0; + count = read(fd, buf, sz - 1); + if (count > 0) + buf[count - 1] = 0; close(fd); - return count; + return count > 0 ? count : 0; } static int parse_engine(char *line, struct drm_client_fdinfo *info, diff --git a/lib/igt_drm_fdinfo.h b/lib/igt_drm_fdinfo.h index 5db63e28..87594716 100644 --- a/lib/igt_drm_fdinfo.h +++ b/lib/igt_drm_fdinfo.h @@ -46,7 +46,7 @@ struct drm_client_fdinfo { * igt_parse_drm_fdinfo: Parses the drm fdinfo file * * @drm_fd: DRM file descriptor - * @info: Structure to populate with read data + * @info: Structure to populate with read data. Must be zeroed. * * Returns the number of valid drm fdinfo keys found or zero if not all * mandatory keys were present or no engines found. @@ -58,7 +58,7 @@ unsigned int igt_parse_drm_fdinfo(int drm_fd, struct drm_client_fdinfo *info); * * @dir: File descriptor pointing to /proc/pid/fdinfo directory * @fd: String representation of the file descriptor number to parse. - * @info: Structure to populate with read data + * @info: Structure to populate with read data. Must be zeroed. * * Returns the number of valid drm fdinfo keys found or zero if not all * mandatory keys were present or no engines found. |