Messages in this thread | | | Date | Thu, 22 May 2003 20:29:41 +0200 | From | mikpe@csd ... | Subject | Re: arch/i386/kernel/mpparse.c warning fixes |
| |
William Lee Irwin III writes: > William Lee Irwin III writes: > >> - if (m->mpc_apicid > MAX_APICS) { > >> + if (MAX_APICS - m->mpc_apicid <= 0) { > >> printk(KERN_WARNING "Processor #%d INVALID. (Max ID: %d).\n", > >> m->mpc_apicid, MAX_APICS); > >> --num_processors; > > On Thu, May 22, 2003 at 06:07:43PM +0200, mikpe@csd.uu.se wrote: > > Eeew. Whatever the original problem is, this "fix" is just too > > obscure and ugly. > > m->mpc_apicid is an 8-bit type; MAX_APICS can be 256. The above fix > properly compares two integral expressions of equal width.
In the original "_>_", the 8-bit mpc_apicid is implicitly converted to int before the comparison, as part of the "integer promotions" in the "usual arithmetic conversions" (C standard lingo). The same happens in your "_-_<=0". So what's the benefit of the rewrite?
> Also, as MAX_APICS-1 is reserved for the broadcast physical APIC ID > (it's 0xF for serial APIC and 0xFF for xAPIC) the small semantic change > here is correct.
No argument there, except that ">=" gets the job done in a cleaner way. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |