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:
parent
94414221cf
commit
ee293aee1b
6 changed files with 51 additions and 40 deletions
|
@ -222,11 +222,12 @@ grub_usbms_transfer (struct grub_scsi *scsi, grub_size_t cmdsize, char *cmd,
|
|||
struct grub_usbms_csw status;
|
||||
static grub_uint32_t tag = 0;
|
||||
grub_usb_err_t err = GRUB_USB_ERR_NONE;
|
||||
int retrycnt = 3;
|
||||
int retrycnt = 3 + 1;
|
||||
|
||||
retry:
|
||||
retrycnt--;
|
||||
if (retrycnt == 0)
|
||||
return err;
|
||||
return grub_error (GRUB_ERR_IO, "USB Mass Storage stalled");
|
||||
|
||||
/* Setup the request. */
|
||||
grub_memset (&cbw, 0, sizeof (cbw));
|
||||
|
@ -305,9 +306,7 @@ grub_usbms_transfer (struct grub_scsi *scsi, grub_size_t cmdsize, char *cmd,
|
|||
grub_usb_clear_halt (dev->dev, dev->in->endp_addr);
|
||||
grub_usb_clear_halt (dev->dev, dev->out->endp_addr);
|
||||
|
||||
retrycnt--;
|
||||
if (retrycnt)
|
||||
goto retry;
|
||||
goto retry;
|
||||
}
|
||||
|
||||
if (status.status)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue