memcpy(&block.share_id, share_id, sizeof(block.share_id));
        block.owner = owner;
        block.name = kstrdup(name, GFP_KERNEL);
+       if (block.name == NULL) {
+               snd_gf1_mem_lock(alloc, 1);
+               return NULL;
+       }
        nblock = snd_gf1_mem_xalloc(alloc, &block);
        snd_gf1_mem_lock(alloc, 1);
        return nblock;
                block.ptr = 0;
                block.size = 1024;
                block.name = kstrdup("InterWave LFOs", GFP_KERNEL);
-               if (snd_gf1_mem_xalloc(alloc, &block) == NULL)
+               if (block.name == NULL || snd_gf1_mem_xalloc(alloc, &block) == NULL)
                        return -ENOMEM;
        }
        block.ptr = gus->gf1.default_voice_address;
        block.size = 4;
        block.name = kstrdup("Voice default (NULL's)", GFP_KERNEL);
-       if (snd_gf1_mem_xalloc(alloc, &block) == NULL)
+       if (block.name == NULL || snd_gf1_mem_xalloc(alloc, &block) == NULL)
                return -ENOMEM;
 #ifdef CONFIG_SND_DEBUG
        snd_card_ro_proc_new(gus->card, "gusmem", gus, snd_gf1_mem_info_read);