diff options
Diffstat (limited to 'drivers/video/vesafb.c')
| -rw-r--r-- | drivers/video/vesafb.c | 27 | 
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c index ef4128c8e57..0cadf7aee27 100644 --- a/drivers/video/vesafb.c +++ b/drivers/video/vesafb.c @@ -13,7 +13,6 @@  #include <linux/errno.h>  #include <linux/string.h>  #include <linux/mm.h> -#include <linux/slab.h>  #include <linux/delay.h>  #include <linux/fb.h>  #include <linux/ioport.h> @@ -226,7 +225,7 @@ static int __init vesafb_setup(char *options)  	return 0;  } -static int __devinit vesafb_probe(struct platform_device *dev) +static int __init vesafb_probe(struct platform_device *dev)  {  	struct fb_info *info;  	int i, err; @@ -477,7 +476,6 @@ err:  }  static struct platform_driver vesafb_driver = { -	.probe	= vesafb_probe,  	.driver	= {  		.name	= "vesafb",  	}, @@ -493,20 +491,21 @@ static int __init vesafb_init(void)  	/* ignore error return of fb_get_options */  	fb_get_options("vesafb", &option);  	vesafb_setup(option); -	ret = platform_driver_register(&vesafb_driver); -	if (!ret) { -		vesafb_device = platform_device_alloc("vesafb", 0); +	vesafb_device = platform_device_alloc("vesafb", 0); +	if (!vesafb_device) +		return -ENOMEM; -		if (vesafb_device) -			ret = platform_device_add(vesafb_device); -		else -			ret = -ENOMEM; +	ret = platform_device_add(vesafb_device); +	if (!ret) { +		ret = platform_driver_probe(&vesafb_driver, vesafb_probe); +		if (ret) +			platform_device_del(vesafb_device); +	} -		if (ret) { -			platform_device_put(vesafb_device); -			platform_driver_unregister(&vesafb_driver); -		} +	if (ret) { +		platform_device_put(vesafb_device); +		vesafb_device = NULL;  	}  	return ret;  |