[prev in list] [next in list] [prev in thread] [next in thread] 

List:       git-commits-head
Subject:    KVM: selftests: Use pread() to read binary stats header
From:       Linux Kernel Mailing List <linux-kernel () vger ! kernel ! org>
Date:       2023-07-30 19:44:03
Message-ID: git-mailbomb-linux-master-625646aede90554fed8d46fd0e081238e071ac5e () kernel ! org
[Download RAW message or body]

Commit:     625646aede90554fed8d46fd0e081238e071ac5e
Parent:     eed3013faa401aae662398709410a59bb0646e32
Refname:    refs/heads/master
Web:        https://git.kernel.org/torvalds/c/625646aede90554fed8d46fd0e081238e071ac5e
                
Author:     Sean Christopherson <seanjc@google.com>
AuthorDate: Tue Jul 11 16:01:26 2023 -0700
Committer:  Paolo Bonzini <pbonzini@redhat.com>
CommitDate: Sat Jul 29 11:05:28 2023 -0400

    KVM: selftests: Use pread() to read binary stats header
    
    Use pread() with an explicit offset when reading the header and the header
    name for a binary stats fd so that the common helper and the binary stats
    test don't subtly rely on the file effectively being untouched, e.g. to
    allow multiple reads of the header, name, etc.
    
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20230711230131.648752-3-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 tools/testing/selftests/kvm/include/kvm_util_base.h | 6 ++++--
 tools/testing/selftests/kvm/kvm_binary_stats_test.c | 6 ++++--
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h \
b/tools/testing/selftests/kvm/include/kvm_util_base.h index \
                07732a157ccd6..eb1ff597bcca9 100644
--- a/tools/testing/selftests/kvm/include/kvm_util_base.h
+++ b/tools/testing/selftests/kvm/include/kvm_util_base.h
@@ -362,8 +362,10 @@ static inline void read_stats_header(int stats_fd, struct \
kvm_stats_header *head  {
 	ssize_t ret;
 
-	ret = read(stats_fd, header, sizeof(*header));
-	TEST_ASSERT(ret == sizeof(*header), "Read stats header");
+	ret = pread(stats_fd, header, sizeof(*header), 0);
+	TEST_ASSERT(ret == sizeof(*header),
+		    "Failed to read '%lu' header bytes, ret = '%ld'",
+		    sizeof(*header), ret);
 }
 
 struct kvm_stats_desc *read_stats_descriptors(int stats_fd,
diff --git a/tools/testing/selftests/kvm/kvm_binary_stats_test.c \
b/tools/testing/selftests/kvm/kvm_binary_stats_test.c index \
                a7001e29dc06a..eae99d0e8377a 100644
--- a/tools/testing/selftests/kvm/kvm_binary_stats_test.c
+++ b/tools/testing/selftests/kvm/kvm_binary_stats_test.c
@@ -43,8 +43,10 @@ static void stats_test(int stats_fd)
 	id = malloc(header.name_size);
 	TEST_ASSERT(id, "Allocate memory for id string");
 
-	ret = read(stats_fd, id, header.name_size);
-	TEST_ASSERT(ret == header.name_size, "Read id string");
+	ret = pread(stats_fd, id, header.name_size, sizeof(header));
+	TEST_ASSERT(ret == header.name_size,
+		    "Expected header size '%u', read '%lu' bytes",
+		    header.name_size, ret);
 
 	/* Check id string, that should start with "kvm" */
 	TEST_ASSERT(!strncmp(id, "kvm", 3) && strlen(id) < header.name_size,


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic