From patchwork Tue May 30 09:51:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Honza_Petrou=C5=A1?= X-Patchwork-Id: 768528 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wcTQx2sZdz9ryv for ; Tue, 30 May 2017 19:51:53 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="jRaQl3RU"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="I3sTJamD"; dkim-atps=neutral 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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From: MIME-Version:Reply-To:Cc:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=bsXPbH+BH6OcOINK3Yv1vx/f/tv6rAKjKO0Uv5uhehI=; b=jRa Ql3RUNwjM7eRDD75qV2URcLloj5LcpUjTUHGwFr+U+168iMeF1g0eKZ84dIEl0ZNHGIlfSFHps+Jy O60rHUlub71RzLvS66KPIOJ2CFC63ytmCDYrx+eHp/hzB9gq42OmvYqG+//bcqCTOyPCKdtQnaulj GTDnPdO1n48L79X1HgQ+UTcHPebKw2BobydvTAk9dbAV7XvtFrCUrvdQsb3huljwY7ZL29orlt5yL 95YfxVlD9IyaiddZitfOlqPtwK35FK7s3eZWgzuz+ud+ips3CkytKAh/c1Saqf5gnW9VH9YvUco28 3AsjW8U3OW5jijYczo69HzyqdS8iZkA==; 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 1dFdoX-0007fU-Vp; Tue, 30 May 2017 09:51:46 +0000 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dFdoO-0007OS-QB for linux-mtd@lists.infradead.org; Tue, 30 May 2017 09:51:41 +0000 Received: by mail-qk0-x241.google.com with SMTP id y128so11358789qka.3 for ; Tue, 30 May 2017 02:51:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=GPIw1koYMVriz2Qbyq4SN/KHfSt//dwhEK8qqj3Jvzk=; b=I3sTJamDhLsP9fUxgLJdJhs2EjqaVFvXRmaYTJiWHwPd1+CEx4zqJPmNJaakzJlS4o AYnoZh3A0NsE4D3g5PQqom5w+HSEIVDG8ZUPOw8R30aOTI3NU4NH9/GTTJHKEK3obsaH TGmF5CdFUcDfbNAwC8maEsJiAh02f7mePW7DFM9L6Q9Uyu8ElmIL4GU1WHThvqUgPuu7 26jWw9p9FSRQYg/bh10jW2KEsxfo323laCsp+TYjLooEuYLueBOfzG/g1YRoc3eHFXB7 u731xWkeR5Yzy4YC3D4Snz8dvciJ7Mnk89Kd+a/kYRnQ/at6SB14R3i8PNj+hmgXQGkk xwUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=GPIw1koYMVriz2Qbyq4SN/KHfSt//dwhEK8qqj3Jvzk=; b=Svrn/vV7exf6PjKY9dZ+iPTshHQxho9gV1lKunttREXgR1sDfdwyNbFkB48vP83SJH y1aVRVavWmr+ZtMiViDipv/4D5338d5FtYlsf/hwzc6QpX9NNLcKcX3rD+g3HA57U0po gqZMlgT61xLA7tV9sPXBUTf55ybQ5c2qldL5anuac4QlBC+uADsljMC82F/OfIQIqGCv LCgtXZxRWxpm8rMkgKPl2B3uAsfRjDFFzSIXwpw/D0jGjGlq6l07DjYmc7WF86/Sioqh Cdj2o8zaoIVLWwF3LkQwabuXOMfWwAzToMUrIm+oSMMRbyidN+FjUwZOsT3VIH4t/C2L r0HQ== X-Gm-Message-State: AODbwcCwHBCak3YqVd++6JnaDqzdNvIDsSSHjbc94hoYOEdZ+EV48KWH yfD+Sv/7bRvddWrYp9EBIm5TLEsOfQ== X-Received: by 10.55.66.80 with SMTP id p77mr19147337qka.225.1496137875264; Tue, 30 May 2017 02:51:15 -0700 (PDT) MIME-Version: 1.0 Received: by 10.140.96.79 with HTTP; Tue, 30 May 2017 02:51:14 -0700 (PDT) From: =?UTF-8?Q?Honza_Petrou=C5=A1?= Date: Tue, 30 May 2017 11:51:14 +0200 Message-ID: Subject: [PATCH v2 1/3] mtd:nor:ppb_unlock: fix locking of the utmost required sector To: Boris Brezillon , David Woodhouse , Brian Norris , Marek Vasut , Richard Weinberger , Cyrille Pitchen , linux-mtd@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170530_025137_694334_31A5F3A9 X-CRM114-Status: GOOD ( 10.30 ) X-Spam-Score: -2.0 (--) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-2.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [2607:f8b0:400d:c09:0:0:0:241 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (jpetrous[at]gmail.com) -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org When used Persistent Protection Bits (PPB) unlocking of cfi_cmdset_0002.c the last sector remains unlocked regardless of its previous state because of late increment of 'sectors' variable. Flip the code fixes it. Signed-off-by: Honza Petrous --- drivers/mtd/chips/cfi_cmdset_0002.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) printk(KERN_ERR "Only %d sectors for PPB locking supported!\n", @@ -2695,6 +2687,14 @@ static int __maybe_unused cfi_ppb_unlock(struct mtd_info *mtd, loff_t ofs, kfree(sect); return -EINVAL; } + + if (adr >> cfi->chipshift) { + adr = 0; + chipnum++; + + if (chipnum >= cfi->numchips) + break; + } } /* Now unlock the whole chip */ diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c index 56aa6b7..62a1004 100644 --- a/drivers/mtd/chips/cfi_cmdset_0002.c +++ b/drivers/mtd/chips/cfi_cmdset_0002.c @@ -2680,14 +2680,6 @@ static int __maybe_unused cfi_ppb_unlock(struct mtd_info *mtd, loff_t ofs, if (offset == regions[i].offset + size * regions[i].numblocks) i++; - if (adr >> cfi->chipshift) { - adr = 0; - chipnum++; - - if (chipnum >= cfi->numchips) - break; - } - sectors++; if (sectors >= MAX_SECTORS) {