From 9afe9f1293358f92483fba4c7052517e29f831aa Mon Sep 17 00:00:00 2001
From: Antonio Ospite <ao2@ao2.it>
Date: Mon, 20 Apr 2015 17:19:10 +0200
Subject: [PATCH] am7xxx: release the interface when needed in open_device()

Release the interface when bailing out of open_device() after the
interface has been claimed.
---
 src/am7xxx.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/am7xxx.c b/src/am7xxx.c
index b00a6be..2ba9561 100644
--- a/src/am7xxx.c
+++ b/src/am7xxx.c
@@ -784,18 +784,21 @@ static int open_device(am7xxx_context *ctx,
 	if (ret < 0) {
 		debug(ctx, "libusb_get_configuration after claim failed: %s\n",
 		      libusb_error_name(ret));
-		goto out_libusb_close;
+		goto out_libusb_release_interface;
 	}
 
 	if (current_configuration != (*dev)->desc->configuration) {
 		debug(ctx, "libusb configuration changed (expected: %hhu, current: %hhu\n",
 		      (*dev)->desc->configuration, current_configuration);
 		ret = -EINVAL;
-		goto out_libusb_close;
+		goto out_libusb_release_interface;
 	}
 out:
 	return ret;
 
+out_libusb_release_interface:
+	libusb_release_interface((*dev)->usb_device,
+				 (*dev)->desc->interface_number);
 out_libusb_close:
 	libusb_close((*dev)->usb_device);
 	(*dev)->usb_device = NULL;
-- 
2.1.4