[VIDEO]: Fix OOPS in all SBUS framebuffer drivers.
[safe/jmp/linux-2.6] / drivers / video / stifb.c
index 8d5f356..c97709e 100644 (file)
@@ -54,7 +54,6 @@
 #undef DEBUG_STIFB_REGS                /* debug sti register accesses */
 
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
@@ -65,7 +64,6 @@
 #include <linux/fb.h>
 #include <linux/init.h>
 #include <linux/ioport.h>
-#include <linux/pci.h>
 
 #include <asm/grfioctl.h>      /* for HP-UX compatibility */
 #include <asm/uaccess.h>
@@ -1292,6 +1290,7 @@ out_err3:
 out_err2:
        release_mem_region(fix->smem_start, fix->smem_len);
 out_err1:
+       iounmap(info->screen_base);
        fb_dealloc_cmap(&info->cmap);
 out_err0:
        kfree(fb);
@@ -1365,6 +1364,8 @@ stifb_cleanup(void)
                        unregister_framebuffer(sti->info);
                        release_mem_region(info->fix.mmio_start, info->fix.mmio_len);
                        release_mem_region(info->fix.smem_start, info->fix.smem_len);
+                               if (info->screen_base)
+                                       iounmap(info->screen_base);
                        fb_dealloc_cmap(&info->cmap);
                        kfree(info); 
                }
@@ -1378,7 +1379,7 @@ stifb_setup(char *options)
        int i;
        
        if (!options || !*options)
-               return 0;
+               return 1;
        
        if (strncmp(options, "off", 3) == 0) {
                stifb_disabled = 1;
@@ -1393,7 +1394,7 @@ stifb_setup(char *options)
                        stifb_bpp_pref[i] = simple_strtoul(options, &options, 10);
                }
        }
-       return 0;
+       return 1;
 }
 
 __setup("stifb=", stifb_setup);