From patchwork Tue Apr 7 09:46:52 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johan Hovold X-Patchwork-Id: 458610 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 4BB8F1401DD for ; Tue, 7 Apr 2015 19:48:48 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="verification failed; unprotected key" header.d=gmail.com header.i=@gmail.com header.b=MyXJCFU6; dkim-adsp=none (unprotected policy); dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753568AbbDGJsq (ORCPT ); Tue, 7 Apr 2015 05:48:46 -0400 Received: from mail-la0-f48.google.com ([209.85.215.48]:32898 "EHLO mail-la0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753482AbbDGJrS (ORCPT ); Tue, 7 Apr 2015 05:47:18 -0400 Received: by layy10 with SMTP id y10so37902421lay.0; Tue, 07 Apr 2015 02:47:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=zqEFm+rIRDdtmPPxAeXmLHeZAuccDaIgZUxosBXQ0FU=; b=MyXJCFU6zNKEMKcv80onwsCz3OX/6i1OGq2f5AGj3l8W0btrf6Zz6V1yPA/HHLYsH0 96CF64ZU83dv9bgU32hVyDwc7LizaGEnzOkdybiNETRK23UpU6uqTpcjm3xwU3+l2Dzw 1+GbFbE+KLnzGJp6VoXnD/YMyBKL28NsIxpXQP6UDRC00C8XOLiYbdG9HDcjfh769Ij6 Ijv/NHjD5UTImVQLHL3jlyuMGaO4Qc4Jy79WYlPbAqyaMj/wLKBxgJeEK2aV0cs0hNGg bGxg7jxUB+DbyfI5vEbLo+yA3zdFgTL6yonEO/xiKUV+Jam9iosFpOfQAYcEPYsLX3AO 7D+A== X-Received: by 10.152.44.161 with SMTP id f1mr17247894lam.26.1428400036683; Tue, 07 Apr 2015 02:47:16 -0700 (PDT) Received: from xi.terra (c193-14-96-226.cust.tele2.se. [193.14.96.226]) by mx.google.com with ESMTPSA id u15sm1649637lal.4.2015.04.07.02.47.14 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Apr 2015 02:47:15 -0700 (PDT) Received: from johan by xi.terra with local (Exim 4.84) (envelope-from ) id 1YfQ6E-0001yl-L8; Tue, 07 Apr 2015 11:47:14 +0200 From: Johan Hovold To: Greg Kroah-Hartman , Felipe Balbi , Alan Stern Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Stephen Warren , Thierry Reding , Alexandre Courbot , linux-tegra@vger.kernel.org, Johan Hovold , stable Subject: [PATCH 2/2] USB: ehci-tegra: fix inefficient copy of unaligned buffers Date: Tue, 7 Apr 2015 11:46:52 +0200 Message-Id: <1428400012-7563-3-git-send-email-johan@kernel.org> X-Mailer: git-send-email 2.0.5 In-Reply-To: <1428400012-7563-1-git-send-email-johan@kernel.org> References: <1428400012-7563-1-git-send-email-johan@kernel.org> Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Make sure only to copy any actual data rather than the whole buffer, when releasing the temporary buffer used for unaligned transfer buffers. Note that the corresponding fix of musb also fixes a lockup on disconnect, where repeated failed transfers would starve the hub workqueue from processing the disconnect, which would have prevented the urbs from being resubmitted. In this case there is no data to forward, but the full buffer length was being copied nonetheless. Compile-tested only. Fixes: fbf9865c6d96 ("USB: ehci: tegra: Align DMA transfers to 32 bytes") Cc: stable # v2.6.39 Signed-off-by: Johan Hovold --- drivers/usb/host/ehci-tegra.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index ff9af29b4e9f..dfe2a7abc36d 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c @@ -313,7 +313,7 @@ static void free_dma_aligned_buffer(struct urb *urb) if (usb_urb_dir_in(urb)) memcpy(temp->old_xfer_buffer, temp->data, - urb->transfer_buffer_length); + urb->actual_length); urb->transfer_buffer = temp->old_xfer_buffer; kfree(temp->kmalloc_ptr);