Received: by 2002:a05:7412:e794:b0:fa:551:50a7 with SMTP id o20csp2701545rdd; Fri, 12 Jan 2024 20:47:43 -0800 (PST) X-Google-Smtp-Source: AGHT+IFDWaYbXX6pVHt+6YYvX8jWW0tjRVap+A4GzrRPyilhQGz6gnDcYDRS8xOwsoGv0DYqyMjs X-Received: by 2002:a17:907:7d8d:b0:a28:2ce:fa90 with SMTP id oz13-20020a1709077d8d00b00a2802cefa90mr702389ejc.248.1705121263297; Fri, 12 Jan 2024 20:47:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705121263; cv=none; d=google.com; s=arc-20160816; b=MGZTvZTnRCuMM1qatOyCHBBWaPtEzSQ1Id84WqzwuVo6D8EOuTlC4wXeaImFf2hzET /WdBlYPxt7RNvckUrEyyLnIcfFhLtn1DUAJuNNC+hTVPMDifTZYdqrN8tJ85GUqJQZtE 5wU/qQBHxGc0++CalIMhsUn0bgaindvyIvbqwSDMIRAU0XyfFdtqETokCvOMv8tzO31b aNGYOzt+KG+ZOVjUWxUKZmuYROBShPg8PVG4joXMjh9XSRBfqxxjgpByyJKqgUMqKW2t zROzTt3jGWhau0LHq2Y/XctmrjtXVJKmVL0VizxeEklCX4d5g+H98SzoLT8EfWiGMR7z m4+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from:dkim-signature; bh=pGYVtaOwn2aSZdpDm8ExTcOizp30qs5QNeu6pAO5dGc=; fh=ywS3L1S+Tz69TSHfeJJ+qVNHToKQt8ZLCYl5b134cm4=; b=QltijJUibY7a1ECcjpFC5lsF8t26d1SrrHSyv8kcfB6IGd6cjO1AXHGJ6fzaGHjiDQ yIidS8pWgQbhaDNZfTDYo6SKLf+TfXTRwdSwgcFpcjP2dzlk4qIOw32PPcVY+fyzE6QZ p0WeydCeckdQBEidfx2avePAAuQS/m1Sqk55A1c0m9IwGDsi5aKINEEkEIsaZRQvus4d jTe3kNjpfvl5So1NCC+ns4+34xbIqbDzK+szOvAKa9Nq4T+2KHNBOWl+wfV8KNwIHVIb ThfxtGidGH9Mbgu4bx1opmdWKmVghmy6SkVPHkhiTovBSVw/mf7lY4fOcEH1SaiQAtag MWTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cogentembedded-com.20230601.gappssmtp.com header.s=20230601 header.b=IuIcKNTX; spf=pass (google.com: domain of linux-kernel+bounces-25194-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-25194-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id by16-20020a170906a2d000b00a28d251fa86si1928401ejb.1002.2024.01.12.20.47.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jan 2024 20:47:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-25194-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@cogentembedded-com.20230601.gappssmtp.com header.s=20230601 header.b=IuIcKNTX; spf=pass (google.com: domain of linux-kernel+bounces-25194-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-25194-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 054601F23B24 for ; Sat, 13 Jan 2024 04:47:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5E58EF9C4; Sat, 13 Jan 2024 04:47:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cogentembedded-com.20230601.gappssmtp.com header.i=@cogentembedded-com.20230601.gappssmtp.com header.b="IuIcKNTX" Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 04977E554 for ; Sat, 13 Jan 2024 04:47:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=cogentembedded.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cogentembedded.com Received: by mail-lj1-f176.google.com with SMTP id 38308e7fff4ca-2cd46e7ae8fso80727771fa.1 for ; Fri, 12 Jan 2024 20:47:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cogentembedded-com.20230601.gappssmtp.com; s=20230601; t=1705121246; x=1705726046; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=pGYVtaOwn2aSZdpDm8ExTcOizp30qs5QNeu6pAO5dGc=; b=IuIcKNTXczNI9k8KeaRHXYfqUWqH5d1wxijR7BEnN2tMLSJUW/T5dsc7hUrHaDsOYP l0YcUhmdAj04ETe8mmxLoGyn1V8f+ekKhzJHH4aFQoMCjxEFPKn3IK/4zwJy6r8I8Q5x tAf4QdMLANHgh4W9x+byup81xrlYP6uxF6GQhoV6WzLMQ8kA8hAaWUvtNcp0stv4lOKC /+S4wgg0E66n/bgEhXJOk5O92PyTkFgT7owPg4Uh3py4IjOU39ywjOsQVF7qynUkEbLK qkGScRO7K6bJtJzRtGdU6tCxYBIF66YJ5zpGLf2fOZmTaF4taD0ew4jaDpF2g7jj0WIn /zTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705121246; x=1705726046; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=pGYVtaOwn2aSZdpDm8ExTcOizp30qs5QNeu6pAO5dGc=; b=QCK+7acKb7b0WCI71DQrIwuW+xa7r4q4MKawVqy++CqQhUoKHc2sYaolVIPx7erIDK oA5Dj2HbIh0FnWuLVfYEhPFrLIVFuw4q9mSFEByOmUenjp9Yi1hcpNAEx5L6dRKNjCBZ sjxKDpXy+8lgfT8s3WZqQg1kcRf/9Tf2TIajrVngU4IS3LlMvcVTOk/3nZ7DAVM4iWNJ 5jm7LvjABx+0mm5vlUJXRMJnEjQS3rDGZQ0/mUeYt/t1vnjbJFifSbz5zpujXl94iKZF E81Oy7uNQdPj4ud1wquF9NcNf9+duFTyd1iDLrCmINyAQl+9HYMIRPbnnTlHzP+GyaAq Aiug== X-Gm-Message-State: AOJu0Yy/vGzpDzmmSBQaul4yYcrdSbihuKH/tzj9v7YSq2yWlzwvuVik j4eZgj8BA5Vxy9IWHT8y0syByYiJihYHaCRFia32U251EI8= X-Received: by 2002:a2e:9ccc:0:b0:2cd:4eb2:f19b with SMTP id g12-20020a2e9ccc000000b002cd4eb2f19bmr677700ljj.182.1705121246105; Fri, 12 Jan 2024 20:47:26 -0800 (PST) Received: from cobook.home ([91.231.66.25]) by smtp.gmail.com with ESMTPSA id 5-20020a05651c00c500b002cca6703b16sm672190ljr.44.2024.01.12.20.47.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jan 2024 20:47:25 -0800 (PST) From: Nikita Yushchenko To: "David S. Miller" , Jakub Kicinski , Paolo Abeni Cc: Sergey Shtylyov , Claudiu Beznea , Yoshihiro Shimoda , Wolfram Sang , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Nikita Yushchenko Subject: [PATCH] net: ravb: Fix wrong dma_unmap_single() calls in ring unmapping Date: Sat, 13 Jan 2024 10:47:21 +0600 Message-Id: <20240113044721.481131-1-nikita.yoush@cogentembedded.com> X-Mailer: git-send-email 2.39.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit When unmapping ring entries on Rx ring release, ravb driver needs to unmap only those entries that have been mapped successfully. To check if an entry needs to be unmapped, currently the address stored inside descriptor is passed to dma_mapping_error() call. But, address field inside descriptor is 32-bit, while dma_mapping_error() is implemented by comparing it's argument with DMA_MAPPING_ERROR constant that is 64-bit when dma_addr_t is 64-bit. So the comparison gets wrong, resulting into ravb driver calling dma_unnmap_single() for 0xffffffff address. When the ring entries are mapped, in case of mapping failure the driver sets descriptor's size field to zero (which is a signal to hardware to not use this descriptor). Fix ring unmapping to detect if an entry needs to be unmapped by checking for zero size field. Fixes: a47b70ea86bd ("ravb: unmap descriptors when freeing rings") Signed-off-by: Nikita Yushchenko --- drivers/net/ethernet/renesas/ravb_main.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 0e3731f50fc2..4d4b5d44c4e7 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -256,8 +256,7 @@ static void ravb_rx_ring_free_gbeth(struct net_device *ndev, int q) for (i = 0; i < priv->num_rx_ring[q]; i++) { struct ravb_rx_desc *desc = &priv->gbeth_rx_ring[i]; - if (!dma_mapping_error(ndev->dev.parent, - le32_to_cpu(desc->dptr))) + if (le16_to_cpu(desc->ds_cc) != 0) dma_unmap_single(ndev->dev.parent, le32_to_cpu(desc->dptr), GBETH_RX_BUFF_MAX, @@ -281,8 +280,7 @@ static void ravb_rx_ring_free_rcar(struct net_device *ndev, int q) for (i = 0; i < priv->num_rx_ring[q]; i++) { struct ravb_ex_rx_desc *desc = &priv->rx_ring[q][i]; - if (!dma_mapping_error(ndev->dev.parent, - le32_to_cpu(desc->dptr))) + if (le16_to_cpu(desc->ds_cc) != 0) dma_unmap_single(ndev->dev.parent, le32_to_cpu(desc->dptr), RX_BUF_SZ, -- 2.39.2