>>>> + pci_read_config_dword(dev, SKX_CAPID6, &val);
>>>> + return bitmap_weight((unsigned long *)&val, SKX_CHA_BIT_WIDTH);
>>> UB is here.
>>> Fix is simple, use unsigned long and drop this ugly casting.
> Just noticed that we have to do casting anyway.
> pci_read_config_dword uses u32.
> bitmap_weight uses unsigned long.
...which would lead to UB.
unsigned long bits;
bits = value;
With Best Regards,