[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/6] commands/i386/pc/sendkey: Fix "writing 1 byte into a reg
From: |
Vladimir 'phcoder' Serbinenko |
Subject: |
Re: [PATCH 3/6] commands/i386/pc/sendkey: Fix "writing 1 byte into a region of size 0" build error |
Date: |
Fri, 11 Mar 2022 19:41:12 +0100 |
LGTM
On Fri, Mar 11, 2022 at 12:37 AM Daniel Kiper <daniel.kiper@oracle.com> wrote:
>
> Latest GCC may complain in that way:
>
> commands/i386/pc/sendkey.c: In function ‘grub_sendkey_postboot’:
> commands/i386/pc/sendkey.c:223:21: error: writing 1 byte into a region of
> size 0 [-Werror=stringop-overflow=]
> 223 | *((char *) 0x41a) = 0x1e;
> | ~~~~~~~~~~~~~~~~~~^~~~~~
>
> The volatile keyword addition helps and additionally assures us the
> compiler will not optimize out fixed assignments.
>
> Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
> ---
> grub-core/commands/i386/pc/sendkey.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/grub-core/commands/i386/pc/sendkey.c
> b/grub-core/commands/i386/pc/sendkey.c
> index 26d9acd3d..ab4bca9e9 100644
> --- a/grub-core/commands/i386/pc/sendkey.c
> +++ b/grub-core/commands/i386/pc/sendkey.c
> @@ -220,8 +220,8 @@ grub_sendkey_postboot (void)
>
> *flags = oldflags;
>
> - *((char *) 0x41a) = 0x1e;
> - *((char *) 0x41c) = 0x1e;
> + *((volatile char *) 0x41a) = 0x1e;
> + *((volatile char *) 0x41c) = 0x1e;
>
> return GRUB_ERR_NONE;
> }
> @@ -236,8 +236,8 @@ grub_sendkey_preboot (int noret __attribute__ ((unused)))
> oldflags = *flags;
>
> /* Set the sendkey. */
> - *((char *) 0x41a) = 0x1e;
> - *((char *) 0x41c) = keylen + 0x1e;
> + *((volatile char *) 0x41a) = 0x1e;
> + *((volatile char *) 0x41c) = keylen + 0x1e;
> grub_memcpy ((char *) 0x41e, sendkey, 0x20);
>
> /* Transform "any ctrl" to "right ctrl" flag. */
> --
> 2.11.0
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
--
Regards
Vladimir 'phcoder' Serbinenko