mdadm: Fix build with gcc8

(From OE-Core rev: 9bba9c2f1721673881fa8b460887ddebffad538e)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Khem Raj
2018-05-09 13:24:17 -07:00
committed by Richard Purdie
parent e2f9287446
commit 56e6f969f6
3 changed files with 163 additions and 0 deletions

View File

@@ -0,0 +1,130 @@
From b83218de2623c0bbe9af355a81ae8385d7f30cfc Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 9 May 2018 12:56:41 -0700
Subject: [PATCH] Disable gcc8 warnings
This is needed until
https://bugzilla.redhat.com/show_bug.cgi?id=1553958
Upstream-Status: Inappropriate [Workaround]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Monitor.c | 4 +++-
mdopen.c | 4 ++++
super-ddf.c | 4 ++++
super-intel.c | 6 ++++++
super1.c | 5 +++++
5 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/Monitor.c b/Monitor.c
index 802a9d9..23b246b 100644
--- a/Monitor.c
+++ b/Monitor.c
@@ -441,7 +441,8 @@ static void alert(char *event, char *dev, char *disc, struct alert_info *info)
event, dev);
}
}
-
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-truncation"
static int check_array(struct state *st, struct mdstat_ent *mdstat,
int test, struct alert_info *ainfo,
int increments, char *prefer)
@@ -683,6 +684,7 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat,
return 1;
return 0;
}
+#pragma GCC diagnostic pop
static int add_new_arrays(struct mdstat_ent *mdstat, struct state **statelist,
int test, struct alert_info *info)
diff --git a/mdopen.c b/mdopen.c
index 685ca32..406aba4 100644
--- a/mdopen.c
+++ b/mdopen.c
@@ -26,6 +26,9 @@
#include "md_p.h"
#include <ctype.h>
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-truncation"
+
void make_parts(char *dev, int cnt)
{
/* make 'cnt' partition devices for 'dev'
@@ -99,6 +102,7 @@ void make_parts(char *dev, int cnt)
}
free(name);
}
+#pragma GCC diagnostic pop
/*
* We need a new md device to assemble/build/create an array.
diff --git a/super-ddf.c b/super-ddf.c
index 1707ad1..e08d289 100644
--- a/super-ddf.c
+++ b/super-ddf.c
@@ -2846,6 +2846,9 @@ static void _set_config_size(struct phys_disk_entry *pde, const struct dl *dl)
(unsigned long long)cfs, (unsigned long long)(dl->size-cfs));
}
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-overflow"
+
/* Add a device to a container, either while creating it or while
* expanding a pre-existing container
*/
@@ -2981,6 +2984,7 @@ static int add_to_super_ddf(struct supertype *st,
return 0;
}
+#pragma GCC diagnostic pop
static int remove_from_super_ddf(struct supertype *st, mdu_disk_info_t *dk)
{
diff --git a/super-intel.c b/super-intel.c
index 00a2925..44fbead 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -298,6 +298,11 @@ struct md_list {
};
#define pr_vrb(fmt, arg...) (void) (verbose && pr_err(fmt, ##arg))
+#pragma GCC diagnostic push
+# if __GNUC__ == 8
+# pragma GCC diagnostic ignored "-Wstringop-truncation"
+# endif
+#pragma GCC diagnostic ignored "-Wformat-truncation"
static __u8 migr_type(struct imsm_dev *dev)
{
@@ -11618,3 +11623,4 @@ struct superswitch super_imsm = {
.get_bad_blocks = imsm_get_badblocks,
#endif /* MDASSEMBLE */
};
+#pragma GCC diagnostic pop
diff --git a/super1.c b/super1.c
index 87a74cb..71c515f 100644
--- a/super1.c
+++ b/super1.c
@@ -1091,6 +1091,10 @@ static struct mdinfo *container_content1(struct supertype *st, char *subarray)
return info;
}
+#pragma GCC diagnostic push
+# if __GNUC__ == 8
+# pragma GCC diagnostic ignored "-Wstringop-truncation"
+#endif
static int update_super1(struct supertype *st, struct mdinfo *info,
char *update,
char *devname, int verbose,
@@ -1473,6 +1477,7 @@ static int init_super1(struct supertype *st, mdu_array_info_t *info,
return 1;
}
+#pragma GCC diagnostic pop
struct devinfo {
int fd;

View File

@@ -0,0 +1,31 @@
From ab18f04cf89ef4e8521c81c50477e1363b2d333b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 28 Apr 2018 09:46:12 -0700
Subject: [PATCH] use memmove instead of memcpy on overlapping region
Fixes
super0.c:526:3: error: 'memcpy' accessing 3936 bytes at offsets 156 and 160 overlaps 3932 bytes at offset 160 [-Werror=restrict]
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
super0.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/super0.c b/super0.c
index f5b4507..264b598 100644
--- a/super0.c
+++ b/super0.c
@@ -523,7 +523,7 @@ static int update_super0(struct supertype *st, struct mdinfo *info,
* up 4 bytes before continuing
*/
__u32 *sb32 = (__u32*)sb;
- memcpy(sb32+MD_SB_GENERIC_CONSTANT_WORDS+7,
+ memmove(sb32+MD_SB_GENERIC_CONSTANT_WORDS+7,
sb32+MD_SB_GENERIC_CONSTANT_WORDS+7+1,
(MD_SB_WORDS - (MD_SB_GENERIC_CONSTANT_WORDS+7+1))*4);
if (verbose >= 0)
--
2.17.0

View File

@@ -22,6 +22,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/raid/mdadm/${BPN}-${PV}.tar.xz \
file://0004-mdadm-Forced-type-conversion-to-avoid-truncation.patch \
file://0005-Add-a-comment-to-indicate-valid-fallthrough.patch \
file://0001-Use-CC-to-check-for-implicit-fallthrough-warning-sup.patch \
file://0001-use-memmove-instead-of-memcpy-on-overlapping-region.patch \
file://0001-Disable-gcc8-warnings.patch \
"
SRC_URI[md5sum] = "2cb4feffea9167ba71b5f346a0c0a40d"
SRC_URI[sha256sum] = "1d6ae7f24ced3a0fa7b5613b32f4a589bb4881e3946a5a2c3724056254ada3a9"