| 
					
				 | 
			
			
				@@ -863,19 +863,26 @@ static int rtl8367b_extif_init(struct rtl8366_smi *smi, int id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef CONFIG_OF 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-static int rtl8367b_extif_init_of(struct rtl8366_smi *smi, int id, const char *name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static int rtl8367b_extif_init_of(struct rtl8366_smi *smi, int id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				  const char *name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	struct rtl8367_extif_config *cfg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	const __be32 *prop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	int size; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	int err; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	prop = of_get_property(smi->parent->of_node, name, &size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if (!prop || size != (9 * sizeof(*prop))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (!prop) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return rtl8367b_extif_init(smi, id, NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (size != (9 * sizeof(*prop))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		dev_err(smi->parent, "%s property is invalid\n", name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return -EINVAL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cfg = kzalloc(sizeof(struct rtl8367_extif_config), GFP_KERNEL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (!cfg) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return -ENOMEM; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cfg->txdelay = be32_to_cpup(prop++); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cfg->rxdelay = be32_to_cpup(prop++); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -887,12 +894,16 @@ static int rtl8367b_extif_init_of(struct rtl8366_smi *smi, int id, const char *n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cfg->ability.duplex = be32_to_cpup(prop++); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cfg->ability.speed = be32_to_cpup(prop++); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return rtl8367b_extif_init(smi, id, cfg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err = rtl8367b_extif_init(smi, id, cfg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	kfree(cfg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return err; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-static int rtl8367b_extif_init_of(struct rtl8366_smi *smi, int id, const char *name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static int rtl8367b_extif_init_of(struct rtl8366_smi *smi, int id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				  const char *name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return -EINVAL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |