Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tsJba-000b7T-Vp for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Mar 2025 10:46:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tsJbY-002GmS-V9 for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Mar 2025 10:46:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tsJbX-002Gil-Ll for pgsql-hackers@lists.postgresql.org; Wed, 12 Mar 2025 10:46:28 +0000 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tsJbU-002PI2-39 for pgsql-hackers@postgresql.org; Wed, 12 Mar 2025 10:46:26 +0000 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-30613802a04so71660441fa.2 for ; Wed, 12 Mar 2025 03:46:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741776383; x=1742381183; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=jdwxHaW3FupeBJPN2KwWN46bBBj8QARP6bw0NsowZL8=; b=OtiQfRITTwXpsY0xsdJ1+oGd7HRHoMBYMfzXDdzXzuoV0B3qqwXed+EeSCcQVhji07 tlAMvtFI57jkn+U7CSJGzYkHc/zfCrBIVRbbJHI23MDzONO36Ajte3ftN6uVMzItVTSn mW6p3abuszOuozPJ8si0V/2/FEZRKlkQZyZMubro+SG1XDP2yw/8eF/HDr037xWIU15c CQWb5pMuLAV1pjRZPtlcFgyulUkZAcyhZJY2Y0Ok6t8efEV/OTcEZzlkyVZbhoZhLCvv +5mwbrxM4dW35QU2Mc7Z1Bm+GE+X9ba2QOD6DZBeTPAwMjPJf/itCh0e/FDHGpkMju7U Ml/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741776383; x=1742381183; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=jdwxHaW3FupeBJPN2KwWN46bBBj8QARP6bw0NsowZL8=; b=sMelQQBPL1JRVBloGVZ2QvBWvBXkwVcNC4MInp6hM+aEiC0wpbmzHSK6hRCQ0ZiPAr gXKpg9WTbeqM60YE4+Y9xxpEta0LTNS7TrzJoq5FtdySdUCSaUGPYVO6DPzktcZE9Xab bqIyiRreRkWOFKwLAWghS+HO983DOmxEw9O+WpHmZCalPFaA67vBMxXQ5los5hPaJ/zw uGbLCsj/hKDDc+qwvKkXsafW+0sAVKbBk/1BZ38rlO/zmncjsF0PIT0fcRTdMDSTPokr ATDJ9o+1CocAqboxZ3zDqE2vDAFa+oj79A9ty2sO49vFo6VQqQg/CA6tORahrINhuLFZ 7TLA== X-Gm-Message-State: AOJu0Ywpk5m4ASUcjVHTv8xmRO7KpPKh0z8UTYvWIVbEKBla+2g3sG0U RJGrv8rhbXbcrIZ9jgy+1Qj46J9wK9VLX0SumaHvyxJM6fzi+VgQZ/uBBVQ+Ze3s6BIZxR31SO4 WHCbVONxD/Q9/ravThd9juzouVdHRThKD X-Gm-Gg: ASbGncthnaSD9KW+prsf/FnlyADBqCl56mE7NsAHa9W2TQeHieuDz5mZUP/JCAm7y0m LuHbeUGM+G0h45oqDcyeCUj8CgD2Jo2MoPk3Vnopp3GlXoVfeSiYI9mBczzwuzApoEpDAPSnBfR ZweQPV8xHFxN8RFeQe1hnPIFncnk02V+9Ad8R9aWg0LoLDwYCsvSDzm+PeGlMJ X-Google-Smtp-Source: AGHT+IFdXQKRlRRPyhfdfPS3nWE9Z6dzv4m4Doz8hMXsPQDniO9ajkCfmCRzSB0HWDP58MoRnXeZq7nm1bm+bq7FyRU= X-Received: by 2002:a05:6512:1094:b0:549:912a:d051 with SMTP id 2adb3069b0e04-549aba2a91emr2790962e87.0.1741776383031; Wed, 12 Mar 2025 03:46:23 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Rahila Syed Date: Wed, 12 Mar 2025 16:16:10 +0530 X-Gm-Features: AQ5f1JrhN0r5-wmEG_28sL_nuLFsrksy2p-HG7FpepMH6RXLAZupsWs0NNG0rYE Message-ID: Subject: Re: Improve monitoring of shared memory allocations To: Andres Freund Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000096e8a8063022eaf3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000096e8a8063022eaf3 Content-Type: multipart/alternative; boundary="00000000000096e8a6063022eaf1" --00000000000096e8a6063022eaf1 Content-Type: text/plain; charset="UTF-8" Hi Andres, >> > + if (hashp->isshared) >> > + { >> > + int nsegs; >> > + int nbuckets; >> > + nsegs = find_num_of_segs(nelem, &nbuckets, >> hctl->num_partitions, hctl->ssize); >> > + >> > + curr_offset = (((char *) hashp->hctl) + >> sizeof(HASHHDR) + (info->dsize * sizeof(HASHSEGMENT)) + >> > + + (sizeof(HASHBUCKET) * hctl->ssize * nsegs)); >> > + } >> > + >> >> Why only do this for shared hashtables? Couldn't we allocate the elments >> together with the rest for non-share hashtables too? >> > > I have now made the changes uniformly across shared and non-shared hash tables, making the code fix look cleaner. I hope this aligns with your suggestions. Please find attached updated and rebased versions of both patches. Kindly let me know your views. Thank you, Rahila Syed --00000000000096e8a6063022eaf1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Andres,



> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (hashp->isshare= d)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0int=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0nsegs;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0int=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0nbuckets;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0nsegs =3D find_num_of_segs(nelem, &nbuckets, hctl->num_partit= ions, hctl->ssize);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0curr_offset =3D=C2=A0 (((char *) hashp->hctl) + sizeof(HASHHDR) += (info->dsize * sizeof(HASHSEGMENT)) +
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 + (sizeof(HASHBUCKET) * hctl->ssize * nsegs));
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
> +

Why only do this for shared hashtables? Couldn't we allocate the elment= s
together with the rest for non-share hashtables too?
<= br>

I have now made the changes unif= ormly across shared and non-shared hash tables,=C2=A0
making the = code fix look cleaner. I hope this aligns with your suggestions.=C2=A0
Please find attached updated and rebased versions of both patches.
Kindly let me know your views.

Thank you,
Rahila Syed=
--00000000000096e8a6063022eaf1-- --00000000000096e8a8063022eaf3 Content-Type: application/octet-stream; name="v3-0001-Account-for-initial-shared-memory-allocated-by-hash_.patch" Content-Disposition: attachment; filename="v3-0001-Account-for-initial-shared-memory-allocated-by-hash_.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m85shg5x0 RnJvbSA5OGNhOWNjM2YzNGI2ZGQwODkyMjgxNTgzYjRlYjVlMzhjZTBhNjY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFpbC5jb20+ CkRhdGU6IFRodSwgNiBNYXIgMjAyNSAyMDowNjoyMCArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMS8y XSBBY2NvdW50IGZvciBpbml0aWFsIHNoYXJlZCBtZW1vcnkgYWxsb2NhdGVkIGJ5CiBoYXNoX2Ny ZWF0ZQoKcGdfc2htZW1fYWxsb2NhdGlvbnMgdHJhY2tzIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGJ5 IFNobWVtSW5pdFN0cnVjdCwKd2hpY2gsIGluIGNhc2Ugb2Ygc2hhcmVkIGhhc2ggdGFibGVzLCBv bmx5IGNvdmVycyBtZW1vcnkgYWxsb2NhdGVkCnRvIHRoZSBoYXNoIGRpcmVjdG9yeSBhbmQgY29u dHJvbCBzdHJ1Y3R1cmUuIFRoZSBoYXNoIHNlZ21lbnRzIGFuZApidWNrZXRzIGFyZSBhbGxvY2F0 ZWQgdXNpbmcgU2htZW1BbGxvY05vRXJyb3Igd2hpY2ggZG9lcyBub3QgYXR0cmlidXRlCnRoZSBh bGxvY2F0aW9ucyB0byB0aGUgaGFzaCB0YWJsZSBuYW1lLiBUaHVzLCB0aGVzZSBhbGxvY2F0aW9u cyBhcmUKbm90IHRyYWNrZWQgaW4gcGdfc2htZW1fYWxsb2NhdGlvbnMuCgpJbmNsdWRlIHRoZSBh bGxvY2F0aW9uIG9mIHNlZ21lbnRzLCBidWNrZXRzIGFuZCBlbGVtZW50cyBpbiB0aGUgaW5pdGlh bAphbGxvY2F0aW9uIG9mIHNoYXJlZCBoYXNoIGRpcmVjdG9yeS4gVGhpcyByZXN1bHRzIGluIHRo ZSBleGlzdGluZyBTaG1lbUluZGV4CmVudHJpZXMgdG8gcmVmbGVjdCBhbGwgdGhlc2UgYWxsb2Nh dGlvbnMuIFRoZSByZXN1bHRpbmcgdHVwbGVzIGluCnBnX3NobWVtX2FsbG9jYXRpb25zIHJlcHJl c2VudCB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgaW5pdGlhbCBoYXNoIHRhYmxlCmluY2x1ZGluZyBh bGwgdGhlIGJ1Y2tldHMgYW5kIHRoZSBlbGVtZW50cyB0aGV5IGNvbnRhaW4sIGluc3RlYWQgb2Yg anVzdAp0aGUgZGlyZWN0b3J5IHNpemUuCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ht ZW0uYyAgIHwgICAzICstCiBzcmMvYmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMgfCAyMDkg KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9oc2VhcmNo LmggICAgICAgfCAgIDMgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTYxIGluc2VydGlvbnMoKyksIDU0 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVt LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IDg5NWE0M2ZiMzkuLmQ4 YWVkMGJmYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwpAQCAtNzMsNiArNzMsNyBAQAogI2lu Y2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2R5bmFoYXNoLmgiCiAKIHN0 YXRpYyB2b2lkICpTaG1lbUFsbG9jUmF3KFNpemUgc2l6ZSwgU2l6ZSAqYWxsb2NhdGVkX3NpemUp OwogCkBAIC0zNDYsNyArMzQ3LDcgQEAgU2htZW1Jbml0SGFzaChjb25zdCBjaGFyICpuYW1lLAkJ LyogdGFibGUgc3RyaW5nIG5hbWUgZm9yIHNobWVtIGluZGV4ICovCiAKIAkvKiBsb29rIGl0IHVw IGluIHRoZSBzaG1lbSBpbmRleCAqLwogCWxvY2F0aW9uID0gU2htZW1Jbml0U3RydWN0KG5hbWUs Ci0JCQkJCQkJICAgaGFzaF9nZXRfc2hhcmVkX3NpemUoaW5mb1AsIGhhc2hfZmxhZ3MpLAorCQkJ CQkJCSAgIGhhc2hfZ2V0X2luaXRfc2l6ZShpbmZvUCwgaGFzaF9mbGFncywgaW5pdF9zaXplLCAw KSwKIAkJCQkJCQkgICAmZm91bmQpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYwpp bmRleCBjZDVhMDAxMzJmLi4zYmRmM2Q2ZmQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9oYXNoL2R5bmFoYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5j CkBAIC0yNjUsNyArMjY1LDcgQEAgc3RhdGljIGxvbmcgaGFzaF9hY2Nlc3NlcywKICAqLwogc3Rh dGljIHZvaWQgKkR5bmFIYXNoQWxsb2MoU2l6ZSBzaXplKTsKIHN0YXRpYyBIQVNIU0VHTUVOVCBz ZWdfYWxsb2MoSFRBQiAqaGFzaHApOwotc3RhdGljIGJvb2wgZWxlbWVudF9hbGxvYyhIVEFCICpo YXNocCwgaW50IG5lbGVtLCBpbnQgZnJlZWxpc3RfaWR4KTsKK3N0YXRpYyBIQVNIRUxFTUVOVCAq ZWxlbWVudF9hbGxvYyhIVEFCICpoYXNocCwgaW50IG5lbGVtKTsKIHN0YXRpYyBib29sIGRpcl9y ZWFsbG9jKEhUQUIgKmhhc2hwKTsKIHN0YXRpYyBib29sIGV4cGFuZF90YWJsZShIVEFCICpoYXNo cCk7CiBzdGF0aWMgSEFTSEJVQ0tFVCBnZXRfaGFzaF9lbnRyeShIVEFCICpoYXNocCwgaW50IGZy ZWVsaXN0X2lkeCk7CkBAIC0yODEsNiArMjgxLDkgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJfc2Vx X3NjYW4oSFRBQiAqaGFzaHApOwogc3RhdGljIHZvaWQgZGVyZWdpc3Rlcl9zZXFfc2NhbihIVEFC ICpoYXNocCk7CiBzdGF0aWMgYm9vbCBoYXNfc2VxX3NjYW5zKEhUQUIgKmhhc2hwKTsKIAorc3Rh dGljIGludAljb21wdXRlX2J1Y2tldHNfYW5kX3NlZ3MobG9uZyBuZWxlbSwgaW50ICpuYnVja2V0 cywKKwkJCQkJCQkJCSBsb25nIG51bV9wYXJ0aXRpb25zLCBsb25nIHNzaXplKTsKK3N0YXRpYyB2 b2lkIGVsZW1lbnRfYWRkKEhUQUIgKmhhc2hwLCBIQVNIRUxFTUVOVCAqZmlyc3RFbGVtZW50LCBp bnQgZnJlZWxpc3RfaWR4LCBpbnQgbmVsZW0pOwogCiAvKgogICogbWVtb3J5IGFsbG9jYXRpb24g c3VwcG9ydApAQCAtMzUzLDYgKzM1Niw3IEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5h bWUsIGxvbmcgbmVsZW0sIGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFncykKIHsKIAlIVEFC CSAgICpoYXNocDsKIAlIQVNISERSICAgICpoY3RsOworCWludAkJCW5lbGVtX2JhdGNoOwogCiAJ LyoKIAkgKiBIYXNoIHRhYmxlcyBub3cgYWxsb2NhdGUgc3BhY2UgZm9yIGtleSBhbmQgZGF0YSwg YnV0IHlvdSBoYXZlIHRvIHNheQpAQCAtNTA3LDkgKzUxMSwxOSBAQCBoYXNoX2NyZWF0ZShjb25z dCBjaGFyICp0YWJuYW1lLCBsb25nIG5lbGVtLCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxh Z3MpCiAJCWhhc2hwLT5pc3NoYXJlZCA9IGZhbHNlOwogCX0KIAorCS8qIENob29zZSBudW1iZXIg b2YgZW50cmllcyB0byBhbGxvY2F0ZSBhdCBhIHRpbWUgKi8KKwluZWxlbV9iYXRjaCA9IGNob29z ZV9uZWxlbV9hbGxvYyhpbmZvLT5lbnRyeXNpemUpOworCisJLyoKKwkgKiBBbGxvY2F0ZSB0aGUg bWVtb3J5IG5lZWRlZCBmb3IgaGFzaCBoZWFkZXIsIGRpcmVjdG9yeSwgc2VnbWVudHMgYW5kCisJ ICogZWxlbWVudHMgdG9nZXRoZXIuIFVzZSBwb2ludGVyIGFyaXRobWV0aWMgdG8gYXJyaXZlIGF0 IHRoZSBzdGFydAorCSAqIG9mIGVhY2ggb2YgdGhlc2Ugc3RydWN0dXJlcyBsYXRlci4KKwkgKi8K IAlpZiAoIWhhc2hwLT5oY3RsKQogCXsKLQkJaGFzaHAtPmhjdGwgPSAoSEFTSEhEUiAqKSBoYXNo cC0+YWxsb2Moc2l6ZW9mKEhBU0hIRFIpKTsKKwkJU2l6ZQkJc2l6ZSA9IGhhc2hfZ2V0X2luaXRf c2l6ZShpbmZvLCBmbGFncywgbmVsZW0sIG5lbGVtX2JhdGNoKTsKKworCQloYXNocC0+aGN0bCA9 IChIQVNISERSICopIGhhc2hwLT5hbGxvYyhzaXplKTsKIAkJaWYgKCFoYXNocC0+aGN0bCkKIAkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCkBA IC01NTgsNiArNTcyLDggQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFibmFtZSwgbG9uZyBu ZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQogCWhjdGwtPmtleXNpemUgPSBp bmZvLT5rZXlzaXplOwogCWhjdGwtPmVudHJ5c2l6ZSA9IGluZm8tPmVudHJ5c2l6ZTsKIAorCWhj dGwtPm5lbGVtX2FsbG9jID0gbmVsZW1fYmF0Y2g7CisKIAkvKiBtYWtlIGxvY2FsIGNvcGllcyBv ZiBoZWF2aWx5LXVzZWQgY29uc3RhbnQgZmllbGRzICovCiAJaGFzaHAtPmtleXNpemUgPSBoY3Rs LT5rZXlzaXplOwogCWhhc2hwLT5zc2l6ZSA9IGhjdGwtPnNzaXplOwpAQCAtNTgyLDYgKzU5OCw5 IEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGxvbmcgbmVsZW0sIGNvbnN0IEhB U0hDVEwgKmluZm8sIGludCBmbGFncykKIAkJCQkJZnJlZWxpc3RfcGFydGl0aW9ucywKIAkJCQkJ bmVsZW1fYWxsb2MsCiAJCQkJCW5lbGVtX2FsbG9jX2ZpcnN0OworCQl2b2lkCSAgICpjdXJyX29m ZnNldCA9IE5VTEw7CisJCWludAkJCW5zZWdzOworCQlpbnQJCQluYnVja2V0czsKIAogCQkvKgog CQkgKiBJZiBoYXNoIHRhYmxlIGlzIHBhcnRpdGlvbmVkLCBnaXZlIGVhY2ggZnJlZWxpc3QgYW4g ZXF1YWwgc2hhcmUgb2YKQEAgLTU5Miw2ICs2MTEsMTUgQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hh ciAqdGFibmFtZSwgbG9uZyBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQog CQllbHNlCiAJCQlmcmVlbGlzdF9wYXJ0aXRpb25zID0gMTsKIAorCQkvKgorCQkgKiBJZiB0YWJs ZSBpcyBzaGFyZWQsIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRvIGZpbmQgdGhlIHRo ZQorCQkgKiBmaXJzdCBwYXJ0aXRpb24gb2YgZWxlbWVudHMKKwkJICovCisKKwkJbnNlZ3MgPSBj b21wdXRlX2J1Y2tldHNfYW5kX3NlZ3MobmVsZW0sICZuYnVja2V0cywgaGN0bC0+bnVtX3BhcnRp dGlvbnMsIGhjdGwtPnNzaXplKTsKKworCQljdXJyX29mZnNldCA9ICgoKGNoYXIgKikgaGFzaHAt PmhjdGwpICsgc2l6ZW9mKEhBU0hIRFIpICsgKGhjdGwtPmRzaXplICogc2l6ZW9mKEhBU0hTRUdN RU5UKSkgKyAoc2l6ZW9mKEhBU0hCVUNLRVQpICogaGN0bC0+c3NpemUgKiBuc2VncykpOworCiAJ CW5lbGVtX2FsbG9jID0gbmVsZW0gLyBmcmVlbGlzdF9wYXJ0aXRpb25zOwogCQlpZiAobmVsZW1f YWxsb2MgPD0gMCkKIAkJCW5lbGVtX2FsbG9jID0gMTsKQEAgLTYwOSwxMSArNjM3LDE2IEBAIGhh c2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGxvbmcgbmVsZW0sIGNvbnN0IEhBU0hDVEwg KmluZm8sIGludCBmbGFncykKIAkJZm9yIChpID0gMDsgaSA8IGZyZWVsaXN0X3BhcnRpdGlvbnM7 IGkrKykKIAkJewogCQkJaW50CQkJdGVtcCA9IChpID09IDApID8gbmVsZW1fYWxsb2NfZmlyc3Qg OiBuZWxlbV9hbGxvYzsKKwkJCUhBU0hFTEVNRU5UICpmaXJzdEVsZW1lbnQ7CisJCQlTaXplCQll bGVtZW50U2l6ZSA9IE1BWEFMSUdOKHNpemVvZihIQVNIRUxFTUVOVCkpICsgTUFYQUxJR04oaGN0 bC0+ZW50cnlzaXplKTsKIAotCQkJaWYgKCFlbGVtZW50X2FsbG9jKGhhc2hwLCB0ZW1wLCBpKSkK LQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZ KSwKLQkJCQkJCSBlcnJtc2coIm91dCBvZiBtZW1vcnkiKSkpOworCQkJLyoKKwkJCSAqIE1lbW9y eSBpcyBhbGxvY2F0ZWQgYXMgcGFydCBvZiBpbml0aWFsIGFsbG9jYXRpb24gaW4KKwkJCSAqIFNo bWVtSW5pdEhhc2gKKwkJCSAqLworCQkJZmlyc3RFbGVtZW50ID0gKEhBU0hFTEVNRU5UICopIGN1 cnJfb2Zmc2V0OworCQkJY3Vycl9vZmZzZXQgPSAoKChjaGFyICopIGN1cnJfb2Zmc2V0KSArICh0 ZW1wICogZWxlbWVudFNpemUpKTsKKwkJCWVsZW1lbnRfYWRkKGhhc2hwLCBmaXJzdEVsZW1lbnQs IGksIHRlbXApOwogCQl9CiAJfQogCkBAIC03MDEsMzAgKzczNCwxMSBAQCBpbml0X2h0YWIoSFRB QiAqaGFzaHAsIGxvbmcgbmVsZW0pCiAJCWZvciAoaSA9IDA7IGkgPCBOVU1fRlJFRUxJU1RTOyBp KyspCiAJCQlTcGluTG9ja0luaXQoJihoY3RsLT5mcmVlTGlzdFtpXS5tdXRleCkpOwogCi0JLyoK LQkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG5leHQgZ3JlYXRlciBwb3dlciBvZiB0d28gbnVt YmVyIG9mIGJ1Y2tldHMsCi0JICogYXNzdW1pbmcgYSBkZXNpcmVkIG1heGltdW0gbG9hZCBmYWN0 b3Igb2YgMS4KLQkgKi8KLQluYnVja2V0cyA9IG5leHRfcG93Ml9pbnQobmVsZW0pOwotCi0JLyoK LQkgKiBJbiBhIHBhcnRpdGlvbmVkIHRhYmxlLCBuYnVja2V0cyBtdXN0IGJlIGF0IGxlYXN0IGVx dWFsIHRvCi0JICogbnVtX3BhcnRpdGlvbnM7IHdlcmUgaXQgbGVzcywga2V5cyB3aXRoIGFwcGFy ZW50bHkgZGlmZmVyZW50IHBhcnRpdGlvbgotCSAqIG51bWJlcnMgd291bGQgbWFwIHRvIHRoZSBz YW1lIGJ1Y2tldCwgYnJlYWtpbmcgcGFydGl0aW9uIGluZGVwZW5kZW5jZS4KLQkgKiAoTm9ybWFs bHkgbmJ1Y2tldHMgd2lsbCBiZSBtdWNoIGJpZ2dlcjsgdGhpcyBpcyBqdXN0IGEgc2FmZXR5IGNo ZWNrLikKLQkgKi8KLQl3aGlsZSAobmJ1Y2tldHMgPCBoY3RsLT5udW1fcGFydGl0aW9ucykKLQkJ bmJ1Y2tldHMgPDw9IDE7CisJbnNlZ3MgPSBjb21wdXRlX2J1Y2tldHNfYW5kX3NlZ3MobmVsZW0s ICZuYnVja2V0cywgaGN0bC0+bnVtX3BhcnRpdGlvbnMsIGhjdGwtPnNzaXplKTsKIAogCWhjdGwt Pm1heF9idWNrZXQgPSBoY3RsLT5sb3dfbWFzayA9IG5idWNrZXRzIC0gMTsKIAloY3RsLT5oaWdo X21hc2sgPSAobmJ1Y2tldHMgPDwgMSkgLSAxOwogCi0JLyoKLQkgKiBGaWd1cmUgbnVtYmVyIG9m IGRpcmVjdG9yeSBzZWdtZW50cyBuZWVkZWQsIHJvdW5kIHVwIHRvIGEgcG93ZXIgb2YgMgotCSAq LwotCW5zZWdzID0gKG5idWNrZXRzIC0gMSkgLyBoY3RsLT5zc2l6ZSArIDE7Ci0JbnNlZ3MgPSBu ZXh0X3BvdzJfaW50KG5zZWdzKTsKLQogCS8qCiAJICogTWFrZSBzdXJlIGRpcmVjdG9yeSBpcyBi aWcgZW5vdWdoLiBJZiBwcmUtYWxsb2NhdGVkIGRpcmVjdG9yeSBpcyB0b28KIAkgKiBzbWFsbCwg Y2hva2UgKGNhbGxlciBzY3Jld2VkIHVwKS4KQEAgLTc0MSwyMiArNzU1LDIxIEBAIGluaXRfaHRh YihIVEFCICpoYXNocCwgbG9uZyBuZWxlbSkKIAlpZiAoIShoYXNocC0+ZGlyKSkKIAl7CiAJCUN1 cnJlbnREeW5hSGFzaEN4dCA9IGhhc2hwLT5oY3h0OwotCQloYXNocC0+ZGlyID0gKEhBU0hTRUdN RU5UICopCi0JCQloYXNocC0+YWxsb2MoaGN0bC0+ZHNpemUgKiBzaXplb2YoSEFTSFNFR01FTlQp KTsKLQkJaWYgKCFoYXNocC0+ZGlyKQotCQkJcmV0dXJuIGZhbHNlOworCQloYXNocC0+ZGlyID0g KEhBU0hTRUdNRU5UICopICgoKGNoYXIgKikgaGFzaHAtPmhjdGwpICsgc2l6ZW9mKEhBU0hIRFIp KTsKIAl9CiAKIAkvKiBBbGxvY2F0ZSBpbml0aWFsIHNlZ21lbnRzICovCisJaSA9IDA7CiAJZm9y IChzZWdwID0gaGFzaHAtPmRpcjsgaGN0bC0+bnNlZ3MgPCBuc2VnczsgaGN0bC0+bnNlZ3MrKywg c2VncCsrKQogCXsKLQkJKnNlZ3AgPSBzZWdfYWxsb2MoaGFzaHApOwotCQlpZiAoKnNlZ3AgPT0g TlVMTCkKLQkJCXJldHVybiBmYWxzZTsKLQl9CisJCSpzZWdwID0gKEhBU0hCVUNLRVQgKikgKCgo Y2hhciAqKSBoYXNocC0+aGN0bCkKKwkJCQkJCQkJKyBzaXplb2YoSEFTSEhEUikKKwkJCQkJCQkJ KyAoaGFzaHAtPmhjdGwtPmRzaXplICogc2l6ZW9mKEhBU0hTRUdNRU5UKSkKKwkJCQkJCQkJKyAo aSAqIHNpemVvZihIQVNIQlVDS0VUKSAqIGhhc2hwLT5zc2l6ZSkpOworCQlNZW1TZXQoKnNlZ3As IDAsIHNpemVvZihIQVNIQlVDS0VUKSAqIGhhc2hwLT5zc2l6ZSk7CiAKLQkvKiBDaG9vc2UgbnVt YmVyIG9mIGVudHJpZXMgdG8gYWxsb2NhdGUgYXQgYSB0aW1lICovCi0JaGN0bC0+bmVsZW1fYWxs b2MgPSBjaG9vc2VfbmVsZW1fYWxsb2MoaGN0bC0+ZW50cnlzaXplKTsKKwkJaSA9IGkgKyAxOwor CX0KIAogI2lmZGVmIEhBU0hfREVCVUcKIAlmcHJpbnRmKHN0ZGVyciwgImluaXRfaHRhYjpcbiVz JXBcbiVzJWxkXG4lcyVsZFxuJXMlZFxuJXMlbGRcbiVzJXVcbiVzJXhcbiVzJXhcbiVzJWxkXG4i LApAQCAtODUxLDExICs4NjQsNjQgQEAgaGFzaF9zZWxlY3RfZGlyc2l6ZShsb25nIG51bV9lbnRy aWVzKQogICogYW5kIGZvciB0aGUgKG5vbiBleHBhbnNpYmxlKSBkaXJlY3RvcnkuCiAgKi8KIFNp emUKLWhhc2hfZ2V0X3NoYXJlZF9zaXplKEhBU0hDVEwgKmluZm8sIGludCBmbGFncykKK2hhc2hf Z2V0X2luaXRfc2l6ZShjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MsIGxvbmcgaW5pdF9z aXplLCBpbnQgbmVsZW1fYWxsb2MpCiB7Ci0JQXNzZXJ0KGZsYWdzICYgSEFTSF9ESVJTSVpFKTsK LQlBc3NlcnQoaW5mby0+ZHNpemUgPT0gaW5mby0+bWF4X2RzaXplKTsKLQlyZXR1cm4gc2l6ZW9m KEhBU0hIRFIpICsgaW5mby0+ZHNpemUgKiBzaXplb2YoSEFTSFNFR01FTlQpOworCWludAkJCW5i dWNrZXRzOworCWludAkJCW5zZWdzOworCWludAkJCW51bV9wYXJ0aXRpb25zOworCWxvbmcJCXNz aXplOworCWxvbmcJCWRzaXplOworCWJvb2wJCWVsZW1lbnRfYWxsb2MgPSB0cnVlOworCVNpemUJ CWVsZW1lbnRTaXplID0gTUFYQUxJR04oc2l6ZW9mKEhBU0hFTEVNRU5UKSkgKyBNQVhBTElHTihp bmZvLT5lbnRyeXNpemUpOworCisJLyoKKwkgKiBGb3Igbm9uLXNoYXJlZCBoYXNoIHRhYmxlcywg dGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgZWxlbWVudHMKKwkgKiBhcmUgYWxsb2NhdGVkIG9ubHkg aWYgdGhleSBhcmUgbGVzcyB0aGFuIG5lbGVtX2FsbG9jLgorCSAqIEluIGFueSBjYXNlLCB0aGUg aW5pdF9zaXplIHNob3VsZCBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mCisJICogZWxlbWVudHMg YWRkZWQgdXNpbmcgZWxlbWVudF9hZGQoKSBpbiBoYXNoX2NyZWF0ZS4KKwkgKi8KKwlpZiAoIShm bGFncyAmIEhBU0hfU0hBUkVEX01FTSkpCisJeworCQlpZiAoaW5pdF9zaXplID4gbmVsZW1fYWxs b2MpCisJCQllbGVtZW50X2FsbG9jID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCUFzc2VydChm bGFncyAmIEhBU0hfRElSU0laRSk7CisJCUFzc2VydChpbmZvLT5kc2l6ZSA9PSBpbmZvLT5tYXhf ZHNpemUpOworCX0KKwkvKiBOb24tc2hhcmVkIGhhc2ggdGFibGVzIG1heSBub3Qgc3BlY2lmeSBk aXIgc2l6ZSAqLworCWlmICghKGZsYWdzICYgSEFTSF9ESVJTSVpFKSkKKwl7CisJCWRzaXplID0g REVGX0RJUlNJWkU7CisJfQorCWVsc2UKKwkJZHNpemUgPSBpbmZvLT5kc2l6ZTsKKworCWlmIChm bGFncyAmIEhBU0hfUEFSVElUSU9OKQorCXsKKwkJbnVtX3BhcnRpdGlvbnMgPSBpbmZvLT5udW1f cGFydGl0aW9uczsKKworCQkvKiBOdW1iZXIgb2YgZW50cmllcyBzaG91bGQgYmUgYXRsZWFzdCBl cXVhbCB0byB0aGUgZnJlZWxpc3RzICovCisJCWlmIChpbml0X3NpemUgPCBOVU1fRlJFRUxJU1RT KQorCQkJaW5pdF9zaXplID0gTlVNX0ZSRUVMSVNUUzsKKwl9CisJZWxzZQorCQludW1fcGFydGl0 aW9ucyA9IDA7CisKKwlpZiAoZmxhZ3MgJiBIQVNIX1NFR01FTlQpCisJCXNzaXplID0gaW5mby0+ c3NpemU7CisJZWxzZQorCQlzc2l6ZSA9IERFRl9TRUdTSVpFOworCisJbnNlZ3MgPSBjb21wdXRl X2J1Y2tldHNfYW5kX3NlZ3MoaW5pdF9zaXplLCAmbmJ1Y2tldHMsIG51bV9wYXJ0aXRpb25zLCBz c2l6ZSk7CisKKwlpZiAoIWVsZW1lbnRfYWxsb2MpCisJCWluaXRfc2l6ZSA9IDA7CisKKwlyZXR1 cm4gc2l6ZW9mKEhBU0hIRFIpICsgZHNpemUgKiBzaXplb2YoSEFTSFNFR01FTlQpICsKKwkJK3Np emVvZihIQVNIQlVDS0VUKSAqIHNzaXplICogbnNlZ3MKKwkJKyBpbml0X3NpemUgKiBlbGVtZW50 U2l6ZTsKIH0KIAogCkBAIC0xMjg1LDcgKzEzNTEsOCBAQCBnZXRfaGFzaF9lbnRyeShIVEFCICpo YXNocCwgaW50IGZyZWVsaXN0X2lkeCkKIAkJICogRmFpbGluZyBiZWNhdXNlIHRoZSBuZWVkZWQg ZWxlbWVudCBpcyBpbiBhIGRpZmZlcmVudCBmcmVlbGlzdCBpcwogCQkgKiBub3QgYWNjZXB0YWJs ZS4KIAkJICovCi0JCWlmICghZWxlbWVudF9hbGxvYyhoYXNocCwgaGN0bC0+bmVsZW1fYWxsb2Ms IGZyZWVsaXN0X2lkeCkpCisJCW5ld0VsZW1lbnQgPSBlbGVtZW50X2FsbG9jKGhhc2hwLCBoY3Rs LT5uZWxlbV9hbGxvYyk7CisJCWlmIChuZXdFbGVtZW50ID09IE5VTEwpCiAJCXsKIAkJCWludAkJ CWJvcnJvd19mcm9tX2lkeDsKIApAQCAtMTMyMiw2ICsxMzg5LDcgQEAgZ2V0X2hhc2hfZW50cnko SFRBQiAqaGFzaHAsIGludCBmcmVlbGlzdF9pZHgpCiAJCQkvKiBubyBlbGVtZW50cyBhdmFpbGFi bGUgdG8gYm9ycm93IGVpdGhlciwgc28gb3V0IG9mIG1lbW9yeSAqLwogCQkJcmV0dXJuIE5VTEw7 CiAJCX0KKwkJZWxlbWVudF9hZGQoaGFzaHAsIG5ld0VsZW1lbnQsIGZyZWVsaXN0X2lkeCwgaGN0 bC0+bmVsZW1fYWxsb2MpOwogCX0KIAogCS8qIHJlbW92ZSBlbnRyeSBmcm9tIGZyZWVsaXN0LCBi dW1wIG5lbnRyaWVzICovCkBAIC0xNzAyLDI4ICsxNzcwLDM4IEBAIHNlZ19hbGxvYyhIVEFCICpo YXNocCkKIC8qCiAgKiBhbGxvY2F0ZSBzb21lIG5ldyBlbGVtZW50cyBhbmQgbGluayB0aGVtIGlu dG8gdGhlIGluZGljYXRlZCBmcmVlIGxpc3QKICAqLwotc3RhdGljIGJvb2wKLWVsZW1lbnRfYWxs b2MoSFRBQiAqaGFzaHAsIGludCBuZWxlbSwgaW50IGZyZWVsaXN0X2lkeCkKK3N0YXRpYyBIQVNI RUxFTUVOVCAqCitlbGVtZW50X2FsbG9jKEhUQUIgKmhhc2hwLCBpbnQgbmVsZW0pCiB7CiAJSEFT SEhEUiAgICAqaGN0bCA9IGhhc2hwLT5oY3RsOwogCVNpemUJCWVsZW1lbnRTaXplOwotCUhBU0hF TEVNRU5UICpmaXJzdEVsZW1lbnQ7Ci0JSEFTSEVMRU1FTlQgKnRtcEVsZW1lbnQ7Ci0JSEFTSEVM RU1FTlQgKnByZXZFbGVtZW50OwotCWludAkJCWk7CisJSEFTSEVMRU1FTlQgKmZpcnN0RWxlbWVu dCA9IE5VTEw7CiAKIAlpZiAoaGFzaHAtPmlzZml4ZWQpCi0JCXJldHVybiBmYWxzZTsKKwkJcmV0 dXJuIE5VTEw7CiAKIAkvKiBFYWNoIGVsZW1lbnQgaGFzIGEgSEFTSEVMRU1FTlQgaGVhZGVyIHBs dXMgdXNlciBkYXRhLiAqLwogCWVsZW1lbnRTaXplID0gTUFYQUxJR04oc2l6ZW9mKEhBU0hFTEVN RU5UKSkgKyBNQVhBTElHTihoY3RsLT5lbnRyeXNpemUpOwotCiAJQ3VycmVudER5bmFIYXNoQ3h0 ID0gaGFzaHAtPmhjeHQ7CiAJZmlyc3RFbGVtZW50ID0gKEhBU0hFTEVNRU5UICopIGhhc2hwLT5h bGxvYyhuZWxlbSAqIGVsZW1lbnRTaXplKTsKIAogCWlmICghZmlyc3RFbGVtZW50KQotCQlyZXR1 cm4gZmFsc2U7CisJCXJldHVybiBOVUxMOworCisJcmV0dXJuIGZpcnN0RWxlbWVudDsKK30KIAor c3RhdGljIHZvaWQKK2VsZW1lbnRfYWRkKEhUQUIgKmhhc2hwLCBIQVNIRUxFTUVOVCAqZmlyc3RF bGVtZW50LCBpbnQgZnJlZWxpc3RfaWR4LCBpbnQgbmVsZW0pCit7CisJSEFTSEhEUiAgICAqaGN0 bCA9IGhhc2hwLT5oY3RsOworCVNpemUJCWVsZW1lbnRTaXplOworCUhBU0hFTEVNRU5UICp0bXBF bGVtZW50OworCUhBU0hFTEVNRU5UICpwcmV2RWxlbWVudDsKKwlpbnQJCQlpOworCisJLyogRWFj aCBlbGVtZW50IGhhcyBhIEhBU0hFTEVNRU5UIGhlYWRlciBwbHVzIHVzZXIgZGF0YS4gKi8KKwll bGVtZW50U2l6ZSA9IE1BWEFMSUdOKHNpemVvZihIQVNIRUxFTUVOVCkpICsgTUFYQUxJR04oaGN0 bC0+ZW50cnlzaXplKTsKIAkvKiBwcmVwYXJlIHRvIGxpbmsgYWxsIHRoZSBuZXcgZW50cmllcyBp bnRvIHRoZSBmcmVlbGlzdCAqLwogCXByZXZFbGVtZW50ID0gTlVMTDsKIAl0bXBFbGVtZW50ID0g Zmlyc3RFbGVtZW50OwpAQCAtMTc0NCw4ICsxODIyLDYgQEAgZWxlbWVudF9hbGxvYyhIVEFCICpo YXNocCwgaW50IG5lbGVtLCBpbnQgZnJlZWxpc3RfaWR4KQogCiAJaWYgKElTX1BBUlRJVElPTkVE KGhjdGwpKQogCQlTcGluTG9ja1JlbGVhc2UoJmhjdGwtPmZyZWVMaXN0W2ZyZWVsaXN0X2lkeF0u bXV0ZXgpOwotCi0JcmV0dXJuIHRydWU7CiB9CiAKIC8qCkBAIC0xOTU3LDMgKzIwMzMsMzIgQEAg QXRFT1N1YlhhY3RfSGFzaFRhYmxlcyhib29sIGlzQ29tbWl0LCBpbnQgbmVzdERlcHRoKQogCQl9 CiAJfQogfQorCitzdGF0aWMgaW50Citjb21wdXRlX2J1Y2tldHNfYW5kX3NlZ3MobG9uZyBuZWxl bSwgaW50ICpuYnVja2V0cywgbG9uZyBudW1fcGFydGl0aW9ucywgbG9uZyBzc2l6ZSkKK3sKKwlp bnQJCQluc2VnczsKKworCS8qCisJICogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBuZXh0IGdyZWF0 ZXIgcG93ZXIgb2YgdHdvIG51bWJlciBvZiBidWNrZXRzLAorCSAqIGFzc3VtaW5nIGEgZGVzaXJl ZCBtYXhpbXVtIGxvYWQgZmFjdG9yIG9mIDEuCisJICovCisJKm5idWNrZXRzID0gbmV4dF9wb3cy X2ludChuZWxlbSk7CisKKwkvKgorCSAqIEluIGEgcGFydGl0aW9uZWQgdGFibGUsIG5idWNrZXRz IG11c3QgYmUgYXQgbGVhc3QgZXF1YWwgdG8KKwkgKiBudW1fcGFydGl0aW9uczsgd2VyZSBpdCBs ZXNzLCBrZXlzIHdpdGggYXBwYXJlbnRseSBkaWZmZXJlbnQgcGFydGl0aW9uCisJICogbnVtYmVy cyB3b3VsZCBtYXAgdG8gdGhlIHNhbWUgYnVja2V0LCBicmVha2luZyBwYXJ0aXRpb24gaW5kZXBl bmRlbmNlLgorCSAqIChOb3JtYWxseSBuYnVja2V0cyB3aWxsIGJlIG11Y2ggYmlnZ2VyOyB0aGlz IGlzIGp1c3QgYSBzYWZldHkgY2hlY2suKQorCSAqLworCXdoaWxlICgoKm5idWNrZXRzKSA8IG51 bV9wYXJ0aXRpb25zKQorCQkoKm5idWNrZXRzKSA8PD0gMTsKKworCisJLyoKKwkgKiBGaWd1cmUg bnVtYmVyIG9mIGRpcmVjdG9yeSBzZWdtZW50cyBuZWVkZWQsIHJvdW5kIHVwIHRvIGEgcG93ZXIg b2YgMgorCSAqLworCW5zZWdzID0gKCgqbmJ1Y2tldHMpIC0gMSkgLyBzc2l6ZSArIDE7CisJbnNl Z3MgPSBuZXh0X3BvdzJfaW50KG5zZWdzKTsKKwlyZXR1cm4gbnNlZ3M7Cit9CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmggYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNo LmgKaW5kZXggOTMyY2M0ZjM0ZC4uNWU1MTNjODExNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvaHNlYXJjaC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaApAQCAtMTUx LDcgKzE1MSw4IEBAIGV4dGVybiB2b2lkIGhhc2hfc2VxX3Rlcm0oSEFTSF9TRVFfU1RBVFVTICpz dGF0dXMpOwogZXh0ZXJuIHZvaWQgaGFzaF9mcmVlemUoSFRBQiAqaGFzaHApOwogZXh0ZXJuIFNp emUgaGFzaF9lc3RpbWF0ZV9zaXplKGxvbmcgbnVtX2VudHJpZXMsIFNpemUgZW50cnlzaXplKTsK IGV4dGVybiBsb25nIGhhc2hfc2VsZWN0X2RpcnNpemUobG9uZyBudW1fZW50cmllcyk7Ci1leHRl cm4gU2l6ZSBoYXNoX2dldF9zaGFyZWRfc2l6ZShIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpOwor ZXh0ZXJuIFNpemUgaGFzaF9nZXRfaW5pdF9zaXplKGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBm bGFncywKKwkJCQkJbG9uZyBpbml0X3NpemUsIGludCBuZWxlbV9hbGxvYyk7CiBleHRlcm4gdm9p ZCBBdEVPWGFjdF9IYXNoVGFibGVzKGJvb2wgaXNDb21taXQpOwogZXh0ZXJuIHZvaWQgQXRFT1N1 YlhhY3RfSGFzaFRhYmxlcyhib29sIGlzQ29tbWl0LCBpbnQgbmVzdERlcHRoKTsKIAotLSAKMi4z NC4xCgo= --00000000000096e8a8063022eaf3 Content-Type: application/octet-stream; name="v3-0002-Replace-ShmemAlloc-calls-by-ShmemInitStruct.patch" Content-Disposition: attachment; filename="v3-0002-Replace-ShmemAlloc-calls-by-ShmemInitStruct.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m85shk4y1 RnJvbSA1OTgyODdjMGQzNjZiYzMyZGVmOGUzOWE3NDdmOGY0NDE4Mzc2NzA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFpbC5jb20+ CkRhdGU6IFRodSwgNiBNYXIgMjAyNSAyMDozMjoyNyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMi8y XSBSZXBsYWNlIFNobWVtQWxsb2MgY2FsbHMgYnkgU2htZW1Jbml0U3RydWN0CgpUaGUgc2hhcmVk IG1lbW9yeSBhbGxvY2F0ZWQgYnkgU2htZW1BbGxvYyBpcyBub3QgdHJhY2tlZApieSBwZ19zaG1l bV9hbGxvY2F0aW9ucy4gVGhpcyBjb21taXQgcmVwbGFjZXMgbW9zdCBvZiB0aGUKY2FsbHMgdG8g U2htZW1BbGxvYyBieSBTaG1lbUluaXRTdHJ1Y3QgdG8gYXNzb2NpYXRlIGEgbmFtZQp3aXRoIHRo ZSBhbGxvY2F0aW9ucyBhbmQgZW5zdXJlIHRoYXQgdGhleSBnZXQgdHJhY2tlZCBieQpwZ19zaG1l bV9hbGxvY2F0aW9ucy4gSXQgYWxzbyBtZXJnZXMgc2V2ZXJhbCBzbWFsbGVyClNobWVtQWxsb2Mg Y2FsbHMgaW50byBsYXJnZXIgU2htZW1Jbml0U3RydWN0IHRvIGFsbG9jYXRlCmFuZCB0cmFjayBh bGwgdGhlIHJlbGF0ZWQgbWVtb3J5IGFsbG9jYXRpb25zIHVuZGVyIHNpbmdsZQotLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyB8IDE3ICsrKysrKystLS0tLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgfCAzMyArKysrKysrKysrKysrKysrKysr KysrKy0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCA1YjIxYTA1Mzk4Li5k ZDY2OTkwMzM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRl LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBAIC0xMjI2LDgg KzEyMjYsMTEgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqLwogCW1heF90YWJs ZV9zaXplICo9IDEwOwogCisJcmVxdWVzdFNpemUgPSBhZGRfc2l6ZShQcmVkWGFjdExpc3REYXRh U2l6ZSwKKwkJCQkJCSAgIChtdWxfc2l6ZSgoU2l6ZSkgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJ CQkgc2l6ZW9mKFNFUklBTElaQUJMRVhBQ1QpKSkpOwogCVByZWRYYWN0ID0gU2htZW1Jbml0U3Ry dWN0KCJQcmVkWGFjdExpc3QiLAotCQkJCQkJCSAgIFByZWRYYWN0TGlzdERhdGFTaXplLAorCQkJ CQkJCSAgIHJlcXVlc3RTaXplLAogCQkJCQkJCSAgICZmb3VuZCk7CiAJQXNzZXJ0KGZvdW5kID09 IElzVW5kZXJQb3N0bWFzdGVyKTsKIAlpZiAoIWZvdW5kKQpAQCAtMTI0Miw5ICsxMjQ1LDcgQEAg UHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCQlQcmVkWGFjdC0+TGFzdFN4YWN0Q29tbWl0 U2VxTm8gPSBGaXJzdE5vcm1hbFNlckNvbW1pdFNlcU5vIC0gMTsKIAkJUHJlZFhhY3QtPkNhblBh cnRpYWxDbGVhclRocm91Z2ggPSAwOwogCQlQcmVkWGFjdC0+SGF2ZVBhcnRpYWxDbGVhcmVkVGhy b3VnaCA9IDA7Ci0JCXJlcXVlc3RTaXplID0gbXVsX3NpemUoKFNpemUpIG1heF90YWJsZV9zaXpl LAotCQkJCQkJCSAgIHNpemVvZihTRVJJQUxJWkFCTEVYQUNUKSk7Ci0JCVByZWRYYWN0LT5lbGVt ZW50ID0gU2htZW1BbGxvYyhyZXF1ZXN0U2l6ZSk7CisJCVByZWRYYWN0LT5lbGVtZW50ID0gKFNF UklBTElaQUJMRVhBQ1QgKikgKChjaGFyICopIFByZWRYYWN0ICsgUHJlZFhhY3RMaXN0RGF0YVNp emUpOwogCQkvKiBBZGQgYWxsIGVsZW1lbnRzIHRvIGF2YWlsYWJsZSBsaXN0LCBjbGVhbi4gKi8K IAkJbWVtc2V0KFByZWRYYWN0LT5lbGVtZW50LCAwLCByZXF1ZXN0U2l6ZSk7CiAJCWZvciAoaSA9 IDA7IGkgPCBtYXhfdGFibGVfc2l6ZTsgaSsrKQpAQCAtMTI5OSw5ICsxMzAwLDExIEBAIFByZWRp Y2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkgKiBwcm9iYWJseSBPSy4KIAkgKi8KIAltYXhfdGFi bGVfc2l6ZSAqPSA1OworCXJlcXVlc3RTaXplID0gbXVsX3NpemUoKFNpemUpIG1heF90YWJsZV9z aXplLAorCQkJCQkJICAgUldDb25mbGljdERhdGFTaXplKTsKIAogCVJXQ29uZmxpY3RQb29sID0g U2htZW1Jbml0U3RydWN0KCJSV0NvbmZsaWN0UG9vbCIsCi0JCQkJCQkJCQkgUldDb25mbGljdFBv b2xIZWFkZXJEYXRhU2l6ZSwKKwkJCQkJCQkJCSBSV0NvbmZsaWN0UG9vbEhlYWRlckRhdGFTaXpl ICsgcmVxdWVzdFNpemUsCiAJCQkJCQkJCQkgJmZvdW5kKTsKIAlBc3NlcnQoZm91bmQgPT0gSXNV bmRlclBvc3RtYXN0ZXIpOwogCWlmICghZm91bmQpCkBAIC0xMzA5LDkgKzEzMTIsNyBAQCBQcmVk aWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJCWludAkJCWk7CiAKIAkJZGxpc3RfaW5pdCgmUldD b25mbGljdFBvb2wtPmF2YWlsYWJsZUxpc3QpOwotCQlyZXF1ZXN0U2l6ZSA9IG11bF9zaXplKChT aXplKSBtYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkgICBSV0NvbmZsaWN0RGF0YVNpemUpOwotCQlS V0NvbmZsaWN0UG9vbC0+ZWxlbWVudCA9IFNobWVtQWxsb2MocmVxdWVzdFNpemUpOworCQlSV0Nv bmZsaWN0UG9vbC0+ZWxlbWVudCA9IChSV0NvbmZsaWN0KSAoKGNoYXIgKikgUldDb25mbGljdFBv b2wgKyBSV0NvbmZsaWN0UG9vbEhlYWRlckRhdGFTaXplKTsKIAkJLyogQWRkIGFsbCBlbGVtZW50 cyB0byBhdmFpbGFibGUgbGlzdCwgY2xlYW4uICovCiAJCW1lbXNldChSV0NvbmZsaWN0UG9vbC0+ ZWxlbWVudCwgMCwgcmVxdWVzdFNpemUpOwogCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3RhYmxlX3Np emU7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IDc0OWE3OWQ0OGUuLjNhZTgxN2Rl ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtODgsNiArODgsNyBAQCBzdGF0aWMgdm9p ZCBSZW1vdmVQcm9jRnJvbUFycmF5KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQg UHJvY0tpbGwoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBBdXhpbGlhcnlQcm9j S2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIENoZWNrRGVhZExvY2sodm9p ZCk7CitzdGF0aWMgU2l6ZSBQR1Byb2NTaG1lbVNpemUodm9pZCk7CiAKIAogLyoKQEAgLTE3NSw2 ICsxNzYsNyBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCQkJICAgKmZwRW5kUHRyIFBHX1VTRURf Rk9SX0FTU0VSVFNfT05MWTsKIAlTaXplCQlmcExvY2tCaXRzU2l6ZSwKIAkJCQlmcFJlbElkU2l6 ZTsKKwlTaXplCQlyZXF1ZXN0U2l6ZTsKIAogCS8qIENyZWF0ZSB0aGUgUHJvY0dsb2JhbCBzaGFy ZWQgc3RydWN0dXJlICovCiAJUHJvY0dsb2JhbCA9IChQUk9DX0hEUiAqKQpAQCAtMjA0LDcgKzIw NiwxMCBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCSAqIHdpdGggYSBzaW5nbGUgZnJlZWxpc3Qu KSAgRWFjaCBQR1BST0Mgc3RydWN0dXJlIGlzIGRlZGljYXRlZCB0byBleGFjdGx5CiAJICogb25l IG9mIHRoZXNlIHB1cnBvc2VzLCBhbmQgdGhleSBkbyBub3QgbW92ZSBiZXR3ZWVuIGdyb3Vwcy4K IAkgKi8KLQlwcm9jcyA9IChQR1BST0MgKikgU2htZW1BbGxvYyhUb3RhbFByb2NzICogc2l6ZW9m KFBHUFJPQykpOworCXJlcXVlc3RTaXplID0gUEdQcm9jU2htZW1TaXplKCk7CisKKwlwcm9jcyA9 IChQR1BST0MgKikgU2htZW1Jbml0U3RydWN0KCJQR1BST0Mgc3RydWN0dXJlcyIsIHJlcXVlc3RT aXplLCAmZm91bmQpOworCiAJTWVtU2V0KHByb2NzLCAwLCBUb3RhbFByb2NzICogc2l6ZW9mKFBH UFJPQykpOwogCVByb2NHbG9iYWwtPmFsbFByb2NzID0gcHJvY3M7CiAJLyogWFhYIGFsbFByb2ND b3VudCBpc24ndCByZWFsbHkgYWxsIG9mIHRoZW07IGl0IGV4Y2x1ZGVzIHByZXBhcmVkIHhhY3Rz ICovCkBAIC0yMTgsMTEgKzIyMywxMSBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCSAqIGhvdyBo b3RseSB0aGV5IGFyZSBhY2Nlc3NlZC4KIAkgKi8KIAlQcm9jR2xvYmFsLT54aWRzID0KLQkJKFRy YW5zYWN0aW9uSWQgKikgU2htZW1BbGxvYyhUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFs LT54aWRzKSk7CisJCShUcmFuc2FjdGlvbklkICopICgoY2hhciAqKSBwcm9jcyArIFRvdGFsUHJv Y3MgKiBzaXplb2YoUEdQUk9DKSk7CiAJTWVtU2V0KFByb2NHbG9iYWwtPnhpZHMsIDAsIFRvdGFs UHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKTsKLQlQcm9jR2xvYmFsLT5zdWJ4aWRT dGF0ZXMgPSAoWGlkQ2FjaGVTdGF0dXMgKikgU2htZW1BbGxvYyhUb3RhbFByb2NzICogc2l6ZW9m KCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKTsKKwlQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMg PSAoWGlkQ2FjaGVTdGF0dXMgKikgKChjaGFyICopIFByb2NHbG9iYWwtPnhpZHMgKyBUb3RhbFBy b2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT54aWRzKSArIFBHX0NBQ0hFX0xJTkVfU0laRSk7CiAJ TWVtU2V0KFByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcywgMCwgVG90YWxQcm9jcyAqIHNpemVvZigq UHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzKSk7Ci0JUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MgPSAo dWludDggKikgU2htZW1BbGxvYyhUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdGF0 dXNGbGFncykpOworCVByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzID0gKHVpbnQ4ICopICgoY2hhciAq KSBQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMgKyBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xv YmFsLT5zdWJ4aWRTdGF0ZXMpICsgUEdfQ0FDSEVfTElORV9TSVpFKTsKIAlNZW1TZXQoUHJvY0ds b2JhbC0+c3RhdHVzRmxhZ3MsIDAsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN0 YXR1c0ZsYWdzKSk7CiAKIAkvKgpAQCAtMjMzLDcgKzIzOCw3IEBAIEluaXRQcm9jR2xvYmFsKHZv aWQpCiAJZnBMb2NrQml0c1NpemUgPSBNQVhBTElHTihGYXN0UGF0aExvY2tHcm91cHNQZXJCYWNr ZW5kICogc2l6ZW9mKHVpbnQ2NCkpOwogCWZwUmVsSWRTaXplID0gTUFYQUxJR04oRmFzdFBhdGhM b2NrU2xvdHNQZXJCYWNrZW5kKCkgKiBzaXplb2YoT2lkKSk7CiAKLQlmcFB0ciA9IFNobWVtQWxs b2MoVG90YWxQcm9jcyAqIChmcExvY2tCaXRzU2l6ZSArIGZwUmVsSWRTaXplKSk7CisJZnBQdHIg PSBTaG1lbUluaXRTdHJ1Y3QoIkZhc3QgcGF0aCBsb2NrIGFycmF5cyIsIFRvdGFsUHJvY3MgKiAo ZnBMb2NrQml0c1NpemUgKyBmcFJlbElkU2l6ZSksICZmb3VuZCk7CiAJTWVtU2V0KGZwUHRyLCAw LCBUb3RhbFByb2NzICogKGZwTG9ja0JpdHNTaXplICsgZnBSZWxJZFNpemUpKTsKIAogCS8qIEZv ciBhc3NlcnRzIGNoZWNraW5nIHdlIGRpZCBub3Qgb3ZlcmZsb3cuICovCkBAIC0zMzAsMTAgKzMz NSwyNiBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCVByZXBhcmVkWGFjdFByb2NzID0gJnByb2Nz W01heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DU107CiAKIAkvKiBDcmVhdGUgUHJvY1N0 cnVjdExvY2sgc3BpbmxvY2ssIHRvbyAqLwotCVByb2NTdHJ1Y3RMb2NrID0gKHNsb2NrX3QgKikg U2htZW1BbGxvYyhzaXplb2Yoc2xvY2tfdCkpOworCVByb2NTdHJ1Y3RMb2NrID0gKHNsb2NrX3Qg KikgU2htZW1Jbml0U3RydWN0KCJQcm9jU3RydWN0TG9jayBzcGlubG9jayIsIHNpemVvZihzbG9j a190KSwgJmZvdW5kKTsKIAlTcGluTG9ja0luaXQoUHJvY1N0cnVjdExvY2spOwogfQogCitzdGF0 aWMgU2l6ZQorUEdQcm9jU2htZW1TaXplKHZvaWQpCit7CisJU2l6ZQkJc2l6ZTsKKwl1aW50MzIJ CVRvdGFsUHJvY3MgPSBNYXhCYWNrZW5kcyArIE5VTV9BVVhJTElBUllfUFJPQ1MgKyBtYXhfcHJl cGFyZWRfeGFjdHM7CisKKwlzaXplID0gVG90YWxQcm9jcyAqIHNpemVvZihQR1BST0MpOworCXNp emUgPSBhZGRfc2l6ZShzaXplLCBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT54aWRz KSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBHX0NBQ0hFX0xJTkVfU0laRSk7CisJc2l6ZSA9 IGFkZF9zaXplKHNpemUsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN1YnhpZFN0 YXRlcykpOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR19DQUNIRV9MSU5FX1NJWkUpOworCXNp emUgPSBhZGRfc2l6ZShzaXplLCBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdGF0 dXNGbGFncykpOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR19DQUNIRV9MSU5FX1NJWkUpOwor CXJldHVybiBzaXplOworfQorCiAvKgogICogSW5pdFByb2Nlc3MgLS0gaW5pdGlhbGl6ZSBhIHBl ci1wcm9jZXNzIFBHUFJPQyBlbnRyeSBmb3IgdGhpcyBiYWNrZW5kCiAgKi8KLS0gCjIuMzQuMQoK --00000000000096e8a8063022eaf3--