Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nFahQ-0003pq-GJ for pgsql-hackers@arkaria.postgresql.org; Thu, 03 Feb 2022 11:54:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nFahP-0005m1-7R for pgsql-hackers@arkaria.postgresql.org; Thu, 03 Feb 2022 11:54:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nFahO-0005lr-RR for pgsql-hackers@lists.postgresql.org; Thu, 03 Feb 2022 11:54:50 +0000 Received: from mail-yb1-xb2a.google.com ([2607:f8b0:4864:20::b2a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nFahM-0001Jf-6l for pgsql-hackers@lists.postgresql.org; Thu, 03 Feb 2022 11:54:50 +0000 Received: by mail-yb1-xb2a.google.com with SMTP id r65so8031196ybc.11 for ; Thu, 03 Feb 2022 03:54:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Ij+I38C9PNWgmdeZEwRRPM5AWamcyrxPMGaKG95vwkI=; b=Ll5YrDo2DqNLpYIQ/Kp4o8KS9tQ9w4S2ACaL9bp2sEXHhIr6naNKCMKTfM5i1OpmM+ bkOujMX9Lxz2TFrvErtjGdAsWehU5j/ffEh96tGRSZ/2og5PPs6AmfB2gcfAdrB/2IMo nnZG5hxEMuQK0BXKG57wBUKaOlfU76pKORl12y6Ng1YBgWZMH+iKiEF8ULGesYqPlay3 LveRxzRGSeYP4zA3enlH4re7bJJNsTH1IzKq5WRzO98+YmZekL9YwIBOZfOGG7P7C1g6 Cs56Z2KojwYQH5zJi4Bwu67lD0F0p+4EgZODno42UOspk+3RhkAdfHVMPcKsXD1pQxHm F9Og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Ij+I38C9PNWgmdeZEwRRPM5AWamcyrxPMGaKG95vwkI=; b=TgCrWEI8S91ixshfE7KsrfhMNiVQvhLeJYauXiyf/F67xHFAAFbbgB5xOPLSDLvSHz jsoLjEwwr+Ysz/uVcjLZ09hsj+q6V9XJwh5aUuT4Vp9rFdqJtkOiG43m1Tax0Bh8gFjs 6SRFYsd3DkHl8oq8rvoRvd+ipr+FCKvyfV8r2zFQ9CnbImMb5XGwaQjoBetuhw9Yr49z CdZNsLPHFXmUmnA47YcoB1b8IOyC4U7AUxph/1wvQTJ4dzr0MkoEyru25zD+vcO90Qio +XCHNDiUJtFdpvIsKwWw3/Vz1ZQQrWIGgdp64wE+7KRmICYgDUWLw6E9b8ZOBeO9I1xV aX/Q== X-Gm-Message-State: AOAM530M2oCjKrlNnPXzmiUWe5xnKc8sTeU1lYUBq+uEU3BC64PL24KC QnRM1Lc+4qj0Yuh+5OYpWXqt/cSubElUjiqeTt8= X-Google-Smtp-Source: ABdhPJy9wMWqCpBaiFnfyol09xl0h2p0PVnWskSHUmWCAAa1LZXMhycbq4C7br/k6bLvAn7RmVrxFtVJnmExsfOUso4= X-Received: by 2002:a25:244e:: with SMTP id k75mr41252015ybk.635.1643889286146; Thu, 03 Feb 2022 03:54:46 -0800 (PST) MIME-Version: 1.0 References: <885288.1641420714@sss.pgh.pa.us> <137797.1643856498@sss.pgh.pa.us> In-Reply-To: <137797.1643856498@sss.pgh.pa.us> From: Amit Kapila Date: Thu, 3 Feb 2022 17:24:35 +0530 Message-ID: Subject: Re: Bugs in pgoutput.c To: Tom Lane Cc: PostgreSQL Hackers , =?UTF-8?B?SG91LCBaaGlqaWUv5L6vIOW/l+adsA==?= Content-Type: multipart/mixed; boundary="000000000000f37cc305d71bcce2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f37cc305d71bcce2 Content-Type: text/plain; charset="UTF-8" On Thu, Feb 3, 2022 at 8:18 AM Tom Lane wrote: > > Amit Kapila writes: > > Tom, is it okay for you if I go ahead with this patch after some testing? > > I've been too busy to get back to it, so sure. > Thanks. I have tested the patch by generating an invalidation message for table DDL before accessing the syscache in logicalrep_write_tuple(). I see that it correctly invalidates the entry and rebuilds it for the next operation. I couldn't come up with some automatic test for it so used the debugger to test it. I have made a minor change in one of the comments. I am planning to push this tomorrow unless there are comments or suggestions. -- With Regards, Amit Kapila. --000000000000f37cc305d71bcce2 Content-Type: application/octet-stream; name="v2-0001-Improve-invalidation-handling-in-pgoutput.c.patch" Content-Disposition: attachment; filename="v2-0001-Improve-invalidation-handling-in-pgoutput.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kz6x6dpc0 RnJvbSA5MTg2MDI4M2UwYTVmNmJjYTllMjQyYzViZTMxNjJiNDM2MTc1MWNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IEthcGlsYSA8YWthcGlsYUBwb3N0Z3Jlc3FsLm9yZz4K RGF0ZTogVGh1LCAzIEZlYiAyMDIyIDE0OjU1OjM3ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2Ml0g SW1wcm92ZSBpbnZhbGlkYXRpb24gaGFuZGxpbmcgaW4gcGdvdXRwdXQuYy4KCkZpeCB0aGUgZm9s bG93aW5nIGlzc3VlcyBpbiBwZ291dHB1dC5jOgoKKiByZWxfc3luY19jYWNoZV9yZWxhdGlvbl9j YiBkb2VzIHRoZSB3cm9uZyB0aGluZyB3aGVuIGNhbGxlZCBmb3IgYSBjYWNoZQpmbHVzaCAoaS5l LiwgcmVsaWQgPT0gMCkuIEluc3RlYWQgb2YgaW52YWxpZGF0aW5nIGFsbCBSZWxhdGlvblN5bmND YWNoZQplbnRyaWVzIGFzIGl0IHNob3VsZCwgaXQgZG9lcyBub3RoaW5nLgoKKiBXaGVuIHJlbF9z eW5jX2NhY2hlX3JlbGF0aW9uX2NiIGRvZXMgaW52YWxpZGF0ZSBhbiBlbnRyeSwgaXQgaW1tZWRp YXRlbHkKemFwcyB0aGUgZW50cnktPm1hcCBzdHJ1Y3R1cmUsIGV2ZW4gdGhvdWdoIHRoYXQgbWln aHQgc3RpbGwgYmUgaW4gdXNlLiBXZQppbnN0ZWFkIGp1c3QgbWFyayB0aGUgZW50cnkgYXMgaW52 YWxpZCBhbmQgcmVidWlsZCBpdCBhdCBhIGxhdGVyIHNhZmUKcG9pbnQuCgoqIFNpbWlsYXJseSwg cmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IgaXMgd2F5IHRvbyBlYWdlciB0byByZXNldCB0 aGUKcHViYWN0aW9ucyBmbGFncywgd2hpY2ggd291bGQgbGlrZWx5IGxlYWQgdG8gZmFpbGluZyB0 byB0cmFuc21pdCBjaGFuZ2VzCnRoYXQgd2Ugc2hvdWxkIHRyYW5zbWl0LiBJbiB0aGlzIGNhc2Ug YWxzbywgd2UganVzdCBtYXJrIHRoZSBlbnRyeSBhcwppbnZhbGlkIGFuZCByZWJ1aWxkIGl0IGF0 IGEgbGF0ZXIgc2FmZSBwb2ludC4KCkF1dGhvcjogVG9tIExhbmUKUmV2aWV3ZWQtYnk6IEFtaXQg S2FwaWxhCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vODg1Mjg4LjE2NDE0MjA3MTRA c3NzLnBnaC5wYS51cwotLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMgfCAxMTUgKysrKysrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2OCBpbnNl cnRpb25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYwppbmRleCBhZjhkNTFhZWU5Li42ZGY3MDVmOTBmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTEwOCwxMSArMTA4LDEz IEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uU3luY0VudHJ5CiB7CiAJT2lkCQkJcmVsaWQ7CQkJ LyogcmVsYXRpb24gb2lkICovCiAKKwlib29sCQlyZXBsaWNhdGVfdmFsaWQ7CS8qIG92ZXJhbGwg dmFsaWRpdHkgZmxhZyBmb3IgZW50cnkgKi8KKwogCWJvb2wJCXNjaGVtYV9zZW50OwogCUxpc3QJ ICAgKnN0cmVhbWVkX3R4bnM7CS8qIHN0cmVhbWVkIHRvcGxldmVsIHRyYW5zYWN0aW9ucyB3aXRo IHRoaXMKIAkJCQkJCQkJICogc2NoZW1hICovCiAKLQlib29sCQlyZXBsaWNhdGVfdmFsaWQ7CisJ LyogYXJlIHdlIHB1Ymxpc2hpbmcgdGhpcyByZWw/ICovCiAJUHVibGljYXRpb25BY3Rpb25zIHB1 YmFjdGlvbnM7CiAKIAkvKgpAQCAtOTAzLDcgKzkwNSw5IEBAIExvYWRQdWJsaWNhdGlvbnMoTGlz dCAqcHVibmFtZXMpCiB9CiAKIC8qCi0gKiBQdWJsaWNhdGlvbiBjYWNoZSBpbnZhbGlkYXRpb24g Y2FsbGJhY2suCisgKiBQdWJsaWNhdGlvbiBzeXNjYWNoZSBpbnZhbGlkYXRpb24gY2FsbGJhY2su CisgKgorICogQ2FsbGVkIGZvciBpbnZhbGlkYXRpb25zIG9uIHBnX3B1YmxpY2F0aW9uLgogICov CiBzdGF0aWMgdm9pZAogcHVibGljYXRpb25faW52YWxpZGF0aW9uX2NiKERhdHVtIGFyZywgaW50 IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCkBAIC0xMTMwLDEzICsxMTM0LDEyIEBAIGdldF9y ZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIE9pZCByZWxpZCkKIAkJCQkJCQkJCQkJ ICBIQVNIX0VOVEVSLCAmZm91bmQpOwogCUFzc2VydChlbnRyeSAhPSBOVUxMKTsKIAotCS8qIE5v dCBmb3VuZCBtZWFucyBzY2hlbWEgd2Fzbid0IHNlbnQgKi8KKwkvKiBpbml0aWFsaXplIGVudHJ5 LCBpZiBpdCdzIG5ldyAqLwogCWlmICghZm91bmQpCiAJewotCQkvKiBpbW1lZGlhdGVseSBtYWtl IGEgbmV3IGVudHJ5IHZhbGlkIGVub3VnaCB0byBzYXRpc2Z5IGNhbGxiYWNrcyAqLworCQllbnRy eS0+cmVwbGljYXRlX3ZhbGlkID0gZmFsc2U7CiAJCWVudHJ5LT5zY2hlbWFfc2VudCA9IGZhbHNl OwogCQllbnRyeS0+c3RyZWFtZWRfdHhucyA9IE5JTDsKLQkJZW50cnktPnJlcGxpY2F0ZV92YWxp ZCA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgPSBlbnRyeS0+cHViYWN0 aW9ucy5wdWJ1cGRhdGUgPQogCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZW50cnkt PnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsKIAkJZW50cnktPnB1Ymxpc2hfYXNfcmVs aWQgPSBJbnZhbGlkT2lkOwpAQCAtMTE2NiwxMyArMTE2OSw0MCBAQCBnZXRfcmVsX3N5bmNfZW50 cnkoUEdPdXRwdXREYXRhICpkYXRhLCBPaWQgcmVsaWQpCiAJCXsKIAkJCW9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNvbnRleHQpOwogCQkJaWYgKGRhdGEtPnB1Ymxp Y2F0aW9ucykKKwkJCXsKIAkJCQlsaXN0X2ZyZWVfZGVlcChkYXRhLT5wdWJsaWNhdGlvbnMpOwot CisJCQkJZGF0YS0+cHVibGljYXRpb25zID0gTklMOworCQkJfQogCQkJZGF0YS0+cHVibGljYXRp b25zID0gTG9hZFB1YmxpY2F0aW9ucyhkYXRhLT5wdWJsaWNhdGlvbl9uYW1lcyk7CiAJCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAkJCXB1YmxpY2F0aW9uc192YWxpZCA9IHRydWU7 CiAJCX0KIAorCQkvKgorCQkgKiBSZXNldCBzY2hlbWFfc2VudCBzdGF0dXMgYXMgdGhlIHJlbGF0 aW9uIGRlZmluaXRpb24gbWF5IGhhdmUKKwkJICogY2hhbmdlZC4gIEFsc28gcmVzZXQgcHViYWN0 aW9ucyB0byBlbXB0eSBpbiBjYXNlIHJlbCB3YXMgZHJvcHBlZAorCQkgKiBmcm9tIGEgcHVibGlj YXRpb24uICBBbHNvIGZyZWUgYW55IG9iamVjdHMgdGhhdCBkZXBlbmRlZCBvbiB0aGUKKwkJICog ZWFybGllciBkZWZpbml0aW9uLgorCQkgKi8KKwkJZW50cnktPnNjaGVtYV9zZW50ID0gZmFsc2U7 CisJCWxpc3RfZnJlZShlbnRyeS0+c3RyZWFtZWRfdHhucyk7CisJCWVudHJ5LT5zdHJlYW1lZF90 eG5zID0gTklMOworCQllbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgPSBmYWxzZTsKKwkJZW50 cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0gZmFsc2U7CisJCWVudHJ5LT5wdWJhY3Rpb25zLnB1 YmRlbGV0ZSA9IGZhbHNlOworCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IGZhbHNl OworCQlpZiAoZW50cnktPm1hcCkKKwkJeworCQkJLyoKKwkJCSAqIE11c3QgZnJlZSB0aGUgVHVw bGVEZXNjcyBjb250YWluZWQgaW4gdGhlIG1hcCBleHBsaWNpdGx5LAorCQkJICogYmVjYXVzZSBm cmVlX2NvbnZlcnNpb25fbWFwKCkgZG9lc24ndC4KKwkJCSAqLworCQkJRnJlZVR1cGxlRGVzYyhl bnRyeS0+bWFwLT5pbmRlc2MpOworCQkJRnJlZVR1cGxlRGVzYyhlbnRyeS0+bWFwLT5vdXRkZXNj KTsKKwkJCWZyZWVfY29udmVyc2lvbl9tYXAoZW50cnktPm1hcCk7CisJCX0KKwkJZW50cnktPm1h cCA9IE5VTEw7CisKIAkJLyoKIAkJICogQnVpbGQgcHVibGljYXRpb24gY2FjaGUuIFdlIGNhbid0 IHVzZSBvbmUgcHJvdmlkZWQgYnkgcmVsY2FjaGUgYXMKIAkJICogcmVsY2FjaGUgY29uc2lkZXJz IGFsbCBwdWJsaWNhdGlvbnMgZ2l2ZW4gcmVsYXRpb24gaXMgaW4sIGJ1dCBoZXJlCkBAIC0xMjEy LDE2ICsxMjQyLDE4IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIE9p ZCByZWxpZCkKIAkJCQkJZm9yZWFjaChsYzIsIGFuY2VzdG9ycykKIAkJCQkJewogCQkJCQkJT2lk CQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lkKGxjMik7CisJCQkJCQlMaXN0CSAgICphcHViaWRzID0g R2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpOworCQkJCQkJTGlzdAkgICAqYXNjaGVt YVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhnZXRfcmVsX25hbWVzcGFjZShhbmNlc3Rv cikpOwogCi0JCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKEdldFJlbGF0aW9uUHVibGljYXRpb25z KGFuY2VzdG9yKSwKLQkJCQkJCQkJCQkJcHViLT5vaWQpIHx8Ci0JCQkJCQkJbGlzdF9tZW1iZXJf b2lkKEdldFNjaGVtYVB1YmxpY2F0aW9ucyhnZXRfcmVsX25hbWVzcGFjZShhbmNlc3RvcikpLAot CQkJCQkJCQkJCQlwdWItPm9pZCkpCisJCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFwdWJpZHMs IHB1Yi0+b2lkKSB8fAorCQkJCQkJCWxpc3RfbWVtYmVyX29pZChhc2NoZW1hUHViaWRzLCBwdWIt Pm9pZCkpCiAJCQkJCQl7CiAJCQkJCQkJYW5jZXN0b3JfcHVibGlzaGVkID0gdHJ1ZTsKIAkJCQkJ CQlpZiAocHViLT5wdWJ2aWFyb290KQogCQkJCQkJCQlwdWJsaXNoX2FzX3JlbGlkID0gYW5jZXN0 b3I7CiAJCQkJCQl9CisJCQkJCQlsaXN0X2ZyZWUoYXB1Ymlkcyk7CisJCQkJCQlsaXN0X2ZyZWUo YXNjaGVtYVB1Ymlkcyk7CiAJCQkJCX0KIAkJCQl9CiAKQEAgLTEyNTEsNiArMTI4Myw3IEBAIGdl dF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIE9pZCByZWxpZCkKIAkJfQogCiAJ CWxpc3RfZnJlZShwdWJpZHMpOworCQlsaXN0X2ZyZWUoc2NoZW1hUHViaWRzKTsKIAogCQllbnRy eS0+cHVibGlzaF9hc19yZWxpZCA9IHB1Ymxpc2hfYXNfcmVsaWQ7CiAJCWVudHJ5LT5yZXBsaWNh dGVfdmFsaWQgPSB0cnVlOwpAQCAtMTMyMiw0MyArMTM1NSw0MCBAQCByZWxfc3luY19jYWNoZV9y ZWxhdGlvbl9jYihEYXR1bSBhcmcsIE9pZCByZWxpZCkKIAkvKgogCSAqIE5vYm9keSBrZWVwcyBw b2ludGVycyB0byBlbnRyaWVzIGluIHRoaXMgaGFzaCB0YWJsZSBhcm91bmQgb3V0c2lkZQogCSAq IGxvZ2ljYWwgZGVjb2RpbmcgY2FsbGJhY2sgY2FsbHMgLSBidXQgaW52YWxpZGF0aW9uIGV2ZW50 cyBjYW4gY29tZSBpbgotCSAqICpkdXJpbmcqIGEgY2FsbGJhY2sgaWYgd2UgYWNjZXNzIHRoZSBy ZWxjYWNoZSBpbiB0aGUgY2FsbGJhY2suIEJlY2F1c2UKLQkgKiBvZiB0aGF0IHdlIG11c3QgbWFy ayB0aGUgY2FjaGUgZW50cnkgYXMgaW52YWxpZCBidXQgbm90IHJlbW92ZSBpdCBmcm9tCi0JICog dGhlIGhhc2ggd2hpbGUgaXQgY291bGQgc3RpbGwgYmUgcmVmZXJlbmNlZCwgdGhlbiBwcnVuZSBp dCBhdCBhIGxhdGVyCi0JICogc2FmZSBwb2ludC4KLQkgKgotCSAqIEdldHRpbmcgaW52YWxpZGF0 aW9ucyBmb3IgcmVsYXRpb25zIHRoYXQgYXJlbid0IGluIHRoZSB0YWJsZSBpcwotCSAqIGVudGly ZWx5IG5vcm1hbCwgc2luY2UgdGhlcmUncyBubyB3YXkgdG8gdW5yZWdpc3RlciBmb3IgYW4gaW52 YWxpZGF0aW9uCi0JICogZXZlbnQuIFNvIHdlIGRvbid0IGNhcmUgaWYgaXQncyBmb3VuZCBvciBu b3QuCisJICogKmR1cmluZyogYSBjYWxsYmFjayBpZiB3ZSBkbyBhbnkgc3lzY2FjaGUgYWNjZXNz IGluIHRoZSBjYWxsYmFjay4KKwkgKiBCZWNhdXNlIG9mIHRoYXQgd2UgbXVzdCBtYXJrIHRoZSBj YWNoZSBlbnRyeSBhcyBpbnZhbGlkIGJ1dCBub3QgZGFtYWdlCisJICogYW55IG9mIGl0cyBzdWJz dHJ1Y3R1cmUgaGVyZS4gIFRoZSBuZXh0IGdldF9yZWxfc3luY19lbnRyeSgpIGNhbGwgd2lsbAor CSAqIHJlYnVpbGQgaXQgYWxsLgogCSAqLwotCWVudHJ5ID0gKFJlbGF0aW9uU3luY0VudHJ5ICop IGhhc2hfc2VhcmNoKFJlbGF0aW9uU3luY0NhY2hlLCAmcmVsaWQsCi0JCQkJCQkJCQkJCSAgSEFT SF9GSU5ELCBOVUxMKTsKLQotCS8qCi0JICogUmVzZXQgc2NoZW1hIHNlbnQgc3RhdHVzIGFzIHRo ZSByZWxhdGlvbiBkZWZpbml0aW9uIG1heSBoYXZlIGNoYW5nZWQuCi0JICogQWxzbyBmcmVlIGFu eSBvYmplY3RzIHRoYXQgZGVwZW5kZWQgb24gdGhlIGVhcmxpZXIgZGVmaW5pdGlvbi4KLQkgKi8K LQlpZiAoZW50cnkgIT0gTlVMTCkKKwlpZiAoT2lkSXNWYWxpZChyZWxpZCkpCiAJewotCQllbnRy eS0+c2NoZW1hX3NlbnQgPSBmYWxzZTsKLQkJbGlzdF9mcmVlKGVudHJ5LT5zdHJlYW1lZF90eG5z KTsKLQkJZW50cnktPnN0cmVhbWVkX3R4bnMgPSBOSUw7Ci0JCWlmIChlbnRyeS0+bWFwKQorCQkv KgorCQkgKiBHZXR0aW5nIGludmFsaWRhdGlvbnMgZm9yIHJlbGF0aW9ucyB0aGF0IGFyZW4ndCBp biB0aGUgdGFibGUgaXMKKwkJICogZW50aXJlbHkgbm9ybWFsLiAgU28gd2UgZG9uJ3QgY2FyZSBp ZiBpdCdzIGZvdW5kIG9yIG5vdC4KKwkJICovCisJCWVudHJ5ID0gKFJlbGF0aW9uU3luY0VudHJ5 ICopIGhhc2hfc2VhcmNoKFJlbGF0aW9uU3luY0NhY2hlLCAmcmVsaWQsCisJCQkJCQkJCQkJCQkg IEhBU0hfRklORCwgTlVMTCk7CisJCWlmIChlbnRyeSAhPSBOVUxMKQorCQkJZW50cnktPnJlcGxp Y2F0ZV92YWxpZCA9IGZhbHNlOworCX0KKwllbHNlCisJeworCQkvKiBXaG9sZSBjYWNoZSBtdXN0 IGJlIGZsdXNoZWQuICovCisJCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisKKwkJaGFzaF9zZXFf aW5pdCgmc3RhdHVzLCBSZWxhdGlvblN5bmNDYWNoZSk7CisJCXdoaWxlICgoZW50cnkgPSAoUmVs YXRpb25TeW5jRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQogCQl7 Ci0JCQkvKgotCQkJICogTXVzdCBmcmVlIHRoZSBUdXBsZURlc2NzIGNvbnRhaW5lZCBpbiB0aGUg bWFwIGV4cGxpY2l0bHksCi0JCQkgKiBiZWNhdXNlIGZyZWVfY29udmVyc2lvbl9tYXAoKSBkb2Vz bid0LgotCQkJICovCi0JCQlGcmVlVHVwbGVEZXNjKGVudHJ5LT5tYXAtPmluZGVzYyk7Ci0JCQlG cmVlVHVwbGVEZXNjKGVudHJ5LT5tYXAtPm91dGRlc2MpOwotCQkJZnJlZV9jb252ZXJzaW9uX21h cChlbnRyeS0+bWFwKTsKKwkJCWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSBmYWxzZTsKIAkJfQot CQllbnRyeS0+bWFwID0gTlVMTDsKIAl9CiB9CiAKIC8qCiAgKiBQdWJsaWNhdGlvbiByZWxhdGlv bi9zY2hlbWEgbWFwIHN5c2NhY2hlIGludmFsaWRhdGlvbiBjYWxsYmFjaworICoKKyAqIENhbGxl ZCBmb3IgaW52YWxpZGF0aW9ucyBvbiBwZ19wdWJsaWNhdGlvbiwgcGdfcHVibGljYXRpb25fcmVs LCBhbmQKKyAqIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS4KICAqLwogc3RhdGljIHZvaWQKIHJl bF9zeW5jX2NhY2hlX3B1YmxpY2F0aW9uX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQz MiBoYXNodmFsdWUpCkBAIC0xMzgyLDE1ICsxNDEyLDYgQEAgcmVsX3N5bmNfY2FjaGVfcHVibGlj YXRpb25fY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIAl3aGls ZSAoKGVudHJ5ID0gKFJlbGF0aW9uU3luY0VudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKIAl7CiAJCWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSBmYWxzZTsKLQotCQkv KgotCQkgKiBUaGVyZSBtaWdodCBiZSBzb21lIHJlbGF0aW9ucyBkcm9wcGVkIGZyb20gdGhlIHB1 YmxpY2F0aW9uIHNvIHdlCi0JCSAqIGRvbid0IG5lZWQgdG8gcHVibGlzaCB0aGUgY2hhbmdlcyBm b3IgdGhlbS4KLQkJICovCi0JCWVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2VydCA9IGZhbHNlOwot CQllbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPSBmYWxzZTsKLQkJZW50cnktPnB1YmFjdGlv bnMucHViZGVsZXRlID0gZmFsc2U7Ci0JCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0g ZmFsc2U7CiAJfQogfQogCi0tIAoyLjI4LjAud2luZG93cy4xCgo= --000000000000f37cc305d71bcce2--