From: Peter Jones <pjones@redhat.com>
To: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Cc: Josh Boyer <jwboyer@redhat.com>,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
Peter Jones <pjones@redhat.com>
Subject: [PATCH] Handle efifb with no lfb_base better.
Date: Tue, 23 Apr 2013 15:23:18 +0000 [thread overview]
Message-ID: <1366730598-13942-1-git-send-email-pjones@redhat.com> (raw)
Right now we get a WARN from platform_device_unregister() because our
platform_device has no ->release function. This is clearly wrong, but
we should be warning so we can figure out what happened, as this failure
results in bug reports. So WARN() about the real problem, and use the
registration function that gives us a default release() function.
This fixes the tracback reported at
https://bugzilla.redhat.com/show_bug.cgi?id„0621 , though it does not
fix the actual /problem/ the user is seeing.
Signed-off-by: Peter Jones <pjones@redhat.com>
---
drivers/video/efifb.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/video/efifb.c b/drivers/video/efifb.c
index 50fe668..390b61b 100644
--- a/drivers/video/efifb.c
+++ b/drivers/video/efifb.c
@@ -285,6 +285,7 @@ static void efifb_destroy(struct fb_info *info)
{
if (info->screen_base)
iounmap(info->screen_base);
+ fb_dealloc_cmap(&info->cmap);
if (request_mem_succeeded)
release_mem_region(info->apertures->ranges[0].base,
info->apertures->ranges[0].size);
@@ -382,6 +383,8 @@ static int __init efifb_probe(struct platform_device *dev)
if (!screen_info.pages)
screen_info.pages = 1;
if (!screen_info.lfb_base) {
+ WARN(1, KERN_WARNING, "invalid framebuffer address for "
+ "device '%s'\n", dev_name(dev));
printk(KERN_DEBUG "efifb: invalid framebuffer address\n");
return -ENODEV;
}
@@ -544,9 +547,7 @@ static struct platform_driver efifb_driver = {
},
};
-static struct platform_device efifb_device = {
- .name = "efifb",
-};
+static struct platform_device *efifb_device;
static int __init efifb_init(void)
{
@@ -571,9 +572,9 @@ static int __init efifb_init(void)
if (!screen_info.lfb_linelength)
return -ENODEV;
- ret = platform_device_register(&efifb_device);
- if (ret)
- return ret;
+ efifb_device = platform_device_register_simple("efifb", 0, NULL, 0);
+ if (IS_ERROR(efifb_device))
+ return PTR_ERR(efifb_device);
/*
* This is not just an optimization. We will interfere
@@ -582,7 +583,7 @@ static int __init efifb_init(void)
*/
ret = platform_driver_probe(&efifb_driver, efifb_probe);
if (ret) {
- platform_device_unregister(&efifb_device);
+ platform_device_unregister(efifb_device);
return ret;
}
--
1.8.1.4
next reply other threads:[~2013-04-23 15:23 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-23 15:23 Peter Jones [this message]
2013-06-25 14:17 ` [PATCH] Handle efifb with no lfb_base better Josh Boyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1366730598-13942-1-git-send-email-pjones@redhat.com \
--to=pjones@redhat.com \
--cc=FlorianSchandinat@gmx.de \
--cc=jwboyer@redhat.com \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).