[PATCH] fs:jffs2: fix deadlock between GC and inode creation

Lucas Martins Alves <[email protected]> Wed, 29 Jul 2026 11:47:51 +0000
Newsgroups org.infradead.lists.linux-mtd,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
RnJvbTogTHVjYXMgTWFydGlucyBBbHZlcyA8bHVjYXMuYWx2ZXNAbHVtYWwyMS5jb20uYnI+Cgpq
ZmZzMl9kb19uZXdfaW5vZGUoKSBtYXJrZWQgdGhlIG5ld2x5IGFsbG9jYXRlZCBpbm9kZSBjYWNo
ZSBhcwpJTk9fU1RBVEVfUFJFU0VOVCBiZWZvcmUgdGhlIGlub2RlIHdhcyBhY3R1YWxseSBidWls
dC4gQSBjb25jdXJyZW50CmdhcmJhZ2UgY29sbGVjdCBwYXNzIGNvdWxkIHBpY2sgdGhhdCBpbm9k
ZSB1cCBhbmQgY2FsbCBpZ2V0X2xvY2tlZCgpLAp3aGljaCBibG9ja3Mgb24gdGhlIGlub2RlIHN0
aWxsIGxvY2tlZCBieSB0aGUgY3JlYXRpbmcgdGFzay4gVGhhdCB0YXNrCmluIHR1cm4gd2FpdHMg
Zm9yIGFsbG9jX3NlbSwgd2hpY2ggaXMgaGVsZCBieSBHQywgc28gYm90aCBzaWRlcyBkZWFkbG9j
awphbmQgbmVpdGhlciBvcGVyYXRpb24gY2FuIGNvbXBsZXRlLgoKSW50cm9kdWNlIGEgbmV3IElO
T19TVEFURV9DUkVBVElORyBzdGF0ZSBhbmQgdXNlIGl0IGluCmpmZnMyX2RvX25ld19pbm9kZSgp
IGZvciB0aGUgd2hvbGUgd2luZG93IGluIHdoaWNoIHRoZSBpbm9kZSBpcyB1bmRlcgpjb25zdHJ1
Y3Rpb24uIFRoZSBzdGF0ZSBpcyBtb3ZlZCB0byBJTk9fU1RBVEVfUFJFU0VOVCBvbmx5IGFmdGVy
CmRfaW5zdGFudGlhdGVfbmV3KCkgaW4gamZmczJfY3JlYXRlKCksIGpmZnMyX3N5bWxpbmsoKSwg
amZmczJfbWtkaXIoKQphbmQgamZmczJfbWtub2QoKS4KClRlYWNoIHRoZSBnYXJiYWdlIGNvbGxl
Y3RvciBhYm91dCB0aGUgbmV3IHN0YXRlLiBJbiB0aGUgQ1JDIGNoZWNrIHBoYXNlCnN1Y2ggaW5v
ZGVzIGFyZSBub3Qgc2VsZWN0ZWQsIGFuZCBpbiBib3RoIHRoZSBjaGVjayBhbmQgdGhlIG1haW4g
aW5vZGUKc2VsZWN0aW9uIHBhdGhzIEdDIG5vdyBkcm9wcyBhbGxvY19zZW0sIHNsZWVwcyBvbiBp
bm9jYWNoZV93cSBhbmQKcmV0dXJucyB0byByZXN0YXJ0LCBpbnN0ZWFkIG9mIHRyeWluZyB0byBp
Z2V0KCkgYW4gaW5vZGUgdGhhdCBpcyBub3QKcmVhZHkgeWV0LgoKQWxzbyBhY2NlcHQgSU5PX1NU
QVRFX0NSRUFUSU5HIGFzIGEgdmFsaWQgc3RhdGUgaW4KamZmczJfd2J1Zl9yZWNvdmVyKCksIHNv
IHRoZSByZWNvdmVyeSBwYXRoIG5vIGxvbmdlciBoaXRzIHRoZSBCVUcoKSBmb3IKaW5vZGVzIGJl
aW5nIGNyZWF0ZWQsIGFuZCBoYW5kbGUgaXQgaW4gamZmczJfZG9fcmVhZF9pbm9kZSgpIHRvZ2V0
aGVyCndpdGggdGhlIG90aGVyIGluLWNvcmUgc3RhdGVzIHRoYXQgbXVzdCBuZXZlciBiZSByZWFk
IGFnYWluLgoKU2lnbmVkLW9mZi1ieTogTHVjYXMgTWFydGlucyBBbHZlcyA8bHVjYXMuYWx2ZXNA
bHVtYWwyMS5jb20uYnI+Ci0tLQogZnMvamZmczIvZGlyLmMgICAgICAgfCAgNCArKysrCiBmcy9q
ZmZzMi9nYy5jICAgICAgICB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBmcy9q
ZmZzMi9ub2RlbGlzdC5oICB8ICAxICsKIGZzL2pmZnMyL3JlYWRpbm9kZS5jIHwgIDEgKwogZnMv
amZmczIvd2J1Zi5jICAgICAgfCAgMyArKy0KIGZzL2pmZnMyL3dyaXRlLmMgICAgIHwgIDYgKysr
KystCiA2IGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvZnMvamZmczIvZGlyLmMgYi9mcy9qZmZzMi9kaXIuYwppbmRleCBjNDA4OGMz
YjRhYzAuLjNhYmUyOGQwY2I5NSAxMDA2NDQKLS0tIGEvZnMvamZmczIvZGlyLmMKKysrIGIvZnMv
amZmczIvZGlyLmMKQEAgLTIxNiw2ICsyMTYsNyBAQCBzdGF0aWMgaW50IGpmZnMyX2NyZWF0ZShz
dHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXJfaSwKIAkJICBmLT5pbm9j
YWNoZS0+cGlub19ubGluaywgaW5vZGUtPmlfbWFwcGluZy0+bnJwYWdlcyk7CiAKIAlkX2luc3Rh
bnRpYXRlX25ldyhkZW50cnksIGlub2RlKTsKKwlqZmZzMl9zZXRfaW5vY2FjaGVfc3RhdGUoYywg
Zi0+aW5vY2FjaGUsIElOT19TVEFURV9QUkVTRU5UKTsKIAlyZXR1cm4gMDsKIAogIGZhaWw6CkBA
IC00NDAsNiArNDQxLDcgQEAgc3RhdGljIGludCBqZmZzMl9zeW1saW5rIChzdHJ1Y3QgbW50X2lk
bWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXJfaSwKIAlqZmZzMl9jb21wbGV0ZV9yZXNlcnZh
dGlvbihjKTsKIAogCWRfaW5zdGFudGlhdGVfbmV3KGRlbnRyeSwgaW5vZGUpOworCWpmZnMyX3Nl
dF9pbm9jYWNoZV9zdGF0ZShjLCBmLT5pbm9jYWNoZSwgSU5PX1NUQVRFX1BSRVNFTlQpOwogCXJl
dHVybiAwOwogCiAgZmFpbDoKQEAgLTU4Niw2ICs1ODgsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRy
eSAqamZmczJfbWtkaXIgKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRp
cl9pLAogCWpmZnMyX2NvbXBsZXRlX3Jlc2VydmF0aW9uKGMpOwogCiAJZF9pbnN0YW50aWF0ZV9u
ZXcoZGVudHJ5LCBpbm9kZSk7CisJamZmczJfc2V0X2lub2NhY2hlX3N0YXRlKGMsIGYtPmlub2Nh
Y2hlLCBJTk9fU1RBVEVfUFJFU0VOVCk7CiAJcmV0dXJuIE5VTEw7CiAKICBmYWlsOgpAQCAtNzY0
LDYgKzc2Nyw3IEBAIHN0YXRpYyBpbnQgamZmczJfbWtub2QgKHN0cnVjdCBtbnRfaWRtYXAgKmlk
bWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcl9pLAogCWpmZnMyX2NvbXBsZXRlX3Jlc2VydmF0aW9uKGMp
OwogCiAJZF9pbnN0YW50aWF0ZV9uZXcoZGVudHJ5LCBpbm9kZSk7CisJamZmczJfc2V0X2lub2Nh
Y2hlX3N0YXRlKGMsIGYtPmlub2NhY2hlLCBJTk9fU1RBVEVfUFJFU0VOVCk7CiAJcmV0dXJuIDA7
CiAKICBmYWlsOgpkaWZmIC0tZ2l0IGEvZnMvamZmczIvZ2MuYyBiL2ZzL2pmZnMyL2djLmMKaW5k
ZXggMWI4MzNiYmZmY2Y1Li5hYWJmOTZmN2JiZDcgMTAwNjQ0Ci0tLSBhL2ZzL2pmZnMyL2djLmMK
KysrIGIvZnMvamZmczIvZ2MuYwpAQCAtMTYxLDcgKzE2MSw4IEBAIGludCBqZmZzMl9nYXJiYWdl
X2NvbGxlY3RfcGFzcyhzdHJ1Y3QgamZmczJfc2JfaW5mbyAqYykKIAkJCQkJY29udGludWU7CiAK
IAkJCQlpZiAoaWMtPnN0YXRlICE9IElOT19TVEFURV9DSEVDS0VEQUJTRU5UICYmCi0JCQkJICAg
IGljLT5zdGF0ZSAhPSBJTk9fU1RBVEVfUFJFU0VOVCkKKwkJCQkgICAgaWMtPnN0YXRlICE9IElO
T19TVEFURV9QUkVTRU5UICYmCisJCQkJICAgIGljLT5zdGF0ZSAhPSBJTk9fU1RBVEVfQ1JFQVRJ
TkcpCiAJCQkJCWdvdG8gZ290X25leHQ7IC8qIHdpdGggaW5vY2FjaGVfbG9jayBoZWxkICovCiAK
IAkJCQlqZmZzMl9kYmcoMSwgIlNraXBwaW5nIGlubyAjJXUgYWxyZWFkeSBjaGVja2VkXG4iLApA
QCAtMjA4LDYgKzIwOSwxOSBAQCBpbnQgamZmczJfZ2FyYmFnZV9jb2xsZWN0X3Bhc3Moc3RydWN0
IGpmZnMyX3NiX2luZm8gKmMpCiAJCQlzcGluX3VubG9jaygmYy0+aW5vY2FjaGVfbG9jayk7CiAJ
CQlCVUcoKTsKIAorCQljYXNlIElOT19TVEFURV9DUkVBVElORzoKKwkJCS8qIFdlIGNhbid0IHBy
b2Nlc3MgdGhpcyBpbm9kZSB3aGlsZSBpdCBpcyBiZWluZyBjcmVhdGVkCisJCQkgICB0byBhdm9p
ZCBhIGRlYWRsb2NrIGNvbmRpdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbgorCQkJICAgaWdldF9s
b2NrZWQoKSB3aWxsIHRyeSB0byBsb2NrIHRoZSBpbm9kZSB0byBnZXQgaXQuKi8KKwkJCWpmZnMy
X2RiZygxLCAiV2FpdGluZyBmb3IgaW5vICMldSB0byBmaW5pc2ggY3JlYXRpb25cbiIsCisJCQkJ
ICBpYy0+aW5vKTsKKwkJCS8qIFdlIG5lZWQgdG8gY29tZSBiYWNrIGFnYWluIGZvciB0aGUgX3Nh
bWVfIGlub2RlLiBXZSd2ZQorCQkJIG1hZGUgbm8gcHJvZ3Jlc3MgaW4gdGhpcyBjYXNlLCBidXQg
dGhhdCBzaG91bGQgYmUgT0sgKi8KKwkJCWMtPmNoZWNrX2lubyA9IGljLT5pbm87CisJCQltdXRl
eF91bmxvY2soJmMtPmFsbG9jX3NlbSk7CisJCQlzbGVlcF9vbl9zcGludW5sb2NrKCZjLT5pbm9j
YWNoZV93cSwgJmMtPmlub2NhY2hlX2xvY2spOworCQkJcmV0dXJuIDA7CisKIAkJY2FzZSBJTk9f
U1RBVEVfUkVBRElORzoKIAkJCS8qIFdlIG5lZWQgdG8gd2FpdCBmb3IgaXQgdG8gZmluaXNoLCBs
ZXN0IHdlIG1vdmUgb24KIAkJCSAgIGFuZCB0cmlnZ2VyIHRoZSBCVUcoKSBhYm92ZSB3aGlsZSB3
ZSBoYXZlbid0IHlldApAQCAtMzc2LDYgKzM5MCwxOSBAQCBpbnQgamZmczJfZ2FyYmFnZV9jb2xs
ZWN0X3Bhc3Moc3RydWN0IGpmZnMyX3NiX2luZm8gKmMpCiAJCX0KIAkJYnJlYWs7CiAKKwljYXNl
IElOT19TVEFURV9DUkVBVElORzoKKwkJLyogV2UgY2FuJ3QgcHJvY2VzcyB0aGlzIGlub2RlIHdo
aWxlIGl0IGlzIGJlaW5nIGNyZWF0ZWQKKwkJICAgdG8gYXZvaWQgYSBkZWFkbG9jayBjb25kaXRp
b24gYmVjYXVzZSB0aGUgZnVuY3Rpb24KKwkJICAgaWdldF9sb2NrZWQoKSB3aWxsIHRyeSB0byBs
b2NrIHRoZSBpbm9kZSB0byBnZXQgaXQuCisJCSAgIEhvZXZlciwgdG8gZmluaXNoIHRoZSBjcmVh
dGlvbiB3ZSBuZWVkIHRvIHVubG9jayB0aGUKKwkJICAgYWxsb2Nfc2VtKCkgYW5kIGJlY2F1c2Ug
d2UgZHJvcHBlZCB0aGUgYWxsb2Nfc2VtIHdlIG11c3QKKwkJICAgcmV0dXJuIHRvIHN0YXJ0IGFn
YWluIGZyb20gdGhlIGJlZ2lubmluZy4gKi8KKwkJamZmczJfZGJnKDEsICJXYWl0aW5nIGZvciBp
bm8gIyV1IHRvIGZpbmlzaCBjcmVhdGlvblxuIiwKKwkJCSAgaWMtPmlubyk7CisJCW11dGV4X3Vu
bG9jaygmYy0+YWxsb2Nfc2VtKTsKKwkJc2xlZXBfb25fc3BpbnVubG9jaygmYy0+aW5vY2FjaGVf
d3EsICZjLT5pbm9jYWNoZV9sb2NrKTsKKwkJcmV0dXJuIDA7CisKIAljYXNlIElOT19TVEFURV9Q
UkVTRU5UOgogCQkvKiBJdCdzIGluLWNvcmUuIEdDIG11c3QgaWdldCgpIGl0LiAqLwogCQlicmVh
azsKZGlmZiAtLWdpdCBhL2ZzL2pmZnMyL25vZGVsaXN0LmggYi9mcy9qZmZzMi9ub2RlbGlzdC5o
CmluZGV4IDJlOThmYTI3N2RhYi4uMDZmZDc3YjllM2NjIDEwMDY0NAotLS0gYS9mcy9qZmZzMi9u
b2RlbGlzdC5oCisrKyBiL2ZzL2pmZnMyL25vZGVsaXN0LmgKQEAgLTE5Miw2ICsxOTIsNyBAQCBz
dHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgewogI2RlZmluZSBJTk9fU1RBVEVfR0MJCTQJLyogR0Np
bmcgYSAncHJpc3RpbmUnIG5vZGUgKi8KICNkZWZpbmUgSU5PX1NUQVRFX1JFQURJTkcJNQkvKiBJ
biByZWFkX2lub2RlKCkgKi8KICNkZWZpbmUgSU5PX1NUQVRFX0NMRUFSSU5HCTYJLyogSW4gY2xl
YXJfaW5vZGUoKSAqLworI2RlZmluZSBJTk9fU1RBVEVfQ1JFQVRJTkcJNwkvKiBUaGUgaW5vZGUg
aXMgbG9ja2VkIHdoaWxlIGl0IGlzIGJlaW5nIGNyZWF0ZWQgKi8KIAogI2RlZmluZSBJTk9fRkxB
R1NfWEFUVFJfQ0hFQ0tFRAkweDAxCS8qIGhhcyBubyBkdXBsaWNhdGUgeGF0dHJfcmVmICovCiAj
ZGVmaW5lIElOT19GTEFHU19JU19ESVIJMHgwMgkvKiBpcyBhIGRpcmVjdG9yeSAqLwpkaWZmIC0t
Z2l0IGEvZnMvamZmczIvcmVhZGlub2RlLmMgYi9mcy9qZmZzMi9yZWFkaW5vZGUuYwppbmRleCAx
Y2FhYmZmOWRjOTEuLjNmMWVkN2MwMzZmMyAxMDA2NDQKLS0tIGEvZnMvamZmczIvcmVhZGlub2Rl
LmMKKysrIGIvZnMvamZmczIvcmVhZGlub2RlLmMKQEAgLTEzNTIsNiArMTM1Miw3IEBAIGludCBq
ZmZzMl9kb19yZWFkX2lub2RlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJf
aW5vZGVfaW5mbyAqZiwKIAkJCWdvdG8gcmV0cnlfaW5vY2FjaGU7CiAKIAkJY2FzZSBJTk9fU1RB
VEVfUkVBRElORzoKKwkJY2FzZSBJTk9fU1RBVEVfQ1JFQVRJTkc6CiAJCWNhc2UgSU5PX1NUQVRF
X1BSRVNFTlQ6CiAJCQkvKiBFZXAuIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4gSXQgY2FuCiAJ
CQloYXBwZW4gaWYgTGludXggY2FsbHMgcmVhZF9pbm9kZSgpIGFnYWluCmRpZmYgLS1naXQgYS9m
cy9qZmZzMi93YnVmLmMgYi9mcy9qZmZzMi93YnVmLmMKaW5kZXggOGZmN2EwYjZhZGQyLi5kOTli
YjJkYzAxOTUgMTAwNjQ0Ci0tLSBhL2ZzL2pmZnMyL3didWYuYworKysgYi9mcy9qZmZzMi93YnVm
LmMKQEAgLTUxOCw3ICs1MTgsOCBAQCBzdGF0aWMgdm9pZCBqZmZzMl93YnVmX3JlY292ZXIoc3Ry
dWN0IGpmZnMyX3NiX2luZm8gKmMpCiAJCQkJCQkJCSAgICAgICh2b2lkICopKGJ1Zj86Yy0+d2J1
ZikgKyAocmVmX29mZnNldChyYXcpIC0gc3RhcnQpKTsKIAkJCX0gZWxzZSBpZiAodW5saWtlbHko
aWMtPnN0YXRlICE9IElOT19TVEFURV9QUkVTRU5UICYmCiAJCQkJCSAgICBpYy0+c3RhdGUgIT0g
SU5PX1NUQVRFX0NIRUNLRURBQlNFTlQgJiYKLQkJCQkJICAgIGljLT5zdGF0ZSAhPSBJTk9fU1RB
VEVfR0MpKSB7CisJCQkJCSAgICBpYy0+c3RhdGUgIT0gSU5PX1NUQVRFX0dDICYmCisJCQkJCSAg
ICBpYy0+c3RhdGUgIT0gSU5PX1NUQVRFX0NSRUFUSU5HKSkgewogCQkJCUpGRlMyX0VSUk9SKCJJ
bm9kZSAjJXUgaXMgaW4gc3RyYW5nZSBzdGF0ZSAlZCFcbiIsIGljLT5pbm8sIGljLT5zdGF0ZSk7
CiAJCQkJQlVHKCk7CiAJCQl9CmRpZmYgLS1naXQgYS9mcy9qZmZzMi93cml0ZS5jIGIvZnMvamZm
czIvd3JpdGUuYwppbmRleCBjZGE5YTM2MTM2OGUuLjFkYWI0OTFiNTM5ZSAxMDA2NDQKLS0tIGEv
ZnMvamZmczIvd3JpdGUuYworKysgYi9mcy9qZmZzMi93cml0ZS5jCkBAIC0zNSw3ICszNSwxMSBA
QCBpbnQgamZmczJfZG9fbmV3X2lub2RlKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3Qg
amZmczJfaW5vZGVfaW5mbyAqZiwKIAlmLT5pbm9jYWNoZSA9IGljOwogCWYtPmlub2NhY2hlLT5w
aW5vX25saW5rID0gMTsgLyogV2lsbCBiZSBvdmVyd3JpdHRlbiBzaG9ydGx5IGZvciBkaXJlY3Rv
cmllcyAqLwogCWYtPmlub2NhY2hlLT5ub2RlcyA9IChzdHJ1Y3QgamZmczJfcmF3X25vZGVfcmVm
ICopZi0+aW5vY2FjaGU7Ci0JZi0+aW5vY2FjaGUtPnN0YXRlID0gSU5PX1NUQVRFX1BSRVNFTlQ7
CisJZi0+aW5vY2FjaGUtPnN0YXRlID0gSU5PX1NUQVRFX0NSRUFUSU5HOworCS8qIFdlIHNldCB0
aGUgc3RhdGUgZXF1YWwgYXMgSU5PX1NUQVRFX0NSRUFUSU5HIHRvIGF2b2lkIGEgZGVhZGxvY2sg
aW4gR0MKKwkgICBiZWNhdXNlIHRoZSBuZXcgaW5vZGUgaXNuwrR0IGNvbXBsZXRlbHkgY3JlYXRl
ZCBhbmQgR0MgdHJpZXMgdG8gZ2V0IHRoZQorCSAgIGxvY2tlZCBpbm9kZS4gU28sIHRoZSBjcmVh
dGlvbiBmdW5jdGlvbiBjYW7CtHQgcGljayB1cCBhbGxvY19zZW0gYW5kCisJICAgZGVhZGxvY2sg
aGFwcGVucyBiZXR3ZWVuIGFsbG9jX3NlbSBhbmQgdGhlIHNwZWNpZmljIGlub2RlIGxvY2suICov
CiAKIAlqZmZzMl9hZGRfaW5vX2NhY2hlKGMsIGYtPmlub2NhY2hlKTsKIAlqZmZzMl9kYmcoMSwg
IiVzKCk6IEFzc2lnbmVkIGlubyMgJWRcbiIsIF9fZnVuY19fLCBmLT5pbm9jYWNoZS0+aW5vKTsK
LS0gCjIuNTMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMu
aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K