cdbbbae637
OBS-URL: https://build.opensuse.org/request/show/792409 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/grub2?expand=0&rev=218
53 lines
2.3 KiB
Diff
53 lines
2.3 KiB
Diff
From fe8a83722bf1af7ea3949e6d96e7906407f78d5c Mon Sep 17 00:00:00 2001
|
|
From: Michael Chang <mchang@suse.com>
|
|
Date: Wed, 25 Mar 2020 13:52:51 +0800
|
|
Subject: [PATCH 1/2] mdraid1x_linux: Fix gcc10 error -Werror=array-bounds
|
|
|
|
We bumped into the build error while testing gcc-10 pre-release.
|
|
|
|
../../grub-core/disk/mdraid1x_linux.c: In function 'grub_mdraid_detect':
|
|
../../grub-core/disk/mdraid1x_linux.c:181:15: error: array subscript <unknown> is outside array bounds of 'grub_uint16_t[0]' {aka 'short unsigned int[0]'} [-Werror=array-bounds]
|
|
181 | (char *) &sb.dev_roles[grub_le_to_cpu32 (sb.dev_number)]
|
|
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
../../grub-core/disk/mdraid1x_linux.c:98:17: note: while referencing 'dev_roles'
|
|
98 | grub_uint16_t dev_roles[0]; /* Role in array, or 0xffff for a spare, or 0xfffe for faulty. */
|
|
| ^~~~~~~~~
|
|
../../grub-core/disk/mdraid1x_linux.c:127:33: note: defined here 'sb'
|
|
127 | struct grub_raid_super_1x sb;
|
|
| ^~
|
|
cc1: all warnings being treated as errors
|
|
|
|
Apparently gcc issues the warning when trying to access sb.dev_roles
|
|
array's member, since it is a zero length array as the last element of
|
|
struct grub_raid_super_1x that is allocated sparsely without extra
|
|
chunks for the trailing bits, so the warning looks legitimate in this
|
|
regard.
|
|
|
|
As the whole thing here is doing offset computation, it is undue to use
|
|
syntax that would imply array member access then take address from it
|
|
later. Instead we could accomplish the same thing through basic array
|
|
pointer arithmetic to pacify the warning.
|
|
|
|
Signed-off-by: Michael Chang <mchang@suse.com>
|
|
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
|
---
|
|
grub-core/disk/mdraid1x_linux.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/grub-core/disk/mdraid1x_linux.c b/grub-core/disk/mdraid1x_linux.c
|
|
index 7cc80d3df..c980feba4 100644
|
|
--- a/grub-core/disk/mdraid1x_linux.c
|
|
+++ b/grub-core/disk/mdraid1x_linux.c
|
|
@@ -178,7 +178,7 @@ grub_mdraid_detect (grub_disk_t disk,
|
|
return NULL;
|
|
|
|
if (grub_disk_read (disk, sector,
|
|
- (char *) &sb.dev_roles[grub_le_to_cpu32 (sb.dev_number)]
|
|
+ (char *) (sb.dev_roles + grub_le_to_cpu32 (sb.dev_number))
|
|
- (char *) &sb,
|
|
sizeof (role), &role))
|
|
return NULL;
|
|
--
|
|
2.16.4
|
|
|