summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHelge Deller <deller@localhost>2022-08-08 14:51:38 +0000
committerHelge Deller <deller@gmx.de>2022-08-08 16:59:10 +0200
commitba13c3e6a3cfeb78767691ba3f7d87616e664474 (patch)
tree47a1e15850a1b6d0ee3e6594db29997d9f0e5380
parent333295c1cec9e36fbce81084804b9c1f3f4f0717 (diff)
downloadpalo-ba13c3e6a3cfeb78767691ba3f7d87616e664474.tar.gz
ipl: Close file handles after usage
Signed-off-by: Helge Deller <deller@gmx.de>
-rw-r--r--ipl/ipl.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ipl/ipl.c b/ipl/ipl.c
index ef422d3..b69cfb6 100644
--- a/ipl/ipl.c
+++ b/ipl/ipl.c
@@ -333,11 +333,13 @@ ls(char *path)
512ULL * partition[part - 1].length);
if(ext2_mount(part_fd, 0, 0) == -1) {
printf("Failed to mount partition %d\n", part);
+ fileio_close(part_fd);
return;
}
if((fd = ext2_open(kern_dir)) == -1) {
printf("Failed to open directory %s\n", kern_dir);
+ fileio_close(part_fd);
return;
}
@@ -349,6 +351,7 @@ ls(char *path)
printf("\n");
ext2_close(fd);
+ fileio_close(part_fd);
/* There's no umount ... since the next mount reuses
* the current one's data structures ... */
}
@@ -780,6 +783,7 @@ iplmain(int is_interactive, char *initialstackptr, int started_wide)
if (!load_kernel(kernfd, &entry, &wide))
{
+ fileio_close(kernfd);
die("ERROR: failed to load kernel\n");
goto restart;
}
@@ -791,6 +795,7 @@ iplmain(int is_interactive, char *initialstackptr, int started_wide)
{
printf("ERROR: failed to load ramdisk - proceeding anyway\n");
}
+ fileio_close(rdfd);
}
}
else /* kern_part > 0 && we're partitioned */
@@ -825,12 +830,17 @@ iplmain(int is_interactive, char *initialstackptr, int started_wide)
{
printf("ERROR: open %s from partition %d failed\n",
kern_name, kern_part);
+ fileio_close(mount_fd);
+ fileio_close(part_fd);
goto restart;
}
bkern_fd = byteio_open(kern_fd);
if (!load_kernel(bkern_fd, &entry, &wide))
{
+ fileio_close(bkern_fd);
+ fileio_close(mount_fd);
+ fileio_close(part_fd);
die("ERROR: failed to load kernel\n");
goto restart;
}