drivers/of: Constify device_node->name and ->path_component_name
Neither of these should ever be changed once set. Make them const and fix up the users that try to modify it in-place. In one case kmalloc+memcpy is replaced with kstrdup() to avoid modifying the string. Build tested with defconfigs on ARM, PowerPC, Sparc, MIPS, x86 among others. Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Acked-by: David S. Miller <davem@davemloft.net> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Julian Calaby <julian.calaby@gmail.com>
This commit is contained in:
		
					parent
					
						
							
								31982e52f0
							
						
					
				
			
			
				commit
				
					
						c22618a11d
					
				
			
		
					 6 changed files with 11 additions and 12 deletions
				
			
		|  | @ -686,7 +686,7 @@ static int pmf_add_functions(struct pmf_device *dev, void *driverdata) | |||
| 	int count = 0; | ||||
| 
 | ||||
| 	for (pp = dev->node->properties; pp != 0; pp = pp->next) { | ||||
| 		char *name; | ||||
| 		const char *name; | ||||
| 		if (strncmp(pp->name, PP_PREFIX, plen) != 0) | ||||
| 			continue; | ||||
| 		name = pp->name + plen; | ||||
|  |  | |||
|  | @ -281,12 +281,11 @@ static struct property *new_property(const char *name, const int length, | |||
| 	if (!new) | ||||
| 		return NULL; | ||||
| 
 | ||||
| 	if (!(new->name = kmalloc(strlen(name) + 1, GFP_KERNEL))) | ||||
| 	if (!(new->name = kstrdup(name, GFP_KERNEL))) | ||||
| 		goto cleanup; | ||||
| 	if (!(new->value = kmalloc(length + 1, GFP_KERNEL))) | ||||
| 		goto cleanup; | ||||
| 
 | ||||
| 	strcpy(new->name, name); | ||||
| 	memcpy(new->value, value, length); | ||||
| 	*(((char *)new->value) + length) = 0; | ||||
| 	new->length = length; | ||||
|  |  | |||
|  | @ -136,7 +136,7 @@ static void __init setup_pci_atmu(struct pci_controller *hose, | |||
| 	u32 pcicsrbar = 0, pcicsrbar_sz; | ||||
| 	u32 piwar = PIWAR_EN | PIWAR_PF | PIWAR_TGI_LOCAL | | ||||
| 			PIWAR_READ_SNOOP | PIWAR_WRITE_SNOOP; | ||||
| 	char *name = hose->dn->full_name; | ||||
| 	const char *name = hose->dn->full_name; | ||||
| 	const u64 *reg; | ||||
| 	int len; | ||||
| 
 | ||||
|  |  | |||
|  | @ -88,7 +88,7 @@ struct pci_pbm_info { | |||
| 	int				chip_revision; | ||||
| 
 | ||||
| 	/* Name used for top-level resources. */ | ||||
| 	char				*name; | ||||
| 	const char			*name; | ||||
| 
 | ||||
| 	/* OBP specific information. */ | ||||
| 	struct platform_device		*op; | ||||
|  |  | |||
|  | @ -199,10 +199,10 @@ static unsigned long unflatten_dt_node(struct boot_param_header *blob, | |||
| 	np = unflatten_dt_alloc(&mem, sizeof(struct device_node) + allocl, | ||||
| 				__alignof__(struct device_node)); | ||||
| 	if (allnextpp) { | ||||
| 		char *fn; | ||||
| 		memset(np, 0, sizeof(*np)); | ||||
| 		np->full_name = ((char *)np) + sizeof(struct device_node); | ||||
| 		np->full_name = fn = ((char *)np) + sizeof(*np); | ||||
| 		if (new_format) { | ||||
| 			char *fn = np->full_name; | ||||
| 			/* rebuild full path for new format */ | ||||
| 			if (dad && dad->parent) { | ||||
| 				strcpy(fn, dad->full_name); | ||||
|  | @ -216,9 +216,9 @@ static unsigned long unflatten_dt_node(struct boot_param_header *blob, | |||
| 				fn += strlen(fn); | ||||
| 			} | ||||
| 			*(fn++) = '/'; | ||||
| 			memcpy(fn, pathp, l); | ||||
| 		} else | ||||
| 			memcpy(np->full_name, pathp, l); | ||||
| 		} | ||||
| 		memcpy(fn, pathp, l); | ||||
| 
 | ||||
| 		prev_pp = &np->properties; | ||||
| 		**allnextpp = np; | ||||
| 		*allnextpp = &np->allnext; | ||||
|  |  | |||
|  | @ -46,7 +46,7 @@ struct device_node { | |||
| 	const char *name; | ||||
| 	const char *type; | ||||
| 	phandle phandle; | ||||
| 	char	*full_name; | ||||
| 	const char *full_name; | ||||
| 
 | ||||
| 	struct	property *properties; | ||||
| 	struct	property *deadprops;	/* removed properties */ | ||||
|  | @ -60,7 +60,7 @@ struct device_node { | |||
| 	unsigned long _flags; | ||||
| 	void	*data; | ||||
| #if defined(CONFIG_SPARC) | ||||
| 	char	*path_component_name; | ||||
| 	const char *path_component_name; | ||||
| 	unsigned int unique_id; | ||||
| 	struct of_irq_controller *irq_trans; | ||||
| #endif | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Grant Likely
				Grant Likely