Commit bb8b2662 authored by Andy Lutomirski's avatar Andy Lutomirski Committed by Paul Mundt

efifb: Disallow manual bind and unbind

Both were buggy: bind would happily scribble over a real graphics
device and unbind wouldn't destroy the framebuffer.  Hotplugging
efifb makes no sense anyway, so just disable it.

As an added benefit, we save some runtime memory.
Signed-off-by: default avatarAndy Lutomirski <luto@mit.edu>
Signed-off-by: default avatarPeter Jones <pjones@redhat.com>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent da0241f1
......@@ -330,7 +330,7 @@ static int __init efifb_setup(char *options)
return 0;
}
static int __devinit efifb_probe(struct platform_device *dev)
static int __init efifb_probe(struct platform_device *dev)
{
struct fb_info *info;
int err;
......@@ -500,7 +500,6 @@ static int __devinit efifb_probe(struct platform_device *dev)
}
static struct platform_driver efifb_driver = {
.probe = efifb_probe,
.driver = {
.name = "efifb",
},
......@@ -531,13 +530,21 @@ static int __init efifb_init(void)
if (!screen_info.lfb_linelength)
return -ENODEV;
ret = platform_driver_register(&efifb_driver);
ret = platform_device_register(&efifb_device);
if (ret)
return ret;
if (!ret) {
ret = platform_device_register(&efifb_device);
if (ret)
platform_driver_unregister(&efifb_driver);
/*
* This is not just an optimization. We will interfere
* with a real driver if we get reprobed, so don't allow
* it.
*/
ret = platform_driver_probe(&efifb_driver, efifb_probe);
if (ret) {
platform_device_unregister(&efifb_driver);
return ret;
}
return ret;
}
module_init(efifb_init);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment