[PATCH] pstore/ram: Fix pmsg address when per-cpu ftrace buffers are enabled

pso@chromium.org posted 1 patch 3 years, 11 months ago
fs/pstore/ram.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH] pstore/ram: Fix pmsg address when per-cpu ftrace buffers are enabled
Posted by pso@chromium.org 3 years, 11 months ago
From: Paramjit Oberoi <pso@chromium.org>

When allocating ftrace pstore zones, there may be space left over at the
end of the region. The paddr pointer needs to be advanced to account for
this so that the next region (pmsg) ends up at the correct location.

Signed-off-by: Paramjit Oberoi <pso@chromium.org>
---

 fs/pstore/ram.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
index fefe3d391d3af..3bca6cd34c02a 100644
--- a/fs/pstore/ram.c
+++ b/fs/pstore/ram.c
@@ -554,10 +554,12 @@ static int ramoops_init_przs(const char *name,
 			goto fail;
 		}
 		*paddr += zone_sz;
+		mem_sz -= zone_sz;
 		prz_ar[i]->type = pstore_name_to_type(name);
 	}
 
 	*przs = prz_ar;
+	*paddr += mem_sz;
 	return 0;
 
 fail:
-- 
2.36.1.124.g0e6072fb45-goog
Re: [PATCH] pstore/ram: Fix pmsg address when per-cpu ftrace buffers are enabled
Posted by Dmitry Torokhov 3 years, 11 months ago
On Wed, May 25, 2022 at 03:18:55PM -0700, pso@chromium.org wrote:
> From: Paramjit Oberoi <pso@chromium.org>
> 
> When allocating ftrace pstore zones, there may be space left over at the
> end of the region. The paddr pointer needs to be advanced to account for
> this so that the next region (pmsg) ends up at the correct location.
> 
> Signed-off-by: Paramjit Oberoi <pso@chromium.org>

This looks correct to me.

Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

> ---
> 
>  fs/pstore/ram.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
> index fefe3d391d3af..3bca6cd34c02a 100644
> --- a/fs/pstore/ram.c
> +++ b/fs/pstore/ram.c
> @@ -554,10 +554,12 @@ static int ramoops_init_przs(const char *name,
>  			goto fail;
>  		}
>  		*paddr += zone_sz;
> +		mem_sz -= zone_sz;
>  		prz_ar[i]->type = pstore_name_to_type(name);
>  	}
>  
>  	*przs = prz_ar;
> +	*paddr += mem_sz;
>  	return 0;
>  
>  fail:
> -- 
> 2.36.1.124.g0e6072fb45-goog
> 

Thanks.

-- 
Dmitry