2009-07-16 Vladimir Serbinenko <phcoder@gmail.com>

Fix hang and segmentation fault in grub-emu-usb

	* disk/scsi.c (grub_scsi_open): return err and not grub_errno
	* util/usb.c (grub_libusb_devices): likewise
	(grub_libusb_init): rename to ...
	(GRUB_MOD_INIT (libusb)):...this
	(grub_libusb_fini): rename to ..
	(GRUB_MOD_FINI (libusb)):...this
	* disk/usbms.c (grub_usbms_transfer): fix retry logic
	* include/grub/disk.h (grub_raid_init): removed, it's useless
	(grub_raid_fini): likewise
	(grub_lvm_init): likewise
	(grub_lvm_fini): likewise
	* util/grub-emu.c (main): don't call grub_libusb_init, it's done
	by grub_init_all
This commit is contained in:
phcoder 2009-07-16 15:36:43 +00:00
parent 94414221cf
commit ee293aee1b
6 changed files with 51 additions and 40 deletions

View file

@ -248,6 +248,7 @@ grub_scsi_open (const char *name, grub_disk_t disk)
{
if (p->open (name, scsi))
continue;
disk->id = (unsigned long) "scsi"; /* XXX */
disk->data = scsi;
scsi->dev = p;
@ -266,7 +267,7 @@ grub_scsi_open (const char *name, grub_disk_t disk)
{
grub_free (scsi);
grub_dprintf ("scsi", "inquiry failed\n");
return grub_errno;
return err;
}
grub_dprintf ("scsi", "inquiry: devtype=0x%02x removable=%d\n",
@ -292,7 +293,7 @@ grub_scsi_open (const char *name, grub_disk_t disk)
{
grub_free (scsi);
grub_dprintf ("scsi", "READ CAPACITY failed\n");
return grub_errno;
return err;
}
/* SCSI blocks can be something else than 512, although GRUB