From nobody Wed May 15 22:59:00 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556886090; cv=none; d=zoho.com; s=zohoarc; b=Bb+2xWvDoqSgu/+SURaBouEqcJ2hK0WkmhreBLPkUo6kvdj3OhhdC2yB+Mo8/oMreCRgYpV8YR2XUZ4mLFi74DHQjs7V0OqWtjXy/nZBNS7ngMG6GZaN4gwWB+nkRWs9mHfjKaOlGhWzisUuaK5yoaJ6PeMFGwdHR4adGkQJhgo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556886090; h=Content-Type:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To:ARC-Authentication-Results; bh=MDxLo/LnSsluuOYbAhZgKtIhQBd/p3pTdicYr0RUXxM=; b=MTTInOwrX/dauPy24iRpF+nrlHt7r3mCSQVdssEj2aUR86wNFzZV6JIy/v+dOlCsQh8CVQcSjm/WABlhzxzPm40ifAlXI8uIfVRod+z3C9Mmz/ooTJEqjh2LLt32ZR3Ja+WOFkC9+Ol+2QBQXqgwc0M5rqdIz5wBiMjr2gybzc8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556886090201321.73970737887555; Fri, 3 May 2019 05:21:30 -0700 (PDT) Received: from localhost ([127.0.0.1]:39832 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hMXBi-0005Nr-OJ for importer@patchew.org; Fri, 03 May 2019 08:21:14 -0400 Received: from eggs.gnu.org ([209.51.188.92]:47036) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hMXAi-0004rp-UJ for qemu-devel@nongnu.org; Fri, 03 May 2019 08:20:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hMXAi-0006BV-2M for qemu-devel@nongnu.org; Fri, 03 May 2019 08:20:12 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:40825) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hMXAh-0006An-SR for qemu-devel@nongnu.org; Fri, 03 May 2019 08:20:12 -0400 Received: by mail-wm1-x343.google.com with SMTP id h11so6492804wmb.5 for ; Fri, 03 May 2019 05:20:11 -0700 (PDT) Received: from debian ([151.60.84.114]) by smtp.gmail.com with ESMTPSA id v9sm2773594wrg.20.2019.05.03.05.20.08 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 03 May 2019 05:20:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:mime-version:content-disposition :user-agent; bh=MDxLo/LnSsluuOYbAhZgKtIhQBd/p3pTdicYr0RUXxM=; b=JBbe0NqByKmoCnyQEZxNrWnhJUYjoCbeu91Evc3krdsDtEWGsuzx1eRFe1pu5NN2LO QRYONro8H25PMjAMP0nOswgk4071HVtggyQfS5ACm9/PJTH99zKR+laIGP8lWVNdnC1Q STuLmQ70HEOre/F4dKcqsfz/ZrHX4HIh5EYzIU9yA8Doev00p/mChUDJ/j45QkLkvapi sw1qNATa+Xowp6IXlohIsfJ3vsBJAwQxamzGwleipdU9Z3o/vF6E42JaXCzcdW9OQVep yL+xA+zS/Md+7etWewDxlPxDELpP5TchMyNDO5XUZsPL5AeXS8ZEDBuvNYnLgGuFoGoS kyQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition:user-agent; bh=MDxLo/LnSsluuOYbAhZgKtIhQBd/p3pTdicYr0RUXxM=; b=VlkKM49oHsAbfA9ii7RHQqdw380UqjG4cBKd4d9BqkTo/SoPrEAsOBnSDxwuM7GdBV 6NcVVNwZS1duiYpAYGUDH0gUn12raSd79em6hlns+AoHly5/v+lKFlJUiZiKpiIhglwv d+3WTCeepiQJW90FKVjifSP8QuPCQkmcoyNKKEQoIWflSpCGVH80qO9AuMQibw1ksUOE KUlf4Or19iLivmUYeQVpQCLDMKFxSYHk36c0AD49LpvW29hBZaBAulrDRRbUwLlMWFes DYD8K/J4cycltYSTEmQDDhlCYm9WbDxuchjB0Duw+fwaJRU4Vr2FJRFX61Hex1HTktnx t01A== X-Gm-Message-State: APjAAAUqeFEEAoRbaP8qNI6pAfg7Gi6wgf4QSwkm1WpTN5cMxVaPCZrX mQ10WGtR7f4rT+TI9T+kusarNjW1LmY= X-Google-Smtp-Source: APXvYqzJBHXEm/MxEXuZR1ttw2CjUoNQdzgFGdudVx7Me050Hu147F1i8yI41UFZX7Er2/ln9jy5LQ== X-Received: by 2002:a1c:f909:: with SMTP id x9mr6239364wmh.18.1556886009950; Fri, 03 May 2019 05:20:09 -0700 (PDT) Date: Fri, 3 May 2019 14:20:07 +0200 From: Giuseppe Musacchio To: qemu-devel@nongnu.org Message-ID: <20190503122007.lkjsvztgt4ycovac@debian> MIME-Version: 1.0 Content-Disposition: inline User-Agent: NeoMutt/20180716 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::343 Subject: [Qemu-devel] [PATCH v2] linux-user: elf: Map empty PT_LOAD segments X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, riku.voipio@iki.fi, laurent@vivier.eu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Some PT_LOAD segments may be completely zeroed out and their p_filesize is zero, in that case the loader should just allocate a page that's at least p_memsz bytes large (plus eventual alignment padding). Calling zero_bss does this job for us, all we have to do is make sure we don't try to mmap a zero-length page. Signed-off-by: Giuseppe Musacchio Reviewed-by: Peter Maydell --- linux-user/elfload.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index c1a2602..138735b 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -2366,11 +2366,19 @@ static void load_elf_image(const char *image_name, = int image_fd, vaddr_ps =3D TARGET_ELF_PAGESTART(vaddr); vaddr_len =3D TARGET_ELF_PAGELENGTH(eppnt->p_filesz + vaddr_po= ); =20 - error =3D target_mmap(vaddr_ps, vaddr_len, - elf_prot, MAP_PRIVATE | MAP_FIXED, - image_fd, eppnt->p_offset - vaddr_po); - if (error =3D=3D -1) { - goto exit_perror; + /* + * Some segments may be completely empty without any backing f= ile + * segment, in that case just let zero_bss allocate an empty b= uffer + * for it. + */ + if (eppnt->p_filesz !=3D 0) { + error =3D target_mmap(vaddr_ps, vaddr_len, elf_prot, + MAP_PRIVATE | MAP_FIXED, + image_fd, eppnt->p_offset - vaddr_po); + + if (error =3D=3D -1) { + goto exit_perror; + } } =20 vaddr_ef =3D vaddr + eppnt->p_filesz; --=20 2.20.1