aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/skeletonfb.c
diff options
context:
space:
mode:
authorAndres Salomon <dilinger@queued.net>2009-03-31 18:25:23 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-04-01 11:59:30 -0400
commit0fd853118dd821de59106c5b9a0a2a6f488bc4b5 (patch)
tree6d008cda04b460a484a8bc44f1b13e7a3c633e7f /drivers/video/skeletonfb.c
parent5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a (diff)
skeletonfb: check fb_alloc_cmap return value and handle failure properly
Bad example code, no cookie! Signed-off-by: Andres Salomon <dilinger@debian.org> Cc: Krzysztof Helt <krzysztof.h1@poczta.fm> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/skeletonfb.c')
-rw-r--r--drivers/video/skeletonfb.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/video/skeletonfb.c b/drivers/video/skeletonfb.c
index df5336561d13..a439159204a8 100644
--- a/drivers/video/skeletonfb.c
+++ b/drivers/video/skeletonfb.c
@@ -795,8 +795,9 @@ static int __devinit xxxfb_probe(struct pci_dev *dev,
795 if (!retval || retval == 4) 795 if (!retval || retval == 4)
796 return -EINVAL; 796 return -EINVAL;
797 797
798 /* This has to been done !!! */ 798 /* This has to be done! */
799 fb_alloc_cmap(&info->cmap, cmap_len, 0); 799 if (fb_alloc_cmap(&info->cmap, cmap_len, 0))
800 return -ENOMEM;
800 801
801 /* 802 /*
802 * The following is done in the case of having hardware with a static 803 * The following is done in the case of having hardware with a static
@@ -820,8 +821,10 @@ static int __devinit xxxfb_probe(struct pci_dev *dev,
820 */ 821 */
821 /* xxxfb_set_par(info); */ 822 /* xxxfb_set_par(info); */
822 823
823 if (register_framebuffer(info) < 0) 824 if (register_framebuffer(info) < 0) {
825 fb_dealloc_cmap(&info->cmap);
824 return -EINVAL; 826 return -EINVAL;
827 }
825 printk(KERN_INFO "fb%d: %s frame buffer device\n", info->node, 828 printk(KERN_INFO "fb%d: %s frame buffer device\n", info->node,
826 info->fix.id); 829 info->fix.id);
827 pci_set_drvdata(dev, info); /* or platform_set_drvdata(pdev, info) */ 830 pci_set_drvdata(dev, info); /* or platform_set_drvdata(pdev, info) */