Module Name:    src
Committed By:   pgoyette
Date:           Sat May 22 01:51:14 UTC 2010

Modified Files:
        src/sys/dev/pci: cs4280.c

Log Message:
When PCIVERBOSE is not included, pci_findvendor() and pci_findproduct()
can return NULL.  Defend against this and print the values in hex if we
can't decode them properly.


To generate a diff of this commit:
cvs rdiff -u -r1.57 -r1.58 src/sys/dev/pci/cs4280.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/cs4280.c
diff -u src/sys/dev/pci/cs4280.c:1.57 src/sys/dev/pci/cs4280.c:1.58
--- src/sys/dev/pci/cs4280.c:1.57	Wed Feb 24 22:37:59 2010
+++ src/sys/dev/pci/cs4280.c	Sat May 22 01:51:14 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: cs4280.c,v 1.57 2010/02/24 22:37:59 dyoung Exp $	*/
+/*	$NetBSD: cs4280.c,v 1.58 2010/05/22 01:51:14 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1999, 2000 Tatoku Ogaito.  All rights reserved.
@@ -52,7 +52,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cs4280.c,v 1.57 2010/02/24 22:37:59 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cs4280.c,v 1.58 2010/05/22 01:51:14 pgoyette Exp $");
 
 #include "midi.h"
 
@@ -242,6 +242,7 @@
 	pci_chipset_tag_t pc;
 	const struct cs4280_card_t *cs_card;
 	char const *intrstr;
+	const char *vendor, *product;
 	pcireg_t reg;
 	char devinfo[256];
 	uint32_t mem;
@@ -258,9 +259,19 @@
 
 	cs_card = cs4280_identify_card(pa);
 	if (cs_card != NULL) {
-		aprint_normal_dev(&sc->sc_dev, "%s %s\n",
-			      pci_findvendor(cs_card->id),
-			      pci_findproduct(cs_card->id));
+		vendor = pci_findvendor(cs_card->id);
+		product = pci_findproduct(cs_card->id);
+		if (vendor == NULL)
+			aprint_normal_dev(&sc->sc_dev,
+					  "vendor 0x%04x product 0x%04x\n",
+					  PCI_VENDOR(cs_card->id),
+					  PCI_PRODUCT(cs_card->id));
+		else if (product == NULL)
+			aprint_normal_dev(&sc->sc_dev, "%s product 0x%04x\n",
+					  vendor, PCI_PRODUCT(cs_card->id));
+		else
+			aprint_normal_dev(&sc->sc_dev, "%s %s\n",
+					  vendor, product);
 		sc->sc_flags = cs_card->flags;
 	} else {
 		sc->sc_flags = CS428X_FLAG_NONE;

Reply via email to