label = kasprintf(GFP_KERNEL, "ramoops:%s", name);
        *prz = persistent_ram_new(*paddr, sz, sig, &cxt->ecc_info,
-                                 cxt->memtype, 0, label);
+                                 cxt->memtype, PRZ_FLAG_ZAP_OLD, label);
        if (IS_ERR(*prz)) {
                int err = PTR_ERR(*prz);
 
                return err;
        }
 
-       persistent_ram_zap(*prz);
-
        *paddr += sz;
 
        return 0;
 
                                    struct persistent_ram_ecc_info *ecc_info)
 {
        int ret;
+       bool zap = !!(prz->flags & PRZ_FLAG_ZAP_OLD);
 
        ret = persistent_ram_init_ecc(prz, ecc_info);
        if (ret)
 
        if (prz->buffer->sig == sig) {
                if (buffer_size(prz) > prz->buffer_size ||
-                   buffer_start(prz) > buffer_size(prz))
+                   buffer_start(prz) > buffer_size(prz)) {
                        pr_info("found existing invalid buffer, size %zu, start %zu\n",
                                buffer_size(prz), buffer_start(prz));
-               else {
+                       zap = true;
+               } else {
                        pr_debug("found existing buffer, size %zu, start %zu\n",
                                 buffer_size(prz), buffer_start(prz));
                        persistent_ram_save_old(prz);
-                       return 0;
                }
        } else {
                pr_debug("no valid data in buffer (sig = 0x%08x)\n",
                         prz->buffer->sig);
+               prz->buffer->sig = sig;
+               zap = true;
        }
 
-       /* Rewind missing or invalid memory area. */
-       prz->buffer->sig = sig;
-       persistent_ram_zap(prz);
+       /* Reset missing, invalid, or single-use memory area. */
+       if (zap)
+               persistent_ram_zap(prz);
 
        return 0;
 }
 
  * PRZ_FLAG_NO_LOCK is used. For all other cases, locking is required.
  */
 #define PRZ_FLAG_NO_LOCK       BIT(0)
+#define PRZ_FLAG_ZAP_OLD       BIT(1)
 
 struct persistent_ram_buffer;
 struct rs_control;