svn commit: r217538 - in head/sys/dev: buslogic cs
Bruce Evans
brde at optusnet.com.au
Tue Jan 18 17:00:48 UTC 2011
On Tue, 18 Jan 2011, John Baldwin wrote:
> Log:
> Remove some always-true comparisons.
>
> Submitted by: clang via rdivacky
>
> Modified: head/sys/dev/buslogic/bt.c
> ==============================================================================
> --- head/sys/dev/buslogic/bt.c Tue Jan 18 14:58:44 2011 (r217537)
> +++ head/sys/dev/buslogic/bt.c Tue Jan 18 15:23:16 2011 (r217538)
> @@ -975,7 +975,7 @@ bt_find_probe_range(int ioport, int *por
> int
> bt_iop_from_bio(isa_compat_io_t bio_index)
> {
> - if (bio_index >= 0 && bio_index < BT_NUM_ISAPORTS)
> + if (bio_index < BT_NUM_ISAPORTS)
> return (bt_board_ports[bio_index]);
> return (-1);
> }
So, what guarantees that isa_compat_io_t is unsigned and will remain so?
Indexes should be ints, unless you want a sign morass.
> Modified: head/sys/dev/cs/if_cs.c
> ==============================================================================
> --- head/sys/dev/cs/if_cs.c Tue Jan 18 14:58:44 2011 (r217537)
> +++ head/sys/dev/cs/if_cs.c Tue Jan 18 15:23:16 2011 (r217538)
> @@ -364,7 +364,7 @@ cs_cs89x0_probe(device_t dev)
>
> if (!error && !(sc->flags & CS_NO_IRQ)) {
> if (chip_type == CS8900) {
> - if (irq >= 0 || irq < 16)
> + if (irq < 16)
> irq = cs8900_irq2eeint[irq];
> else
> irq = 255;
>
Here `irq' is declared locally as u_long, so it can easily seen to be
unsigned. u_long is bogus, but is unfortunately required by
bus_get_resource()' API to fetch the initial value of `irq'. The irq
is only checked to be in range and even bus_get_resource()'s return value
are not checked until long after the call.
Bruce
More information about the svn-src-head
mailing list