volprocs-alloc-vnode-instead-of-using-stack-20071126
authorDerrick Brashear <shadow@dementia.org>
Mon, 26 Nov 2007 22:10:34 +0000 (22:10 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 26 Nov 2007 22:10:34 +0000 (22:10 +0000)
don't use stack here; alloc memory for short term use

src/volser/volprocs.c

index a63b0f6..6e53cea 100644 (file)
@@ -203,14 +203,14 @@ ViceCreateRoot(Volume *vp)
     struct acl_accessList *ACL;
     ViceFid did;
     Inode inodeNumber, nearInode;
-    char buf[SIZEOF_LARGEDISKVNODE];
-    struct VnodeDiskObject *vnode = (struct VnodeDiskObject *)buf;
+    struct VnodeDiskObject *vnode;
     struct VnodeClassInfo *vcp = &VnodeClassInfo[vLarge];
     IHandle_t *h;
     FdHandle_t *fdP;
     int code;
     afs_fsize_t length;
 
+    vnode = (struct VnodeDiskObject *)malloc(SIZEOF_LARGEDISKVNODE);
     memset(vnode, 0, SIZEOF_LARGEDISKVNODE);
 
     V_pref(vp, nearInode);
@@ -275,6 +275,7 @@ ViceCreateRoot(Volume *vp)
     VNDISK_GET_LEN(length, vnode);
     V_diskused(vp) = nBlocks(length);
 
+    free(vnode);
     return 1;
 }