Re: [PATCH 04/36] x86/pci: add cap_resource

Linus Torvalds
2010-01-21T15:50:53Z

On Wed, 20 Jan 2010, Yinghai Lu wrote:
>
> -v2: hpa said we should compare with (resource_size_t)~0

Hmm. Some of these look dubious.

> diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c
> index f939d60..b267919 100644
> --- a/arch/x86/pci/bus_numa.c
> +++ b/arch/x86/pci/bus_numa.c
> @@ -60,6 +60,9 @@ void __devinit update_res(struct pci_root_info *info, size_t start,
> if (start > end)
> return;
>
> + if (start == (resource_size_t)~0)
> + return;

Here, 'start' isn't a resource_size_t. It's a regular size_t. And if
resource_size_t is u64, and size_t is u32, this test can never be true.

Maybe that is intentional, but if looks odd/wrong. Needs a comment if
right, needs fixing if wrong.

> +static inline resource_size_t cap_resource(u64 val)
> +{
> + if (val > (resource_size_t)~0)
> + return (resource_size_t)~0;
> + else
> + return val;
> +}
> #endif

And this just looks odd. I'd suggest just doing

#define MAX_RESOURCE ((resource_size_t)~0)

static inline resource_size_t cap_resource(u64 val)
{
if (val > MAX_RESOURCE)
val = MAX_RESOURCE;
return val;
}

instead, which looks a whole lot more natural. No?

Linus