diff options
| -rw-r--r-- | fs/pstore/ram_core.c | 11 | ||||
| -rw-r--r-- | include/linux/pstore_ram.h | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/fs/pstore/ram_core.c b/fs/pstore/ram_core.c index f6650d12c0c1..c5fbdbbf81ac 100644 --- a/fs/pstore/ram_core.c +++ b/fs/pstore/ram_core.c | |||
| @@ -320,6 +320,13 @@ void persistent_ram_free_old(struct persistent_ram_zone *prz) | |||
| 320 | prz->old_log_size = 0; | 320 | prz->old_log_size = 0; |
| 321 | } | 321 | } |
| 322 | 322 | ||
| 323 | void persistent_ram_zap(struct persistent_ram_zone *prz) | ||
| 324 | { | ||
| 325 | atomic_set(&prz->buffer->start, 0); | ||
| 326 | atomic_set(&prz->buffer->size, 0); | ||
| 327 | persistent_ram_update_header_ecc(prz); | ||
| 328 | } | ||
| 329 | |||
| 323 | static void *persistent_ram_vmap(phys_addr_t start, size_t size) | 330 | static void *persistent_ram_vmap(phys_addr_t start, size_t size) |
| 324 | { | 331 | { |
| 325 | struct page **pages; | 332 | struct page **pages; |
| @@ -414,8 +421,7 @@ static int __init persistent_ram_post_init(struct persistent_ram_zone *prz, bool | |||
| 414 | } | 421 | } |
| 415 | 422 | ||
| 416 | prz->buffer->sig = PERSISTENT_RAM_SIG; | 423 | prz->buffer->sig = PERSISTENT_RAM_SIG; |
| 417 | atomic_set(&prz->buffer->start, 0); | 424 | persistent_ram_zap(prz); |
| 418 | atomic_set(&prz->buffer->size, 0); | ||
| 419 | 425 | ||
| 420 | return 0; | 426 | return 0; |
| 421 | } | 427 | } |
| @@ -450,7 +456,6 @@ struct persistent_ram_zone * __init persistent_ram_new(phys_addr_t start, | |||
| 450 | goto err; | 456 | goto err; |
| 451 | 457 | ||
| 452 | persistent_ram_post_init(prz, ecc); | 458 | persistent_ram_post_init(prz, ecc); |
| 453 | persistent_ram_update_header_ecc(prz); | ||
| 454 | 459 | ||
| 455 | return prz; | 460 | return prz; |
| 456 | err: | 461 | err: |
diff --git a/include/linux/pstore_ram.h b/include/linux/pstore_ram.h index 4491e8ff36e6..3b823d49a85a 100644 --- a/include/linux/pstore_ram.h +++ b/include/linux/pstore_ram.h | |||
| @@ -69,6 +69,7 @@ struct persistent_ram_zone * __init persistent_ram_new(phys_addr_t start, | |||
| 69 | size_t size, | 69 | size_t size, |
| 70 | bool ecc); | 70 | bool ecc); |
| 71 | void persistent_ram_free(struct persistent_ram_zone *prz); | 71 | void persistent_ram_free(struct persistent_ram_zone *prz); |
| 72 | void persistent_ram_zap(struct persistent_ram_zone *prz); | ||
| 72 | struct persistent_ram_zone *persistent_ram_init_ringbuffer(struct device *dev, | 73 | struct persistent_ram_zone *persistent_ram_init_ringbuffer(struct device *dev, |
| 73 | bool ecc); | 74 | bool ecc); |
| 74 | 75 | ||
