From patchwork Wed Dec 4 12:46:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Grygorii Strashko X-Patchwork-Id: 180793 Delivered-To: patch@linaro.org Received: by 2002:a92:3001:0:0:0:0:0 with SMTP id x1csp559540ile; Wed, 4 Dec 2019 04:46:35 -0800 (PST) X-Google-Smtp-Source: APXvYqyuBeGrjmo1quwHsKYlefYNahZgTuzEa0+ZQFgWKDW3IqVYAg/18P7xpACoDL0cSaKwcrqX X-Received: by 2002:aca:f083:: with SMTP id o125mr2251680oih.122.1575463595104; Wed, 04 Dec 2019 04:46:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575463595; cv=none; d=google.com; s=arc-20160816; b=ssYkVDNfUMkfw1Bu3ucS06+vDFSlL53adcEzqqzhuWMEdRxvjCgvU5PofW0Ydu5toQ 57B/HcM6UtXEnNmSWIdD6yiPm8s7YTI/e8CeiEkduk9XseRd/lcEUCTTNvpBnqy+zPRM UwCGZyzashLTDkRqRbmfPg7EV/z7UIFeSbOzVlqTq05+ofSXdB7l0rde7uSBlSjUt0eu HMPm1opcdEZF7elXVCm+fmoL89J3Rlz963XPCd9C+E7aLusVNnCMqaTDxm9xs/eKLHvA l6mSsAyUQed8if5tsJAkD5uYgPhdT8eP3/RecGw3Bl/w82JLi5+waCoftdedweeuQ6sV Wnmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=Sa8r52CALQskJiWK9y+jozhJvZVk/6tzlulxQC0hLRg=; b=DueABBiIfP/vvSkDUhEzakO3Sz9+Ha4hVagW0vm6i+QvdGP0iS6wJVKm+y+m1Ucu+u XwKwLkh/hobP8fzMQ5r1Tk2LViqdNWvSIc2F0HVqsi8zGyZ7cs++fsHKmFxdnWsewjys 0+WjLJJ4xWNWeFwDyKkBNPp4clqADMDgb+T6o9oPS9mVMKXANCc38L4bmvHy8GLu9aF6 ZM7JpqqYLPDgvmhaY4AZ9lmu88okrayP8gV5VWvUwkCo9fR++XXW2PO92lMBHdn1j/AF jnnck4oSqAXLvWKYeFQO7nhRA3tzNXZKI+5z2E1TaUWqaS+bjlbLFJ5TLw++dtcrD7+4 Schg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b="G0vR/kSG"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x207si3161336oif.30.2019.12.04.04.46.34; Wed, 04 Dec 2019 04:46:35 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b="G0vR/kSG"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727891AbfLDMqd (ORCPT + 27 others); Wed, 4 Dec 2019 07:46:33 -0500 Received: from lelv0143.ext.ti.com ([198.47.23.248]:42812 "EHLO lelv0143.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727445AbfLDMqd (ORCPT ); Wed, 4 Dec 2019 07:46:33 -0500 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id xB4CkTDW018131; Wed, 4 Dec 2019 06:46:29 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1575463589; bh=Sa8r52CALQskJiWK9y+jozhJvZVk/6tzlulxQC0hLRg=; h=From:To:CC:Subject:Date; b=G0vR/kSGDrnKrxg36PKYVz2nYoEgDVHz8GkuYc9vnKFdedf2e3DlBevrddlQYWK5l S588W6/7IA2d1EAtXEupCy9EKZVRaAmM5Cc0gxyt+D+QFq3W6Z4J8dMkCq1k3x3QXR buVKyJzzGQPwRIco1urplZMscWB7uTr1XtTlvOw0= Received: from DLEE113.ent.ti.com (dlee113.ent.ti.com [157.170.170.24]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id xB4CkTr4071490 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 4 Dec 2019 06:46:29 -0600 Received: from DLEE103.ent.ti.com (157.170.170.33) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3; Wed, 4 Dec 2019 06:46:29 -0600 Received: from lelv0326.itg.ti.com (10.180.67.84) by DLEE103.ent.ti.com (157.170.170.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3 via Frontend Transport; Wed, 4 Dec 2019 06:46:29 -0600 Received: from localhost (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id xB4CkS0F123554; Wed, 4 Dec 2019 06:46:29 -0600 From: Grygorii Strashko To: "David S. Miller" , , Ivan Khoronzhuk CC: Sekhar Nori , , Grygorii Strashko Subject: [PATCH] net: ethernet: ti: davinci_cpdma: fix warning "device driver frees DMA memory with different size" Date: Wed, 4 Dec 2019 14:46:18 +0200 Message-ID: <20191204124618.18774-1-grygorii.strashko@ti.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The TI CPSW(s) driver produces warning with DMA API debug options enabled: WARNING: CPU: 0 PID: 1033 at kernel/dma/debug.c:1025 check_unmap+0x4a8/0x968 DMA-API: cpsw 48484000.ethernet: device driver frees DMA memory with different size [device address=0x00000000abc6aa02] [map size=64 bytes] [unmap size=42 bytes] CPU: 0 PID: 1033 Comm: ping Not tainted 5.3.0-dirty #41 Hardware name: Generic DRA72X (Flattened Device Tree) [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [] (show_stack) from [] (dump_stack+0xd8/0x110) [] (dump_stack) from [] (__warn+0xe0/0x10c) [] (__warn) from [] (warn_slowpath_fmt+0x44/0x6c) [] (warn_slowpath_fmt) from [] (check_unmap+0x4a8/0x968) [] (check_unmap) from [] (debug_dma_unmap_page+0x80/0x90) [] (debug_dma_unmap_page) from [] (__cpdma_chan_free+0x114/0x16c) [] (__cpdma_chan_free) from [] (__cpdma_chan_process+0x158/0x17c) [] (__cpdma_chan_process) from [] (cpdma_chan_process+0x3c/0x5c) [] (cpdma_chan_process) from [] (cpsw_tx_mq_poll+0x48/0x94) [] (cpsw_tx_mq_poll) from [] (net_rx_action+0x108/0x4e4) [] (net_rx_action) from [] (__do_softirq+0xec/0x598) [] (__do_softirq) from [] (do_softirq.part.4+0x68/0x74) [] (do_softirq.part.4) from [] (__local_bh_enable_ip+0x124/0x17c) [] (__local_bh_enable_ip) from [] (ip_finish_output2+0x294/0xb7c) [] (ip_finish_output2) from [] (ip_output+0x210/0x364) [] (ip_output) from [] (ip_send_skb+0x1c/0xf8) [] (ip_send_skb) from [] (raw_sendmsg+0x9a8/0xc74) [] (raw_sendmsg) from [] (sock_sendmsg+0x14/0x24) [] (sock_sendmsg) from [] (__sys_sendto+0xbc/0x100) [] (__sys_sendto) from [] (__sys_trace_return+0x0/0x14) Exception stack(0xea9a7fa8 to 0xea9a7ff0) ... The reason is that cpdma_chan_submit_si() now stores original buffer length (sw_len) in CPDMA descriptor instead of adjusted buffer length (hw_len) used to map the buffer. Hence, fix an issue by using adjusted buffer length (hw_len) to unmap packet buffer. Cc: Ivan Khoronzhuk Fixes: 6670acacd59e ("net: ethernet: ti: davinci_cpdma: add dma mapped submit") Signed-off-by: Grygorii Strashko --- drivers/net/ethernet/ti/davinci_cpdma.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -- 2.17.1 diff --git a/drivers/net/ethernet/ti/davinci_cpdma.c b/drivers/net/ethernet/ti/davinci_cpdma.c index 37ba708ac781..6be5a514d5b1 100644 --- a/drivers/net/ethernet/ti/davinci_cpdma.c +++ b/drivers/net/ethernet/ti/davinci_cpdma.c @@ -1197,12 +1197,13 @@ static void __cpdma_chan_free(struct cpdma_chan *chan, { struct cpdma_ctlr *ctlr = chan->ctlr; struct cpdma_desc_pool *pool = ctlr->pool; + int origlen, hw_len; dma_addr_t buff_dma; - int origlen; uintptr_t token; token = desc_read(desc, sw_token); origlen = desc_read(desc, sw_len); + hw_len = desc_read(desc, hw_len); buff_dma = desc_read(desc, sw_buffer); if (origlen & CPDMA_DMA_EXT_MAP) { @@ -1210,7 +1211,7 @@ static void __cpdma_chan_free(struct cpdma_chan *chan, dma_sync_single_for_cpu(ctlr->dev, buff_dma, origlen, chan->dir); } else { - dma_unmap_single(ctlr->dev, buff_dma, origlen, chan->dir); + dma_unmap_single(ctlr->dev, buff_dma, hw_len, chan->dir); } cpdma_desc_free(pool, desc, 1);