Re: [Patch, fortran] PR126205 - A coarray allocated in a team is not being automatically deallocated
Paul Richard Thomas <[email protected]> Fri, 31 Jul 2026 17:51:59 +0100
| Newsgroups | gmane.comp.gcc.patches,gmane.comp.gcc.fortran |
|---|---|
| Message-ID | <CAGkQGiJKuvUo9af_Q63fpxL=JTNuGzz+eXmL9Sc1gW2524TAKA@mail.gmail.com> |
--00000000000096651b0657eb02a1 Content-Type: text/plain; charset="UTF-8" Hello All, I pushed the patch as submitted because it applies equally well to all three library models. The auto-deallocation intrinsic to the library does not work. I have attached a patch for single.c and shmem.c that fixes the problem and pr126205. I haven't as yet looked at what happens with Open Coarrays and would appreciate it if somebody would give it a whirl. Regards Paul On Fri, 24 Jul 2026 at 16:18, Paul Richard Thomas <[email protected]> wrote: > > Hello All, > From John Reid's "Summary_of_Fortran_2018": > > 3.5 Coarrays allocated in teams > > ....snip.... > > In Fortran 2018, synchronization is now across the team, of course. Symmetric memory is maintained within teams by requiring that > > 1. any allocatable coarray that is allocated before entry to a change team construct remains allocated during the execution of the construct and > 2. any allocatable coarray that becomes allocated within a change team construct and is still allocated when the construct is left is automatically deallocated, even if it has the save attribute. > > ....more snips.... > > Requirement 2 is not yet implemented in gfortran. The attachment does the job. > > Regression tested on FC44/x86_64 - OK for mainline and eventual backporting to 16-branch? > > Paul > --00000000000096651b0657eb02a1 Content-Type: text/x-patch; charset="US-ASCII"; name="library.patch" Content-Disposition: attachment; filename="library.patch" Content-Transfer-Encoding: base64 Content-ID: <f_ms96jspb0> X-Attachment-Id: f_ms96jspb0 RnJvbSA3NTQ2MWU3OWRmZjNlODQzOTk3MjQ5MmVhMmRjYjNjZmJkOGYzZDY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIFRob21hcyA8cGF1bHRAZ2NjLmdudS5vcmc+CkRhdGU6 IEZyaSwgMzEgSnVsIDIwMjYgMTY6MTU6MDMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBsaWJnZm9y dHJhbiBDQUY6IEZpeCB0ZWFtLWFsbG9jYXRlZCBjb2FycmF5IGRlYWxsb2NhdGlvbgogKGxpYnJh cnktc2lkZSkKClBlciBGMjAxOCAxMS4xLjUuMiwgYWxsb2NhdGFibGUgY29hcnJheXMgYWxsb2Nh dGVkIHdpdGhpbiBhIENIQU5HRSBURUFNIGJsb2NrCnNob3VsZCBiZSBhdXRvLWRlYWxsb2NhdGVk IGF0IEVORCBURUFNLiBUaGlzIHBhdGNoIGZpeGVzIGZvdXIgY3JpdGljYWwgYnVncyBpbgp0aGUg Q0FGIHJ1bnRpbWUgbGlicmFyaWVzIHRoYXQgcHJldmVudGVkIHByb3BlciBkZWFsbG9jYXRpb246 CgoxLiBUb2tlbiBJRCB1bmluaXRpYWxpemVkIGluIEFMTE9DQVRFX09OTFkgY2FzZTogc2htZW1f dG9rZW4tPnRva2VuX2lkIHdhcyBub3QKICAgc2V0LCBjYXVzaW5nIGRlcmVnaXN0ZXIgdG8gbG9v ayB1cCBnYXJiYWdlIGluIHRoZSBJRCBoYXNobWFwLgoKMi4gU2NhbGFyIGNvYXJyYXkgZGVzY3Jp cHRvcnMgbm90IHN0b3JlZDogQ2hhbmdlZCBmcm9tIGNvbmRpdGlvbmFsIHN0b3JhZ2UKICAgKEdG Q19ERVNDUklQVE9SX1JBTksgPiAwID8gZGF0YSA6IE5VTEwpIHRvIGNvbmRpdGlvbmFsIGJhc2Vk IG9uIHJlZ2lzdHJhdGlvbgogICB0eXBlLCB1c2luZyBuZXcgSVNfU1RBVElDX1JFR1RZUEUgbWFj cm8uIFRoaXMgc3RvcmVzIGRlc2NyaXB0b3JzIGZvciBkeW5hbWljCiAgIGFsbG9jYXRpb25zIHdo aWxlIGF2b2lkaW5nIHVzZS1hZnRlci1zY29wZSBmb3Igc3RhdGljIGNvbnN0cnVjdG9yIGRlc2Ny aXB0b3JzLgogICBKZXJyeSBEZWxpc2xlIGlkZW50aWZpZWQgdGhhdCBzdGF0aWMgY29hcnJheSBk ZXNjcmlwdG9ycyBsaXZlIGluIF9jYWZfaW5pdAogICBzdGFjayBmcmFtZXMgdGhhdCBhcmUgZGVh ZCBieSB0aGUgdGltZSB0b2tlbnMgYXJlIHVzZWQuCgozLiBtZW1wdHIgbm90IGNsZWFyZWQgYWZ0 ZXIgZGVhbGxvY2F0aW9uOiBBZGRlZCBzaG1lbV90b2tlbi0+bWVtcHRyID0gTlVMTCB0bwogICBt YXJrIGNvYXJyYXlzIGFzIGRlYWxsb2NhdGVkLCBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlLgoK NC4gaXNfcHJlc2VudF9vbl9yZW1vdGUgbm90IGNoZWNraW5nIGFsbG9jYXRpb24gc3RhdHVzOiBB ZGRlZCBlYXJseSByZXR1cm4gd2hlbgogICBtZW1wdHIgaXMgTlVMTCwgc28gYWxsb2NhdGVkKCkg Y29ycmVjdGx5IHJldHVybnMgZmFsc2UgYWZ0ZXIgZGVhbGxvY2F0aW9uLgoKQXBwbGllZCBmaXhl cyB0byBib3RoIHNobWVtLmMgKHNoYXJlZC1tZW1vcnkgQ0FGKSBhbmQgc2luZ2xlLmMgKHNpbmds ZS1pbWFnZSBDQUYpLgoKQWRkcyB0ZXN0IGNhc2U6IHRlYW1fYWxsb2NhdGVkX2NvYXJyYXlzLmY5 MCAoYXV0by1kZWFsbG9jYXRpb24gdmVyaWZpY2F0aW9uKS4KCk5vdGU6IFRoZXNlIGxpYnJhcnkt c2lkZSBmaXhlcyBlbmFibGUgY29ycmVjdCBkZWFsbG9jYXRpb24gYnV0IHJlcXVpcmUgdGhlCmNv bXBhbmlvbiBjb21waWxlciBwYXRjaCAoUFIxMjYyMDUpIHRvIGdlbmVyYXRlIGV4cGxpY2l0IERF QUxMT0NBVEUgc3RhdGVtZW50cwpmb3IgdGVhbS1hbGxvY2F0ZWQgY29hcnJheXMuCgpSZXZpZXdl ZC1ieTogSmVycnkgRGVsaXNsZQpDby1BdXRob3JlZC1CeTogQ2xhdWRlIDxub3JlcGx5QGFudGhy b3BpYy5jb20+Ci0tLQogLi4uL2NvYXJyYXkvdGVhbV9hbGxvY2F0ZWRfY29hcnJheXMuZjkwICAg ICAgIHwgMTA0ICsrKysrKysrKysrKysrKysrKwogbGliZ2ZvcnRyYW4vY2FmL3NobWVtLmMgICAg ICAgICAgICAgICAgICAgICAgIHwgIDIzICsrKy0KIGxpYmdmb3J0cmFuL2NhZi9zaW5nbGUuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAxNiArKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTM3IGluc2Vy dGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9jb2FycmF5L3RlYW1fYWxsb2NhdGVkX2NvYXJyYXlzLmY5MAoKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJheS90ZWFtX2FsbG9jYXRlZF9j b2FycmF5cy5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXkvdGVhbV9hbGxv Y2F0ZWRfY29hcnJheXMuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li40ZWNlZTdiYmZmNAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvY29hcnJheS90ZWFtX2FsbG9jYXRlZF9jb2FycmF5cy5mOTAKQEAgLTAsMCArMSwxMDQgQEAK KyEgeyBkZy1kbyBydW4gfQorIQorISBGMjAxOCgxMS4xLjUuMik6IFRlc3QgYXV0by1kZWFsbG9j YXRpb24gb2YgYWxsb2NhdGFibGUgY29hcnJheXMgdGhhdCBhcmUKKyEgYWxsb2NhdGVkIHdpdGhp biBhIHRlYW0gYmxvY2suCishCitwcm9ncmFtIHRlc3RfbmVzdGVkX3RlYW1zCisgIHVzZSBpc29f Zm9ydHJhbl9lbnYsIG9ubHk6IHRlYW1fdHlwZQorICBpbXBsaWNpdCBub25lCisgIHR5cGUodGVh bV90eXBlKSA6OiB0ZWFtMSwgdGVhbTIKKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogYVs6XQor ICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBiWzpdCisgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6 IG91dGVyWzpdCisgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGlubmVyKDopWzpdICEgUmFuayBh bmQgY29yYW5rCisgIGxvZ2ljYWwgOjogaW1hZ2UxCisgIGludGVnZXIgOjogbWUKKworICB0eXBl IDo6IG15dHlwZQorICAgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGlbOl0KKyAgZW5kIHR5cGUK KyAgdHlwZShteXR5cGUpIDo6IGR0X2EsIGR0X2IsIGR0X291dGVyLCBkdF9pbm5lcgorCisgIGlt YWdlMSA9IHRoaXNfaW1hZ2UgKCkgPT0gMQorICBtZSA9IHRoaXNfaW1hZ2UgKCkKKworICAhIFRl c3QgMTogU2ltcGxlIGFsbG9jYXRpb24gaW4gc2luZ2xlIHRlYW0gYmxvY2sKKyAgZm9ybSB0ZWFt KDEsIHRlYW0xKQorICBjaGFuZ2UgdGVhbSh0ZWFtMSkKKyAgICBhbGxvY2F0ZShhWypdKQorICAg IGEgPSAxCisgICAgYWxsb2NhdGUoZHRfYSVpWypdLCBzb3VyY2UgPSBtZSkKKyAgZW5kIHRlYW0K KyAgaWYgKGltYWdlMSAuYW5kLiBhbGxvY2F0ZWQoYSkpIHN0b3AgMQorICBpZiAoaW1hZ2UxIC5h bmQuIGFsbG9jYXRlZChkdF9hJWkpKSBzdG9wIDIKKworICAhIFRlc3QgMjogTXVsdGlwbGUgYWxs b2NhdGlvbnMgaW4gc2luZ2xlIHRlYW0gYmxvY2sKKyAgZm9ybSB0ZWFtKDEsIHRlYW0xKQorICBj aGFuZ2UgdGVhbSh0ZWFtMSkKKyAgICBhbGxvY2F0ZShhWypdLCBiWypdKQorICAgIGEgPSAxCisg ICAgYiA9IDIKKyAgICBhbGxvY2F0ZShkdF9hJWlbKl0sIGR0X2IlaVsqXSwgc291cmNlID0gbWUp CisgIGVuZCB0ZWFtCisgIGlmIChpbWFnZTEgLmFuZC4gYWxsb2NhdGVkKGEpKSBzdG9wIDMKKyAg aWYgKGltYWdlMSAuYW5kLiBhbGxvY2F0ZWQoYikpIHN0b3AgNAorICBpZiAoaW1hZ2UxIC5hbmQu IGFsbG9jYXRlZChkdF9hJWkpKSBzdG9wIDUKKyAgaWYgKGltYWdlMSAuYW5kLiBhbGxvY2F0ZWQo ZHRfYiVpKSkgc3RvcCA2CisKKyAgISBUZXN0IDM6IE5lc3RlZCB0ZWFtIGJsb2NrcyAtIGFsbG9j YXRpb24gaW4gb3V0ZXIgdGVhbSBvbmx5CisgIGZvcm0gdGVhbSgxLCB0ZWFtMSkKKyAgY2hhbmdl IHRlYW0odGVhbTEpCisgICAgYWxsb2NhdGUob3V0ZXJbKl0pCisgICAgYWxsb2NhdGUoZHRfb3V0 ZXIlaVsqXSwgc291cmNlID0gbWUpCisgICAgb3V0ZXIgPSAxMAorCisgICAgISBOZXN0ZWQgdGVh bSB3aXRoIG5vIGFsbG9jYXRpb25zCisgICAgZm9ybSB0ZWFtKDEsIHRlYW0yKQorICAgIGNoYW5n ZSB0ZWFtKHRlYW0yKQorICAgIGVuZCB0ZWFtCisKKyAgICAhIE1ha2Ugc3VyZSB0aGF0IGF1dG8t ZGVhbGxvY2F0aW9uIG9jY3VycyBpbiByaWdodCBjb250ZXh0CisgICAgaWYgKGltYWdlMSAuYW5k LiAubm90LmFsbG9jYXRlZChvdXRlcikpIHN0b3AgNworICAgIGlmIChpbWFnZTEgLmFuZC4gLm5v dC5hbGxvY2F0ZWQoZHRfb3V0ZXIlaSkpIHN0b3AgOAorCisgIGVuZCB0ZWFtCisgIGlmIChpbWFn ZTEgLmFuZC4gYWxsb2NhdGVkKG91dGVyKSkgc3RvcCA5CisgIGlmIChpbWFnZTEgLmFuZC4gYWxs b2NhdGVkKGR0X291dGVyJWkpKSBzdG9wIDEwCisKKyAgISBUZXN0IDQ6IE5lc3RlZCB0ZWFtIGJs b2NrcyAtIGFsbG9jYXRpb24gaW4gaW5uZXIgdGVhbSBvbmx5CisgIGZvcm0gdGVhbSgxLCB0ZWFt MSkKKyAgY2hhbmdlIHRlYW0odGVhbTEpCisKKyAgICBmb3JtIHRlYW0oMSwgdGVhbTIpCisgICAg Y2hhbmdlIHRlYW0odGVhbTIpCisgICAgICBhbGxvY2F0ZShpbm5lcig0KVsqXSkKKyAgICAgIGlu bmVyID0gMjAKKyAgICAgIGFsbG9jYXRlKGR0X2lubmVyJWlbKl0pCisgICAgZW5kIHRlYW0KKwor ICAgIGlmIChpbWFnZTEgLmFuZC4gYWxsb2NhdGVkKGlubmVyKSkgc3RvcCAxMQorICAgIGlmIChp bWFnZTEgLmFuZC4gYWxsb2NhdGVkKGR0X2lubmVyJWkpKSBzdG9wIDEyCisgIGVuZCB0ZWFtCisK KyAgISBUZXN0IDU6IE5lc3RlZCB0ZWFtIGJsb2NrcyAtIGFsbG9jYXRpb25zIGluIGJvdGggbGV2 ZWxzCisgIGZvcm0gdGVhbSgxLCB0ZWFtMSkKKyAgY2hhbmdlIHRlYW0odGVhbTEpCisgICAgYWxs b2NhdGUob3V0ZXJbKl0pCisgICAgb3V0ZXIgPSAzMAorICAgIGFsbG9jYXRlKGR0X291dGVyJWlb Kl0sIHNvdXJjZSA9IG1lKQorCisgICAgZm9ybSB0ZWFtKDEsIHRlYW0yKQorICAgIGNoYW5nZSB0 ZWFtKHRlYW0yKQorICAgICAgYWxsb2NhdGUoaW5uZXIoMilbKl0pCisgICAgICBpbm5lciA9IDQw CisgICAgICBhbGxvY2F0ZShkdF9pbm5lciVpWypdLCBzb3VyY2UgPSBtZSkKKyAgICBlbmQgdGVh bQorCisgICAgaWYgKGltYWdlMSAuYW5kLiBhbGxvY2F0ZWQoaW5uZXIpKSBzdG9wIDEzCisgICAg aWYgKGltYWdlMSAuYW5kLiBhbGxvY2F0ZWQoZHRfaW5uZXIlaSkpIHN0b3AgMTQKKworICBlbmQg dGVhbQorICBpZiAoaW1hZ2UxIC5hbmQuIGFsbG9jYXRlZChvdXRlcikpIHN0b3AgMTUKKyAgaWYg KGltYWdlMSAuYW5kLiBhbGxvY2F0ZWQoZHRfb3V0ZXIlaSkpIHN0b3AgMTYKKworZW5kIHByb2dy YW0gdGVzdF9uZXN0ZWRfdGVhbXMKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NhZi9zaG1lbS5j IGIvbGliZ2ZvcnRyYW4vY2FmL3NobWVtLmMKaW5kZXggNjI4OGQyMjIwNGMuLmE0NGI4ZWJiZDE1 IDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9jYWYvc2htZW0uYworKysgYi9saWJnZm9ydHJhbi9j YWYvc2htZW0uYwpAQCAtMTk3LDYgKzE5NywxMyBAQCBfZ2ZvcnRyYW5fY2FmX251bV9pbWFnZXMg KGNhZl90ZWFtX3QgdGVhbSwgaW50MzJfdCAqdGVhbV9udW1iZXIpCiB9CiAKIAorLyogU3RhdGlj IHJlZ2lzdHJhdGlvbnMgY29tZSBmcm9tIHRoZSBfY2FmX2luaXQgY29uc3RydWN0b3IsIHdoaWNo CisgICBwYXNzZXMgYSBkZXNjcmlwdG9yIGxpdmluZyBpbiBpdHMgb3duIHN0YWNrIGZyYW1lLiAg VGhhdCBmcmFtZSBpcworICAgZ29uZSBieSB0aGUgdGltZSB0aGUgdG9rZW4gaXMgdXNlZCwgc28g aXQgbXVzdCBub3QgYmUgcmV0YWluZWQuICAqLworI2RlZmluZSBJU19TVEFUSUNfUkVHVFlQRSh0 KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKCh0KSA9PSBD QUZfUkVHVFlQRV9DT0FSUkFZX1NUQVRJQyB8fCAodCkgPT0gQ0FGX1JFR1RZUEVfTE9DS19TVEFU SUMgXAorICAgfHwgKHQpID09IENBRl9SRUdUWVBFX0VWRU5UX1NUQVRJQyB8fCAodCkgPT0gQ0FG X1JFR1RZUEVfQ1JJVElDQUwpCisKIHZvaWQKIF9nZm9ydHJhbl9jYWZfcmVnaXN0ZXIgKHNpemVf dCBzaXplLCBjYWZfcmVnaXN0ZXJfdCB0eXBlLCBjYWZfdG9rZW5fdCAqdG9rZW4sCiAJCQlnZmNf ZGVzY3JpcHRvcl90ICpkYXRhLCBpbnQgKnN0YXQsIGNoYXIgKmVycm1zZywKQEAgLTM2MCwxNSAr MzY3LDE2IEBAIF9nZm9ydHJhbl9jYWZfcmVnaXN0ZXIgKHNpemVfdCBzaXplLCBjYWZfcmVnaXN0 ZXJfdCB0eXBlLCBjYWZfdG9rZW5fdCAqdG9rZW4sCiAgICAgICBicmVhazsKICAgICBjYXNlIENB Rl9SRUdUWVBFX0NPQVJSQVlfQUxMT0NfQUxMT0NBVEVfT05MWToKICAgICAgIHNobWVtX3Rva2Vu LT5tZW1wdHIgPSBtZW07CisgICAgICBzaG1lbV90b2tlbi0+ZGVzYyA9IGRhdGE7CiAgICAgICBz aG1lbV90b2tlbi0+YmFzZSA9IG1lbTsKICAgICAgIHNobWVtX3Rva2VuLT5pbWFnZV9zaXplID0g c2l6ZTsKKyAgICAgIHNobWVtX3Rva2VuLT50b2tlbl9pZCA9IH4wVTsKICAgICAgIHNobWVtX3Rv a2VuLT5vd25pbmdfbWVtb3J5ID0gdHJ1ZTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ0FGX1JF R1RZUEVfQ09BUlJBWV9NQVBfRVhJU1RJTkc6CiAgICAgICAqc2htZW1fdG9rZW4KIAk9IChzdHJ1 Y3QgY2FmX3NobWVtX3Rva2VuKSB7bWVtICsgc2l6ZSAqIHRoaXNfaW1hZ2UuaW1hZ2VfbnVtLAot CQkJCSAgICBHRkNfREVTQ1JJUFRPUl9SQU5LIChkYXRhKSA+IDAgPyBkYXRhCi0JCQkJCQkJCSAg IDogTlVMTCwKKwkJCQkgICAgZGF0YSwKIAkJCQkgICAgbWVtLAogCQkJCSAgICBzaXplLAogCQkJ CSAgICBuZXh0X21lbWlkKyssCkBAIC0zNzgsMTUgKzM4NiwxNCBAQCBfZ2ZvcnRyYW5fY2FmX3Jl Z2lzdGVyIChzaXplX3Qgc2l6ZSwgY2FmX3JlZ2lzdGVyX3QgdHlwZSwgY2FmX3Rva2VuX3QgKnRv a2VuLAogICAgIGNhc2UgQ0FGX1JFR1RZUEVfTE9DS19BTExPQzoKICAgICBjYXNlIENBRl9SRUdU WVBFX0NSSVRJQ0FMOgogICAgICAgKnNobWVtX3Rva2VuID0gKHN0cnVjdCBjYWZfc2htZW1fdG9r ZW4pIHsKLQltZW0sCSAgICAgIEdGQ19ERVNDUklQVE9SX1JBTksgKGRhdGEpID4gMCA/IGRhdGEg OiBOVUxMLAorCW1lbSwJICAgICAgSVNfU1RBVElDX1JFR1RZUEUgKHR5cGUpID8gTlVMTCA6IGRh dGEsCiAJbWVtLAkgICAgICBzaXplLAogCW5leHRfbWVtaWQrKywgZmFsc2V9OwogICAgICAgYnJl YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICpzaG1lbV90b2tlbgogCT0gKHN0cnVjdCBjYWZfc2ht ZW1fdG9rZW4pIHttZW0gKyBzaXplICogdGhpc19pbWFnZS5pbWFnZV9udW0sCi0JCQkJICAgIEdG Q19ERVNDUklQVE9SX1JBTksgKGRhdGEpID4gMCA/IGRhdGEKLQkJCQkJCQkJICAgOiBOVUxMLAor CQkJCSAgICBJU19TVEFUSUNfUkVHVFlQRSAodHlwZSkgPyBOVUxMIDogZGF0YSwKIAkJCQkgICAg bWVtLAogCQkJCSAgICBzaXplLAogCQkJCSAgICBuZXh0X21lbWlkKyssCkBAIC00NDMsNiArNDUw LDggQEAgX2dmb3J0cmFuX2NhZl9kZXJlZ2lzdGVyIChjYWZfdG9rZW5fdCAqdG9rZW4sIGNhZl9k ZXJlZ2lzdGVyX3QgdHlwZSwgaW50ICpzdGF0LAogCiAgICAgICBpZiAoc2htZW1fdG9rZW4tPmRl c2MpCiAJR0ZDX0RFU0NSSVBUT1JfREFUQSAoc2htZW1fdG9rZW4tPmRlc2MpID0gTlVMTDsKKyAg ICAgIC8qIFNpZ25hbCBkZWFsbG9jYXRpb24gdG8gX2dmb3J0cmFuX2NhZl9pc19wcmVzZW50X29u X3JlbW90ZS4gICovCisgICAgICBzaG1lbV90b2tlbi0+bWVtcHRyID0gTlVMTDsKICAgICB9CiAK ICAgaWYgKHR5cGUgIT0gQ0FGX0RFUkVHVFlQRV9DT0FSUkFZX0RFQUxMT0NBVEVfT05MWSkKQEAg LTExMjUsNiArMTEzNCwxMCBAQCBfZ2ZvcnRyYW5fY2FmX2lzX3ByZXNlbnRfb25fcmVtb3RlIChj YWZfdG9rZW5fdCB0b2tlbiwgY29uc3QgaW50IGltYWdlX2luZGV4LAogCQkgICAgICAgTlVMTCwg TlVMTCwgTlVMTCkpCiAgICAgcmV0dXJuIDA7CiAKKyAgLyogQWZ0ZXIgZGVhbGxvY2F0aW9uLCBt ZW1wdHIgaXMgc2V0IHRvIE5VTEwuICAqLworICBpZiAoc2htZW1fdG9rZW4tPm1lbXB0ciA9PSBO VUxMKQorICAgIHJldHVybiAwOworCiAgIHNyY19wdHIgPSBzaG1lbV90b2tlbi0+YmFzZSArIHJl bW90ZV9pbWFnZV9pbmRleCAqIHNobWVtX3Rva2VuLT5pbWFnZV9zaXplOwogICBpZiAoc2htZW1f dG9rZW4tPmRlc2MpCiAgICAgewpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY2FmL3NpbmdsZS5j IGIvbGliZ2ZvcnRyYW4vY2FmL3NpbmdsZS5jCmluZGV4IGU0OGFhZWM2ZjA1Li5jNGM0ODc4NjVh MiAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vY2FmL3NpbmdsZS5jCisrKyBiL2xpYmdmb3J0cmFu L2NhZi9zaW5nbGUuYwpAQCAtMjA5LDYgKzIwOSwxMyBAQCBfZ2ZvcnRyYW5fY2FmX251bV9pbWFn ZXMgKGNhZl90ZWFtX3QgdGVhbSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCiB9CiAKIAorLyog U3RhdGljIHJlZ2lzdHJhdGlvbnMgY29tZSBmcm9tIHRoZSBfY2FmX2luaXQgY29uc3RydWN0b3Is IHdoaWNoCisgICBwYXNzZXMgYSBkZXNjcmlwdG9yIGxpdmluZyBpbiBpdHMgb3duIHN0YWNrIGZy YW1lLiAgVGhhdCBmcmFtZSBpcworICAgZ29uZSBieSB0aGUgdGltZSB0aGUgdG9rZW4gaXMgdXNl ZCwgc28gaXQgbXVzdCBub3QgYmUgcmV0YWluZWQuICAqLworI2RlZmluZSBJU19TVEFUSUNfUkVH VFlQRSh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKCh0 KSA9PSBDQUZfUkVHVFlQRV9DT0FSUkFZX1NUQVRJQyB8fCAodCkgPT0gQ0FGX1JFR1RZUEVfTE9D S19TVEFUSUMgXAorICAgfHwgKHQpID09IENBRl9SRUdUWVBFX0VWRU5UX1NUQVRJQyB8fCAodCkg PT0gQ0FGX1JFR1RZUEVfQ1JJVElDQUwpCisKIHZvaWQKIF9nZm9ydHJhbl9jYWZfcmVnaXN0ZXIg KHNpemVfdCBzaXplLCBjYWZfcmVnaXN0ZXJfdCB0eXBlLCBjYWZfdG9rZW5fdCAqdG9rZW4sCiAJ CQlnZmNfZGVzY3JpcHRvcl90ICpkYXRhLCBpbnQgKnN0YXQsIGNoYXIgKmVycm1zZywKQEAgLTI1 Miw3ICsyNTksNyBAQCBfZ2ZvcnRyYW5fY2FmX3JlZ2lzdGVyIChzaXplX3Qgc2l6ZSwgY2FmX3Jl Z2lzdGVyX3QgdHlwZSwgY2FmX3Rva2VuX3QgKnRva2VuLAogICBzaW5nbGVfdG9rZW4tPm1lbXB0 ciA9IGxvY2FsOwogICBzaW5nbGVfdG9rZW4tPm93bmluZ19tZW1vcnkgPSB0eXBlICE9IENBRl9S RUdUWVBFX0NPQVJSQVlfQUxMT0NfUkVHSVNURVJfT05MWQogCQkJCSYmIHR5cGUgIT0gQ0FGX1JF R1RZUEVfQ09BUlJBWV9NQVBfRVhJU1RJTkc7Ci0gIHNpbmdsZV90b2tlbi0+ZGVzYyA9IEdGQ19E RVNDUklQVE9SX1JBTksgKGRhdGEpID4gMCA/IGRhdGEgOiBOVUxMOworICBzaW5nbGVfdG9rZW4t PmRlc2MgPSBJU19TVEFUSUNfUkVHVFlQRSAodHlwZSkgPyBOVUxMIDogZGF0YTsKIAogICBpZiAo dW5saWtlbHkgKCFjYWZfdGVhbV9zdGFjaykpCiAgICAgaW5pdF9jYWZfdGVhbV9zdGFjayAoKTsK QEAgLTI5OSw2ICszMDYsOCBAQCBfZ2ZvcnRyYW5fY2FmX2RlcmVnaXN0ZXIgKGNhZl90b2tlbl90 ICp0b2tlbiwgY2FmX2RlcmVnaXN0ZXJfdCB0eXBlLCBpbnQgKnN0YXQsCiAgICAgICBmcmVlIChz aW5nbGVfdG9rZW4tPm1lbXB0cik7CiAgICAgICBpZiAoc2luZ2xlX3Rva2VuLT5kZXNjKQogCUdG Q19ERVNDUklQVE9SX0RBVEEgKHNpbmdsZV90b2tlbi0+ZGVzYykgPSBOVUxMOworICAgICAgLyog TWFyayBhcyBkZWFsbG9jYXRlZCBzbyBpc19wcmVzZW50X29uX3JlbW90ZSBrbm93cyBub3QgdG8g Y2hlY2sgdGhpcyBtZW1vcnkuICAqLworICAgICAgc2luZ2xlX3Rva2VuLT5tZW1wdHIgPSBOVUxM OwogICAgIH0KIAogICBpZiAodHlwZSAhPSBDQUZfREVSRUdUWVBFX0NPQVJSQVlfREVBTExPQ0FU RV9PTkxZKQpAQCAtNzEzLDYgKzcyMiwxMSBAQCBfZ2ZvcnRyYW5fY2FmX2lzX3ByZXNlbnRfb25f cmVtb3RlIChjYWZfdG9rZW5fdCB0b2tlbiwgY29uc3QgaW50IGltYWdlX2luZGV4LAogICAgIHJl dHVybiAwOwogCiAgIGNhZl9zaW5nbGVfdG9rZW5fdCBzaW5nbGVfdG9rZW4gPSBUT0tFTiAodG9r ZW4pOworICAvKiBVc2UgbWVtcHRyIHRvIGRldGVybWluZSBhbGxvY2F0aW9uIHN0YXR1cy4KKyAg ICAgQWZ0ZXIgZGVhbGxvY2F0aW9uLCBtZW1wdHIgaXMgc2V0IHRvIE5VTEwsIHNvIHdlIGNhbiBz YWZlbHkgY2hlY2sgaXQuICAqLworICBpZiAoc2luZ2xlX3Rva2VuLT5tZW1wdHIgPT0gTlVMTCkK KyAgICByZXR1cm4gMDsKKwogICBpbnQzMl90IHJlc3VsdDsKICAgc3RydWN0IGNhZl9zaW5nbGVf dG9rZW4gY2JfdG9rZW4gPSB7YWRkX2RhdGEsIE5VTEwsIGZhbHNlfTsKIAotLSAKMi41NS4wCgo= --00000000000096651b0657eb02a1--