From patchwork Tue Jul 7 07:08:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 234937 Delivered-To: patch@linaro.org Received: by 2002:a92:d244:0:0:0:0:0 with SMTP id v4csp659122ilg; Tue, 7 Jul 2020 00:21:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz11h8kletBSF7ASF58QXKcx6bgqxRsAo0dXWZyJK6VFmxHQk9mUlpd2Qk+KC7MVgYdzMWi X-Received: by 2002:a25:bb82:: with SMTP id y2mr79732672ybg.392.1594106518960; Tue, 07 Jul 2020 00:21:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594106518; cv=none; d=google.com; s=arc-20160816; b=o38isp8q2T3MGlA4qMGxWmXKExjX+ZKONSeOLFlFNo9GvlM3QQ+RI5hOAk+MHQdZcB fqd/JXR7MG1c2h2C6K86005UThgAzZi3wsUmclta27V1XQd3uos5CH/v0au0ep+cKFbC bbHYTuCTuCWnCP9mkYyk6tBKaIXxxvHYnBdutyvhNsOCwg9V1yhpqJJM6vlXEJ9iRUsi 7oP34VzLBCB4dPZLKBMeB7ReodV8hciJsqvTFLOn1Bsl+NUVLC6Sn5W+32UPwrgb9HU8 Vrhpwk1BAMDDCcmYlPP57rPdh4FUMNJ/jNU0RO5tggeX4ZCw4aY20sxa6fYFF7Lwjif3 vrXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=+v5zmTqMHanAlbP0rCuGswlB7G9ERwBp467Jydp4J1s=; b=gAehMA64Eeqj33+HasscgDzC+Qprb8hRETFmFfLlvr/HGcm0MtfHoFT4Qex+nMJnBi VW48yEDlxVpBdyhH9M9TxEu9SOorGBkT9F+leZ5EAinGi4Qw+pId6lSAJ2acjO4UJryG Zlm0fEWgQArss7zeQdXx6OzyaXSdWPRKiClsH5KWMkurWC0cax06b5M4RbeYdXM1Biax 78mXFPiMxfMNgaOm8dnlFmvjkXtilQedHErtC/zjqOk0v8rX1KHvDfanKHe3GxbKRMxA ME4rT74SrfFhGtLUQz0S09TnTPEy4Q552uVVKbyct+qLANUH41IdobYxEM8Ii1dIzvUB RY0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Hd9Rmt4S; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 187si11789367ybv.470.2020.07.07.00.21.58 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Jul 2020 00:21:58 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Hd9Rmt4S; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:38186 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jshvS-0004mx-CW for patch@linaro.org; Tue, 07 Jul 2020 03:21:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43518) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jshoB-0006R7-9T for qemu-devel@nongnu.org; Tue, 07 Jul 2020 03:14:27 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]:45561) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jsho8-0004q3-Uo for qemu-devel@nongnu.org; Tue, 07 Jul 2020 03:14:26 -0400 Received: by mail-wr1-x434.google.com with SMTP id s10so43937961wrw.12 for ; Tue, 07 Jul 2020 00:14:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+v5zmTqMHanAlbP0rCuGswlB7G9ERwBp467Jydp4J1s=; b=Hd9Rmt4SPUXUgR0Qsa0W06b7poQu1JKVGeX9VguAR8b4SL1A39TybJOB3rgKo8kHiT FsyhWhqQ3/JaPvmAR401CrMQtAUoogplZy4NSP5KrfQPIfikEtlqu6wn8Gq23XHzNGgi We9XtmnpYYK4tlGTo08Pe6wLW9j5XUX3ebNWKn0fv1o3gs5yNToDOhsR3bDNIXX7SfaF 2e9XNbn+SwbXzmniemg0s95HIfB8Is0Ek/RzTEdgppZPCgpTm/AzErYK6rSKai5gfgkT VRGPi/UYR83ESvpET/tpY3/B4iSeX+w/+5Bjke+zysM4pvt55ScDOILiTkdpdY1yc7bn sOOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+v5zmTqMHanAlbP0rCuGswlB7G9ERwBp467Jydp4J1s=; b=E6op6RUy/rBzSHqcVfwbR36/e2UmRxqaZBxLa7xhH8bpvd0coKm0HWqTxz6UURGkHX mEeu6S1A8LzPbf+jZ7pwX77YqOIKmnRO99ourxoeMsFv3jqSdRB9zA53ABa7gH/yZNmU t3XiR5anfeuuGjdScUn7xaOPNmH7iTgII8dRZCRySuuNOQIsaSPezIdk3caS6mlMkPgY QSL1R7dvU+qB3tIvcWzOr3l0SBHs3NjDq5os1woXuXI/3Br5D7qoc4nqzeta8P8AN9uz GnS/Xr4V7vDXhINDloMn2tOAo/m0rEBW8u5brvcXjr7oaljaH4ra6yOE9kfXqtfTJe2j pL9Q== X-Gm-Message-State: AOAM533mJVeFHLIx01mifwe7t+7Csgy9+n3uH+CevW0SGly3bqiaUBQN C6GWJqWrl3bCBT8JCw5RC9lRtw== X-Received: by 2002:adf:f842:: with SMTP id d2mr56855091wrq.55.1594106063017; Tue, 07 Jul 2020 00:14:23 -0700 (PDT) Received: from zen.linaroharston ([51.148.130.216]) by smtp.gmail.com with ESMTPSA id e17sm26417761wrr.88.2020.07.07.00.14.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jul 2020 00:14:22 -0700 (PDT) Received: from zen.lan (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 9DD1F1FFB8; Tue, 7 Jul 2020 08:09:01 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Subject: [PULL 31/41] linux-user/elfload: use MAP_FIXED_NOREPLACE in pgb_reserved_va Date: Tue, 7 Jul 2020 08:08:48 +0100 Message-Id: <20200707070858.6622-32-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200707070858.6622-1-alex.bennee@linaro.org> References: <20200707070858.6622-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=alex.bennee@linaro.org; helo=mail-wr1-x434.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , =?utf-8?q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org, Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Given we assert the requested address matches what we asked we should also make that clear in the mmap flags. Otherwise we see failures in the GitLab environment for some currently unknown but allowable reason. We use MAP_FIXED_NOREPLACE if we can so we don't just clobber an existing mapping. Also include the strerror string for a bit more info on failure. Signed-off-by: Alex Bennée Message-Id: <20200701135652.1366-34-alex.bennee@linaro.org> -- 2.20.1 diff --git a/linux-user/elfload.c b/linux-user/elfload.c index b5cb21384a1c..7e7f642332dc 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -2294,7 +2294,7 @@ static void pgb_dynamic(const char *image_name, long align) static void pgb_reserved_va(const char *image_name, abi_ulong guest_loaddr, abi_ulong guest_hiaddr, long align) { - const int flags = MAP_ANONYMOUS | MAP_PRIVATE | MAP_NORESERVE; + int flags = MAP_ANONYMOUS | MAP_PRIVATE | MAP_NORESERVE; void *addr, *test; if (guest_hiaddr > reserved_va) { @@ -2307,15 +2307,19 @@ static void pgb_reserved_va(const char *image_name, abi_ulong guest_loaddr, /* Widen the "image" to the entire reserved address space. */ pgb_static(image_name, 0, reserved_va, align); +#ifdef MAP_FIXED_NOREPLACE + flags |= MAP_FIXED_NOREPLACE; +#endif + /* Reserve the memory on the host. */ assert(guest_base != 0); test = g2h(0); addr = mmap(test, reserved_va, PROT_NONE, flags, -1, 0); if (addr == MAP_FAILED) { error_report("Unable to reserve 0x%lx bytes of virtual address " - "space for use as guest address space (check your " + "space (%s) for use as guest address space (check your " "virtual memory ulimit setting or reserve less " - "using -R option)", reserved_va); + "using -R option)", reserved_va, strerror(errno)); exit(EXIT_FAILURE); } assert(addr == test);