base/platform: Only insert MEM and IO resources
platform_device_del only checks the type of the resource in order to call release_resource. On the other hand, platform_device_add calls insert_resource for any resource that has a parent. Make both code branches balanced. Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									e0fd9b1d9c
								
							
						
					
					
						commit
						36d4b29260
					
				| @ -341,19 +341,23 @@ int platform_device_add(struct platform_device *pdev) | ||||
| 
 | ||||
| 	for (i = 0; i < pdev->num_resources; i++) { | ||||
| 		struct resource *p, *r = &pdev->resource[i]; | ||||
| 		unsigned long type = resource_type(r); | ||||
| 
 | ||||
| 		if (r->name == NULL) | ||||
| 			r->name = dev_name(&pdev->dev); | ||||
| 
 | ||||
| 		if (!(type == IORESOURCE_MEM || type == IORESOURCE_IO)) | ||||
| 			continue; | ||||
| 
 | ||||
| 		p = r->parent; | ||||
| 		if (!p) { | ||||
| 			if (resource_type(r) == IORESOURCE_MEM) | ||||
| 			if (type == IORESOURCE_MEM) | ||||
| 				p = &iomem_resource; | ||||
| 			else if (resource_type(r) == IORESOURCE_IO) | ||||
| 			else if (type == IORESOURCE_IO) | ||||
| 				p = &ioport_resource; | ||||
| 		} | ||||
| 
 | ||||
| 		if (p && insert_resource(p, r)) { | ||||
| 		if (insert_resource(p, r)) { | ||||
| 			dev_err(&pdev->dev, "failed to claim resource %d\n", i); | ||||
| 			ret = -EBUSY; | ||||
| 			goto failed; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user