summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2016-10-03 14:58:23 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2016-10-03 17:44:25 +0200
commitee04f1fcfd915af927ad19c3952e211158f4df0d (patch)
tree20ecb04785a4e07f49b7c20b6653c17043a1b3ea
parente95a2529748c3047f1af33678c74114d71994e05 (diff)
downloadlvm2-ee04f1fcfd915af927ad19c3952e211158f4df0d.tar.gz
raid: dmeventd plugin use 64bit arithmetic
Coverity suggested to used 64bit unsigned ints instead of signed 32b int. Assuming there is no user of >31legs raid array.
-rw-r--r--WHATS_NEW_DM1
-rw-r--r--daemons/dmeventd/plugins/raid/dmeventd_raid.c4
2 files changed, 3 insertions, 2 deletions
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index ed0730798..618673797 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,5 +1,6 @@
Version 1.02.136 -
======================================
+ Use unsigned math when checking more then 31 legs of raid.
Fix 'dmstats delete' with dmsetup older than v1.02.129
Fix stats walk segfault with dmsetup older than v1.02.129
diff --git a/daemons/dmeventd/plugins/raid/dmeventd_raid.c b/daemons/dmeventd/plugins/raid/dmeventd_raid.c
index bec594af1..ee18793cc 100644
--- a/daemons/dmeventd/plugins/raid/dmeventd_raid.c
+++ b/daemons/dmeventd/plugins/raid/dmeventd_raid.c
@@ -48,11 +48,11 @@ static int _process_raid_event(struct dso_state *state, char *params, const char
while ((d = strchr(d, 'D'))) {
uint32_t dev = (uint32_t)(d - status->dev_health);
- if (!(state->raid_devs[dev / 64] & (1 << (dev % 64))))
+ if (!(state->raid_devs[dev / 64] & (UINT64_C(1) << (dev % 64))))
log_error("Device #%u of %s array, %s, has failed.",
dev, status->raid_type, device);
- state->raid_devs[dev / 64] |= (1 << (dev % 64));
+ state->raid_devs[dev / 64] |= (UINT64_C(1) << (dev % 64));
d++;
dead = 1;
}