From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtpout-04.galae.net (smtpout-04.galae.net [185.171.202.116]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A24763375CB for ; Wed, 19 Nov 2025 09:13:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.171.202.116 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763543633; cv=none; b=UgBGONRKq/lU6Gv5WkVQ0fQ3I1cB5/VdD9XZnP1ry+73zYjdA3ZatOVttGFM5+9hSm6MQvp4DyjP235tCabUa3xk1fQ4awCNv7/RL/X/k6SkkmuYNLtzkSAkMZbJmZujQ06CN+fw2cstASGCRJ9nJ75tZKIbw4toSwHhDjuuITc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763543633; c=relaxed/simple; bh=SwAf6Q7/J6cwntk2+IGC5jzf5hBghbZ1t807N2gYSMQ=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type; b=XXgMzl3uMEEYHX5OuMFkC+uExZsjgtWFlqmVhlK0020tDwZqjeAASWG1kHfnY4uC4vB+vvf+jUE1bGzwjForTzItDfk2e1iEO0yfHqxnhGtwLaYJWjtnbr8ET8gwXvzITw5uHjKPasrd7Lp+Zaxc2dcn3rsPPASAwEl03jBycWs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=YORGXyt9; arc=none smtp.client-ip=185.171.202.116 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="YORGXyt9" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-04.galae.net (Postfix) with ESMTPS id 9C89CC11185; Wed, 19 Nov 2025 09:13:20 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id C6C9460720; Wed, 19 Nov 2025 09:13:42 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 3BD8810371970; Wed, 19 Nov 2025 10:13:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1763543622; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=vMMrY05Eqt0VUIufdiGTc8WpNMw7bbAM4JjsWqLutZI=; b=YORGXyt9XK/2WQhb33i0122+Dbh14Djvx2VbyxvxdSiZAAaNY0BvxK77iHRxaG3A46clT/ rOD2vms2HCX0wia2ZRT6ft7fW+xbNJcrf1WDYvKcEr4bXQhMK0kF3B4zJdpyPuP1nDgmxZ UusgFtSAD4KOFZrUcHKpqmTPRmkKawMkjyKi1d2aSlBaWNKtuZjDqTGxH92qr8xXMszIVr I9+afPllRCFn8KXtfzWThSOVRzZpQ7Jg9sNWEDfRmCMcBezlWp6fuji1Lv3cOzrXEyLDdi xlinBHr15Tdc/yjVzKXfZ+NHHjTlDniQwBPtXn8NWlT1BHu2t893D5mEma+nig== From: Miquel Raynal To: "Michael Walle" Cc: "Tudor Ambarus" , "Pratyush Yadav" , "Richard Weinberger" , "Vignesh Raghavendra" , "Jonathan Corbet" , "Sean Anderson" , "Thomas Petazzoni" , "Steam Lin" , , , Subject: Re: [PATCH 02/19] mtd: spi-nor: swp: Improve locking user experience In-Reply-To: (Michael Walle's message of "Tue, 18 Nov 2025 10:17:55 +0100") References: <20251114-winbond-v6-18-rc1-spi-nor-swp-v1-0-487bc7129931@bootlin.com> <20251114-winbond-v6-18-rc1-spi-nor-swp-v1-2-487bc7129931@bootlin.com> User-Agent: mu4e 1.12.7; emacs 30.2 Date: Wed, 19 Nov 2025 10:13:36 +0100 Message-ID: <87bjkye667.fsf@bootlin.com> Precedence: bulk X-Mailing-List: linux-doc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Last-TLS-Session-Version: TLSv1.3 On 18/11/2025 at 10:17:55 +01, "Michael Walle" wrote: > On Fri Nov 14, 2025 at 6:53 PM CET, Miquel Raynal wrote: >> In the case of a single block being locked, if the user want to fully >> unlock the device it has two possibilities: >> - either it asks to unlock the entire device, and this works; >> - or it asks to unlock just the blocks that are currently locked, which >> fails. >> >> It fails because the conditions "can_be_top" and "can_be_bottom" are >> true. Indeed, in this case, we unlock everything, to the TB bit does not >> matter. However in the current implementation, use_top would be true (as >> this is the favourite option) and lock_len, which in practice should be >> reduced down to 0, is set to "nor->params->size - (ofs + len)" which is >> a positive number. This is wrong. > > This only happens if you try to unlock the first sector, correct? If > my maths are correct, trying it on the last sector, lock_len should > be 0, i.e in that case "ofs + len =3D=3D size". > > If it's the first sector (or sectors), lock_len will end up with > "size - N * 64k", which is clearly wrong. That's it. Actually I forgot to mention it was happening only with the first sectors, not the last ones, so yes you are correct, it matches my maths and experiments. >> An easy way is to simply add an extra condition. In the unlock() path, >> if we can achieve the results from both sides, it means we unlock >> everything and lock_len must simply be 0. >> >> Signed-off-by: Miquel Raynal >> --- >> For me, this result was clearly unexpected, but I am not sure this >> qualifies as a fix. > > That's definetly a bug, esp. because it will lock an entire > unrelated region. And it seems to go back all the to commit > 3dd8012a8eeb "mtd: spi-nor: add TB (Top/Bottom) protect support"). > >> --- >> drivers/mtd/spi-nor/swp.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/mtd/spi-nor/swp.c b/drivers/mtd/spi-nor/swp.c >> index 9b07f83aeac76dce2109f90dfa1534c9bd93330d..9bc5a356444665ad8824e9e1= 2d679fd551b3e67d 100644 >> --- a/drivers/mtd/spi-nor/swp.c >> +++ b/drivers/mtd/spi-nor/swp.c >> @@ -281,7 +281,9 @@ static int spi_nor_sr_unlock(struct spi_nor *nor, lo= ff_t ofs, u64 len) >> use_top =3D can_be_top; >>=20=20 >> /* lock_len: length of region that should remain locked */ >> - if (use_top) >> + if (can_be_top && can_be_bottom) >> + lock_len =3D 0; > > Could you please add a comment stating that if both are true, it > means that both adjacent regions are unlocked and thus the entire > flash will be unlocked. Ofc. Thanks, Miqu=C3=A8l From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9BB4ACF258C for ; Wed, 19 Nov 2025 09:13:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=6IWMasulZVu/ewV6vP16CeUq44vdinpJLN7qhxcPj1s=; b=xxq2UL73ukk+09 O5al5rW5A79HwWOY6e7xgKFtXUpf59NEz75BlxuRZT/aydKfXlCCgo0tIkUrS7MEVWntEynQSYTpb AiIl4q5lMtqWGnHW2HRy4PbBZ4Gs3tDfLkrD0AUcc3NHuvXP22O6WMOA69LrMVgzvZOBaArQlUQ0L E+MZamNjnmvZWGYZOydADGK2tSC6OuWBwCmjN6uGCYnur0dFi8h/BkKRAjcVMp8/MDtX9vQlpyN+E VzYGz7SOGu+LdKcYaB3+Gdsp0VB61cl/n+tbOr4Rt4xIjSGnhIFXtT+1EWvFmgRHUGB8WQIP2Acpb Le3Kkw1jVBJflPSFo60Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vLeG8-00000002qXi-1vdv; Wed, 19 Nov 2025 09:13:52 +0000 Received: from smtpout-02.galae.net ([185.246.84.56]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vLeG3-00000002qX4-3UTP for linux-mtd@lists.infradead.org; Wed, 19 Nov 2025 09:13:49 +0000 Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 042751A1BCC; Wed, 19 Nov 2025 09:13:43 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id C6C9460720; Wed, 19 Nov 2025 09:13:42 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 3BD8810371970; Wed, 19 Nov 2025 10:13:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1763543622; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=vMMrY05Eqt0VUIufdiGTc8WpNMw7bbAM4JjsWqLutZI=; b=YORGXyt9XK/2WQhb33i0122+Dbh14Djvx2VbyxvxdSiZAAaNY0BvxK77iHRxaG3A46clT/ rOD2vms2HCX0wia2ZRT6ft7fW+xbNJcrf1WDYvKcEr4bXQhMK0kF3B4zJdpyPuP1nDgmxZ UusgFtSAD4KOFZrUcHKpqmTPRmkKawMkjyKi1d2aSlBaWNKtuZjDqTGxH92qr8xXMszIVr I9+afPllRCFn8KXtfzWThSOVRzZpQ7Jg9sNWEDfRmCMcBezlWp6fuji1Lv3cOzrXEyLDdi xlinBHr15Tdc/yjVzKXfZ+NHHjTlDniQwBPtXn8NWlT1BHu2t893D5mEma+nig== From: Miquel Raynal To: "Michael Walle" Cc: "Tudor Ambarus" , "Pratyush Yadav" , "Richard Weinberger" , "Vignesh Raghavendra" , "Jonathan Corbet" , "Sean Anderson" , "Thomas Petazzoni" , "Steam Lin" , , , Subject: Re: [PATCH 02/19] mtd: spi-nor: swp: Improve locking user experience In-Reply-To: (Michael Walle's message of "Tue, 18 Nov 2025 10:17:55 +0100") References: <20251114-winbond-v6-18-rc1-spi-nor-swp-v1-0-487bc7129931@bootlin.com> <20251114-winbond-v6-18-rc1-spi-nor-swp-v1-2-487bc7129931@bootlin.com> User-Agent: mu4e 1.12.7; emacs 30.2 Date: Wed, 19 Nov 2025 10:13:36 +0100 Message-ID: <87bjkye667.fsf@bootlin.com> MIME-Version: 1.0 X-Last-TLS-Session-Version: TLSv1.3 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251119_011348_015335_B6E4834B X-CRM114-Status: GOOD ( 26.29 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org T24gMTgvMTEvMjAyNSBhdCAxMDoxNzo1NSArMDEsICJNaWNoYWVsIFdhbGxlIiA8bXdhbGxlQGtl cm5lbC5vcmc+IHdyb3RlOgoKPiBPbiBGcmkgTm92IDE0LCAyMDI1IGF0IDY6NTMgUE0gQ0VULCBN aXF1ZWwgUmF5bmFsIHdyb3RlOgo+PiBJbiB0aGUgY2FzZSBvZiBhIHNpbmdsZSBibG9jayBiZWlu ZyBsb2NrZWQsIGlmIHRoZSB1c2VyIHdhbnQgdG8gZnVsbHkKPj4gdW5sb2NrIHRoZSBkZXZpY2Ug aXQgaGFzIHR3byBwb3NzaWJpbGl0aWVzOgo+PiAtIGVpdGhlciBpdCBhc2tzIHRvIHVubG9jayB0 aGUgZW50aXJlIGRldmljZSwgYW5kIHRoaXMgd29ya3M7Cj4+IC0gb3IgaXQgYXNrcyB0byB1bmxv Y2sganVzdCB0aGUgYmxvY2tzIHRoYXQgYXJlIGN1cnJlbnRseSBsb2NrZWQsIHdoaWNoCj4+IGZh aWxzLgo+Pgo+PiBJdCBmYWlscyBiZWNhdXNlIHRoZSBjb25kaXRpb25zICJjYW5fYmVfdG9wIiBh bmQgImNhbl9iZV9ib3R0b20iIGFyZQo+PiB0cnVlLiBJbmRlZWQsIGluIHRoaXMgY2FzZSwgd2Ug dW5sb2NrIGV2ZXJ5dGhpbmcsIHRvIHRoZSBUQiBiaXQgZG9lcyBub3QKPj4gbWF0dGVyLiBIb3dl dmVyIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB1c2VfdG9wIHdvdWxkIGJlIHRydWUg KGFzCj4+IHRoaXMgaXMgdGhlIGZhdm91cml0ZSBvcHRpb24pIGFuZCBsb2NrX2xlbiwgd2hpY2gg aW4gcHJhY3RpY2Ugc2hvdWxkIGJlCj4+IHJlZHVjZWQgZG93biB0byAwLCBpcyBzZXQgdG8gIm5v ci0+cGFyYW1zLT5zaXplIC0gKG9mcyArIGxlbikiIHdoaWNoIGlzCj4+IGEgcG9zaXRpdmUgbnVt YmVyLiBUaGlzIGlzIHdyb25nLgo+Cj4gVGhpcyBvbmx5IGhhcHBlbnMgaWYgeW91IHRyeSB0byB1 bmxvY2sgdGhlIGZpcnN0IHNlY3RvciwgY29ycmVjdD8gSWYKPiBteSBtYXRocyBhcmUgY29ycmVj dCwgdHJ5aW5nIGl0IG9uIHRoZSBsYXN0IHNlY3RvciwgbG9ja19sZW4gc2hvdWxkCj4gYmUgMCwg aS5lIGluIHRoYXQgY2FzZSAib2ZzICsgbGVuID09IHNpemUiLgo+Cj4gSWYgaXQncyB0aGUgZmly c3Qgc2VjdG9yIChvciBzZWN0b3JzKSwgbG9ja19sZW4gd2lsbCBlbmQgdXAgd2l0aAo+ICJzaXpl IC0gTiAqIDY0ayIsIHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCgpUaGF0J3MgaXQuIEFjdHVhbGx5 IEkgZm9yZ290IHRvIG1lbnRpb24gaXQgd2FzIGhhcHBlbmluZyBvbmx5IHdpdGggdGhlCmZpcnN0 IHNlY3RvcnMsIG5vdCB0aGUgbGFzdCBvbmVzLCBzbyB5ZXMgeW91IGFyZSBjb3JyZWN0LCBpdCBt YXRjaGVzIG15Cm1hdGhzIGFuZCBleHBlcmltZW50cy4KCj4+IEFuIGVhc3kgd2F5IGlzIHRvIHNp bXBseSBhZGQgYW4gZXh0cmEgY29uZGl0aW9uLiBJbiB0aGUgdW5sb2NrKCkgcGF0aCwKPj4gaWYg d2UgY2FuIGFjaGlldmUgdGhlIHJlc3VsdHMgZnJvbSBib3RoIHNpZGVzLCBpdCBtZWFucyB3ZSB1 bmxvY2sKPj4gZXZlcnl0aGluZyBhbmQgbG9ja19sZW4gbXVzdCBzaW1wbHkgYmUgMC4KPj4KPj4g U2lnbmVkLW9mZi1ieTogTWlxdWVsIFJheW5hbCA8bWlxdWVsLnJheW5hbEBib290bGluLmNvbT4K Pj4gLS0tCj4+IEZvciBtZSwgdGhpcyByZXN1bHQgd2FzIGNsZWFybHkgdW5leHBlY3RlZCwgYnV0 IEkgYW0gbm90IHN1cmUgdGhpcwo+PiBxdWFsaWZpZXMgYXMgYSBmaXguCj4KPiBUaGF0J3MgZGVm aW5ldGx5IGEgYnVnLCBlc3AuIGJlY2F1c2UgaXQgd2lsbCBsb2NrIGFuIGVudGlyZQo+IHVucmVs YXRlZCByZWdpb24uIEFuZCBpdCBzZWVtcyB0byBnbyBiYWNrIGFsbCB0aGUgdG8gY29tbWl0Cj4g M2RkODAxMmE4ZWViICJtdGQ6IHNwaS1ub3I6IGFkZCBUQiAoVG9wL0JvdHRvbSkgcHJvdGVjdCBz dXBwb3J0IikuCj4KPj4gLS0tCj4+ICBkcml2ZXJzL210ZC9zcGktbm9yL3N3cC5jIHwgNCArKyst Cj4+ICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+Cj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9zcGktbm9yL3N3cC5jIGIvZHJpdmVycy9tdGQvc3Bp LW5vci9zd3AuYwo+PiBpbmRleCA5YjA3ZjgzYWVhYzc2ZGNlMjEwOWY5MGRmYTE1MzRjOWJkOTMz MzBkLi45YmM1YTM1NjQ0NDY2NWFkODgyNGU5ZTEyZDY3OWZkNTUxYjNlNjdkIDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL210ZC9zcGktbm9yL3N3cC5jCj4+ICsrKyBiL2RyaXZlcnMvbXRkL3NwaS1u b3Ivc3dwLmMKPj4gQEAgLTI4MSw3ICsyODEsOSBAQCBzdGF0aWMgaW50IHNwaV9ub3Jfc3JfdW5s b2NrKHN0cnVjdCBzcGlfbm9yICpub3IsIGxvZmZfdCBvZnMsIHU2NCBsZW4pCj4+ICAJdXNlX3Rv cCA9IGNhbl9iZV90b3A7Cj4+ICAKPj4gIAkvKiBsb2NrX2xlbjogbGVuZ3RoIG9mIHJlZ2lvbiB0 aGF0IHNob3VsZCByZW1haW4gbG9ja2VkICovCj4+IC0JaWYgKHVzZV90b3ApCj4+ICsJaWYgKGNh bl9iZV90b3AgJiYgY2FuX2JlX2JvdHRvbSkKPj4gKwkJbG9ja19sZW4gPSAwOwo+Cj4gQ291bGQg eW91IHBsZWFzZSBhZGQgYSBjb21tZW50IHN0YXRpbmcgdGhhdCBpZiBib3RoIGFyZSB0cnVlLCBp dAo+IG1lYW5zIHRoYXQgYm90aCBhZGphY2VudCByZWdpb25zIGFyZSB1bmxvY2tlZCBhbmQgdGh1 cyB0aGUgZW50aXJlCj4gZmxhc2ggd2lsbCBiZSB1bmxvY2tlZC4KCk9mYy4KClRoYW5rcywKTWlx dcOobAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K