From patchwork Sun Nov 12 18:34:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Blumenstingl X-Patchwork-Id: 10054839 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 66F4E6028A for ; Sun, 12 Nov 2017 18:34:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5236C26E40 for ; Sun, 12 Nov 2017 18:34:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 35415285DC; Sun, 12 Nov 2017 18:34:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id A3A5326E40 for ; Sun, 12 Nov 2017 18:34:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=lIpaaeKRiO+Z4kgPUDAOmtWSnv0LYKYYYYS5ZvG6jCY=; b=rxJ +otFYqsbsOrFpWraFvPzKbl1ZLfhXNrdZTj4RtOyL1glEPlHuZfC+HSOs+HX43Gg0eqaOSUBIjmDl Rh/28oBkKBx0/VPysotIiBf6aCarTcGLEA+83hj59FzCsA2xMG1ig/vWUUPuRTYn+dbin+JCp+7HC WjB7jwzjt0qbkpmO67Zhz4/CgmDdhNkh443l6HGMvGoJjYEx5sDheOoQwqyqCnerJOQgpgyCEcW6Z C2uwGIvOYCSZyW2N6aX66PWTfNx0+8/68lJYo0lDPKabC/aWGG3utrP92v458uERXCrbWbMCE/TcH 6ZPHnYqicn5hUt75kq1RboRPg6CRb2Q==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1eDx5j-0007L0-8I; Sun, 12 Nov 2017 18:34:47 +0000 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1eDx5f-0007Jq-Le; Sun, 12 Nov 2017 18:34:45 +0000 Received: by mail-wm0-x244.google.com with SMTP id v186so2475158wma.2; Sun, 12 Nov 2017 10:34:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=GVayoUMI8XBdnTI2Y9c3mJBC3gJHHAUCfE9TBIhtPmE=; b=hzVa3mkGp8IN0VgIGH8EYeB+8sUKsBmSLUCQqsGJ1xwp4Llt8GzVk9wclXw1iSq3Rx s5rn3XN942zMdV6+ozu5OnbE/z67WpZfGR1PNK/R4yFfqSTW+HGSfhDMik5zI4PNHNt2 zLP3O7CswRVp7Ob8jHnmqsTM2DLo78Nru1XPNRvo9zXidw07qJlj8Xy0ps1ZSmiEESpo /63EApHUIA7Rlpq8FEzYDuP8gIXka6GxmU/qqd73/xY5ba7Hv+Cs2vZfnC2ieok/2mIC WTxXSDfZQ6qj1+iRIEne2tJ2Rx1/c/8Pu1QqIOl/PYM6ae5+X5bdA6F9AL2zL7bJ8dCX nkBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=GVayoUMI8XBdnTI2Y9c3mJBC3gJHHAUCfE9TBIhtPmE=; b=iscl2HZ+DtsAfx2/CA4mVRTgqE3WAv+EUw3lS+hJ55ZwuDC3iZyq25tmYdPJZx/xAN 9RS8okWXSGoz6xILmVNJpF9F0eaH77AYt4g9UDSKON/XO+MCXDOHtJoE1JzvLS02rx+/ Qembp8c42bck2Hx7j3j8OwxIb6+F+b/bqYJgqsNPTcUTolqywL62djbYMNpG0alx0QFy to4vnxdpevi27gkuLZJXMDjh5YDxUDpreWComPSDxJLB7Lxi3QgABEZ7w31LKCrhk7c7 AzNLCL5FjEVaBvTpaZLFjjZyuy0gXJ/C4/Jk7G1BgQUyCvM0l7vKzdLaXcg7gfmLbxBj F/rw== X-Gm-Message-State: AJaThX7cT1yxBgD0/XZwBszYL9aycWOupbQxjYFUImkTI/h0XQ04qEh8 PviOxiKPRPX5waqWCeGXvL0= X-Google-Smtp-Source: AGs4zMa7nSthuSO0rupFkd4zqo7H0TfDnThkBiwqvbX72tbUYffGPIt3gAdFeQYNmHHJ9IzwAqYMVg== X-Received: by 10.28.150.194 with SMTP id y185mr4232401wmd.54.1510511660467; Sun, 12 Nov 2017 10:34:20 -0800 (PST) Received: from blackbox.darklights.net (p200300DCD3F8BE0405CAB6CAE1F0F959.dip0.t-ipconnect.de. [2003:dc:d3f8:be04:5ca:b6ca:e1f0:f959]) by smtp.googlemail.com with ESMTPSA id r29sm9870417wra.71.2017.11.12.10.34.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 12 Nov 2017 10:34:19 -0800 (PST) From: Martin Blumenstingl To: srinivas.kandagatla@linaro.org, linux-amlogic@lists.infradead.org Subject: [PATCH] nvmem: meson-mx-efuse: fix reading from an offset other than 0 Date: Sun, 12 Nov 2017 19:34:12 +0100 Message-Id: <20171112183412.12806-1-martin.blumenstingl@googlemail.com> X-Mailer: git-send-email 2.15.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20171112_103443_890382_5BAD0338 X-CRM114-Status: GOOD ( 12.83 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Martin Blumenstingl , gregkh@linuxfoundation.org, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+patchwork-linux-amlogic=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP meson_mx_efuse_read calculates the address internal to the eFuse based on the offset and the word size. This works fine with any given offset. However, the offset is also included when writing to the output buffer. This means that reading 4 bytes at offset 500 tries to write beyond the array allocated by the nvmem core as it wants to write the 4 bytes to "buffer address + offset (500)". This issue did not show up in the previous tests since no driver uses any value from the eFuse yet and reading the eFuse via sysfs simply reads the whole eFuse, starting at offset 0. Fix this by only including the offset in the internal address calculation. Fixes: 8caef1fa9176 ("nvmem: add a driver for the Amlogic Meson6/Meson8/Meson8b SoCs") Signed-off-by: Martin Blumenstingl --- drivers/nvmem/meson-mx-efuse.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/nvmem/meson-mx-efuse.c b/drivers/nvmem/meson-mx-efuse.c index a346b4923550..41d3a3c1104e 100644 --- a/drivers/nvmem/meson-mx-efuse.c +++ b/drivers/nvmem/meson-mx-efuse.c @@ -156,8 +156,8 @@ static int meson_mx_efuse_read(void *context, unsigned int offset, MESON_MX_EFUSE_CNTL1_AUTO_RD_ENABLE, MESON_MX_EFUSE_CNTL1_AUTO_RD_ENABLE); - for (i = offset; i < offset + bytes; i += efuse->config.word_size) { - addr = i / efuse->config.word_size; + for (i = 0; i < bytes; i += efuse->config.word_size) { + addr = (offset + i) / efuse->config.word_size; err = meson_mx_efuse_read_addr(efuse, addr, &tmp); if (err)