Skip to contentSkip to conversation

Fix prom_getproperty calls

PATCH In review Tom 'spot' Callaway 2 participants 2 messages Oct 6, 2005 – Oct 7, 2005

Subsystems (7)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix prom_getproperty calls

This patch fixes the remaining prom_getproperty calls in 2.6 to actually do something with the result.

~spot

Signature · 4 lines
Tom "spot" Callaway: Red Hat Senior Sales Engineer || GPG ID: 93054260
Fedora Extras Steering Committee Member (RPM Standards and Practices)
Aurora Linux Project Leader: http://auroralinux.org
Lemurs, llamas, and sparcs, oh my!
drivers/video/cg14.c renamed from drivers/video/cg14.c.BAD +2 -1
@@ -532,7 +532,8 @@ static void cg14_init_one(struct sbus_de
 		all->info.screen_base = (char __iomem *)(unsigned long)bases[1];
 	}
 
-	prom_getproperty(node, "reg", (char *) &bases[0], sizeof(bases));
+	if(prom_getproperty(node, "reg", (char *) &bases[0], sizeof(bases)) <= 0)
+		return;
 	is_8mb = (bases[5] == 0x800000);
 
 	if (sizeof(all->par.mmap_map) != sizeof(__cg14_mmap_map)) {
drivers/video/ffb.c renamed from drivers/video/ffb.c.BAD +3 -1
@@ -894,7 +894,9 @@ static int ffb_apply_upa_parent_ranges(i
 	char name[128];
 	int len, i;
 
-	prom_getproperty(parent, "name", name, sizeof(name));
+	if(prom_getproperty(parent, "name", name, sizeof(name)) <= 0)
+		return 1;
+
 	if (strcmp(name, "upa") != 0)
 		return 0;
 
drivers/net/tulip/tulip_core.c renamed from drivers/net/tulip/tulip_core.c.BAD +3 -2
@@ -1566,8 +1566,9 @@ static int __devinit tulip_init_one (str
 #if defined(__sparc__)
 		if ((pcp != NULL) && prom_getproplen(pcp->prom_node,
 			"local-mac-address") == 6) {
-			prom_getproperty(pcp->prom_node, "local-mac-address",
-			    dev->dev_addr, 6);
+			if (prom_getproperty(pcp->prom_node, "local-mac-address",
+			    dev->dev_addr, 6) <= 0)
+				goto err_out_free_ring;
 		}
 #endif
 #if defined(__i386__)		/* Patch up x86 BIOS bug. */
drivers/net/sunhme.c renamed from drivers/net/sunhme.c.BAD +6 -4
@@ -2742,8 +2742,9 @@ static int __init happy_meal_sbus_init(s
 	} else if (qfe_slot != -1 &&
 		   prom_getproplen(sdev->prom_node,
 				   "local-mac-address") == 6) {
-		prom_getproperty(sdev->prom_node, "local-mac-address",
-				 dev->dev_addr, 6);
+		if(prom_getproperty(sdev->prom_node, "local-mac-address",
+				 dev->dev_addr, 6) <= 0)
+			goto err_out;
 	} else {
 		memcpy(dev->dev_addr, idprom->id_ethaddr, 6);
 	}
@@ -3126,8 +3127,9 @@ static int __init happy_meal_pci_init(st
 #ifdef __sparc__
 		if (qfe_slot != -1 &&
 		    prom_getproplen(node, "local-mac-address") == 6) {
-			prom_getproperty(node, "local-mac-address",
-					 dev->dev_addr, 6);
+			if(prom_getproperty(node, "local-mac-address",
+					 dev->dev_addr, 6) <= 0)
+				goto err_out_free_res;
 		} else {
 			memcpy(dev->dev_addr, idprom->id_ethaddr, 6);
 		}
drivers/net/sungem.c renamed from drivers/net/sungem.c.BAD +3 -2
@@ -2756,8 +2756,9 @@ static int __devinit gem_get_device_addr
 	if (pcp != NULL) {
 		node = pcp->prom_node;
 		if (prom_getproplen(node, "local-mac-address") == 6)
-			prom_getproperty(node, "local-mac-address",
-					 dev->dev_addr, 6);
+			if (prom_getproperty(node, "local-mac-address",
+					 dev->dev_addr, 6) <= 0)
+				return -1;
 		else
 			node = -1;
 	}
drivers/char/drm/ffb_drv.c renamed from drivers/char/drm/ffb_drv.c.BAD +2 -1
@@ -93,7 +93,8 @@ static void ffb_apply_upa_parent_ranges(
 	char name[128];
 	int len, i;
 
-	prom_getproperty(parent, "name", name, sizeof(name));
+	if (prom_getproperty(parent, "name", name, sizeof(name)) <= 0)
+		return;
 	if (strcmp(name, "upa") != 0)
 		return;
 
drivers/fc4/socal.c renamed from drivers/fc4/socal.c.BAD +3 -2
@@ -712,9 +712,10 @@ static inline void socal_init(struct sbu
 		case 0:
 		case 1:
 			if (prom_getproplen(node, "port-wwn") == sizeof (fc_wwn))
-				prom_getproperty (node, "port-wwn", 
+				if (prom_getproperty (node, "port-wwn", 
 						  (char *)&s->port[port].fc.wwn_nport,
-						  sizeof (fc_wwn));
+						  sizeof (fc_wwn)) <= 0)
+					return;
 			break;
 		default:
 			break;
drivers/atm/fore200e.c renamed from drivers/atm/fore200e.c.BAD +7 -3
@@ -957,12 +957,16 @@ fore200e_sba_prom_read(struct fore200e* 
     if (len < 0)
 	return -EBUSY;
     
-    prom_getproperty(sbus_dev->prom_node, "serialnumber",
+    len = prom_getproperty(sbus_dev->prom_node, "serialnumber",
 		     (char*)&prom->serial_number, sizeof(prom->serial_number));
+    if (len < 0)
+	return -EBUSY;
     
-    prom_getproperty(sbus_dev->prom_node, "promversion",
+    len = prom_getproperty(sbus_dev->prom_node, "promversion",
 		     (char*)&prom->hw_revision, sizeof(prom->hw_revision));
-    
+    if (len < 0)
+	return -EBUSY;
+
     return 0;
 }
 
drivers/sbus/char/openprom.c renamed from drivers/sbus/char/openprom.c.BAD +2 -1
@@ -391,7 +391,8 @@ static int openprom_bsd_ioctl(struct ino
 			return -ENOMEM;
 		}
 
-		prom_getproperty(op.op_nodeid, str, tmp, len);
+		if (prom_getproperty(op.op_nodeid, str, tmp, len) <= 0)
+			return -EINVAL;
 
 		tmp[len] = '\0';
 
drivers/sbus/char/jsflash.c renamed from drivers/sbus/char/jsflash.c.BAD +2 -1
@@ -486,7 +486,8 @@ static int jsflash_init(void)
 	} else {
 		/* XXX Remove this code once PROLL ID12 got widespread */
 		printk("jsflash: no /flash-memory node, use PROLL >= 12\n");
-		prom_getproperty(prom_root_node, "banner-name", banner, 128);
+		if (prom_getproperty(prom_root_node, "banner-name", banner, 128) <= 0)
+			return -EINVAL;			
 		if (strcmp (banner, "JavaStation-NC") != 0 &&
 		    strcmp (banner, "JavaStation-E") != 0) {
 			return -ENXIO;
drivers/sbus/char/cpwatchdog.c renamed from drivers/sbus/char/cpwatchdog.c.BAD +2 -1
@@ -221,7 +221,8 @@ static inline int wd_isbroken(void)
 	 * ubiquitous on CP1400s
 	 */
 	char val[32];
-	prom_getproperty(prom_root_node, "model", val, sizeof(val));
+	if (prom_getproperty(prom_root_node, "model", val, sizeof(val)) <= 0)
+		return 1;
 	return((!strcmp(val, WD_BADMODEL)) ? 1 : 0);
 }
 		
arch/sparc64/kernel/chmc.c renamed from arch/sparc64/kernel/chmc.c.BAD +3 -2
@@ -360,9 +360,10 @@ static int init_one_mctrl(int node, int 
 		goto fail;
 
 	if (mp->layout_size > 0)
-		prom_getproperty(node, "memory-layout",
+		if(prom_getproperty(node, "memory-layout",
 				 (char *) &mp->layout_prop,
-				 mp->layout_size);
+				 mp->layout_size) <= 0)
+			goto fail;
 
 	t = prom_getproperty(node, "reg",
 			     (char *) &p_reg_prop,
arch/sparc64/prom/tree.c renamed from arch/sparc64/prom/tree.c.BAD +4 -1
@@ -162,8 +162,11 @@ prom_getstring(int node, char *prop, cha
 int
 prom_nodematch(int node, char *name)
 {
+	int error;
+
 	char namebuf[128];
-	prom_getproperty(node, "name", namebuf, sizeof(namebuf));
+	error = prom_getproperty(node, "name", namebuf, sizeof(namebuf));
+	if (error == -1) return 0;
 	if(strcmp(namebuf, name) == 0) return 1;
 	return 0;
 }
arch/sparc64/prom/console.c renamed from arch/sparc64/prom/console.c.BAD +6 -3
@@ -84,13 +84,15 @@ prom_query_input_device(void)
 	st_p = prom_inst2pkg(prom_stdin);
 	if(prom_node_has_property(st_p, "keyboard"))
 		return PROMDEV_IKBD;
-	prom_getproperty(st_p, "device_type", propb, sizeof(propb));
+	if(prom_getproperty(st_p, "device_type", propb, sizeof(propb)) < 0)
+		return PROMDEV_I_UNK;
 	if(strncmp(propb, "serial", 6))
 		return PROMDEV_I_UNK;
 	/* FIXME: Is there any better way how to find out? */	
 	memset(propb, 0, sizeof(propb));
 	st_p = prom_finddevice ("/options");
-	prom_getproperty(st_p, "input-device", propb, sizeof(propb));
+	if(prom_getproperty(st_p, "input-device", propb, sizeof(propb)) < 0)
+		return PROMDEV_I_UNK;
 
 	/*
 	 * If we get here with propb == 'keyboard', we are on ttya, as
@@ -127,7 +129,8 @@ prom_query_output_device(void)
 	/* FIXME: Is there any better way how to find out? */	
 	memset(propb, 0, sizeof(propb));
 	st_p = prom_finddevice ("/options");
-	prom_getproperty(st_p, "output-device", propb, sizeof(propb));
+	if(prom_getproperty(st_p, "output-device", propb, sizeof(propb)) < 0)
+		return PROMDEV_O_UNK;
 
 	/*
 	 * If we get here with propb == 'screen', we are on ttya, as
arch/m68k/sun3/prom/console.c renamed from arch/m68k/sun3/prom/console.c.BAD +6 -3
@@ -91,10 +91,12 @@ prom_query_input_device()
 		local_irq_restore(flags);
 		if(prom_node_has_property(st_p, "keyboard"))
 			return PROMDEV_IKBD;
-		prom_getproperty(st_p, "device_type", propb, sizeof(propb));
+		if(prom_getproperty(st_p, "device_type", propb, sizeof(propb)) < 0)
+			return PROMDEV_I_UNK;
 		if(strncmp(propb, "serial", sizeof("serial")))
 			return PROMDEV_I_UNK;
-		prom_getproperty(prom_root_node, "stdin-path", propb, sizeof(propb));
+		if(prom_getproperty(prom_root_node, "stdin-path", propb, sizeof(propb)) < 0)
+			return PROMDEV_I_UNK;
 		p = propb;
 		while(*p) p++; p -= 2;
 		if(p[0] == ':') {
@@ -148,7 +150,8 @@ prom_query_output_device()
 		if(prom_vers == PROM_V3) {
 			if(strncmp("serial", propb, sizeof("serial")))
 				return PROMDEV_O_UNK;
-			prom_getproperty(prom_root_node, "stdout-path", propb, sizeof(propb));
+			if(prom_getproperty(prom_root_node, "stdout-path", propb, sizeof(propb)) < 0)
+				return PROMDEV_O_UNK;
 			p = propb;
 			while(*p) p++; p -= 2;
 			if(p[0]==':') {
include/asm-sparc64/floppy.h renamed from include/asm-sparc64/floppy.h.BAD +4 -2
@@ -632,8 +632,10 @@ static unsigned long __init sun_floppy_i
 #endif
 		}
 
-		prom_getproperty(edev->prom_node, "status",
-				 state, sizeof(state));
+		if (prom_getproperty(edev->prom_node, "status",
+				 state, sizeof(state)) <= 0)
+			return 0;
+
 		if (!strncmp(state, "disabled", 8))
 			return 0;
 			
drivers/net/tg3.c renamed from drivers/net/tg3.c.BAD +3 -2
@@ -9782,8 +9782,9 @@ static int __devinit tg3_get_macaddr_spa
 		int node = pcp->prom_node;
 
 		if (prom_getproplen(node, "local-mac-address") == 6) {
-			prom_getproperty(node, "local-mac-address",
-					 dev->dev_addr, 6);
+			if (prom_getproperty(node, "local-mac-address",
+					 dev->dev_addr, 6) <= 0)
+				return -ENODEV;
 			memcpy(dev->perm_addr, dev->dev_addr, 6);
 			return 0;
 		}
maintainer
#1 lore raw

From: "Tom 'spot' Callaway" <[email protected]>
Date: Thu, 06 Oct 2005 08:39:19 -0500

drivers/video/cg14.c static void cg14_init_one(struct sbus_de · line 539

Quoted 12 lines
drivers/video/cg14.c renamed from drivers/video/cg14.c.BAD +2 -1
@@ -532,7 +532,8 @@ static void cg14_init_one(struct sbus_de
 		all->info.screen_base = (char __iomem *)(unsigned long)bases[1];
 	}
 
-	prom_getproperty(node, "reg", (char *) &bases[0], sizeof(bases));
+	if(prom_getproperty(node, "reg", (char *) &bases[0], sizeof(bases)) <= 0)
+		return;
 	is_8mb = (bases[5] = 0x800000);
 
 	if (sizeof(all->par.mmap_map) != sizeof(__cg14_mmap_map)) {

Leaks memory... and bad coding style "if ()" not "if()" please.

sunffb.c, sunhme.c, arch/sparc64/prom/console.c, and arch/m68k/sun3/prom/console.c all need the same coding style fix.

Please fixup and resubmit, thanks.