Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Jan 2011 04:00:44 +1100 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org
Subject:   Re: svn commit: r217538 - in head/sys/dev: buslogic cs
Message-ID:  <20110119035030.W2099@besplex.bde.org>
In-Reply-To: <201101181523.p0IFNGeB042079@svn.freebsd.org>
References:  <201101181523.p0IFNGeB042079@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110119035030.W2099>