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

Commit fb4213bf authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "usb: gadget: Add a NULL check for desc header pointer"

parents 79b84b46 37c9599d
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -150,6 +150,7 @@ int config_ep_by_speed(struct usb_gadget *g,
			struct usb_function *f,
			struct usb_ep *_ep)
{
	struct usb_composite_dev *cdev;
	struct usb_endpoint_descriptor *chosen_desc = NULL;
	struct usb_descriptor_header **speed_desc = NULL;

@@ -161,6 +162,8 @@ int config_ep_by_speed(struct usb_gadget *g,
	if (!g || !f || !_ep)
		return -EIO;

	cdev = get_gadget_data(g);

	/* select desired speed */
	switch (g->speed) {
	case USB_SPEED_SUPER_PLUS:
@@ -186,6 +189,13 @@ int config_ep_by_speed(struct usb_gadget *g,
	default:
		speed_desc = f->fs_descriptors;
	}

	if (!speed_desc) {
		DBG(cdev, "%s desc not present for function %s\n",
			usb_speed_string(g->speed), f->name);
		return -EIO;
	}

	/* find descriptors */
	for_each_ep_desc(speed_desc, d_spd) {
		chosen_desc = (struct usb_endpoint_descriptor *)*d_spd;
@@ -228,12 +238,9 @@ int config_ep_by_speed(struct usb_gadget *g,
			_ep->maxburst = comp_desc->bMaxBurst + 1;
			break;
		default:
			if (comp_desc->bMaxBurst != 0) {
				struct usb_composite_dev *cdev;

				cdev = get_gadget_data(g);
			if (comp_desc->bMaxBurst != 0)
				ERROR(cdev, "ep0 bMaxBurst must be 0\n");
			}

			_ep->maxburst = 1;
			break;
		}
+9 −4
Original line number Diff line number Diff line
@@ -402,11 +402,14 @@ int u_audio_start_capture(struct g_audio *audio_dev)
	struct usb_ep *ep;
	struct uac_rtd_params *prm;
	struct uac_params *params = &audio_dev->params;
	int req_len, i;
	int req_len, i, ret;

	ep = audio_dev->out_ep;
	prm = &uac->c_prm;
	config_ep_by_speed(gadget, &audio_dev->func, ep);
	ret = config_ep_by_speed(gadget, &audio_dev->func, ep);
	if (ret)
		return ret;

	req_len = prm->max_psize;

	prm->ep_enabled = true;
@@ -455,11 +458,13 @@ int u_audio_start_playback(struct g_audio *audio_dev)
	struct uac_params *params = &audio_dev->params;
	unsigned int factor, rate;
	const struct usb_endpoint_descriptor *ep_desc;
	int req_len, i;
	int req_len, i, ret;

	ep = audio_dev->in_ep;
	prm = &uac->p_prm;
	config_ep_by_speed(gadget, &audio_dev->func, ep);
	ret = config_ep_by_speed(gadget, &audio_dev->func, ep);
	if (ret)
		return ret;

	ep_desc = ep->desc;