mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From d4ad304841a9790d4fa35e51d6aa9baeba631559 Mon Sep 17 00:00:00 2001
 | |
| From: Masakazu Mokuno <mokuno@sm.sony.co.jp>
 | |
| Date: Thu, 30 Oct 2008 08:17:18 +0000
 | |
| Subject: [PATCH] powerpc/ps3: Fix memory leak in device init
 | |
| 
 | |
| Free dynamically allocated device data structures when device registration
 | |
| fails.  This fixes memory leakage when the registration fails.
 | |
| 
 | |
| Signed-off-by: Masakazu Mokuno <mokuno@sm.sony.co.jp>
 | |
| Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
 | |
| Signed-off-by: Paul Mackerras <paulus@samba.org>
 | |
| ---
 | |
|  arch/powerpc/platforms/ps3/device-init.c |   29 ++++++++++++++++++++++++-----
 | |
|  1 files changed, 24 insertions(+), 5 deletions(-)
 | |
| 
 | |
| diff --git a/arch/powerpc/platforms/ps3/device-init.c b/arch/powerpc/platforms/ps3/device-init.c
 | |
| index ffdd8e9..43816da 100644
 | |
| --- a/arch/powerpc/platforms/ps3/device-init.c
 | |
| +++ b/arch/powerpc/platforms/ps3/device-init.c
 | |
| @@ -314,11 +314,17 @@ static int __init ps3_setup_vuart_device(enum ps3_match_id match_id,
 | |
|  
 | |
|  	result = ps3_system_bus_device_register(&p->dev);
 | |
|  
 | |
| -	if (result)
 | |
| +	if (result) {
 | |
|  		pr_debug("%s:%d ps3_system_bus_device_register failed\n",
 | |
|  			__func__, __LINE__);
 | |
| -
 | |
| +		goto fail_device_register;
 | |
| +	}
 | |
|  	pr_debug(" <- %s:%d\n", __func__, __LINE__);
 | |
| +	return 0;
 | |
| +
 | |
| +fail_device_register:
 | |
| +	kfree(p);
 | |
| +	pr_debug(" <- %s:%d fail\n", __func__, __LINE__);
 | |
|  	return result;
 | |
|  }
 | |
|  
 | |
| @@ -463,11 +469,17 @@ static int __init ps3_register_sound_devices(void)
 | |
|  
 | |
|  	result = ps3_system_bus_device_register(&p->dev);
 | |
|  
 | |
| -	if (result)
 | |
| +	if (result) {
 | |
|  		pr_debug("%s:%d ps3_system_bus_device_register failed\n",
 | |
|  			__func__, __LINE__);
 | |
| -
 | |
| +		goto fail_device_register;
 | |
| +	}
 | |
|  	pr_debug(" <- %s:%d\n", __func__, __LINE__);
 | |
| +	return 0;
 | |
| +
 | |
| +fail_device_register:
 | |
| +	kfree(p);
 | |
| +	pr_debug(" <- %s:%d failed\n", __func__, __LINE__);
 | |
|  	return result;
 | |
|  }
 | |
|  
 | |
| @@ -491,11 +503,18 @@ static int __init ps3_register_graphics_devices(void)
 | |
|  
 | |
|  	result = ps3_system_bus_device_register(&p->dev);
 | |
|  
 | |
| -	if (result)
 | |
| +	if (result) {
 | |
|  		pr_debug("%s:%d ps3_system_bus_device_register failed\n",
 | |
|  			__func__, __LINE__);
 | |
| +		goto fail_device_register;
 | |
| +	}
 | |
|  
 | |
|  	pr_debug(" <- %s:%d\n", __func__, __LINE__);
 | |
| +	return 0;
 | |
| +
 | |
| +fail_device_register:
 | |
| +	kfree(p);
 | |
| +	pr_debug(" <- %s:%d failed\n", __func__, __LINE__);
 | |
|  	return result;
 | |
|  }
 | |
|  
 | |
| -- 
 | |
| 1.6.0.4
 | |
| 
 |