pgoff_t end;
        pgoff_t index;
        int range_whole = 0;
-       struct kvec iov[32];
+       struct kvec * iov;
        int len;
        int n_iov = 0;
        pgoff_t next;
        if((cifs_sb->tcon->ses) && (cifs_sb->tcon->ses->server))
                if(cifs_sb->tcon->ses->server->secMode &
                           (SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED))
-                       if(!experimEnabled)
+                       if(!experimEnabled) 
                                return generic_writepages(mapping, wbc);
 
+       iov = kmalloc(32 * sizeof(struct kvec), GFP_KERNEL);
+       if(iov == NULL)
+               return generic_writepages(mapping, wbc);
+
+
        /*
         * BB: Is this meaningful for a non-block-device file system?
         * If it is, we should test it again after we do I/O
         */
        if (wbc->nonblocking && bdi_write_congested(bdi)) {
                wbc->encountered_congestion = 1;
+               kfree(iov);
                return 0;
        }
 
                mapping->writeback_index = index;
 
        FreeXid(xid);
-
+       kfree(iov);
        return rc;
 }
 
 
        char c[28];
        char d[28];
        char *cd;
-       char ki[16][48];
+       char (*ki)[48];
        char *pd1;
        char l[32], r[32];
        char *rl;
        if(pk1 == NULL)
                return;
 
+       ki = kmalloc(16*48, GFP_KERNEL);
+       if(ki == NULL)
+               return;
+
        cd = pk1 + 56;
        pd1= cd  + 56;
        rl = pd1 + 64;
                er = kmalloc(48+48+32+32+32, GFP_KERNEL);
                if(er == NULL) {
                        kfree(pk1);
+                       kfree(ki);
                        return;
                }
                erk = er+48;
 
        permute(out, rl, perm6, 64);
        kfree(pk1);
+       kfree(ki);
 }
 
 static void