From 2a1e200f7af3d4c52afbb4627c8cf87f98baa71e Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Fri, 3 May 2024 21:50:38 +0200 Subject: [PATCH] libdm: fix condition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When we switch supported_reserved_types_with_range to const gcc repots this problem: warning: ‘and’ of mutually exclusive equal-tests is always 0 !(iter->type & supported_reserved_types_with_range))) { It's not clear from the history what was the actual intention of this internal error test, let's assume the check wanted to make sure that when DM_REPORT_FIELD_RESERVED_VALUE_RANGE is set, some other fields from supported_reserved_types_with_range set are also selected. --- device_mapper/libdm-report.c | 6 ++++-- libdm/libdm-report.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/device_mapper/libdm-report.c b/device_mapper/libdm-report.c index 362c8b8b6..122ca83ab 100644 --- a/device_mapper/libdm-report.c +++ b/device_mapper/libdm-report.c @@ -2589,7 +2589,8 @@ static int _check_reserved_values_supported(const struct dm_report_field_type fi if (iter->type & DM_REPORT_FIELD_TYPE_MASK) { if (!(iter->type & supported_reserved_types) || ((iter->type & DM_REPORT_FIELD_RESERVED_VALUE_RANGE) && - !(iter->type & supported_reserved_types_with_range))) { + !(iter->type & (supported_reserved_types_with_range & + ~DM_REPORT_FIELD_RESERVED_VALUE_RANGE)))) { log_error(INTERNAL_ERROR "_check_reserved_values_supported: " "global reserved value for type 0x%x not supported", iter->type); @@ -2600,7 +2601,8 @@ static int _check_reserved_values_supported(const struct dm_report_field_type fi field = &fields[field_res->field_num]; if (!(field->flags & supported_reserved_types) || ((iter->type & DM_REPORT_FIELD_RESERVED_VALUE_RANGE) && - !(iter->type & supported_reserved_types_with_range))) { + !(iter->type & (supported_reserved_types_with_range & + ~DM_REPORT_FIELD_RESERVED_VALUE_RANGE)))) { log_error(INTERNAL_ERROR "_check_reserved_values_supported: " "field-specific reserved value of type 0x%x for " "field %s not supported", diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c index 5e74d9129..87defe94a 100644 --- a/libdm/libdm-report.c +++ b/libdm/libdm-report.c @@ -2587,7 +2587,8 @@ static int _check_reserved_values_supported(const struct dm_report_field_type fi if (iter->type & DM_REPORT_FIELD_TYPE_MASK) { if (!(iter->type & supported_reserved_types) || ((iter->type & DM_REPORT_FIELD_RESERVED_VALUE_RANGE) && - !(iter->type & supported_reserved_types_with_range))) { + !(iter->type & (supported_reserved_types_with_range & + ~DM_REPORT_FIELD_RESERVED_VALUE_RANGE)))) { log_error(INTERNAL_ERROR "_check_reserved_values_supported: " "global reserved value for type 0x%x not supported", iter->type); @@ -2598,7 +2599,8 @@ static int _check_reserved_values_supported(const struct dm_report_field_type fi field = &fields[field_res->field_num]; if (!(field->flags & supported_reserved_types) || ((iter->type & DM_REPORT_FIELD_RESERVED_VALUE_RANGE) && - !(iter->type & supported_reserved_types_with_range))) { + !(iter->type & (supported_reserved_types_with_range & + ~DM_REPORT_FIELD_RESERVED_VALUE_RANGE)))) { log_error(INTERNAL_ERROR "_check_reserved_values_supported: " "field-specific reserved value of type 0x%x for " "field %s not supported",