|
@@ -467,8 +467,7 @@ static int persistent_ram_buffer_map(phys_addr_t start, phys_addr_t size,
|
|
|
}
|
|
|
|
|
|
static int persistent_ram_post_init(struct persistent_ram_zone *prz, u32 sig,
|
|
|
- struct persistent_ram_ecc_info *ecc_info,
|
|
|
- unsigned long flags)
|
|
|
+ struct persistent_ram_ecc_info *ecc_info)
|
|
|
{
|
|
|
int ret;
|
|
|
|
|
@@ -494,10 +493,9 @@ static int persistent_ram_post_init(struct persistent_ram_zone *prz, u32 sig,
|
|
|
prz->buffer->sig);
|
|
|
}
|
|
|
|
|
|
+ /* Rewind missing or invalid memory area. */
|
|
|
prz->buffer->sig = sig;
|
|
|
persistent_ram_zap(prz);
|
|
|
- prz->buffer_lock = __RAW_SPIN_LOCK_UNLOCKED(buffer_lock);
|
|
|
- prz->flags = flags;
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -533,11 +531,15 @@ struct persistent_ram_zone *persistent_ram_new(phys_addr_t start, size_t size,
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
+ /* Initialize general buffer state. */
|
|
|
+ prz->buffer_lock = __RAW_SPIN_LOCK_UNLOCKED(buffer_lock);
|
|
|
+ prz->flags = flags;
|
|
|
+
|
|
|
ret = persistent_ram_buffer_map(start, size, prz, memtype);
|
|
|
if (ret)
|
|
|
goto err;
|
|
|
|
|
|
- ret = persistent_ram_post_init(prz, sig, ecc_info, flags);
|
|
|
+ ret = persistent_ram_post_init(prz, sig, ecc_info);
|
|
|
if (ret)
|
|
|
goto err;
|
|
|
|