drivers/char/mem.c: avoid OOM lockup during large reads from /dev/zero
[safe/jmp/linux-2.6] / drivers / video / imsttfb.c
index 859ba7e..15d50b9 100644 (file)
  *  more details.
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/string.h>
 #include <linux/mm.h>
-#include <linux/tty.h>
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
 #include <linux/delay.h>
@@ -31,7 +29,7 @@
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <asm/io.h>
-#include <asm/uaccess.h>
+#include <linux/uaccess.h>
 
 #if defined(CONFIG_PPC)
 #include <linux/nvram.h>
@@ -1153,8 +1151,10 @@ imsttfb_load_cursor_image(struct imstt_par *par, int width, int height, __u8 fgc
                                par->cmap_regs[TVPCRDAT] = 0xff;                eieio();
                        }
                par->cmap_regs[TVPCADRW] = 0x00;        eieio();
-               for (x = 0; x < 12; x++)
-                       par->cmap_regs[TVPCDATA] = fgc; eieio();
+               for (x = 0; x < 12; x++) {
+                       par->cmap_regs[TVPCDATA] = fgc;
+                       eieio();
+               }
        }
        return 1;
 }
@@ -1372,22 +1372,28 @@ init_imstt(struct fb_info *info)
        write_reg_le32(par->dc_regs, STGCTL, tmp & ~0x1);
        write_reg_le32(par->dc_regs, SSR, 0);
 
-       /* set default values for DAC registers */ 
+       /* set default values for DAC registers */
        if (par->ramdac == IBM) {
-               par->cmap_regs[PPMASK] = 0xff;  eieio();
-               par->cmap_regs[PIDXHI] = 0;     eieio();
-               for (i = 0; i < sizeof(ibm_initregs) / sizeof(*ibm_initregs); i++) {
-                       par->cmap_regs[PIDXLO] = ibm_initregs[i].addr;  eieio();
-                       par->cmap_regs[PIDXDATA] = ibm_initregs[i].value;       eieio();
+               par->cmap_regs[PPMASK] = 0xff;
+               eieio();
+               par->cmap_regs[PIDXHI] = 0;
+               eieio();
+               for (i = 0; i < ARRAY_SIZE(ibm_initregs); i++) {
+                       par->cmap_regs[PIDXLO] = ibm_initregs[i].addr;
+                       eieio();
+                       par->cmap_regs[PIDXDATA] = ibm_initregs[i].value;
+                       eieio();
                }
        } else {
-               for (i = 0; i < sizeof(tvp_initregs) / sizeof(*tvp_initregs); i++) {
-                       par->cmap_regs[TVPADDRW] = tvp_initregs[i].addr;        eieio();
-                       par->cmap_regs[TVPIDATA] = tvp_initregs[i].value;       eieio();
+               for (i = 0; i < ARRAY_SIZE(tvp_initregs); i++) {
+                       par->cmap_regs[TVPADDRW] = tvp_initregs[i].addr;
+                       eieio();
+                       par->cmap_regs[TVPIDATA] = tvp_initregs[i].value;
+                       eieio();
                }
        }
 
-#if USE_NV_MODES && defined(CONFIG_PPC)
+#if USE_NV_MODES && defined(CONFIG_PPC32)
        {
                int vmode = init_vmode, cmode = init_cmode;
 
@@ -1472,7 +1478,7 @@ imsttfb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        
        dp = pci_device_to_OF_node(pdev);
        if(dp)
-               printk(KERN_INFO "%s: OF name %s\n",__FUNCTION__, dp->name);
+               printk(KERN_INFO "%s: OF name %s\n",__func__, dp->name);
        else
                printk(KERN_ERR "imsttfb: no OF node for pci device\n");
 #endif /* CONFIG_PPC_OF */