From: "Vladimir 'φ-coder/phcoder' Serbinenko" <phcoder@gmail.com>
To: The development of GNU GRUB <grub-devel@gnu.org>
Subject: Re: [PATCH] efidisk: prevent errors from diskfilter scan of removable drives
Date: Fri, 12 Feb 2016 15:29:05 +0100 [thread overview]
Message-ID: <56BDEC31.30409@gmail.com> (raw)
In-Reply-To: <1454691380-8296-1-git-send-email-arvidjaar@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2024 bytes --]
On 05.02.2016 17:56, Andrei Borzenkov wrote:
> 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 <Andreas.Loew@gmx.net>
>
I feel like we should be fixing diskfilter. Consider another case: dead
disk dangling on cable and returning mostly I/O errors
> ---
> 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);
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 213 bytes --]
next prev parent reply other threads:[~2016-02-12 14:29 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-05 16:56 [PATCH] efidisk: prevent errors from diskfilter scan of removable drives Andrei Borzenkov
2016-02-12 14:29 ` Vladimir 'φ-coder/phcoder' Serbinenko [this message]
2016-02-12 14:38 ` Andrei Borzenkov
2016-02-12 14:49 ` Vladimir 'φ-coder/phcoder' Serbinenko
2016-02-13 5:41 ` Andrei Borzenkov
2016-02-26 13:41 ` Vladimir 'phcoder' Serbinenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56BDEC31.30409@gmail.com \
--to=phcoder@gmail.com \
--cc=grub-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.