On 05/26/2011 10:13 AM, Andy Lutomirski wrote: > 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: Andy Lutomirski <luto@xxxxxxx> Signed-off-by: Peter Jones <pjones@xxxxxxxxxx> > --- > drivers/video/efifb.c | 21 ++++++++++++++------- > 1 files changed, 14 insertions(+), 7 deletions(-) > > diff --git a/drivers/video/efifb.c b/drivers/video/efifb.c > index 39bbfa9..f67717e 100644 > --- a/drivers/video/efifb.c > +++ b/drivers/video/efifb.c > @@ -331,7 +331,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; > @@ -501,7 +501,6 @@ err_release_mem: > } > > static struct platform_driver efifb_driver = { > - .probe = efifb_probe, > .driver = { > .name = "efifb", > }, > @@ -532,13 +531,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); -- Peter If you're not part of the solution, then you're part of the precipitate. 01234567890123456789012345678901234567890123456789012345678901234567890123456789 -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html