2
1

0018-kern-file-Ensure-file-data-is-set.patch 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. From 816fb20ed0a80032e2eaf4c4ccaf989bf20908be Mon Sep 17 00:00:00 2001
  2. From: B Horn <b@horn.uk>
  3. Date: Sun, 12 May 2024 03:01:40 +0100
  4. Subject: [PATCH] kern/file: Ensure file->data is set
  5. This is to avoid a generic issue were some filesystems would not set
  6. data and also not set a grub_errno. This meant it was possible for many
  7. filesystems to grub_dl_unref() themselves multiple times resulting in
  8. it being possible to unload the filesystems while there were still
  9. references to them, e.g., via a loopback.
  10. Reported-by: B Horn <b@horn.uk>
  11. Signed-off-by: B Horn <b@horn.uk>
  12. Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
  13. Upstream: a7910687294b29288ac649e71b47493c93294f17
  14. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
  15. ---
  16. grub-core/kern/file.c | 3 +++
  17. 1 file changed, 3 insertions(+)
  18. diff --git a/grub-core/kern/file.c b/grub-core/kern/file.c
  19. index 750177248..e990507fc 100644
  20. --- a/grub-core/kern/file.c
  21. +++ b/grub-core/kern/file.c
  22. @@ -114,6 +114,9 @@ grub_file_open (const char *name, enum grub_file_type type)
  23. if ((file->fs->fs_open) (file, file_name) != GRUB_ERR_NONE)
  24. goto fail;
  25. + if (file->data == NULL)
  26. + goto fail;
  27. +
  28. file->name = grub_strdup (name);
  29. grub_errno = GRUB_ERR_NONE;
  30. --
  31. 2.50.1