aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/fbmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/fbmem.c')
-rw-r--r--drivers/video/fbmem.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index 8d6dbe8b8dd1..7f3a0cca0fd4 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1334,17 +1334,34 @@ register_framebuffer(struct fb_info *fb_info)
1334 * 1334 *
1335 * Returns negative errno on error, or zero for success. 1335 * Returns negative errno on error, or zero for success.
1336 * 1336 *
1337 * This function will also notify the framebuffer console
1338 * to release the driver.
1339 *
1340 * This is meant to be called within a driver's module_exit()
1341 * function. If this is called outside module_exit(), ensure
1342 * that the driver implements fb_open() and fb_release() to
1343 * check that no processes are using the device.
1337 */ 1344 */
1338 1345
1339int 1346int
1340unregister_framebuffer(struct fb_info *fb_info) 1347unregister_framebuffer(struct fb_info *fb_info)
1341{ 1348{
1342 struct fb_event event; 1349 struct fb_event event;
1343 int i; 1350 int i, ret = 0;
1344 1351
1345 i = fb_info->node; 1352 i = fb_info->node;
1346 if (!registered_fb[i]) 1353 if (!registered_fb[i]) {
1347 return -EINVAL; 1354 ret = -EINVAL;
1355 goto done;
1356 }
1357
1358 event.info = fb_info;
1359 ret = fb_notifier_call_chain(FB_EVENT_FB_UNBIND, &event);
1360
1361 if (ret) {
1362 ret = -EINVAL;
1363 goto done;
1364 }
1348 1365
1349 if (fb_info->pixmap.addr && 1366 if (fb_info->pixmap.addr &&
1350 (fb_info->pixmap.flags & FB_PIXMAP_DEFAULT)) 1367 (fb_info->pixmap.flags & FB_PIXMAP_DEFAULT))
@@ -1356,7 +1373,8 @@ unregister_framebuffer(struct fb_info *fb_info)
1356 device_destroy(fb_class, MKDEV(FB_MAJOR, i)); 1373 device_destroy(fb_class, MKDEV(FB_MAJOR, i));
1357 event.info = fb_info; 1374 event.info = fb_info;
1358 fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); 1375 fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event);
1359 return 0; 1376done:
1377 return ret;
1360} 1378}
1361 1379
1362/** 1380/**