From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Matlack Subject: [kvm-unit-tests PATCH 2/3] api: fix "ignoring return value" of posix_memalign errors Date: Wed, 24 May 2017 14:31:22 -0700 Message-ID: <20170524213123.71538-2-dmatlack@google.com> References: <20170524213123.71538-1-dmatlack@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: jmattson@google.com, David Matlack To: kvm@vger.kernel.org Return-path: Received: from mail-pf0-f170.google.com ([209.85.192.170]:35112 "EHLO mail-pf0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S941088AbdEXVbt (ORCPT ); Wed, 24 May 2017 17:31:49 -0400 Received: by mail-pf0-f170.google.com with SMTP id n23so147239573pfb.2 for ; Wed, 24 May 2017 14:31:48 -0700 (PDT) In-Reply-To: <20170524213123.71538-1-dmatlack@google.com> Sender: kvm-owner@vger.kernel.org List-ID: posix_memalign returns zero on success and an errno value otherwise. The value of the global variable "errno" is actually indeterminiate after a call to posix_memalign(), according to the man page. This patch also fixes the compilation errors: api/dirty-log.cc:55:50: error: ignoring return value of ‘int posix_memalign(void**, size_t, size_t)’, declared with attribute warn_unused_result [-Werror=unused-result] posix_memalign(&logged_slot_virt, 4096, 4096); api/identity.cc:23:41: error: ignoring return value of ‘int posix_memalign(void**, size_t, size_t)’, declared with attribute warn_unused_result [-Werror=unused-result] posix_memalign(&tss, 4096, 4 * 4096); Signed-off-by: David Matlack --- api/dirty-log.cc | 5 ++++- api/identity.cc | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/api/dirty-log.cc b/api/dirty-log.cc index 47fbac2b1cc6..9891e98fde9e 100644 --- a/api/dirty-log.cc +++ b/api/dirty-log.cc @@ -52,7 +52,10 @@ int test_main(int ac, char **av) kvm::vm vm(sys); mem_map memmap(vm); void* logged_slot_virt; - posix_memalign(&logged_slot_virt, 4096, 4096); + int ret = posix_memalign(&logged_slot_virt, 4096, 4096); + if (ret) { + throw errno_exception(ret); + } volatile int* shared_var = static_cast(logged_slot_virt); identity::hole hole(logged_slot_virt, 4096); identity::vm ident_vm(vm, memmap, hole); diff --git a/api/identity.cc b/api/identity.cc index 6dd42315a0af..24609ef9d6d0 100644 --- a/api/identity.cc +++ b/api/identity.cc @@ -20,9 +20,9 @@ hole::hole(void* address, size_t size) vm::vm(kvm::vm& vm, mem_map& mmap, hole h) { - posix_memalign(&tss, 4096, 4 * 4096); - if (!tss) { - throw errno_exception(errno); + int ret = posix_memalign(&tss, 4096, 4 * 4096); + if (ret) { + throw errno_exception(ret); } uint64_t hole_gpa = reinterpret_cast(h.address); -- 2.13.0.219.gdb65acc882-goog