[disk] Zero out a disk during initialization
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Sat, 8 Jan 2011 20:31:25 +0000 (15:31 -0500)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Sat, 8 Jan 2011 20:31:25 +0000 (15:31 -0500)
src/winvblock/disk/disk.c

index 4c9854a..2f7796f 100644 (file)
@@ -402,6 +402,7 @@ WVL_M_LIB VOID disk__guess_geometry(
  * @v disk              The disk to initialize.
  */
 WVL_M_LIB VOID STDCALL WvDiskInit(IN WV_SP_DISK_T disk) {
  * @v disk              The disk to initialize.
  */
 WVL_M_LIB VOID STDCALL WvDiskInit(IN WV_SP_DISK_T disk) {
+    RtlZeroMemory(disk, sizeof *disk);
     /* Populate non-zero device defaults. */
     disk->disk_ops.MaxXferLen = WvDiskDefaultMaxXferLen_;
     disk->disk_ops.Init = WvDiskDefaultInit_;
     /* Populate non-zero device defaults. */
     disk->disk_ops.MaxXferLen = WvDiskDefaultMaxXferLen_;
     disk->disk_ops.Init = WvDiskDefaultInit_;
@@ -429,16 +430,14 @@ WVL_M_LIB WV_SP_DISK_T disk__create(void) {
      * Disk devices might be used for booting and should
      * not be allocated from a paged memory pool.
      */
      * Disk devices might be used for booting and should
      * not be allocated from a paged memory pool.
      */
-    disk = wv_mallocz(sizeof *disk);
+    disk = wv_malloc(sizeof *disk);
     if (disk == NULL)
       goto err_nodisk;
 
     if (disk == NULL)
       goto err_nodisk;
 
-    /* Initialize the device with defaults. */
-    dev = disk->Dev;
-    WvDevInit(dev);
-
     /* Initialize with defaults. */
     WvDiskInit(disk);
     /* Initialize with defaults. */
     WvDiskInit(disk);
+    dev = disk->Dev;
+    WvDevInit(dev);
     dev->Ops.Close = WvDiskDevClose_;
     dev->Ops.CreatePdo = WvDiskCreatePdo_;
     dev->Ops.Free = WvDiskDevFree_;
     dev->Ops.Close = WvDiskDevClose_;
     dev->Ops.CreatePdo = WvDiskCreatePdo_;
     dev->Ops.Free = WvDiskDevFree_;