ls: prevent double open
Prevent a double open. This can cause problems with some ieee1275 devices, causing the system to hang. The double open can occur as follows: grub_ls_list_files (char *dirname, int longlist, int all, int human) dev = grub_device_open (device_name); dev remains open while: grub_normal_print_device_info (device_name); dev = grub_device_open (name); Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com> Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
bee9cdaa2b
commit
4aeba29569
1 changed files with 9 additions and 0 deletions
|
@ -201,6 +201,15 @@ grub_ls_list_files (char *dirname, int longlist, int all, int human)
|
|||
if (grub_errno == GRUB_ERR_UNKNOWN_FS)
|
||||
grub_errno = GRUB_ERR_NONE;
|
||||
|
||||
#ifdef GRUB_MACHINE_IEEE1275
|
||||
/*
|
||||
* Close device to prevent a double open in grub_normal_print_device_info().
|
||||
* Otherwise it may lead to hangs on some IEEE 1275 platforms.
|
||||
*/
|
||||
grub_device_close (dev);
|
||||
dev = NULL;
|
||||
#endif
|
||||
|
||||
grub_normal_print_device_info (device_name);
|
||||
}
|
||||
else if (fs)
|
||||
|
|
Loading…
Reference in a new issue