int val;
 
        priv_ep = ep_to_cdns3_ep(ep);
-       priv_dev = priv_ep->cdns3_dev;
-       comp_desc = priv_ep->endpoint.comp_desc;
 
        if (!ep || !desc || desc->bDescriptorType != USB_DT_ENDPOINT) {
                dev_dbg(priv_dev->dev, "usbss: invalid parameters\n");
                return -EINVAL;
        }
 
+       comp_desc = priv_ep->endpoint.comp_desc;
+       priv_dev = priv_ep->cdns3_dev;
+
        if (!desc->wMaxPacketSize) {
                dev_err(priv_dev->dev, "usbss: missing wMaxPacketSize\n");
                return -EINVAL;
                            struct usb_request *request)
 {
        struct cdns3_endpoint *priv_ep = ep_to_cdns3_ep(ep);
-       struct cdns3_device *priv_dev = priv_ep->cdns3_dev;
+       struct cdns3_device *priv_dev;
        struct usb_request *req, *req_temp;
        struct cdns3_request *priv_req;
        struct cdns3_trb *link_trb;
        if (!ep || !request || !ep->desc)
                return -EINVAL;
 
+       priv_dev = priv_ep->cdns3_dev;
+
        spin_lock_irqsave(&priv_dev->lock, flags);
 
        priv_req = to_cdns3_request(request);