ccid_device: Fix memory leaks in ccid_handle_out() error paths

Change-Id: I7c5e916992a7b55ca1ab006759c1f5c62b759d57
diff --git a/ccid_common/ccid_device.c b/ccid_common/ccid_device.c
index 049b1cf..8183b16 100644
--- a/ccid_common/ccid_device.c
+++ b/ccid_common/ccid_device.c
@@ -644,6 +644,7 @@
 
 	if (len < sizeof(*ch)) {
 		/* FIXME */
+		msgb_free(msg);
 		return -1;
 	}
 
@@ -652,6 +653,7 @@
 	if (!cs) {
 		LOGPCI(ci, LOGL_ERROR, "Invalid bSlot %u\n", ch->bSlot);
 		resp = gen_err_resp(ch->bMessageType, ch->bSlot, CCID_ICC_STATUS_NO_ICC, ch->bSeq, 5);
+		msgb_free(msg);
 		return ccid_send(ci, resp);
 	}
 
@@ -661,6 +663,7 @@
 		/* FIXME: ABORT logic as per section 5.3.1 of CCID Spec v1.1 */
 		resp = gen_err_resp(ch->bMessageType, ch->bSlot, get_icc_status(cs), ch->bSeq,
 					CCID_ERR_CMD_SLOT_BUSY);
+		msgb_free(msg);
 		return ccid_send(ci, resp);
 	}