find_last_bit expects a size in bits and not in words. the calculation limits the number of guest devices to 8192. This probably does not matter in reality, its wrong anyway. Fixes: df1fe5bb49241 ("s390: Virtual channel subsystem support") Signed-off-by: Christian Borntraeger --- hw/s390x/css.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/s390x/css.c b/hw/s390x/css.c index 3a67b670531..dedd39006bf 100644 --- a/hw/s390x/css.c +++ b/hw/s390x/css.c @@ -2023,8 +2023,7 @@ bool css_schid_final(int m, uint8_t cssid, uint8_t ssid, uint16_t schid) return true; } set = channel_subsys.css[real_cssid]->sch_set[ssid]; - return schid > find_last_bit(set->schids_used, - (MAX_SCHID + 1) / sizeof(unsigned long)); + return schid > find_last_bit(set->schids_used,(MAX_SCHID + 1)); } unsigned int css_find_free_chpid(uint8_t cssid) -- 2.55.0