Received: by 2002:a05:6a10:6006:0:0:0:0 with SMTP id w6csp1170420pxa; Fri, 28 Aug 2020 05:52:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzYnXX08HZYOJ9Z1lSc/9z0dnO8cWkc9jglGa1Pwep0t8dYZ6RoO4dRFebbxh8a+7K5BuHC X-Received: by 2002:a17:906:a116:: with SMTP id t22mr1664309ejy.353.1598619160445; Fri, 28 Aug 2020 05:52:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1598619160; cv=none; d=google.com; s=arc-20160816; b=ekp3EXRzXb69dCsXP9LUtvclZRrFaR3Fya6gWb19hufMjDc0rVa45GVnBobrS5EJT7 /GDdfu1wEhThY1QOwqbQMikoEwNh7KvBVTPM95OScOgC970eNgASZfHeDXKX0BcIM+U/ yaol0Avp1mKQ+qmDYn0jmefRChgI2Jo/QqsrrmtBAqkWqC7nYzgM+cEd1bltBV80AqgY ekMZ2+sxREpUW95A13j7SvWU5QrBQNK6D3VFgquosRaVlpXifviG4nwtYqXPEI5DAa8c wUwkzVlz3xvZ0Hk7MKs0CqtRrxBSTgCIYLVW81tgI4s/MsGW9cBBodJK5H/uklELAlGL dNnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=rNKj1MhMJkEpltOBXeEk65161l8KAaG/FqPAoh6lM98=; b=x5692EzC6HA37MaUEnzBHksPNVzTquONhY/x7hBj3RNPYLzSo8gd/25WFakr7kUPVN hi519AZAce1WjGAuXxQyXREUSCgN9x5zcUXpicKhe74cjNMZNX54OmmWJOWWyKk4PU74 muJn5mfcKfQ33p7xZvhWv9ZxK3J3csE8TzVklIE/qOVNSvv83YIWF5IeoQ77iyan5hOs iZC7uoXzGwV9vRu1o0rq8TMq01Hoeasg4iPZpFazvtFjjqZ1N2trNYfpP8sYTpyTxthX 56RHGn8ewLb5UzEBs64vW3QgUcobK10xCY35tL3SFew7NlQTwlVj6SyguVCYJPm3q7eL lXgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@megous.com header.s=mail header.b=b07fnjeN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=megous.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r18si505331ejd.679.2020.08.28.05.52.17; Fri, 28 Aug 2020 05:52:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@megous.com header.s=mail header.b=b07fnjeN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=megous.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729343AbgH1Muu (ORCPT + 99 others); Fri, 28 Aug 2020 08:50:50 -0400 Received: from vps.xff.cz ([195.181.215.36]:39426 "EHLO vps.xff.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729305AbgH1Mug (ORCPT ); Fri, 28 Aug 2020 08:50:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megous.com; s=mail; t=1598619033; bh=nxUWIm3gy/O9YpC9oWvFu3EIfP25ydy4pKjYKk0i/qE=; h=From:To:Cc:Subject:Date:From; b=b07fnjeNJJsvJjL2xaCzpKxNgztTc6dQlBOhVGsdxfEyWuR3tjCZpH/5LJlddl2p7 Nu85p4YCWwFtH8FWhC+laJZN3XaDcSd4zSEuGPiXjut5p9lMGHNV41dXa6NoXnhje5 7ADi4CdrKSp+gncwYxJ65IjZs325UpgVm9FzhEcA= From: Ondrej Jirman To: linux-sunxi@googlegroups.com Cc: Ondrej Jirman , Jernej Skrabec , Maxime Ripard , Chen-Yu Tsai , David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org (open list:DRM DRIVERS FOR ALLWINNER A10), linux-arm-kernel@lists.infradead.org (moderated list:ARM/Allwinner sunXi SoC support), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v2] drm/sun4i: Fix dsi dcs long write function Date: Fri, 28 Aug 2020 14:50:32 +0200 Message-Id: <20200828125032.937148-1-megous@megous.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It's writing too much data. regmap_bulk_write expects number of register sized chunks to write, not a byte sized length of the bounce buffer. Bounce buffer needs to be padded too, so that regmap_bulk_write will not read past the end of the buffer. Fixes: 133add5b5ad4 ("drm/sun4i: Add Allwinner A31 MIPI-DSI controller support") Signed-off-by: Ondrej Jirman Reviewed-by: Jernej Skrabec --- v2: - use ALIGN - add tags drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c index 7f13f4d715bf..840fad1b68dd 100644 --- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c @@ -889,7 +889,7 @@ static int sun6i_dsi_dcs_write_long(struct sun6i_dsi *dsi, regmap_write(dsi->regs, SUN6I_DSI_CMD_TX_REG(0), sun6i_dsi_dcs_build_pkt_hdr(dsi, msg)); - bounce = kzalloc(msg->tx_len + sizeof(crc), GFP_KERNEL); + bounce = kzalloc(ALIGN(msg->tx_len + sizeof(crc), 4), GFP_KERNEL); if (!bounce) return -ENOMEM; @@ -900,7 +900,7 @@ static int sun6i_dsi_dcs_write_long(struct sun6i_dsi *dsi, memcpy((u8 *)bounce + msg->tx_len, &crc, sizeof(crc)); len += sizeof(crc); - regmap_bulk_write(dsi->regs, SUN6I_DSI_CMD_TX_REG(1), bounce, len); + regmap_bulk_write(dsi->regs, SUN6I_DSI_CMD_TX_REG(1), bounce, DIV_ROUND_UP(len, 4)); regmap_write(dsi->regs, SUN6I_DSI_CMD_CTL_REG, len + 4 - 1); kfree(bounce); -- 2.28.0