util-linux/backport-wdctl-mark-flags-field-as-unsigned-long.patch
zhangyao e022c63dda sync community patches
(cherry picked from commit ef94723c9efb49e176facfc11ccea8a5c3a61fce)
2023-03-08 14:06:07 +08:00

44 lines
1.5 KiB
Diff

From f36f3251c564991070c6b2c2347a999a56564e63 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
Date: Sun, 8 Jan 2023 03:29:51 +0000
Subject: [PATCH] wdctl: mark flags field as unsigned long
This is required by string_to_bitmask().
The previous cast failed on s390x with the following warning:
In function 'string_to_bitmask',
inlined from 'string_to_bitmask' at lib/strutils.c:802:5,
inlined from 'main' at sys-utils/wdctl.c:770:8:
lib/strutils.c:829:23: error: write of 64-bit data outside the bound of destination object, data truncated into 32-bit [-Werror=extra]
829 | *mask |= flag;
|
---
sys-utils/wdctl.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sys-utils/wdctl.c b/sys-utils/wdctl.c
index 8de5d5a..f0d2e8d 100644
--- a/sys-utils/wdctl.c
+++ b/sys-utils/wdctl.c
@@ -592,7 +592,7 @@ int main(int argc, char *argv[])
struct wd_device wd;
struct wd_control ctl = { .hide_headings = 0 };
int c, res = EXIT_SUCCESS, count = 0;
- uint32_t wanted = 0;
+ unsigned long wanted = 0;
int timeout = 0;
const char *dflt_device = NULL;
@@ -640,7 +640,7 @@ int main(int argc, char *argv[])
timeout = strtos32_or_err(optarg, _("invalid timeout argument"));
break;
case 'f':
- if (string_to_bitmask(optarg, (unsigned long *) &wanted, name2bit) != 0)
+ if (string_to_bitmask(optarg, &wanted, name2bit) != 0)
return EXIT_FAILURE;
break;
case 'F':
--
2.33.0