]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2009-07-16 Pavel Roskin <proski@gnu.org>
authorproski <proski@localhost>
Thu, 16 Jul 2009 22:14:09 +0000 (22:14 +0000)
committerproski <proski@localhost>
Thu, 16 Jul 2009 22:14:09 +0000 (22:14 +0000)
* kern/mm.c (grub_zalloc): New function.
(grub_debug_zalloc): Likewise.
* include/grub/mm.h: Declare grub_zalloc() and
grub_debug_zalloc().
* util/misc.c (grub_zalloc): New function.
* bus/usb/uhci.c (grub_uhci_pci_iter): Use grub_zalloc()
instead of grub_malloc(), remove unneeded initializations.
* bus/usb/usbhub.c (grub_usb_hub_add_dev): Likewise.
* commands/extcmd.c (grub_extcmd_dispatcher): Likewise.
* commands/parttool.c (grub_cmd_parttool): Likewise.
* disk/i386/pc/biosdisk.c (grub_biosdisk_open): Likewise.
* disk/raid5_recover.c (grub_raid5_recover): Likewise.
* disk/raid6_recover.c (grub_raid6_recover): Likewise.
* disk/usbms.c (grub_usbms_finddevs): Likewise.
* efiemu/mm.c (grub_efiemu_request_memalign): Likewise.
* efiemu/pnvram.c (grub_efiemu_pnvram): Likewise.
(grub_cmd_efiemu_pnvram): Likewise.
* fs/i386/pc/pxe.c (grub_pxefs_open): Likewise.
* fs/iso9660.c (grub_iso9660_mount): Likewise.
(grub_iso9660_iterate_dir): Likewise.
* fs/jfs.c (grub_jfs_opendir): Likewise.
* fs/ntfs.c (list_file): Likewise.
(grub_ntfs_mount): Likewise.
* kern/disk.c (grub_disk_open): Likewise.
* kern/dl.c (grub_dl_load_core): Likewise.
* kern/elf.c (grub_elf_file): Likewise.
* kern/env.c (grub_env_context_open): Likewise.
(grub_env_set): Likewise.
(grub_env_set_data_slot): Likewise.
* kern/file.c (grub_file_open): Likewise.
* kern/fs.c (grub_fs_blocklist_open): Likewise.
* loader/i386/multiboot.c (grub_module): Likewise.
* loader/xnu.c (grub_xnu_create_key): Likewise.
(grub_xnu_create_value): Likewise.
* normal/main.c (grub_normal_add_menu_entry): Likewise.
(read_config_file): Likewise.
* normal/menu_entry.c (make_screen): Likewise.
* partmap/sun.c (sun_partition_map_iterate): Likewise.
* script/sh/lexer.c (grub_script_lexer_init): Likewise.
* script/sh/script.c (grub_script_parse): Likewise.
* video/bitmap.c (grub_video_bitmap_create): Likewise.
* video/readers/jpeg.c (grub_video_reader_jpeg): Likewise.
* video/readers/png.c (grub_png_output_byte): Likewise.
(grub_video_reader_png): Likewise.

34 files changed:
ChangeLog
bus/usb/uhci.c
bus/usb/usbhub.c
commands/extcmd.c
commands/parttool.c
disk/i386/pc/biosdisk.c
disk/raid5_recover.c
disk/raid6_recover.c
disk/usbms.c
efiemu/mm.c
efiemu/pnvram.c
fs/i386/pc/pxe.c
fs/iso9660.c
fs/jfs.c
fs/ntfs.c
include/grub/mm.h
kern/disk.c
kern/dl.c
kern/elf.c
kern/env.c
kern/file.c
kern/fs.c
kern/mm.c
loader/i386/multiboot.c
loader/xnu.c
normal/main.c
normal/menu_entry.c
partmap/sun.c
script/sh/lexer.c
script/sh/script.c
util/misc.c
video/bitmap.c
video/readers/jpeg.c
video/readers/png.c

index e61783106f01d6f1e1f5631533f71c3b84fbae6f..3b85d3ad1f3d87a892990fb5ccea845e5bedb1b0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,50 @@
+2009-07-16  Pavel Roskin  <proski@gnu.org>
+
+       * kern/mm.c (grub_zalloc): New function.
+       (grub_debug_zalloc): Likewise.
+       * include/grub/mm.h: Declare grub_zalloc() and
+       grub_debug_zalloc().
+       * util/misc.c (grub_zalloc): New function.
+       * bus/usb/uhci.c (grub_uhci_pci_iter): Use grub_zalloc()
+       instead of grub_malloc(), remove unneeded initializations.
+       * bus/usb/usbhub.c (grub_usb_hub_add_dev): Likewise.
+       * commands/extcmd.c (grub_extcmd_dispatcher): Likewise.
+       * commands/parttool.c (grub_cmd_parttool): Likewise.
+       * disk/i386/pc/biosdisk.c (grub_biosdisk_open): Likewise.
+       * disk/raid5_recover.c (grub_raid5_recover): Likewise.
+       * disk/raid6_recover.c (grub_raid6_recover): Likewise.
+       * disk/usbms.c (grub_usbms_finddevs): Likewise.
+       * efiemu/mm.c (grub_efiemu_request_memalign): Likewise.
+       * efiemu/pnvram.c (grub_efiemu_pnvram): Likewise.
+       (grub_cmd_efiemu_pnvram): Likewise.
+       * fs/i386/pc/pxe.c (grub_pxefs_open): Likewise.
+       * fs/iso9660.c (grub_iso9660_mount): Likewise.
+       (grub_iso9660_iterate_dir): Likewise.
+       * fs/jfs.c (grub_jfs_opendir): Likewise.
+       * fs/ntfs.c (list_file): Likewise.
+       (grub_ntfs_mount): Likewise.
+       * kern/disk.c (grub_disk_open): Likewise.
+       * kern/dl.c (grub_dl_load_core): Likewise.
+       * kern/elf.c (grub_elf_file): Likewise.
+       * kern/env.c (grub_env_context_open): Likewise.
+       (grub_env_set): Likewise.
+       (grub_env_set_data_slot): Likewise.
+       * kern/file.c (grub_file_open): Likewise.
+       * kern/fs.c (grub_fs_blocklist_open): Likewise.
+       * loader/i386/multiboot.c (grub_module): Likewise.
+       * loader/xnu.c (grub_xnu_create_key): Likewise.
+       (grub_xnu_create_value): Likewise.
+       * normal/main.c (grub_normal_add_menu_entry): Likewise.
+       (read_config_file): Likewise.
+       * normal/menu_entry.c (make_screen): Likewise.
+       * partmap/sun.c (sun_partition_map_iterate): Likewise.
+       * script/sh/lexer.c (grub_script_lexer_init): Likewise.
+       * script/sh/script.c (grub_script_parse): Likewise.
+       * video/bitmap.c (grub_video_bitmap_create): Likewise.
+       * video/readers/jpeg.c (grub_video_reader_jpeg): Likewise.
+       * video/readers/png.c (grub_png_output_byte): Likewise.
+       (grub_video_reader_png): Likewise.
+
 2009-07-16  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Enable all targets that can be built by default
index 84cd48dafb733bfd4d2094fe7a473d45614e4964..88ff5b3d89c905d85b8d966f014698d1e458332c 100644 (file)
@@ -170,14 +170,11 @@ grub_uhci_pci_iter (int bus, int device, int func,
     return 0;
 
   /* Allocate memory for the controller and register it.  */
-  u = grub_malloc (sizeof (*u));
+  u = grub_zalloc (sizeof (*u));
   if (! u)
     return 1;
 
   u->iobase = base & GRUB_UHCI_IOMASK;
-  u->framelist = 0;
-  u->qh = 0;
-  u->td = 0;
   grub_dprintf ("uhci", "class=0x%02x 0x%02x interface 0x%02x base=0x%x\n",
                class, subclass, interf, u->iobase);
 
index ba0925a334a86c9cac07222dd6e068e1ad0166c8..6881ce000b8e75c6a55aa66d99aaa8f2af178dfc 100644 (file)
@@ -33,13 +33,11 @@ grub_usb_hub_add_dev (grub_usb_controller_t controller, grub_usb_speed_t speed)
   grub_usb_device_t dev;
   int i;
 
-  dev = grub_malloc (sizeof (struct grub_usb_device));
+  dev = grub_zalloc (sizeof (struct grub_usb_device));
   if (! dev)
     return NULL;
 
   dev->controller = *controller;
-  dev->addr = 0;
-  dev->initialized = 0;
   dev->speed = speed;
 
   grub_usb_device_initialize (dev);
index a6053872a103f3d91b911e415926023992172945..16796febf8fe8269f15e7695ac3593c34eacee91 100644 (file)
@@ -40,8 +40,7 @@ grub_extcmd_dispatcher (struct grub_command *cmd,
     maxargs++;
 
   /* Set up the option state.  */
-  state = grub_malloc (sizeof (struct grub_arg_list) * maxargs);
-  grub_memset (state, 0, sizeof (struct grub_arg_list) * maxargs);
+  state = grub_zalloc (sizeof (struct grub_arg_list) * maxargs);
 
   if (grub_arg_parse (ext, argc, args, state, &new_args, &new_argc))
     {
index c807f066b8f9f9e795653f7fc3fdf69310a12112..8c985fc4b172a163a49f157802abe66c35af47cf 100644 (file)
@@ -242,8 +242,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),
     if (grub_strcmp (args[i], "help") == 0)
       return show_help ();
 
-  parsed = (int *) grub_malloc (argc * sizeof (int));
-  grub_memset (parsed, 0, argc * sizeof (int));
+  parsed = (int *) grub_zalloc (argc * sizeof (int));
 
   for (i = 1; i < argc; i++)
     if (! parsed[i])
@@ -272,9 +271,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),
                             args[i]);
        ptool = cur;
        pargs = (struct grub_parttool_args *)
-         grub_malloc (ptool->nargs * sizeof (struct grub_parttool_args));
-       grub_memset (pargs, 0,
-                    ptool->nargs * sizeof (struct grub_parttool_args));
+         grub_zalloc (ptool->nargs * sizeof (struct grub_parttool_args));
        for (j = i; j < argc; j++)
          if (! parsed[j])
            {
index 09f0ce7396a39771b8ebe611f5f0e2cf370fcff8..0a6137fadeb4b7d3a51f389c15f08bb7ae8733b2 100644 (file)
@@ -109,12 +109,11 @@ grub_biosdisk_open (const char *name, grub_disk_t disk)
   disk->has_partitions = ((drive & 0x80) && (drive != cd_drive));
   disk->id = drive;
 
-  data = (struct grub_biosdisk_data *) grub_malloc (sizeof (*data));
+  data = (struct grub_biosdisk_data *) grub_zalloc (sizeof (*data));
   if (! data)
     return grub_errno;
 
   data->drive = drive;
-  data->flags = 0;
 
   if ((cd_drive) && (drive == cd_drive))
     {
index 31cef88b13f6f2a15c6b8a9a11d2dea36dab2233..a280be1ac7fab91f5d9ef08bd8dca3e9e0563350 100644 (file)
@@ -32,12 +32,10 @@ grub_raid5_recover (struct grub_raid_array *array, int disknr,
   int i;
 
   size <<= GRUB_DISK_SECTOR_BITS;
-  buf2 = grub_malloc (size);
+  buf2 = grub_zalloc (size);
   if (!buf2)
     return grub_errno;
 
-  grub_memset (buf, 0, size);
-
   for (i = 0; i < (int) array->total_devs; i++)
     {
       grub_err_t err;
index 3a994afeb3bddbc556d87cfdbb801b5f3219b40b..7bbf8eaefa072c72ec3bfeb4b847605815537880 100644 (file)
@@ -96,11 +96,11 @@ grub_raid6_recover (struct grub_raid_array *array, int disknr, int p,
   char *pbuf = 0, *qbuf = 0;
 
   size <<= GRUB_DISK_SECTOR_BITS;
-  pbuf = grub_malloc (size);
+  pbuf = grub_zalloc (size);
   if (!pbuf)
     goto quit;
 
-  qbuf = grub_malloc (size);
+  qbuf = grub_zalloc (size);
   if (!qbuf)
     goto quit;
 
@@ -108,9 +108,6 @@ grub_raid6_recover (struct grub_raid_array *array, int disknr, int p,
   if (q == (int) array->total_devs)
     q = 0;
 
-  grub_memset (pbuf, 0, size);
-  grub_memset (qbuf, 0, size);
-
   pos = q + 1;
   if (pos == (int) array->total_devs)
     pos = 0;
index 403ed1913ef72c191ef07254f70d496cfb484e58..671e145e6156e6bae96e1ac7b075691b2cf150bb 100644 (file)
@@ -107,14 +107,12 @@ grub_usbms_finddevs (void)
            }
 
          devcnt++;
-         usbms = grub_malloc (sizeof (struct grub_usbms_dev));
+         usbms = grub_zalloc (sizeof (struct grub_usbms_dev));
          if (! usbms)
            return 1;
 
          usbms->dev = usbdev;
          usbms->interface = i;
-         usbms->in = NULL;
-         usbms->out = NULL;
 
          /* Iterate over all endpoints of this interface, at least a
             IN and OUT bulk endpoint are required.  */
index 7d6a5d466a9ef78ace2de5f76bd63a025199473e..8b032294242b43ec389fa788b75f1fcc11be39b1 100644 (file)
@@ -104,14 +104,12 @@ grub_efiemu_request_memalign (grub_size_t align, grub_size_t size,
   requested_memory[type] += align_overhead + size;
 
   /* Remember the request */
-  ret = grub_malloc (sizeof (*ret));
+  ret = grub_zalloc (sizeof (*ret));
   if (!ret)
     return -1;
   ret->type = type;
   ret->size = size;
   ret->align_overhead = align_overhead;
-  ret->val = 0;
-  ret->next = 0;
   prev = 0;
 
   /* Add request to the end of the chain.
index d5daaabb8ac875d00fa0423829151555e898e882..04ad6e28433775a83e14ee6271ae7b20e02d9f8a 100644 (file)
@@ -339,11 +339,10 @@ grub_efiemu_pnvram (void)
   accuracy = 50000000;
   daylight = 0;
 
-  nvram = grub_malloc (nvramsize);
+  nvram = grub_zalloc (nvramsize);
   if (!nvram)
     return grub_error (GRUB_ERR_OUT_OF_MEMORY,
                       "Couldn't allocate space for temporary pnvram storage");
-  grub_memset (nvram, 0, nvramsize);
 
   return grub_efiemu_make_nvram ();
 }
@@ -365,11 +364,10 @@ grub_cmd_efiemu_pnvram (struct grub_extcmd *cmd,
   accuracy = state[3].set ? grub_strtoul (state[3].arg, 0, 0) : 50000000;
   daylight = state[4].set ? grub_strtoul (state[4].arg, 0, 0) : 0;
 
-  nvram = grub_malloc (nvramsize);
+  nvram = grub_zalloc (nvramsize);
   if (!nvram)
     return grub_error (GRUB_ERR_OUT_OF_MEMORY,
                       "Couldn't allocate space for temporary pnvram storage");
-  grub_memset (nvram, 0, nvramsize);
 
   if (argc == 1 && (err = read_pnvram (args[0])))
     {
index 1fc5680cf289c036baa29f16d90fb6d6b6eb6009..4032e12542455085e05451876821bc605a34c41b 100644 (file)
@@ -146,11 +146,10 @@ grub_pxefs_open (struct grub_file *file, const char *name)
   if (c.c2.status)
     return grub_error (GRUB_ERR_BAD_FS, "open fails");
 
-  data = grub_malloc (sizeof (struct grub_pxe_data) + grub_strlen (name) + 1);
+  data = grub_zalloc (sizeof (struct grub_pxe_data) + grub_strlen (name) + 1);
   if (! data)
     return grub_errno;
 
-  data->packet_number = 0;
   data->block_size = grub_pxe_blksize;
   grub_strcpy (data->filename, name);
 
index c79ad4f3362c66a0f5a54e9b97a27e30a8baa030..63d43b047f074d26af76459682c4b6ea3b4d52e6 100644 (file)
@@ -263,13 +263,11 @@ grub_iso9660_mount (grub_disk_t disk)
       return 0;
     }
 
-  data = grub_malloc (sizeof (struct grub_iso9660_data));
+  data = grub_zalloc (sizeof (struct grub_iso9660_data));
   if (! data)
     return 0;
 
   data->disk = disk;
-  data->rockridge = 0;
-  data->joliet = 0;
 
   block = 16;
   do
@@ -509,8 +507,7 @@ grub_iso9660_iterate_dir (grub_fshelp_node_t dir,
              else
                {
                  size = entry->len - 5;
-                 filename = grub_malloc (size + 1);
-                 filename[0] = '\0';
+                 filename = grub_zalloc (size + 1);
                }
              filename_alloc = 1;
              grub_strncpy (filename, (char *) &entry->data[1], size);
index 4f9182576fbc26687a4aa3e1c077855bf168d2c4..4ec03d6aa57fe454a925840f77e4f454c4d1a502 100644 (file)
--- a/fs/jfs.c
+++ b/fs/jfs.c
@@ -382,11 +382,10 @@ grub_jfs_opendir (struct grub_jfs_data *data, struct grub_jfs_inode *inode)
       return 0;
     }
 
-  diro = grub_malloc (sizeof (struct grub_jfs_diropen));
+  diro = grub_zalloc (sizeof (struct grub_jfs_diropen));
   if (!diro)
     return 0;
 
-  diro->index = 0;
   diro->data = data;
   diro->inode = inode;
 
@@ -397,7 +396,6 @@ grub_jfs_opendir (struct grub_jfs_data *data, struct grub_jfs_inode *inode)
       diro->next_leaf = (struct grub_jfs_leaf_next_dirent *) de;
       diro->sorted = (char *) (inode->dir.header.sorted);
       diro->count = inode->dir.header.count;
-      diro->dirpage = 0;
 
       return diro;
     }
index c312b8b62c897fae2d4e4f985f6a4b2c0c43b5f7..d03a9401604e8b692a3c7e117bc94bfc42eb3ab8 100644 (file)
--- a/fs/ntfs.c
+++ b/fs/ntfs.c
@@ -601,11 +601,10 @@ list_file (struct grub_ntfs_file *diro, char *pos,
            (u32at (pos, 0x48) & ATTR_DIRECTORY) ? GRUB_FSHELP_DIR :
            GRUB_FSHELP_REG;
 
-         fdiro = grub_malloc (sizeof (struct grub_ntfs_file));
+         fdiro = grub_zalloc (sizeof (struct grub_ntfs_file));
          if (!fdiro)
            return 0;
 
-         grub_memset (fdiro, 0, sizeof (*fdiro));
          fdiro->data = diro->data;
          fdiro->ino = u32at (pos, 0);
 
@@ -791,12 +790,10 @@ grub_ntfs_mount (grub_disk_t disk)
   if (!disk)
     goto fail;
 
-  data = (struct grub_ntfs_data *) grub_malloc (sizeof (*data));
+  data = (struct grub_ntfs_data *) grub_zalloc (sizeof (*data));
   if (!data)
     goto fail;
 
-  grub_memset (data, 0, sizeof (*data));
-
   data->disk = disk;
 
   /* Read the BPB.  */
index 4dd136321d1e32430ad636288a1de44e0c347468..4caf80511d80387e195b2ae7c6db9c7e01a34f3d 100644 (file)
@@ -30,6 +30,7 @@
 
 void grub_mm_init_region (void *addr, grub_size_t size);
 void *EXPORT_FUNC(grub_malloc) (grub_size_t size);
+void *EXPORT_FUNC(grub_zalloc) (grub_size_t size);
 void EXPORT_FUNC(grub_free) (void *ptr);
 void *EXPORT_FUNC(grub_realloc) (void *ptr, grub_size_t size);
 void *EXPORT_FUNC(grub_memalign) (grub_size_t align, grub_size_t size);
@@ -45,6 +46,9 @@ void grub_mm_dump (unsigned lineno);
 #define grub_malloc(size)      \
   grub_debug_malloc (__FILE__, __LINE__, size)
 
+#define grub_zalloc(size)      \
+  grub_debug_zalloc (__FILE__, __LINE__, size)
+
 #define grub_realloc(ptr,size) \
   grub_debug_realloc (__FILE__, __LINE__, ptr, size)
 
@@ -56,6 +60,8 @@ void grub_mm_dump (unsigned lineno);
 
 void *EXPORT_FUNC(grub_debug_malloc) (const char *file, int line,
                                      grub_size_t size);
+void *EXPORT_FUNC(grub_debug_zalloc) (const char *file, int line,
+                                      grub_size_t size);
 void EXPORT_FUNC(grub_debug_free) (const char *file, int line, void *ptr);
 void *EXPORT_FUNC(grub_debug_realloc) (const char *file, int line, void *ptr,
                                       grub_size_t size);
index e167fb6304a47e94858e42577a32df5620852247..e463626fb732a35445c580610cb678214d97a164 100644 (file)
@@ -244,14 +244,10 @@ grub_disk_open (const char *name)
 
   grub_dprintf ("disk", "Opening `%s'...\n", name);
 
-  disk = (grub_disk_t) grub_malloc (sizeof (*disk));
+  disk = (grub_disk_t) grub_zalloc (sizeof (*disk));
   if (! disk)
     return 0;
 
-  disk->dev = 0;
-  disk->read_hook = 0;
-  disk->partition = 0;
-  disk->data = 0;
   disk->name = grub_strdup (name);
   if (! disk->name)
     goto fail;
index 122b6b90e32fa64689ba39e10d276071b0c0bc5c..1fe82e789c407fe3058b32c1e2890665b872da9f 100644 (file)
--- a/kern/dl.c
+++ b/kern/dl.c
@@ -535,16 +535,11 @@ grub_dl_load_core (void *addr, grub_size_t size)
       return 0;
     }
 
-  mod = (grub_dl_t) grub_malloc (sizeof (*mod));
+  mod = (grub_dl_t) grub_zalloc (sizeof (*mod));
   if (! mod)
     return 0;
 
-  mod->name = 0;
   mod->ref_count = 1;
-  mod->dep = 0;
-  mod->segment = 0;
-  mod->init = 0;
-  mod->fini = 0;
 
   grub_dprintf ("modules", "relocating to %p\n", mod);
   if (grub_dl_resolve_name (mod, e)
index 2590552385ef75f6b2577b3f1bfad572fe7d60dc..f14161060e170699c6b8afd0aaee637ac6312a46 100644 (file)
@@ -61,12 +61,11 @@ grub_elf_file (grub_file_t file)
 {
   grub_elf_t elf;
 
-  elf = grub_malloc (sizeof (*elf));
+  elf = grub_zalloc (sizeof (*elf));
   if (! elf)
     return 0;
 
   elf->file = file;
-  elf->phdrs = 0;
 
   if (grub_file_seek (elf->file, 0) == (grub_off_t) -1)
     goto fail;
index e85627b0b1f6e3e996308f213f75d432efafb39c..750902af8f1767899dff36641c3afa9eba2c4867 100644 (file)
@@ -80,11 +80,10 @@ grub_env_context_open (int export)
   struct grub_env_context *context;
   int i;
 
-  context = grub_malloc (sizeof (*context));
+  context = grub_zalloc (sizeof (*context));
   if (! context)
     return grub_errno;
 
-  grub_memset (context, 0, sizeof (*context));
   context->prev = current_context;
   current_context = context;
 
@@ -204,12 +203,10 @@ grub_env_set (const char *name, const char *val)
     }
 
   /* The variable does not exist, so create a new one.  */
-  var = grub_malloc (sizeof (*var));
+  var = grub_zalloc (sizeof (*var));
   if (! var)
     return grub_errno;
 
-  grub_memset (var, 0, sizeof (*var));
-
   /* This is not necessary, because GRUB_ENV_VAR_LOCAL == 0. But leave
      this for readability.  */
   var->type = GRUB_ENV_VAR_LOCAL;
@@ -379,12 +376,10 @@ grub_env_set_data_slot (const char *name, const void *ptr)
     }
 
   /* The variable does not exist, so create a new one.  */
-  var = grub_malloc (sizeof (*var));
+  var = grub_zalloc (sizeof (*var));
   if (! var)
     goto fail;
 
-  grub_memset (var, 0, sizeof (*var));
-
   var->type = GRUB_ENV_VAR_DATA;
   var->name = mangled_name;
   var->value = (char *) ptr;
index 5d5e640b1fbbb78505ff8d8b0bba086003dac492..9b56b88e439dbd0817f42b7239d11844658ea537 100644 (file)
@@ -75,14 +75,11 @@ grub_file_open (const char *name)
   if (! device)
     goto fail;
 
-  file = (grub_file_t) grub_malloc (sizeof (*file));
+  file = (grub_file_t) grub_zalloc (sizeof (*file));
   if (! file)
     goto fail;
 
   file->device = device;
-  file->offset = 0;
-  file->data = 0;
-  file->read_hook = 0;
 
   if (device->disk && file_name[0] != '/')
     /* This is a block list.  */
index c8f4970b961264ad7e40207f6816c604a6177bcd..0c456377f3a0cdf0dabaf069ebd693fa809209a1 100644 (file)
--- a/kern/fs.c
+++ b/kern/fs.c
@@ -161,7 +161,7 @@ grub_fs_blocklist_open (grub_file_t file, const char *name)
   while (p);
 
   /* Allocate a block list.  */
-  blocks = grub_malloc (sizeof (struct grub_fs_block) * (num + 1));
+  blocks = grub_zalloc (sizeof (struct grub_fs_block) * (num + 1));
   if (! blocks)
     return 0;
 
@@ -179,8 +179,6 @@ grub_fs_blocklist_open (grub_file_t file, const char *name)
              goto fail;
            }
        }
-      else
-       blocks[i].offset = 0;
 
       p++;
       blocks[i].length = grub_strtoul (p, &p, 0);
@@ -203,7 +201,6 @@ grub_fs_blocklist_open (grub_file_t file, const char *name)
       p++;
     }
 
-  blocks[i].length = 0;
   file->data = blocks;
 
   return GRUB_ERR_NONE;
index 9a0ae56ed0a0dd198296c93406875e38b8c2ce00..cbcb9956019c14a9a0084b4c7221ed8a04044053 100644 (file)
--- a/kern/mm.c
+++ b/kern/mm.c
@@ -68,6 +68,7 @@
 
 #ifdef MM_DEBUG
 # undef grub_malloc
+# undef grub_zalloc
 # undef grub_realloc
 # undef grub_free
 # undef grub_memalign
@@ -348,6 +349,19 @@ grub_malloc (grub_size_t size)
   return grub_memalign (0, size);
 }
 
+/* Allocate SIZE bytes, clear them and return the pointer.  */
+void *
+grub_zalloc (grub_size_t size)
+{
+  void *ret;
+
+  ret = grub_memalign (0, size);
+  if (ret)
+    grub_memset (ret, 0, size);
+
+  return ret;
+}
+
 /* Deallocate the pointer PTR.  */
 void
 grub_free (void *ptr)
@@ -522,6 +536,19 @@ grub_debug_malloc (const char *file, int line, grub_size_t size)
   return ptr;
 }
 
+void *
+grub_debug_zalloc (const char *file, int line, grub_size_t size)
+{
+  void *ptr;
+
+  if (grub_mm_debug)
+    grub_printf ("%s:%d: zalloc (0x%zx) = ", file, line, size);
+  ptr = grub_zalloc (size);
+  if (grub_mm_debug)
+    grub_printf ("%p\n", ptr);
+  return ptr;
+}
+
 void
 grub_debug_free (const char *file, int line, void *ptr)
 {
index 8ce315eab5d16b292a671d207f06ca2fef922e75..87ffcae8d7027d106d6a8d7751137673b875b205 100644 (file)
@@ -456,13 +456,12 @@ grub_module  (int argc, char *argv[])
     }
   else
     {
-      struct grub_mod_list *modlist = grub_malloc (sizeof (struct grub_mod_list));
+      struct grub_mod_list *modlist = grub_zalloc (sizeof (struct grub_mod_list));
       if (! modlist)
        goto fail;
       modlist->mod_start = (grub_uint32_t) module;
       modlist->mod_end = (grub_uint32_t) module + size;
       modlist->cmdline = (grub_uint32_t) cmdline;
-      modlist->pad = 0;
       mbi->mods_count = 1;
       mbi->mods_addr = (grub_uint32_t) modlist;
       mbi->flags |= MULTIBOOT_INFO_MODS;
index b2c6c059ea0ffa3477d0d00f88f42f26fc167274..aac4ae372607c384a5288b1f5d4c9f71627ef998 100644 (file)
@@ -278,7 +278,7 @@ grub_xnu_create_key (struct grub_xnu_devtree_key **parent, char *name)
   ret = grub_xnu_find_key (*parent, name);
   if (ret)
     return ret;
-  ret = (struct grub_xnu_devtree_key *) grub_malloc (sizeof (*ret));
+  ret = (struct grub_xnu_devtree_key *) grub_zalloc (sizeof (*ret));
   if (! ret)
     {
       grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't create key %s", name);
@@ -292,7 +292,6 @@ grub_xnu_create_key (struct grub_xnu_devtree_key **parent, char *name)
       return 0;
     }
   ret->datasize = -1;
-  ret->first_child = 0;
   ret->next = *parent;
   *parent = ret;
   return ret;
@@ -313,7 +312,7 @@ grub_xnu_create_value (struct grub_xnu_devtree_key **parent, char *name)
       ret->data = 0;
       return ret;
     }
-  ret = (struct grub_xnu_devtree_key *) grub_malloc (sizeof (*ret));
+  ret = (struct grub_xnu_devtree_key *) grub_zalloc (sizeof (*ret));
   if (! ret)
     {
       grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't create value %s", name);
@@ -326,8 +325,6 @@ grub_xnu_create_value (struct grub_xnu_devtree_key **parent, char *name)
       grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't create value %s", name);
       return 0;
     }
-  ret->datasize = 0;
-  ret->data = 0;
   ret->next = *parent;
   *parent = ret;
   return ret;
index 7f6336eebdeb8a19e8c2acee7588c34960dfcb6a..66d841867b027d4249a0a8d3fdc9d1e1479490a6 100644 (file)
@@ -166,11 +166,9 @@ grub_normal_add_menu_entry (int argc, const char **args,
   struct grub_menu_entry_class *classes_tail;
 
   /* Allocate dummy head node for class list.  */
-  classes_head = grub_malloc (sizeof (struct grub_menu_entry_class));
+  classes_head = grub_zalloc (sizeof (struct grub_menu_entry_class));
   if (! classes_head)
     return grub_errno;
-  classes_head->name = 0;
-  classes_head->next = 0;
   classes_tail = classes_head;
 
   menu = grub_env_get_data_slot ("menu");
@@ -206,7 +204,7 @@ grub_normal_add_menu_entry (int argc, const char **args,
                }
 
              /* Create a new class and add it at the tail of the list.  */
-             new_class = grub_malloc (sizeof (struct grub_menu_entry_class));
+             new_class = grub_zalloc (sizeof (struct grub_menu_entry_class));
              if (! new_class)
                {
                  grub_free (class_name);
@@ -215,7 +213,6 @@ grub_normal_add_menu_entry (int argc, const char **args,
                }
              /* Fill in the new class node.  */
              new_class->name = class_name;
-             new_class->next = 0;
              /* Link the tail to it, and make it the new tail.  */
              classes_tail->next = new_class;
              classes_tail = new_class;
@@ -267,7 +264,7 @@ grub_normal_add_menu_entry (int argc, const char **args,
   while (*last)
     last = &(*last)->next;
 
-  *last = grub_malloc (sizeof (**last));
+  *last = grub_zalloc (sizeof (**last));
   if (! *last)
     {
       free_menu_entry_classes (classes_head);
@@ -278,7 +275,6 @@ grub_normal_add_menu_entry (int argc, const char **args,
 
   (*last)->title = menutitle;
   (*last)->classes = classes_head;
-  (*last)->next = 0;
   (*last)->sourcecode = menusourcecode;
 
   menu->size++;
@@ -346,11 +342,9 @@ read_config_file (const char *config)
   newmenu = grub_env_get_data_slot ("menu");
   if (! newmenu)
     {
-      newmenu = grub_malloc (sizeof (*newmenu));
+      newmenu = grub_zalloc (sizeof (*newmenu));
       if (! newmenu)
        return 0;
-      newmenu->size = 0;
-      newmenu->entry_list = 0;
 
       grub_env_set_data_slot ("menu", newmenu);
     }
index 86e581e8098531e9f18b444720c419e764178960..f7662ff75bebffa547cc57af06011092bf46c55f 100644 (file)
@@ -416,18 +416,11 @@ make_screen (grub_menu_entry_t entry)
   struct screen *screen;
 
   /* Initialize the screen.  */
-  screen = grub_malloc (sizeof (*screen));
+  screen = grub_zalloc (sizeof (*screen));
   if (! screen)
     return 0;
 
   screen->num_lines = 1;
-  screen->column = 0;
-  screen->real_column = 0;
-  screen->line = 0;
-  screen->x = 0;
-  screen->y = 0;
-  screen->killed_text = 0;
-  screen->completion_shown = 0;
   screen->lines = grub_malloc (sizeof (struct line));
   if (! screen->lines)
     goto fail;
index 60947774f083ca085429716eedf4f439d0fb828b..ce6d58899ba49b375d4bc216f35a7c93171a083e 100644 (file)
@@ -95,12 +95,10 @@ sun_partition_map_iterate (grub_disk_t disk,
   raw = *disk;
   raw.partition = 0;
 
-  p = (grub_partition_t) grub_malloc (sizeof (struct grub_partition));
+  p = (grub_partition_t) grub_zalloc (sizeof (struct grub_partition));
   if (! p)
     return grub_errno;
 
-  p->offset = 0;
-  p->data = 0;
   p->partmap = &grub_sun_partition_map;
   if (grub_disk_read (&raw, 0, 0, sizeof (struct grub_sun_block),
                      &block) == GRUB_ERR_NONE)
index 17f18e2032f2b2c69aa4261894fa65f9f3b4262b..2a56c30a6f669cde241dfaa452f2a00a41a490fe 100644 (file)
@@ -49,22 +49,13 @@ grub_script_lexer_init (char *script, grub_reader_getline_t getline)
 {
   struct grub_lexer_param *param;
 
-  param = grub_malloc (sizeof (*param));
+  param = grub_zalloc (sizeof (*param));
   if (! param)
     return 0;
 
   param->state = GRUB_PARSER_STATE_TEXT;
   param->getline = getline;
-  param->refs = 0;
-  param->done = 0;
-  param->newscript = 0;
   param->script = script;
-  param->record = 0;
-  param->recording = 0;
-  param->recordpos = 0;
-  param->recordlen = 0;
-  param->tokenonhold = 0;
-  param->was_newline = 0;
 
   return param;
 }
index 89fa9474d07af97c4cca37b0646a1adee348eb93..cefafe605d8981fa1db6e06270eeccf2cfa53b12 100644 (file)
@@ -304,15 +304,10 @@ grub_script_parse (char *script, grub_reader_getline_t getline)
   if (! parsed)
     return 0;
 
-  parsestate = grub_malloc (sizeof (*parsestate));
+  parsestate = grub_zalloc (sizeof (*parsestate));
   if (! parsestate)
     return 0;
 
-  parsestate->err = 0;
-  parsestate->func_mem = 0;
-  parsestate->memused = 0;
-  parsestate->parsed = 0;
-
   /* Initialize the lexer.  */
   lexstate = grub_script_lexer_init (script, getline);
   if (! lexstate)
index f615a42c7a4381d7ef4bc338fd25093a92d7314a..37e75311e54e7c44b604a09294b7e23c48b9702f 100644 (file)
@@ -257,6 +257,16 @@ grub_malloc (grub_size_t size)
   return xmalloc (size);
 }
 
+void *
+grub_zalloc (grub_size_t size)
+{
+  void *ret;
+
+  ret = xmalloc (size);
+  memset (ret, 0, size);
+  return ret;
+}
+
 void
 grub_free (void *ptr)
 {
index d399fd72bc5b862dfb7610d7863be9caa4e78ea5..7b135a5dc459476a052550832e5694ca3d0abf6f 100644 (file)
@@ -137,7 +137,7 @@ grub_video_bitmap_create (struct grub_video_bitmap **bitmap,
   /* Calculate size needed for the data.  */
   size = (width * mode_info->bytes_per_pixel) * height;
 
-  (*bitmap)->data = grub_malloc (size);
+  (*bitmap)->data = grub_zalloc (size);
   if (! (*bitmap)->data)
     {
       grub_free (*bitmap);
@@ -146,9 +146,6 @@ grub_video_bitmap_create (struct grub_video_bitmap **bitmap,
       return grub_errno;
     }
 
-  /* Clear bitmap.  */
-  grub_memset ((*bitmap)->data, 0, size);
-
   return GRUB_ERR_NONE;
 }
 
index b64bf3f87ddf4f4052a633645b1aa2ebfc2e98cc..460a52872b8aaa9704cd6bcc7290e53a8c6ca9c3 100644 (file)
@@ -667,12 +667,11 @@ grub_video_reader_jpeg (struct grub_video_bitmap **bitmap,
   if (!file)
     return grub_errno;
 
-  data = grub_malloc (sizeof (*data));
+  data = grub_zalloc (sizeof (*data));
   if (data != NULL)
     {
       int i;
 
-      grub_memset (data, 0, sizeof (*data));
       data->file = file;
       data->bitmap = bitmap;
       grub_jpeg_decode_jpeg (data);
index 733fa73057f8382ae5cf441628173445d845d3f4..c2008aeb2134d6ebc2d96647e82b217bb1f9587e 100644 (file)
@@ -543,11 +543,10 @@ grub_png_output_byte (struct grub_png_data *data, grub_uint8_t n)
 
       if (data->first_line)
        {
-         blank_line = grub_malloc (row_bytes);
+         blank_line = grub_zalloc (row_bytes);
          if (blank_line == NULL)
            return grub_errno;
 
-         grub_memset (blank_line, 0, row_bytes);
          up = blank_line;
        }
       else
@@ -843,10 +842,9 @@ grub_video_reader_png (struct grub_video_bitmap **bitmap,
   if (!file)
     return grub_errno;
 
-  data = grub_malloc (sizeof (*data));
+  data = grub_zalloc (sizeof (*data));
   if (data != NULL)
     {
-      grub_memset (data, 0, sizeof (*data));
       data->file = file;
       data->bitmap = bitmap;