From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AFED0606A33E for ; Fri, 30 Oct 2026 16:10:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=zFvbrktT; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=RcjTV/4o 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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=XoASzHJ287PXy2x+6jlGU8MUSWA/WhdskEmSNXdalpA=; b=zFvbrktTrrYL2iNGOXoYDCyHv9 0EMoB43MaD2OJG/g52TVHpr9WARjJsS155KPjTAOCpNI1fSUu4QOIVv5aJVWYJLXUd8j8Zq8tXXaI s5y+/O4Pf6RUjOS9aJ2kkYy4fxOCQJqQCrzg4ZTWAr14kBqIG91K7O+A+1grKd4KTEmQHfMdoBOD9 nMYsGma4fw2Lf9vUMtMhllOMLJ591+/brcmrQbFkX+A+/OAHCgZ1z5NrqfCvW/1NHqBcPueFhhGfd 7PpFJ6u2rxC+Ejp2Z6Vo9cMjRY5tibSOIla94JFyxnL33If/Eh2O90wqJ4J/jVZbTZAs7/z6VWwj5 d492uZ9A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xMpBI-0000000C5xi-1XmJ; Fri, 30 Oct 2026 16:10:16 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xMpBF-0000000C5sx-0uXH for linux-mtd@lists.infradead.org; Fri, 30 Oct 2026 16:10:13 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 006A842B89; Fri, 30 Oct 2026 16:10:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 60C8E1F000C1; Fri, 30 Oct 2026 16:10:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793376612; bh=kAiqGPacwqkp7RD0t/j3EiiQ5JgxsosdAwoGl+0dweM=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=RcjTV/4oMe4pBc6xB0mYkpnOSBS30rDBSF7w9Pt40fq6gIHr4zglrd4OTeyNkgH8G QPa37rUgDBshDdKLBItzg3vkQkeMSDQ598L3D743yUtza3ZeEsxxmbAb8sSKLP/nlC oH/R9VXhkzyMLGHF+FDoLWvlhQp7rFg5At1cjmD2ZIpEHG2OviCuR/hEt8KYXM2cyI 6tWddnFVBOY1pBp7p/V/htIwFZuDMps9Tb/1XKESVb0LSfNFiF1uBhIlRro6iLAOS6 extA0sPCMF5/DmOQT4y1aM0nN71pXea8jo8jFn0y3ra/S1xiTgdzjoqURXlnBG/AcZ 0j/afep/4oekg== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 28/34] ubifs: don't set SB_RDONLY after errors To: "Christian Brauner" , "Jan Kara" Cc: "Al Viro" , linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-efi@vger.kernel.org, linux-mtd@lists.infradead.org, dsterba@suse.cz, tytso@mit.edu, "Mark Fasheh" , "Joel Becker" , "Joseph Qi" In-Reply-To: <20261029-work-fs-sb_rdonly-v2-28-2f44f64f0b66@kernel.org> References: <20261029-work-fs-sb_rdonly-v2-0-2f44f64f0b66@kernel.org> <20261029-work-fs-sb_rdonly-v2-28-2f44f64f0b66@kernel.org> Date: Fri, 30 Oct 2026 16:10:12 +0000 X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" X-Spam-Status: No, score=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIHViaWZzOiB3cml0ZWJh Y2sgYW5kIHViaWZzX3JlbW91bnRfcm8oKSBydW4gaW5jb25zaXN0ZW50bHkgYWZ0ZXIgcm9fZXJy b3IKLSBbTWVkaXVtXSB1YmlmczogdW5ndWFyZGVkIGFzc2VydCBpbiB1Ymlmc19yZWNvbmZpZ3Vy ZSgpIHdoZW4gcmVtb3VudGluZyBhZnRlciByb19lcnJvcgotIFtNZWRpdW1dIHViaWZzOiBzZXR0 aW5nIFNCX1JET05MWSBiZWZvcmUgU0JfQk9STiBpbiB1Ymlmc19yb19tb2RlKCkgZGVzeW5jcyBy byBzdGF0ZQotLQoKY29tbWl0IDMxNDA0ODFiZGRmY2ZhMTBjZDRiM2JkZTI1ZDVhODkxMzI2NmMx ZTMKQXV0aG9yOiBDaHJpc3RpYW4gQnJhdW5lciA8YnJhdW5lckBrZXJuZWwub3JnPgoKdWJpZnM6 IGRvbid0IHNldCBTQl9SRE9OTFkgYWZ0ZXIgZXJyb3JzCgpUaGlzIGNvbW1pdCBzdG9wcyBzZXR0 aW5nIFNCX1JET05MWSBpbiB1Ymlmc19yb19tb2RlKCkgb25jZSBTQl9CT1JOIGlzIHNldCBvbgp0 aGUgc3VwZXJibG9jaywgY2FsbGluZyBzYl9zZXRfZW1lcmdlbmN5X3JvKCkgaW5zdGVhZC4gSXQg YWxzbyBhbGxvd3MKcmVhZC1vbmx5IHJlbW91bnRzIHRvIHByb2NlZWQgdGhyb3VnaCB1Ymlmc19y ZW1vdW50X3JvKCkgYWZ0ZXIgYW4gZXJyb3IgYW5kCmNoZWNrcyBjLT5yb19lcnJvciBpbiB0aGUg eGF0dHIgc2V0dGVycy4KCj4gZGlmZiAtLWdpdCBhL2ZzL3ViaWZzL2lvLmMgYi9mcy91Ymlmcy9p by5jCj4gaW5kZXggNmM2ZDY4MjQyNzc5My4uN2E1OWFhMWVhNWNlOSAxMDA2NDQKPiAtLS0gYS9m cy91Ymlmcy9pby5jCj4gKysrIGIvZnMvdWJpZnMvaW8uYwo+IEBAIC03Miw3ICs3MiwxNCBAQCB2 b2lkIHViaWZzX3JvX21vZGUoc3RydWN0IHViaWZzX2luZm8gKmMsIGludCBlcnIpCj4gIAlpZiAo IWMtPnJvX2Vycm9yKSB7Cj4gIAkJYy0+cm9fZXJyb3IgPSAxOwo+ICAJCWMtPm5vX2Noa19kYXRh X2NyYyA9IDA7Cj4gLQkJYy0+dmZzX3NiLT5zX2ZsYWdzIHw9IFNCX1JET05MWTsKPiArCQkvKgo+ ICsJCSAqIEJlZm9yZSBTQl9CT1JOIHRoZSBtb3VudGVyIGhvbGRzIHNfdW1vdW50LCBsYXRlciBz ZWUKPiArCQkgKiBzYl9zZXRfZW1lcmdlbmN5X3JvKCkuCj4gKwkJICovCj4gKwkJaWYgKCEoYy0+ dmZzX3NiLT5zX2ZsYWdzICYgU0JfQk9STikpCj4gKwkJCWMtPnZmc19zYi0+c19mbGFncyB8PSBT Ql9SRE9OTFk7Cj4gKwkJZWxzZQo+ICsJCQlzYl9zZXRfZW1lcmdlbmN5X3JvKGMtPnZmc19zYik7 CgpbU2V2ZXJpdHk6IE1lZGl1bV0KQ2FuIHNldHRpbmcgU0JfUkRPTkxZIGluc3RlYWQgb2YgY2Fs bGluZyBzYl9zZXRfZW1lcmdlbmN5X3JvKCkgYmVmb3JlIFNCX0JPUk4KaXMgc2V0IHJhY2Ugb24g c2ItPnNfZmxhZ3MgYW5kIGxlYXZlIGMtPnJvX21vdW50IGFuZCBTQl9TVEFURV9FTUVSR0VOQ1lf Uk8gb3V0Cm9mIHN5bmMgd2l0aCBzYi0+c19mbGFncz8KCkluIG1vdW50X3ViaWZzKCksIGMtPnJv X21vdW50IGlzIGxhdGNoZWQgb25jZSBhdCBlbnRyeSBhbmQgdGhlIGJhY2tncm91bmQKdGhyZWFk IGMtPmJndCBpcyBzdGFydGVkIGJlZm9yZSB2ZnNfZ2V0X3RyZWUoKSBzZXRzIFNCX0JPUk46Cgpm cy91Ymlmcy9zdXBlci5jOm1vdW50X3ViaWZzKCkgewoJYy0+cm9fbW91bnQgPSAhIXNiX3Jkb25s eShjLT52ZnNfc2IpOwoJLi4uCglpZiAoIWMtPnJvX21vdW50KSB7CgkJLyogQ3JlYXRlIGJhY2tn cm91bmQgdGhyZWFkICovCgkJYy0+Ymd0ID0ga3RocmVhZF9ydW4odWJpZnNfYmdfdGhyZWFkLCBj LCAiJXMiLCBjLT5iZ3RfbmFtZSk7Cn0KCkJlZm9yZSB2ZnNfZ2V0X3RyZWUoKSBzZXRzIFNCX0JP Uk4sIHViaWZzX3JvX21vZGUoKSBjYW4gYmUgY2FsbGVkIHdpdGhvdXQKZmFpbGluZyB0aGUgbW91 bnQgaWYgYW4gYXNzZXJ0aW9uIGZhaWxzIHVuZGVyIHRoZSBkZWZhdWx0IEFTU0FDVF9STyBhY3Rp b24gaW4KdWJpZnNfYXNzZXJ0X2ZhaWxlZCgpIGR1cmluZyBtb3VudF91YmlmcygpIG9yIHViaWZz X2lnZXQoc2IsIFVCSUZTX1JPT1RfSU5PKSwKb3IgaWYgdWJpZnNfYmdfdGhyZWFkKCkgd2FrZXMg dXAgYWZ0ZXIgdWJpZnNfZmlsbF9zdXBlcigpIHVubG9ja3MKYy0+dW1vdW50X211dGV4IGFuZCBo aXRzIGFuIGVycm9yIGluIHViaWZzX2JnX3didWZzX3N5bmMoKSBvciBydW5fYmdfY29tbWl0KCku CgpJZiBjLT5iZ3QgY2FsbHMgdWJpZnNfcm9fbW9kZSgpIGJlZm9yZSBTQl9CT1JOIGlzIHNldCwg bW9kaWZ5aW5nCmMtPnZmc19zYi0+c19mbGFncyB8PSBTQl9SRE9OTFkgaGFwcGVucyB3aXRob3V0 IGhvbGRpbmcgc191bW91bnQgd2hpbGUgdGhlCm1vdW50ZXIgdGhyZWFkIGlzIG1vZGlmeWluZyBz Yi0+c19mbGFncyBpbiB2ZnNfZ2V0X3RyZWUoKS4KCkluIGFkZGl0aW9uLCB0aGUgbW91bnQgZmlu aXNoZXMgd2l0aCBTQl9SRE9OTFkgc2V0IG9uIHNiLT5zX2ZsYWdzLApjLT5yb19lcnJvciA9PSAx LCBjLT5yb19tb3VudCA9PSAwLCBhbmQgU0JfU1RBVEVfRU1FUkdFTkNZX1JPIGNsZWFyOgoKZnMv dWJpZnMvc3VwZXIuYzp1Ymlmc19yZWNvbmZpZ3VyZSgpIHsKCWlmIChjLT5yb19tb3VudCAmJiAh KGZjLT5zYl9mbGFncyAmIFNCX1JET05MWSkpIHsKCQlpZiAoYy0+cm9fZXJyb3IpIHsKCQkJdWJp ZnNfbXNnKGMsICJjYW5ub3QgcmUtbW91bnQgUi9XIGR1ZSB0byBwcmlvciBlcnJvcnMiKTsKCQkJ cmV0dXJuIC1FUk9GUzsKCQl9CgkJLi4uCgl9IGVsc2UgaWYgKCFjLT5yb19tb3VudCAmJiAoZmMt PnNiX2ZsYWdzICYgU0JfUkRPTkxZKSkgewoJCS8qIEFmdGVyIGFuIGVycm9yIHViaWZzX3JlbW91 bnRfcm8oKSBjYW4ndCB3cml0ZSBidXQgc3RpbGwgd29ya3MuICovCgkJdWJpZnNfcmVtb3VudF9y byhjKTsKCX0KfQoKQmVjYXVzZSBzYl9lbWVyZ2VuY3lfcm8oc2IpIGlzIGZhbHNlIGFuZCBjLT5y b19tb3VudCBpcyAwLCBhIHN1YnNlcXVlbnQKcmVtb3VudCB0byByZWFkLXdyaXRlIHBhc3NlcyBi b3RoIHJlY29uZmlndXJlX3N1cGVyKCkgYW5kIHViaWZzX3JlY29uZmlndXJlKCkKYW5kIGNsZWFy cyBTQl9SRE9OTFksIHdoaWxlIGEgcmVtb3VudCB0byByZWFkLW9ubHkgc2VlcyBzYl9yZG9ubHko c2IpIGFzIHRydWUKaW4gcmVjb25maWd1cmVfc3VwZXIoKSBhbmQgc2tpcHMgc2JfcHJlcGFyZV9y ZW1vdW50X3JlYWRvbmx5KCkgYW5kCnNiX3N0YXJ0X3JvX3N0YXRlX2NoYW5nZSgpIGJlZm9yZSBj YWxsaW5nIHViaWZzX3JlbW91bnRfcm8oKS4KClNob3VsZCB1Ymlmc19yb19tb2RlKCkgY2FsbCBz Yl9zZXRfZW1lcmdlbmN5X3JvKGMtPnZmc19zYikgdW5jb25kaXRpb25hbGx5PwoKWyAuLi4gXQoK PiBkaWZmIC0tZ2l0IGEvZnMvdWJpZnMvc3VwZXIuYyBiL2ZzL3ViaWZzL3N1cGVyLmMKPiBpbmRl eCAzODk3Mjc4NjgxN2U3Li5lZjM5ZGE0ZTc4MGI3IDEwMDY0NAo+IC0tLSBhL2ZzL3ViaWZzL3N1 cGVyLmMKPiArKysgYi9mcy91Ymlmcy9zdXBlci5jCj4gQEAgLTE5NzcsMTAgKzE5NzcsNyBAQCBz dGF0aWMgaW50IHViaWZzX3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYykKPiAgCQlp ZiAoZXJyKQo+ICAJCQlyZXR1cm4gZXJyOwo+ICAJfSBlbHNlIGlmICghYy0+cm9fbW91bnQgJiYg KGZjLT5zYl9mbGFncyAmIFNCX1JET05MWSkpIHsKPiAtCQlpZiAoYy0+cm9fZXJyb3IpIHsKPiAt CQkJdWJpZnNfbXNnKGMsICJjYW5ub3QgcmUtbW91bnQgUi9PIGR1ZSB0byBwcmlvciBlcnJvcnMi KTsKPiAtCQkJcmV0dXJuIC1FUk9GUzsKPiAtCQl9Cj4gKwkJLyogQWZ0ZXIgYW4gZXJyb3IgdWJp ZnNfcmVtb3VudF9ybygpIGNhbid0IHdyaXRlIGJ1dCBzdGlsbCB3b3Jrcy4gKi8KCltTZXZlcml0 eTogSGlnaF0KRG9lcyBhbGxvd2luZyB1Ymlmc19yZW1vdW50X3JvKCkgdG8gcnVuIGFmdGVyIGMt PnJvX2Vycm9yIGlzIHNldCBjYXVzZSBhIE5VTEwKcG9pbnRlciBkZXJlZmVyZW5jZSBvbiBjLT53 cml0ZV9yZXNlcnZlX2J1ZiBvciB0cmlnZ2VyIGFzc2VydGlvbnMgaW4KcmVzZXJ2ZV9zcGFjZSgp IGFuZCB1Ymlmc193YnVmX3N5bmNfbm9sb2NrKCk/CgpQcmV2aW91c2x5LCB1Ymlmc19yb19tb2Rl KCkgc2V0IFNCX1JET05MWSBvbiBzYi0+c19mbGFncyAoY2F1c2luZwpzeW5jX2ZpbGVzeXN0ZW0o KSB0byByZXR1cm4gZWFybHkgdmlhIHNiX3Jkb25seShzYikpLCBhbmQgdWJpZnNfcmVjb25maWd1 cmUoKQpyZWZ1c2VkIHRvIGNhbGwgdWJpZnNfcmVtb3VudF9ybyhjKSB3aGVuIGMtPnJvX2Vycm9y IHdhcyBzZXQuCgpXaXRoIFNCX1JET05MWSBubyBsb25nZXIgc2V0IG9uIGVycm9yLCB3cml0ZWJh Y2sgc3RpbGwgcnVucwp1Ymlmc193cml0ZXBhZ2VzKCkgLT4gdWJpZnNfd3JpdGVwYWdlKCkuIFdo ZW4gYSBkaXJ0eSBmb2xpbyBleHRlbmRzIHBhc3QKdWktPnN5bmNlZF9pX3NpemUsIHViaWZzX3dy aXRlcGFnZSgpIGNhbGxzIHViaWZzX3dyaXRlX2lub2RlKCk6Cgpmcy91Ymlmcy9maWxlLmM6dWJp ZnNfd3JpdGVwYWdlKCkgewoJCWlmIChmb2xpb19wb3MoZm9saW8pICsgbGVuID4gc3luY2VkX2lf c2l6ZSkgewoJCQllcnIgPSBpbm9kZS0+aV9zYi0+c19vcC0+d3JpdGVfaW5vZGUoaW5vZGUsIE5V TEwpOwoJCQlpZiAoZXJyKQoJCQkJZ290byBvdXRfcmVkaXJ0eTsKCQl9CgkJcmV0dXJuIGRvX3dy aXRlcGFnZShmb2xpbywgbGVuKTsKfQoKSW4gdWJpZnNfd3JpdGVfaW5vZGUoKSwgdWJpZnNfam5s X3dyaXRlX2lub2RlKCkgZmFpbHMgd2l0aCAtRVJPRlMgd2hlbgpjLT5yb19lcnJvciBpcyBzZXQg d2l0aG91dCB1cGRhdGluZyB1aS0+c3luY2VkX2lfc2l6ZSwgYnV0IHViaWZzX3dyaXRlX2lub2Rl KCkKc3RpbGwgY2xlYXJzIHVpLT5kaXJ0eSA9IDA6Cgpmcy91Ymlmcy9zdXBlci5jOnViaWZzX3dy aXRlX2lub2RlKCkgewoJaWYgKGlub2RlLT5pX25saW5rKSB7CgkJZXJyID0gdWJpZnNfam5sX3dy aXRlX2lub2RlKGMsIGlub2RlKTsKCQlpZiAoZXJyKQoJCQl1Ymlmc19lcnIoYywgImNhbid0IHdy aXRlIGlub2RlICVsbHUsIGVycm9yICVkIiwKCQkJCSAgaW5vZGUtPmlfaW5vLCBlcnIpOwoJCWVs c2UKCQkJZXJyID0gZGJnX2NoZWNrX2lub2RlX3NpemUoYywgaW5vZGUsIHVpLT51aV9zaXplKTsK CX0KCgl1aS0+ZGlydHkgPSAwOwoJbXV0ZXhfdW5sb2NrKCZ1aS0+dWlfbXV0ZXgpOwoJdWJpZnNf cmVsZWFzZV9kaXJ0eV9pbm9kZV9idWRnZXQoYywgdWkpOwoJcmV0dXJuIGVycjsKfQoKdWJpZnNf d3JpdGVwYWdlKCkgdGhlbiBqdW1wcyB0byBvdXRfcmVkaXJ0eSBhbmQgY2FsbHMKZm9saW9fcmVk aXJ0eV9mb3Jfd3JpdGVwYWdlKCksIHdoaWNoIHJlLW1hcmtzIHRoZSBmb2xpbyBQQUdFQ0FDSEVf VEFHX0RJUlRZCmFuZCBtYXJrcyB0aGUgaW5vZGUgSV9ESVJUWV9QQUdFUyB3aXRob3V0IGNhbGxp bmcgdWJpZnNfZGlydHlfaW5vZGUoKSwgbGVhdmluZwp1aS0+ZGlydHkgPT0gMCB3aGlsZSByZXF1 ZXVlX2lub2RlKCkgcHV0cyB0aGUgaW5vZGUgYmFjayBvbnRvIHdiLT5iX2RpcnR5LgoKSWYgc3lu Y19pbm9kZXNfc2IoKSBkdXJpbmcgdWJpZnNfcmVjb25maWd1cmUoKSBpcyB0aGUgZmlyc3Qgd3Jp dGViYWNrIHBhc3MgdG8KaGl0IGMtPnJvX2Vycm9yIG9uIHRoYXQgaW5vZGUgKGZvciBleGFtcGxl LCBpZiB3cml0ZWJhY2tfaW5vZGVzX3NiKCkgc3RvcHBlZAplYXJsaWVyIGFmdGVyIGV4aGF1c3Rp bmcgd29yay0+bnJfcGFnZXMgb3IgaXRzIHRpbWUgc2xpY2UgaW4Kd3JpdGViYWNrX3NiX2lub2Rl cygpLCBvciBza2lwcGVkIHRoZSBpbm9kZSB3aGlsZSBJX1NZTkMgd2FzIHNldCksCnN5bmNfZmls ZXN5c3RlbSgpIGZpbmlzaGVzIHdpdGggdGhlIHJlZGlydGllZCBmb2xpbyBzdGlsbCBvbiB3Yi0+ Yl9kaXJ0eSBhbmQKdWktPmRpcnR5ID09IDAuCgp1Ymlmc19yZWNvbmZpZ3VyZSgpIGlnbm9yZXMg dGhlIHJldHVybiB2YWx1ZSBvZiBzeW5jX2ZpbGVzeXN0ZW0oKSBhbmQgY2FsbHMKdWJpZnNfcmVt b3VudF9ybygpLCB3aGljaCBmcmVlcyBjLT53cml0ZV9yZXNlcnZlX2J1ZiBhbmQgc2V0cyBjLT5y b19tb3VudCA9IDE6Cgpmcy91Ymlmcy9zdXBlci5jOnViaWZzX3JlbW91bnRfcm8oKSB7CglrZnJl ZShjLT53cml0ZV9yZXNlcnZlX2J1Zik7CgljLT53cml0ZV9yZXNlcnZlX2J1ZiA9IE5VTEw7Cgl2 ZnJlZShjLT5pbGViX2J1Zik7CgljLT5pbGViX2J1ZiA9IE5VTEw7Cgl1Ymlmc19scHRfZnJlZShj LCAxKTsKCWMtPnJvX21vdW50ID0gMTsKfQoKV2hlbiBiYWNrZ3JvdW5kIHdyaXRlYmFjayAod2Jf d29ya2ZuKSBzdWJzZXF1ZW50bHkgZmx1c2hlcyB3Yi0+Yl9kaXJ0eSwKdWJpZnNfd3JpdGVwYWdl KCkgY2FsbHMgdWJpZnNfd3JpdGVfaW5vZGUoKSBhZ2Fpbi4gQmVjYXVzZSB1aS0+ZGlydHkgaXMg MCwKdWJpZnNfd3JpdGVfaW5vZGUoKSByZXR1cm5zIDAgaW1tZWRpYXRlbHksIGFuZCB1Ymlmc193 cml0ZXBhZ2UoKSBwcm9jZWVkcyBpbnRvCmRvX3dyaXRlcGFnZSgpIC0+IHViaWZzX2pubF93cml0 ZV9kYXRhKCk6Cgpmcy91Ymlmcy9qb3VybmFsLmM6dWJpZnNfam5sX3dyaXRlX2RhdGEoKSB7Cglk YXRhID0ga21hbGxvYyhkbGVuICsgYXV0aF9sZW4sIEdGUF9OT0ZTIHwgX19HRlBfTk9XQVJOKTsK CWlmICghZGF0YSkgewoJCWFsbG9jYXRlZCA9IDA7CgkJbXV0ZXhfbG9jaygmYy0+d3JpdGVfcmVz ZXJ2ZV9tdXRleCk7CgkJZGF0YSA9IGMtPndyaXRlX3Jlc2VydmVfYnVmOwoJfQoKCWRhdGEtPmNo Lm5vZGVfdHlwZSA9IFVCSUZTX0RBVEFfTk9ERTsKfQoKSWYga21hbGxvYygpIGZhaWxzIHVuZGVy IG1lbW9yeSBwcmVzc3VyZSwgZGF0YSA9IGMtPndyaXRlX3Jlc2VydmVfYnVmIGlzIE5VTEwKYW5k IGRhdGEtPmNoLm5vZGVfdHlwZSBkZXJlZmVyZW5jZXMgTlVMTC4gRXZlbiBpZiBrbWFsbG9jKCkg c3VjY2VlZHMsCm1ha2VfcmVzZXJ2YXRpb24oKSAtPiByZXNlcnZlX3NwYWNlKCkgaGl0cwp1Ymlm c19hc3NlcnQoYywgIWMtPnJvX21lZGlhICYmICFjLT5yb19tb3VudCkgYmVmb3JlIGNoZWNraW5n IGMtPnJvX2Vycm9yOgoKZnMvdWJpZnMvam91cm5hbC5jOnJlc2VydmVfc3BhY2UoKSB7Cgl1Ymlm c19hc3NlcnQoYywgIWMtPnJvX21lZGlhICYmICFjLT5yb19tb3VudCk7CglzcXVlZXplID0gKGpo ZWFkID09IEJBU0VIRCk7CmFnYWluOgoJbXV0ZXhfbG9ja19uZXN0ZWQoJndidWYtPmlvX211dGV4 LCB3YnVmLT5qaGVhZCk7CgoJaWYgKGMtPnJvX2Vycm9yKSB7CgkJZXJyID0gLUVST0ZTOwoJCWdv dG8gb3V0X3VubG9jazsKCX0KfQoKRnVydGhlcm1vcmUsIHVubGlrZSB1Ymlmc19wdXRfc3VwZXIo KSAod2hpY2ggZ3VhcmRzIHViaWZzX3didWZfc3luYygpIHdpdGgKaWYgKCFjLT5yb19lcnJvcikp LCB1Ymlmc19yZW1vdW50X3JvKCkgYW5kIHViaWZzX3N5bmNfZnMoKSBjYWxsCnViaWZzX3didWZf c3luYygpIC0+IHViaWZzX3didWZfc3luY19ub2xvY2soKSwgd2hpY2ggZXZhbHVhdGVzIHdidWYg Z2VvbWV0cnkKYXNzZXJ0aW9ucyBiZWZvcmUgY2hlY2tpbmcgYy0+cm9fZXJyb3I6Cgpmcy91Ymlm cy9pby5jOnViaWZzX3didWZfc3luY19ub2xvY2soKSB7Cgl1Ymlmc19hc3NlcnQoYywgISh3YnVm LT5hdmFpbCAmIDcpKTsKCXViaWZzX2Fzc2VydChjLCB3YnVmLT5vZmZzICsgd2J1Zi0+c2l6ZSA8 PSBjLT5sZWJfc2l6ZSk7Cgl1Ymlmc19hc3NlcnQoYywgd2J1Zi0+c2l6ZSA+PSBjLT5taW5faW9f c2l6ZSk7Cgl1Ymlmc19hc3NlcnQoYywgd2J1Zi0+c2l6ZSA8PSBjLT5tYXhfd3JpdGVfc2l6ZSk7 Cgl1Ymlmc19hc3NlcnQoYywgd2J1Zi0+c2l6ZSAlIGMtPm1pbl9pb19zaXplID09IDApOwoJdWJp ZnNfYXNzZXJ0KGMsICFjLT5yb19tZWRpYSAmJiAhYy0+cm9fbW91bnQpOwoJaWYgKGMtPmxlYl9z aXplIC0gd2J1Zi0+b2ZmcyA+PSBjLT5tYXhfd3JpdGVfc2l6ZSkKCQl1Ymlmc19hc3NlcnQoYywg ISgod2J1Zi0+b2ZmcyArIHdidWYtPnNpemUpICUgYy0+bWF4X3dyaXRlX3NpemUpKTsKCglpZiAo Yy0+cm9fZXJyb3IpCgkJcmV0dXJuIC1FUk9GUzsKfQoKSWYgYy0+cm9fZXJyb3Igd2FzIHRyaWdn ZXJlZCBieSBhIG1pZC13cml0ZSBmYWlsdXJlIGluCnViaWZzX3didWZfd3JpdGVfbm9sb2NrKCkg YWZ0ZXIgYWR2YW5jaW5nIHdidWYtPm9mZnMgd2hpbGUgd2J1Zi0+dXNlZCA+IDAgYW5kCmJlZm9y ZSB1cGRhdGluZyB3YnVmLT5zaXplLCB0aG9zZSBhc3NlcnRpb25zIGNhbiBmaXJlIGR1cmluZwp1 Ymlmc19yZW1vdW50X3JvKCkgb3IgdWJpZnNfc3luY19mcygpLgoKPiAgCQl1Ymlmc19yZW1vdW50 X3JvKGMpOwoKW1NldmVyaXR5OiBNZWRpdW1dCkNhbiByZW1vdW50aW5nIHJlYWQtb25seSBhZnRl ciBhIGdhcmJhZ2UgY29sbGVjdGlvbiBlcnJvciB0cmlnZ2VyIHRoZQpjLT5sc3QudGFrZW5fZW1w dHlfbGVicyA+IDAgYXNzZXJ0aW9uIGF0IHRoZSBlbmQgb2YgdWJpZnNfcmVjb25maWd1cmUoKT8K CkF0IHRoZSBlbmQgb2YgdWJpZnNfcmVjb25maWd1cmUoKSwgdGhlIGNvZGUgY2hlY2tzOgoKZnMv dWJpZnMvc3VwZXIuYzp1Ymlmc19yZWNvbmZpZ3VyZSgpIHsKCWlmICghYy0+bmVlZF9yZWNvdmVy eSkKCQl1Ymlmc19hc3NlcnQoYywgYy0+bHN0LnRha2VuX2VtcHR5X2xlYnMgPiAwKTsKfQoKV2hl biBjLT5sc3QudGFrZW5fZW1wdHlfbGVicyBpcyAxIChob2xkaW5nIG9ubHkgdGhlIHJlc2VydmVk IEdDIExFQgpjLT5nY19sbnVtKSwgdWJpZnNfZ2FyYmFnZV9jb2xsZWN0KCkgLT4gdWJpZnNfZ2Fy YmFnZV9jb2xsZWN0X2xlYigpIC0+Cm1vdmVfbm9kZXMoKSAtPiBzd2l0Y2hfZ2NfaGVhZCgpIGNv bnN1bWVzIGMtPmdjX2xudW0gYW5kIHNldHMgYy0+Z2NfbG51bSA9IC0xLgpPbmNlIHRoZSBmaXJz dCBub2RlIGlzIHdyaXR0ZW4gdG8gdGhlIEdDIHdyaXRlLWJ1ZmZlciwgYnVkX3didWZfY2FsbGJh Y2soKSAtPgp1Ymlmc191cGRhdGVfb25lX2xwKCkgLT4gdWJpZnNfY2hhbmdlX2xwKCkgZGVjcmVt ZW50cyBjLT5sc3QudGFrZW5fZW1wdHlfbGVicwp0byAwLgoKSWYgYW4gZXJyb3IgdGhlbiBvY2N1 cnMgaW4gbW92ZV9ub2RlcygpIG9yIGdjX3N5bmNfd2J1ZnMoKSBiZWZvcmUgYSBuZXcKYy0+Z2Nf bG51bSBpcyByZXRhaW5lZCwgdWJpZnNfZ2FyYmFnZV9jb2xsZWN0KCkgc3dpdGNoZXMgdG8gcmVh ZC1vbmx5IGVycm9yCm1vZGUgd2l0aCBjLT5yb19lcnJvciA9PSAxLCBjLT5nY19sbnVtID09IC0x LCBhbmQKYy0+bHN0LnRha2VuX2VtcHR5X2xlYnMgPT0gMDoKCmZzL3ViaWZzL2djLmM6dWJpZnNf Z2FyYmFnZV9jb2xsZWN0KCkgewpvdXQ6Cgl1Ymlmc19hc3NlcnQoYywgcmV0IDwgMCk7Cgl1Ymlm c19hc3NlcnQoYywgcmV0ICE9IC1FTk9TUEMgJiYgcmV0ICE9IC1FQUdBSU4pOwoJdWJpZnNfd2J1 Zl9zeW5jX25vbG9jayh3YnVmKTsKCXViaWZzX3JvX21vZGUoYywgcmV0KTsKCW11dGV4X3VubG9j aygmd2J1Zi0+aW9fbXV0ZXgpOwoJaWYgKGxwLmxudW0gIT0gLTEpCgkJdWJpZnNfcmV0dXJuX2xl YihjLCBscC5sbnVtKTsKCXJldHVybiByZXQ7Cn0KCk5vdyB0aGF0IHViaWZzX3JlY29uZmlndXJl KCkgbm8gbG9uZ2VyIHJldHVybnMgLUVST0ZTIG9uIGEgcmVhZC1vbmx5IHJlbW91bnQKd2hlbiBj LT5yb19lcnJvciBpcyBzZXQsIHNob3VsZCB0aGUgYXNzZXJ0aW9uIGF0IHRoZSBlbmQgb2YKdWJp ZnNfcmVjb25maWd1cmUoKSBhbHNvIGJlIGd1YXJkZWQgYnkgIWMtPnJvX2Vycm9yLCBzaW1pbGFy IHRvCnViaWZzX3B1dF9zdXBlcigpPwoKLS0gClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8v c2FzaGlrby5kZXYvIy9wYXRjaHNldC8yMDI2MTAyOS13b3JrLWZzLXNiX3Jkb25seS12Mi0wLTJm NDRmNjRmMGI2NkBrZXJuZWwub3JnP3BhcnQ9MjgKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5n IGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1t dGQvCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 107DC606A31C for ; Fri, 30 Oct 2026 16:10:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=RcjTV/4o Received: by kanga.kvack.org (Postfix) id 5F5DF6B05C5; Fri, 30 Oct 2026 12:10:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5832E6B05C6; Fri, 30 Oct 2026 12:10:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 44AEB6B05C7; Fri, 30 Oct 2026 12:10:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 07C886B05C5 for ; Fri, 30 Oct 2026 12:10:15 -0400 (EDT) Received: from smtpin25.hostedemail.com (lb01a-stub [10.200.18.249]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 7151C1606B3 for ; Fri, 30 Oct 2026 16:10:15 +0000 (UTC) X-FDA: 85379779590.25.0539F4C Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf12.hostedemail.com (Postfix) with ESMTP id B3C6D40008 for ; Fri, 30 Oct 2026 16:10:13 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20260515 header.b="RcjTV/4o"; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf12.hostedemail.com: domain of sashiko-bot@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=sashiko-bot@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1793376613; h=from:from:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=kAiqGPacwqkp7RD0t/j3EiiQ5JgxsosdAwoGl+0dweM=; b=IVAlEyQ/7rl8FCL5VYNQW4EmSIEJRnJLdT6SyBpMRBLS1SFfeITZkbrQHOR+JqGzUWcpt9 7Cv78v8uleE5PznEGPBBhxiEsvxr9zjVtK7dgA0K/8U3wWlf+FzVjzOUG+MVeZyC+CWg+T S+ELg67NcE6hCfbPJiQUMzaS8j6rKaA= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20260515 header.b="RcjTV/4o"; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf12.hostedemail.com: domain of sashiko-bot@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=sashiko-bot@kernel.org ARC-Seal: i=1; a=rsa-sha256; d=hostedemail.com; s=arc-20220608; cv=none; t=1793376613; b=YYoie/6lI4wQspOJORScTC5wgIhrpzWgxPKmXcXv6JblJ4R62uwp49TFnrl44iJZoUDR8c CFsxNLtBVIhMlT+wEKe4FhR2kE5qBSCn8YQipXfs2awIs8E7SKFlI+ppb/HgiygKr78i3y MCPIK4mgyT8byXcrH5VRv0OX+L+7Hcg= Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 006A842B89; Fri, 30 Oct 2026 16:10:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 60C8E1F000C1; Fri, 30 Oct 2026 16:10:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793376612; bh=kAiqGPacwqkp7RD0t/j3EiiQ5JgxsosdAwoGl+0dweM=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=RcjTV/4oMe4pBc6xB0mYkpnOSBS30rDBSF7w9Pt40fq6gIHr4zglrd4OTeyNkgH8G QPa37rUgDBshDdKLBItzg3vkQkeMSDQ598L3D743yUtza3ZeEsxxmbAb8sSKLP/nlC oH/R9VXhkzyMLGHF+FDoLWvlhQp7rFg5At1cjmD2ZIpEHG2OviCuR/hEt8KYXM2cyI 6tWddnFVBOY1pBp7p/V/htIwFZuDMps9Tb/1XKESVb0LSfNFiF1uBhIlRro6iLAOS6 extA0sPCMF5/DmOQT4y1aM0nN71pXea8jo8jFn0y3ra/S1xiTgdzjoqURXlnBG/AcZ 0j/afep/4oekg== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v2 28/34] ubifs: don't set SB_RDONLY after errors Reply-To: sashiko-reviews@lists.linux.dev To: "Christian Brauner" , "Jan Kara" Cc: "Al Viro" , linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-efi@vger.kernel.org, linux-mtd@lists.infradead.org, dsterba@suse.cz, tytso@mit.edu, "Mark Fasheh" , "Joel Becker" , "Joseph Qi" In-Reply-To: <20261029-work-fs-sb_rdonly-v2-28-2f44f64f0b66@kernel.org> References: <20261029-work-fs-sb_rdonly-v2-0-2f44f64f0b66@kernel.org> <20261029-work-fs-sb_rdonly-v2-28-2f44f64f0b66@kernel.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Fri, 30 Oct 2026 16:10:12 +0000 X-Rspamd-Queue-Id: B3C6D40008 X-Stat-Signature: h4hx7mj73n86tsxin58d31bwijjkxkup X-Rspamd-Server: rspam04 X-Spam-Status: No, score=-10.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Rspam-User: X-HE-Tag: 1793376613-958505 X-HE-Meta: U2FsdGVkX1+vP1OuYWQbIJDQNs1MP2EvRc+lbZJr15hz8akfr2Ft+2b3/ua+iqE64Yb1KRoCWNPjGWjl2pPIbH6posFZLuVf35RW2l7QohWXOJUlGR1wB+ge2Je4icTktH3W4QNlFbDZykRjtAewoUQKxHibDfOjPR9mea8prJaKjzbUnaqwsKgi2eaeh1GvIoLpgm5nwkB1HKYveNSIDCMcwGrEumGKInChCfKJxtj8eRqyOV6BW+ZfUn1Juay1aOVK/Gcxq5z61Dv3rjJeJfTU6ezsStmCYICMvWINXPRhjD4SEB2wSKfD82lzV4ui7Si36fMd6SxrJhYFxAuvIExCXEUVPWgHGtux/PXd3XS99qq8DDovAonnT/Yw+1Sl5qdfA1ssKdX/oJ/0SAhROEH8Bde7EY/C33PkvRARvbdpQO6v1I5nZetDRfu86f37nantd3QHhfaWNMPxVCRA02xO6/8AuXFxQ8p5ArRsqJ4F+IeVQIgYHvDoyYSIGflAwuThu4WG7ocracACO2HFOhC5T4WA5V1aWBxGUKUfpOJeuaFzFBki5WofkHnyUNgTmT8sFXQxrfUKA99KLM4Ubszuz0w1+BVfSe89ue9wtrsheRE4GnytVPj4QFsYqFc8B+urLb2KJrgLC2zYE8xbTZWBbbFy/MY54miHYf696hKDSfRLWrDfob3s/zoxlqnSP3ysuLpwTCx66nd5ciS61RuKCa/dr9mQ0akp3GUZS/xGqHgjp37t36FWVKYgK+v8iAZrJZxaQ3kUusdVz/1nodZGYrvpiT73Tuq452Xkb8qRxzvrEujnqqA0wWFe48bAdWckPdJ6DLuvt4GDxG87uKb42dIZbSPcoHwXTELZa/QvtrIMahT/ReFC2zz7dF1+GDI2apKoYje6LtLl2urKDrI1PPEm8yGXl4dlduhn5eimVOm13cqF54+s5ImjyI+vyGQetgGr12QSJNW6J7j NGencosB LhaQqB1GuPqoPjLALNudi9tvRdRcqH0wKl0ZMkh/QahRGAWNohhVAa106JuI8KiqfRfUeNMIK00l0tN6IaME49SSEOXVkdrN0LzIqAsaqPBTY1ua1Ri5CvqrwMkv7D/N8VFal6qv+esYZMulcoAxG8Xgfc/+r+Xo1sYUIk229/LHa8Tu/BiQMY7JqWvF6D0yW04T+1haSpAncapgPzVexYOJ0TVxruvErKvXkUe+bOzSaracEIU0qoobYIZW+Ig8RHwLW0awS1uXM4Bq/w2Zq0yt2CrLlLsnAAC1XWPloETZw+q2UfHy24F/K5PbnyBj4qTnfRPQXfXWWlZ8KoFsYhx/+gu0kdrxTfEm/wTu8EQeVQx2FdlIoFpT/VWSFb1n0U4oRFJiyubZZrBhEN4kKtVD+HTSaqd9+QZM9DKxtWlq5I4rbitucUoPt4aP4spqDDZI7pDo+NL2lgRDjacCQpLdCSAb1oEQefR61jNVK6FpUYyueL0/4jdmPeGf8Y6PuVoa+tiq0ppc36KwPNB6sV28QlrwmEmRsViADVT+7vChr70auEFJ2B01zYLrCYGUZ6g8V+6iESVaPOnOAdiBKt/+jvMwV+BM/Lr0zL92AtPRrM9dPxAwkAlvLib5F2bchOWvYqbryQSWg5Wg= Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 X-Archived-By: Thank you for your contribution! Sashiko AI review found 3 potential issue(= s) to consider: - [High] ubifs: writeback and ubifs_remount_ro() run inconsistently after r= o_error - [Medium] ubifs: unguarded assert in ubifs_reconfigure() when remounting a= fter ro_error - [Medium] ubifs: setting SB_RDONLY before SB_BORN in ubifs_ro_mode() desyn= cs ro state -- commit 3140481bddfcfa10cd4b3bde25d5a8913266c1e3 Author: Christian Brauner ubifs: don't set SB_RDONLY after errors This commit stops setting SB_RDONLY in ubifs_ro_mode() once SB_BORN is set = on the superblock, calling sb_set_emergency_ro() instead. It also allows read-only remounts to proceed through ubifs_remount_ro() after an error and checks c->ro_error in the xattr setters. > diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c > index 6c6d682427793..7a59aa1ea5ce9 100644 > --- a/fs/ubifs/io.c > +++ b/fs/ubifs/io.c > @@ -72,7 +72,14 @@ void ubifs_ro_mode(struct ubifs_info *c, int err) > if (!c->ro_error) { > c->ro_error =3D 1; > c->no_chk_data_crc =3D 0; > - c->vfs_sb->s_flags |=3D SB_RDONLY; > + /* > + * Before SB_BORN the mounter holds s_umount, later see > + * sb_set_emergency_ro(). > + */ > + if (!(c->vfs_sb->s_flags & SB_BORN)) > + c->vfs_sb->s_flags |=3D SB_RDONLY; > + else > + sb_set_emergency_ro(c->vfs_sb); [Severity: Medium] Can setting SB_RDONLY instead of calling sb_set_emergency_ro() before SB_BO= RN is set race on sb->s_flags and leave c->ro_mount and SB_STATE_EMERGENCY_RO = out of sync with sb->s_flags? In mount_ubifs(), c->ro_mount is latched once at entry and the background thread c->bgt is started before vfs_get_tree() sets SB_BORN: fs/ubifs/super.c:mount_ubifs() { c->ro_mount =3D !!sb_rdonly(c->vfs_sb); ... if (!c->ro_mount) { /* Create background thread */ c->bgt =3D kthread_run(ubifs_bg_thread, c, "%s", c->bgt_name); } Before vfs_get_tree() sets SB_BORN, ubifs_ro_mode() can be called without failing the mount if an assertion fails under the default ASSACT_RO action = in ubifs_assert_failed() during mount_ubifs() or ubifs_iget(sb, UBIFS_ROOT_INO= ), or if ubifs_bg_thread() wakes up after ubifs_fill_super() unlocks c->umount_mutex and hits an error in ubifs_bg_wbufs_sync() or run_bg_commit= (). If c->bgt calls ubifs_ro_mode() before SB_BORN is set, modifying c->vfs_sb->s_flags |=3D SB_RDONLY happens without holding s_umount while the mounter thread is modifying sb->s_flags in vfs_get_tree(). In addition, the mount finishes with SB_RDONLY set on sb->s_flags, c->ro_error =3D=3D 1, c->ro_mount =3D=3D 0, and SB_STATE_EMERGENCY_RO clear: fs/ubifs/super.c:ubifs_reconfigure() { if (c->ro_mount && !(fc->sb_flags & SB_RDONLY)) { if (c->ro_error) { ubifs_msg(c, "cannot re-mount R/W due to prior errors"); return -EROFS; } ... } else if (!c->ro_mount && (fc->sb_flags & SB_RDONLY)) { /* After an error ubifs_remount_ro() can't write but still works. */ ubifs_remount_ro(c); } } Because sb_emergency_ro(sb) is false and c->ro_mount is 0, a subsequent remount to read-write passes both reconfigure_super() and ubifs_reconfigure= () and clears SB_RDONLY, while a remount to read-only sees sb_rdonly(sb) as tr= ue in reconfigure_super() and skips sb_prepare_remount_readonly() and sb_start_ro_state_change() before calling ubifs_remount_ro(). Should ubifs_ro_mode() call sb_set_emergency_ro(c->vfs_sb) unconditionally? [ ... ] > diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c > index 38972786817e7..ef39da4e780b7 100644 > --- a/fs/ubifs/super.c > +++ b/fs/ubifs/super.c > @@ -1977,10 +1977,7 @@ static int ubifs_reconfigure(struct fs_context *fc) > if (err) > return err; > } else if (!c->ro_mount && (fc->sb_flags & SB_RDONLY)) { > - if (c->ro_error) { > - ubifs_msg(c, "cannot re-mount R/O due to prior errors"); > - return -EROFS; > - } > + /* After an error ubifs_remount_ro() can't write but still works. */ [Severity: High] Does allowing ubifs_remount_ro() to run after c->ro_error is set cause a NU= LL pointer dereference on c->write_reserve_buf or trigger assertions in reserve_space() and ubifs_wbuf_sync_nolock()? Previously, ubifs_ro_mode() set SB_RDONLY on sb->s_flags (causing sync_filesystem() to return early via sb_rdonly(sb)), and ubifs_reconfigure= () refused to call ubifs_remount_ro(c) when c->ro_error was set. With SB_RDONLY no longer set on error, writeback still runs ubifs_writepages() -> ubifs_writepage(). When a dirty folio extends past ui->synced_i_size, ubifs_writepage() calls ubifs_write_inode(): fs/ubifs/file.c:ubifs_writepage() { if (folio_pos(folio) + len > synced_i_size) { err =3D inode->i_sb->s_op->write_inode(inode, NULL); if (err) goto out_redirty; } return do_writepage(folio, len); } In ubifs_write_inode(), ubifs_jnl_write_inode() fails with -EROFS when c->ro_error is set without updating ui->synced_i_size, but ubifs_write_inod= e() still clears ui->dirty =3D 0: fs/ubifs/super.c:ubifs_write_inode() { if (inode->i_nlink) { err =3D ubifs_jnl_write_inode(c, inode); if (err) ubifs_err(c, "can't write inode %llu, error %d", inode->i_ino, err); else err =3D dbg_check_inode_size(c, inode, ui->ui_size); } ui->dirty =3D 0; mutex_unlock(&ui->ui_mutex); ubifs_release_dirty_inode_budget(c, ui); return err; } ubifs_writepage() then jumps to out_redirty and calls folio_redirty_for_writepage(), which re-marks the folio PAGECACHE_TAG_DIRTY and marks the inode I_DIRTY_PAGES without calling ubifs_dirty_inode(), leav= ing ui->dirty =3D=3D 0 while requeue_inode() puts the inode back onto wb->b_dir= ty. If sync_inodes_sb() during ubifs_reconfigure() is the first writeback pass = to hit c->ro_error on that inode (for example, if writeback_inodes_sb() stopped earlier after exhausting work->nr_pages or its time slice in writeback_sb_inodes(), or skipped the inode while I_SYNC was set), sync_filesystem() finishes with the redirtied folio still on wb->b_dirty and ui->dirty =3D=3D 0. ubifs_reconfigure() ignores the return value of sync_filesystem() and calls ubifs_remount_ro(), which frees c->write_reserve_buf and sets c->ro_mount = =3D 1: fs/ubifs/super.c:ubifs_remount_ro() { kfree(c->write_reserve_buf); c->write_reserve_buf =3D NULL; vfree(c->ileb_buf); c->ileb_buf =3D NULL; ubifs_lpt_free(c, 1); c->ro_mount =3D 1; } When background writeback (wb_workfn) subsequently flushes wb->b_dirty, ubifs_writepage() calls ubifs_write_inode() again. Because ui->dirty is 0, ubifs_write_inode() returns 0 immediately, and ubifs_writepage() proceeds i= nto do_writepage() -> ubifs_jnl_write_data(): fs/ubifs/journal.c:ubifs_jnl_write_data() { data =3D kmalloc(dlen + auth_len, GFP_NOFS | __GFP_NOWARN); if (!data) { allocated =3D 0; mutex_lock(&c->write_reserve_mutex); data =3D c->write_reserve_buf; } data->ch.node_type =3D UBIFS_DATA_NODE; } If kmalloc() fails under memory pressure, data =3D c->write_reserve_buf is = NULL and data->ch.node_type dereferences NULL. Even if kmalloc() succeeds, make_reservation() -> reserve_space() hits ubifs_assert(c, !c->ro_media && !c->ro_mount) before checking c->ro_error: fs/ubifs/journal.c:reserve_space() { ubifs_assert(c, !c->ro_media && !c->ro_mount); squeeze =3D (jhead =3D=3D BASEHD); again: mutex_lock_nested(&wbuf->io_mutex, wbuf->jhead); if (c->ro_error) { err =3D -EROFS; goto out_unlock; } } Furthermore, unlike ubifs_put_super() (which guards ubifs_wbuf_sync() with if (!c->ro_error)), ubifs_remount_ro() and ubifs_sync_fs() call ubifs_wbuf_sync() -> ubifs_wbuf_sync_nolock(), which evaluates wbuf geometry assertions before checking c->ro_error: fs/ubifs/io.c:ubifs_wbuf_sync_nolock() { ubifs_assert(c, !(wbuf->avail & 7)); ubifs_assert(c, wbuf->offs + wbuf->size <=3D c->leb_size); ubifs_assert(c, wbuf->size >=3D c->min_io_size); ubifs_assert(c, wbuf->size <=3D c->max_write_size); ubifs_assert(c, wbuf->size % c->min_io_size =3D=3D 0); ubifs_assert(c, !c->ro_media && !c->ro_mount); if (c->leb_size - wbuf->offs >=3D c->max_write_size) ubifs_assert(c, !((wbuf->offs + wbuf->size) % c->max_write_size)); if (c->ro_error) return -EROFS; } If c->ro_error was triggered by a mid-write failure in ubifs_wbuf_write_nolock() after advancing wbuf->offs while wbuf->used > 0 a= nd before updating wbuf->size, those assertions can fire during ubifs_remount_ro() or ubifs_sync_fs(). > ubifs_remount_ro(c); [Severity: Medium] Can remounting read-only after a garbage collection error trigger the c->lst.taken_empty_lebs > 0 assertion at the end of ubifs_reconfigure()? At the end of ubifs_reconfigure(), the code checks: fs/ubifs/super.c:ubifs_reconfigure() { if (!c->need_recovery) ubifs_assert(c, c->lst.taken_empty_lebs > 0); } When c->lst.taken_empty_lebs is 1 (holding only the reserved GC LEB c->gc_lnum), ubifs_garbage_collect() -> ubifs_garbage_collect_leb() -> move_nodes() -> switch_gc_head() consumes c->gc_lnum and sets c->gc_lnum = =3D -1. Once the first node is written to the GC write-buffer, bud_wbuf_callback() = -> ubifs_update_one_lp() -> ubifs_change_lp() decrements c->lst.taken_empty_le= bs to 0. If an error then occurs in move_nodes() or gc_sync_wbufs() before a new c->gc_lnum is retained, ubifs_garbage_collect() switches to read-only error mode with c->ro_error =3D=3D 1, c->gc_lnum =3D=3D -1, and c->lst.taken_empty_lebs =3D=3D 0: fs/ubifs/gc.c:ubifs_garbage_collect() { out: ubifs_assert(c, ret < 0); ubifs_assert(c, ret !=3D -ENOSPC && ret !=3D -EAGAIN); ubifs_wbuf_sync_nolock(wbuf); ubifs_ro_mode(c, ret); mutex_unlock(&wbuf->io_mutex); if (lp.lnum !=3D -1) ubifs_return_leb(c, lp.lnum); return ret; } Now that ubifs_reconfigure() no longer returns -EROFS on a read-only remount when c->ro_error is set, should the assertion at the end of ubifs_reconfigure() also be guarded by !c->ro_error, similar to ubifs_put_super()? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261029-work-fs-sb= _rdonly-v2-0-2f44f64f0b66@kernel.org?part=3D28