diff options
author | Helge Deller <deller@localhost> | 2022-08-08 14:51:38 +0000 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2022-08-08 16:59:10 +0200 |
commit | ba13c3e6a3cfeb78767691ba3f7d87616e664474 (patch) | |
tree | 47a1e15850a1b6d0ee3e6594db29997d9f0e5380 | |
parent | 333295c1cec9e36fbce81084804b9c1f3f4f0717 (diff) | |
download | palo-ba13c3e6a3cfeb78767691ba3f7d87616e664474.tar.gz |
ipl: Close file handles after usage
Signed-off-by: Helge Deller <deller@gmx.de>
-rw-r--r-- | ipl/ipl.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -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; } |