Re: [PATCH 1/1] x86/platform/x86: Fix count of CHas on multi-pci-segment arches

From: Andy Shevchenko
Date: Tue Mar 13 2018 - 11:58:30 EST


On Tue, Mar 13, 2018 at 3:42 AM, Liang, Kan <kan.liang@xxxxxxxxxxxxxxx> wrote:

> +#define SKX_CAPID6 0x9c
> +#define SKX_CHA_BIT_WIDTH 28
> +
> static int skx_count_chabox(void)
> {
> + struct pci_dev *dev = NULL;
> + u32 val = 0;
>

> + dev = pci_get_device(PCI_VENDOR_ID_INTEL, 0x2083, dev);
> + if (!dev)
> + return 0;

Where is pci_dev_put()?

>
> + 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.

> }

--
With Best Regards,
Andy Shevchenko