Re: [PATCH with title] priority fix in acpi_map_lsapic() arch/ia64/kernel/acpi.c

From: Simon Horman <horms_at_verge.net.au>
Date: 2007-11-20 17:51:46
On Thu, Nov 15, 2007 at 11:32:39PM +0100, Roel Kluin wrote:
> As above should have been its title.
> 
> Roel Kluin wrote:
> > I have sent this patch before to lkml, but it appears it wasn't picked up. Also
> > I have to admit this isn't tested. This is a patch against linus' tree.
> > 
> > ACPI_MADT_ENABLED is defined 1    (include/acpi/actbl1.h 501)
> > lapic_flags: an u32 of struct acpi_madt_local_sapic (include/acpi/actbl1.h 467)
> > --
> > '!' has a higher priority than '&', so as was
> > this won't test the first bit, but rather evaluates to false for any non-zero
> > lsapic->lapic_flags.
> > 
> > Signed-off-by: Roel Kluin <12o3l@tiscali.nl>

This looks correct to me, though I was curious to know why
the problem wasn't manifesting in a bug. I investigated
a bit and found that it seems that the only values
lapic_flags currently takes are 0 and ACPI_MADT_ENABLED,
so it turns out that the bogus logic actually gives the correct result
(by chance).

Acked-by: Simon Horman <horms@verge.net.au>

> > ---
> > diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
> > index 3d45d24..7d78d22 100644
> > --- a/arch/ia64/kernel/acpi.c
> > +++ b/arch/ia64/kernel/acpi.c
> > @@ -858,7 +858,7 @@ int acpi_map_lsapic(acpi_handle handle, int *pcpu)
> >  	lsapic = (struct acpi_madt_local_sapic *)obj->buffer.pointer;
> >  
> >  	if ((lsapic->header.type != ACPI_MADT_TYPE_LOCAL_SAPIC) ||
> > -	    (!lsapic->lapic_flags & ACPI_MADT_ENABLED)) {
> > +	    (!(lsapic->lapic_flags & ACPI_MADT_ENABLED))) {
> >  		kfree(buffer.pointer);
> >  		return -EINVAL;
> >  	}
> > 

-- 
Horms

-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Tue Nov 20 17:52:07 2007

This archive was generated by hypermail 2.1.8 : 2007-11-20 17:52:24 EST