Please review patch for aic7xxx_pci.c
Ulrich Spörlein
uqs at FreeBSD.org
Tue Jul 23 22:29:42 UTC 2013
On Tue, 2013-07-23 at 16:04:04 -0600, Justin T. Gibbs wrote:
> On Jul 23, 2013, at 3:41 PM, Ulrich Spörlein <uqs at freebsd.org> wrote:
>
> > On Tue, 2013-07-23 at 15:15:53 -0600, Justin T. Gibbs wrote:
> >> On Jul 23, 2013, at 2:45 PM, Ulrich Spörlein <uqs at freebsd.org> wrote:
> >>
> >>> Thanks, but maybe it's better to have the discussion here.
> >>>
> >>> You wrote:
> >>> The difference in the argument order between the declaration and definition is
> >>> likely what led to this programming error. Your patch should also correct the
> >>> argument reversal in the declaration of ahc_9005_subdevinfo_valid().
> >>>
> >>> The argument order you've used seems the best choice since it matches what is
> >>> used in ahc_compose_id().
> >>>
> >>>
> >>>
> >>> I'm not sure that reversing the arguments in the function definition is
> >>> the right way. This would make the patch a no-op.
> >>
> >> Read the quote again. I said change the "declaration", not the
> >> "definition". To be extremely clear, the code currently looks like
> >> this:
> >
> > D'oh, that's what I get for reading too fast. I've opted to change the
> > function definition, in the end, so that declaration, definition and
> > call-site are in sync, see
> > https://github.com/uqs/freebsd-head/commit/e699b2fde01f235a22e1125e9f3aef16623b512f
> >
> > Thanks!
> > Uli
>
> But now the order of the arguments does not match ahc_compose_id().
>
> It seems to me that we want to only have a single convention in how this
> data is passed to functions.
Ok, back to the first variant then.
commit 1afbac36d5a735b91dfb673abad9635b882d9b4d
Author: Ulrich Spörlein <uqs at FreeBSD.org>
Date: Tue Jul 16 11:37:17 2013 +0200
Match function definition to declaration and call-site.
SVN r95378 refactored ahc_9005_subdevinfo_valid out into a separate
function but swapped the vendor/subvendor and device/subdevice pairs of
the parameters.
Found by: Coverity Prevent, CID 744931
Reviewed by: gibbs
diff --git a/sys/dev/aic7xxx/aic7xxx_pci.c b/sys/dev/aic7xxx/aic7xxx_pci.c
index 2bf4927..73df372 100644
--- a/sys/dev/aic7xxx/aic7xxx_pci.c
+++ b/sys/dev/aic7xxx/aic7xxx_pci.c
@@ -673,8 +673,8 @@ const u_int ahc_num_pci_devs = NUM_ELEMENTS(ahc_pci_ident_table);
#define STA 0x08
#define DPR 0x01
-static int ahc_9005_subdevinfo_valid(uint16_t vendor, uint16_t device,
- uint16_t subvendor, uint16_t subdevice);
+static int ahc_9005_subdevinfo_valid(uint16_t device, uint16_t vendor,
+ uint16_t subdevice, uint16_t subvendor);
static int ahc_ext_scbram_present(struct ahc_softc *ahc);
static void ahc_scbram_config(struct ahc_softc *ahc, int enable,
int pcheck, int fast, int large);
@@ -766,7 +766,7 @@ ahc_find_pci_device(aic_dev_softc_t pci)
* ID as valid.
*/
if (aic_get_pci_function(pci) > 0
- && ahc_9005_subdevinfo_valid(vendor, device, subvendor, subdevice)
+ && ahc_9005_subdevinfo_valid(device, vendor, subdevice, subvendor)
&& SUBID_9005_MFUNCENB(subdevice) == 0)
return (NULL);
More information about the freebsd-scsi
mailing list