Browse Source

libztex: check returnvalue of libusb_claim_interface() and release the

interface in case of early exit
nfactor-troky
Denis Ahrens 12 years ago
parent
commit
29ff10743f
  1. 8
      libztex.c

8
libztex.c

@ -370,12 +370,17 @@ static int libztex_configureFpgaHS(struct libztex_device *ztex, const char* firm @@ -370,12 +370,17 @@ static int libztex_configureFpgaHS(struct libztex_device *ztex, const char* firm
return cnt;
}
libusb_claim_interface(ztex->hndl, settings[1]);
err = libusb_claim_interface(ztex->hndl, settings[1]);
if (err != LIBUSB_SUCCESS) {
applog(LOG_ERR, "%s: failed to claim interface for hs transfer", ztex->repr);
return -4;
}
for (tries = 3; tries > 0; tries--) {
fp = open_bitstream("ztex", firmware);
if (!fp) {
applog(LOG_ERR, "%s: failed to read bitstream '%s'", ztex->repr, firmware);
libusb_release_interface(ztex->hndl, settings[1]);
return -2;
}
@ -409,6 +414,7 @@ static int libztex_configureFpgaHS(struct libztex_device *ztex, const char* firm @@ -409,6 +414,7 @@ static int libztex_configureFpgaHS(struct libztex_device *ztex, const char* firm
libztex_getFpgaState(ztex, &state);
if (!state.fpgaConfigured) {
applog(LOG_ERR, "%s: HS FPGA configuration failed: DONE pin does not go high", ztex->repr);
libusb_release_interface(ztex->hndl, settings[1]);
return -3;
}
}

Loading…
Cancel
Save