diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2016-10-03 14:58:23 +0200 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2016-10-03 17:44:25 +0200 |
commit | ee04f1fcfd915af927ad19c3952e211158f4df0d (patch) | |
tree | 20ecb04785a4e07f49b7c20b6653c17043a1b3ea | |
parent | e95a2529748c3047f1af33678c74114d71994e05 (diff) | |
download | lvm2-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_DM | 1 | ||||
-rw-r--r-- | daemons/dmeventd/plugins/raid/dmeventd_raid.c | 4 |
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; } |