diff --git a/usb_device.c b/usb_device.c
index 48833fbd1ae20ea18cd9b64c7c9c2953bd51b6b5..344c4cb9056885c4245aeaa2fbccb274bfd686c0 100644
--- a/usb_device.c
+++ b/usb_device.c
@@ -226,6 +226,8 @@ int usb_device_find(struct usb_match const *match, struct usb_device **devices)
 							  &descriptor));
 		      if (ret != 0) {
 			      msg_perr("USB: Failed to get device descriptor");
+			      free(*devices);
+			      *devices = NULL;
 			      return ret;
 		      }