Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -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);

	if (!ret) {
	ret = platform_device_register(&efifb_device);
	if (ret)
			platform_driver_unregister(&efifb_driver);
		return ret;

	/*
	 * 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);