From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Khoroshilov Subject: Re: f2fs: BUG_ON() is triggered when mount valid f2fs filesystem Date: Wed, 16 Apr 2014 18:11:14 -0700 Message-ID: <534F2A32.9030405@ispras.ru> References: <52F320FC.50803@ispras.ru> <534BC29B.3020408@ispras.ru> <1397559864.7727.5.camel@kjgkr> <534E494C.7050909@ispras.ru> <1397691337.7727.18.camel@kjgkr> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from sog-mx-3.v43.ch3.sourceforge.com ([172.29.43.193] helo=mx.sourceforge.net) by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1WaarQ-0003MZ-Ec for linux-f2fs-devel@lists.sourceforge.net; Thu, 17 Apr 2014 01:11:28 +0000 Received: from mail.ispras.ru ([83.149.199.45]) by sog-mx-3.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1WaarM-0002k0-QT for linux-f2fs-devel@lists.sourceforge.net; Thu, 17 Apr 2014 01:11:28 +0000 In-Reply-To: <1397691337.7727.18.camel@kjgkr> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net To: jaegeuk.kim@samsung.com, Andrey Tsyvarev Cc: linux-kernel , linux-f2fs-devel@lists.sourceforge.net SGksCgpCdXQgd291bGQgbm90IGFiaWxpdHkgdG8gdHJpZ2dlciBCVUdfT04gYnkgbW91bnRpbmcg YSBjcmFmdGVkIGltYWdlCmNvbnNpZGVyZWQgYXMgYW4gaXNzdWUgaGF2aW5nIHNlY3VyaXR5IGlt cGxpY2F0aW9ucz8KClJlZ2FyZHMsCkFsZXhleQoKCk9uIDE2LjA0LjIwMTQgMTY6MzUsIEphZWdl dWsgS2ltIHdyb3RlOgo+IEhpLAo+Cj4gMjAxNC0wNC0xNiAo7IiYKSwgMTM6MTEgKzA0MDAsIEFu ZHJleSBUc3l2YXJldjoKPj4gSGksCj4+Cj4+IFdpdGggdGhpcyBwYXRjaCBtb3VudGluZyBvZiB0 aGUgaW1hZ2UgY29udGludWVzIHRvIGZhaWwgKHdpdGggc2ltaWxhciAKPj4gQlVHX09OKS4KPj4g QnV0IHdoZW4gaW1hZ2UgaXMgZm9ybWF0dGVkIGFnYWluIChhbmQgc3RlcHMgbWVudGlvbmVkIGlu IHRoZSBwcmV2aW91cyAKPj4gbWVzc2FnZSBhcmUgcGVyZm9ybWVkKSwKPj4gbW91bnRpbmcgb2Yg aXQgaXMgbm93IHN1Y2NlZWQuCj4+Cj4+IElzIHRoaXMgaXMgYSB0cnVlIHB1cnBvc2Ugb2YgdGhl IHBhdGNoPwo+IEluZGVlZC4gVGhlIHBhdGNoIHNvbHZlcyB0aGVyZS1pbiByb290IGNhdXNlLgo+ IEJ1dCwgaWYgeW91J3JlIHRyeWluZyB0byB1c2UgdGhlIGZhaWxlZCBpbWFnZSBhZ2Fpbiwgc2lt cGx5IHlvdSBjYW4gc2tpcAo+IHRoZSBlcnJvcm5lb3VzIHBhcnQgYnk6Cj4KPiAjIG1vdW50IC4u LiAtbyBkaXNhYmxlX3JvbGxfZm9yd2FyZCAuLi4KPgo+IE9uY2Ugc3luYyBvciB1bW91bnQgd2hh dGV2ZXIgY2hlY2twb2ludCBpcyBkb25lIGFmdGVyIHRoYXQsIHRoZSBpbWFnZQo+IHdpbGwgYmUg bW91bnRlZCB3aXRob3V0ICJkaXNhYmxlX3JvbGxfZm9yd2FyZCIuCj4KPiBUaGFua3MsCj4KPj4g MTUuMDQuMjAxNCAxNTowNCwgSmFlZ2V1ayBLaW0g0L/QuNGI0LXRgjoKPj4+IEhpLAo+Pj4KPj4+ IFRoYW5rIHlvdSBmb3IgdGhlIHJlcG9ydC4KPj4+IEkgcmV0cmlldmVkIHRoZSBmYXVsdCBpbWFn ZSBhbmQgZm91bmQgb3V0IHRoYXQgcHJldmlvdXMgZ2FyYmFnZSBkYXRhCj4+PiB3cmVhayBzdWNo IHRoZSB3cm9uZyBiZWhhdmlvcnMuCj4+PiBTbywgSSB3cm90ZSB0aGUgZm9sbG93aW5nIHBhdGNo IHRoYXQgZmlsbHMgb25lIHplcm8tYmxvY2sgYXQgdGhlCj4+PiBjaGVja3BvaW50IHByb2NlZHVy ZS4KPj4+IElmIHRoZSB1bmRlcmx5aW5nIGRldmljZSBzdXBwb3J0cyBkaXNjYXJkLCBJIGV4cGVj dCB0aGF0IGl0IG1vc3RseQo+Pj4gZG9lc24ndCBpbmN1ciBhbnkgcGVyZm9ybWFuY2UgcmVncmVz c2lvbiBzaWduaWZpY2FudGx5Lgo+Pj4KPj4+IENvdWxkIHlvdSB0ZXN0IHRoaXMgcGF0Y2g/Cj4+ Pgo+Pj4gPkZyb20gNjA1ODhjZWI3Mjc3YWFlMmE3OWU3ZjY3ZjUyMTdkMTI1NjcyMGQ3OCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKPj4+IEZyb206IEphZWdldWsgS2ltIDxqYWVnZXVrLmtpbUBz YW1zdW5nLmNvbT4KPj4+IERhdGU6IFR1ZSwgMTUgQXByIDIwMTQgMTM6NTc6NTUgKzA5MDAKPj4+ IFN1YmplY3Q6IFtQQVRDSF0gZjJmczogYXZvaWQgdG8gY29uZHVjdCByb2xsLWZvcndhcmQgZHVl IHRvIHRoZSByZW1haW5lZAo+Pj4gICBnYXJiYWdlIGJsb2Nrcwo+Pj4KPj4+IFRoZSBmMmZzIGFs d2F5cyBzY2FucyB0aGUgbmV4dCBjaGFpbiBvZiBkaXJlY3Qgbm9kZSBibG9ja3MuCj4+PiBCdXQg c29tZSBnYXJiYWdlIGJsb2NrcyBhcmUgYWJsZSB0byBiZSByZW1haW5lZCBkdWUgdG8gbm8gZGlz Y2FyZAo+Pj4gc3VwcG9ydCBvcgo+Pj4gU1NSIHRyaWdnZXJzLgo+Pj4gVGhpcyBvY2Nhc2lvbmFs bHkgd3JlYWtzIHJlY292ZXJpbmcgd3JvbmcgaW5vZGVzIHRoYXQgd2VyZSB1c2VkIG9yCj4+PiBC VUdfT05zCj4+PiBkdWUgdG8gcmVhbGxvY2F0aW5nIG5vZGUgaWRzIGFzIGZvbGxvd3MuCj4+Pgo+ Pj4gV2hlbiBtb3VudCB0aGlzIGYyZnMgaW1hZ2U6Cj4+PiBodHRwOi8vbGludXh0ZXN0aW5nLm9y Zy9kb3dubG9hZHMvZjJmc19mYXVsdF9pbWFnZS56aXAKPj4+IEJVR19PTiBpcyB0cmlnZ2VyZWQg aW4gZjJmcyBkcml2ZXIgKG1lc3NhZ2VzIGJlbG93IGFyZSBnZW5lcmF0ZWQgb24KPj4+IGtlcm5l bCAzLjEzLjI7IGZvciBvdGhlciBrZXJuZWxzIG91dHB1dCBpcyBzaW1pbGFyKToKPj4+Cj4+PiBr ZXJuZWwgQlVHIGF0IGZzL2YyZnMvbm9kZS5jOjIxNSEKPj4+ICAgQ2FsbCBUcmFjZToKPj4+ICAg WzxmZmZmZmZmZmEwMzJlYmFkPl0gcmVjb3Zlcl9pbm9kZV9wYWdlKzB4MWZkLzB4M2UwIFtmMmZz XQo+Pj4gICBbPGZmZmZmZmZmODExNDQ2ZTc+XSA/IF9fbG9ja19wYWdlKzB4NjcvMHg3MAo+Pj4g ICBbPGZmZmZmZmZmODEwODk5OTA+XSA/IGF1dG9yZW1vdmVfd2FrZV9mdW5jdGlvbisweDUwLzB4 NTAKPj4+ICAgWzxmZmZmZmZmZmEwMzM3Nzg4Pl0gcmVjb3Zlcl9mc3luY19kYXRhKzB4MTM5OC8w eDE1ZDAgW2YyZnNdCj4+PiAgIFs8ZmZmZmZmZmY4MTJiOWU1Yz5dID8gc2VsaW51eF9kX2luc3Rh bnRpYXRlKzB4MWMvMHgyMAo+Pj4gICBbPGZmZmZmZmZmODExY2IyMGI+XSA/IGRfaW5zdGFudGlh dGUrMHg1Yi8weDgwCj4+PiAgIFs8ZmZmZmZmZmZhMDMyMTA0ND5dIGYyZnNfZmlsbF9zdXBlcisw eGIwNC8weGJmMCBbZjJmc10KPj4+ICAgWzxmZmZmZmZmZjgxMWI4NjFlPl0gPyBtb3VudF9iZGV2 KzB4N2UvMHgyMTAKPj4+ICAgWzxmZmZmZmZmZjgxMWI4NzY5Pl0gbW91bnRfYmRldisweDFjOS8w eDIxMAo+Pj4gICBbPGZmZmZmZmZmYTAzMjA1NDA+XSA/IHZhbGlkYXRlX3N1cGVyYmxvY2srMHgy MTAvMHgyMTAgW2YyZnNdCj4+PiAgIFs8ZmZmZmZmZmZhMDMxY2Y4ZD5dIGYyZnNfbW91bnQrMHgx ZC8weDMwIFtmMmZzXQo+Pj4gICBbPGZmZmZmZmZmODExYjk0OTc+XSBtb3VudF9mcysweDQ3LzB4 MWMwCj4+PiAgIFs8ZmZmZmZmZmY4MTE2NmUwMD5dID8gX19hbGxvY19wZXJjcHUrMHgxMC8weDIw Cj4+PiAgIFs8ZmZmZmZmZmY4MTFkNDAzMj5dIHZmc19rZXJuX21vdW50KzB4NzIvMHgxMTAKPj4+ ICAgWzxmZmZmZmZmZjgxMWQ2NzYzPl0gZG9fbW91bnQrMHg0OTMvMHg5MTAKPj4+ICAgWzxmZmZm ZmZmZjgxMTYxNWNiPl0gPyBzdHJuZHVwX3VzZXIrMHg1Yi8weDgwCj4+PiAgIFs8ZmZmZmZmZmY4 MTFkNmM3MD5dIFN5U19tb3VudCsweDkwLzB4ZTAKPj4+ICAgWzxmZmZmZmZmZjgxNjZmOGQ5Pl0g c3lzdGVtX2NhbGxfZmFzdHBhdGgrMHgxNi8weDFiCj4+Pgo+Pj4gRm91bmQgYnkgTGludXggRmls ZSBTeXN0ZW0gVmVyaWZpY2F0aW9uIHByb2plY3QgKGxpbnV4dGVzdGluZy5vcmcpLgo+Pj4KPj4+ IFJlcG9ydGVkLWJ5OiBBbmRyZXkgVHN5dmFyZXYgPHRzeXZhcmV2QGlzcHJhcy5ydT4KPj4+IFNp Z25lZC1vZmYtYnk6IEphZWdldWsgS2ltIDxqYWVnZXVrLmtpbUBzYW1zdW5nLmNvbT4KPj4+IC0t LQo+Pj4gICBmcy9mMmZzL2NoZWNrcG9pbnQuYyB8ICA2ICsrKysrKwo+Pj4gICBmcy9mMmZzL2Yy ZnMuaCAgICAgICB8ICAxICsKPj4+ICAgZnMvZjJmcy9zZWdtZW50LmMgICAgfCAxNyArKysrKysr KysrKysrKystLQo+Pj4gICAzIGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvY2hlY2twb2ludC5jIGIvZnMv ZjJmcy9jaGVja3BvaW50LmMKPj4+IGluZGV4IDRhYTUyMWEuLjg5MGUyM2QgMTAwNjQ0Cj4+PiAt LS0gYS9mcy9mMmZzL2NoZWNrcG9pbnQuYwo+Pj4gKysrIGIvZnMvZjJmcy9jaGVja3BvaW50LmMK Pj4+IEBAIC03NjIsNiArNzYyLDEyIEBAIHN0YXRpYyB2b2lkIGRvX2NoZWNrcG9pbnQoc3RydWN0 IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4gYm9vbCBpc191bW91bnQpCj4+PiAgIAl2b2lkICprYWRk cjsKPj4+ICAgCWludCBpOwo+Pj4gICAKPj4+ICsJLyoKPj4+ICsJICogVGhpcyBhdm9pZHMgdG8g Y29uZHVjdCB3cm9uZyByb2xsLWZvcndhcmQgb3BlcmF0aW9ucyBhbmQgdXNlcwo+Pj4gKwkgKiBt ZXRhcGFnZXMsIHNvIHNob3VsZCBiZSBjYWxsZWQgcHJpb3IgdG8gc3luY19tZXRhX3BhZ2VzIGJl bG93Lgo+Pj4gKwkgKi8KPj4+ICsJZGlzY2FyZF9uZXh0X2Rub2RlKHNiaSk7Cj4+PiArCj4+PiAg IAkvKiBGbHVzaCBhbGwgdGhlIE5BVC9TSVQgcGFnZXMgKi8KPj4+ICAgCXdoaWxlIChnZXRfcGFn ZXMoc2JpLCBGMkZTX0RJUlRZX01FVEEpKQo+Pj4gICAJCXN5bmNfbWV0YV9wYWdlcyhzYmksIE1F VEEsIExPTkdfTUFYKTsKPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMv ZjJmcy5oCj4+PiBpbmRleCAyZWNhYzgzLi4yYzVhNWRhIDEwMDY0NAo+Pj4gLS0tIGEvZnMvZjJm cy9mMmZzLmgKPj4+ICsrKyBiL2ZzL2YyZnMvZjJmcy5oCj4+PiBAQCAtMTE3OSw2ICsxMTc5LDcg QEAgaW50IGYyZnNfaXNzdWVfZmx1c2goc3RydWN0IGYyZnNfc2JfaW5mbyAqKTsKPj4+ICAgdm9p ZCBpbnZhbGlkYXRlX2Jsb2NrcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICosIGJsb2NrX3QpOwo+Pj4g ICB2b2lkIHJlZnJlc2hfc2l0X2VudHJ5KHN0cnVjdCBmMmZzX3NiX2luZm8gKiwgYmxvY2tfdCwg YmxvY2tfdCk7Cj4+PiAgIHZvaWQgY2xlYXJfcHJlZnJlZV9zZWdtZW50cyhzdHJ1Y3QgZjJmc19z Yl9pbmZvICopOwo+Pj4gK3ZvaWQgZGlzY2FyZF9uZXh0X2Rub2RlKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKik7Cj4+PiAgIGludCBucGFnZXNfZm9yX3N1bW1hcnlfZmx1c2goc3RydWN0IGYyZnNfc2Jf aW5mbyAqKTsKPj4+ICAgdm9pZCBhbGxvY2F0ZV9uZXdfc2VnbWVudHMoc3RydWN0IGYyZnNfc2Jf aW5mbyAqKTsKPj4+ICAgc3RydWN0IHBhZ2UgKmdldF9zdW1fcGFnZShzdHJ1Y3QgZjJmc19zYl9p bmZvICosIHVuc2lnbmVkIGludCk7Cj4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmMg Yi9mcy9mMmZzL3NlZ21lbnQuYwo+Pj4gaW5kZXggMWUyNjRlNy4uOTk5M2Y5NCAxMDA2NDQKPj4+ IC0tLSBhL2ZzL2YyZnMvc2VnbWVudC5jCj4+PiArKysgYi9mcy9mMmZzL3NlZ21lbnQuYwo+Pj4g QEAgLTMzNSwxMyArMzM1LDI2IEBAIHN0YXRpYyB2b2lkIGxvY2F0ZV9kaXJ0eV9zZWdtZW50KHN0 cnVjdAo+Pj4gZjJmc19zYl9pbmZvICpzYmksIHVuc2lnbmVkIGludCBzZWdubykKPj4+ICAgCW11 dGV4X3VubG9jaygmZGlydHlfaS0+c2VnbGlzdF9sb2NrKTsKPj4+ICAgfQo+Pj4gICAKPj4+IC1z dGF0aWMgdm9pZCBmMmZzX2lzc3VlX2Rpc2NhcmQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ Pj4gK3N0YXRpYyBpbnQgZjJmc19pc3N1ZV9kaXNjYXJkKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwKPj4+ICAgCQkJCWJsb2NrX3QgYmxrc3RhcnQsIGJsb2NrX3QgYmxrbGVuKQo+Pj4gICB7Cj4+ PiAgIAlzZWN0b3JfdCBzdGFydCA9IFNFQ1RPUl9GUk9NX0JMT0NLKHNiaSwgYmxrc3RhcnQpOwo+ Pj4gICAJc2VjdG9yX3QgbGVuID0gU0VDVE9SX0ZST01fQkxPQ0soc2JpLCBibGtsZW4pOwo+Pj4g LQlibGtkZXZfaXNzdWVfZGlzY2FyZChzYmktPnNiLT5zX2JkZXYsIHN0YXJ0LCBsZW4sIEdGUF9O T0ZTLCAwKTsKPj4+ICAgCXRyYWNlX2YyZnNfaXNzdWVfZGlzY2FyZChzYmktPnNiLCBibGtzdGFy dCwgYmxrbGVuKTsKPj4+ICsJcmV0dXJuIGJsa2Rldl9pc3N1ZV9kaXNjYXJkKHNiaS0+c2ItPnNf YmRldiwgc3RhcnQsIGxlbiwgR0ZQX05PRlMsIDApOwo+Pj4gK30KPj4+ICsKPj4+ICt2b2lkIGRp c2NhcmRfbmV4dF9kbm9kZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4+PiArewo+Pj4gKwlz dHJ1Y3QgY3Vyc2VnX2luZm8gKmN1cnNlZyA9IENVUlNFR19JKHNiaSwgQ1VSU0VHX1dBUk1fTk9E RSk7Cj4+PiArCWJsb2NrX3QgYmxrYWRkciA9IE5FWFRfRlJFRV9CTEtBRERSKHNiaSwgY3Vyc2Vn KTsKPj4+ICsKPj4+ICsJaWYgKGYyZnNfaXNzdWVfZGlzY2FyZChzYmksIGJsa2FkZHIsIDEpKSB7 Cj4+PiArCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGdyYWJfbWV0YV9wYWdlKHNiaSwgYmxrYWRkcik7 Cj4+PiArCQkvKiB6ZXJvLWZpbGxlZCBwYWdlICovCj4+PiArCQlzZXRfcGFnZV9kaXJ0eShwYWdl KTsKPj4+ICsJCWYyZnNfcHV0X3BhZ2UocGFnZSwgMSk7Cj4+PiArCX0KPj4+ICAgfQo+Pj4gICAK Pj4+ICAgc3RhdGljIHZvaWQgYWRkX2Rpc2NhcmRfYWRkcnMoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLAoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZWFybiBHcmFwaCBEYXRhYmFzZXMgLSBEb3du bG9hZCBGUkVFIE8nUmVpbGx5IEJvb2sKIkdyYXBoIERhdGFiYXNlcyIgaXMgdGhlIGRlZmluaXRp dmUgbmV3IGd1aWRlIHRvIGdyYXBoIGRhdGFiYXNlcyBhbmQgdGhlaXIKYXBwbGljYXRpb25zLiBX cml0dGVuIGJ5IHRocmVlIGFjY2xhaW1lZCBsZWFkZXJzIGluIHRoZSBmaWVsZCwKdGhpcyBmaXJz dCBlZGl0aW9uIGlzIG5vdyBhdmFpbGFibGUuIERvd25sb2FkIHlvdXIgZnJlZSBib29rIHRvZGF5 IQpodHRwOi8vcC5zZi5uZXQvc2Z1L05lb1RlY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KTGludXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxpc3QKTGludXgt ZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3Jn ZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZjJmcy1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751984AbaDQBLW (ORCPT ); Wed, 16 Apr 2014 21:11:22 -0400 Received: from mail.ispras.ru ([83.149.199.45]:36213 "EHLO mail.ispras.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750852AbaDQBLU (ORCPT ); Wed, 16 Apr 2014 21:11:20 -0400 Message-ID: <534F2A32.9030405@ispras.ru> Date: Wed, 16 Apr 2014 18:11:14 -0700 From: Alexey Khoroshilov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: jaegeuk.kim@samsung.com, Andrey Tsyvarev CC: linux-f2fs-devel@lists.sourceforge.net, linux-kernel Subject: Re: f2fs: BUG_ON() is triggered when mount valid f2fs filesystem References: <52F320FC.50803@ispras.ru> <534BC29B.3020408@ispras.ru> <1397559864.7727.5.camel@kjgkr> <534E494C.7050909@ispras.ru> <1397691337.7727.18.camel@kjgkr> In-Reply-To: <1397691337.7727.18.camel@kjgkr> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, But would not ability to trigger BUG_ON by mounting a crafted image considered as an issue having security implications? Regards, Alexey On 16.04.2014 16:35, Jaegeuk Kim wrote: > Hi, > > 2014-04-16 (수), 13:11 +0400, Andrey Tsyvarev: >> Hi, >> >> With this patch mounting of the image continues to fail (with similar >> BUG_ON). >> But when image is formatted again (and steps mentioned in the previous >> message are performed), >> mounting of it is now succeed. >> >> Is this is a true purpose of the patch? > Indeed. The patch solves there-in root cause. > But, if you're trying to use the failed image again, simply you can skip > the errorneous part by: > > # mount ... -o disable_roll_forward ... > > Once sync or umount whatever checkpoint is done after that, the image > will be mounted without "disable_roll_forward". > > Thanks, > >> 15.04.2014 15:04, Jaegeuk Kim пишет: >>> Hi, >>> >>> Thank you for the report. >>> I retrieved the fault image and found out that previous garbage data >>> wreak such the wrong behaviors. >>> So, I wrote the following patch that fills one zero-block at the >>> checkpoint procedure. >>> If the underlying device supports discard, I expect that it mostly >>> doesn't incur any performance regression significantly. >>> >>> Could you test this patch? >>> >>> >From 60588ceb7277aae2a79e7f67f5217d1256720d78 Mon Sep 17 00:00:00 2001 >>> From: Jaegeuk Kim >>> Date: Tue, 15 Apr 2014 13:57:55 +0900 >>> Subject: [PATCH] f2fs: avoid to conduct roll-forward due to the remained >>> garbage blocks >>> >>> The f2fs always scans the next chain of direct node blocks. >>> But some garbage blocks are able to be remained due to no discard >>> support or >>> SSR triggers. >>> This occasionally wreaks recovering wrong inodes that were used or >>> BUG_ONs >>> due to reallocating node ids as follows. >>> >>> When mount this f2fs image: >>> http://linuxtesting.org/downloads/f2fs_fault_image.zip >>> BUG_ON is triggered in f2fs driver (messages below are generated on >>> kernel 3.13.2; for other kernels output is similar): >>> >>> kernel BUG at fs/f2fs/node.c:215! >>> Call Trace: >>> [] recover_inode_page+0x1fd/0x3e0 [f2fs] >>> [] ? __lock_page+0x67/0x70 >>> [] ? autoremove_wake_function+0x50/0x50 >>> [] recover_fsync_data+0x1398/0x15d0 [f2fs] >>> [] ? selinux_d_instantiate+0x1c/0x20 >>> [] ? d_instantiate+0x5b/0x80 >>> [] f2fs_fill_super+0xb04/0xbf0 [f2fs] >>> [] ? mount_bdev+0x7e/0x210 >>> [] mount_bdev+0x1c9/0x210 >>> [] ? validate_superblock+0x210/0x210 [f2fs] >>> [] f2fs_mount+0x1d/0x30 [f2fs] >>> [] mount_fs+0x47/0x1c0 >>> [] ? __alloc_percpu+0x10/0x20 >>> [] vfs_kern_mount+0x72/0x110 >>> [] do_mount+0x493/0x910 >>> [] ? strndup_user+0x5b/0x80 >>> [] SyS_mount+0x90/0xe0 >>> [] system_call_fastpath+0x16/0x1b >>> >>> Found by Linux File System Verification project (linuxtesting.org). >>> >>> Reported-by: Andrey Tsyvarev >>> Signed-off-by: Jaegeuk Kim >>> --- >>> fs/f2fs/checkpoint.c | 6 ++++++ >>> fs/f2fs/f2fs.h | 1 + >>> fs/f2fs/segment.c | 17 +++++++++++++++-- >>> 3 files changed, 22 insertions(+), 2 deletions(-) >>> >>> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c >>> index 4aa521a..890e23d 100644 >>> --- a/fs/f2fs/checkpoint.c >>> +++ b/fs/f2fs/checkpoint.c >>> @@ -762,6 +762,12 @@ static void do_checkpoint(struct f2fs_sb_info *sbi, >>> bool is_umount) >>> void *kaddr; >>> int i; >>> >>> + /* >>> + * This avoids to conduct wrong roll-forward operations and uses >>> + * metapages, so should be called prior to sync_meta_pages below. >>> + */ >>> + discard_next_dnode(sbi); >>> + >>> /* Flush all the NAT/SIT pages */ >>> while (get_pages(sbi, F2FS_DIRTY_META)) >>> sync_meta_pages(sbi, META, LONG_MAX); >>> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h >>> index 2ecac83..2c5a5da 100644 >>> --- a/fs/f2fs/f2fs.h >>> +++ b/fs/f2fs/f2fs.h >>> @@ -1179,6 +1179,7 @@ int f2fs_issue_flush(struct f2fs_sb_info *); >>> void invalidate_blocks(struct f2fs_sb_info *, block_t); >>> void refresh_sit_entry(struct f2fs_sb_info *, block_t, block_t); >>> void clear_prefree_segments(struct f2fs_sb_info *); >>> +void discard_next_dnode(struct f2fs_sb_info *); >>> int npages_for_summary_flush(struct f2fs_sb_info *); >>> void allocate_new_segments(struct f2fs_sb_info *); >>> struct page *get_sum_page(struct f2fs_sb_info *, unsigned int); >>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c >>> index 1e264e7..9993f94 100644 >>> --- a/fs/f2fs/segment.c >>> +++ b/fs/f2fs/segment.c >>> @@ -335,13 +335,26 @@ static void locate_dirty_segment(struct >>> f2fs_sb_info *sbi, unsigned int segno) >>> mutex_unlock(&dirty_i->seglist_lock); >>> } >>> >>> -static void f2fs_issue_discard(struct f2fs_sb_info *sbi, >>> +static int f2fs_issue_discard(struct f2fs_sb_info *sbi, >>> block_t blkstart, block_t blklen) >>> { >>> sector_t start = SECTOR_FROM_BLOCK(sbi, blkstart); >>> sector_t len = SECTOR_FROM_BLOCK(sbi, blklen); >>> - blkdev_issue_discard(sbi->sb->s_bdev, start, len, GFP_NOFS, 0); >>> trace_f2fs_issue_discard(sbi->sb, blkstart, blklen); >>> + return blkdev_issue_discard(sbi->sb->s_bdev, start, len, GFP_NOFS, 0); >>> +} >>> + >>> +void discard_next_dnode(struct f2fs_sb_info *sbi) >>> +{ >>> + struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_WARM_NODE); >>> + block_t blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); >>> + >>> + if (f2fs_issue_discard(sbi, blkaddr, 1)) { >>> + struct page *page = grab_meta_page(sbi, blkaddr); >>> + /* zero-filled page */ >>> + set_page_dirty(page); >>> + f2fs_put_page(page, 1); >>> + } >>> } >>> >>> static void add_discard_addrs(struct f2fs_sb_info *sbi,