From 0a0b877dc29725df0fd2902b818a690cf10b0796 Mon Sep 17 00:00:00 2001 From: John Zimmermann Date: Wed, 16 Sep 2026 15:38:26 +0200 Subject: [PATCH] utils/ingenic_tools: correct return check of libusb_control_transfer in usbboot libusb_control_transfer returns <0 for errors, 0 is success without any bytes, read and ret >0 is the amount if bytes read. Tested command: sudo ./usbboot --vid 0xa108 --pid 0x1000 --cpuinfo Before: Can't get CPU info: 8 After: CPU info: X1000_v1 Change-Id: Ied6d430406239ea4f99e7c83274d99ae4c555899 --- utils/ingenic_tools/usbboot.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/ingenic_tools/usbboot.c b/utils/ingenic_tools/usbboot.c index 208888d3d4..e02941469c 100644 --- a/utils/ingenic_tools/usbboot.c +++ b/utils/ingenic_tools/usbboot.c @@ -103,7 +103,7 @@ void jz_get_cpu_info(void) int ret = libusb_control_transfer(g_usb_dev, LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, VR_GET_CPU_INFO, 0, 0, buf, 8, 1000); - if(ret != 0) + if(ret < 0) die("Can't get CPU info: %d", ret); buf[8] = 0; @@ -172,7 +172,7 @@ void jz_download(const char* filename) int ret = libusb_control_transfer(g_usb_dev, \ LIBUSB_ENDPOINT_OUT|LIBUSB_REQUEST_TYPE_VENDOR|LIBUSB_RECIPIENT_DEVICE, \ VR_##type, param >> 16, param & 0xffff, NULL, 0, 1000); \ - if(ret != 0) \ + if(ret < 0) \ die("Request " #type " failed: %d", ret); \ }