From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1aRjgR-0007mW-9W for mharc-grub-devel@gnu.org; Fri, 05 Feb 2016 11:56:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48469) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aRjgO-0007jU-Hb for grub-devel@gnu.org; Fri, 05 Feb 2016 11:56:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aRjgL-00083F-AL for grub-devel@gnu.org; Fri, 05 Feb 2016 11:56:32 -0500 Received: from mail-lf0-x232.google.com ([2a00:1450:4010:c07::232]:33705) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aRjgL-000838-1f for grub-devel@gnu.org; Fri, 05 Feb 2016 11:56:29 -0500 Received: by mail-lf0-x232.google.com with SMTP id m1so62017619lfg.0 for ; Fri, 05 Feb 2016 08:56:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id; bh=KY+B23yMFvTR6JUB8Xfrm2sKtWtOwD/wnatZxkugF9M=; b=nWmx7dFGFO0onOOP+cYqs/hmEycBhMblPQ/lGeEikdnngWzYqKrCVHu/EMs22roPRH Zdrk3P/sT4/fKcBIhdrIhTWx4wInvzggGBn3Ig+Nr9BK6jtwCsGRNwlOjS9/KGD9IWWk WHezRyE08bQO4XoraTMH4FTHqE0zGRPWTbhM4QNBpHl0xCA0n5BtpYDeJcYs3q0mLc7d l35pIxmVISoHXiabuN9T64HMw4MXVsU4kEikoFhoq4gDSYyhExBLMW2Wkvs2tgF/knct 6QrEf0j9X8ZfBXArywjM6Kr1/crdQobEVeQZhgGnG4ZOvlIYZnCqoNt0ld9DtQbBaEwD ZNPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id; bh=KY+B23yMFvTR6JUB8Xfrm2sKtWtOwD/wnatZxkugF9M=; b=gWnIiTPHDf7C3CMIhY2j2QIlzjBje3X+/rI2Kxl8LBALuoDx/m74qIiCq3djLkxETH M/wAODmYf8fBG6Ueh8tP8QcSpXMvF/VEgRbPnRrmqJ0lMKhWvdtbebxg4IFWlYmsGxMR m4Zt8nTPTsjR9riN5RSZXHnqOSDAcNymDW3ItpxPtjwf/9vWJvYiWsoN+rnjIrors/P2 rC9PyhAebhP0Su6m/9SOR1ihZFEcgzCwSOFH7QWqJg65ifZ00eBsKrnP1gtiQZOJPcdx mRU460JEAZuB9LCUx36I/Y+kLZtu79lDN3XAzh/eRaIAwbSIpoqzq8+tcy4JlQ+xeMO4 09PA== X-Gm-Message-State: AG10YOQadn654DAysfTSA9FCG86pcSOQog6L4Ec8jPhJHw9ELwmNSF//2z6zLOGXn5e/Tw== X-Received: by 10.25.0.6 with SMTP id 6mr5593628lfa.132.1454691387954; Fri, 05 Feb 2016 08:56:27 -0800 (PST) Received: from localhost.localdomain (ppp109-252-76-159.pppoe.spdop.ru. [109.252.76.159]) by smtp.gmail.com with ESMTPSA id rx3sm2292467lbb.35.2016.02.05.08.56.26 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 05 Feb 2016 08:56:27 -0800 (PST) From: Andrei Borzenkov To: grub-devel@gnu.org Subject: [PATCH] efidisk: prevent errors from diskfilter scan of removable drives Date: Fri, 5 Feb 2016 19:56:20 +0300 Message-Id: <1454691380-8296-1-git-send-email-arvidjaar@gmail.com> X-Mailer: git-send-email 1.9.1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:4010:c07::232 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Feb 2016 16:56:33 -0000 Map EFI_NO_MEDIA to GRUB_ERR_OUT_OF_RANGE that is ignored by diskfilter. This actually matches pretty close (we obviously attempt to read outside of media) and avoids adding more error codes. This affects only internally initiated scans. If read/write from removable is explicitly requested, we still return an error and text explanation is more clear for user than generic error. Reported and tested by Andreas Loew --- grub-core/disk/efi/efidisk.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/grub-core/disk/efi/efidisk.c b/grub-core/disk/efi/efidisk.c index 1c00e3e..ea75344 100644 --- a/grub-core/disk/efi/efidisk.c +++ b/grub-core/disk/efi/efidisk.c @@ -547,7 +547,9 @@ grub_efidisk_read (struct grub_disk *disk, grub_disk_addr_t sector, status = grub_efidisk_readwrite (disk, sector, size, buf, 0); - if (status != GRUB_EFI_SUCCESS) + if (status == GRUB_EFI_NO_MEDIA) + return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("no media in `%s'", disk->name)); + else if (status != GRUB_EFI_SUCCESS) return grub_error (GRUB_ERR_READ_ERROR, N_("failure reading sector 0x%llx from `%s'"), (unsigned long long) sector, @@ -568,7 +570,9 @@ grub_efidisk_write (struct grub_disk *disk, grub_disk_addr_t sector, status = grub_efidisk_readwrite (disk, sector, size, (char *) buf, 1); - if (status != GRUB_EFI_SUCCESS) + if (status == GRUB_EFI_NO_MEDIA) + return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("no media in `%s'", disk->name)); + else if (status != GRUB_EFI_SUCCESS) return grub_error (GRUB_ERR_WRITE_ERROR, N_("failure writing sector 0x%llx to `%s'"), (unsigned long long) sector, disk->name); -- tg: (67dba97..) u/efi-no-media (depends on: master)