Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce8cd952 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "USB: gadget: f_qdss: Add proper checks in usb_qdss_close()"

parents 592386eb 917daaee
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -1107,20 +1107,26 @@ EXPORT_SYMBOL(usb_qdss_open);
void usb_qdss_close(struct usb_qdss_ch *ch)
{
	struct f_qdss *qdss = ch->priv_usb;
	struct usb_gadget *gadget = qdss->cdev->gadget;
	struct usb_gadget *gadget;
	unsigned long flags;
	int status;

	pr_debug("usb_qdss_close\n");

	spin_lock_irqsave(&qdss_lock, flags);
	if (!qdss || !qdss->usb_connected) {
		ch->app_conn = 0;
		spin_unlock_irqrestore(&qdss_lock, flags);
		return;
	}

	usb_ep_dequeue(qdss->port.data, qdss->endless_req);
	usb_ep_free_request(qdss->port.data, qdss->endless_req);
	qdss->endless_req = NULL;
	gadget = qdss->cdev->gadget;
	ch->app_conn = 0;
	spin_unlock_irqrestore(&qdss_lock, flags);

	if (qdss->usb_connected) {
	status = uninit_data(qdss->port.data);
	if (status)
		pr_err("%s: uninit_data error\n", __func__);
@@ -1132,7 +1138,6 @@ void usb_qdss_close(struct usb_qdss_ch *ch)
				0);
	if (status)
		pr_err("%s:qdss_disconnect error\n", __func__);
	}
	usb_gadget_restart(gadget);
}
EXPORT_SYMBOL(usb_qdss_close);