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--