[PATCH] sandbox: remove ram buffer file when U-Boot is loaded by SPL

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] sandbox: remove ram buffer file when U-Boot is loaded by SPL

Patrick DELAUNAY-2
Update management of "--rm_memory" sandbox's option and force
this option when U-Boot is loaded by SPL in os_spl_to_uboot()
and remove the ram file after reading in main() as described
in option help message: "Remove memory file after reading".

This patch avoids that the file "/tmp/u-boot.mem.XXXXXX" [created in
os_jump_to_file() when U-Boot is loaded by SPL] is never deleted
because state_uninit() is not called after U-Boot execution
(CtrlC or with running pytest for example).

This issue is reproduced by
> build-sandbox_spl/spl/u-boot-spl
  and CtrlC in U-Bot console

> make qcheck

One temp file is created after each SPL and U-Boot execution
(7 tims in qcheck after test_handoff.py, test_ofplatdata.py,
 test_spl.py execution).

Signed-off-by: Patrick Delaunay <[hidden email]>
---

 arch/sandbox/cpu/os.c    | 5 +++++
 arch/sandbox/cpu/start.c | 7 +++++++
 arch/sandbox/cpu/state.c | 4 ----
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c
index 0d8efd83f6..cd0e3b914e 100644
--- a/arch/sandbox/cpu/os.c
+++ b/arch/sandbox/cpu/os.c
@@ -750,6 +750,11 @@ int os_find_u_boot(char *fname, int maxlen)
 
 int os_spl_to_uboot(const char *fname)
 {
+ struct sandbox_state *state = state_get_current();
+
+ printf("%s\n", __func__);
+ /* U-Boot will delete ram buffer after read: "--rm_memory"*/
+ state->ram_buf_rm = true;
  return os_jump_to_file(fname);
 }
 
diff --git a/arch/sandbox/cpu/start.c b/arch/sandbox/cpu/start.c
index a03e5aa0b3..be43baa338 100644
--- a/arch/sandbox/cpu/start.c
+++ b/arch/sandbox/cpu/start.c
@@ -447,6 +447,13 @@ int main(int argc, char *argv[])
  if (os_parse_args(state, argc, argv))
  return 1;
 
+ /* Remove old memory file if required */
+ if (state->ram_buf_rm && state->ram_buf_fname) {
+ os_unlink(state->ram_buf_fname);
+ state->write_ram_buf = false;
+ state->ram_buf_fname = NULL;
+ }
+
  ret = sandbox_read_state(state, state->state_fname);
  if (ret)
  goto err;
diff --git a/arch/sandbox/cpu/state.c b/arch/sandbox/cpu/state.c
index 59f37fab0b..b2901b7a8c 100644
--- a/arch/sandbox/cpu/state.c
+++ b/arch/sandbox/cpu/state.c
@@ -415,10 +415,6 @@ int state_uninit(void)
  }
  }
 
- /* Remove old memory file if required */
- if (state->ram_buf_rm && state->ram_buf_fname)
- os_unlink(state->ram_buf_fname);
-
  /* Delete this at the last moment so as not to upset gdb too much */
  if (state->jumped_fname)
  os_unlink(state->jumped_fname);
--
2.17.1

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] sandbox: remove ram buffer file when U-Boot is loaded by SPL

Simon Glass-3
On Fri, 20 Nov 2020 at 02:48, Patrick Delaunay <[hidden email]> wrote:

>
> Update management of "--rm_memory" sandbox's option and force
> this option when U-Boot is loaded by SPL in os_spl_to_uboot()
> and remove the ram file after reading in main() as described
> in option help message: "Remove memory file after reading".
>
> This patch avoids that the file "/tmp/u-boot.mem.XXXXXX" [created in
> os_jump_to_file() when U-Boot is loaded by SPL] is never deleted
> because state_uninit() is not called after U-Boot execution
> (CtrlC or with running pytest for example).
>
> This issue is reproduced by
> > build-sandbox_spl/spl/u-boot-spl
>   and CtrlC in U-Bot console
>
> > make qcheck
>
> One temp file is created after each SPL and U-Boot execution
> (7 tims in qcheck after test_handoff.py, test_ofplatdata.py,
>  test_spl.py execution).
>
> Signed-off-by: Patrick Delaunay <[hidden email]>
> ---
>
>  arch/sandbox/cpu/os.c    | 5 +++++
>  arch/sandbox/cpu/start.c | 7 +++++++
>  arch/sandbox/cpu/state.c | 4 ----
>  3 files changed, 12 insertions(+), 4 deletions(-)

Reviewed-by: Simon Glass <[hidden email]>