All of lore.kernel.org
 help / color / mirror / Atom feed
From: Felipe Balbi <balbi@ti.com>
To: Amit Virdi <amit.virdi@st.com>
Cc: linux-usb@vger.kernel.org, linux-omap@vger.kernel.org,
	balbi@ti.com, pratyush.anand@gmail.com, ajay.khandelwal@st.com
Subject: Re: [PATCH 1/4] usb: dwc3: gadget: Fix TRB preparation during SG
Date: Mon, 22 Dec 2014 10:04:31 -0600	[thread overview]
Message-ID: <20141222160431.GC12815@saruman> (raw)
In-Reply-To: <1908f9be4bfb2148b4d2efa2dbc6de88c204e7f4.1418972323.git.amit.virdi@st.com>

[-- Attachment #1: Type: text/plain, Size: 1899 bytes --]

On Fri, Dec 19, 2014 at 12:40:15PM +0530, Amit Virdi wrote:
> When scatter gather is used, multiple TRBs are prepared from one DWC3 request.
> Hence, we must set the 'last' flag when the SG is last as well as the TRB is
> last. The current implementation uses list_is_last to check if the dwc3_request
> is the last request in the request_list.
> 
> This doesn't work when SG is used. This is because, when it is the last request,
> the first TRB preparation (in dwc3_prepare_one_trb) modifies the dwc3_request
> list's next and prev pointers while moving the URB to req_queued.
> 
> Hence, list_is_last always return false no matter what. The correct way is not
> to access the modified pointers of dwc3_request but to use list_empty macro
> instead.
> 
> Fixes: e5ba5ec833aa4a76980b512d6a6779643516b850 ("usb: dwc3: gadget: fix scatter
> gather implementation"
> 
> Signed-off-by: Amit Virdi <amit.virdi@st.com>

you need to Cc stable here and make sure you point out which kernel
versions this should be backported to. Looks like this sould be:

Cc: <stable@vger.kernel.org> # v3.9+

Also, how have you tested this ? I need a test case to make sure it
fails here and this patch really fixes the problem.

> ---
>  drivers/usb/dwc3/gadget.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index f03b136ecfce..0eec2e917994 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -882,8 +882,7 @@ static void dwc3_prepare_trbs(struct dwc3_ep *dep, bool starting)
>  
>  				if (i == (request->num_mapped_sgs - 1) ||
>  						sg_is_last(s)) {
> -					if (list_is_last(&req->list,
> -							&dep->request_list))
> +					if (list_empty(&dep->request_list))
>  						last_one = true;
>  					chain = false;
>  				}
> -- 
> 1.8.0
> 

-- 
balbi

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2014-12-22 16:04 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-19  7:10 [PATCH 0/4] usb: dwc3: Fixes and code cleanup Amit Virdi
2014-12-19  7:10 ` [PATCH 1/4] usb: dwc3: gadget: Fix TRB preparation during SG Amit Virdi
2014-12-22 16:04   ` Felipe Balbi [this message]
2014-12-27  7:09     ` Amit Virdi
2014-12-27 17:44       ` Felipe Balbi
2014-12-29  6:29         ` Amit Virdi
     [not found] ` <cover.1418972323.git.amit.virdi-qxv4g6HH51o@public.gmane.org>
2014-12-19  7:10   ` [PATCH 2/4] usb: dwc3: gadget: Stop TRB preparation after limit is reached Amit Virdi
2014-12-22 16:06     ` Felipe Balbi
2014-12-27  7:54       ` Amit Virdi
2014-12-27 17:46         ` Felipe Balbi
2014-12-29  6:35           ` Amit Virdi
2014-12-29 17:12             ` Felipe Balbi
2014-12-30 14:41               ` Amit Virdi
2014-12-30 16:02                 ` Felipe Balbi
2015-01-06  6:14                   ` Amit Virdi
     [not found]                     ` <54AB7D3F.3030809-qxv4g6HH51o@public.gmane.org>
2015-01-12 18:34                       ` Felipe Balbi
2015-01-13  4:48                         ` Amit Virdi
2015-01-13 16:28                           ` Felipe Balbi
2015-01-14  9:09                             ` Amit Virdi
2015-01-14 15:39                               ` Greg KH
2014-12-19  7:10   ` [PATCH 4/4] usb: dwc3: Remove current_trb as it is unused Amit Virdi
2014-12-19  7:10 ` [PATCH 3/4] usb: dwc3: gadget: Remove redundant check Amit Virdi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141222160431.GC12815@saruman \
    --to=balbi@ti.com \
    --cc=ajay.khandelwal@st.com \
    --cc=amit.virdi@st.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=pratyush.anand@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.