From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:36028 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752019AbbJCPfg (ORCPT ); Sat, 3 Oct 2015 11:35:36 -0400 Message-ID: <1443886515.2730.229.camel@decadent.org.uk> Subject: Re: [PATCH 3.2.x] jbd2: add mutex_lock on j_checkpoint_mutex in jbd2_journal_flush From: Ben Hutchings To: Jan Kara Cc: zerg2000@astral.org.pl, stable Date: Sat, 03 Oct 2015 16:35:15 +0100 In-Reply-To: <20150929151634.GA7394@quack.suse.cz> References: <1668256.Geort4rEnn@zealot> <1443361449.2004.20.camel@decadent.org.uk> <20150929151634.GA7394@quack.suse.cz> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-MsjeEaqwrITyclL9sD+h" Mime-Version: 1.0 Sender: stable-owner@vger.kernel.org List-ID: --=-MsjeEaqwrITyclL9sD+h Content-Type: multipart/mixed; boundary="=-U78bAn1SjG7M8atN40fv" --=-U78bAn1SjG7M8atN40fv Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2015-09-29 at 17:16 +0200, Jan Kara wrote: > On Sun 27-09-15 14:44:09, Ben Hutchings wrote: > > On Sun, 2015-09-06 at 03:25 +0200, Bartosz Kwitniewski wrote: > > > Commit a3ceb22921615827bfed39d7612a9a370bff0edb (upstream=20 > > > 79feb521a44705262d15cc819a4117a447b11ea7) in 3.2.x tree introduced= =20 > > > __jbd2_update_log_tail which requires j_checkpoint_mutex, but locking= of=20 > > > j_checkpoint_mutex in jbd2_journal_flush was not backported from upst= ream. > >=20 > > Oops. > >=20 > > > Fixes kernel BUG at fs/jbd2/journal.c:832 (__jbd2_update_log_tail): > > > [] ? jbd2_cleanup_journal_tail+0x5d/0x61 [jbd2] > > > [] ? jbd2_journal_flush+0xc2/0x156 [jbd2] > > > [] ? ext4_freeze+0x2f/0x71 [ext4] > > > [] ? filemap_write_and_wait+0x26/0x32 > > > [] ? freeze_super+0x8c/0xdd > > > [] ? freeze_bdev+0x5b/0xa1 > > > [] ? start_cow_session+0xb3/0x2d6 [hcpdriver] > > > [] ? printk+0x40/0x49 > > > [] ? alloc_cts_session+0x2e/0x33 [hcpdriver] > > > [] ? ioctl_start_hcp_session+0x131/0x20d [hcpdriver] > > > [] ? handle_ioctlStartHC2+0x95/0x1ab [hcpdriver] > > > [] ? cow_ioctl_unlocked+0x13/0x18 [hcpdriver] > > > [] ? do_vfs_ioctl+0x55a/0x5a9 > > > [] ? pax_randomize_kstack+0x4c/0x60 > > > [] ? sysret_check+0x20/0x62 > > > [] ? do_sys_open+0x11e/0x130 > > > [] ? sys_ioctl+0x3c/0x5f > > > [] ? system_call_fastpath+0x16/0x1b > > >=20 > > > Signed-off-by: Bartosz Kwitniewski > > > Cc: stable@vger.kernel.org > > > --- > > > --- fs/jbd2/journal.c.orig> > > > > > > > 2015-08-12 16:33:24.000000= 000 +0200 > > > +++ fs/jbd2/journal.c> > > > > > > > 2015-09-06 00:57:56.890894891 += 0200 > > > @@ -1828,10 +1828,13 @@ int jbd2_journal_flush(journal_t *journa > > > > > > > > > > > if (is_journal_aborted(journal)) > > > > > > > > > > > > > > > > > > return -EIO; > > > =20 > > > +> > > > > > > > mutex_lock(&journal->j_checkpoint_mutex); > > > > > > > > > > > if (!err) { > > > > > > > > > > > > > > > > > > err =3D jbd2_cleanup_journal_tail(jo= urnal); > > > -> > > > > > > > > > > > > > > if (err < 0) > > > +> > > > > > > > > > > > > > > if (err < 0) { > > > +> > > > > > > > > > > > > > > > > > > > > > mutex_unlock(&journal= ->j_checkpoint_mutex); > > > > > > > > > > > > > > > > > > > > > > > > > goto out; > > > +> > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > err =3D 0; > > > > > > > > > > > } > > > =20 > > > @@ -1841,6 +1844,7 @@ int jbd2_journal_flush(journal_t *journa > > > > > > > > > > > * commits of data to the journal will restore the = current > > > > > > > > > > > * s_start value. */ > > > > > > > > > > > jbd2_mark_journal_empty(journal); > > > +> > > > > > > > mutex_unlock(&journal->j_checkpoint_mutex); > > > > > > > > > > > write_lock(&journal->j_state_lock); > > > > > > > > > > > J_ASSERT(!journal->j_running_transaction); > > > > > > > > > > > J_ASSERT(!journal->j_committing_transaction); > >=20 > > Why is it sufficient to add locking of j_checkpoint_mutex only in this > > one function? > >=20 > > Shouldn't I cherry-pick commits 24bcc89c7e7c ("jbd2: split updating of > > journal superblock and marking journal empty") I actually applied that one already. > > and a78bb11d7acd ("jbd2: > > protect all log tail updates with j_checkpoint_mutex") as well? >=20 > Just to confirm, I agree these two commits are the ones you should > cherry-pick for commit 79feb521a44705262d15cc819a4117a447b11ea7 from > upstream to work correctly. So here's the series of 3 patches as applied/queued to 3.2. Ben. --=20 Ben Hutchings compatible: Gracefully accepts erroneous data from any source --=-U78bAn1SjG7M8atN40fv Content-Type: text/x-patch; charset="UTF-8"; name*0=0001-jbd2-split-updating-of-journal-superblock-and-marking-journa; name*1=l-empty.patch Content-Description: Content-Disposition: attachment; filename*0=0001-jbd2-split-updating-of-journal-superblock-and-marking-jo; filename*1=urnal-empty.patch Content-Transfer-Encoding: base64 RnJvbTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KRGF0ZTogVHVlLCAxMyBNYXIgMjAxMiAxNTo0 MTowNCAtMDQwMApTdWJqZWN0OiBqYmQyOiBzcGxpdCB1cGRhdGluZyBvZiBqb3VybmFsIHN1cGVy YmxvY2sgYW5kIG1hcmtpbmcgam91cm5hbCBlbXB0eQoKY29tbWl0IDI0YmNjODljN2U3YzY0OTgy ZTYxOTJiNDk1MmEwYTkyMzc5ZmMzNDEgdXBzdHJlYW0uCgpUaGVyZSBhcmUgdGhyZWUgY2FzZSBv ZiB1cGRhdGluZyBqb3VybmFsIHN1cGVyYmxvY2suIEluIHRoZSBmaXJzdCBjYXNlLCB3ZSB3YW50 CnRvIG1hcmsgam91cm5hbCBhcyBlbXB0eSAoc2V0dGluZyBzX3NlcXVlbmNlIHRvIDApLCBpbiB0 aGUgc2Vjb25kIGNhc2Ugd2Ugd2FudAp0byB1cGRhdGUgbG9nIHRhaWwsIGluIHRoZSB0aGlyZCBj YXNlIHdlIHdhbnQgdG8gdXBkYXRlIHNfZXJybm8uIFNwbGl0IHRoZXNlCmNhc2VzIGludG8gc2Vw YXJhdGUgZnVuY3Rpb25zLiBJdCBtYWtlcyB0aGUgY29kZSBzbGlnaHRseSBtb3JlIHN0cmFpZ2h0 Zm9yd2FyZAphbmQgbGF0ZXIgcGF0Y2hlcyB3aWxsIG1ha2UgdGhlIGRpc3RpbmN0aW9uIGV2ZW4g bW9yZSBpbXBvcnRhbnQuCgpTaWduZWQtb2ZmLWJ5OiBKYW4gS2FyYSA8amFja0BzdXNlLmN6PgpT aWduZWQtb2ZmLWJ5OiAiVGhlb2RvcmUgVHMnbyIgPHR5dHNvQG1pdC5lZHU+Cltid2g6IFByZXJl cXVpc2l0ZSBmb3IgImpiZDI6IGZpeCBvY2ZzMiBjb3JydXB0IHdoZW4gdXBkYXRpbmcgam91cm5h bAogc3VwZXJibG9jayBmYWlscyIuCiBCYWNrcG9ydGVkIHRvIDMuMjogZHJvcCBjaGFuZ2VzIHRv IHRyYWNlIGV2ZW50cy5dClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbkBkZWNhZGVu dC5vcmcudWs+Ci0tLQotLS0gYS9mcy9qYmQyL2NoZWNrcG9pbnQuYworKysgYi9mcy9qYmQyL2No ZWNrcG9pbnQuYwpAQCAtNTUwLDcgKzU1MCw3IEBAIGludCBqYmQyX2NsZWFudXBfam91cm5hbF90 YWlsKGpvdXJuYWxfdAogCSAgICAoam91cm5hbC0+al9mbGFncyAmIEpCRDJfQkFSUklFUikpCiAJ CWJsa2Rldl9pc3N1ZV9mbHVzaChqb3VybmFsLT5qX2ZzX2RldiwgR0ZQX0tFUk5FTCwgTlVMTCk7 CiAJaWYgKCEoam91cm5hbC0+al9mbGFncyAmIEpCRDJfQUJPUlQpKQotCQlqYmQyX2pvdXJuYWxf dXBkYXRlX3N1cGVyYmxvY2soam91cm5hbCwgMSk7CisJCWpiZDJfam91cm5hbF91cGRhdGVfc2Jf bG9nX3RhaWwoam91cm5hbCk7CiAJcmV0dXJuIDA7CiB9CiAKLS0tIGEvZnMvamJkMi9jb21taXQu YworKysgYi9mcy9qYmQyL2NvbW1pdC5jCkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBqYmQyX2pv dXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uKGpvdQogCS8qIERvIHdlIG5lZWQgdG8gZXJhc2UgdGhl IGVmZmVjdHMgb2YgYSBwcmlvciBqYmQyX2pvdXJuYWxfZmx1c2g/ICovCiAJaWYgKGpvdXJuYWwt PmpfZmxhZ3MgJiBKQkQyX0ZMVVNIRUQpIHsKIAkJamJkX2RlYnVnKDMsICJzdXBlciBibG9jayB1 cGRhdGVkXG4iKTsKLQkJamJkMl9qb3VybmFsX3VwZGF0ZV9zdXBlcmJsb2NrKGpvdXJuYWwsIDEp OworCQlqYmQyX2pvdXJuYWxfdXBkYXRlX3NiX2xvZ190YWlsKGpvdXJuYWwpOwogCX0gZWxzZSB7 CiAJCWpiZF9kZWJ1ZygzLCAic3VwZXJibG9jayBub3QgdXBkYXRlZFxuIik7CiAJfQotLS0gYS9m cy9qYmQyL2pvdXJuYWwuYworKysgYi9mcy9qYmQyL2pvdXJuYWwuYwpAQCAtMTE0MywzOSArMTE0 MywyOCBAQCBzdGF0aWMgaW50IGpvdXJuYWxfcmVzZXQoam91cm5hbF90ICpqb3VyCiAKIAlqb3Vy bmFsLT5qX21heF90cmFuc2FjdGlvbl9idWZmZXJzID0gam91cm5hbC0+al9tYXhsZW4gLyA0Owog Ci0JLyogQWRkIHRoZSBkeW5hbWljIGZpZWxkcyBhbmQgd3JpdGUgaXQgdG8gZGlzay4gKi8KLQlq YmQyX2pvdXJuYWxfdXBkYXRlX3N1cGVyYmxvY2soam91cm5hbCwgMSk7Ci0JcmV0dXJuIGpiZDJf am91cm5hbF9zdGFydF90aHJlYWQoam91cm5hbCk7Ci19Ci0KLS8qKgotICogdm9pZCBqYmQyX2pv dXJuYWxfdXBkYXRlX3N1cGVyYmxvY2soKSAtIFVwZGF0ZSBqb3VybmFsIHNiIG9uIGRpc2suCi0g KiBAam91cm5hbDogVGhlIGpvdXJuYWwgdG8gdXBkYXRlLgotICogQHdhaXQ6IFNldCB0byAnMCcg aWYgeW91IGRvbid0IHdhbnQgdG8gd2FpdCBmb3IgSU8gY29tcGxldGlvbi4KLSAqCi0gKiBVcGRh dGUgYSBqb3VybmFsJ3MgZHluYW1pYyBzdXBlcmJsb2NrIGZpZWxkcyBhbmQgd3JpdGUgaXQgdG8g ZGlzaywKLSAqIG9wdGlvbmFsbHkgd2FpdGluZyBmb3IgdGhlIElPIHRvIGNvbXBsZXRlLgotICov Ci12b2lkIGpiZDJfam91cm5hbF91cGRhdGVfc3VwZXJibG9jayhqb3VybmFsX3QgKmpvdXJuYWws IGludCB3YWl0KQotewotCWpvdXJuYWxfc3VwZXJibG9ja190ICpzYiA9IGpvdXJuYWwtPmpfc3Vw ZXJibG9jazsKLQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoID0gam91cm5hbC0+al9zYl9idWZmZXI7 Ci0KIAkvKgogCSAqIEFzIGEgc3BlY2lhbCBjYXNlLCBpZiB0aGUgb24tZGlzayBjb3B5IGlzIGFs cmVhZHkgbWFya2VkIGFzIG5lZWRpbmcKLQkgKiBubyByZWNvdmVyeSAoc19zdGFydCA9PSAwKSBh bmQgdGhlcmUgYXJlIG5vIG91dHN0YW5kaW5nIHRyYW5zYWN0aW9ucwotCSAqIGluIHRoZSBmaWxl c3lzdGVtLCB0aGVuIHdlIGNhbiBzYWZlbHkgZGVmZXIgdGhlIHN1cGVyYmxvY2sgdXBkYXRlCi0J ICogdW50aWwgdGhlIG5leHQgY29tbWl0IGJ5IHNldHRpbmcgSkJEMl9GTFVTSEVELiAgVGhpcyBh dm9pZHMKKwkgKiBubyByZWNvdmVyeSAoc19zdGFydCA9PSAwKSwgdGhlbiB3ZSBjYW4gc2FmZWx5 IGRlZmVyIHRoZSBzdXBlcmJsb2NrCisJICogdXBkYXRlIHVudGlsIHRoZSBuZXh0IGNvbW1pdCBi eSBzZXR0aW5nIEpCRDJfRkxVU0hFRC4gIFRoaXMgYXZvaWRzCiAJICogYXR0ZW1wdGluZyBhIHdy aXRlIHRvIGEgcG90ZW50aWFsLXJlYWRvbmx5IGRldmljZS4KIAkgKi8KLQlpZiAoc2ItPnNfc3Rh cnQgPT0gMCAmJiBqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UgPT0KLQkJCQlqb3VybmFsLT5qX3Ry YW5zYWN0aW9uX3NlcXVlbmNlKSB7CisJaWYgKHNiLT5zX3N0YXJ0ID09IDApIHsKIAkJamJkX2Rl YnVnKDEsICJKQkQyOiBTa2lwcGluZyBzdXBlcmJsb2NrIHVwZGF0ZSBvbiByZWNvdmVyZWQgc2Ig IgogCQkJIihzdGFydCAlbGQsIHNlcSAlZCwgZXJybm8gJWQpXG4iLAogCQkJam91cm5hbC0+al90 YWlsLCBqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UsCiAJCQlqb3VybmFsLT5qX2Vycm5vKTsKLQkJ Z290byBvdXQ7CisJCWpvdXJuYWwtPmpfZmxhZ3MgfD0gSkJEMl9GTFVTSEVEOworCX0gZWxzZSB7 CisJCS8qIEFkZCB0aGUgZHluYW1pYyBmaWVsZHMgYW5kIHdyaXRlIGl0IHRvIGRpc2suICovCisJ CWpiZDJfam91cm5hbF91cGRhdGVfc2JfbG9nX3RhaWwoam91cm5hbCk7CiAJfQorCXJldHVybiBq YmQyX2pvdXJuYWxfc3RhcnRfdGhyZWFkKGpvdXJuYWwpOworfQorCitzdGF0aWMgdm9pZCBqYmQy X3dyaXRlX3N1cGVyYmxvY2soam91cm5hbF90ICpqb3VybmFsKQoreworCXN0cnVjdCBidWZmZXJf aGVhZCAqYmggPSBqb3VybmFsLT5qX3NiX2J1ZmZlcjsKIAogCWlmIChidWZmZXJfd3JpdGVfaW9f ZXJyb3IoYmgpKSB7CiAJCS8qCkBAIC0xMTkzLDQ3ICsxMTgyLDk3IEBAIHZvaWQgamJkMl9qb3Vy bmFsX3VwZGF0ZV9zdXBlcmJsb2NrKGpvdXIKIAkJc2V0X2J1ZmZlcl91cHRvZGF0ZShiaCk7CiAJ fQogCisJQlVGRkVSX1RSQUNFKGJoLCAibWFya2luZyBkaXJ0eSIpOworCW1hcmtfYnVmZmVyX2Rp cnR5KGJoKTsKKwlzeW5jX2RpcnR5X2J1ZmZlcihiaCk7CisJaWYgKGJ1ZmZlcl93cml0ZV9pb19l cnJvcihiaCkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJKQkQyOiBJL08gZXJyb3IgZGV0ZWN0ZWQg IgorCQkgICAgICAgIndoZW4gdXBkYXRpbmcgam91cm5hbCBzdXBlcmJsb2NrIGZvciAlcy5cbiIs CisJCSAgICAgICBqb3VybmFsLT5qX2Rldm5hbWUpOworCQljbGVhcl9idWZmZXJfd3JpdGVfaW9f ZXJyb3IoYmgpOworCQlzZXRfYnVmZmVyX3VwdG9kYXRlKGJoKTsKKwl9Cit9CisKKy8qKgorICog amJkMl9qb3VybmFsX3VwZGF0ZV9zYl9sb2dfdGFpbCgpIC0gVXBkYXRlIGxvZyB0YWlsIGluIGpv dXJuYWwgc2Igb24gZGlzay4KKyAqIEBqb3VybmFsOiBUaGUgam91cm5hbCB0byB1cGRhdGUuCisg KgorICogVXBkYXRlIGEgam91cm5hbCdzIHN1cGVyYmxvY2sgaW5mb3JtYXRpb24gYWJvdXQgbG9n IHRhaWwgYW5kIHdyaXRlIGl0IHRvCisgKiBkaXNrLCB3YWl0aW5nIGZvciB0aGUgSU8gdG8gY29t cGxldGUuCisgKi8KK3ZvaWQgamJkMl9qb3VybmFsX3VwZGF0ZV9zYl9sb2dfdGFpbChqb3VybmFs X3QgKmpvdXJuYWwpCit7CisJam91cm5hbF9zdXBlcmJsb2NrX3QgKnNiID0gam91cm5hbC0+al9z dXBlcmJsb2NrOworCiAJcmVhZF9sb2NrKCZqb3VybmFsLT5qX3N0YXRlX2xvY2spOwotCWpiZF9k ZWJ1ZygxLCAiSkJEMjogdXBkYXRpbmcgc3VwZXJibG9jayAoc3RhcnQgJWxkLCBzZXEgJWQsIGVy cm5vICVkKVxuIiwKLQkJICBqb3VybmFsLT5qX3RhaWwsIGpvdXJuYWwtPmpfdGFpbF9zZXF1ZW5j ZSwgam91cm5hbC0+al9lcnJubyk7CisJamJkX2RlYnVnKDEsICJKQkQyOiB1cGRhdGluZyBzdXBl cmJsb2NrIChzdGFydCAlbGQsIHNlcSAlZClcbiIsCisJCSAgam91cm5hbC0+al90YWlsLCBqb3Vy bmFsLT5qX3RhaWxfc2VxdWVuY2UpOwogCiAJc2ItPnNfc2VxdWVuY2UgPSBjcHVfdG9fYmUzMihq b3VybmFsLT5qX3RhaWxfc2VxdWVuY2UpOwogCXNiLT5zX3N0YXJ0ICAgID0gY3B1X3RvX2JlMzIo am91cm5hbC0+al90YWlsKTsKLQlzYi0+c19lcnJubyAgICA9IGNwdV90b19iZTMyKGpvdXJuYWwt PmpfZXJybm8pOwogCXJlYWRfdW5sb2NrKCZqb3VybmFsLT5qX3N0YXRlX2xvY2spOwogCi0JQlVG RkVSX1RSQUNFKGJoLCAibWFya2luZyBkaXJ0eSIpOwotCW1hcmtfYnVmZmVyX2RpcnR5KGJoKTsK LQlpZiAod2FpdCkgewotCQlzeW5jX2RpcnR5X2J1ZmZlcihiaCk7Ci0JCWlmIChidWZmZXJfd3Jp dGVfaW9fZXJyb3IoYmgpKSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgIkpCRDI6IEkvTyBlcnJvciBk ZXRlY3RlZCAiCi0JCQkgICAgICAgIndoZW4gdXBkYXRpbmcgam91cm5hbCBzdXBlcmJsb2NrIGZv ciAlcy5cbiIsCi0JCQkgICAgICAgam91cm5hbC0+al9kZXZuYW1lKTsKLQkJCWNsZWFyX2J1ZmZl cl93cml0ZV9pb19lcnJvcihiaCk7Ci0JCQlzZXRfYnVmZmVyX3VwdG9kYXRlKGJoKTsKLQkJfQot CX0gZWxzZQotCQl3cml0ZV9kaXJ0eV9idWZmZXIoYmgsIFdSSVRFKTsKKwlqYmQyX3dyaXRlX3N1 cGVyYmxvY2soam91cm5hbCk7CisJLyogTG9nIGlzIG5vIGxvbmdlciBlbXB0eSAqLworCXdyaXRl X2xvY2soJmpvdXJuYWwtPmpfc3RhdGVfbG9jayk7CisJV0FSTl9PTighc2ItPnNfc2VxdWVuY2Up OworCWpvdXJuYWwtPmpfZmxhZ3MgJj0gfkpCRDJfRkxVU0hFRDsKKwl3cml0ZV91bmxvY2soJmpv dXJuYWwtPmpfc3RhdGVfbG9jayk7Cit9CiAKLW91dDoKLQkvKiBJZiB3ZSBoYXZlIGp1c3QgZmx1 c2hlZCB0aGUgbG9nIChieSBtYXJraW5nIHNfc3RhcnQ9PTApLCB0aGVuCi0JICogYW55IGZ1dHVy ZSBjb21taXQgd2lsbCBoYXZlIHRvIGJlIGNhcmVmdWwgdG8gdXBkYXRlIHRoZQotCSAqIHN1cGVy YmxvY2sgYWdhaW4gdG8gcmUtcmVjb3JkIHRoZSB0cnVlIHN0YXJ0IG9mIHRoZSBsb2cuICovCisv KioKKyAqIGpiZDJfbWFya19qb3VybmFsX2VtcHR5KCkgLSBNYXJrIG9uIGRpc2sgam91cm5hbCBh cyBlbXB0eS4KKyAqIEBqb3VybmFsOiBUaGUgam91cm5hbCB0byB1cGRhdGUuCisgKgorICogVXBk YXRlIGEgam91cm5hbCdzIGR5bmFtaWMgc3VwZXJibG9jayBmaWVsZHMgdG8gc2hvdyB0aGF0IGpv dXJuYWwgaXMgZW1wdHkuCisgKiBXcml0ZSB1cGRhdGVkIHN1cGVyYmxvY2sgdG8gZGlzayB3YWl0 aW5nIGZvciBJTyB0byBjb21wbGV0ZS4KKyAqLworc3RhdGljIHZvaWQgamJkMl9tYXJrX2pvdXJu YWxfZW1wdHkoam91cm5hbF90ICpqb3VybmFsKQoreworCWpvdXJuYWxfc3VwZXJibG9ja190ICpz YiA9IGpvdXJuYWwtPmpfc3VwZXJibG9jazsKIAorCXJlYWRfbG9jaygmam91cm5hbC0+al9zdGF0 ZV9sb2NrKTsKKwlqYmRfZGVidWcoMSwgIkpCRDI6IE1hcmtpbmcgam91cm5hbCBhcyBlbXB0eSAo c2VxICVkKVxuIiwKKwkJICBqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UpOworCisJc2ItPnNfc2Vx dWVuY2UgPSBjcHVfdG9fYmUzMihqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UpOworCXNiLT5zX3N0 YXJ0ICAgID0gY3B1X3RvX2JlMzIoMCk7CisJcmVhZF91bmxvY2soJmpvdXJuYWwtPmpfc3RhdGVf bG9jayk7CisKKwlqYmQyX3dyaXRlX3N1cGVyYmxvY2soam91cm5hbCk7CisKKwkvKiBMb2cgaXMg bm8gbG9uZ2VyIGVtcHR5ICovCiAJd3JpdGVfbG9jaygmam91cm5hbC0+al9zdGF0ZV9sb2NrKTsK LQlpZiAoc2ItPnNfc3RhcnQpCi0JCWpvdXJuYWwtPmpfZmxhZ3MgJj0gfkpCRDJfRkxVU0hFRDsK LQllbHNlCi0JCWpvdXJuYWwtPmpfZmxhZ3MgfD0gSkJEMl9GTFVTSEVEOworCWpvdXJuYWwtPmpf ZmxhZ3MgfD0gSkJEMl9GTFVTSEVEOwogCXdyaXRlX3VubG9jaygmam91cm5hbC0+al9zdGF0ZV9s b2NrKTsKIH0KIAorCisvKioKKyAqIGpiZDJfam91cm5hbF91cGRhdGVfc2JfZXJybm8oKSAtIFVw ZGF0ZSBlcnJvciBpbiB0aGUgam91cm5hbC4KKyAqIEBqb3VybmFsOiBUaGUgam91cm5hbCB0byB1 cGRhdGUuCisgKgorICogVXBkYXRlIGEgam91cm5hbCdzIGVycm5vLiAgV3JpdGUgdXBkYXRlZCBz dXBlcmJsb2NrIHRvIGRpc2sgd2FpdGluZyBmb3IgSU8KKyAqIHRvIGNvbXBsZXRlLgorICovCitz dGF0aWMgdm9pZCBqYmQyX2pvdXJuYWxfdXBkYXRlX3NiX2Vycm5vKGpvdXJuYWxfdCAqam91cm5h bCkKK3sKKwlqb3VybmFsX3N1cGVyYmxvY2tfdCAqc2IgPSBqb3VybmFsLT5qX3N1cGVyYmxvY2s7 CisKKwlyZWFkX2xvY2soJmpvdXJuYWwtPmpfc3RhdGVfbG9jayk7CisJamJkX2RlYnVnKDEsICJK QkQyOiB1cGRhdGluZyBzdXBlcmJsb2NrIGVycm9yIChlcnJubyAlZClcbiIsCisJCSAgam91cm5h bC0+al9lcnJubyk7CisJc2ItPnNfZXJybm8gICAgPSBjcHVfdG9fYmUzMihqb3VybmFsLT5qX2Vy cm5vKTsKKwlyZWFkX3VubG9jaygmam91cm5hbC0+al9zdGF0ZV9sb2NrKTsKKworCWpiZDJfd3Jp dGVfc3VwZXJibG9jayhqb3VybmFsKTsKK30KKwogLyoKICAqIFJlYWQgdGhlIHN1cGVyYmxvY2sg Zm9yIGEgZ2l2ZW4gam91cm5hbCwgcGVyZm9ybWluZyBpbml0aWFsCiAgKiB2YWxpZGF0aW9uIG9m IHRoZSBmb3JtYXQuCiAgKi8KLQogc3RhdGljIGludCBqb3VybmFsX2dldF9zdXBlcmJsb2NrKGpv dXJuYWxfdCAqam91cm5hbCkKIHsKIAlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoOwpAQCAtMTQyNiwx NSArMTQ2NSwxMCBAQCBpbnQgamJkMl9qb3VybmFsX2Rlc3Ryb3koam91cm5hbF90ICpqb3VyCiAJ c3Bpbl91bmxvY2soJmpvdXJuYWwtPmpfbGlzdF9sb2NrKTsKIAogCWlmIChqb3VybmFsLT5qX3Ni X2J1ZmZlcikgewotCQlpZiAoIWlzX2pvdXJuYWxfYWJvcnRlZChqb3VybmFsKSkgewotCQkJLyog V2UgY2FuIG5vdyBtYXJrIHRoZSBqb3VybmFsIGFzIGVtcHR5LiAqLwotCQkJam91cm5hbC0+al90 YWlsID0gMDsKLQkJCWpvdXJuYWwtPmpfdGFpbF9zZXF1ZW5jZSA9Ci0JCQkJKytqb3VybmFsLT5q X3RyYW5zYWN0aW9uX3NlcXVlbmNlOwotCQkJamJkMl9qb3VybmFsX3VwZGF0ZV9zdXBlcmJsb2Nr KGpvdXJuYWwsIDEpOwotCQl9IGVsc2UgeworCQlpZiAoIWlzX2pvdXJuYWxfYWJvcnRlZChqb3Vy bmFsKSkKKwkJCWpiZDJfbWFya19qb3VybmFsX2VtcHR5KGpvdXJuYWwpOworCQllbHNlCiAJCQll cnIgPSAtRUlPOwotCQl9CiAJCWJyZWxzZShqb3VybmFsLT5qX3NiX2J1ZmZlcik7CiAJfQogCkBA IC0xNjQ4LDcgKzE2ODIsNiBAQCBpbnQgamJkMl9qb3VybmFsX2ZsdXNoKGpvdXJuYWxfdCAqam91 cm5hCiB7CiAJaW50IGVyciA9IDA7CiAJdHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24gPSBOVUxM OwotCXVuc2lnbmVkIGxvbmcgb2xkX3RhaWw7CiAKIAl3cml0ZV9sb2NrKCZqb3VybmFsLT5qX3N0 YXRlX2xvY2spOwogCkBAIC0xNjkwLDE0ICsxNzIzLDggQEAgaW50IGpiZDJfam91cm5hbF9mbHVz aChqb3VybmFsX3QgKmpvdXJuYQogCSAqIHRoZSBtYWdpYyBjb2RlIGZvciBhIGZ1bGx5LXJlY292 ZXJlZCBzdXBlcmJsb2NrLiAgQW55IGZ1dHVyZQogCSAqIGNvbW1pdHMgb2YgZGF0YSB0byB0aGUg am91cm5hbCB3aWxsIHJlc3RvcmUgdGhlIGN1cnJlbnQKIAkgKiBzX3N0YXJ0IHZhbHVlLiAqLwor CWpiZDJfbWFya19qb3VybmFsX2VtcHR5KGpvdXJuYWwpOwogCXdyaXRlX2xvY2soJmpvdXJuYWwt Pmpfc3RhdGVfbG9jayk7Ci0Jb2xkX3RhaWwgPSBqb3VybmFsLT5qX3RhaWw7Ci0Jam91cm5hbC0+ al90YWlsID0gMDsKLQl3cml0ZV91bmxvY2soJmpvdXJuYWwtPmpfc3RhdGVfbG9jayk7Ci0JamJk Ml9qb3VybmFsX3VwZGF0ZV9zdXBlcmJsb2NrKGpvdXJuYWwsIDEpOwotCXdyaXRlX2xvY2soJmpv dXJuYWwtPmpfc3RhdGVfbG9jayk7Ci0Jam91cm5hbC0+al90YWlsID0gb2xkX3RhaWw7Ci0KIAlK X0FTU0VSVCgham91cm5hbC0+al9ydW5uaW5nX3RyYW5zYWN0aW9uKTsKIAlKX0FTU0VSVCgham91 cm5hbC0+al9jb21taXR0aW5nX3RyYW5zYWN0aW9uKTsKIAlKX0FTU0VSVCgham91cm5hbC0+al9j aGVja3BvaW50X3RyYW5zYWN0aW9ucyk7CkBAIC0xNzM4LDcgKzE3NjUsNyBAQCBpbnQgamJkMl9q b3VybmFsX3dpcGUoam91cm5hbF90ICpqb3VybmFsCiAKIAllcnIgPSBqYmQyX2pvdXJuYWxfc2tp cF9yZWNvdmVyeShqb3VybmFsKTsKIAlpZiAod3JpdGUpCi0JCWpiZDJfam91cm5hbF91cGRhdGVf c3VwZXJibG9jayhqb3VybmFsLCAxKTsKKwkJamJkMl9tYXJrX2pvdXJuYWxfZW1wdHkoam91cm5h bCk7CiAKICBub19yZWNvdmVyeToKIAlyZXR1cm4gZXJyOwpAQCAtMTc4OCw3ICsxODE1LDcgQEAg c3RhdGljIHZvaWQgX19qb3VybmFsX2Fib3J0X3NvZnQgKGpvdXJuYQogCV9famJkMl9qb3VybmFs X2Fib3J0X2hhcmQoam91cm5hbCk7CiAKIAlpZiAoZXJybm8pCi0JCWpiZDJfam91cm5hbF91cGRh dGVfc3VwZXJibG9jayhqb3VybmFsLCAxKTsKKwkJamJkMl9qb3VybmFsX3VwZGF0ZV9zYl9lcnJu byhqb3VybmFsKTsKIH0KIAogLyoqCi0tLSBhL2luY2x1ZGUvbGludXgvamJkMi5oCisrKyBiL2lu Y2x1ZGUvbGludXgvamJkMi5oCkBAIC0xMDgzLDcgKzEwODMsNyBAQCBleHRlcm4gaW50CSAgIGpi ZDJfam91cm5hbF9kZXN0cm95ICAgIChqCiBleHRlcm4gaW50CSAgIGpiZDJfam91cm5hbF9yZWNv dmVyICAgIChqb3VybmFsX3QgKmpvdXJuYWwpOwogZXh0ZXJuIGludAkgICBqYmQyX2pvdXJuYWxf d2lwZSAgICAgICAoam91cm5hbF90ICosIGludCk7CiBleHRlcm4gaW50CSAgIGpiZDJfam91cm5h bF9za2lwX3JlY292ZXJ5CShqb3VybmFsX3QgKik7Ci1leHRlcm4gdm9pZAkgICBqYmQyX2pvdXJu YWxfdXBkYXRlX3N1cGVyYmxvY2sJKGpvdXJuYWxfdCAqLCBpbnQpOworZXh0ZXJuIHZvaWQJICAg amJkMl9qb3VybmFsX3VwZGF0ZV9zYl9sb2dfdGFpbAkoam91cm5hbF90ICopOwogZXh0ZXJuIHZv aWQJICAgX19qYmQyX2pvdXJuYWxfYWJvcnRfaGFyZAkoam91cm5hbF90ICopOwogZXh0ZXJuIHZv aWQJICAgamJkMl9qb3VybmFsX2Fib3J0ICAgICAgKGpvdXJuYWxfdCAqLCBpbnQpOwogZXh0ZXJu IGludAkgICBqYmQyX2pvdXJuYWxfZXJybm8gICAgICAoam91cm5hbF90ICopOwo= --=-U78bAn1SjG7M8atN40fv Content-Type: text/x-patch; charset="UTF-8"; name*0=0003-jbd2-protect-all-log-tail-updates-with-j_checkpoint_mutex.pa; name*1=tch Content-Description: Content-Disposition: attachment; filename*0=0003-jbd2-protect-all-log-tail-updates-with-j_checkpoint_mute; filename*1=x.patch Content-Transfer-Encoding: base64 RnJvbTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KRGF0ZTogVHVlLCAxMyBNYXIgMjAxMiAxNTo0 MzowNCAtMDQwMApTdWJqZWN0OiBqYmQyOiBwcm90ZWN0IGFsbCBsb2cgdGFpbCB1cGRhdGVzIHdp dGggal9jaGVja3BvaW50X211dGV4Cgpjb21taXQgYTc4YmIxMWQ3YWNkNTI1NjIzYzZhMGMyZmY0 ZTIxM2Q1Mjc1NzNmYSB1cHN0cmVhbS4KClRoZXJlIGFyZSBzb21lIGxvZyB0YWlsIHVwZGF0ZXMg dGhhdCBhcmUgbm90IHByb3RlY3RlZCBieSBqX2NoZWNrcG9pbnRfbXV0ZXguClNvbWUgb2YgdGhl c2UgYXJlIGhhcm1sZXNzIGJlY2F1c2UgdGhleSBoYXBwZW4gZHVyaW5nIHN0YXJ0dXAgb3Igc2h1 dGRvd24gYnV0CnVwZGF0ZXMgaW4gamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbigpIGFu ZCBqYmQyX2pvdXJuYWxfZmx1c2goKSBjYW4KcmVhbGx5IHJhY2Ugd2l0aCBvdGhlciBsb2cgdGFp bCB1cGRhdGVzIChlLmcuIHNvbWVvbmUgZG9pbmcKamJkMl9qb3VybmFsX2ZsdXNoKCkgd2l0aCBz b21lb25lIHJ1bm5pbmcgamJkMl9jbGVhbnVwX2pvdXJuYWxfdGFpbCgpKS4gU28KcHJvdGVjdCBh bGwgbG9nIHRhaWwgdXBkYXRlcyB3aXRoIGpfY2hlY2twb2ludF9tdXRleC4KClNpZ25lZC1vZmYt Ynk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+ClNpZ25lZC1vZmYtYnk6ICJUaGVvZG9yZSBUcydv IiA8dHl0c29AbWl0LmVkdT4KW2J3aDogQmFja3BvcnRlZCB0byAzLjI6CiAtIEFkanVzdCBjb250 ZXh0CiAtIEFkZCB1bmxvY2sgb24gdGhlIGVycm9yIHBhdGggaW4gamJkMl9qb3VybmFsX2ZsdXNo KCldClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbkBkZWNhZGVudC5vcmcudWs+CkNj OiBCYXJ0b3N6IEt3aXRuaWV3c2tpIDx6ZXJnMjAwMEBhc3RyYWwub3JnLnBsPgotLS0KIGZzL2pi ZDIvY29tbWl0LmMgIHwgIDIgKysKIGZzL2piZDIvam91cm5hbC5jIHwgMTkgKysrKysrKysrKysr KysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQoKLS0tIGEvZnMvamJkMi9jb21taXQuYworKysgYi9mcy9qYmQyL2NvbW1pdC5jCkBAIC0zNDAs NiArMzQwLDcgQEAgdm9pZCBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uKGpvdQogCS8q IERvIHdlIG5lZWQgdG8gZXJhc2UgdGhlIGVmZmVjdHMgb2YgYSBwcmlvciBqYmQyX2pvdXJuYWxf Zmx1c2g/ICovCiAJaWYgKGpvdXJuYWwtPmpfZmxhZ3MgJiBKQkQyX0ZMVVNIRUQpIHsKIAkJamJk X2RlYnVnKDMsICJzdXBlciBibG9jayB1cGRhdGVkXG4iKTsKKwkJbXV0ZXhfbG9jaygmam91cm5h bC0+al9jaGVja3BvaW50X211dGV4KTsKIAkJLyoKIAkJICogV2UgaG9sZCBqX2NoZWNrcG9pbnRf bXV0ZXggc28gdGFpbCBjYW5ub3QgY2hhbmdlIHVuZGVyIHVzLgogCQkgKiBXZSBkb24ndCBuZWVk IGFueSBzcGVjaWFsIGRhdGEgZ3VhcmFudGVlcyBmb3Igd3JpdGluZyBzYgpAQCAtMzUwLDYgKzM1 MSw3IEBAIHZvaWQgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbihqb3UKIAkJCQkJCWpv dXJuYWwtPmpfdGFpbF9zZXF1ZW5jZSwKIAkJCQkJCWpvdXJuYWwtPmpfdGFpbCwKIAkJCQkJCVdS SVRFX1NZTkMpOworCQltdXRleF91bmxvY2soJmpvdXJuYWwtPmpfY2hlY2twb2ludF9tdXRleCk7 CiAJfSBlbHNlIHsKIAkJamJkX2RlYnVnKDMsICJzdXBlcmJsb2NrIG5vdCB1cGRhdGVkXG4iKTsK IAl9Ci0tLSBhL2ZzL2piZDIvam91cm5hbC5jCisrKyBiL2ZzL2piZDIvam91cm5hbC5jCkBAIC0x MjQyLDYgKzEyNDIsOCBAQCBzdGF0aWMgaW50IGpvdXJuYWxfcmVzZXQoam91cm5hbF90ICpqb3Vy CiAJCQlqb3VybmFsLT5qX2Vycm5vKTsKIAkJam91cm5hbC0+al9mbGFncyB8PSBKQkQyX0ZMVVNI RUQ7CiAJfSBlbHNlIHsKKwkJLyogTG9jayBoZXJlIHRvIG1ha2UgYXNzZXJ0aW9ucyBoYXBweS4u LiAqLworCQltdXRleF9sb2NrKCZqb3VybmFsLT5qX2NoZWNrcG9pbnRfbXV0ZXgpOwogCQkvKgog CQkgKiBVcGRhdGUgbG9nIHRhaWwgaW5mb3JtYXRpb24uIFdlIHVzZSBXUklURV9GVUEgc2luY2Ug bmV3CiAJCSAqIHRyYW5zYWN0aW9uIHdpbGwgc3RhcnQgcmV1c2luZyBqb3VybmFsIHNwYWNlIGFu ZCBzbyB3ZQpAQCAtMTI1Miw2ICsxMjU0LDcgQEAgc3RhdGljIGludCBqb3VybmFsX3Jlc2V0KGpv dXJuYWxfdCAqam91cgogCQkJCQkJam91cm5hbC0+al90YWlsX3NlcXVlbmNlLAogCQkJCQkJam91 cm5hbC0+al90YWlsLAogCQkJCQkJV1JJVEVfRlVBKTsKKwkJbXV0ZXhfdW5sb2NrKCZqb3VybmFs LT5qX2NoZWNrcG9pbnRfbXV0ZXgpOwogCX0KIAlyZXR1cm4gamJkMl9qb3VybmFsX3N0YXJ0X3Ro cmVhZChqb3VybmFsKTsKIH0KQEAgLTEzMTQsNiArMTMxNyw3IEBAIGludCBqYmQyX2pvdXJuYWxf dXBkYXRlX3NiX2xvZ190YWlsKGpvdXIKIAlqb3VybmFsX3N1cGVyYmxvY2tfdCAqc2IgPSBqb3Vy bmFsLT5qX3N1cGVyYmxvY2s7CiAJaW50IHJldDsKIAorCUJVR19PTighbXV0ZXhfaXNfbG9ja2Vk KCZqb3VybmFsLT5qX2NoZWNrcG9pbnRfbXV0ZXgpKTsKIAlqYmRfZGVidWcoMSwgIkpCRDI6IHVw ZGF0aW5nIHN1cGVyYmxvY2sgKHN0YXJ0ICVsdSwgc2VxICV1KVxuIiwKIAkJICB0YWlsX2Jsb2Nr LCB0YWlsX3RpZCk7CiAKQEAgLTEzNDQsNiArMTM0OCw3IEBAIHN0YXRpYyB2b2lkIGpiZDJfbWFy a19qb3VybmFsX2VtcHR5KGpvdXIKIHsKIAlqb3VybmFsX3N1cGVyYmxvY2tfdCAqc2IgPSBqb3Vy bmFsLT5qX3N1cGVyYmxvY2s7CiAKKwlCVUdfT04oIW11dGV4X2lzX2xvY2tlZCgmam91cm5hbC0+ al9jaGVja3BvaW50X211dGV4KSk7CiAJcmVhZF9sb2NrKCZqb3VybmFsLT5qX3N0YXRlX2xvY2sp OwogCWpiZF9kZWJ1ZygxLCAiSkJEMjogTWFya2luZyBqb3VybmFsIGFzIGVtcHR5IChzZXEgJWQp XG4iLAogCQkgIGpvdXJuYWwtPmpfdGFpbF9zZXF1ZW5jZSk7CkBAIC0xNTc3LDkgKzE1ODIsMTEg QEAgaW50IGpiZDJfam91cm5hbF9kZXN0cm95KGpvdXJuYWxfdCAqam91cgogCXNwaW5fdW5sb2Nr KCZqb3VybmFsLT5qX2xpc3RfbG9jayk7CiAKIAlpZiAoam91cm5hbC0+al9zYl9idWZmZXIpIHsK LQkJaWYgKCFpc19qb3VybmFsX2Fib3J0ZWQoam91cm5hbCkpCisJCWlmICghaXNfam91cm5hbF9h Ym9ydGVkKGpvdXJuYWwpKSB7CisJCQltdXRleF9sb2NrKCZqb3VybmFsLT5qX2NoZWNrcG9pbnRf bXV0ZXgpOwogCQkJamJkMl9tYXJrX2pvdXJuYWxfZW1wdHkoam91cm5hbCk7Ci0JCWVsc2UKKwkJ CW11dGV4X3VubG9jaygmam91cm5hbC0+al9jaGVja3BvaW50X211dGV4KTsKKwkJfSBlbHNlCiAJ CQllcnIgPSAtRUlPOwogCQlicmVsc2Uoam91cm5hbC0+al9zYl9idWZmZXIpOwogCX0KQEAgLTE4 MjgsMTAgKzE4MzUsMTMgQEAgaW50IGpiZDJfam91cm5hbF9mbHVzaChqb3VybmFsX3QgKmpvdXJu YQogCWlmIChpc19qb3VybmFsX2Fib3J0ZWQoam91cm5hbCkpCiAJCXJldHVybiAtRUlPOwogCisJ bXV0ZXhfbG9jaygmam91cm5hbC0+al9jaGVja3BvaW50X211dGV4KTsKIAlpZiAoIWVycikgewog CQllcnIgPSBqYmQyX2NsZWFudXBfam91cm5hbF90YWlsKGpvdXJuYWwpOwotCQlpZiAoZXJyIDwg MCkKKwkJaWYgKGVyciA8IDApIHsKKwkJCW11dGV4X3VubG9jaygmam91cm5hbC0+al9jaGVja3Bv aW50X211dGV4KTsKIAkJCWdvdG8gb3V0OworCQl9CiAJCWVyciA9IDA7CiAJfQogCkBAIC0xODQx LDYgKzE4NTEsNyBAQCBpbnQgamJkMl9qb3VybmFsX2ZsdXNoKGpvdXJuYWxfdCAqam91cm5hCiAJ ICogY29tbWl0cyBvZiBkYXRhIHRvIHRoZSBqb3VybmFsIHdpbGwgcmVzdG9yZSB0aGUgY3VycmVu dAogCSAqIHNfc3RhcnQgdmFsdWUuICovCiAJamJkMl9tYXJrX2pvdXJuYWxfZW1wdHkoam91cm5h bCk7CisJbXV0ZXhfdW5sb2NrKCZqb3VybmFsLT5qX2NoZWNrcG9pbnRfbXV0ZXgpOwogCXdyaXRl X2xvY2soJmpvdXJuYWwtPmpfc3RhdGVfbG9jayk7CiAJSl9BU1NFUlQoIWpvdXJuYWwtPmpfcnVu bmluZ190cmFuc2FjdGlvbik7CiAJSl9BU1NFUlQoIWpvdXJuYWwtPmpfY29tbWl0dGluZ190cmFu c2FjdGlvbik7CkBAIC0xODgyLDggKzE4OTMsMTIgQEAgaW50IGpiZDJfam91cm5hbF93aXBlKGpv dXJuYWxfdCAqam91cm5hbAogCQl3cml0ZSA/ICJDbGVhcmluZyIgOiAiSWdub3JpbmciKTsKIAog CWVyciA9IGpiZDJfam91cm5hbF9za2lwX3JlY292ZXJ5KGpvdXJuYWwpOwotCWlmICh3cml0ZSkK KwlpZiAod3JpdGUpIHsKKwkJLyogTG9jayB0byBtYWtlIGFzc2VydGlvbnMgaGFwcHkuLi4gKi8K KwkJbXV0ZXhfbG9jaygmam91cm5hbC0+al9jaGVja3BvaW50X211dGV4KTsKIAkJamJkMl9tYXJr X2pvdXJuYWxfZW1wdHkoam91cm5hbCk7CisJCW11dGV4X3VubG9jaygmam91cm5hbC0+al9jaGVj a3BvaW50X211dGV4KTsKKwl9CiAKICBub19yZWNvdmVyeToKIAlyZXR1cm4gZXJyOwo= --=-U78bAn1SjG7M8atN40fv Content-Type: text/x-patch; charset="UTF-8"; name*0=0002-jbd2-issue-cache-flush-after-checkpointing-even-with-interna; name*1=l.patch Content-Description: Content-Disposition: attachment; filename*0=0002-jbd2-issue-cache-flush-after-checkpointing-even-with-int; filename*1=ernal.patch Content-Transfer-Encoding: base64 RnJvbTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KRGF0ZTogVHVlLCAxMyBNYXIgMjAxMiAyMjoy Mjo1NCAtMDQwMApTdWJqZWN0OiBqYmQyOiBpc3N1ZSBjYWNoZSBmbHVzaCBhZnRlciBjaGVja3Bv aW50aW5nIGV2ZW4gd2l0aCBpbnRlcm5hbAogam91cm5hbAoKY29tbWl0IDc5ZmViNTIxYTQ0NzA1 MjYyZDE1Y2M4MTlhNDExN2E0NDdiMTFlYTcgdXBzdHJlYW0uCgpXaGVuIHdlIHJlYWNoIGpiZDJf Y2xlYW51cF9qb3VybmFsX3RhaWwoKSwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQKY2hlY2tw b2ludGVkIGJ1ZmZlcnMgYXJlIG9uIGEgc3RhYmxlIHN0b3JhZ2UgLSBlc3BlY2lhbGx5IGlmIGJ1 ZmZlcnMgd2VyZQp3cml0dGVuIG91dCBieSBqYmQyX2xvZ19kb19jaGVja3BvaW50KCksIHRoZXkg YXJlIGxpa2VseSB0byBiZSBvbmx5IGluIGRpc2sncwpjYWNoZXMuIFRodXMgd2hlbiB3ZSB1cGRh dGUgam91cm5hbCBzdXBlcmJsb2NrIGVmZmVjdGl2ZWx5IHJlbW92aW5nIG9sZAp0cmFuc2FjdGlv biBmcm9tIGpvdXJuYWwsIHRoaXMgd3JpdGUgb2Ygc3VwZXJibG9jayBjYW4gZ2V0IHRvIHN0YWJs ZSBzdG9yYWdlCmJlZm9yZSB0aG9zZSBjaGVja3BvaW50ZWQgYnVmZmVycyB3aGljaCBjYW4gcmVz dWx0IGluIGZpbGVzeXN0ZW0gY29ycnVwdGlvbgphZnRlciBhIGNyYXNoLiBUaHVzIHdlIG11c3Qg dW5jb25kaXRpb25hbGx5IGlzc3VlIGEgY2FjaGUgZmx1c2ggYmVmb3JlIHdlCnVwZGF0ZSBqb3Vy bmFsIHN1cGVyYmxvY2sgaW4gdGhlc2UgY2FzZXMuCgpBIHNpbWlsYXIgcHJvYmxlbSBjYW4gYWxz byBvY2N1ciBpZiBqb3VybmFsIHN1cGVyYmxvY2sgaXMgd3JpdHRlbiBvbmx5IGluCmRpc2sncyBj YWNoZXMsIG90aGVyIHRyYW5zYWN0aW9uIHN0YXJ0cyByZXVzaW5nIHNwYWNlIG9mIHRoZSB0cmFu c2FjdGlvbgpjbGVhbmVkIGZyb20gdGhlIGxvZyBhbmQgcG93ZXIgZmFpbHVyZSBoYXBwZW5zLiBT dWJzZXF1ZW50IGpvdXJuYWwgcmVwbGF5IHdvdWxkCnN0aWxsIHRyeSB0byByZXBsYXkgdGhlIG9s ZCB0cmFuc2FjdGlvbiBidXQgc29tZSBvZiBpdCdzIGJsb2NrcyBtYXkgYmUgYWxyZWFkeQpvdmVy d3JpdHRlbiBieSB0aGUgbmV3IHRyYW5zYWN0aW9uLiBGb3IgdGhpcyByZWFzb24gd2UgbXVzdCB1 c2UgV1JJVEVfRlVBIHdoZW4KdXBkYXRpbmcgbG9nIHRhaWwgYW5kIHdlIG11c3QgZmlyc3Qgd3Jp dGUgbmV3IGxvZyB0YWlsIHRvIGRpc2sgYW5kIHVwZGF0ZQppbi1tZW1vcnkgaW5mb3JtYXRpb24g b25seSBhZnRlciB0aGF0LgoKU2lnbmVkLW9mZi1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4K U2lnbmVkLW9mZi1ieTogIlRoZW9kb3JlIFRzJ28iIDx0eXRzb0BtaXQuZWR1PgpbYndoOiBQcmVy ZXF1aXNpdGUgZm9yICJqYmQyOiBmaXggb2NmczIgY29ycnVwdCB3aGVuIHVwZGF0aW5nIGpvdXJu YWwKIHN1cGVyYmxvY2sgZmFpbHMiLgogQmFja3BvcnRlZCB0byAzLjI6CiAtIEFkanVzdCBjb250 ZXh0CiAtIERyb3AgY2hhbmdlcyB0byBqYmQyX2pvdXJuYWxfdXBkYXRlX3NiX2xvZ190YWlsIHRy YWNlIGV2ZW50XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW5AZGVjYWRlbnQub3Jn LnVrPgotLS0KLS0tIGEvZnMvamJkMi9jaGVja3BvaW50LmMKKysrIGIvZnMvamJkMi9jaGVja3Bv aW50LmMKQEAgLTQ3OCw3OSArNDc4LDI4IEBAIG91dDoKIAogaW50IGpiZDJfY2xlYW51cF9qb3Vy bmFsX3RhaWwoam91cm5hbF90ICpqb3VybmFsKQogewotCXRyYW5zYWN0aW9uX3QgKiB0cmFuc2Fj dGlvbjsKIAl0aWRfdAkJZmlyc3RfdGlkOwotCXVuc2lnbmVkIGxvbmcJYmxvY2tuciwgZnJlZWQ7 CisJdW5zaWduZWQgbG9uZwlibG9ja25yOwogCiAJaWYgKGlzX2pvdXJuYWxfYWJvcnRlZChqb3Vy bmFsKSkKIAkJcmV0dXJuIDE7CiAKLQkvKiBPSywgd29yayBvdXQgdGhlIG9sZGVzdCB0cmFuc2Fj dGlvbiByZW1haW5pbmcgaW4gdGhlIGxvZywgYW5kCi0JICogdGhlIGxvZyBibG9jayBpdCBzdGFy dHMgYXQuCi0JICoKLQkgKiBJZiB0aGUgbG9nIGlzIG5vdyBlbXB0eSwgd2UgbmVlZCB0byB3b3Jr IG91dCB3aGljaCBpcyB0aGUKLQkgKiBuZXh0IHRyYW5zYWN0aW9uIElEIHdlIHdpbGwgd3JpdGUs IGFuZCB3aGVyZSBpdCB3aWxsCi0JICogc3RhcnQuICovCi0KLQl3cml0ZV9sb2NrKCZqb3VybmFs LT5qX3N0YXRlX2xvY2spOwotCXNwaW5fbG9jaygmam91cm5hbC0+al9saXN0X2xvY2spOwotCXRy YW5zYWN0aW9uID0gam91cm5hbC0+al9jaGVja3BvaW50X3RyYW5zYWN0aW9uczsKLQlpZiAodHJh bnNhY3Rpb24pIHsKLQkJZmlyc3RfdGlkID0gdHJhbnNhY3Rpb24tPnRfdGlkOwotCQlibG9ja25y ID0gdHJhbnNhY3Rpb24tPnRfbG9nX3N0YXJ0OwotCX0gZWxzZSBpZiAoKHRyYW5zYWN0aW9uID0g am91cm5hbC0+al9jb21taXR0aW5nX3RyYW5zYWN0aW9uKSAhPSBOVUxMKSB7Ci0JCWZpcnN0X3Rp ZCA9IHRyYW5zYWN0aW9uLT50X3RpZDsKLQkJYmxvY2tuciA9IHRyYW5zYWN0aW9uLT50X2xvZ19z dGFydDsKLQl9IGVsc2UgaWYgKCh0cmFuc2FjdGlvbiA9IGpvdXJuYWwtPmpfcnVubmluZ190cmFu c2FjdGlvbikgIT0gTlVMTCkgewotCQlmaXJzdF90aWQgPSB0cmFuc2FjdGlvbi0+dF90aWQ7Ci0J CWJsb2NrbnIgPSBqb3VybmFsLT5qX2hlYWQ7Ci0JfSBlbHNlIHsKLQkJZmlyc3RfdGlkID0gam91 cm5hbC0+al90cmFuc2FjdGlvbl9zZXF1ZW5jZTsKLQkJYmxvY2tuciA9IGpvdXJuYWwtPmpfaGVh ZDsKLQl9Ci0Jc3Bpbl91bmxvY2soJmpvdXJuYWwtPmpfbGlzdF9sb2NrKTsKLQlKX0FTU0VSVChi bG9ja25yICE9IDApOwotCi0JLyogSWYgdGhlIG9sZGVzdCBwaW5uZWQgdHJhbnNhY3Rpb24gaXMg YXQgdGhlIHRhaWwgb2YgdGhlIGxvZwotICAgICAgICAgICBhbHJlYWR5IHRoZW4gdGhlcmUncyBu b3QgbXVjaCB3ZSBjYW4gZG8gcmlnaHQgbm93LiAqLwotCWlmIChqb3VybmFsLT5qX3RhaWxfc2Vx dWVuY2UgPT0gZmlyc3RfdGlkKSB7Ci0JCXdyaXRlX3VubG9jaygmam91cm5hbC0+al9zdGF0ZV9s b2NrKTsKKwlpZiAoIWpiZDJfam91cm5hbF9nZXRfbG9nX3RhaWwoam91cm5hbCwgJmZpcnN0X3Rp ZCwgJmJsb2NrbnIpKQogCQlyZXR1cm4gMTsKLQl9Ci0KLQkvKiBPSywgdXBkYXRlIHRoZSBzdXBl cmJsb2NrIHRvIHJlY292ZXIgdGhlIGZyZWVkIHNwYWNlLgotCSAqIFBoeXNpY2FsIGJsb2NrcyBj b21lIGZpcnN0OiBoYXZlIHdlIHdyYXBwZWQgYmV5b25kIHRoZSBlbmQgb2YKLQkgKiB0aGUgbG9n PyAgKi8KLQlmcmVlZCA9IGJsb2NrbnIgLSBqb3VybmFsLT5qX3RhaWw7Ci0JaWYgKGJsb2NrbnIg PCBqb3VybmFsLT5qX3RhaWwpCi0JCWZyZWVkID0gZnJlZWQgKyBqb3VybmFsLT5qX2xhc3QgLSBq b3VybmFsLT5qX2ZpcnN0OwotCi0JdHJhY2VfamJkMl9jbGVhbnVwX2pvdXJuYWxfdGFpbChqb3Vy bmFsLCBmaXJzdF90aWQsIGJsb2NrbnIsIGZyZWVkKTsKLQlqYmRfZGVidWcoMSwKLQkJICAiQ2xl YW5pbmcgam91cm5hbCB0YWlsIGZyb20gJWQgdG8gJWQgKG9mZnNldCAlbHUpLCAiCi0JCSAgImZy ZWVpbmcgJWx1XG4iLAotCQkgIGpvdXJuYWwtPmpfdGFpbF9zZXF1ZW5jZSwgZmlyc3RfdGlkLCBi bG9ja25yLCBmcmVlZCk7Ci0KLQlqb3VybmFsLT5qX2ZyZWUgKz0gZnJlZWQ7Ci0Jam91cm5hbC0+ al90YWlsX3NlcXVlbmNlID0gZmlyc3RfdGlkOwotCWpvdXJuYWwtPmpfdGFpbCA9IGJsb2NrbnI7 Ci0Jd3JpdGVfdW5sb2NrKCZqb3VybmFsLT5qX3N0YXRlX2xvY2spOworCUpfQVNTRVJUKGJsb2Nr bnIgIT0gMCk7CiAKIAkvKgotCSAqIElmIHRoZXJlIGlzIGFuIGV4dGVybmFsIGpvdXJuYWwsIHdl IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQKLQkgKiBhbnkgZGF0YSBibG9ja3MgdGhhdCB3ZXJlIHJl Y2VudGx5IHdyaXR0ZW4gb3V0IC0tLSBwZXJoYXBzCi0JICogYnkgamJkMl9sb2dfZG9fY2hlY2tw b2ludCgpIC0tLSBhcmUgZmx1c2hlZCBvdXQgYmVmb3JlIHdlCi0JICogZHJvcCB0aGUgdHJhbnNh Y3Rpb25zIGZyb20gdGhlIGV4dGVybmFsIGpvdXJuYWwuICBJdCdzCi0JICogdW5saWtlbHkgdGhp cyB3aWxsIGJlIG5lY2Vzc2FyeSwgZXNwZWNpYWxseSB3aXRoIGEKLQkgKiBhcHByb3ByaWF0ZWx5 IHNpemVkIGpvdXJuYWwsIGJ1dCB3ZSBuZWVkIHRoaXMgdG8gZ3VhcmFudGVlCi0JICogY29ycmVj dG5lc3MuICBGb3J0dW5hdGVseSBqYmQyX2NsZWFudXBfam91cm5hbF90YWlsKCkKLQkgKiBkb2Vz bid0IGdldCBjYWxsZWQgYWxsIHRoYXQgb2Z0ZW4uCisJICogV2UgbmVlZCB0byBtYWtlIHN1cmUg dGhhdCBhbnkgYmxvY2tzIHRoYXQgd2VyZSByZWNlbnRseSB3cml0dGVuIG91dAorCSAqIC0tLSBw ZXJoYXBzIGJ5IGpiZDJfbG9nX2RvX2NoZWNrcG9pbnQoKSAtLS0gYXJlIGZsdXNoZWQgb3V0IGJl Zm9yZQorCSAqIHdlIGRyb3AgdGhlIHRyYW5zYWN0aW9ucyBmcm9tIHRoZSBqb3VybmFsLiBJdCdz IHVubGlrZWx5IHRoaXMgd2lsbAorCSAqIGJlIG5lY2Vzc2FyeSwgZXNwZWNpYWxseSB3aXRoIGFu IGFwcHJvcHJpYXRlbHkgc2l6ZWQgam91cm5hbCwgYnV0IHdlCisJICogbmVlZCB0aGlzIHRvIGd1 YXJhbnRlZSBjb3JyZWN0bmVzcy4gIEZvcnR1bmF0ZWx5CisJICogamJkMl9jbGVhbnVwX2pvdXJu YWxfdGFpbCgpIGRvZXNuJ3QgZ2V0IGNhbGxlZCBhbGwgdGhhdCBvZnRlbi4KIAkgKi8KLQlpZiAo KGpvdXJuYWwtPmpfZnNfZGV2ICE9IGpvdXJuYWwtPmpfZGV2KSAmJgotCSAgICAoam91cm5hbC0+ al9mbGFncyAmIEpCRDJfQkFSUklFUikpCisJaWYgKGpvdXJuYWwtPmpfZmxhZ3MgJiBKQkQyX0JB UlJJRVIpCiAJCWJsa2Rldl9pc3N1ZV9mbHVzaChqb3VybmFsLT5qX2ZzX2RldiwgR0ZQX0tFUk5F TCwgTlVMTCk7Ci0JaWYgKCEoam91cm5hbC0+al9mbGFncyAmIEpCRDJfQUJPUlQpKQotCQlqYmQy X2pvdXJuYWxfdXBkYXRlX3NiX2xvZ190YWlsKGpvdXJuYWwpOworCisJX19qYmQyX3VwZGF0ZV9s b2dfdGFpbChqb3VybmFsLCBmaXJzdF90aWQsIGJsb2NrbnIpOwogCXJldHVybiAwOwogfQogCi0t LSBhL2ZzL2piZDIvY29tbWl0LmMKKysrIGIvZnMvamJkMi9jb21taXQuYwpAQCAtMzQwLDcgKzM0 MCwxNiBAQCB2b2lkIGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24oam91CiAJLyogRG8g d2UgbmVlZCB0byBlcmFzZSB0aGUgZWZmZWN0cyBvZiBhIHByaW9yIGpiZDJfam91cm5hbF9mbHVz aD8gKi8KIAlpZiAoam91cm5hbC0+al9mbGFncyAmIEpCRDJfRkxVU0hFRCkgewogCQlqYmRfZGVi dWcoMywgInN1cGVyIGJsb2NrIHVwZGF0ZWRcbiIpOwotCQlqYmQyX2pvdXJuYWxfdXBkYXRlX3Ni X2xvZ190YWlsKGpvdXJuYWwpOworCQkvKgorCQkgKiBXZSBob2xkIGpfY2hlY2twb2ludF9tdXRl eCBzbyB0YWlsIGNhbm5vdCBjaGFuZ2UgdW5kZXIgdXMuCisJCSAqIFdlIGRvbid0IG5lZWQgYW55 IHNwZWNpYWwgZGF0YSBndWFyYW50ZWVzIGZvciB3cml0aW5nIHNiCisJCSAqIHNpbmNlIGpvdXJu YWwgaXMgZW1wdHkgYW5kIGl0IGlzIG9rIGZvciB3cml0ZSB0byBiZQorCQkgKiBmbHVzaGVkIG9u bHkgd2l0aCB0cmFuc2FjdGlvbiBjb21taXQuCisJCSAqLworCQlqYmQyX2pvdXJuYWxfdXBkYXRl X3NiX2xvZ190YWlsKGpvdXJuYWwsCisJCQkJCQlqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UsCisJ CQkJCQlqb3VybmFsLT5qX3RhaWwsCisJCQkJCQlXUklURV9TWU5DKTsKIAl9IGVsc2UgewogCQlq YmRfZGVidWcoMywgInN1cGVyYmxvY2sgbm90IHVwZGF0ZWRcbiIpOwogCX0KLS0tIGEvZnMvamJk Mi9qb3VybmFsLmMKKysrIGIvZnMvamJkMi9qb3VybmFsLmMKQEAgLTc3NSw2ICs3NzUsODUgQEAg c3RydWN0IGpvdXJuYWxfaGVhZCAqamJkMl9qb3VybmFsX2dldF9kZQogCXJldHVybiBqYmQyX2pv dXJuYWxfYWRkX2pvdXJuYWxfaGVhZChiaCk7CiB9CiAKKy8qCisgKiBSZXR1cm4gdGlkIG9mIHRo ZSBvbGRlc3QgdHJhbnNhY3Rpb24gaW4gdGhlIGpvdXJuYWwgYW5kIGJsb2NrIGluIHRoZSBqb3Vy bmFsCisgKiB3aGVyZSB0aGUgdHJhbnNhY3Rpb24gc3RhcnRzLgorICoKKyAqIElmIHRoZSBqb3Vy bmFsIGlzIG5vdyBlbXB0eSwgcmV0dXJuIHdoaWNoIHdpbGwgYmUgdGhlIG5leHQgdHJhbnNhY3Rp b24gSUQKKyAqIHdlIHdpbGwgd3JpdGUgYW5kIHdoZXJlIHdpbGwgdGhhdCB0cmFuc2FjdGlvbiBz dGFydC4KKyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIDAgaWYgam91cm5hbCB0YWlsIGNhbm5v dCBiZSBwdXNoZWQgYW55IGZ1cnRoZXIsIDEgaWYKKyAqIGl0IGNhbi4KKyAqLworaW50IGpiZDJf am91cm5hbF9nZXRfbG9nX3RhaWwoam91cm5hbF90ICpqb3VybmFsLCB0aWRfdCAqdGlkLAorCQkJ ICAgICAgdW5zaWduZWQgbG9uZyAqYmxvY2spCit7CisJdHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rp b247CisJaW50IHJldDsKKworCXJlYWRfbG9jaygmam91cm5hbC0+al9zdGF0ZV9sb2NrKTsKKwlz cGluX2xvY2soJmpvdXJuYWwtPmpfbGlzdF9sb2NrKTsKKwl0cmFuc2FjdGlvbiA9IGpvdXJuYWwt PmpfY2hlY2twb2ludF90cmFuc2FjdGlvbnM7CisJaWYgKHRyYW5zYWN0aW9uKSB7CisJCSp0aWQg PSB0cmFuc2FjdGlvbi0+dF90aWQ7CisJCSpibG9jayA9IHRyYW5zYWN0aW9uLT50X2xvZ19zdGFy dDsKKwl9IGVsc2UgaWYgKCh0cmFuc2FjdGlvbiA9IGpvdXJuYWwtPmpfY29tbWl0dGluZ190cmFu c2FjdGlvbikgIT0gTlVMTCkgeworCQkqdGlkID0gdHJhbnNhY3Rpb24tPnRfdGlkOworCQkqYmxv Y2sgPSB0cmFuc2FjdGlvbi0+dF9sb2dfc3RhcnQ7CisJfSBlbHNlIGlmICgodHJhbnNhY3Rpb24g PSBqb3VybmFsLT5qX3J1bm5pbmdfdHJhbnNhY3Rpb24pICE9IE5VTEwpIHsKKwkJKnRpZCA9IHRy YW5zYWN0aW9uLT50X3RpZDsKKwkJKmJsb2NrID0gam91cm5hbC0+al9oZWFkOworCX0gZWxzZSB7 CisJCSp0aWQgPSBqb3VybmFsLT5qX3RyYW5zYWN0aW9uX3NlcXVlbmNlOworCQkqYmxvY2sgPSBq b3VybmFsLT5qX2hlYWQ7CisJfQorCXJldCA9IHRpZF9ndCgqdGlkLCBqb3VybmFsLT5qX3RhaWxf c2VxdWVuY2UpOworCXNwaW5fdW5sb2NrKCZqb3VybmFsLT5qX2xpc3RfbG9jayk7CisJcmVhZF91 bmxvY2soJmpvdXJuYWwtPmpfc3RhdGVfbG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgor ICogVXBkYXRlIGluZm9ybWF0aW9uIGluIGpvdXJuYWwgc3RydWN0dXJlIGFuZCBpbiBvbiBkaXNr IGpvdXJuYWwgc3VwZXJibG9jaworICogYWJvdXQgbG9nIHRhaWwuIFRoaXMgZnVuY3Rpb24gZG9l cyBub3QgY2hlY2sgd2hldGhlciBpbmZvcm1hdGlvbiBwYXNzZWQgaW4KKyAqIHJlYWxseSBwdXNo ZXMgbG9nIHRhaWwgZnVydGhlci4gSXQncyByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRv IG1ha2UKKyAqIHN1cmUgcHJvdmlkZWQgbG9nIHRhaWwgaW5mb3JtYXRpb24gaXMgdmFsaWQgKGUu Zy4gYnkgaG9sZGluZworICogal9jaGVja3BvaW50X211dGV4IGFsbCB0aGUgdGltZSBiZXR3ZWVu IGNvbXB1dGluZyBsb2cgdGFpbCBhbmQgY2FsbGluZyB0aGlzCisgKiBmdW5jdGlvbiBhcyBpcyB0 aGUgY2FzZSB3aXRoIGpiZDJfY2xlYW51cF9qb3VybmFsX3RhaWwoKSkuCisgKgorICogUmVxdWly ZXMgal9jaGVja3BvaW50X211dGV4CisgKi8KK3ZvaWQgX19qYmQyX3VwZGF0ZV9sb2dfdGFpbChq b3VybmFsX3QgKmpvdXJuYWwsIHRpZF90IHRpZCwgdW5zaWduZWQgbG9uZyBibG9jaykKK3sKKwl1 bnNpZ25lZCBsb25nIGZyZWVkOworCisJQlVHX09OKCFtdXRleF9pc19sb2NrZWQoJmpvdXJuYWwt PmpfY2hlY2twb2ludF9tdXRleCkpOworCisJLyoKKwkgKiBXZSBjYW5ub3QgYWZmb3JkIGZvciB3 cml0ZSB0byByZW1haW4gaW4gZHJpdmUncyBjYWNoZXMgc2luY2UgYXMKKwkgKiBzb29uIGFzIHdl IHVwZGF0ZSBqX3RhaWwsIG5leHQgdHJhbnNhY3Rpb24gY2FuIHN0YXJ0IHJldXNpbmcgam91cm5h bAorCSAqIHNwYWNlIGFuZCBpZiB3ZSBsb3NlIHNiIHVwZGF0ZSBkdXJpbmcgcG93ZXIgZmFpbHVy ZSB3ZSdkIHJlcGxheQorCSAqIG9sZCB0cmFuc2FjdGlvbiB3aXRoIHBvc3NpYmx5IG5ld2x5IG92 ZXJ3cml0dGVuIGRhdGEuCisJICovCisJamJkMl9qb3VybmFsX3VwZGF0ZV9zYl9sb2dfdGFpbChq b3VybmFsLCB0aWQsIGJsb2NrLCBXUklURV9GVUEpOworCXdyaXRlX2xvY2soJmpvdXJuYWwtPmpf c3RhdGVfbG9jayk7CisJZnJlZWQgPSBibG9jayAtIGpvdXJuYWwtPmpfdGFpbDsKKwlpZiAoYmxv Y2sgPCBqb3VybmFsLT5qX3RhaWwpCisJCWZyZWVkICs9IGpvdXJuYWwtPmpfbGFzdCAtIGpvdXJu YWwtPmpfZmlyc3Q7CisKKwl0cmFjZV9qYmQyX3VwZGF0ZV9sb2dfdGFpbChqb3VybmFsLCB0aWQs IGJsb2NrLCBmcmVlZCk7CisJamJkX2RlYnVnKDEsCisJCSAgIkNsZWFuaW5nIGpvdXJuYWwgdGFp bCBmcm9tICVkIHRvICVkIChvZmZzZXQgJWx1KSwgIgorCQkgICJmcmVlaW5nICVsdVxuIiwKKwkJ ICBqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UsIHRpZCwgYmxvY2ssIGZyZWVkKTsKKworCWpvdXJu YWwtPmpfZnJlZSArPSBmcmVlZDsKKwlqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UgPSB0aWQ7CisJ am91cm5hbC0+al90YWlsID0gYmxvY2s7CisJd3JpdGVfdW5sb2NrKCZqb3VybmFsLT5qX3N0YXRl X2xvY2spOworfQorCiBzdHJ1Y3QgamJkMl9zdGF0c19wcm9jX3Nlc3Npb24gewogCWpvdXJuYWxf dCAqam91cm5hbDsKIAlzdHJ1Y3QgdHJhbnNhY3Rpb25fc3RhdHNfcyAqc3RhdHM7CkBAIC0xMTU2 LDE2ICsxMjM1LDI4IEBAIHN0YXRpYyBpbnQgam91cm5hbF9yZXNldChqb3VybmFsX3QgKmpvdXIK IAkJCWpvdXJuYWwtPmpfZXJybm8pOwogCQlqb3VybmFsLT5qX2ZsYWdzIHw9IEpCRDJfRkxVU0hF RDsKIAl9IGVsc2UgewotCQkvKiBBZGQgdGhlIGR5bmFtaWMgZmllbGRzIGFuZCB3cml0ZSBpdCB0 byBkaXNrLiAqLwotCQlqYmQyX2pvdXJuYWxfdXBkYXRlX3NiX2xvZ190YWlsKGpvdXJuYWwpOwor CQkvKgorCQkgKiBVcGRhdGUgbG9nIHRhaWwgaW5mb3JtYXRpb24uIFdlIHVzZSBXUklURV9GVUEg c2luY2UgbmV3CisJCSAqIHRyYW5zYWN0aW9uIHdpbGwgc3RhcnQgcmV1c2luZyBqb3VybmFsIHNw YWNlIGFuZCBzbyB3ZQorCQkgKiBtdXN0IG1ha2Ugc3VyZSBpbmZvcm1hdGlvbiBhYm91dCBjdXJy ZW50IGxvZyB0YWlsIGlzIG9uCisJCSAqIGRpc2sgYmVmb3JlIHRoYXQuCisJCSAqLworCQlqYmQy X2pvdXJuYWxfdXBkYXRlX3NiX2xvZ190YWlsKGpvdXJuYWwsCisJCQkJCQlqb3VybmFsLT5qX3Rh aWxfc2VxdWVuY2UsCisJCQkJCQlqb3VybmFsLT5qX3RhaWwsCisJCQkJCQlXUklURV9GVUEpOwog CX0KIAlyZXR1cm4gamJkMl9qb3VybmFsX3N0YXJ0X3RocmVhZChqb3VybmFsKTsKIH0KIAotc3Rh dGljIHZvaWQgamJkMl93cml0ZV9zdXBlcmJsb2NrKGpvdXJuYWxfdCAqam91cm5hbCkKK3N0YXRp YyB2b2lkIGpiZDJfd3JpdGVfc3VwZXJibG9jayhqb3VybmFsX3QgKmpvdXJuYWwsIGludCB3cml0 ZV9vcCkKIHsKIAlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoID0gam91cm5hbC0+al9zYl9idWZmZXI7 CisJaW50IHJldDsKIAorCWlmICghKGpvdXJuYWwtPmpfZmxhZ3MgJiBKQkQyX0JBUlJJRVIpKQor CQl3cml0ZV9vcCAmPSB+KFJFUV9GVUEgfCBSRVFfRkxVU0gpOworCWxvY2tfYnVmZmVyKGJoKTsK IAlpZiAoYnVmZmVyX3dyaXRlX2lvX2Vycm9yKGJoKSkgewogCQkvKgogCQkgKiBPaCwgZGVhci4g IEEgcHJldmlvdXMgYXR0ZW1wdCB0byB3cml0ZSB0aGUgam91cm5hbApAQCAtMTE4MSwzOSArMTI3 Miw0NCBAQCBzdGF0aWMgdm9pZCBqYmQyX3dyaXRlX3N1cGVyYmxvY2soam91cm5hCiAJCWNsZWFy X2J1ZmZlcl93cml0ZV9pb19lcnJvcihiaCk7CiAJCXNldF9idWZmZXJfdXB0b2RhdGUoYmgpOwog CX0KLQotCUJVRkZFUl9UUkFDRShiaCwgIm1hcmtpbmcgZGlydHkiKTsKLQltYXJrX2J1ZmZlcl9k aXJ0eShiaCk7Ci0Jc3luY19kaXJ0eV9idWZmZXIoYmgpOworCWdldF9iaChiaCk7CisJYmgtPmJf ZW5kX2lvID0gZW5kX2J1ZmZlcl93cml0ZV9zeW5jOworCXJldCA9IHN1Ym1pdF9iaCh3cml0ZV9v cCwgYmgpOworCXdhaXRfb25fYnVmZmVyKGJoKTsKIAlpZiAoYnVmZmVyX3dyaXRlX2lvX2Vycm9y KGJoKSkgewotCQlwcmludGsoS0VSTl9FUlIgIkpCRDI6IEkvTyBlcnJvciBkZXRlY3RlZCAiCi0J CSAgICAgICAid2hlbiB1cGRhdGluZyBqb3VybmFsIHN1cGVyYmxvY2sgZm9yICVzLlxuIiwKLQkJ ICAgICAgIGpvdXJuYWwtPmpfZGV2bmFtZSk7CiAJCWNsZWFyX2J1ZmZlcl93cml0ZV9pb19lcnJv cihiaCk7CiAJCXNldF9idWZmZXJfdXB0b2RhdGUoYmgpOworCQlyZXQgPSAtRUlPOworCX0KKwlp ZiAocmV0KSB7CisJCXByaW50ayhLRVJOX0VSUiAiSkJEMjogRXJyb3IgJWQgZGV0ZWN0ZWQgd2hl biB1cGRhdGluZyAiCisJCSAgICAgICAiam91cm5hbCBzdXBlcmJsb2NrIGZvciAlcy5cbiIsIHJl dCwKKwkJICAgICAgIGpvdXJuYWwtPmpfZGV2bmFtZSk7CiAJfQogfQogCiAvKioKICAqIGpiZDJf am91cm5hbF91cGRhdGVfc2JfbG9nX3RhaWwoKSAtIFVwZGF0ZSBsb2cgdGFpbCBpbiBqb3VybmFs IHNiIG9uIGRpc2suCiAgKiBAam91cm5hbDogVGhlIGpvdXJuYWwgdG8gdXBkYXRlLgorICogQHRh aWxfdGlkOiBUSUQgb2YgdGhlIG5ldyB0cmFuc2FjdGlvbiBhdCB0aGUgdGFpbCBvZiB0aGUgbG9n CisgKiBAdGFpbF9ibG9jazogVGhlIGZpcnN0IGJsb2NrIG9mIHRoZSB0cmFuc2FjdGlvbiBhdCB0 aGUgdGFpbCBvZiB0aGUgbG9nCisgKiBAd3JpdGVfb3A6IFdpdGggd2hpY2ggb3BlcmF0aW9uIHNo b3VsZCB3ZSB3cml0ZSB0aGUgam91cm5hbCBzYgogICoKICAqIFVwZGF0ZSBhIGpvdXJuYWwncyBz dXBlcmJsb2NrIGluZm9ybWF0aW9uIGFib3V0IGxvZyB0YWlsIGFuZCB3cml0ZSBpdCB0bwogICog ZGlzaywgd2FpdGluZyBmb3IgdGhlIElPIHRvIGNvbXBsZXRlLgogICovCi12b2lkIGpiZDJfam91 cm5hbF91cGRhdGVfc2JfbG9nX3RhaWwoam91cm5hbF90ICpqb3VybmFsKQordm9pZCBqYmQyX2pv dXJuYWxfdXBkYXRlX3NiX2xvZ190YWlsKGpvdXJuYWxfdCAqam91cm5hbCwgdGlkX3QgdGFpbF90 aWQsCisJCQkJICAgICB1bnNpZ25lZCBsb25nIHRhaWxfYmxvY2ssIGludCB3cml0ZV9vcCkKIHsK IAlqb3VybmFsX3N1cGVyYmxvY2tfdCAqc2IgPSBqb3VybmFsLT5qX3N1cGVyYmxvY2s7CiAKLQly ZWFkX2xvY2soJmpvdXJuYWwtPmpfc3RhdGVfbG9jayk7Ci0JamJkX2RlYnVnKDEsICJKQkQyOiB1 cGRhdGluZyBzdXBlcmJsb2NrIChzdGFydCAlbGQsIHNlcSAlZClcbiIsCi0JCSAgam91cm5hbC0+ al90YWlsLCBqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UpOworCWpiZF9kZWJ1ZygxLCAiSkJEMjog dXBkYXRpbmcgc3VwZXJibG9jayAoc3RhcnQgJWx1LCBzZXEgJXUpXG4iLAorCQkgIHRhaWxfYmxv Y2ssIHRhaWxfdGlkKTsKIAotCXNiLT5zX3NlcXVlbmNlID0gY3B1X3RvX2JlMzIoam91cm5hbC0+ al90YWlsX3NlcXVlbmNlKTsKLQlzYi0+c19zdGFydCAgICA9IGNwdV90b19iZTMyKGpvdXJuYWwt PmpfdGFpbCk7Ci0JcmVhZF91bmxvY2soJmpvdXJuYWwtPmpfc3RhdGVfbG9jayk7CisJc2ItPnNf c2VxdWVuY2UgPSBjcHVfdG9fYmUzMih0YWlsX3RpZCk7CisJc2ItPnNfc3RhcnQgICAgPSBjcHVf dG9fYmUzMih0YWlsX2Jsb2NrKTsKIAotCWpiZDJfd3JpdGVfc3VwZXJibG9jayhqb3VybmFsKTsK KwlqYmQyX3dyaXRlX3N1cGVyYmxvY2soam91cm5hbCwgd3JpdGVfb3ApOwogCS8qIExvZyBpcyBu byBsb25nZXIgZW1wdHkgKi8KIAl3cml0ZV9sb2NrKCZqb3VybmFsLT5qX3N0YXRlX2xvY2spOwog CVdBUk5fT04oIXNiLT5zX3NlcXVlbmNlKTsKQEAgLTEyNDAsNyArMTMzNiw3IEBAIHN0YXRpYyB2 b2lkIGpiZDJfbWFya19qb3VybmFsX2VtcHR5KGpvdXIKIAlzYi0+c19zdGFydCAgICA9IGNwdV90 b19iZTMyKDApOwogCXJlYWRfdW5sb2NrKCZqb3VybmFsLT5qX3N0YXRlX2xvY2spOwogCi0JamJk Ml93cml0ZV9zdXBlcmJsb2NrKGpvdXJuYWwpOworCWpiZDJfd3JpdGVfc3VwZXJibG9jayhqb3Vy bmFsLCBXUklURV9GVUEpOwogCiAJLyogTG9nIGlzIG5vIGxvbmdlciBlbXB0eSAqLwogCXdyaXRl X2xvY2soJmpvdXJuYWwtPmpfc3RhdGVfbG9jayk7CkBAIC0xMjY2LDcgKzEzNjIsNyBAQCBzdGF0 aWMgdm9pZCBqYmQyX2pvdXJuYWxfdXBkYXRlX3NiX2Vycm5vCiAJc2ItPnNfZXJybm8gICAgPSBj cHVfdG9fYmUzMihqb3VybmFsLT5qX2Vycm5vKTsKIAlyZWFkX3VubG9jaygmam91cm5hbC0+al9z dGF0ZV9sb2NrKTsKIAotCWpiZDJfd3JpdGVfc3VwZXJibG9jayhqb3VybmFsKTsKKwlqYmQyX3dy aXRlX3N1cGVyYmxvY2soam91cm5hbCwgV1JJVEVfU1lOQyk7CiB9CiAKIC8qCi0tLSBhL2ZzL2pi ZDIvcmVjb3ZlcnkuYworKysgYi9mcy9qYmQyL3JlY292ZXJ5LmMKQEAgLTIxLDYgKzIxLDcgQEAK ICNpbmNsdWRlIDxsaW51eC9qYmQyLmg+CiAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KICNpbmNs dWRlIDxsaW51eC9jcmMzMi5oPgorI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5oPgogI2VuZGlmCiAK IC8qCkBAIC0yNjUsNyArMjY2LDkgQEAgaW50IGpiZDJfam91cm5hbF9yZWNvdmVyKGpvdXJuYWxf dCAqam91cgogCWVycjIgPSBzeW5jX2Jsb2NrZGV2KGpvdXJuYWwtPmpfZnNfZGV2KTsKIAlpZiAo IWVycikKIAkJZXJyID0gZXJyMjsKLQorCS8qIE1ha2Ugc3VyZSBhbGwgcmVwbGF5ZWQgZGF0YSBp cyBvbiBwZXJtYW5lbnQgc3RvcmFnZSAqLworCWlmIChqb3VybmFsLT5qX2ZsYWdzICYgSkJEMl9C QVJSSUVSKQorCQlibGtkZXZfaXNzdWVfZmx1c2goam91cm5hbC0+al9mc19kZXYsIEdGUF9LRVJO RUwsIE5VTEwpOwogCXJldHVybiBlcnI7CiB9CiAKLS0tIGEvaW5jbHVkZS9saW51eC9qYmQyLmgK KysrIGIvaW5jbHVkZS9saW51eC9qYmQyLmgKQEAgLTk3Miw2ICs5NzIsOSBAQCBleHRlcm4gdm9p ZCBfX2pvdXJuYWxfY2xlYW5fZGF0YV9saXN0KHRyCiAvKiBMb2cgYnVmZmVyIGFsbG9jYXRpb24g Ki8KIGV4dGVybiBzdHJ1Y3Qgam91cm5hbF9oZWFkICogamJkMl9qb3VybmFsX2dldF9kZXNjcmlw dG9yX2J1ZmZlcihqb3VybmFsX3QgKik7CiBpbnQgamJkMl9qb3VybmFsX25leHRfbG9nX2Jsb2Nr KGpvdXJuYWxfdCAqLCB1bnNpZ25lZCBsb25nIGxvbmcgKik7CitpbnQgamJkMl9qb3VybmFsX2dl dF9sb2dfdGFpbChqb3VybmFsX3QgKmpvdXJuYWwsIHRpZF90ICp0aWQsCisJCQkgICAgICB1bnNp Z25lZCBsb25nICpibG9jayk7Cit2b2lkIF9famJkMl91cGRhdGVfbG9nX3RhaWwoam91cm5hbF90 ICpqb3VybmFsLCB0aWRfdCB0aWQsIHVuc2lnbmVkIGxvbmcgYmxvY2spOwogCiAvKiBDb21taXQg bWFuYWdlbWVudCAqLwogZXh0ZXJuIHZvaWQgamJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlv bihqb3VybmFsX3QgKik7CkBAIC0xMDgzLDcgKzEwODYsOCBAQCBleHRlcm4gaW50CSAgIGpiZDJf am91cm5hbF9kZXN0cm95ICAgIChqCiBleHRlcm4gaW50CSAgIGpiZDJfam91cm5hbF9yZWNvdmVy ICAgIChqb3VybmFsX3QgKmpvdXJuYWwpOwogZXh0ZXJuIGludAkgICBqYmQyX2pvdXJuYWxfd2lw ZSAgICAgICAoam91cm5hbF90ICosIGludCk7CiBleHRlcm4gaW50CSAgIGpiZDJfam91cm5hbF9z a2lwX3JlY292ZXJ5CShqb3VybmFsX3QgKik7Ci1leHRlcm4gdm9pZAkgICBqYmQyX2pvdXJuYWxf dXBkYXRlX3NiX2xvZ190YWlsCShqb3VybmFsX3QgKik7CitleHRlcm4gdm9pZAkgICBqYmQyX2pv dXJuYWxfdXBkYXRlX3NiX2xvZ190YWlsCShqb3VybmFsX3QgKiwgdGlkX3QsCisJCQkJdW5zaWdu ZWQgbG9uZywgaW50KTsKIGV4dGVybiB2b2lkCSAgIF9famJkMl9qb3VybmFsX2Fib3J0X2hhcmQJ KGpvdXJuYWxfdCAqKTsKIGV4dGVybiB2b2lkCSAgIGpiZDJfam91cm5hbF9hYm9ydCAgICAgIChq b3VybmFsX3QgKiwgaW50KTsKIGV4dGVybiBpbnQJICAgamJkMl9qb3VybmFsX2Vycm5vICAgICAg KGpvdXJuYWxfdCAqKTsKLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvamJkMi5oCisrKyBiL2lu Y2x1ZGUvdHJhY2UvZXZlbnRzL2piZDIuaApAQCAtMjAwLDcgKzIwMCw3IEBAIFRSQUNFX0VWRU5U KGpiZDJfY2hlY2twb2ludF9zdGF0cywKIAkJICBfX2VudHJ5LT5mb3JjZWRfdG9fY2xvc2UsIF9f ZW50cnktPndyaXR0ZW4sIF9fZW50cnktPmRyb3BwZWQpCiApOwogCi1UUkFDRV9FVkVOVChqYmQy X2NsZWFudXBfam91cm5hbF90YWlsLAorVFJBQ0VfRVZFTlQoamJkMl91cGRhdGVfbG9nX3RhaWws CiAKIAlUUF9QUk9UTyhqb3VybmFsX3QgKmpvdXJuYWwsIHRpZF90IGZpcnN0X3RpZCwKIAkJIHVu c2lnbmVkIGxvbmcgYmxvY2tfbnIsIHVuc2lnbmVkIGxvbmcgZnJlZWQpLAo= --=-U78bAn1SjG7M8atN40fv-- --=-MsjeEaqwrITyclL9sD+h Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIVAwUAVg/1s+e/yOyVhhEJAQr37RAAjm8H49dRRQsa+1RGqVsqSKQ8Ze3BNbJZ cf9d7kVZIEzUqc4AZZTPw0J422818daGmgofHlVUKdYPDQeSeBiC2UsYuM+gbemE RQVoXhIdqJVN4AWiy2Nzqt93J8LSAssk7suR0Z7lin0ABB/JHx64qZUV+RN/y7/3 oyHcnYsA0VniPKcNYDfWMzicLRGdAZdL6mhrTam2e1hxLsuJF5uquN8bo0rPEr2M iTaV5UDrB3nnaYC/bYwDOjK6nMCW6btvmfYxeEFdoliILe/TK2G9+kFe/sDh1tur ClILHlXg+Lzk6QA21u/5ywYXDd6YjVs1jAYNsKWuXJGyBmioZT8NfUAnicbsIBle QUzqALCjm8kQ+/fg9AapQL5rZRvVvrC5BgIspQZ8bBtRWEO6IZfl5MHNdoEPeDL9 3WOiFJmwVhKK7Tcm3kJT9LD9jMMtnOYdRNEUcv90eq3aZXF+DcUNc4HlaghfhGdY b8RsmIbR08gEAeO1R7eHixGj/6JfCoqUVCNVqFcl2S2UkdcCUp4RzvBRtwVWLPBO 8OT65yNzaqi+3u0uyd1//pVah+BQCZNkOMv10pR7xq6AyDh5FfWRhy31tT8Pxsiv /gk0Ejd2HxYJYkQCWdhcx5wcvrHf6ydGyenIyzCMCS8PTpbvac6VxbTNhyJmo5eG CgbobxYDidg= =XzLH -----END PGP SIGNATURE----- --=-MsjeEaqwrITyclL9sD+h--