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.96) (envelope-from ) id 1w2G9O-0008Pj-22 for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Mar 2026 22:11:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2G9N-00Dmls-1n for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Mar 2026 22:11:01 +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.96) (envelope-from ) id 1w2G9M-00Dme5-2C for pgsql-hackers@lists.postgresql.org; Mon, 16 Mar 2026 22:11:01 +0000 Received: from mail-dl1-x1233.google.com ([2607:f8b0:4864:20::1233]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2G9H-000000005EB-223l for pgsql-hackers@lists.postgresql.org; Mon, 16 Mar 2026 22:10:59 +0000 Received: by mail-dl1-x1233.google.com with SMTP id a92af1059eb24-128d600ad25so288241c88.2 for ; Mon, 16 Mar 2026 15:10:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773699056; cv=none; d=google.com; s=arc-20240605; b=fle0RBKLuFbeNwiOc5YwZAxfeQQQN2ziH/R+hSjVF7mZBGKKX9oaYTBt5a7jG4v5zs PqcR7GFGvLXZWy58AxfSFTDaBqxrl79B3GA3hBTgEkvhQljdEpmPq+eaMcazFI0LirrI 07Fb+Gp28gq7zqoTDnfUdkymX6BqxPnXARGdIIf63WMLI0KbLYjClAKFnqB10Fu7B3EB zlUntivBkbaCLqECPq7tNDe9iPlmJjd5HAmHfEy/Mj5Y+cpUmXlL8yuOnrAI4YgoNeP5 DpLuxGnH45AakUA29N+AAuwGM6QJldUXC7aveuevgCzAE1zyVZ/nsP8vU44jvvtCCpm3 bgOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=WtnPfFpFWP0jQvHHro5R3LPbNAgW4gpmse3ANDrU6Oo=; fh=YhmxPC0NYagsxVMppzYMgO0XMWsRSWzMegLjmIklu8U=; b=J1Kpq9xEedQWYLqIqaL4ibyUUtPBV/MU69Iyfc3g9pZMd7GQnnjZGi14vbRLtc4OuF rUhCIS+FXr+bDp5PZC+7dFVqOVRUledOcDxDvAYeZx6tH2dqGKurOz6D3s8mwyLdY1qU rD1vt/KJruOa7cVpowPyIuKFvbRWoj/mK4GE2W9D3LDrH7oC8FAElMTGoMveyv/oqR93 flA+AnJE/JRDZmTV+LnS0vdZi1Lq6qJcS+j/EqtNr9XBZRXpEaNkJTsHId7Y+jLQ1bhh ct/DsXVdNOu1nLnCPHT2wXSx1zIcW7A0ff/HU3ihSnY6gXDB1xkB3lq5o92RuqzyfEM9 LEVQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773699056; x=1774303856; darn=lists.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=WtnPfFpFWP0jQvHHro5R3LPbNAgW4gpmse3ANDrU6Oo=; b=eyyP/N103XvCaeE5nWOCx81jtZKq8XPhO1OA2peihNhUZ0DijcUfC4kuAd3aGwTvgs j+hZl6OJM8icZz9f3Q3wPbLvXHnqcgxti2ozIumnbHEO9cGlIWh+fU6sLHcYLK+gvpfc cZjByd+Jp+43kPj+vpHJN0e2hXXFOs9wtIGMGddEbzpS/BRk5vSZm0pAUOepH+zpb4jc gUGbcPSP+i82iKrjjKv4Gp89+pXztpIlxv5brUS6fLUF8fVmooxKjfpYuGvBiVfHK+6Y Ar4MFsdZT3+PLbq1LBna6VcBUifQ4XLF2ahU29dYc30Nvqj9Ae03iSpoe3UzTC3SZ2aA ZGTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773699056; x=1774303856; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=WtnPfFpFWP0jQvHHro5R3LPbNAgW4gpmse3ANDrU6Oo=; b=rIrCEn1ymDfYvMny9kgtVfMMSWXlQVkzp1ixPUZoCFQHTvjaR5aWmulI5G0l6X7r4N YJLIly5BIF5d5ZBmqAEOVRBYbmZN1vOUePstDWUJS2upHv/+NyNXw7vCn2rOvbfM4kSC k4OJMKpysRivrWLE39dSObUys/6oSamf1vXMujK+q81jxMaDSw5pGf1Kgqpep1uTSwFf Fbs8Fa7rnH6xhP6THp/rxQdQrZ3dgF8BxmpoXq6ZAleGoRbDXc9lzLv+cUyysQdFxu3d TZY5W3kif4JIy1yB+y02Pp6O8jTP3jx4xEMoepd9AnZNQ52IHtFizv4hN3UJ6PLuhMdt 2yvQ== X-Gm-Message-State: AOJu0Yx8rksHPjfpIynB1gMr+RvpH8DJuNjLkH55+Tw1CzuDtrIDAO0/ Ke8T3nJtsyAG6FKP1O7jmeqCU/x9+qHQuVKwy2eqmFOWzsesEQDUg6toFcH3stXoLCmQ4DieFuF acmFxjS87XxzTD5mILo2zdgLH+MV2YyBiv8xfw1Y= X-Gm-Gg: ATEYQzxdutrYFgNxjAsfWQlO4APLi+Gz4QhT6lfblR786ydjYVXVu1ZKH0Ewbt6EbsN /fDeifYiVhth82/pTriMtr9m9rfILkr2XRaucqQUv6DggFc5JR/b+X1RWKopys3uG0LoPtbXGff 8quI7OH4wcbhn44EkOe7FjP4J8YkMjeqzWUwIbv/DbHY5zn+jUOfRLpmj3TMTP48m4oft0Bgv/b WN4X4p0uMzYT2msG7xBWaJ6LQ4XyBldTYRzdDfe8RdedSW/fD6pF9hk3VE8wMtc6Q53/39U1g8L b+K++3L/52EfXVn/7U6hvC2XvPRs55CIccK/8Z9b0dznI8Ce7/iXU+DoMGPjf/4OGhxDvzQv4JV /VwBkW1Kz9Sx3ASmgqPJVJQ== X-Received: by 2002:a05:7300:8ca9:b0:2bd:db75:c28b with SMTP id 5a478bee46e88-2bea56065damr3777865eec.7.1773699055644; Mon, 16 Mar 2026 15:10:55 -0700 (PDT) MIME-Version: 1.0 References: <854785.1772206539@sss.pgh.pa.us> In-Reply-To: From: Thomas Munro Date: Tue, 17 Mar 2026 11:10:17 +1300 X-Gm-Features: AaiRm51fhfM08diDF7sstV-4wlLxQtYNseMXanZaXqh1tsEfOtuz8r1iLV4hb7E Message-ID: Subject: Re: A stack allocation API To: Tom Lane Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000002715e1064d2b7e78" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002715e1064d2b7e78 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Mar 12, 2026 at 2:52=E2=80=AFPM Thomas Munro wrote: > . o O ( I originally called it stack_buffer because I started with > "let's standardise the array trick", so it was a buffer. Perhaps a > better name for all this stuff would be pg_stack_alloc() or such, > since it doesn't really have a buffer anymore except in a fallback > mode... ) * renamed like like * hopefully improved comments and naming and structure * replaced macros with inline functions where possible * added many sanity and overflow checks * added tests * added assertions that pg_stack_free() stack pointers are known, not double-freed * added CLOBBER_FREED_MEMORY and ASAN use-after- * abandoned __builtin_alloca_with_align(), it has weird scoping on GCC * removed alloca(0)-avoidance, as zero-sized objects have normal stack poin= ters * removed grows-upwards alloca support, too complicated and practically untestable * let's use alloca on all systems, we can just tell a CI task to test array= mode * simplified the default sizing, now it's just: 128 for arrays and 1024 for alloca() * split main patch into a few incremental pieces that might hopefully be more digestable The stack is a dangerous place, so I tried hard to think of all the ways that anything anywhere could be exploited to overflow intermediate values etc, while also trying to prove useful things at compile time. Ideas for other things to be paranoid about welcome. Patches: * 0001 + 0002 are the basic API but still using arrays * 0003 shows the locales transformation. * 0004..0008 add alloca() * collection of example candidate callers, not changed much since v3, in a tarball One thing to highlight is how 0007 decides whether a pointer should go to pfree() or not. I am reasonably confident that pg_stack_upper_bound() (which is either __builtin_frame_address(0) or stack_base_ptr) is a good authoritative bound, and I am very confident that pg_stack_lower_bound() is reliable when it's computed as the lowest stack address that pg_stack_alloc() has ever seen. But it annoys me to have that book-keeping when: pg_stack_lower_bound() can instead use __builtin_stack_address(), if we decree that it is an authoritative lower bound, as is the case in this patch currently. The descriptions in the Clang and GCC manuals sound good, and the generated code is exactly what I expect: it's just comparing with %rsp, and I haven't seen it trip my assertion that %rsp <=3D every alloca(). But I wonder if some weird edge case involving storage that is actually in a register or something like that could allow it to not decrement %rsp, and then I wonder if that builtin could reveal that, or something like that. I been wondering if it might make sense to have a secondary test out-of-line that includes a fudge factor. That sounds kinda bogus but perhaps an argument can be constructed from guard pages: even on a system under extreme address space pressure, palloc() pointers can only get so close to %rsp. But that gets pretty system-specific if you want something that holds up in court. Hnggh. Maybe I'm worrying about nothing. Clues welcome. --0000000000002715e1064d2b7e78 Content-Type: application/octet-stream; name="v4-0001-pg_stack_alloc-Provide-API-for-stack-allocation.patch" Content-Disposition: attachment; filename="v4-0001-pg_stack_alloc-Provide-API-for-stack-allocation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtg450h0 RnJvbSBiYWEwYjg2ODQzYjBjMjNkYmFlYzZkNzE5ODE4ZjIwYTVmNTAwZjQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjcgRmViIDIwMjYgMjI6MjE6MzYgKzEzMDAKU3ViamVjdDogW1BBVENIIHY0 IDAxLzIxXSBwZ19zdGFja19hbGxvYzogUHJvdmlkZSBBUEkgZm9yIHN0YWNrIGFsbG9jYXRpb24u CgpTZXZlcmFsIHBsYWNlcyBoYXZlIGxvbmcgdXNlZCBhIGxhcmdlIGFycmF5IG9uIHRoZSBzdGFj ayBmb3IgdGVtcG9yYXJ5Cm9iamVjdHMgb2YgZHluYW1pYyBzaXplLCBhbmQgc3dpdGNoZWQgdG8g cGFsbG9jKCkvcGZyZWUoKSB3aGVuIGl0IHdhcwpmdWxsLiAgVGhpcyBjb21taXQgcHJvdmlkZXMg YSBjZW50cmFsaXplZCBBUEkgZm9yIHRoYXQgcGF0dGVybi4KCkl0IGlzIGltcGxlbWVudGVkIHRo ZSBzYW1lIHdheSwgYnV0IHRoZSBpbnRlcmZhY2UgbG9va3MgbGlrZSBwYWxsb2MuaCdzLAppbmNs dWRpbmcgdGhlIHR5cGUtc2FmZXR5IGZlYXR1cmVzIGFkZGVkIGJ5IGNvbW1pdCAyMDE2MDU1YSBh bmQgbGF0ZXIKZGV2ZWxvcG1lbnRzLiAgQSBzbWFsbCBzZXQgb2YgZnVuY3Rpb25zIGxpa2Ugc3Ry ZHVwKCkgaXMgYWxzbyBwcm92aWRlZCwKZm9yIGNvbW1vbiBvcGVyYXRpb25zLgoKTGF0ZXIgcGF0 Y2hlcyB3aWxsIGFkb3B0IHRoZSBuZXcgQVBJIGluIHZhcmlvdXMgcGxhY2VzLgoKUmV2aWV3ZWQt Ynk6CkRpc2N1c3Npb246Ci0tLQogc3JjL2luY2x1ZGUvdXRpbHMvcGdfc3RhY2tfYWxsb2MuaCAg ICAgIHwgMzE1ICsrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9pbnRlcm5hbHMub3V0IHwgIDEyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9yZWdyZXNzLmMgICAgICAgICAg ICAgIHwgIDUxICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ludGVybmFscy5zcWwgICAgICB8 ICAxMSArCiA1IGZpbGVzIGNoYW5nZWQsIDM5MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvdXRpbHMvcGdfc3RhY2tfYWxsb2MuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50ZXJuYWxzLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ludGVybmFscy5zcWwK CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wZ19zdGFja19hbGxvYy5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcGdfc3RhY2tfYWxsb2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uYmI4YzU4NTk3YjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9wZ19zdGFja19hbGxvYy5oCkBAIC0wLDAgKzEsMzE1IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBwZ19zdGFja19hbGxvYy5oCisgKgkJQWxsb2NhdG9yIGZvciBvYmplY3RzIHRo YXQgZG9uJ3QgZXNjYXBlIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgorICoKKyAqIEEgcGFsbG9jKCkt bGlrZSBpbnRlcmZhY2UgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IG9uIHRoZSBzdGFjay4gIFRoZSBp bml0aWFsCisgKiBpbXBsZW1lbnRhdGlvbiB1c2VzIGFuIGFycmF5IGRlY2xhcmVkIHN0YXRpY2Fs bHkuCisgKgorICogT25jZSBzdGFjayBzcGFjZSBpcyBleGhhdXN0ZWQsIGFsbG9jYXRpb25zIHNp bGVudGx5IGZhbGwgYmFjayB0byB1c2luZworICogcGFsbG9jKCkuICBNZW1vcnkgc2hvdWxkIHRo ZXJlZm9yZSBzdGlsbCBiZSBmcmVlZCBleHBsaWNpdGx5IHdpdGgKKyAqIHBnX3N0YWNrX2ZyZWUo KSBvciBNZW1vcnlDb250ZXh0LWxldmVsIGNsZWFudXAuICBJdCBpcyBhIG5vLW9wIGluIHRoZQor ICogY29tbW9uIGNhc2UgdGhhdCBwZnJlZSgpIGRvZXNuJ3QgbmVlZCB0byBiZSBjYWxsZWQuCisg KgorICogWFhYIEEgc3BhY2UtbGltaXRlZCB2ZXJzaW9uIG9mIGFsbG9jYSgpIGNvdWxkIGJlIGFk ZGVkLgorICoKKyAqIFhYWCBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byB1c2Ugc29tZXRoaW5nIGxp a2UgImRlZmVyIiBvciBlcXVpdmFsZW50CisgKiBjb21waWxlciBleHRlbnNpb25zIHRvIGNsZWFu IHVwIHBhbGxvYygpJ2QgbWVtb3J5IGF1dG9tYXRpY2FsbHksIGluIGZ1dHVyZQorICogd29yaywg YW5kIHRoZW4gcGdfc3RhY2tfZnJlZSgpIHdvdWxkIG5vdCBiZSBuZWNlc3NhcnkuCisgKgorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2Yg dGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL3V0aWxzL3Bn X3N0YWNrX2FsbG9jLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQR19T VEFDS19BTExPQ19ICisjZGVmaW5lIFBHX1NUQUNLX0FMTE9DX0gKKworI2luY2x1ZGUgInV0aWxz L2Vsb2cuaCIKKyNpbmNsdWRlICJ1dGlscy9wYWxsb2MuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4u aCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisKKy8qICNk ZWZpbmUgUEdfU1RBQ0tfVVNFX1BBTExPQ19MT0cgIi90bXAvcGdfc3RhY2tfYWxsb2MuY3N2IiAq LworCisvKiBDaG9vc2Ugd2hpY2ggaW1wbGVtZW50YXRpb24gdG8gdXNlLCBpZiBub3QgYWxyZWFk eSBkZWZpbmVkIG1hbnVhbGx5LiAqLworI2lmICFkZWZpbmVkKFBHX1NUQUNLX1VTRV9BUlJBWSkg JiYJCQkJCQkJCQlcCisJIWRlZmluZWQoUEdfU1RBQ0tfVVNFX1BBTExPQykgJiYJCQkJCQkJCVwK KwkhZGVmaW5lZChQR19TVEFDS19VU0VfUEFMTE9DX0xPRykKKyNkZWZpbmUgUEdfU1RBQ0tfVVNF X0FSUkFZCisjZW5kaWYKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBQdWJsaWMgQVBJ LgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qIFRoaXMgZW5zdXJlcyB0aGF0ICJh bGlnbiIgaXMgYSBjb25zdGFudCBhbmQgY2FuJ3QgY2F1c2Ugb3ZlcmZsb3cuICovCisjZGVmaW5l IFBHX1NUQUNLX01BWF9BTElHTiA0MDk2CisKKy8qIERlY2xhcmUgYSBzdGFjayBhbGxvY2F0b3Ig d2l0aCBhIGRlZmF1bHQgc2l6ZSBsaW1pdC4gKi8KKyNkZWZpbmUgREVDTEFSRV9QR19TVEFDSygp CQkJCQkJCQkJCQkJXAorCURFQ0xBUkVfUEdfU1RBQ0tfU0laRSgxMjgpCisKKy8qCisgKiBBcyBh Ym92ZSwgYnV0IHdpdGggYSBjYWxsZXItc3VwcGxpZWQgbGltaXQgb24gc3RhY2sgdXNhZ2UuICBU aGUgZGVmYXVsdAorICogc2hvdWxkIGJlIHByZWZlcnJlZC4KKyAqLworI2RlZmluZSBERUNMQVJF X1BHX1NUQUNLX1NJWkUoc2l6ZSkgXAorCWJvb2wgcGdfc3RhY2tfbWF5YmVfcGZyZWUgcGdfYXR0 cmlidXRlX3VudXNlZCgpID0gZmFsc2U7CQkJXAorCXNpemVfdCBwZ19zdGFja19sZXRfc2l6ZTsJ CS8qIHRlbXAsIGF2b2lkcyBkb3VibGUgZXZhbCAqLwkJXAorCURFQ0xBUkVfUEdfU1RBQ0tfSU1Q TChzaXplKQorCisvKiBBbGxvY2F0ZSBtZW1vcnksIG9wdGlvbmFsbHkgd2l0aCBleHBsaWNpdCBh bGlnbm1lbnQuICovCisjZGVmaW5lIHBnX3N0YWNrX2FsbG9jKHNpemUpCQkJCQkJCQkJCQlcCisJ cGdfc3RhY2tfYWxsb2NfYWxpZ25lZCgoc2l6ZSksIE1BWElNVU1fQUxJR05PRikKKyNkZWZpbmUg cGdfc3RhY2tfYWxsb2NfYWxpZ25lZChzaXplLCBhbGlnbikJCQkJCQkJCVwKKwkocGdfc3RhY2tf c2FuaXR5X2NoZWNrcyhhbGlnbiksCQkJCQkJCQkJCVwKKwkgcGdfc3RhY2tfbGV0X3NpemUgPSAo c2l6ZSksCQkJCQkJCQkJCVwKKwkgcGdfc3RhY2tfYWxsb2NfYWxpZ25lZF9pbXBsKHBnX3N0YWNr X2xldF9zaXplLCAoYWxpZ24pKSkKKworLyogQXMgYWJvdmUsIGJ1dCBhbHNvIHplcm8gdGhlIG1l bW9yeS4gKi8KKyNkZWZpbmUgcGdfc3RhY2tfYWxsb2MwKHNpemUpIFwKKwlwZ19zdGFja19hbGxv YzBfYWxpZ25lZCgoc2l6ZSksIE1BWElNVU1fQUxJR05PRikKKyNkZWZpbmUgcGdfc3RhY2tfYWxs b2MwX2FsaWduZWQoc2l6ZSwgYWxpZ24pCQkJCQkJCVwKKwkocGdfc3RhY2tfc2FuaXR5X2NoZWNr cyhhbGlnbiksCQkJCQkJCQkJCVwKKwkgcGdfc3RhY2tfbGV0X3NpemUgPSAoc2l6ZSksCQkJCQkJ CQkJCVwKKwkgbWVtc2V0KHBnX3N0YWNrX2FsbG9jX2FsaWduZWRfaW1wbChwZ19zdGFja19sZXRf c2l6ZSwgKGFsaWduKSksCVwKKwkJCTAsCQkJCQkJCQkJCQkJCQkJXAorCQkJcGdfc3RhY2tfbGV0 X3NpemUpKQorCisvKiBBcyBhYm92ZSwgYnV0IGZvciBhIGdpdmVuIHR5cGUgVC4gKi8KKyNkZWZp bmUgcGdfc3RhY2tfYWxsb2Nfb2JqZWN0KFQpCQkJCQkJCQkJCVwKKwlwZ19zdGFja19hbGxvY19h cnJheShULCAxKQorI2RlZmluZSBwZ19zdGFja19hbGxvYzBfb2JqZWN0KFQpCQkJCQkJCQkJCVwK KwlwZ19zdGFja19hbGxvYzBfYXJyYXkoVCwgMSkKKworLyogQXMgYWJvdmUsIGJ1dCBmb3IgYW4g YXJyYXkgb2Ygb2JqZWN0cyBvZiBzaXplIFQuICovCisjZGVmaW5lIHBnX3N0YWNrX2FsbG9jX2Fy cmF5KFQsIG4pCQkJCQkJCQkJCVwKKwkocGdfc3RhY2tfc2FuaXR5X2NoZWNrcyhhbGlnbm9mKFQp KSwgCQkJCQkJCQlcCisJIFN0YXRpY0Fzc2VydEV4cHIoc2l6ZW9mKG4pIDw9IHNpemVvZihzaXpl X3QpLCAibiB0b28gd2lkZSIpLCAJCVwKKwkgcGdfc3RhY2tfbGV0X3NpemUgPSBwZ19zdGFja19U X211bF9uKHNpemVvZihUKSwgc2l6ZW9mKG4pLCAobikpLAlcCisJIHBnX3N0YWNrX2FsbG9jX2Fs aWduZWRfaW1wbChwZ19zdGFja19sZXRfc2l6ZSwgYWxpZ25vZihUKSkpCisjZGVmaW5lIHBnX3N0 YWNrX2FsbG9jMF9hcnJheShULCBuKQkJCQkJCQkJCQlcCisJKHBnX3N0YWNrX3Nhbml0eV9jaGVj a3MoYWxpZ25vZihUKSksIAkJCQkJCQkJXAorCSBTdGF0aWNBc3NlcnRFeHByKHNpemVvZihuKSA8 PSBzaXplb2Yoc2l6ZV90KSwgIm4gdG9vIHdpZGUiKSwgCQlcCisJIHBnX3N0YWNrX2xldF9zaXpl ID0gcGdfc3RhY2tfVF9tdWxfbihzaXplb2YoVCksIHNpemVvZihuKSwgKG4pKSwJXAorCSBwZ19z dGFja19hbGxvYzBfYWxpZ25lZChwZ19zdGFja19sZXRfc2l6ZSwgKGFsaWdub2YoVCkpKSkKKwor LyogQ29weSBhIHN0cmluZy4gKi8KKyNkZWZpbmUgcGdfc3RhY2tfc3RyZHVwKGNzdHIpCQkJCQkJ CQkJCQlcCisJcGdfc3RhY2tfc3RyZHVwX3dpdGhfbGVuKChjc3RyKSwgc3RybGVuKGNzdHIpKQor I2RlZmluZSBwZ19zdGFja19zdHJuZHVwKGNzdHIsIG4pCQkJCQkJCQkJCVwKKwlwZ19zdGFja19z dHJkdXBfd2l0aF9sZW4oKGNzdHIpLCBzdHJubGVuKChjc3RyKSwgKG4pKSkKKyNkZWZpbmUgcGdf c3RhY2tfc3RyZHVwX3dpdGhfbGVuKGRhdGEsIHNpemUpCQkJCQkJCVwKKwkocGdfc3RhY2tfc2Fu aXR5X2NoZWNrcygxKSwJCQkJCQkJCQkJCVwKKwkgcGdfc3RhY2tfbGV0X3NpemUgPSAoc2l6ZSks CQkJCQkJCQkJCVwKKwkgcGdfc3RhY2tfc3RyZHVwX3dpdGhfbGVuX2ltcGwoCQkJCQkJCQkJCVwK KwkJIHBnX3N0YWNrX2FsbG9jX2FsaWduZWRfaW1wbChwZ19zdGFja19sZXRfc2l6ZSArIDEsCQkJ CVwKKwkJCQkJCQkJCSBhbGlnbm9mKGNoYXIpKSwJCQkJCVwKKwkJIChkYXRhKSwJCQkJCQkJCQkJ CQkJCVwKKwkJIHBnX3N0YWNrX2xldF9zaXplKSkKKyNkZWZpbmUgcGdfc3RhY2tfdGV4dF90b19j c3RyaW5nKHRleHQpIFwKKwlwZ19zdGFja19zdHJkdXBfd2l0aF9sZW4oVkFSREFUQV9BTlkodGV4 dCksIFZBUlNJWkVfQU5ZX0VYSERSKHRleHQpKQorI2RlZmluZSBwZ19zdGFja190ZXh0X2RhdHVt X3RvX2NzdHJpbmcoZGF0dW0pCQkJCQkJCVwKKwlwZ19zdGFja190ZXh0X3RvX2NzdHJpbmcoKHRl eHQgKikgRGF0dW1HZXRQb2ludGVyKGRhdHVtKSkKKworLyoKKyAqIEZyZWUgbWVtb3J5IGFsbG9j YXRlZCB3aXRoIHRoZSBhYm92ZSBpbnRlcmZhY2VzLiAgV2UgZG9uJ3QgZXhwZWN0IHRvCisgKiBy ZWNlaXZlIHBvaW50ZXJzIGFsbG9jYXRlZCBieSBwYWxsb2MoKSBkaXJlY3RseSBhbmQgbm90IHZp YSB0aGlzIEFQSS4gIFRoYXQKKyAqIHdvdWxkIGJyZWFrIHRoZSBwZ19zdGFja19tYXliZV9wZnJl ZSBvcHRpbWl6YXRpb24sIGFuZCBtaWdodCBsaW1pdAorICogZnV0dXJlIGltcGxlbWVudGF0aW9u IHRlY2huaXF1ZXMuCisgKi8KKyNkZWZpbmUgcGdfc3RhY2tfZnJlZShwdHIpCQkJCQkJCQkJCQkJ XAorCWRvCQkJCQkJCQkJCQkJCQkJCQlcCisJewkJCQkJCQkJCQkJCQkJCQkJXAorCQl2b2lkICpw Z19zdGFja19sZXRfcHRyID0gKHB0cik7CQkJCQkJCQkJXAorCQlBc3NlcnQocGdfc3RhY2tfcHRy X3AocGdfc3RhY2tfbGV0X3B0cikgfHwJCQkJCQlcCisJCQkgICBwZ19zdGFja19tYXliZV9wZnJl ZSk7CQkJCQkJCQkJXAorCQlpZiAodW5saWtlbHkocGdfc3RhY2tfbWF5YmVfcGZyZWUpICYmCQkJ CQkJCVwKKwkJCSFwZ19zdGFja19wdHJfcChwZ19zdGFja19sZXRfcHRyKSkJCQkJCQkJXAorCQkJ cGZyZWUocGdfc3RhY2tfbGV0X3B0cik7CQkJCQkJCQkJXAorCX0JCQkJCQkJCQkJCQkJCQkJCVwK Kwl3aGlsZSAoMCkKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBQcml2YXRlIGhlbHBl ciBjb2RlIGNvbW1vbiB0byBhbGwgaW1wbGVtZW50YXRpb25zLgorICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICovCisKKy8qCisgKiBOb3JtYWwgdXNhZ2Ugd291bGQgaGF2ZSBjb25zdGFudCBhbGln biB2YWx1ZXMsIHNvIHRoZSBmaXJzdCB0d28gY2hlY2tzCisgKiBzaG91bGQgaWRlYWxseSBiZSBz dGF0aWMgYXNzZXJ0aW9ucywgYnV0IHRoZXkgYXJlIGRvbmUgdGhpcyB3YXkgdG8gYWxsb3cKKyAq IHJlZ3Jlc3MuYyB0byBsb29wIHRocm91Z2ggYWxpZ25tZW50IHNpemVzLgorICovCisjZGVmaW5l IHBnX3N0YWNrX3Nhbml0eV9jaGVja3MoYWxpZ24pCQkJCQkJCQkJXAorCShBc3NlcnRNYWNybygo YWxpZ24pID4gMCAmJiAoYWxpZ24pIDw9IFBHX1NUQUNLX01BWF9BTElHTiksCQkJXAorCSBBc3Nl cnRNYWNybygoKGFsaWduKSAmICgoYWxpZ24pIC0gMSkpID09IDAgLyogcG93ZXItb2YtdHdvPyAq LykpCisKKy8qIEZvciBhc3NlcnRpb25zLiAqLworc3RhdGljIGlubGluZSBib29sCitwZ19zdGFj a19wdHJfaXNfYWxpZ25lZF9wKGNvbnN0IHZvaWQgKnAsIHNpemVfdCBhbGlnbikKK3sKKwlyZXR1 cm4gKHVpbnRwdHJfdCkgcCAlIGFsaWduID09IDA7Cit9CisKKy8qIE1heGltdW0gdmFsdWUgdGhh dCBjYW4gYmUgc3RvcmVkIGluIGFuIHVuc2lnbmVkIGludGVnZXIgb2YgZ2l2ZW4gc2l6ZS4gKi8K K3N0YXRpYyBpbmxpbmUgc2l6ZV90CitwZ19zdGFja19tYXhfZm9yX3VpbnRfc2l6ZShzaXplX3Qg c2l6ZSkKK3sKKwlBc3NlcnQoc2l6ZSA8PSBzaXplb2Yoc2l6ZV90KSk7CisJcmV0dXJuIFNJWkVf TUFYID4+ICgoc2l6ZW9mKHNpemVfdCkgKiBDSEFSX0JJVCkgLSBzaXplICogQ0hBUl9CSVQpOwor fQorCisvKiBQb3N0LWFsbG9jYXRpb24gcGFydCBvZiBwZ19zdGFja19zdHJkdXBfd2l0aF9sZW4o KS4gKi8KK3N0YXRpYyBpbmxpbmUgY2hhciAqCitwZ19zdGFja19zdHJkdXBfd2l0aF9sZW5faW1w bChjaGFyICpkc3QsIGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBzaXplKQoreworCW1lbWNweShk c3QsIGRhdGEsIHNpemUpOworCWRzdFtzaXplXSA9IDA7CisJcmV0dXJuIGRzdDsKK30KKworLyog Q29tcHV0ZSBzaXplb2YoVCkgKiBuLiAqLworc3RhdGljIGlubGluZSBzaXplX3QKK3BnX3N0YWNr X1RfbXVsX24oc2l6ZV90IHNpemVvZl9ULCBzaXplX3Qgc2l6ZW9mX24sIHNpemVfdCBuKQorewor CS8qIFhYWCBDb3VsZCBvdmVyZmxvdywgd2hpY2ggbWlnaHQgYWxsb3cgdGhlIHN0YWNrIHRvIGJl IGNvcnJ1cHRlZC4gKi8KKwlyZXR1cm4gc2l6ZW9mX1QgKiBuOworfQorCisvKgorICogRmFsbCBi YWNrIHRvIHBhbGxvYygpIG9yIHBhbGxvY19hbGlnbmVkKCkgZHVlIHRvIGxhY2sgb2Ygc3BhY2Uu ICBXZSB3YXN0ZSBhCisgKiByZWdpc3RlciByZW1lbWJlcmluZyBpZiB3ZSd2ZSBldmVyIGhhZCB0 byBkbyB0aGlzLCB0byBnZW5lcmF0ZSBiZXR0ZXIKKyAqIHN0cmFpZ2h0LWxpbmUgY29kZSBmb3Ig dGhlIGNhc2Ugd2hlcmUgd2UgZG9uJ3QgaGF2ZSB0byBmcmVlIGFueXRoaW5nLgorICovCisjZGVm aW5lIHBnX3N0YWNrX3BhbGxvY19hbGlnbmVkKHNpemUsIGFsaWduKQkJCQkJCQlcCisJKChwZ19z dGFja19tYXliZV9wZnJlZSA9IHRydWUpLAkJCQkJCQkJCQlcCisJICgoYWxpZ24pID4gTUFYSU1V TV9BTElHTk9GID8JCQkJCQkJCQkJXAorCSAgcGFsbG9jX2FsaWduZWQoKHNpemUpLCAoYWxpZ24p LCAwKSA6CQkJCQkJCQlcCisJICBwYWxsb2Moc2l6ZSkpKQorCisKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIExvdy1sZXZlbCBpbXBsZW1lbnRhdGlvbnMgYmVsb3cgdGhpcyBwb2ludCBzdXBw bHkgdGhlIGZvbGxvd2luZyBtYWNyb3M6CisgKgorICogMS4gREVDTEFSRV9QR19TVEFDS19JTVBM KHNpemUpCisgKiAyLiBwZ19zdGFja19hbGxvY19hbGlnbmVkKHNpemUsIGFsaWduKQorICogMy4g cGdfc3RhY2tfcHRyX3AocHRyKQorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIFRveSBpbXBsZW1lbnRhdGlvbnMgZm9yIGRlYnVnZ2luZy4K KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisvKiBKdXN0IHVzZSBwYWxsb2MuICovCisj aWZkZWYgUEdfU1RBQ0tfVVNFX1BBTExPQworI2RlZmluZSBERUNMQVJFX1BHX1NUQUNLX0lNUEwo c2l6ZSkKKyNkZWZpbmUgcGdfc3RhY2tfYWxsb2NfYWxpZ25lZF9pbXBsKHNpemUsIGFsaWduKQkJ CQkJCVwKKwlwZ19zdGFja19wYWxsb2NfYWxpZ25lZCgoc2l6ZSksIChhbGlnbikpCisjZGVmaW5l IHBnX3N0YWNrX3B0cl9wKCkgZmFsc2UKKyNlbmRpZgorCisvKgorICogU2FtZSwgYnV0IGxvZyAi bG9jYXRpb24sZnVuY3Rpb24sc2l6ZSxkZXB0aCIgZW50cmllcyB0byBhIGZpbGUsIHVzaW5nIHRo ZQorICogUEdfU1RBQ0tfVVNFX1BBTExPQ19MT0cgbWFjcm8ncyBkZWZpbml0aW9uIChhICIiLXF1 b3RlZCBzdHJpbmcgbGl0ZXJhbCkgZm9yCisgKiB0aGUgcGF0aC4KKyAqLworI2lmZGVmIFBHX1NU QUNLX1VTRV9QQUxMT0NfTE9HCisjZGVmaW5lIERFQ0xBUkVfUEdfU1RBQ0tfSU1QTChzaXplKQkJ CQkJCQkJCQlcCisJRklMRSAqcGdfc3RhY2tfbG9nCQkJCQkJCQkJCQkJCVwKKwlfX2F0dHJpYnV0 ZV9fKChjbGVhbnVwKHBnX3N0YWNrX2Nsb3NlX2xvZykpKSA9CQkJCQkJXAorCWZvcGVuKFBHX1NU QUNLX1VTRV9QQUxMT0NfTE9HLCAiYSsiKQorI2RlZmluZSBwZ19zdGFja19hbGxvY19hbGlnbmVk X2ltcGwoc2l6ZSwgYWxpZ24pCQkJCQkJXAorCShmcHJpbnRmKHBnX3N0YWNrX2xvZywJCQkJCQkJ CQkJCQlcCisJCQkgIiVzOiVkLCVzLCV6dSwlenVcbiIsCQkJCQkJCQkJCVwKKwkJCSBfX0ZJTEVf XywJCQkJCQkJCQkJCQkJXAorCQkJIF9fTElORV9fLAkJCQkJCQkJCQkJCQlcCisJCQkgX19mdW5j X18sCQkJCQkJCQkJCQkJCVwKKwkJCSAoc2l6ZV90KSAoc2l6ZSksCQkJCQkJCQkJCQlcCisJCQkg KChjb25zdCBjaGFyICopIHN0YWNrX2Jhc2VfcHRyIC0JCQkJCQkJXAorCQkJICAoY29uc3QgY2hh ciAqKSBfX2J1aWx0aW5fc3RhY2tfYWRkcmVzcygpKSksCQkJCVwKKwkgcGdfc3RhY2tfcGFsbG9j X2FsaWduZWQoKHNpemUpLCAoYWxpZ24pKSkKKyNkZWZpbmUgcGdfc3RhY2tfcHRyX3AocHRyKSBm YWxzZQorc3RhdGljIGlubGluZSB2b2lkCitwZ19zdGFja19jbG9zZV9sb2coRklMRSAqKmYpCit7 CisJZmNsb3NlKCpmKTsKK30KKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBB cnJheS1iYXNlZCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBUaGlzIGlzIGVudGlyZWx5IHN0YW5k YXJkIEMgcmVxdWlyaW5nIG5vIGNvbXBpbGVyIGV4dGVuc2lvbnMsIGJ1dCBpdCBsZWF2ZXMKKyAq IGEgYmlnIGhvbGUgaW4gdGhlIHN0YWNrIHdoZW4geW91IGNhbGwgYW5vdGhlciBmdW5jdGlvbiBh bmQgaGFzIG5vIGFiaWxpdHkKKyAqIHRvIHJlc3BlY3QgdGhlIHRvdGFsIHN0YWNrIHNpemUgbGlt aXQuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZmRlZiBQR19TVEFDS19VU0VfQVJS QVkKKworLyogUmVxdWlyZWQgaW50ZXJmYWNlIG1hY3Jvcy4gKi8KKworI2RlZmluZSBERUNMQVJF X1BHX1NUQUNLX0lNUEwoc2l6ZSkJCQkJCQkJCQkJXAorCWNoYXIgcGdfc3RhY2tfYXJyYXlbKHNp emUpXTsJCQkJCQkJCQkJXAorCWNoYXIgKnBnX3N0YWNrX3AgPSBwZ19zdGFja19hcnJheSArIChz aXplKQorCisjZGVmaW5lIHBnX3N0YWNrX2FsbG9jX2FsaWduZWRfaW1wbChzaXplLCBhbGlnbikJ CQkJCQlcCisJKHBnX3N0YWNrX2FsbG9jX2FsaWduZWRfZnJvbV9hcnJheSgmcGdfc3RhY2tfYXJy YXlbMF0sCQkJCVwKKwkJCQkJCQkJCSAgICZwZ19zdGFja19wLAkJCQkJCVwKKwkJCQkJCQkJCSAg IChzaXplKSwJCQkJCQkJXAorCQkJCQkJCQkJICAgKGFsaWduKSkgPwkJCQkJCVwKKwkgcGdfc3Rh Y2tfcCA6CQkJCQkJCQkJCQkJCQlcCisJIHBnX3N0YWNrX3BhbGxvY19hbGlnbmVkKHNpemUsIGFs aWduKSkKKworI2RlZmluZSBwZ19zdGFja19wdHJfcChwdHIpCQkJCQkJCQkJCQkJXAorCSgoY2hh ciAqKSAocHRyKSA+PSAmcGdfc3RhY2tfYXJyYXlbMF0gJiYJCQkJCQkJXAorCSAoY2hhciAqKSAo cHRyKSA8PSAmcGdfc3RhY2tfYXJyYXlbc2l6ZW9mKHBnX3N0YWNrX2FycmF5KV0pCisKKworLyog SW1wbGVtZW50YXRpb24uICovCisKK3N0YXRpYyBpbmxpbmUgYm9vbAorcGdfc3RhY2tfYWxsb2Nf YWxpZ25lZF9mcm9tX2FycmF5KGNoYXIgKmFycmF5LAorCQkJCQkJCQkgIGNoYXIgKipwLAorCQkJ CQkJCQkgIHNpemVfdCBzaXplLAorCQkJCQkJCQkgIHNpemVfdCBhbGlnbikKK3sKKwlpZiAobGlr ZWx5KHNpemUgPD0gKHVpbnRwdHJfdCkgKnApKSAvKiBhdm9pZCBvdmVyZmxvdyB3aXRoIGh1Z2Ug c2l6ZSAqLworCXsKKwkJY2hhcgkgICAqcmVzdWx0ID0gKnAgLSBzaXplOworCisJCWlmIChhbGln biA+IDEpCisJCQlyZXN1bHQgPSAoY2hhciAqKSBUWVBFQUxJR05fRE9XTihhbGlnbiwgcmVzdWx0 KTsKKworCQlpZiAobGlrZWx5KHJlc3VsdCA+PSBhcnJheSkpCisJCXsKKwkJCSpwID0gcmVzdWx0 OworCQkJcmV0dXJuIHRydWU7CisJCX0KKwl9CisJcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYK KworI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludGVybmFs cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludGVybmFscy5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUzMmU5Zjc5MWVkCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnRlcm5hbHMub3V0CkBAIC0wLDAgKzEs MTIgQEAKK1xnZXRlbnYgbGliZGlyIFBHX0xJQkRJUgorXGdldGVudiBkbHN1ZmZpeCBQR19ETFNV RkZJWAorXHNldCByZWdyZXNzbGliIDpsaWJkaXIgJy9yZWdyZXNzJyA6ZGxzdWZmaXgKK0NSRUFU RSBGVU5DVElPTiB0ZXN0X3BnX3N0YWNrX2FsbG9jKCkgUkVUVVJOUyB2b2lkCisgICAgQVMgOidy ZWdyZXNzbGliJyBMQU5HVUFHRSBDIFNUUklDVDsKK1NFTEVDVCB0ZXN0X3BnX3N0YWNrX2FsbG9j KCk7CisgdGVzdF9wZ19zdGFja19hbGxvYyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitEUk9QIEZVTkNUSU9OIHRlc3RfcGdfc3RhY2tfYWxsb2MoKTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCmluZGV4IGU3NzlhZGE3MGNiLi40OTg2YjJjNWM1MyAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC00OCw3ICs0OCw3IEBAIHRlc3Q6IGNyZWF0ZV9pbmRl eCBjcmVhdGVfaW5kZXhfc3BnaXN0IGNyZWF0ZV92aWV3IGluZGV4X2luY2x1ZGluZyBpbmRleF9p bmNsdWRpCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwog IyAtLS0tLS0tLS0tCi10ZXN0OiBjcmVhdGVfYWdncmVnYXRlIGNyZWF0ZV9mdW5jdGlvbl9zcWwg Y3JlYXRlX2Nhc3QgY29uc3RyYWludHMgdHJpZ2dlcnMgc2VsZWN0IGluaGVyaXQgdHlwZWRfdGFi bGUgdmFjdXVtIGRyb3BfaWZfZXhpc3RzIHVwZGF0YWJsZV92aWV3cyByb2xlYXR0cmlidXRlcyBj cmVhdGVfYW0gaGFzaF9mdW5jIGVycm9ycyBpbmZpbml0ZV9yZWN1cnNlIGNyZWF0ZV9wcm9wZXJ0 eV9ncmFwaAordGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fc3FsIGNyZWF0 ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVkX3RhYmxlIHZh Y3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0ZXMgY3JlYXRl X2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZSBjcmVhdGVfcHJvcGVydHlfZ3Jh cGggaW50ZXJuYWxzCiAKICMgLS0tLS0tLS0tLQogIyBzYW5pdHlfY2hlY2sgZG9lcyBhIHZhY3V1 bSwgYWZmZWN0aW5nIHRoZSBzb3J0IG9yZGVyIG9mIFNFTEVDVCAqCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3JlZ3Jlc3MuYyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcmVncmVzcy5jCmluZGV4 IDY4YTAxYTFkZGUwLi44ZjlhN2FjNDIyMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9y ZWdyZXNzLmMKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9yZWdyZXNzLmMKQEAgLTI3LDYgKzI3LDcg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1 ZW5jZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKKyNpbmNsdWRlICJjb21tb24v aW50LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRv ci9mdW5jdGlvbnMuaCIKICNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKQEAgLTQ1LDYgKzQ2LDcg QEAKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2dlb19kZWNs cy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcGdfc3Rh Y2tfYWxsb2MuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy90eXBj YWNoZS5oIgogCkBAIC0xMzg0LDMgKzEzODYsNTIgQEAgdGVzdF90cmFuc2xhdGlvbihQR19GVU5D VElPTl9BUkdTKQogCiAJUEdfUkVUVVJOX1ZPSUQoKTsKIH0KKworUEdfRlVOQ1RJT05fSU5GT19W MSh0ZXN0X3BnX3N0YWNrX2FsbG9jKTsKK0RhdHVtCit0ZXN0X3BnX3N0YWNrX2FsbG9jKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJY2hhcgkgICAqcDsKKwljaGFyCSAgICpwMiBQR19VU0VEX0ZPUl9B U1NFUlRTX09OTFk7CisKKwkvKiBOZWVkIGV4dHJhIHNwYWNlIHRvIHJ1biB1bmRlciBBU0FOLiAq LworCURFQ0xBUkVfUEdfU1RBQ0tfU0laRSgxMDI0ICogOCk7CisKKwkvKiBUb28gYmlnIGZvciB0 aGUgc3RhY2suICovCisJcCA9IHBnX3N0YWNrX2FsbG9jKDEwMDAwKTsKKwlBc3NlcnQoIXBnX3N0 YWNrX3B0cl9wKHApKTsKKwlwZ19zdGFja19mcmVlKHApOworCisJLyogQWNjZXB0YWJsZSBzaXpl LiAqLworCXAgPSBwZ19zdGFja19hbGxvYygxMCk7CisJQXNzZXJ0KHBnX3N0YWNrX3B0cl9wKHAp KTsKKworCS8qIEFkZHJlc3NlcyBzaG91bGQgbW92ZSBkb3dud2FyZHMuICovCisJcDIgPSBwZ19z dGFja19hbGxvYygxMCk7CisJQXNzZXJ0KHBnX3N0YWNrX3B0cl9wKHApKTsKKwlBc3NlcnQocDIg PCBwKTsKKworCS8qIEEgemVyby1zaXplZCBhbGxvY2F0aW9uIGlzIGlkZW50aWZpYWJsZSBhcyBh IHN0YWNrIGFkZHJlc3MuICovCisJcCA9IHBnX3N0YWNrX2FsbG9jKDApOworCUFzc2VydChwZ19z dGFja19wdHJfcChwKSk7CisKKwkvKiBUZXN0IGEgcmFuZ2Ugb2YgYWxpZ25tZW50cy4gKi8KKyNk ZWZpbmUgVEVTVF9BTElHTiBNQVhJTVVNX0FMSUdOT0YKKwlmb3IgKGludCBpID0gMTsgaSA8PSBU RVNUX0FMSUdOICogODsgaSAqPSAyKQorCXsKKwkJLyogQWxsb2NhdGUgYW5kIGNoZWNrIGFsaWdu bWVudCBpcyBhcyByZXF1ZXN0ZWQsIHdoZW4gd2UgdXNlIHBhbGxvYygpLiAqLworCQlwID0gcGdf c3RhY2tfYWxsb2NfYWxpZ25lZCgxMDI0ICogOCwgaSk7CisKKwkJQXNzZXJ0KCFwZ19zdGFja19w dHJfcChwKSk7CisJCUFzc2VydChwZ19zdGFja19wdHJfaXNfYWxpZ25lZF9wKHAsIGkpKTsKKwkJ cGdfc3RhY2tfZnJlZShwKTsKKworCQkvKiBBbGxvY2F0ZSBhbmQgY2hlY2sgYWxpZ25tZW50IGlz IGFzIHJlcXVlc3RlZC4gKi8KKwkJcCA9IHBnX3N0YWNrX2FsbG9jX2FsaWduZWQoaSwgaSk7CisK KwkJQXNzZXJ0KHBnX3N0YWNrX3B0cl9wKHApKTsKKwkJQXNzZXJ0KHBnX3N0YWNrX3B0cl9pc19h bGlnbmVkX3AocCwgaSkpOworCX0KKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnRlcm5hbHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvaW50ZXJuYWxzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u YmVhNjE3ODBmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnRl cm5hbHMuc3FsCkBAIC0wLDAgKzEsMTEgQEAKK1xnZXRlbnYgbGliZGlyIFBHX0xJQkRJUgorXGdl dGVudiBkbHN1ZmZpeCBQR19ETFNVRkZJWAorCitcc2V0IHJlZ3Jlc3NsaWIgOmxpYmRpciAnL3Jl Z3Jlc3MnIDpkbHN1ZmZpeAorCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9wZ19zdGFja19hbGxvYygp IFJFVFVSTlMgdm9pZAorICAgIEFTIDoncmVncmVzc2xpYicgTEFOR1VBR0UgQyBTVFJJQ1Q7CisK K1NFTEVDVCB0ZXN0X3BnX3N0YWNrX2FsbG9jKCk7CisKK0RST1AgRlVOQ1RJT04gdGVzdF9wZ19z dGFja19hbGxvYygpOwotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002715e1064d2b7e78 Content-Type: application/octet-stream; name="v4-0002-pg_stack_alloc-Defend-against-arithmetic-overflow.patch" Content-Disposition: attachment; filename="v4-0002-pg_stack_alloc-Defend-against-arithmetic-overflow.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtg48gs1 RnJvbSBjN2QxYTAzYWQ3ZDFlOTBiMTgwNDk1MzQ4NjBiZGQ4Nzk1NmI5OTUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTYgTWFyIDIwMjYgMTU6MTU6MTggKzEzMDAKU3ViamVjdDogW1BBVENIIHY0 IDAyLzIxXSBwZ19zdGFja19hbGxvYzogRGVmZW5kIGFnYWluc3QgYXJpdGhtZXRpYyBvdmVyZmxv dy4KCkFkZCBjaGVja3MgdGhhdCBwZ19zdGFja19hbGxvY19hcnJheShULCBuKSBhbmQgc2ltaWxh ciBjYW4ndCBvdmVyZmxvdwpzaXplX3QgYW5kIGFsbG93IHRoZSBzdGFjayB0byBiZSBvdmVycnVu LgoKWFhYIFNlcGFyYXRlZCBmcm9tIGluaXRpYWwgcGF0Y2ggZm9yIHJldmlldy4KClJldmlld2Vk LWJ5OgpEaXNjdXNzaW9uOgotLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3BnX3N0YWNrX2FsbG9jLmgg fCA1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvcmVn cmVzcy5jICAgICAgICAgfCAzMCArKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA3 OSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL3BnX3N0YWNrX2FsbG9jLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZ19zdGFja19hbGxv Yy5oCmluZGV4IGJiOGM1ODU5N2I5Li5jZDNjMzgzODAxMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvcGdfc3RhY2tfYWxsb2MuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ19zdGFj a19hbGxvYy5oCkBAIC0xODEsMTIgKzE4MSw1OCBAQCBwZ19zdGFja19zdHJkdXBfd2l0aF9sZW5f aW1wbChjaGFyICpkc3QsIGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBzaXplKQogCXJldHVybiBk c3Q7CiB9CiAKLS8qIENvbXB1dGUgc2l6ZW9mKFQpICogbi4gKi8KKy8qIElzIGl0IGltcG9zc2li bGUgZm9yIHNpemVvZihUKSAqIG1heGltdW0gcG9zc2libGUgbiB0byBvdmVyZmxvdyBzaXplX3Q/ ICovCitzdGF0aWMgaW5saW5lIGJvb2wKK3BnX3N0YWNrX1RfbXVsX25fY2Fubm90X292ZXJmbG93 X3Aoc2l6ZV90IHNpemVvZl9ULCBzaXplX3Qgc2l6ZW9mX24pCit7CisJLyogU2VlIHN0YXRpYyBh c3NlcnRpb24gdGhhdCBuIGlzIG5vdCB3aWRlciB0aGFuIHNpemVfdC4gKi8KKwlpZiAoc2l6ZW9m X1QgPT0gMSkKKwkJcmV0dXJuIHRydWU7CisKKwkvKiBDYW4ndCBvdmVyZmxvdyBpZiBib3RoIGZh Y3RvcnMgZml0IGluIHRoZSBsb3dlciBoYWxmIG9mIHNpemVfdC4gKi8KKwlpZiAoc2l6ZW9mX24g PD0gc2l6ZW9mKHNpemVfdCkgLyAyICYmCisJCShzaXplb2ZfVCA8PSBwZ19zdGFja19tYXhfZm9y X3VpbnRfc2l6ZShzaXplb2Yoc2l6ZV90KSAvIDIpKSkKKwkJcmV0dXJuIHRydWU7CisKKwlyZXR1 cm4gZmFsc2U7Cit9CisKKy8qIFdvdWxkIHNpemVvZihUKSAqIG4gb3ZlcmZsb3c/ICovCitzdGF0 aWMgaW5saW5lIGJvb2wKK3BnX3N0YWNrX1RfbXVsX25fb3ZlcmZsb3dzX3Aoc2l6ZV90IHNpemVv Zl9ULCBzaXplX3QgbikKK3sKKwlyZXR1cm4gbiA+IFNJWkVfTUFYIC8gc2l6ZW9mX1Q7Cit9CisK Ky8qIENvbXB1dGUgc2l6ZW9mKFQpICogbiBvciByYWlzZSBhbiBlcnJvciBpZiB0aGF0IHdvdWxk IG92ZXJmbG93IHNpemVfdC4gKi8KIHN0YXRpYyBpbmxpbmUgc2l6ZV90CiBwZ19zdGFja19UX211 bF9uKHNpemVfdCBzaXplb2ZfVCwgc2l6ZV90IHNpemVvZl9uLCBzaXplX3QgbikKIHsKLQkvKiBY WFggQ291bGQgb3ZlcmZsb3csIHdoaWNoIG1pZ2h0IGFsbG93IHRoZSBzdGFjayB0byBiZSBjb3Jy dXB0ZWQuICovCi0JcmV0dXJuIHNpemVvZl9UICogbjsKKwlzaXplX3QJCXJlc3VsdDsKKworCS8q CisJICogVGhlc2UgZnVuY3Rpb25zIGFyZSBzcGxpdCB1cCBzbyB0aGF0IHdlIGNhbiBzYW5pdHkt Y2hlY2sgdGhlbQorCSAqIGluZGl2aWR1YWxseSBvbiAzMi1iaXQgQ0kuICBGb3IgdGhlIGNvbW1v biBjYXNlIG9mIHNpemVvZihuKSA9PSA0IGFuZAorCSAqIHNpemVvZihzaXplX3QpID09IDgsIHRo aXMgc2hvdWxkIHJlZHVjZSB0byBzaW1wbGUgbXVsdGlwbGljYXRpb24uCisJICogMzItYml0IHN5 c3RlbXMgY2FuIG9ubHkgc2tpcCB0aGUgcnVudGltZSB0ZXN0IGZvciBzaXplb2YoVCkgPT0gMSwK KwkgKiBzaXplb2YobikgPT0gMiBvciBjb25zdGV4cHIgbiA8PSBVSU5UMTZfTUFYLgorCSAqLwor CWlmIChwZ19zdGFja19UX211bF9uX2Nhbm5vdF9vdmVyZmxvd19wKHNpemVvZl9ULCBzaXplb2Zf bikgfHwKKwkJIXBnX3N0YWNrX1RfbXVsX25fb3ZlcmZsb3dzX3Aoc2l6ZW9mX1QsIG4pKQorCQly ZXN1bHQgPSBzaXplb2ZfVCAqIG47CisJZWxzZQorCQllbG9nKEVSUk9SLCAicGdfc3RhY2tfYWxs b2M6ICV6dSAqICV6dSB3b3VsZCBvdmVyZmxvdyBzaXplX3QiLAorCQkJIHNpemVvZl9ULCBuKTsK KworCS8qCisJICogRXhwbGFpbiB0aGlzIHRoZW9yeSBpbiB0ZXJtcyB0aGF0IEdDQydzIC1XZXJy b3I9c3RyaW5nb3Atb3ZlcmZsb3cKKwkgKiB1bmRlcnN0YW5kcywgc28gaXQgZG9lc24ndCBjb21w bGFpbiB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgcGFzc2VkIHRvCisJICogbWVtc2V0KCkuICBU aGlzIGFsc28gc2VydmVzIGFzIGFuIGFzc2VydGlvbi4KKwkgKi8KKwlwZ19hc3N1bWUocmVzdWx0 ID09IG4gfHwKKwkJCSAgcmVzdWx0IDw9IHBnX3N0YWNrX21heF9mb3JfdWludF9zaXplKHNpemVv Zl9uKSk7CisKKwlyZXR1cm4gcmVzdWx0OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9yZWdyZXNzLmMgYi9zcmMvdGVzdC9yZWdyZXNzL3JlZ3Jlc3MuYwppbmRleCA4Zjlh N2FjNDIyMS4uZjgyYTBhMTJlOGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcmVncmVz cy5jCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcmVncmVzcy5jCkBAIC0xMzkzLDYgKzEzOTMsNyBA QCB0ZXN0X3BnX3N0YWNrX2FsbG9jKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJY2hhcgkgICAqcDsK IAljaGFyCSAgICpwMiBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisJYm9vbAkJcmFpc2VkX2Vy cm9yIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKIAogCS8qIE5lZWQgZXh0cmEgc3BhY2UgdG8g cnVuIHVuZGVyIEFTQU4uICovCiAJREVDTEFSRV9QR19TVEFDS19TSVpFKDEwMjQgKiA4KTsKQEAg LTE0MTUsNiArMTQxNiwzNSBAQCB0ZXN0X3BnX3N0YWNrX2FsbG9jKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJcCA9IHBnX3N0YWNrX2FsbG9jKDApOwogCUFzc2VydChwZ19zdGFja19wdHJfcChwKSk7CiAK KwkvKiBPdmVyZmxvdyBzYWZldHkgaW4gcGdfc3RhY2tfYWxsb2NfYXJyYXkoVCwgbikuICovCisJ QXNzZXJ0KHBnX3N0YWNrX1RfbXVsX25fY2Fubm90X292ZXJmbG93X3AoMSwgc2l6ZW9mKHNpemVf dCkpKTsKKwlBc3NlcnQoIXBnX3N0YWNrX1RfbXVsX25fY2Fubm90X292ZXJmbG93X3AoMiwgc2l6 ZW9mKHNpemVfdCkpKTsKKwlBc3NlcnQocGdfc3RhY2tfVF9tdWxfbl9jYW5ub3Rfb3ZlcmZsb3df cCgyLCBzaXplb2Yoc2l6ZV90KSAvIDIpKTsKKwlBc3NlcnQoIXBnX3N0YWNrX1RfbXVsX25fY2Fu bm90X292ZXJmbG93X3AoMiwgc2l6ZW9mKHNpemVfdCkpKTsKKwlBc3NlcnQoIXBnX3N0YWNrX1Rf bXVsX25fb3ZlcmZsb3dzX3AoMSwgU0laRV9NQVgpKTsKKwlBc3NlcnQocGdfc3RhY2tfVF9tdWxf bl9vdmVyZmxvd3NfcCgyLCBTSVpFX01BWCAvIDIgKyAxKSk7CisJQXNzZXJ0KCFwZ19zdGFja19U X211bF9uX292ZXJmbG93c19wKDIsIFNJWkVfTUFYIC8gMikpOworCisJLyogV2hlbiBzaXplb2Zf VCA9PSAxLCBhbHdheXMgcmV0dXJucyBuLiAqLworCUFzc2VydChwZ19zdGFja19UX211bF9uKDEs IHNpemVvZih1aW50MzIpLCBTSVpFX01BWCkgPT0gU0laRV9NQVgpOworCUFzc2VydChwZ19zdGFj a19UX211bF9uKDEsIHNpemVvZih1aW50NjQpLCBTSVpFX01BWCkgPT0gU0laRV9NQVgpOworCisJ LyogVGhlIGxhcmdlc3Qgc3VjY2Vzc2Z1bCB2YWx1ZSBvZiBzaXplX3Qgbi4gKi8KKwlBc3NlcnQo cGdfc3RhY2tfVF9tdWxfbigyLCBzaXplb2Yoc2l6ZV90KSwgU0laRV9NQVggLyAyKSA9PSBTSVpF X01BWCAtIDEpOworCisJLyogRXhjZWVkIHZhbHVlIGJ5IG9uZSBmb3Igc2l6ZV90IG4uICovCisJ cmFpc2VkX2Vycm9yID0gZmFsc2U7CisJUEdfVFJZKCk7CisJeworCQlwZ19zdGFja19UX211bF9u KDIsIHNpemVvZihzaXplX3QpLCBTSVpFX01BWCAvIDIgKyAxKTsKKwl9CisJUEdfQ0FUQ0goKTsK Kwl7CisJCXJhaXNlZF9lcnJvciA9IHRydWU7CisJfQorCVBHX0VORF9UUlkoKTsKKwlBc3NlcnQo cmFpc2VkX2Vycm9yKTsKKwogCS8qIFRlc3QgYSByYW5nZSBvZiBhbGlnbm1lbnRzLiAqLwogI2Rl ZmluZSBURVNUX0FMSUdOIE1BWElNVU1fQUxJR05PRgogCWZvciAoaW50IGkgPSAxOyBpIDw9IFRF U1RfQUxJR04gKiA4OyBpICo9IDIpCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000002715e1064d2b7e78 Content-Type: application/octet-stream; name="v4-0003-Use-pg_stack_alloc-in-locale-code.patch" Content-Disposition: attachment; filename="v4-0003-Use-pg_stack_alloc-in-locale-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtg4ay52 RnJvbSBiODc3MGY3YTUyM2NhODUxOWZjYmZiZjRmODBlNzZkZTIyZGQ2ZWU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgNSBNYXIgMjAyNiAyMTozODo0NiArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjQg MDMvMjFdIFVzZSBwZ19zdGFja19hbGxvYygpIGluIGxvY2FsZSBjb2RlLgoKVXNlIHN0YWNrIGJ1 ZmZlcnMgZm9yIHRlbXBvcmFyeSBDIHN0cmluZ3MsIHdjaGFyX3Qgc3RyaW5ncywgcGdfd2NoYXIK c3RyaW5ncyB3aXRoIHRoZSBuZXcgQVBJLiAgU29tZSBjYXNlcyB3ZXJlIGFscmVhZHkgdXNpbmcg b3Blbi1jb2RlZAphcnJheXMsIHdoaWxlIG90aGVycyBuZWFyYnkgd2VyZSBub3QgYnV0IGFyZSBv YnZpb3VzIGNhbmRpZGF0ZXMsIHNvCmxldCdzIGNoYW5nZSB0aGVtIHRvby4KClRoZXNlIGNhc2Vz IHVzZWQgVEVYVEJVRkxFTiAoMUtCKSwgYW5kIHRoZXkgaW5oZXJpdCB0aGUgc2FtZSBsaW1pdCBi eQpyZXF1ZXN0aW5nIGEgbm9uLWRlZmF1bHQgc2l6ZToKCiAgREVDTEFSRV9TVEFDS19CVUZGRVJf U0laRShMT0NBTEVfU1RBQ0tfU0laRSk7CgpDb21tb24gb3BlcmF0aW9ucyB0aGF0IHdlcmUgb3Bl bi1jb2RlZCBhcyBwb2ludGVyIGFyaXRobWV0aWMgYW5kCm1lbWNweSgpIGFyZSBjaGFuZ2VkIHRv IHBnX3N0YWNrX3N0cmR1cF93aXRoX2xlbiguLi4pLCBhbmQgb3BlcmF0aW9ucwp0aGF0IHdvcmtl ZCB3aXRoIHdpZGVyIGNoYXJhY3RlcnMgZ2FpbiBhIHNtYWxsIGFtb3VudCBvZiB0eXBlLXNhZmV0 eS4KClJldmlld2VkLWJ5OgpEaXNjdXNzaW9uOgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGUuYyAgICAgIHwgICA2IC0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVf aWN1LmMgIHwgIDU5ICsrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVf bGliYy5jIHwgMTUwICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxz L3BnX2xvY2FsZS5oICAgICAgICAgIHwgICA2ICsKIDQgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0 aW9ucygrKSwgMTQ0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ19sb2NhbGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwppbmRl eCA2YzVjMTAxOWUxZS4uM2E2MTkwODkyYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ19sb2NhbGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMK QEAgLTYwLDEyICs2MCw2IEBACiAjZGVmaW5lCQlQR0xPQ0FMRV9TVVBQT1JUX0VSUk9SKHByb3Zp ZGVyKSBcCiAJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIGNvbGxwcm92aWRlciBmb3IgJXM6ICVj IiwgX19mdW5jX18sIHByb3ZpZGVyKQogCi0vKgotICogVGhpcyBzaG91bGQgYmUgbGFyZ2UgZW5v dWdoIHRoYXQgbW9zdCBzdHJpbmdzIHdpbGwgZml0LCBidXQgc21hbGwgZW5vdWdoCi0gKiB0aGF0 IHdlIGZlZWwgY29tZm9ydGFibGUgcHV0dGluZyBpdCBvbiB0aGUgc3RhY2sKLSAqLwotI2RlZmlu ZQkJVEVYVEJVRkxFTgkJCTEwMjQKLQogI2RlZmluZQkJTUFYX0wxME5fREFUQQkJODAKIAogLyog cGdfbG9jYWxlX2J1aWx0aW4uYyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3BnX2xvY2FsZV9pY3UuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfaWN1LmMK aW5kZXggMzUyYjRjMzg4NWYuLjM4NDlhYzA0YThjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlX2ljdS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19s b2NhbGVfaWN1LmMKQEAgLTM5LDE2ICszOSw5IEBACiAjaW5jbHVkZSAidXRpbHMvZm9ybWF0dGlu Zy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbG9j YWxlLmgiCisjaW5jbHVkZSAidXRpbHMvcGdfc3RhY2tfYWxsb2MuaCIKICNpbmNsdWRlICJ1dGls cy9zeXNjYWNoZS5oIgogCi0vKgotICogU2l6ZSBvZiBzdGFjayBidWZmZXIgdG8gdXNlIGZvciBz dHJpbmcgdHJhbnNmb3JtYXRpb25zLCB1c2VkIHRvIGF2b2lkIGhlYXAKLSAqIGFsbG9jYXRpb25z IGluIHR5cGljYWwgY2FzZXMuIFRoaXMgc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0aGF0IG1vc3Qg c3RyaW5ncwotICogd2lsbCBmaXQsIGJ1dCBzbWFsbCBlbm91Z2ggdGhhdCB3ZSBmZWVsIGNvbWZv cnRhYmxlIHB1dHRpbmcgaXQgb24gdGhlCi0gKiBzdGFjay4KLSAqLwotI2RlZmluZQkJVEVYVEJV RkxFTgkJCTEwMjQKLQogZXh0ZXJuIHBnX2xvY2FsZV90IGNyZWF0ZV9wZ19sb2NhbGVfaWN1KE9p ZCBjb2xsaWQsIE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiAKICNpZmRlZiBVU0VfSUNVCkBAIC03 NTUsMjMgKzc0OCwxNyBAQCBzaXplX3QKIHN0cm54ZnJtX2ljdShjaGFyICpkZXN0LCBzaXplX3Qg ZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCQkgcGdfbG9jYWxl X3QgbG9jYWxlKQogewotCWNoYXIJCXNidWZbVEVYVEJVRkxFTl07Ci0JY2hhcgkgICAqYnVmID0g c2J1ZjsKIAlVQ2hhcgkgICAqdWNoYXI7CiAJaW50MzJfdAkJdWxlbjsKLQlzaXplX3QJCXVjaGFy X2JzaXplOwogCVNpemUJCXJlc3VsdF9ic2l6ZTsKIAorCURFQ0xBUkVfUEdfU1RBQ0tfU0laRShM T0NBTEVfU1RBQ0tfU0laRSk7CisKIAlpbml0X2ljdV9jb252ZXJ0ZXIoKTsKIAogCXVsZW4gPSB1 Y2hhcl9sZW5ndGgoaWN1X2NvbnZlcnRlciwgc3JjLCBzcmNsZW4pOwogCi0JdWNoYXJfYnNpemUg PSAodWxlbiArIDEpICogc2l6ZW9mKFVDaGFyKTsKLQotCWlmICh1Y2hhcl9ic2l6ZSA+IFRFWFRC VUZMRU4pCi0JCWJ1ZiA9IHBhbGxvYyh1Y2hhcl9ic2l6ZSk7Ci0KLQl1Y2hhciA9IChVQ2hhciAq KSBidWY7CisJdWNoYXIgPSBwZ19zdGFja19hbGxvY19hcnJheShVQ2hhciwgdWxlbiArIDEpOwog CiAJdWxlbiA9IHVjaGFyX2NvbnZlcnQoaWN1X2NvbnZlcnRlciwgdWNoYXIsIHVsZW4gKyAxLCBz cmMsIHNyY2xlbik7CiAKQEAgLTc4Niw4ICs3NzMsNyBAQCBzdHJueGZybV9pY3UoY2hhciAqZGVz dCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCUFz c2VydChyZXN1bHRfYnNpemUgPiAwKTsKIAlyZXN1bHRfYnNpemUtLTsKIAotCWlmIChidWYgIT0g c2J1ZikKLQkJcGZyZWUoYnVmKTsKKwlwZ19zdGFja19mcmVlKHVjaGFyKTsKIAogCS8qIGlmIGRl c3QgaXMgZGVmaW5lZCwgaXQgc2hvdWxkIGJlIG51bC10ZXJtaW5hdGVkICovCiAJQXNzZXJ0KHJl c3VsdF9ic2l6ZSA+PSBkZXN0c2l6ZSB8fCBkZXN0W3Jlc3VsdF9ic2l6ZV0gPT0gJ1wwJyk7CkBA IC0xMDIwLDE2ICsxMDA2LDE0IEBAIHN0YXRpYyBpbnQKIHN0cm5jb2xsX2ljdShjb25zdCBjaGFy ICphcmcxLCBzc2l6ZV90IGxlbjEsCiAJCQkgY29uc3QgY2hhciAqYXJnMiwgc3NpemVfdCBsZW4y LCBwZ19sb2NhbGVfdCBsb2NhbGUpCiB7Ci0JY2hhcgkJc2J1ZltURVhUQlVGTEVOXTsKLQljaGFy CSAgICpidWYgPSBzYnVmOwogCWludDMyX3QJCXVsZW4xOwogCWludDMyX3QJCXVsZW4yOwotCXNp emVfdAkJYnVmc2l6ZTE7Ci0Jc2l6ZV90CQlidWZzaXplMjsKIAlVQ2hhcgkgICAqdWNoYXIxLAog CQkJICAgKnVjaGFyMjsKIAlpbnQJCQlyZXN1bHQ7CiAKKwlERUNMQVJFX1BHX1NUQUNLX1NJWkUo TE9DQUxFX1NUQUNLX1NJWkUpOworCiAJLyogaWYgZW5jb2RpbmcgaXMgVVRGOCwgdXNlIG1vcmUg ZWZmaWNpZW50IHN0cm5jb2xsX2ljdV91dGY4ICovCiAjaWZkZWYgSEFWRV9VQ09MX1NUUkNPTExV VEY4CiAJQXNzZXJ0KEdldERhdGFiYXNlRW5jb2RpbmcoKSAhPSBQR19VVEY4KTsKQEAgLTEwNDAs MTQgKzEwMjQsOCBAQCBzdHJuY29sbF9pY3UoY29uc3QgY2hhciAqYXJnMSwgc3NpemVfdCBsZW4x LAogCXVsZW4xID0gdWNoYXJfbGVuZ3RoKGljdV9jb252ZXJ0ZXIsIGFyZzEsIGxlbjEpOwogCXVs ZW4yID0gdWNoYXJfbGVuZ3RoKGljdV9jb252ZXJ0ZXIsIGFyZzIsIGxlbjIpOwogCi0JYnVmc2l6 ZTEgPSAodWxlbjEgKyAxKSAqIHNpemVvZihVQ2hhcik7Ci0JYnVmc2l6ZTIgPSAodWxlbjIgKyAx KSAqIHNpemVvZihVQ2hhcik7Ci0KLQlpZiAoYnVmc2l6ZTEgKyBidWZzaXplMiA+IFRFWFRCVUZM RU4pCi0JCWJ1ZiA9IHBhbGxvYyhidWZzaXplMSArIGJ1ZnNpemUyKTsKLQotCXVjaGFyMSA9IChV Q2hhciAqKSBidWY7Ci0JdWNoYXIyID0gKFVDaGFyICopIChidWYgKyBidWZzaXplMSk7CisJdWNo YXIxID0gcGdfc3RhY2tfYWxsb2NfYXJyYXkoVUNoYXIsIHVsZW4xICsgMSk7CisJdWNoYXIyID0g cGdfc3RhY2tfYWxsb2NfYXJyYXkoVUNoYXIsIHVsZW4yICsgMSk7CiAKIAl1bGVuMSA9IHVjaGFy X2NvbnZlcnQoaWN1X2NvbnZlcnRlciwgdWNoYXIxLCB1bGVuMSArIDEsIGFyZzEsIGxlbjEpOwog CXVsZW4yID0gdWNoYXJfY29udmVydChpY3VfY29udmVydGVyLCB1Y2hhcjIsIHVsZW4yICsgMSwg YXJnMiwgbGVuMik7CkBAIC0xMDU2LDggKzEwMzQsOCBAQCBzdHJuY29sbF9pY3UoY29uc3QgY2hh ciAqYXJnMSwgc3NpemVfdCBsZW4xLAogCQkJCQkJICB1Y2hhcjEsIHVsZW4xLAogCQkJCQkJICB1 Y2hhcjIsIHVsZW4yKTsKIAotCWlmIChidWYgIT0gc2J1ZikKLQkJcGZyZWUoYnVmKTsKKwlwZ19z dGFja19mcmVlKHVjaGFyMSk7CisJcGdfc3RhY2tfZnJlZSh1Y2hhcjIpOwogCiAJcmV0dXJuIHJl c3VsdDsKIH0KQEAgLTEwNjgsMTYgKzEwNDYsMTUgQEAgc3Rybnhmcm1fcHJlZml4X2ljdShjaGFy ICpkZXN0LCBzaXplX3QgZGVzdHNpemUsCiAJCQkJCWNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBz cmNsZW4sCiAJCQkJCXBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQljaGFyCQlzYnVmW1RFWFRCVUZM RU5dOwotCWNoYXIJICAgKmJ1ZiA9IHNidWY7CiAJVUNoYXJJdGVyYXRvciBpdGVyOwogCXVpbnQz Ml90CXN0YXRlWzJdOwogCVVFcnJvckNvZGUJc3RhdHVzOwogCWludDMyX3QJCXVsZW4gPSAtMTsK IAlVQ2hhcgkgICAqdWNoYXIgPSBOVUxMOwotCXNpemVfdAkJdWNoYXJfYnNpemU7CiAJU2l6ZQkJ cmVzdWx0X2JzaXplOwogCisJREVDTEFSRV9QR19TVEFDS19TSVpFKExPQ0FMRV9TVEFDS19TSVpF KTsKKwogCS8qIGlmIGVuY29kaW5nIGlzIFVURjgsIHVzZSBtb3JlIGVmZmljaWVudCBzdHJueGZy bV9wcmVmaXhfaWN1X3V0ZjggKi8KIAlBc3NlcnQoR2V0RGF0YWJhc2VFbmNvZGluZygpICE9IFBH X1VURjgpOwogCkBAIC0xMDg1LDEyICsxMDYyLDcgQEAgc3Rybnhmcm1fcHJlZml4X2ljdShjaGFy ICpkZXN0LCBzaXplX3QgZGVzdHNpemUsCiAKIAl1bGVuID0gdWNoYXJfbGVuZ3RoKGljdV9jb252 ZXJ0ZXIsIHNyYywgc3JjbGVuKTsKIAotCXVjaGFyX2JzaXplID0gKHVsZW4gKyAxKSAqIHNpemVv ZihVQ2hhcik7Ci0KLQlpZiAodWNoYXJfYnNpemUgPiBURVhUQlVGTEVOKQotCQlidWYgPSBwYWxs b2ModWNoYXJfYnNpemUpOwotCi0JdWNoYXIgPSAoVUNoYXIgKikgYnVmOworCXVjaGFyID0gcGdf c3RhY2tfYWxsb2NfYXJyYXkoVUNoYXIsIHVsZW4gKyAxKTsKIAogCXVsZW4gPSB1Y2hhcl9jb252 ZXJ0KGljdV9jb252ZXJ0ZXIsIHVjaGFyLCB1bGVuICsgMSwgc3JjLCBzcmNsZW4pOwogCkBAIC0x MTA4LDggKzEwODAsNyBAQCBzdHJueGZybV9wcmVmaXhfaWN1KGNoYXIgKmRlc3QsIHNpemVfdCBk ZXN0c2l6ZSwKIAkJCQkoZXJybXNnKCJzb3J0IGtleSBnZW5lcmF0aW9uIGZhaWxlZDogJXMiLAog CQkJCQkJdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKIAotCWlmIChidWYgIT0gc2J1ZikKLQkJcGZy ZWUoYnVmKTsKKwlwZ19zdGFja19mcmVlKHVjaGFyKTsKIAogCXJldHVybiByZXN1bHRfYnNpemU7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2xpYmMuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGVfbGliYy5jCmluZGV4IDc4ZjZlYTE2MWEw Li44NzRlYjE2MWMyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2Fs ZV9saWJjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9saWJjLmMKQEAg LTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJ1dGlscy9mb3JtYXR0aW5nLmgiCiAjaW5jbHVkZSAi dXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19sb2NhbGUuaCIKKyNpbmNsdWRl ICJ1dGlscy9wZ19zdGFja19hbGxvYy5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAK ICNpZmRlZiBfX0dMSUJDX18KQEAgLTcyLDE0ICs3Myw2IEBACiAgKiBOQjogdGhlIGNvZGluZyBo ZXJlIGFzc3VtZXMgcGdfd2NoYXIgaXMgYW4gdW5zaWduZWQgdHlwZS4KICAqLwogCi0vKgotICog U2l6ZSBvZiBzdGFjayBidWZmZXIgdG8gdXNlIGZvciBzdHJpbmcgdHJhbnNmb3JtYXRpb25zLCB1 c2VkIHRvIGF2b2lkIGhlYXAKLSAqIGFsbG9jYXRpb25zIGluIHR5cGljYWwgY2FzZXMuIFRoaXMg c2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0aGF0IG1vc3Qgc3RyaW5ncwotICogd2lsbCBmaXQsIGJ1 dCBzbWFsbCBlbm91Z2ggdGhhdCB3ZSBmZWVsIGNvbWZvcnRhYmxlIHB1dHRpbmcgaXQgb24gdGhl Ci0gKiBzdGFjay4KLSAqLwotI2RlZmluZQkJVEVYVEJVRkxFTgkJCTEwMjQKLQogZXh0ZXJuIHBn X2xvY2FsZV90IGNyZWF0ZV9wZ19sb2NhbGVfbGliYyhPaWQgY29sbGlkLCBNZW1vcnlDb250ZXh0 IGNvbnRleHQpOwogCiBzdGF0aWMgaW50CXN0cm5jb2xsX2xpYmMoY29uc3QgY2hhciAqYXJnMSwg c3NpemVfdCBsZW4xLApAQCAtNTAyLDYgKzQ5NSw4IEBAIHN0cmxvd2VyX2xpYmNfbWIoY2hhciAq ZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAog CXNpemVfdAkJY3Vycl9jaGFyOwogCXNpemVfdAkJbWF4X3NpemU7CiAKKwlERUNMQVJFX1BHX1NU QUNLX1NJWkUoTE9DQUxFX1NUQUNLX1NJWkUpOworCiAJaWYgKHNyY2xlbiA8IDApCiAJCXNyY2xl biA9IHN0cmxlbihzcmMpOwogCkBAIC01MTIsNyArNTA3LDcgQEAgc3RybG93ZXJfbGliY19tYihj aGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNs ZW4sCiAJCQkJIGVycm1zZygib3V0IG9mIG1lbW9yeSIpKSk7CiAKIAkvKiBPdXRwdXQgd29ya3Nw YWNlIGNhbm5vdCBoYXZlIG1vcmUgY29kZXMgdGhhbiBpbnB1dCBieXRlcyAqLwotCXdvcmtzcGFj ZSA9IHBhbGxvY19hcnJheSh3Y2hhcl90LCBzcmNsZW4gKyAxKTsKKwl3b3Jrc3BhY2UgPSBwZ19z dGFja19hbGxvY19hcnJheSh3Y2hhcl90LCBzcmNsZW4gKyAxKTsKIAogCWNoYXIyd2NoYXIod29y a3NwYWNlLCBzcmNsZW4gKyAxLCBzcmMsIHNyY2xlbiwgbG9jKTsKIApAQCAtNTIzLDcgKzUxOCw3 IEBAIHN0cmxvd2VyX2xpYmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBj aGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCSAqIE1ha2UgcmVzdWx0IGxhcmdlIGVub3VnaDsg Y2FzZSBjaGFuZ2UgbWlnaHQgY2hhbmdlIG51bWJlciBvZiBieXRlcwogCSAqLwogCW1heF9zaXpl ID0gY3Vycl9jaGFyICogcGdfZGF0YWJhc2VfZW5jb2RpbmdfbWF4X2xlbmd0aCgpOwotCXJlc3Vs dCA9IHBhbGxvYyhtYXhfc2l6ZSArIDEpOworCXJlc3VsdCA9IHBnX3N0YWNrX2FsbG9jKG1heF9z aXplICsgMSk7CiAKIAlyZXN1bHRfc2l6ZSA9IHdjaGFyMmNoYXIocmVzdWx0LCB3b3Jrc3BhY2Us IG1heF9zaXplICsgMSwgbG9jKTsKIApAQCAtNTMzLDggKzUyOCw4IEBAIHN0cmxvd2VyX2xpYmNf bWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qg c3JjbGVuLAogCQlkZXN0W3Jlc3VsdF9zaXplXSA9ICdcMCc7CiAJfQogCi0JcGZyZWUod29ya3Nw YWNlKTsKLQlwZnJlZShyZXN1bHQpOworCXBnX3N0YWNrX2ZyZWUod29ya3NwYWNlKTsKKwlwZ19z dGFja19mcmVlKHJlc3VsdCk7CiAKIAlyZXR1cm4gcmVzdWx0X3NpemU7CiB9CkBAIC02MDcsNiAr NjAyLDggQEAgc3RydGl0bGVfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNv bnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJc2l6ZV90CQljdXJyX2NoYXI7CiAJc2l6 ZV90CQltYXhfc2l6ZTsKIAorCURFQ0xBUkVfUEdfU1RBQ0tfU0laRShMT0NBTEVfU1RBQ0tfU0la RSk7CisKIAlpZiAoc3JjbGVuIDwgMCkKIAkJc3JjbGVuID0gc3RybGVuKHNyYyk7CiAKQEAgLTYx Nyw3ICs2MTQsNyBAQCBzdHJ0aXRsZV9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6 ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJCQkgZXJybXNnKCJvdXQgb2Yg bWVtb3J5IikpKTsKIAogCS8qIE91dHB1dCB3b3Jrc3BhY2UgY2Fubm90IGhhdmUgbW9yZSBjb2Rl cyB0aGFuIGlucHV0IGJ5dGVzICovCi0Jd29ya3NwYWNlID0gcGFsbG9jX2FycmF5KHdjaGFyX3Qs IHNyY2xlbiArIDEpOworCXdvcmtzcGFjZSA9IHBnX3N0YWNrX2FsbG9jX2FycmF5KHdjaGFyX3Qs IHNyY2xlbiArIDEpOwogCiAJY2hhcjJ3Y2hhcih3b3Jrc3BhY2UsIHNyY2xlbiArIDEsIHNyYywg c3JjbGVuLCBsb2MpOwogCkBAIC02MzQsNyArNjMxLDcgQEAgc3RydGl0bGVfbGliY19tYihjaGFy ICpkZXN0LCBzaXplX3QgZGVzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4s CiAJICogTWFrZSByZXN1bHQgbGFyZ2UgZW5vdWdoOyBjYXNlIGNoYW5nZSBtaWdodCBjaGFuZ2Ug bnVtYmVyIG9mIGJ5dGVzCiAJICovCiAJbWF4X3NpemUgPSBjdXJyX2NoYXIgKiBwZ19kYXRhYmFz ZV9lbmNvZGluZ19tYXhfbGVuZ3RoKCk7Ci0JcmVzdWx0ID0gcGFsbG9jKG1heF9zaXplICsgMSk7 CisJcmVzdWx0ID0gcGdfc3RhY2tfYWxsb2MobWF4X3NpemUgKyAxKTsKIAogCXJlc3VsdF9zaXpl ID0gd2NoYXIyY2hhcihyZXN1bHQsIHdvcmtzcGFjZSwgbWF4X3NpemUgKyAxLCBsb2MpOwogCkBA IC02NDQsOCArNjQxLDggQEAgc3RydGl0bGVfbGliY19tYihjaGFyICpkZXN0LCBzaXplX3QgZGVz dHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc3NpemVfdCBzcmNsZW4sCiAJCWRlc3RbcmVzdWx0X3Np emVdID0gJ1wwJzsKIAl9CiAKLQlwZnJlZSh3b3Jrc3BhY2UpOwotCXBmcmVlKHJlc3VsdCk7CisJ cGdfc3RhY2tfZnJlZSh3b3Jrc3BhY2UpOworCXBnX3N0YWNrX2ZyZWUocmVzdWx0KTsKIAogCXJl dHVybiByZXN1bHRfc2l6ZTsKIH0KQEAgLTcwMCw2ICs2OTcsOCBAQCBzdHJ1cHBlcl9saWJjX21i KGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNy Y2xlbiwKIAlzaXplX3QJCWN1cnJfY2hhcjsKIAlzaXplX3QJCW1heF9zaXplOwogCisJREVDTEFS RV9QR19TVEFDS19TSVpFKExPQ0FMRV9TVEFDS19TSVpFKTsKKwogCWlmIChzcmNsZW4gPCAwKQog CQlzcmNsZW4gPSBzdHJsZW4oc3JjKTsKIApAQCAtNzEwLDcgKzcwOSw3IEBAIHN0cnVwcGVyX2xp YmNfbWIoY2hhciAqZGVzdCwgc2l6ZV90IGRlc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXpl X3Qgc3JjbGVuLAogCQkJCSBlcnJtc2coIm91dCBvZiBtZW1vcnkiKSkpOwogCiAJLyogT3V0cHV0 IHdvcmtzcGFjZSBjYW5ub3QgaGF2ZSBtb3JlIGNvZGVzIHRoYW4gaW5wdXQgYnl0ZXMgKi8KLQl3 b3Jrc3BhY2UgPSBwYWxsb2NfYXJyYXkod2NoYXJfdCwgc3JjbGVuICsgMSk7CisJd29ya3NwYWNl ID0gcGdfc3RhY2tfYWxsb2NfYXJyYXkod2NoYXJfdCwgc3JjbGVuICsgMSk7CiAKIAljaGFyMndj aGFyKHdvcmtzcGFjZSwgc3JjbGVuICsgMSwgc3JjLCBzcmNsZW4sIGxvYyk7CiAKQEAgLTcyMSw3 ICs3MjAsNyBAQCBzdHJ1cHBlcl9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwg Y29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkgKiBNYWtlIHJlc3VsdCBsYXJnZSBl bm91Z2g7IGNhc2UgY2hhbmdlIG1pZ2h0IGNoYW5nZSBudW1iZXIgb2YgYnl0ZXMKIAkgKi8KIAlt YXhfc2l6ZSA9IGN1cnJfY2hhciAqIHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKTsK LQlyZXN1bHQgPSBwYWxsb2MobWF4X3NpemUgKyAxKTsKKwlyZXN1bHQgPSBwZ19zdGFja19hbGxv YyhtYXhfc2l6ZSArIDEpOwogCiAJcmVzdWx0X3NpemUgPSB3Y2hhcjJjaGFyKHJlc3VsdCwgd29y a3NwYWNlLCBtYXhfc2l6ZSArIDEsIGxvYyk7CiAKQEAgLTczMSw4ICs3MzAsOCBAQCBzdHJ1cHBl cl9saWJjX21iKGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBz c2l6ZV90IHNyY2xlbiwKIAkJZGVzdFtyZXN1bHRfc2l6ZV0gPSAnXDAnOwogCX0KIAotCXBmcmVl KHdvcmtzcGFjZSk7Ci0JcGZyZWUocmVzdWx0KTsKKwlwZ19zdGFja19mcmVlKHdvcmtzcGFjZSk7 CisJcGdfc3RhY2tfZnJlZShyZXN1bHQpOwogCiAJcmV0dXJuIHJlc3VsdF9zaXplOwogfQpAQCAt ODk2LDQ4ICs4OTUsMjUgQEAgaW50CiBzdHJuY29sbF9saWJjKGNvbnN0IGNoYXIgKmFyZzEsIHNz aXplX3QgbGVuMSwgY29uc3QgY2hhciAqYXJnMiwgc3NpemVfdCBsZW4yLAogCQkJICBwZ19sb2Nh bGVfdCBsb2NhbGUpCiB7Ci0JY2hhcgkJc2J1ZltURVhUQlVGTEVOXTsKLQljaGFyCSAgICpidWYg PSBzYnVmOwotCXNpemVfdAkJYnVmc2l6ZTEgPSAobGVuMSA9PSAtMSkgPyAwIDogbGVuMSArIDE7 Ci0Jc2l6ZV90CQlidWZzaXplMiA9IChsZW4yID09IC0xKSA/IDAgOiBsZW4yICsgMTsKLQljb25z dCBjaGFyICphcmcxbjsKLQljb25zdCBjaGFyICphcmcybjsKKwljaGFyCSAgICpjc3RyMSA9IE5V TEw7CisJY2hhcgkgICAqY3N0cjIgPSBOVUxMOwogCWludAkJCXJlc3VsdDsKIAotCWlmIChidWZz aXplMSArIGJ1ZnNpemUyID4gVEVYVEJVRkxFTikKLQkJYnVmID0gcGFsbG9jKGJ1ZnNpemUxICsg YnVmc2l6ZTIpOworCURFQ0xBUkVfUEdfU1RBQ0tfU0laRShMT0NBTEVfU1RBQ0tfU0laRSk7CiAK IAkvKiBudWwtdGVybWluYXRlIGFyZ3VtZW50cyBpZiBuZWNlc3NhcnkgKi8KLQlpZiAobGVuMSA9 PSAtMSkKLQl7Ci0JCWFyZzFuID0gYXJnMTsKLQl9Ci0JZWxzZQotCXsKLQkJY2hhcgkgICAqYnVm MSA9IGJ1ZjsKKwlpZiAobGVuMSAhPSAtMSkKKwkJYXJnMSA9IGNzdHIxID0gcGdfc3RhY2tfc3Ry ZHVwX3dpdGhfbGVuKGFyZzEsIGxlbjEpOwogCi0JCW1lbWNweShidWYxLCBhcmcxLCBsZW4xKTsK LQkJYnVmMVtsZW4xXSA9ICdcMCc7Ci0JCWFyZzFuID0gYnVmMTsKLQl9CisJaWYgKGxlbjIgIT0g LTEpCisJCWFyZzIgPSBjc3RyMiA9IHBnX3N0YWNrX3N0cmR1cF93aXRoX2xlbihhcmcyLCBsZW4y KTsKIAotCWlmIChsZW4yID09IC0xKQotCXsKLQkJYXJnMm4gPSBhcmcyOwotCX0KLQllbHNlCi0J ewotCQljaGFyCSAgICpidWYyID0gYnVmICsgYnVmc2l6ZTE7Ci0KLQkJbWVtY3B5KGJ1ZjIsIGFy ZzIsIGxlbjIpOwotCQlidWYyW2xlbjJdID0gJ1wwJzsKLQkJYXJnMm4gPSBidWYyOwotCX0KKwly ZXN1bHQgPSBzdHJjb2xsX2woYXJnMSwgYXJnMiwgbG9jYWxlLT5sdCk7CiAKLQlyZXN1bHQgPSBz dHJjb2xsX2woYXJnMW4sIGFyZzJuLCBsb2NhbGUtPmx0KTsKLQotCWlmIChidWYgIT0gc2J1ZikK LQkJcGZyZWUoYnVmKTsKKwlpZiAoY3N0cjEpCisJCXBnX3N0YWNrX2ZyZWUoY3N0cjEpOworCWlm IChjc3RyMikKKwkJcGdfc3RhY2tfZnJlZShjc3RyMik7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpA QCAtOTUzLDI1ICs5MjksMTcgQEAgc2l6ZV90CiBzdHJueGZybV9saWJjKGNoYXIgKmRlc3QsIHNp emVfdCBkZXN0c2l6ZSwgY29uc3QgY2hhciAqc3JjLCBzc2l6ZV90IHNyY2xlbiwKIAkJCSAgcGdf bG9jYWxlX3QgbG9jYWxlKQogewotCWNoYXIJCXNidWZbVEVYVEJVRkxFTl07Ci0JY2hhcgkgICAq YnVmID0gc2J1ZjsKLQlzaXplX3QJCWJ1ZnNpemUgPSBzcmNsZW4gKyAxOworCWNoYXIJICAgKmNz dHI7CiAJc2l6ZV90CQlyZXN1bHQ7CiAKKwlERUNMQVJFX1BHX1NUQUNLX1NJWkUoTE9DQUxFX1NU QUNLX1NJWkUpOworCiAJaWYgKHNyY2xlbiA9PSAtMSkKIAkJcmV0dXJuIHN0cnhmcm1fbChkZXN0 LCBzcmMsIGRlc3RzaXplLCBsb2NhbGUtPmx0KTsKIAotCWlmIChidWZzaXplID4gVEVYVEJVRkxF TikKLQkJYnVmID0gcGFsbG9jKGJ1ZnNpemUpOwotCi0JLyogbnVsLXRlcm1pbmF0ZSBhcmd1bWVu dCAqLwotCW1lbWNweShidWYsIHNyYywgc3JjbGVuKTsKLQlidWZbc3JjbGVuXSA9ICdcMCc7Ci0K LQlyZXN1bHQgPSBzdHJ4ZnJtX2woZGVzdCwgYnVmLCBkZXN0c2l6ZSwgbG9jYWxlLT5sdCk7Ci0K LQlpZiAoYnVmICE9IHNidWYpCi0JCXBmcmVlKGJ1Zik7CisJY3N0ciA9IHBnX3N0YWNrX3N0cmR1 cF93aXRoX2xlbihzcmMsIHNyY2xlbik7CisJcmVzdWx0ID0gc3RyeGZybV9sKGRlc3QsIGNzdHIs IGRlc3RzaXplLCBsb2NhbGUtPmx0KTsKKwlwZ19zdGFja19mcmVlKGNzdHIpOwogCiAJLyogaWYg ZGVzdCBpcyBkZWZpbmVkLCBpdCBzaG91bGQgYmUgbnVsLXRlcm1pbmF0ZWQgKi8KIAlBc3NlcnQo cmVzdWx0ID49IGRlc3RzaXplIHx8IGRlc3RbcmVzdWx0XSA9PSAnXDAnKTsKQEAgLTEwNTcsMTUg KzEwMjUsMTMgQEAgc3RhdGljIGludAogc3RybmNvbGxfbGliY193aW4zMl91dGY4KGNvbnN0IGNo YXIgKmFyZzEsIHNzaXplX3QgbGVuMSwgY29uc3QgY2hhciAqYXJnMiwKIAkJCQkJCSBzc2l6ZV90 IGxlbjIsIHBnX2xvY2FsZV90IGxvY2FsZSkKIHsKLQljaGFyCQlzYnVmW1RFWFRCVUZMRU5dOwot CWNoYXIJICAgKmJ1ZiA9IHNidWY7Ci0JY2hhcgkgICAqYTFwLAotCQkJICAgKmEycDsKLQlpbnQJ CQlhMWxlbjsKLQlpbnQJCQlhMmxlbjsKKwl3Y2hhcl90ICAgICp3MXA7CisJd2NoYXJfdCAgICAq dzJwOwogCWludAkJCXI7CiAJaW50CQkJcmVzdWx0OwogCisJREVDTEFSRV9QR19TVEFDS19TSVpF KExPQ0FMRV9TVEFDS19TSVpFKTsKKwogCUFzc2VydChHZXREYXRhYmFzZUVuY29kaW5nKCkgPT0g UEdfVVRGOCk7CiAKIAlpZiAobGVuMSA9PSAtMSkKQEAgLTEwNzMsNTAgKzEwMzksNDIgQEAgc3Ry bmNvbGxfbGliY193aW4zMl91dGY4KGNvbnN0IGNoYXIgKmFyZzEsIHNzaXplX3QgbGVuMSwgY29u c3QgY2hhciAqYXJnMiwKIAlpZiAobGVuMiA9PSAtMSkKIAkJbGVuMiA9IHN0cmxlbihhcmcyKTsK IAotCWExbGVuID0gbGVuMSAqIDIgKyAyOwotCWEybGVuID0gbGVuMiAqIDIgKyAyOwotCi0JaWYg KGExbGVuICsgYTJsZW4gPiBURVhUQlVGTEVOKQotCQlidWYgPSBwYWxsb2MoYTFsZW4gKyBhMmxl bik7Ci0KLQlhMXAgPSBidWY7Ci0JYTJwID0gYnVmICsgYTFsZW47CisJdzFwID0gcGdfc3RhY2tf YWxsb2NfYXJyYXkod2NoYXJfdCwgbGVuMSArIDEpOworCXcycCA9IHBnX3N0YWNrX2FsbG9jX2Fy cmF5KHdjaGFyX3QsIGxlbjIgKyAxKTsKIAogCS8qIEFQSSBkb2VzIG5vdCB3b3JrIGZvciB6ZXJv LWxlbmd0aCBpbnB1dCAqLwogCWlmIChsZW4xID09IDApCiAJCXIgPSAwOwogCWVsc2UKIAl7Ci0J CXIgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGFyZzEsIGxlbjEsCi0JCQkJCQkJ CShMUFdTVFIpIGExcCwgYTFsZW4gLyAyKTsKKwkJciA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1Bf VVRGOCwgMCwgYXJnMSwgbGVuMSwgdzFwLCBsZW4xKTsKIAkJaWYgKCFyKQogCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJKGVycm1zZygiY291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvIFVURi0xNjog ZXJyb3IgY29kZSAlbHUiLAogCQkJCQkJCUdldExhc3RFcnJvcigpKSkpOwogCX0KLQkoKExQV1NU UikgYTFwKVtyXSA9IDA7CisJdzFwW3JdID0gMDsKIAogCWlmIChsZW4yID09IDApCiAJCXIgPSAw OwogCWVsc2UKIAl7Ci0JCXIgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGFyZzIs IGxlbjIsCi0JCQkJCQkJCShMUFdTVFIpIGEycCwgYTJsZW4gLyAyKTsKKwkJciA9IE11bHRpQnl0 ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgYXJnMiwgbGVuMiwgdzJwLCBsZW4yKTsKIAkJaWYgKCFy KQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycm1zZygiY291bGQgbm90IGNvbnZlcnQgc3Ry aW5nIHRvIFVURi0xNjogZXJyb3IgY29kZSAlbHUiLAogCQkJCQkJCUdldExhc3RFcnJvcigpKSkp OwogCX0KLQkoKExQV1NUUikgYTJwKVtyXSA9IDA7CisJdzJwW3JdID0gMDsKIAogCWVycm5vID0g MDsKLQlyZXN1bHQgPSB3Y3Njb2xsX2woKExQV1NUUikgYTFwLCAoTFBXU1RSKSBhMnAsIGxvY2Fs ZS0+bHQpOworCXJlc3VsdCA9IHdjc2NvbGxfbCh3MXAsIHcycCwgbG9jYWxlLT5sdCk7CiAJaWYg KHJlc3VsdCA9PSAyMTQ3NDgzNjQ3KQkvKiBfTkxTQ01QRVJST1I7IG1pc3NpbmcgZnJvbSBtaW5n dyBoZWFkZXJzICovCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycm1zZygiY291bGQgbm90IGNv bXBhcmUgVW5pY29kZSBzdHJpbmdzOiAlbSIpKSk7CiAKLQlpZiAoYnVmICE9IHNidWYpCi0JCXBm cmVlKGJ1Zik7CisJcGdfc3RhY2tfZnJlZSh3MXApOworCXBnX3N0YWNrX2ZyZWUodzJwKTsKIAog CXJldHVybiByZXN1bHQ7CiB9CkBAIC0xMjg5LDggKzEyNDcsMTIgQEAgY2hhcjJ3Y2hhcih3Y2hh cl90ICp0bywgc2l6ZV90IHRvbGVuLCBjb25zdCBjaGFyICpmcm9tLCBzaXplX3QgZnJvbWxlbiwK IAllbHNlCiAjZW5kaWYJCQkJCQkJLyogV0lOMzIgKi8KIAl7CisJCWNoYXIJICAgKnN0cjsKKwor CQlERUNMQVJFX1BHX1NUQUNLX1NJWkUoTE9DQUxFX1NUQUNLX1NJWkUpOworCiAJCS8qIG1ic3Rv d2NzIHJlcXVpcmVzIGVuZGluZyAnXDAnICovCi0JCWNoYXIJICAgKnN0ciA9IHBuc3RyZHVwKGZy b20sIGZyb21sZW4pOworCQlzdHIgPSBwZ19zdGFja19zdHJkdXBfd2l0aF9sZW4oZnJvbSwgZnJv bWxlbik7CiAKIAkJaWYgKGxvYyA9PSAobG9jYWxlX3QpIDApCiAJCXsKQEAgLTEzMDMsNyArMTI2 NSw3IEBAIGNoYXIyd2NoYXIod2NoYXJfdCAqdG8sIHNpemVfdCB0b2xlbiwgY29uc3QgY2hhciAq ZnJvbSwgc2l6ZV90IGZyb21sZW4sCiAJCQlyZXN1bHQgPSBtYnN0b3djc19sKHRvLCBzdHIsIHRv bGVuLCBsb2MpOwogCQl9CiAKLQkJcGZyZWUoc3RyKTsKKwkJcGdfc3RhY2tfZnJlZShzdHIpOwog CX0KIAogCWlmIChyZXN1bHQgPT0gLTEpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9w Z19sb2NhbGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oCmluZGV4IDQ0NDM1MGJi ODAzLi4zNzdkNDdmZjQ5ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxl LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKQEAgLTE3LDYgKzE3LDEyIEBA CiAvKiB1c2UgZm9yIGxpYmMgbG9jYWxlIG5hbWVzICovCiAjZGVmaW5lIExPQ0FMRV9OQU1FX0JV RkxFTiAxMjgKIAorLyoKKyAqIFRoZSBkZWZhdWx0IGxpbWl0IGZvciBERUNMQVJFX1BHX1NUQUNL KCkgaXMgdmVyeSBsb3cuICBUaGUgY29kZSBpbiB0aGlzCisgKiBtb2R1bGUgcmVxdWVzdHMgYSBj dXN0b20gc2l6ZSBmb3IgdGVtcG9yYXJ5IHN0cmluZyBjb252ZXJzaW9ucy4KKyAqLworI2RlZmlu ZSBMT0NBTEVfU1RBQ0tfU0laRSAxMDI0CisKIC8qCiAgKiBNYXhpbXVtIG51bWJlciBvZiBieXRl cyBuZWVkZWQgdG8gbWFwIGEgc2luZ2xlIGNvZGVwb2ludC4gVXNlZnVsIGZvcgogICogbWFwcGlu ZyBhbmQgcHJvY2Vzc2luZyBhIHNpbmdsZSBpbnB1dCBjb2RlcG9pbnQgYXQgYSB0aW1lIHdpdGgg YQotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002715e1064d2b7e78 Content-Type: application/octet-stream; name="v4-0004-Provide-PG_STACK_DIRECTION-configuration-macro.patch" Content-Disposition: attachment; filename="v4-0004-Provide-PG_STACK_DIRECTION-configuration-macro.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtg4dp23 RnJvbSBkNmIyZDdmNzM5ODM5MmZlNzY1Y2VlZmI3ODY5ZGM2ZWM0ZDc1N2Y0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNCBNYXIgMjAyNiAxODoxMjo1NCArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjQg MDQvMjFdIFByb3ZpZGUgUEdfU1RBQ0tfRElSRUNUSU9OIGNvbmZpZ3VyYXRpb24gbWFjcm8uCgpB bGwgbW9kZXJuIGFyY2hpdGVjdHVyZXMgYW5kIEFCSXMgaGF2ZSBzdGFja3MgdGhhdCBncm93IGRv d253YXJkLgpEZWZpbmUgdGhpcyBpbiBwZ19jb25maWdfbWFudWFsLmgsIGluc3RlYWQgb2YgYXNz dW1pbmcgaXQgY291bGQgZ28KZWl0aGVyIHdheSBpbiBldmVyeSBydW4tdGltZSBjaGVjayBwZXJm b3JtZWQgaW4gc3RhY2tfZGVwdGguYy4KCkEgcHJvcG9zZWQgcGF0Y2ggd291bGQgbWFrZSBncmVh dGVyIHVzZSBvZiB0aGlzIGluZm9ybWF0aW9uIGF0CmNvbXBpbGUgdGltZS4KCkFuIGF1dG9tYXRp YyB3YXkgb2YgZGV0ZXJtaW5pbmcgdGhlIHZhbHVlIGF0IGNvbXBpbGUtdGltZSBjb3VsZCBhbHdh eXMKYmUgZGV2ZWxvcGVkIGlmIGFub3RoZXIgc3lzdGVtIHdpdGggdXB3YXJkLWdyb3dpbmctc3Rh Y2sgZXZlciBhcHBlYXJzLgoKUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9zdGFja19kZXB0aC5jIHwgMTAgKysrKysrKystLQogc3JjL2luY2x1ZGUv cGdfY29uZmlnX21hbnVhbC5oICAgICAgIHwgIDYgKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE0 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9zdGFja19kZXB0aC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9zdGFja19k ZXB0aC5jCmluZGV4IDYxYTA3Y2Y4MjRlLi5jNmFlZWU1ZjQ3NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9zdGFja19kZXB0aC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2Mvc3RhY2tfZGVwdGguYwpAQCAtMTE4LDkgKzExOCwxNSBAQCBzdGFja19pc190b29fZGVlcCh2 b2lkKQogCiAJLyoKIAkgKiBUYWtlIGFicyB2YWx1ZSwgc2luY2Ugc3RhY2tzIGdyb3cgdXAgb24g c29tZSBtYWNoaW5lcywgZG93biBvbiBvdGhlcnMKKwkgKiAoaGlzdG9yaWNhbCkuCiAJICovCi0J aWYgKHN0YWNrX2RlcHRoIDwgMCkKLQkJc3RhY2tfZGVwdGggPSAtc3RhY2tfZGVwdGg7CisJc3Rh Y2tfZGVwdGggKj0gLShQR19TVEFDS19ESVJFQ1RJT04pOworCisJLyoKKwkgKiBJZiB0aGlzIGFz c2VydGlvbiBmYWlscywgZWl0aGVyIFBHX1NUQUNLX0RJUkVDVElPTiBpcyB3cm9uZyBvciB0aGlz CisJICogc3lzdGVtIGRvZXNuJ3QgaGF2ZSBhIHRyYWRpdGlvbmFsIHN0YWNrIGFzIHdlIGV4cGVj dC4KKwkgKi8KKwlBc3NlcnQoc3RhY2tfZGVwdGggPj0gMCk7CiAKIAkvKgogCSAqIFRyb3VibGU/ CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmggYi9zcmMvaW5jbHVk ZS9wZ19jb25maWdfbWFudWFsLmgKaW5kZXggNTIxYjQ5Yjg4ODguLmFiZTM3MWY1ZDY5IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmgKKysrIGIvc3JjL2luY2x1ZGUv cGdfY29uZmlnX21hbnVhbC5oCkBAIC0yMjIsNiArMjIyLDEyIEBACiAgKi8KICNkZWZpbmUgUEdf SU9fQUxJR05fU0laRQkJNDA5NgogCisvKgorICogQXNzdW1lZCBkaXJlY3Rpb24gb2YgdGhlIHN0 YWNrLCAtMSBvciArMS4gIEhpc3RvcmljYWxseSB0aGlzIHZhcmllZCwgYnV0IGFsbAorICogbW9k ZXJuIHN5c3RlbXMgaGF2ZSBzdGFja3MgdGhhdCBncm93IGRvd253YXJkLgorICovCisjZGVmaW5l IFBHX1NUQUNLX0RJUkVDVElPTgkJLTEKKwogLyoKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBUaGUg Zm9sbG93aW5nIHN5bWJvbHMgYXJlIGZvciBlbmFibGluZyBkZWJ1Z2dpbmcgY29kZSwgbm90IGZv cgotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002715e1064d2b7e78 Content-Type: application/octet-stream; name="v4-0005-Refactor-check_stack_depth-mechanism.patch" Content-Disposition: attachment; filename="v4-0005-Refactor-check_stack_depth-mechanism.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtg4i724 RnJvbSA3ZDc0Y2U1ZDYyOTJmYThlNGM5ZTc4NWRiYTUwZTEwODI3ZjdmODhjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgNiBNYXIgMjAyNiAyMDo1MzoyMyArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjQg MDUvMjFdIFJlZmFjdG9yIGNoZWNrX3N0YWNrX2RlcHRoKCkgbWVjaGFuaXNtLgoKKiBUaGUgY2hl Y2sgaXMgbm93IGlubGluZS4KKiBfX2J1aWx0aW5fc3RhY2tfYWRkcmVzcygpIGlzIHVzZWQgaWYg YXZhaWxhYmxlLgoqIFRoZSBzdGFjayBpcyBub3cgYXNzdW1lZCB0byBncm93IGluIFBHX1NUQUNL X0RJUkVDVElPTi4KKiBBIG5ldyAic29mdCIgbGltaXQgaXMgZXhwb3NlZCwgZm9yIGEgbGF0ZXIg cGF0Y2ggdG8gdXNlLgoKVW5mb3J0dW5hdGVseSBIQVZFX19CVUlMVElOX1NUQUNLX0FERFJFU1Mg Y2F1c2VzIHByb2JsZW1zIHdoZW4gYnVpbGRpbmcKYml0Y29kZSBpZiBjb25maWd1cmUgd2FzIHJ1 biBhZ2FpbnN0IGdjYywgYmVjYXVzZSBDbGFuZyBvbmx5IGFkZGVkIHRoaXMKYnVpbHRpbiBpbiBy ZWNlbnQgdmVyc2lvbiAyMi4gIERlZmVuZCBhZ2FpbnN0IHRoYXQgd2l0aCBhbiBleHBsaWNpdAp0 ZXN0IGZvciBDbGFuZy4KLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMzggKysrKysrKysrCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL3V0aWxzL21pc2Mvc3RhY2tfZGVwdGguYyB8IDExMyArKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0KIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICB8ICA1NCArKysr KysrKysrKystCiBzcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiAgICAgICAgICAgfCAgIDMgKwog NiBmaWxlcyBjaGFuZ2VkLCAxMzQgaW5zZXJ0aW9ucygrKSwgNzYgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IGY2OTMzMWYwNzQ4Li4yYjgwYjYy ZGZmZSAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMTYwOTQsNiAr MTYwOTQsNDQgQEAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBIQVZFX19CVUlM VElOX0ZSQU1FX0FERFJFU1MgMQogX0FDRU9GCiAKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfX2J1aWx0aW5fc3RhY2tfYWRkcmVzcyIg PiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgX19idWlsdGluX3N0YWNrX2FkZHJlc3MuLi4g IiA+JjY7IH0KK2lmICR7cGdhY19jdl9fYnVpbHRpbl9zdGFja19hZGRyZXNzKzp9IGZhbHNlOyB0 aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLwor Cit2b2lkICoKK2NhbGxfX2J1aWx0aW5fc3RhY2tfYWRkcmVzcyh2b2lkKQoreworICAgIHJldHVy biBfX2J1aWx0aW5fc3RhY2tfYWRkcmVzcygpOworfQoraW50CittYWluICgpCit7CisKKyAgOwor ICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRo ZW4gOgorICBwZ2FjX2N2X19idWlsdGluX3N0YWNrX2FkZHJlc3M9eWVzCitlbHNlCisgIHBnYWNf Y3ZfX2J1aWx0aW5fc3RhY2tfYWRkcmVzcz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4k YWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRwZ2FjX2N2X19idWlsdGluX3N0YWNrX2FkZHJlc3MiID4mNQorJGFzX2VjaG8gIiRwZ2Fj X2N2X19idWlsdGluX3N0YWNrX2FkZHJlc3MiID4mNjsgfQoraWYgdGVzdCB4IiR7cGdhY19jdl9f YnVpbHRpbl9zdGFja19hZGRyZXNzfSIgPSB4eWVzIDsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5o IDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfX0JVSUxUSU5fU1RBQ0tfQUREUkVTUyAxCitfQUNFT0YK KwogZmkKIAogIyBXZSByZXF1aXJlIDY0LWJpdCBmc2Vla28oKSB0byBiZSBhdmFpbGFibGUsIGJ1 dCBydW4gdGhpcyBjaGVjayBhbnl3YXkKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZp Z3VyZS5hYwppbmRleCBmZWFkOWE2Y2U5OS4uZTBjNGEwODlmNjEgMTAwNjQ0Ci0tLSBhL2NvbmZp Z3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTE4NjcsNiArMTg2Nyw3IEBAIFBHQUNfQ0hF Q0tfQlVJTFRJTl9GVU5DKFtfX2J1aWx0aW5fY3R6XSwgW3Vuc2lnbmVkIGludCB4XSkKICMgX19i dWlsdGluX2ZyYW1lX2FkZHJlc3MgbWF5IGRyYXcgYSBkaWFnbm9zdGljIGZvciBub24tY29uc3Rh bnQgYXJndW1lbnQsCiAjIHNvIGl0IG5lZWRzIGEgZGlmZmVyZW50IHRlc3QgZnVuY3Rpb24uCiBQ R0FDX0NIRUNLX0JVSUxUSU5fRlVOQ19QVFIoW19fYnVpbHRpbl9mcmFtZV9hZGRyZXNzXSwgWzBd KQorUEdBQ19DSEVDS19CVUlMVElOX0ZVTkNfUFRSKFtfX2J1aWx0aW5fc3RhY2tfYWRkcmVzc10s IFtdKQogCiAjIFdlIHJlcXVpcmUgNjQtYml0IGZzZWVrbygpIHRvIGJlIGF2YWlsYWJsZSwgYnV0 IHJ1biB0aGlzIGNoZWNrIGFueXdheQogIyBpbiBjYXNlIGl0IGZpbmRzIHRoYXQgX0xBUkdFRklM RV9TT1VSQ0UgaGFzIHRvIGJlICNkZWZpbmUnZCBmb3IgdGhhdC4KZGlmZiAtLWdpdCBhL21lc29u LmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggZjdhODdlZGNjOTQuLjEyZGM5ODlhNWFiIDEwMDY0 NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAtMjA0OSw2ICsyMDQ5LDcg QEAgYnVpbHRpbnMgPSBbCiAgICdjdHonLAogICAnY29uc3RhbnRfcCcsCiAgICdmcmFtZV9hZGRy ZXNzJywKKyAgJ3N0YWNrX2FkZHJlc3MnLAogICAndW5yZWFjaGFibGUnLAogXQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3N0YWNrX2RlcHRoLmMgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL3N0YWNrX2RlcHRoLmMKaW5kZXggYzZhZWVlNWY0NzUuLmFlYTU4OWUxYTI3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3N0YWNrX2RlcHRoLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9zdGFja19kZXB0aC5jCkBAIC0yNSwxNSArMjUsMjggQEAKIC8q IEdVQyB2YXJpYWJsZSBmb3IgbWF4aW11bSBzdGFjayBkZXB0aCAobWVhc3VyZWQgaW4ga2lsb2J5 dGVzKSAqLwogaW50CQkJbWF4X3N0YWNrX2RlcHRoID0gMTAwOwogCi0vKiBtYXhfc3RhY2tfZGVw dGggY29udmVydGVkIHRvIGJ5dGVzIGZvciBzcGVlZCBvZiBjaGVja2luZyAqLwotc3RhdGljIHNz aXplX3QgbWF4X3N0YWNrX2RlcHRoX2J5dGVzID0gMTAwICogKHNzaXplX3QpIDEwMjQ7Ci0KIC8q Ci0gKiBTdGFjayBiYXNlIHBvaW50ZXIgLS0gaW5pdGlhbGl6ZWQgYnkgc2V0X3N0YWNrX2Jhc2Uo KSwgd2hpY2gKLSAqIHNob3VsZCBiZSBjYWxsZWQgZnJvbSBtYWluKCkuCisgKiBUaHJlc2hvbGRz IC0tIGluaXRpYWxpemVkIGJ5IHNldF9zdGFja19iYXNlKCkuICBUaGVzZSBoYXZlIGV4dGVybmFs IGxpbmthZ2UKKyAqIHNvIHRoZXkgY2FuIGJlIHVzZWQgYnkgaW5saW5lZCBjb2RlLgogICovCi1z dGF0aWMgY2hhciAqc3RhY2tfYmFzZV9wdHIgPSBOVUxMOworY29uc3Qgdm9pZCAqc3RhY2tfYmFz ZV9wdHIgPSBOVUxMOworY29uc3Qgdm9pZCAqc3RhY2tfc29mdF9saW1pdF9wdHIgPSBOVUxMOwor Y29uc3Qgdm9pZCAqc3RhY2tfaGFyZF9saW1pdF9wdHIgPSBOVUxMOworCisKK3N0YXRpYyB2b2lk Citjb21wdXRlX2xpbWl0X3B0cnMoaW50IGtiKQoreworCXNzaXplX3QJCWJ5dGVzID0ga2IgKiAo c3NpemVfdCkgMTAyNDsKKworCS8qIEFkdmVydGlzZSBhIHNvZnQgbGltaXQgaGFsZndheSB0aHJv dWdoIHRoZSBhbGxvd2VkIHNpemUuICovCisJc3RhY2tfc29mdF9saW1pdF9wdHIgPSAoY29uc3Qg Y2hhciAqKSBzdGFja19iYXNlX3B0ciArCisJCShieXRlcyAvIDIpICogUEdfU1RBQ0tfRElSRUNU SU9OOwogCisJLyogVGhpcyBpcyB0aGUgc2l6ZSBhdCB3aGljaCBjaGVja19zdGFja19kZXB0aCgp IHdpbGwgZmFpbC4gKi8KKwlzdGFja19oYXJkX2xpbWl0X3B0ciA9IChjb25zdCBjaGFyICopIHN0 YWNrX2Jhc2VfcHRyICsKKwkJYnl0ZXMgKiBQR19TVEFDS19ESVJFQ1RJT047Cit9CiAKIC8qCiAg KiBzZXRfc3RhY2tfYmFzZTogc2V0IHVwIHJlZmVyZW5jZSBwb2ludCBmb3Igc3RhY2sgZGVwdGgg Y2hlY2tpbmcKQEAgLTQ4LDcgKzYxLDcgQEAgc2V0X3N0YWNrX2Jhc2Uodm9pZCkKICNlbmRpZgog CXBnX3N0YWNrX2Jhc2VfdCBvbGQ7CiAKLQlvbGQgPSBzdGFja19iYXNlX3B0cjsKKwlvbGQgPSAo cGdfc3RhY2tfYmFzZV90KSBzdGFja19iYXNlX3B0cjsKIAogCS8qCiAJICogU2V0IHVwIHJlZmVy ZW5jZSBwb2ludCBmb3Igc3RhY2sgZGVwdGggY2hlY2tpbmcuICBPbiByZWNlbnQgZ2NjIHdlIHVz ZQpAQCAtNjEsNiArNzQsOCBAQCBzZXRfc3RhY2tfYmFzZSh2b2lkKQogCXN0YWNrX2Jhc2VfcHRy ID0gJnN0YWNrX2Jhc2U7CiAjZW5kaWYKIAorCWNvbXB1dGVfbGltaXRfcHRycyhtYXhfc3RhY2tf ZGVwdGgpOworCiAJcmV0dXJuIG9sZDsKIH0KIApAQCAtNzYsNzMgKzkxLDExIEBAIHNldF9zdGFj a19iYXNlKHZvaWQpCiB2b2lkCiByZXN0b3JlX3N0YWNrX2Jhc2UocGdfc3RhY2tfYmFzZV90IGJh c2UpCiB7Ci0Jc3RhY2tfYmFzZV9wdHIgPSBiYXNlOwotfQotCi0KLS8qCi0gKiBjaGVja19zdGFj a19kZXB0aC9zdGFja19pc190b29fZGVlcDogY2hlY2sgZm9yIGV4Y2Vzc2l2ZWx5IGRlZXAgcmVj dXJzaW9uCi0gKgotICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIHNvbWVwbGFjZSBpbiBhbnkgcmVj dXJzaXZlIHJvdXRpbmUgdGhhdCBtaWdodCBwb3NzaWJseQotICogcmVjdXJzZSBkZWVwIGVub3Vn aCB0byBvdmVyZmxvdyB0aGUgc3RhY2suICBNb3N0IFVuaXhlbiB0cmVhdCBzdGFjawotICogb3Zl cmZsb3cgYXMgYW4gdW5yZWNvdmVyYWJsZSBTSUdTRUdWLCBzbyB3ZSB3YW50IHRvIGVycm9yIG91 dCBvdXJzZWx2ZXMKLSAqIGJlZm9yZSBoaXR0aW5nIHRoZSBoYXJkd2FyZSBsaW1pdC4KLSAqCi0g KiBjaGVja19zdGFja19kZXB0aCgpIGp1c3QgdGhyb3dzIGFuIGVycm9yIHN1bW1hcmlseS4gIHN0 YWNrX2lzX3Rvb19kZWVwKCkKLSAqIGNhbiBiZSB1c2VkIGJ5IGNvZGUgdGhhdCB3YW50cyB0byBo YW5kbGUgdGhlIGVycm9yIGNvbmRpdGlvbiBpdHNlbGYuCi0gKi8KLXZvaWQKLWNoZWNrX3N0YWNr X2RlcHRoKHZvaWQpCi17Ci0JaWYgKHN0YWNrX2lzX3Rvb19kZWVwKCkpCi0JewotCQllcmVwb3J0 KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfU1RBVEVNRU5UX1RPT19DT01QTEVYKSwKLQkJ CQkgZXJybXNnKCJzdGFjayBkZXB0aCBsaW1pdCBleGNlZWRlZCIpLAotCQkJCSBlcnJoaW50KCJJ bmNyZWFzZSB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgXCJtYXhfc3RhY2tfZGVwdGhcIiAo Y3VycmVudGx5ICVka0IpLCAiCi0JCQkJCQkgImFmdGVyIGVuc3VyaW5nIHRoZSBwbGF0Zm9ybSdz IHN0YWNrIGRlcHRoIGxpbWl0IGlzIGFkZXF1YXRlLiIsCi0JCQkJCQkgbWF4X3N0YWNrX2RlcHRo KSkpOwotCX0KLX0KLQotYm9vbAotc3RhY2tfaXNfdG9vX2RlZXAodm9pZCkKLXsKLQljaGFyCQlz dGFja190b3BfbG9jOwotCXNzaXplX3QJCXN0YWNrX2RlcHRoOwotCi0JLyoKLQkgKiBDb21wdXRl IGRpc3RhbmNlIGZyb20gcmVmZXJlbmNlIHBvaW50IHRvIG15IGxvY2FsIHZhcmlhYmxlcwotCSAq LwotCXN0YWNrX2RlcHRoID0gKHNzaXplX3QpIChzdGFja19iYXNlX3B0ciAtICZzdGFja190b3Bf bG9jKTsKKwlzdGFja19iYXNlX3B0ciA9IChjb25zdCB2b2lkICopIGJhc2U7CiAKLQkvKgotCSAq IFRha2UgYWJzIHZhbHVlLCBzaW5jZSBzdGFja3MgZ3JvdyB1cCBvbiBzb21lIG1hY2hpbmVzLCBk b3duIG9uIG90aGVycwotCSAqIChoaXN0b3JpY2FsKS4KLQkgKi8KLQlzdGFja19kZXB0aCAqPSAt KFBHX1NUQUNLX0RJUkVDVElPTik7Ci0KLQkvKgotCSAqIElmIHRoaXMgYXNzZXJ0aW9uIGZhaWxz LCBlaXRoZXIgUEdfU1RBQ0tfRElSRUNUSU9OIGlzIHdyb25nIG9yIHRoaXMKLQkgKiBzeXN0ZW0g ZG9lc24ndCBoYXZlIGEgdHJhZGl0aW9uYWwgc3RhY2sgYXMgd2UgZXhwZWN0LgotCSAqLwotCUFz c2VydChzdGFja19kZXB0aCA+PSAwKTsKLQotCS8qCi0JICogVHJvdWJsZT8KLQkgKgotCSAqIFRo ZSB0ZXN0IG9uIHN0YWNrX2Jhc2VfcHRyIHByZXZlbnRzIHVzIGZyb20gZXJyb3Jpbmcgb3V0IGlm IGNhbGxlZAotCSAqIGJlZm9yZSB0aGF0J3MgYmVlbiBzZXQuICBMb2dpY2FsbHkgaXQgc2hvdWxk IGJlIGRvbmUgZmlyc3QsIGJ1dCBwdXR0aW5nCi0JICogaXQgbGFzdCBhdm9pZHMgd2FzdGluZyBj eWNsZXMgZHVyaW5nIG5vcm1hbCBjYXNlcy4KLQkgKi8KLQlpZiAoc3RhY2tfZGVwdGggPiBtYXhf c3RhY2tfZGVwdGhfYnl0ZXMgJiYKLQkJc3RhY2tfYmFzZV9wdHIgIT0gTlVMTCkKLQkJcmV0dXJu IHRydWU7Ci0KLQlyZXR1cm4gZmFsc2U7CisJY29tcHV0ZV9saW1pdF9wdHJzKG1heF9zdGFja19k ZXB0aCk7CiB9CiAKLQogLyogR1VDIGNoZWNrIGhvb2sgZm9yIG1heF9zdGFja19kZXB0aCAqLwog Ym9vbAogY2hlY2tfbWF4X3N0YWNrX2RlcHRoKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1 Y1NvdXJjZSBzb3VyY2UpCkBAIC0xNjAsMTMgKzExMywyNSBAQCBjaGVja19tYXhfc3RhY2tfZGVw dGgoaW50ICpuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSkKIAlyZXR1cm4g dHJ1ZTsKIH0KIAorLyoKKyAqIE91dC1vZi1saW5lIHBhcnQgb2YgY2hlY2tfc3RhY2tfZGVwdGgo KS4KKyAqLwordm9pZAorcmVwb3J0X3N0YWNrX2lzX3Rvb19kZWVwKHZvaWQpCit7CisJZXJlcG9y dChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfU1RBVEVNRU5UX1RPT19DT01QTEVYKSwKKwkJ CSBlcnJtc2coInN0YWNrIGRlcHRoIGxpbWl0IGV4Y2VlZGVkIiksCisJCQkgZXJyaGludCgiSW5j cmVhc2UgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIFwibWF4X3N0YWNrX2RlcHRoXCIgKGN1 cnJlbnRseSAlZGtCKSwgIgorCQkJCQkgImFmdGVyIGVuc3VyaW5nIHRoZSBwbGF0Zm9ybSdzIHN0 YWNrIGRlcHRoIGxpbWl0IGlzIGFkZXF1YXRlLiIsCisJCQkJCSBtYXhfc3RhY2tfZGVwdGgpKSk7 Cit9CisKIC8qIEdVQyBhc3NpZ24gaG9vayBmb3IgbWF4X3N0YWNrX2RlcHRoICovCiB2b2lkCiBh c3NpZ25fbWF4X3N0YWNrX2RlcHRoKGludCBuZXd2YWwsIHZvaWQgKmV4dHJhKQogewotCXNzaXpl X3QJCW5ld3ZhbF9ieXRlcyA9IG5ld3ZhbCAqIChzc2l6ZV90KSAxMDI0OwotCi0JbWF4X3N0YWNr X2RlcHRoX2J5dGVzID0gbmV3dmFsX2J5dGVzOworCWNvbXB1dGVfbGltaXRfcHRycyhuZXd2YWwp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5j bHVkZS9taXNjYWRtaW4uaAppbmRleCBmMTZmMzU2NTliOS4uMjhjZmRkMDU3ODIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5o CkBAIC0yOTMsMTUgKzI5Myw2NSBAQCBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBWYWN1dW1Db3N0 QWN0aXZlOwogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9zdGFja19kZXB0aDsKIAorZXh0 ZXJuIFBHRExMSU1QT1JUIGNvbnN0IHZvaWQgKnN0YWNrX2Jhc2VfcHRyOworZXh0ZXJuIFBHRExM SU1QT1JUIGNvbnN0IHZvaWQgKnN0YWNrX3NvZnRfbGltaXRfcHRyOworZXh0ZXJuIFBHRExMSU1Q T1JUIGNvbnN0IHZvaWQgKnN0YWNrX2hhcmRfbGltaXRfcHRyOworCiAvKiBSZXF1aXJlZCBkYXls aWdodCBiZXR3ZWVuIG1heF9zdGFja19kZXB0aCBhbmQgdGhlIGtlcm5lbCBsaW1pdCwgaW4gYnl0 ZXMgKi8KICNkZWZpbmUgU1RBQ0tfREVQVEhfU0xPUCAoNTEyICogMTAyNCkKIAorLyogQ2hlY2sg aWYgc3RhY2sgcG9pbnRlciBwMSBpcyBkZWVwZXIgdGhhbiBwMi4gKi8KK3N0YXRpYyBpbmxpbmUg Ym9vbAorc3RhY2tfcHRyX2RlZXBlcl9wKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikK K3sKKwljb25zdCBjaGFyICpjMSA9IChjb25zdCBjaGFyICopIHAxOworCWNvbnN0IGNoYXIgKmMy ID0gKGNvbnN0IGNoYXIgKikgcDI7CisKKwlpZiAoUEdfU1RBQ0tfRElSRUNUSU9OIDwgMCkKKwkJ cmV0dXJuIGMxIDwgYzI7CisJZWxzZQorCQlyZXR1cm4gYzEgPiBjMjsKK30KKworLyogQ2hlY2sg aWYgdGhlIHN0YWNrIGhhcyBleGNlZWRlZCB0aGUgY29uZmlndXJlZCBoYXJkIGxpbWl0LiAqLwor c3RhdGljIGlubGluZSBib29sCitzdGFja19pc190b29fZGVlcCh2b2lkKQoreworI2lmIGRlZmlu ZWQoSEFWRV9fQlVJTFRJTl9TVEFDS19BRERSRVNTKSAmJgkJCQkJCQkJXAorCSghZGVmaW5lZChf X2NsYW5nX18pIHx8IF9fY2xhbmdfbWFqb3JfXyA+PSAyMikKKwljb25zdCBjaGFyICpzcCA9IChj b25zdCBjaGFyICopIF9fYnVpbHRpbl9zdGFja19hZGRyZXNzKCk7CisjZWxzZQorCWNoYXIJCWM7 CisJY29uc3QgY2hhciAqc3AgPSAmYzsKKyNlbmRpZgorCisJcmV0dXJuIHN0YWNrX3B0cl9kZWVw ZXJfcChzcCwgc3RhY2tfaGFyZF9saW1pdF9wdHIpOworfQorCitleHRlcm4gdm9pZCByZXBvcnRf c3RhY2tfaXNfdG9vX2RlZXAodm9pZCk7CisKKy8qCisgKiBjaGVja19zdGFja19kZXB0aC9zdGFj a19pc190b29fZGVlcDogY2hlY2sgZm9yIGV4Y2Vzc2l2ZWx5IGRlZXAgcmVjdXJzaW9uCisgKgor ICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIHNvbWVwbGFjZSBpbiBhbnkgcmVjdXJzaXZlIHJvdXRp bmUgdGhhdCBtaWdodCBwb3NzaWJseQorICogcmVjdXJzZSBkZWVwIGVub3VnaCB0byBvdmVyZmxv dyB0aGUgc3RhY2suICBNb3N0IFVuaXhlbiB0cmVhdCBzdGFjaworICogb3ZlcmZsb3cgYXMgYW4g dW5yZWNvdmVyYWJsZSBTSUdTRUdWLCBzbyB3ZSB3YW50IHRvIGVycm9yIG91dCBvdXJzZWx2ZXMK KyAqIGJlZm9yZSBoaXR0aW5nIHRoZSBoYXJkd2FyZSBsaW1pdC4KKyAqCisgKiBjaGVja19zdGFj a19kZXB0aCgpIGp1c3QgdGhyb3dzIGFuIGVycm9yIHN1bW1hcmlseS4gIHN0YWNrX2lzX3Rvb19k ZWVwKCkKKyAqIGNhbiBiZSB1c2VkIGJ5IGNvZGUgdGhhdCB3YW50cyB0byBoYW5kbGUgdGhlIGVy cm9yIGNvbmRpdGlvbiBpdHNlbGYuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorY2hlY2tfc3Rh Y2tfZGVwdGgodm9pZCkKK3sKKwlpZiAodW5saWtlbHkoc3RhY2tfaXNfdG9vX2RlZXAoKSkpCisJ CXJlcG9ydF9zdGFja19pc190b29fZGVlcCgpOworfQorCiB0eXBlZGVmIGNoYXIgKnBnX3N0YWNr X2Jhc2VfdDsKIAogZXh0ZXJuIHBnX3N0YWNrX2Jhc2VfdCBzZXRfc3RhY2tfYmFzZSh2b2lkKTsK IGV4dGVybiB2b2lkIHJlc3RvcmVfc3RhY2tfYmFzZShwZ19zdGFja19iYXNlX3QgYmFzZSk7Ci1l eHRlcm4gdm9pZCBjaGVja19zdGFja19kZXB0aCh2b2lkKTsKLWV4dGVybiBib29sIHN0YWNrX2lz X3Rvb19kZWVwKHZvaWQpOwogZXh0ZXJuIHNzaXplX3QgZ2V0X3N0YWNrX2RlcHRoX3JsaW1pdCh2 b2lkKTsKIAogLyogaW4gdGNvcC91dGlsaXR5LmMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BnX2NvbmZpZy5oLmluIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KaW5kZXggNzkzNzlh NGQxMjUuLmM0NTc0NDA2ZTA0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5p bgorKysgYi9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgpAQCAtNTM4LDYgKzUzOCw5IEBACiAv KiBEZWZpbmUgdG8gMSBpZiB5b3VyIGNvbXBpbGVyIHVuZGVyc3RhbmRzIF9fYnVpbHRpbl8kb3Bf b3ZlcmZsb3cuICovCiAjdW5kZWYgSEFWRV9fQlVJTFRJTl9PUF9PVkVSRkxPVwogCisvKiBEZWZp bmUgdG8gMSBpZiB5b3VyIGNvbXBpbGVyIHVuZGVyc3RhbmRzIF9fYnVpbHRpbl9zdGFja19hZGRy ZXNzLiAqLworI3VuZGVmIEhBVkVfX0JVSUxUSU5fU1RBQ0tfQUREUkVTUworCiAvKiBEZWZpbmUg dG8gMSBpZiB5b3VyIGNvbXBpbGVyIHVuZGVyc3RhbmRzIF9fYnVpbHRpbl90eXBlc19jb21wYXRp YmxlX3AuICovCiAjdW5kZWYgSEFWRV9fQlVJTFRJTl9UWVBFU19DT01QQVRJQkxFX1AKIAotLSAK Mi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002715e1064d2b7e78 Content-Type: application/octet-stream; name="v4-0006-Provide-way-for-macros-to-detect-PG_TRY-scope.patch" Content-Disposition: attachment; filename="v4-0006-Provide-way-for-macros-to-detect-PG_TRY-scope.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtg4nig5 RnJvbSAxODI1NzM3M2E2YTk3MmYxNTQzNTI5ODUyMzJlMTA1MWUwNzVkZWZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNCBNYXIgMjAyNiAxNzozMDo0NiArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjQg MDYvMjFdIFByb3ZpZGUgd2F5IGZvciBtYWNyb3MgdG8gZGV0ZWN0IFBHX1RSWSBzY29wZS4KCkZv ciBjb2RlIHRoYXQgY2FuJ3Qgd29yayBzYWZlbHkgYXJvdW5kIHNldGptcCgpL2xvbmdqbXAoKSBh bmQgdGh1cyBpbiBhClBHX1RSWS9DQVRDSC9GSU5BTExZIGJsb2NrLCBwcm92aWRlIGEgbWFjcm8K InBnX2luX2xleGljYWxfc2NvcGUoUEdfVFJZKSIgdGhhdCBjYW4gYmUgdGVzdGVkIGF0IGNvbXBp bGUgdGltZS4KLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICB8IDEwMSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICB8 ICAxMyArKysrKwogbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgIDkgKysrKwogc3JjL2lu Y2x1ZGUvYy5oICAgICAgICAgICAgfCAgMjcgKysrKysrKysrKwogc3JjL2luY2x1ZGUvcGdfY29u ZmlnLmguaW4gfCAgIDYgKysrCiBzcmMvaW5jbHVkZS91dGlscy9lbG9nLmggICB8ICAzNiArKysr KysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDE5MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0 IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDJiODBiNjJkZmZlLi5hNWVlNzFjZjcyOCAx MDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtNTk5Miw2ICs1OTkyLDEw NyBAQCBpZiB0ZXN0IHgiJHBnYWNfY3ZfcHJvZ19DWFhfY3h4ZmxhZ3NfX1dzaGFkb3dfY29tcGF0 aWJsZV9sb2NhbCIgPSB4InllcyI7IHRoZW4KIGZpCiAKIAorICAjIFdlIGFsc28gd2FudCB0byBt YWtlIHRoZSB1c2FnZSBvZiB0aGUgYWJvdmUgb3B0aW9ucyBhdmFpbGFibGUgdG8gbWFjcm9zLgor ICBOT1RfVEhFX0NGTEFHUz0iIgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIHdoZXRoZXIgJHtDQ30gc3VwcG9ydHMgLVdzaGFkb3c9Y29tcGF0aWJs ZS1sb2NhbCwgZm9yIE5PVF9USEVfQ0ZMQUdTIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdo ZXRoZXIgJHtDQ30gc3VwcG9ydHMgLVdzaGFkb3c9Y29tcGF0aWJsZS1sb2NhbCwgZm9yIE5PVF9U SEVfQ0ZMQUdTLi4uICIgPiY2OyB9CitpZiAke3BnYWNfY3ZfcHJvZ19DQ19jZmxhZ3NfX1dzaGFk b3dfY29tcGF0aWJsZV9sb2NhbCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2CitlbHNlCisgIHBnYWNfc2F2ZV9DRkxBR1M9JENGTEFHUworcGdhY19zYXZlX0ND PSRDQworQ0M9JHtDQ30KK0NGTEFHUz0iJHtOT1RfVEhFX0NGTEFHU30gLVdzaGFkb3c9Y29tcGF0 aWJsZS1sb2NhbCIKK2FjX3NhdmVfY193ZXJyb3JfZmxhZz0kYWNfY193ZXJyb3JfZmxhZworYWNf Y193ZXJyb3JfZmxhZz15ZXMKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh Y19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOwor ICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7 IHRoZW4gOgorICBwZ2FjX2N2X3Byb2dfQ0NfY2ZsYWdzX19Xc2hhZG93X2NvbXBhdGlibGVfbG9j YWw9eWVzCitlbHNlCisgIHBnYWNfY3ZfcHJvZ19DQ19jZmxhZ3NfX1dzaGFkb3dfY29tcGF0aWJs ZV9sb2NhbD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpl eHQgY29uZnRlc3QuJGFjX2V4dAorYWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2ZV9jX3dlcnJvcl9m bGFnCitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTIgorQ0M9IiRwZ2FjX3NhdmVfQ0MiCitmaQor eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2 X3Byb2dfQ0NfY2ZsYWdzX19Xc2hhZG93X2NvbXBhdGlibGVfbG9jYWwiID4mNQorJGFzX2VjaG8g IiRwZ2FjX2N2X3Byb2dfQ0NfY2ZsYWdzX19Xc2hhZG93X2NvbXBhdGlibGVfbG9jYWwiID4mNjsg fQoraWYgdGVzdCB4IiRwZ2FjX2N2X3Byb2dfQ0NfY2ZsYWdzX19Xc2hhZG93X2NvbXBhdGlibGVf bG9jYWwiID0geCJ5ZXMiOyB0aGVuCisgIE5PVF9USEVfQ0ZMQUdTPSIke05PVF9USEVfQ0ZMQUdT fSAtV3NoYWRvdz1jb21wYXRpYmxlLWxvY2FsIgorZmkKKworICBpZiB0ZXN0IC1uICIkTk9UX1RI RV9DRkxBR1MiOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFdBUk5JTkdfQ0NfU0hBRE9XX0NP TVBBVElCTEVfTE9DQUwgMSIgPj5jb25mZGVmcy5oCisKKyAgZmkKKyAgTk9UX1RIRV9DRkxBR1M9 IiIKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3 aGV0aGVyICR7Q1hYfSBzdXBwb3J0cyAtV3NoYWRvdz1jb21wYXRpYmxlLWxvY2FsLCBmb3IgTk9U X1RIRV9DRkxBR1MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAke0NYWH0gc3Vw cG9ydHMgLVdzaGFkb3c9Y29tcGF0aWJsZS1sb2NhbCwgZm9yIE5PVF9USEVfQ0ZMQUdTLi4uICIg PiY2OyB9CitpZiAke3BnYWNfY3ZfcHJvZ19DWFhfY3h4ZmxhZ3NfX1dzaGFkb3dfY29tcGF0aWJs ZV9sb2NhbCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Citl bHNlCisgIHBnYWNfc2F2ZV9DWFhGTEFHUz0kQ1hYRkxBR1MKK3BnYWNfc2F2ZV9DWFg9JENYWAor Q1hYPSR7Q1hYfQorQ1hYRkxBR1M9IiR7Tk9UX1RIRV9DRkxBR1N9IC1Xc2hhZG93PWNvbXBhdGli bGUtbG9jYWwiCithY19zYXZlX2N4eF93ZXJyb3JfZmxhZz0kYWNfY3h4X3dlcnJvcl9mbGFnCith Y19jeHhfd2Vycm9yX2ZsYWc9eWVzCithY19leHQ9Y3BwCithY19jcHA9JyRDWFhDUFAgJENQUEZM QUdTJworYWNfY29tcGlsZT0nJENYWCAtYyAkQ1hYRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRh Y19leHQgPiY1JworYWNfbGluaz0nJENYWCAtbyBjb25mdGVzdCRhY19leGVleHQgJENYWEZMQUdT ICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBp bGVyX2dudT0kYWNfY3ZfY3h4X2NvbXBpbGVyX2dudQorCitjYXQgY29uZmRlZnMuaCAtIDw8X0FD RU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFp biAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2N4eF90cnlf Y29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBwZ2FjX2N2X3Byb2dfQ1hYX2N4eGZsYWdzX19X c2hhZG93X2NvbXBhdGlibGVfbG9jYWw9eWVzCitlbHNlCisgIHBnYWNfY3ZfcHJvZ19DWFhfY3h4 ZmxhZ3NfX1dzaGFkb3dfY29tcGF0aWJsZV9sb2NhbD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRl c3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorYWNfZXh0PWMKK2Fj X2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxB R1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhl ZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1 JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCithY19jeHhfd2Vycm9y X2ZsYWc9JGFjX3NhdmVfY3h4X3dlcnJvcl9mbGFnCitDWFhGTEFHUz0iJHBnYWNfc2F2ZV9DWFhG TEFHUyIKK0NYWD0iJHBnYWNfc2F2ZV9DWFgiCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2X3Byb2dfQ1hYX2N4eGZsYWdzX19Xc2hh ZG93X2NvbXBhdGlibGVfbG9jYWwiID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X3Byb2dfQ1hYX2N4 eGZsYWdzX19Xc2hhZG93X2NvbXBhdGlibGVfbG9jYWwiID4mNjsgfQoraWYgdGVzdCB4IiRwZ2Fj X2N2X3Byb2dfQ1hYX2N4eGZsYWdzX19Xc2hhZG93X2NvbXBhdGlibGVfbG9jYWwiID0geCJ5ZXMi OyB0aGVuCisgIE5PVF9USEVfQ0ZMQUdTPSIke05PVF9USEVfQ0ZMQUdTfSAtV3NoYWRvdz1jb21w YXRpYmxlLWxvY2FsIgorZmkKKworICBpZiB0ZXN0IC1uICIkTk9UX1RIRV9DRkxBR1MiOyB0aGVu CisKKyRhc19lY2hvICIjZGVmaW5lIFdBUk5JTkdfQ1hYX1NIQURPV19DT01QQVRJQkxFX0xPQ0FM IDEiID4+Y29uZmRlZnMuaAorCisgIGZpCiAgICMgVGhpcyB3YXMgaW5jbHVkZWQgaW4gLVdhbGwv LVdmb3JtYXQgaW4gb2xkZXIgR0NDIHZlcnNpb25zCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAke0NDfSBzdXBwb3J0cyAtV2Zvcm1h dC1zZWN1cml0eSwgZm9yIENGTEFHUyIgPiY1CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9j b25maWd1cmUuYWMKaW5kZXggZTBjNGEwODlmNjEuLmIxM2NmYTE4MTNmIDEwMDY0NAotLS0gYS9j b25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC01NzcsNiArNTc3LDE5IEBAIGlmIHRl c3QgIiRHQ0MiID0geWVzIC1hICIkSUNDIiA9IG5vOyB0aGVuCiAgIFBHQUNfUFJPR19DWFhfQ0ZM QUdTX09QVChbLVdjYXN0LWZ1bmN0aW9uLXR5cGVdKQogICBQR0FDX1BST0dfQ0NfQ0ZMQUdTX09Q VChbLVdzaGFkb3c9Y29tcGF0aWJsZS1sb2NhbF0pCiAgIFBHQUNfUFJPR19DWFhfQ0ZMQUdTX09Q VChbLVdzaGFkb3c9Y29tcGF0aWJsZS1sb2NhbF0pCisgICMgV2UgYWxzbyB3YW50IHRvIG1ha2Ug dGhlIHVzYWdlIG9mIHRoZSBhYm92ZSBvcHRpb25zIGF2YWlsYWJsZSB0byBtYWNyb3MuCisgIE5P VF9USEVfQ0ZMQUdTPSIiCisgIFBHQUNfUFJPR19WQVJDQ19WQVJGTEFHU19PUFQoQ0MsIE5PVF9U SEVfQ0ZMQUdTLCBbLVdzaGFkb3c9Y29tcGF0aWJsZS1sb2NhbF0pCisgIGlmIHRlc3QgLW4gIiRO T1RfVEhFX0NGTEFHUyI7IHRoZW4KKyAgICBBQ19ERUZJTkUoW1dBUk5JTkdfQ0NfU0hBRE9XX0NP TVBBVElCTEVfTE9DQUxdLCAxLAorICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91ciBD IGNvbXBpbGVyIHVuZGVyc3RhbmRzIC1Xc2hhZG93PWNvbXBhdGlibGUtbG9jYWxdKQorICBmaQor ICBOT1RfVEhFX0NGTEFHUz0iIgorICBQR0FDX1BST0dfVkFSQ1hYX1ZBUkZMQUdTX09QVChDWFgs IE5PVF9USEVfQ0ZMQUdTLCBbLVdzaGFkb3c9Y29tcGF0aWJsZS1sb2NhbF0pCisgIGlmIHRlc3Qg LW4gIiROT1RfVEhFX0NGTEFHUyI7IHRoZW4KKyAgICBBQ19ERUZJTkUoW1dBUk5JTkdfQ1hYX1NI QURPV19DT01QQVRJQkxFX0xPQ0FMXSwgMSwKKyAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlm IHlvdXIgQysrIGNvbXBpbGVyIHVuZGVyc3RhbmRzIC1Xc2hhZG93PWNvbXBhdGlibGUtbG9jYWxd KQorICBmaQogICAjIFRoaXMgd2FzIGluY2x1ZGVkIGluIC1XYWxsLy1XZm9ybWF0IGluIG9sZGVy IEdDQyB2ZXJzaW9ucwogICBQR0FDX1BST0dfQ0NfQ0ZMQUdTX09QVChbLVdmb3JtYXQtc2VjdXJp dHldKQogICBQR0FDX1BST0dfQ1hYX0NGTEFHU19PUFQoWy1XZm9ybWF0LXNlY3VyaXR5XSkKZGlm ZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggMTJkYzk4OWE1YWIuLmRi MWYzOGRmZjkzIDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAt MjIwOCw2ICsyMjA4LDE1IEBAIGlmIGhhdmVfY3h4CiAgIGN4eGZsYWdzX3dhcm4gKz0gY3h4Lmdl dF9zdXBwb3J0ZWRfYXJndW1lbnRzKGNvbW1vbl93YXJuaW5nX2ZsYWdzKQogZW5kaWYKIAorIyBB ZHZlcnRpc2Ugd2hldGhlciAtV3NoYWRvdz1jb21wYXRpYmxlLWxvY2FsIGlzIGFjdGl2ZSwgc28g dGhhdCBpdCBjYW4gYmUKKyMgZGlzYWJsZWQgaW4gY2FzZXMgd2hlcmUgdGhhdCBpcyBleHBlY3Rl ZC4KK2lmIGNjLmhhc19hcmd1bWVudCgnLVdzaGFkb3c9Y29tcGF0aWJsZS1sb2NhbCcpCisgIGNk YXRhLnNldCgnV0FSTklOR19DQ19TSEFET1dfQ09NUEFUSUJMRV9MT0NBTCcsIDEpCitlbmRpZgor aWYgaGF2ZV9jeHggYW5kIGN4eC5oYXNfYXJndW1lbnQoJy1Xc2hhZG93PWNvbXBhdGlibGUtbG9j YWwnKQorICBjZGF0YS5zZXQoJ1dBUk5JTkdfQ1hYX1NIQURPV19DT01QQVRJQkxFX0xPQ0FMJywg MSkKK2VuZGlmCisKICMgVG8gcmVxdWlyZSBmYWxsdGhyb3VnaCBhdHRyaWJ1dGUgYW5ub3RhdGlv bnMsIHVzZQogIyAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoPTUgd2l0aCBnY2MgYW5kIC1XaW1wbGlj aXQtZmFsbHRocm91Z2ggd2l0aAogIyBjbGFuZy4gIFRoZSBsYXR0ZXIgaXMgYWxzbyBhY2NlcHRl ZCBvbiBnY2MgYnV0IGRvZXMgbm90IGVuZm9yY2UKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Mu aCBiL3NyYy9pbmNsdWRlL2MuaAppbmRleCAyOWZlZjJmNTRlMS4uOTdiYTc3OGViOTAgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTU2MSw2ICs1 NjEsMzMgQEAgdHlwZWRlZiB2b2lkICgqcGdfZnVuY3B0cl90KSAodm9pZCk7CiAjZGVmaW5lIEhB VkVfUFJBR01BX0dDQ19TWVNURU1fSEVBREVSCTEKICNlbmRpZgogCisvKgorICogU29tZXRpbWVz IGl0IGlzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIGRpc2FibGUgR0NDJ3Mgc2hhZG93IHdhcm5pbmdz IGZvciBhCisgKiBzcGVjaWZpYyBkZWNsYXJhdGlvbi4KKyAqCisgKiAtV2RlY2xhcmF0aW9uLWFm dGVyLXN0YXRlbWVudCBpcyBhbHNvIHRlbXBvcmFyaWx5IHN1cHByZXNzZWQsIGJlY2F1c2UgdGhl CisgKiBwcmFnbWEgaXRzZWxmIGlzIHRyZWF0ZWQgYXMgYSBzdGF0ZW1lbnQgd2hpbGUgdGhlIHB1 cnBvc2Ugb2YgdGhlc2UgbWFjcm9zCisgKiBpcyB0byB3cmFwIGEgZGVjbGFyYXRpb24uCisgKi8K KyNpZiAhZGVmaW5lZChfX2NsYW5nX18pICYmIFwKKwkoKGRlZmluZWQoX19jcGx1c3BsdXMpICYm IGRlZmluZWQoV0FSTklOR19DWFhfU0hBRE9XX0NPTVBBVElCTEVfTE9DQUwpKSB8fCBcCisJICgh ZGVmaW5lZChfX2NwbHVzcGx1cykgJiYgZGVmaW5lZChXQVJOSU5HX0NDX1NIQURPV19DT01QQVRJ QkxFX0xPQ0FMKSkpCisjaWYgIWRlZmluZWQoX19jcGx1c3BsdXMpCisjZGVmaW5lIHBnX3ByYWdt YV9pZ25vcmVfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50IFwKKwlfUHJhZ21hKCJHQ0MgZGlh Z25vc3RpYyBpZ25vcmVkIFwiLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnRcIiIpOworI2Vs c2UKKyNkZWZpbmUgcGdfcHJhZ21hX2lnbm9yZV9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnQK KyNlbmRpZgorI2RlZmluZSBwZ19iZWdpbl9pZ25vcmVfc2hhZG93X3dhcm5pbmcoKQkJCQkJCQkJ XAorCV9QcmFnbWEoIkdDQyBkaWFnbm9zdGljIHB1c2giKTsJCQkJCQkJCQkJXAorCV9QcmFnbWEo IkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3NoYWRvdz1jb21wYXRpYmxlLWxvY2FsXCIiKTsJ XAorCXBnX3ByYWdtYV9pZ25vcmVfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50CisjZGVmaW5l IHBnX2VuZF9pZ25vcmVfc2hhZG93X3dhcm5pbmcoKQkJCVwKKwlfUHJhZ21hKCJHQ0MgZGlhZ25v c3RpYyBwb3AiKQorI2Vsc2UKKyNkZWZpbmUgcGdfYmVnaW5faWdub3JlX3NoYWRvd193YXJuaW5n KCkKKyNkZWZpbmUgcGdfZW5kX2lnbm9yZV9zaGFkb3dfd2FybmluZygpCisjZW5kaWYKIAogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICoJCQkJU2VjdGlvbiAyOglib29sLCB0cnVlLCBmYWxzZQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gYi9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgpp bmRleCBjNDU3NDQwNmUwNC4uZjk1NjAxMmJlM2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bn X2NvbmZpZy5oLmluCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCkBAIC03NjIsNiAr NzYyLDEyIEBACiAvKiBEZWZpbmUgdG8gMSB0byBidWlsZCB3aXRoIFpTVEQgc3VwcG9ydC4gKC0t d2l0aC16c3RkKSAqLwogI3VuZGVmIFVTRV9aU1RECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdXIg QyBjb21waWxlciB1bmRlcnN0YW5kcyAtV3NoYWRvdz1jb21wYXRpYmxlLWxvY2FsICovCisjdW5k ZWYgV0FSTklOR19DQ19TSEFET1dfQ09NUEFUSUJMRV9MT0NBTAorCisvKiBEZWZpbmUgdG8gMSBp ZiB5b3VyIEMrKyBjb21waWxlciB1bmRlcnN0YW5kcyAtV3NoYWRvdz1jb21wYXRpYmxlLWxvY2Fs ICovCisjdW5kZWYgV0FSTklOR19DWFhfU0hBRE9XX0NPTVBBVElCTEVfTE9DQUwKKwogLyogRGVm aW5lIFdPUkRTX0JJR0VORElBTiB0byAxIGlmIHlvdXIgcHJvY2Vzc29yIHN0b3JlcyB3b3JkcyB3 aXRoIHRoZSBtb3N0CiAgICBzaWduaWZpY2FudCBieXRlIGZpcnN0IChsaWtlIE1vdG9yb2xhIGFu ZCBTUEFSQywgdW5saWtlIEludGVsKS4gKi8KICNpZiBkZWZpbmVkIEFDX0FQUExFX1VOSVZFUlNB TF9CVUlMRApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvZWxvZy5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvZWxvZy5oCmluZGV4IGExMmIzNzllMDlhLi4zMGFmY2ZiZjQ1MyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvZWxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cu aApAQCAtMzE2LDYgKzMxNiwzOSBAQCB0eXBlZGVmIHN0cnVjdCBFcnJvckNvbnRleHRDYWxsYmFj awogZXh0ZXJuIFBHRExMSU1QT1JUIEVycm9yQ29udGV4dENhbGxiYWNrICplcnJvcl9jb250ZXh0 X3N0YWNrOwogCiAKKy8qIFN1cHBvcnQgZm9yIHRlc3RpbmcgaWYgYSBtYWNybyBpcyBpbnNpZGUg YSBQR19UUlkvLi4uIGJsb2NrLiAqLwordHlwZWRlZiBjaGFyIHBnX2xleGljYWxfc2NvcGVfZmFs c2VfdHlwZTsKK3R5cGVkZWYgaW50IHBnX2xleGljYWxfc2NvcGVfdHJ1ZV90eXBlOworCisvKiBE ZWNsYXJlIGEgdGFnIGFzIGEgdmFyaWFibGUgaW4gZ2xvYmFsIHNjb3BlLiAgSXQgaGFzIG5vIHN0 b3JhZ2UuICovCisjZGVmaW5lIHBnX2RlY2xhcmVfbGV4aWNhbF9zY29wZV90YWcobmFtZSkJCQlc CisJZXh0ZXJuIHBnX2xleGljYWxfc2NvcGVfZmFsc2VfdHlwZSBcCisJbGV4aWNhbF9zY29wZV90 YWdfIyNuYW1lIHBnX2F0dHJpYnV0ZV91bnVzZWQoKQorCisvKgorICogRGVjbGFyZSBhIHRhZyBh cyBhIGxvY2FsIHR5cGVkZWYgdGhhdCBoaWRlcyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUsCisg KiB3aXRoaW4gdGhlIGN1cnJlbnQgbGV4aWNhbCBzY29wZS4KKyAqCisgKiBPbiBpdHMgb3duLCAi c2hhZG93aW5nIiBhIHZhcmlhYmxlIG5hbWUgd2l0aCBhIHR5cGUgbmFtZSBkb2Vzbid0IHRyaWdn ZXIKKyAqIEdDQydzIC1Xc2hhZG93PWNvbXBhdGlibGUtbG9jYWwgd2FybmluZywgYnV0IHdlIHdh bnQgdG8gYmUgYWJsZSB0byBoYW5kbGUKKyAqIG5lc3RlZCBQR19UUlkgYmxvY2tzIHVzaW5nIHRo ZSBzYW1lIHRhZyBuYW1lLiAgRGlzYWJsZSB0aGUgd2FybmluZyBsb2NhbGx5LAorICogaWYgaXQn cyBlbmFibGVkLgorICovCisjZGVmaW5lIHBnX3NldF9sZXhpY2FsX3Njb3BlX3RhZyhuYW1lKQkJ CQkJCQkJCVwKKwlwZ19iZWdpbl9pZ25vcmVfc2hhZG93X3dhcm5pbmcoKQkJCQkJCQkJCVwKKwl0 eXBlZGVmIHBnX2xleGljYWxfc2NvcGVfdHJ1ZV90eXBlCQkJCQkJCQkJXAorCQlsZXhpY2FsX3Nj b3BlX3RhZ18jI25hbWUgcGdfYXR0cmlidXRlX3VudXNlZCgpOwkJCQkJXAorCXBnX2VuZF9pZ25v cmVfc2hhZG93X3dhcm5pbmcoKQorCisvKiBUZXN0IHdoZXRoZXIgd2UgYXJlIGluc2lkZSBhIGxl eGljYWwgc2NvcGUgdGhhdCBoYXMgInNldCIgdGhlIHRhZy4gKi8KKyNkZWZpbmUgcGdfaW5fbGV4 aWNhbF9zY29wZV9wKG5hbWUpCQkJCVwKKwkoc2l6ZW9mKGxleGljYWxfc2NvcGVfdGFnXyMjbmFt ZSkgPT0gc2l6ZW9mKHBnX2xleGljYWxfc2NvcGVfdHJ1ZV90eXBlKSkKKworcGdfZGVjbGFyZV9s ZXhpY2FsX3Njb3BlX3RhZyhQR19UUlkpOworcGdfZGVjbGFyZV9sZXhpY2FsX3Njb3BlX3RhZyhQ R19DQVRDSCk7CitwZ19kZWNsYXJlX2xleGljYWxfc2NvcGVfdGFnKFBHX0ZJTkFMTFkpOworCisK IC8qLS0tLS0tLS0tLQogICogQVBJIGZvciBjYXRjaGluZyBlcmVwb3J0KEVSUk9SKSBleGl0cy4g IFVzZSB0aGVzZSBtYWNyb3MgbGlrZSBzbzoKICAqCkBAIC0zOTEsMTIgKzQyNCwxNCBAQCBleHRl cm4gUEdETExJTVBPUlQgRXJyb3JDb250ZXh0Q2FsbGJhY2sgKmVycm9yX2NvbnRleHRfc3RhY2s7 CiAJCWJvb2wgX2RvX3JldGhyb3cjI19fVkFfQVJHU19fID0gZmFsc2U7IFwKIAkJaWYgKHNpZ3Nl dGptcChfbG9jYWxfc2lnam1wX2J1ZiMjX19WQV9BUkdTX18sIDApID09IDApIFwKIAkJeyBcCisJ CQlwZ19zZXRfbGV4aWNhbF9zY29wZV90YWcoUEdfVFJZKTsgXAogCQkJUEdfZXhjZXB0aW9uX3N0 YWNrID0gJl9sb2NhbF9zaWdqbXBfYnVmIyNfX1ZBX0FSR1NfXwogCiAjZGVmaW5lIFBHX0NBVENI KC4uLikJXAogCQl9IFwKIAkJZWxzZSBcCiAJCXsgXAorCQkJcGdfc2V0X2xleGljYWxfc2NvcGVf dGFnKFBHX0NBVENIKTsgXAogCQkJUEdfZXhjZXB0aW9uX3N0YWNrID0gX3NhdmVfZXhjZXB0aW9u X3N0YWNrIyNfX1ZBX0FSR1NfXzsgXAogCQkJZXJyb3JfY29udGV4dF9zdGFjayA9IF9zYXZlX2Nv bnRleHRfc3RhY2sjI19fVkFfQVJHU19fCiAKQEAgLTQwNSw2ICs0NDAsNyBAQCBleHRlcm4gUEdE TExJTVBPUlQgRXJyb3JDb250ZXh0Q2FsbGJhY2sgKmVycm9yX2NvbnRleHRfc3RhY2s7CiAJCWVs c2UgXAogCQkJX2RvX3JldGhyb3cjI19fVkFfQVJHU19fID0gdHJ1ZTsgXAogCQl7IFwKKwkJCXBn X3NldF9sZXhpY2FsX3Njb3BlX3RhZyhQR19GSU5BTExZKTsgXAogCQkJUEdfZXhjZXB0aW9uX3N0 YWNrID0gX3NhdmVfZXhjZXB0aW9uX3N0YWNrIyNfX1ZBX0FSR1NfXzsgXAogCQkJZXJyb3JfY29u dGV4dF9zdGFjayA9IF9zYXZlX2NvbnRleHRfc3RhY2sjI19fVkFfQVJHU19fCiAKLS0gCjIuNTAu MSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000002715e1064d2b7e78 Content-Type: application/octet-stream; name="v4-0007-pg_stack_alloc-Use-alloca-for-allocation.patch" Content-Disposition: attachment; filename="v4-0007-pg_stack_alloc-Use-alloca-for-allocation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtg4sb86 RnJvbSAyNjg1NDgwMzk1MmNhMTlkOWVhZmE4NzdlNDUyZWRhNTk3OTlhMjIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTYgTWFyIDIwMjYgMTU6NDM6MzggKzEzMDAKU3ViamVjdDogW1BBVENIIHY0 IDA3LzIxXSBwZ19zdGFja19hbGxvYzogVXNlIGFsbG9jYSgpIGZvciBhbGxvY2F0aW9uLgoKQWRk IHN1cHBvcnQgZm9yIGFsbG9jYSgpLCB3aXRoIGRlZmVuc2VzIGFnYWluc3Qgc3RhY2sgb3ZlcmZs b3cuICBUaGUKZXhpc3RpbmcgcGVyLWZ1bmN0aW9uIGxpbWl0IGFwcGxpZXMsIGFuZCBhIHNlY29u ZGFyeSBsaW1pdCB0aGF0IHN0b3BzCmFsbG9jYXRpbmcgb24gdGhlIHN0YWNrIGlmIHRoZSB0b3Rh bCBzdGFjayBkZXB0aCBoYXMgcmVhY2hlZCA1MCUgb2YgdGhlCnNpemUgdGhhdCB3b3VsZCBjYXVz ZSBjaGVja19zdGFja19kZXB0aCgpIHRvIGVyZXBvcnQoKS4gIFRoZSBkZWZhdWx0CnBlci1mdW5j dGlvbiBsaW1pdCBpcyBpbmNyZWFzZWQgdG8gMTAyNCB3aGVuIHVzaW5nIGFsbG9jYSgpLgoKVGhp cyBpcyBhdmFpbGFibGUgb25seSBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBzdGFjayBncm93cyBkb3du IHRvd2FyZHMKemVybyB1c2luZyBHQ0MsIENsYW5nIG9yIE1TVkMsIGJ1dCB0aGF0J3MgYWxsIHRo ZSBzeXN0ZW1zIHdlIHN1cHBvcnQuClRoZSBhcnJheS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBpcyBz dGlsbCB0aGVyZSBidXQgd29uJ3QgYmUgdXNlZCBieQpkZWZhdWx0LgoKUmV2aWV3ZWQtYnk6CkRp c2N1c3Npb246Ci0tLQogY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzOCAr KysrKwogY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBtZXNvbi5i dWlsZCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3BnX2NvbmZp Zy5oLmluICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGdfc3RhY2tfYWxsb2Mu aCB8IDIzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9y ZWdyZXNzLmMgICAgICAgICB8ICA3OCArKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDM1MiBp bnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2Nv bmZpZ3VyZQppbmRleCBhNWVlNzFjZjcyOC4uZWZlNjI0OWIyODMgMTAwNzU1Ci0tLSBhL2NvbmZp Z3VyZQorKysgYi9jb25maWd1cmUKQEAgLTE2MjMzLDYgKzE2MjMzLDQ0IEBAIGNhdCA+PmNvbmZk ZWZzLmggPDxfQUNFT0YKICNkZWZpbmUgSEFWRV9fQlVJTFRJTl9TVEFDS19BRERSRVNTIDEKIF9B Q0VPRgogCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj a2luZyBmb3IgX19idWlsdGluX2FsbG9jYSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Ig X19idWlsdGluX2FsbG9jYS4uLiAiID4mNjsgfQoraWYgJHtwZ2FjX2N2X19idWlsdGluX2FsbG9j YSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KKwordm9pZCAqCitjYWxsX19idWlsdGluX2FsbG9jYSh2b2lkKQoreworICAg IHJldHVybiBfX2J1aWx0aW5fYWxsb2NhKDApOworfQoraW50CittYWluICgpCit7CisKKyAgOwor ICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRo ZW4gOgorICBwZ2FjX2N2X19idWlsdGluX2FsbG9jYT15ZXMKK2Vsc2UKKyAgcGdhY19jdl9fYnVp bHRpbl9hbGxvY2E9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf b2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3sg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcGdhY19jdl9f YnVpbHRpbl9hbGxvY2EiID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X19idWlsdGluX2FsbG9jYSIg PiY2OyB9CitpZiB0ZXN0IHgiJHtwZ2FjX2N2X19idWlsdGluX2FsbG9jYX0iID0geHllcyA7IHRo ZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX19CVUlMVElOX0FM TE9DQSAxCitfQUNFT0YKKwogZmkKIAogIyBXZSByZXF1aXJlIDY0LWJpdCBmc2Vla28oKSB0byBi ZSBhdmFpbGFibGUsIGJ1dCBydW4gdGhpcyBjaGVjayBhbnl3YXkKZGlmZiAtLWdpdCBhL2NvbmZp Z3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBiMTNjZmExODEzZi4uNTBlODc0YTNiNzAgMTAw NjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTE4ODEsNiArMTg4 MSw3IEBAIFBHQUNfQ0hFQ0tfQlVJTFRJTl9GVU5DKFtfX2J1aWx0aW5fY3R6XSwgW3Vuc2lnbmVk IGludCB4XSkKICMgc28gaXQgbmVlZHMgYSBkaWZmZXJlbnQgdGVzdCBmdW5jdGlvbi4KIFBHQUNf Q0hFQ0tfQlVJTFRJTl9GVU5DX1BUUihbX19idWlsdGluX2ZyYW1lX2FkZHJlc3NdLCBbMF0pCiBQ R0FDX0NIRUNLX0JVSUxUSU5fRlVOQ19QVFIoW19fYnVpbHRpbl9zdGFja19hZGRyZXNzXSwgW10p CitQR0FDX0NIRUNLX0JVSUxUSU5fRlVOQ19QVFIoW19fYnVpbHRpbl9hbGxvY2FdLCBbMF0pCiAK ICMgV2UgcmVxdWlyZSA2NC1iaXQgZnNlZWtvKCkgdG8gYmUgYXZhaWxhYmxlLCBidXQgcnVuIHRo aXMgY2hlY2sgYW55d2F5CiAjIGluIGNhc2UgaXQgZmluZHMgdGhhdCBfTEFSR0VGSUxFX1NPVVJD RSBoYXMgdG8gYmUgI2RlZmluZSdkIGZvciB0aGF0LgpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQg Yi9tZXNvbi5idWlsZAppbmRleCBkYjFmMzhkZmY5My4uMjUyNzJjNDNhMzYgMTAwNjQ0Ci0tLSBh L21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxkCkBAIC0yMDQyLDYgKzIwNDIsNyBAQCBlbmRp ZgogIyBDaGVjayBpZiB2YXJpb3VzIGJ1aWx0aW5zIGV4aXN0LiBTb21lIGJ1aWx0aW5zIGFyZSB0 ZXN0ZWQgc2VwYXJhdGVseSwKICMgYmVjYXVzZSB3ZSB3YW50IHRvIHRlc3Qgc29tZXRoaW5nIG1v cmUgY29tcGxpY2F0ZWQgdGhhbiB0aGUgZ2VuZXJpYyBjYXNlLgogYnVpbHRpbnMgPSBbCisgICdh bGxvY2EnLAogICAnYnN3YXAxNicsCiAgICdic3dhcDMyJywKICAgJ2Jzd2FwNjQnLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gYi9zcmMvaW5jbHVkZS9wZ19jb25maWcu aC5pbgppbmRleCBmOTU2MDEyYmUzZC4uNjZkZjBlODMzYzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCkBAIC01 MTQsNiArNTE0LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIFhTQVZFIGludHJpbnNp Y3MuICovCiAjdW5kZWYgSEFWRV9YU0FWRV9JTlRSSU5TSUNTCiAKKy8qIERlZmluZSB0byAxIGlm IHlvdXIgY29tcGlsZXIgdW5kZXJzdGFuZHMgX19idWlsdGluX2FsbG9jYS4gKi8KKyN1bmRlZiBI QVZFX19CVUlMVElOX0FMTE9DQQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3VyIGNvbXBpbGVyIHVu ZGVyc3RhbmRzIF9fYnVpbHRpbl9ic3dhcDE2LiAqLwogI3VuZGVmIEhBVkVfX0JVSUxUSU5fQlNX QVAxNgogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wZ19zdGFja19hbGxvYy5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvcGdfc3RhY2tfYWxsb2MuaAppbmRleCBjZDNjMzgzODAxMy4uYTgy ZWQ3Y2RmMGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BnX3N0YWNrX2FsbG9jLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfc3RhY2tfYWxsb2MuaApAQCAtMywxNiArMywyMCBA QAogICogcGdfc3RhY2tfYWxsb2MuaAogICoJCUFsbG9jYXRvciBmb3Igb2JqZWN0cyB0aGF0IGRv bid0IGVzY2FwZSB0aGUgY3VycmVudCBmdW5jdGlvbi4KICAqCi0gKiBBIHBhbGxvYygpLWxpa2Ug aW50ZXJmYWNlIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBvbiB0aGUgc3RhY2suICBUaGUgaW5pdGlh bAotICogaW1wbGVtZW50YXRpb24gdXNlcyBhbiBhcnJheSBkZWNsYXJlZCBzdGF0aWNhbGx5Lgor ICogQSBwYWxsb2MoKS1saWtlIGludGVyZmFjZSB0byBhbGxvY2EoKSwgZm9yIGFsbG9jYXRpbmcg bWVtb3J5IG9uIHRoZSBzdGFjay4KKyAqIFJhdyBhbGxvY2EoKSBpcyB1c3VhbGx5IGNvbnNpZGVy ZWQgZGFuZ2Vyb3VzIGJlY2F1c2Ugb2YgaXRzIGluaGVyZW50IHN0YWNrCisgKiBvdmVyZmxvdyBy aXNrLCBidXQgdGhpcyBpbnRlcmZhY2UgaW1wb3NlcyBsaW1pdHMgb24gc3RhY2sgc2l6ZSBhbmQg ZmFsbHMKKyAqIGJhY2sgdG8gcmVndWxhciBwYWxsb2MoKSB3aGVuIHRoZXkgd291bGQgYmUgZXhj ZWVkZWQuCisgKgorICogR0NDLCBDbGFuZyBhbmQgTVNWQyBhcmUgc3VwcG9ydGVkLCBhcyBsb25n IGFzIFBHX1NUQUNLX0RJUkVDVElPTiBpcworICogZG93bndhcmRzIChhbGwgbW9kZXJuIHN5c3Rl bXMpLiAgQSBzaW1wbGUgYXJyYXktYmFzZWQgZW11bGF0aW9uCisgKiBpcyBwcm92aWRlZCBmb3Ig c3lzdGVtcyB0aGF0IGNhbid0IHVzZSB0aGF0LgogICoKICAqIE9uY2Ugc3RhY2sgc3BhY2UgaXMg ZXhoYXVzdGVkLCBhbGxvY2F0aW9ucyBzaWxlbnRseSBmYWxsIGJhY2sgdG8gdXNpbmcKICAqIHBh bGxvYygpLiAgTWVtb3J5IHNob3VsZCB0aGVyZWZvcmUgc3RpbGwgYmUgZnJlZWQgZXhwbGljaXRs eSB3aXRoCiAgKiBwZ19zdGFja19mcmVlKCkgb3IgTWVtb3J5Q29udGV4dC1sZXZlbCBjbGVhbnVw LiAgSXQgaXMgYSBuby1vcCBpbiB0aGUKICAqIGNvbW1vbiBjYXNlIHRoYXQgcGZyZWUoKSBkb2Vz bid0IG5lZWQgdG8gYmUgY2FsbGVkLgogICoKLSAqIFhYWCBBIHNwYWNlLWxpbWl0ZWQgdmVyc2lv biBvZiBhbGxvY2EoKSBjb3VsZCBiZSBhZGRlZC4KLSAqCiAgKiBYWFggSXQgbWlnaHQgYmUgcG9z c2libGUgdG8gdXNlIHNvbWV0aGluZyBsaWtlICJkZWZlciIgb3IgZXF1aXZhbGVudAogICogY29t cGlsZXIgZXh0ZW5zaW9ucyB0byBjbGVhbiB1cCBwYWxsb2MoKSdkIG1lbW9yeSBhdXRvbWF0aWNh bGx5LCBpbiBmdXR1cmUKICAqIHdvcmssIGFuZCB0aGVuIHBnX3N0YWNrX2ZyZWUoKSB3b3VsZCBu b3QgYmUgbmVjZXNzYXJ5LgpAQCAtMjgsNiArMzIsNyBAQAogI2RlZmluZSBQR19TVEFDS19BTExP Q19ICiAKICNpbmNsdWRlICJ1dGlscy9lbG9nLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIJCS8qIGZvciBNYXhBbGxvY1NpemUgKi8KICNpbmNsdWRlICJ1dGlscy9wYWxsb2MuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKIApAQCAtMzYsMTMgKzQxLDM1IEBACiAKIAogLyogI2RlZmlu ZSBQR19TVEFDS19VU0VfUEFMTE9DX0xPRyAiL3RtcC9wZ19zdGFja19hbGxvYy5jc3YiICovCisv KiAjZGVmaW5lIFBHX1NUQUNLX1VTRV9BUlJBWSAqLworCisvKiBTcGVsbGluZyBhbmQgYWxpZ25t ZW50IG9mIGFsbG9jYSgpIG9uIHRoaXMgc3lzdGVtLiAqLworI2lmZGVmIEhBVkVfX0JVSUxUSU5f QUxMT0NBCisvKgorICogVXNpbmcgdGhlIGJ1aWx0aW4gYXZvaWRzIHRoZSBuZWVkIHRvIGZpZ3Vy ZSBvdXQgd2hpY2ggaGVhZGVyIHRvIGluY2x1ZGUgb24KKyAqIGVhY2ggcGxhdGZvcm0sIGFuZCBl bnN1cmVzIHdlIGdldCBHQ0MvQ2xhbmcncyBkb2N1bWVudGVkIGJlaGF2aW9yIGFuZCBub3QKKyAq IHNvbWUgb3RoZXIgYWxsb2NhKCkgaW1wbGVtZW50YXRpb24gdGVjaG5pcXVlIHdpdGggdW5rbm93 biBjaGFyYWN0ZXJpc3RpY3MuCisgKi8KKyNkZWZpbmUgcGdfc3RhY2tfYWxsb2NhKHNpemUpIF9f YnVpbHRpbl9hbGxvY2Eoc2l6ZSkKKyNkZWZpbmUJQUxJR05PRl9BTExPQ0EgX19CSUdHRVNUX0FM SUdOTUVOVF9fCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2luY2x1ZGUgPG1hbGxvYy5oPgor I2RlZmluZSBwZ19zdGFja19hbGxvY2Eoc2l6ZSkgYWxsb2NhKHNpemUpCisvKiBodHRwczovL2xl YXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvY3BwL2J1aWxkL3N0YWNrLXVzYWdlP3ZpZXc9bXN2Yy0x NzAgKi8KKyNkZWZpbmUgQUxJR05PRl9BTExPQ0EgMTYKKyNlbmRpZgogCiAvKiBDaG9vc2Ugd2hp Y2ggaW1wbGVtZW50YXRpb24gdG8gdXNlLCBpZiBub3QgYWxyZWFkeSBkZWZpbmVkIG1hbnVhbGx5 LiAqLwogI2lmICFkZWZpbmVkKFBHX1NUQUNLX1VTRV9BUlJBWSkgJiYJCQkJCQkJCQlcCisJIWRl ZmluZWQoUEdfU1RBQ0tfVVNFX0FMTE9DKSAmJgkJCQkJCQkJCVwKIAkhZGVmaW5lZChQR19TVEFD S19VU0VfUEFMTE9DKSAmJgkJCQkJCQkJXAogCSFkZWZpbmVkKFBHX1NUQUNLX1VTRV9QQUxMT0Nf TE9HKQorI2lmIFBHX1NUQUNLX0RJUkVDVElPTiA8IDAgJiYgZGVmaW5lZChwZ19zdGFja19hbGxv Y2EpCisjZGVmaW5lIFBHX1NUQUNLX1VTRV9BTExPQ0EKKyNlbHNlCiAjZGVmaW5lIFBHX1NUQUNL X1VTRV9BUlJBWQogI2VuZGlmCisjZW5kaWYKIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTU2 LDggKzgzLDEzIEBACiAjZGVmaW5lIFBHX1NUQUNLX01BWF9BTElHTiA0MDk2CiAKIC8qIERlY2xh cmUgYSBzdGFjayBhbGxvY2F0b3Igd2l0aCBhIGRlZmF1bHQgc2l6ZSBsaW1pdC4gKi8KKyNpZmRl ZiBQR19TVEFDS19VU0VfQVJSQVkKICNkZWZpbmUgREVDTEFSRV9QR19TVEFDSygpCQkJCQkJCQkJ CQkJXAogCURFQ0xBUkVfUEdfU1RBQ0tfU0laRSgxMjgpCisjZWxzZQorI2RlZmluZSBERUNMQVJF X1BHX1NUQUNLKCkJCQkJCQkJCQkJCQlcCisJREVDTEFSRV9QR19TVEFDS19TSVpFKDEwMjQpCisj ZW5kaWYKIAogLyoKICAqIEFzIGFib3ZlLCBidXQgd2l0aCBhIGNhbGxlci1zdXBwbGllZCBsaW1p dCBvbiBzdGFjayB1c2FnZS4gIFRoZSBkZWZhdWx0CkBAIC0xNTUsNyArMTg3LDEzIEBACiAgKi8K ICNkZWZpbmUgcGdfc3RhY2tfc2FuaXR5X2NoZWNrcyhhbGlnbikJCQkJCQkJCQlcCiAJKEFzc2Vy dE1hY3JvKChhbGlnbikgPiAwICYmIChhbGlnbikgPD0gUEdfU1RBQ0tfTUFYX0FMSUdOKSwJCQlc Ci0JIEFzc2VydE1hY3JvKCgoYWxpZ24pICYgKChhbGlnbikgLSAxKSkgPT0gMCAvKiBwb3dlci1v Zi10d28/ICovKSkKKwkgQXNzZXJ0TWFjcm8oKChhbGlnbikgJiAoKGFsaWduKSAtIDEpKSA9PSAw IC8qIHBvd2VyLW9mLXR3bz8gKi8pLAlcCisJIFN0YXRpY0Fzc2VydEV4cHIoIXBnX2luX2xleGlj YWxfc2NvcGVfcChQR19UUlkpLAkJCQkJXAorCQkJCQkgICJwZ19zdGFjayBBUEkgbm90IGFsbG93 ZWQgaW4gUEdfVFJZIiksCQkJXAorCSBTdGF0aWNBc3NlcnRFeHByKCFwZ19pbl9sZXhpY2FsX3Nj b3BlX3AoUEdfQ0FUQ0gpLAkJCQkJXAorCQkJCQkgICJwZ19zdGFjayBBUEkgbm90IGFsbG93ZWQg aW4gUEdfQ0FUQ0giKSwJCQlcCisJIFN0YXRpY0Fzc2VydEV4cHIoIXBnX2luX2xleGljYWxfc2Nv cGVfcChQR19GSU5BTExZKSwJCQkJXAorCQkJCQkgICJwZ19zdGFjayBBUEkgbm90IGFsbG93ZWQg aW4gUEdfRklOQUxMWSIpKQogCiAvKiBGb3IgYXNzZXJ0aW9ucy4gKi8KIHN0YXRpYyBpbmxpbmUg Ym9vbApAQCAtMzU4LDQgKzM5NiwxOTIgQEAgcGdfc3RhY2tfYWxsb2NfYWxpZ25lZF9mcm9tX2Fy cmF5KGNoYXIgKmFycmF5LAogCiAjZW5kaWYKIAorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisg KiBhbGxvY2EoKS1iYXNlZCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqLworI2lmZGVmIFBHX1NUQUNLX1VTRV9BTExPQ0EKKworLyogUmVxdWlyZWQgaW50ZXJmYWNl IG1hY3Jvcy4gKi8KKworI2RlZmluZSBERUNMQVJFX1BHX1NUQUNLX0lNUEwoc2l6ZSkJCQkJCQkJ CQkJXAorCXBnX3N0YWNrX2ltcGxfZGVjbAkJCQkJCQkJCQkJCQlcCisJY29uc3QgY2hhciAqcGdf c3RhY2tfbGltaXQgPQkJCQkJCQkJCQlcCisJCXBnX3N0YWNrX2NvbXB1dGVfbGltaXQocGdfc3Rh Y2tfbG93ZXJfYm91bmQoKSwgKHNpemUpKQorCisjZGVmaW5lIHBnX3N0YWNrX2FsbG9jX2FsaWdu ZWRfaW1wbChzaXplLCBhbGlnbikJCQkJCQlcCisJKGxpa2VseShwZ19zdGFja19hbGxvY2Ffd291 bGRfZml0X3AocGdfc3RhY2tfbG93ZXJfYm91bmQoKSwJCQlcCisJCQkJCQkJCQkJcGdfc3RhY2tf bGltaXQsCQkJCQlcCisJCQkJCQkJCQkJKHNpemUpLCAoYWxpZ24pKSkgPwkJCQlcCisJIHBnX3N0 YWNrX2FsbG9jYV9hbGlnbmVkKChzaXplKSwgKGFsaWduKSkgOgkJCQkJCQlcCisJIHBnX3N0YWNr X3BhbGxvY19hbGlnbmVkKChzaXplKSwgKGFsaWduKSkpCisKKyNkZWZpbmUgcGdfc3RhY2tfcHRy X3AocHRyKQkJCQkJCQkJCQkJCVwKKwkoKGNoYXIgKikgKHB0cikgPj0gcGdfc3RhY2tfbG93ZXJf Ym91bmQoKSAmJgkJCQkJCVwKKwkgKGNoYXIgKikgKHB0cikgPD0gcGdfc3RhY2tfdXBwZXJfYm91 bmQoKSkKKworCisvKiBDb21waWxlci1zcGVjaWZpYyB3YXlzIHRvIGluc3BlY3QgdGhlIHN0YWNr J3MgYm91bmRzLiAqLworCisvKiBUaGUgc3RhY2sgcG9pbnRlci4gKi8KKyNpZiBkZWZpbmVkKEhB VkVfX0JVSUxUSU5fU1RBQ0tfQUREUkVTUykgJiYJCQkJCQkJCVwKKwkoIWRlZmluZWQoX19jbGFu Z19fKSB8fCBfX2NsYW5nX21ham9yX18gPj0gMjIpCisvKiBQcmVmZXIgYnVpbHRpbiBpZiBhdmFp bGFibGUuICovCisjZGVmaW5lIHBnX3N0YWNrX2xvd2VyX2JvdW5kKCkgKChjb25zdCBjaGFyICop IF9fYnVpbHRpbl9zdGFja19hZGRyZXNzKCkpCisjZWxzZQorLyoKKyAqIENhbGxpbmcgYWxsb2Nh KDApIGVmZmVjdGl2ZWx5IHJlYWRzIHRoZSBzdGFjayBwb2ludGVyIG9uIEdDQy9DbGFuZy9NU1ZD LAorICogYnV0IG5vdCByZWxpYWJseSBlbm91Z2ggZm9yIHBnX3N0YWNrX2xvd2VyX2JvdW5kKCkn cyBwdXJwb3NlcyBkdWUgdG8KKyAqIG9wdGltaXphdGlvbnMuICBJdCBzZWVtcyBnb29kIGVub3Vn aCBmb3IgdGhlIGluaXRpYWwgdmFsdWUgdGhhdCBkZXRlcm1pbmVzCisgKiBwZ19zdGFja19saW1p dCB0aG91Z2gsIGFuZCBiZXR0ZXIgdGhhbiB0YWtpbmcgYSBsb2NhbCB2YXJpYWJsZSdzIGFkZHJl c3MsCisgKiB3aGljaCB3b3VsZCBiZSBsZXNzIGFjY3VyYXRlIGFuZCBoYXJkIHRvIGdldCBwYXN0 IHN0YXRpYyBhbmFseXplcnMuCisgKiBJbnN0ZWFkIHdlJ2xsIG1haW50YWluIGEgcmVsaWFibGUg bG93ZXIgYm91bmQgaW4gcGdfc3RhY2tfbG93ZXJfYm91bmRfdmFyLgorICoKKyAqIFhYWCBJJ3Zl IG9ubHkgYWN0dWFsbHkgc2VlbiBpdCBicmVhayBvbiBBcHBsZSBDbGFuZywgd2hlcmUgaWYgeW91 J3JlCisgKiB1bmx1Y2t5IHlvdSBjYW4gc2VlIGEgc3RhY2sgcG9pbnRlciB+MTYgYnl0ZXMgaGln aGVyIHRoYW4gYSByZWNlbnQgYWxsb2NhKCkKKyAqIHJlc3VsdCwgYW5kIHRoZW4gcGdfc3RhY2tf cHRyX3AoKSBpcyBjb25mdXNlZCBhbmQgd2Ugc2VuZCBpdCBwZnJlZSgpLgorICovCisjZGVmaW5l IHBnX3N0YWNrX2xvd2VyX2JvdW5kX2luaXQoKSAoKGNvbnN0IGNoYXIgKikgcGdfc3RhY2tfYWxs b2NhKDApKQorI2VuZGlmCisKKy8qIFVwcGVyIGJvdW5kIG9mIHN0YWNrIGFkZHJlc3NlcywgaW5j bHVzaXZlLiAqLworI2lmZGVmIEhBVkVfX0JVSUxUSU5fRlJBTUVfQUREUkVTUworI2RlZmluZSBw Z19zdGFja191cHBlcl9ib3VuZCgpICgoY29uc3QgY2hhciAqKSBfX2J1aWx0aW5fZnJhbWVfYWRk cmVzcygwKSkKKyNlbmRpZgorCisKKy8qIFJlcGxhY2VtZW50IGltcGxlbWVudGF0aW9ucyBvZiBw Z19zdGFja197dXBwZXIsbG93ZXJ9X2JvdW5kKCkuICovCisKKy8qIFRoZSBiYXNlIGFkZHJlc3Mg ZnJvbSBzdGFja19kZXB0aC5jIHdpbGwgZG8gaWYgd2UgZG9uJ3QgaGF2ZSBhIGJ1aWx0aW4uICov CisjaWZuZGVmIHBnX3N0YWNrX3VwcGVyX2JvdW5kCisjZGVmaW5lIHBnX3N0YWNrX3VwcGVyX2Jv dW5kKCkgKChjb25zdCBjaGFyICopIHN0YWNrX2Jhc2VfcHRyKQorI2VuZGlmCisKKyNpZmRlZiBw Z19zdGFja19sb3dlcl9ib3VuZAorLyogQXNzZXJ0IHRoYXQgYWxsIGFsbG9jYSgpIHJlc3VsdHMg YXJlIGJvdW5kZWQgYnkgdGhlIGJ1aWx0aW4uICovCisjZGVmaW5lIHBnX3N0YWNrX2ltcGxfZGVj bAkJCQkJCQkJCQkJCVwKKwljaGFyICpwZ19zdGFja19sZXRfcHRyOworI2RlZmluZSBwZ19zdGFj a190cmFjayhwdHIpCQkJCQkJCQkJCQkJXAorCShwZ19zdGFja19sZXRfcHRyID0gKHB0ciksCQkJ LyogbmVlZGVkIGZvciBzZXF1ZW5jaW5nICovCQlcCisJIEFzc2VydE1hY3JvKHBnX3N0YWNrX2xv d2VyX2JvdW5kKCkgPD0gcGdfc3RhY2tfbGV0X3B0ciksCQkJXAorCSBwZ19zdGFja19sZXRfcHRy KQorI2Vsc2UKKy8qIFJlbWVtYmVyIHRoZSBsb3dlc3QgYWRkcmVzcyBldmVyIHJldHVybmVkIGJ5 IGFsbG9jYSgpLiAqLworI2RlZmluZSBwZ19zdGFja19pbXBsX2RlY2wJCQkJCQkJCQkJCQlcCisJ Y29uc3QgY2hhciAqcGdfc3RhY2tfbG93ZXJfYm91bmRfdmFyID0gcGdfc3RhY2tfbG93ZXJfYm91 bmRfaW5pdCgpOworI2RlZmluZSBwZ19zdGFja19sb3dlcl9ib3VuZCgpIHBnX3N0YWNrX2xvd2Vy X2JvdW5kX3ZhcgorI2RlZmluZSBwZ19zdGFja190cmFjayhwdHIpCQkJCQkJCQkJCQkJXAorCXBn X3N0YWNrX3NldF9sb3dlcl9ib3VuZCgmcGdfc3RhY2tfbG93ZXJfYm91bmRfdmFyLCAocHRyKSkK K3N0YXRpYyBpbmxpbmUgdm9pZCAqCitwZ19zdGFja19zZXRfbG93ZXJfYm91bmQoY29uc3QgY2hh ciAqKmxvd2VyX2JvdW5kLCB2b2lkICpwdHIpCit7CisJLyoKKwkgKiBEb24ndCBhc3N1bWUgdGhh dCBhbGxvY2EoKSdzIHJlc3VsdCBpcyBsb3dlciBlYWNoIHRpbWUuICBUaGF0IGlzCisJICogdXN1 YWxseSB0cnVlLCBidXQgbm90IGFsd2F5cy4KKwkgKi8KKwlpZiAoKGNvbnN0IGNoYXIgKikgcHRy IDwgKmxvd2VyX2JvdW5kKQorCQkqbG93ZXJfYm91bmQgPSAoY29uc3QgY2hhciAqKSBwdHI7CisJ cmV0dXJuIHB0cjsKK30KKyNlbmRpZgorCisKKy8qIEltcGxlbWVudGF0aW9uIGNvZGUuICovCisK Ky8qIENob29zZSBhIGxpbWl0IGFkZHJlc3MuICovCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIg KgorcGdfc3RhY2tfY29tcHV0ZV9saW1pdChjb25zdCBjaGFyICpzcCwgc2l6ZV90IHNpemUpCit7 CisJY29uc3QgY2hhciAqbGltaXQgPSBzcCAtIHNpemU7CisKKwkvKiBzdGFja19kZXB0aC5jJ3Mg c29mdCBsaW1pdCBvdmVycmlkZXMgdGhlIHJlcXVlc3RlZCBzaXplIGlmIGNsb3Nlci4gKi8KKwlp ZiAoKGNvbnN0IGNoYXIgKikgc3RhY2tfc29mdF9saW1pdF9wdHIgPiBsaW1pdCkKKwkJbGltaXQg PSAoY29uc3QgY2hhciAqKSBzdGFja19zb2Z0X2xpbWl0X3B0cjsKKworCXJldHVybiBsaW1pdDsK K30KKworLyoKKyAqIENhbGwgYWxsb2NhKCksIGFkanVzdGluZyBmb3IgYWxpZ24gPiBBTElHTl9B TExPQ0EgaWYgbmVjZXNzYXJ5LCBhbmQKKyAqIHRyYWNraW5nIHRoZSBsb3dlciBib3VuZCBpZiBu ZWNlc3NhcnkuCisgKi8KKyNkZWZpbmUgcGdfc3RhY2tfYWxsb2NhX2FsaWduZWQoc2l6ZSwgYWxp Z24pCQkJCQkJCVwKKwlwZ19zdGFja19yZWFsaWduKAkJCQkJCQkJCQkJCQlcCisJCXBnX3N0YWNr X3RyYWNrKHBnX3N0YWNrX2FsbG9jYShwZ19zdGFja19wYWQoKHNpemUpLAkoYWxpZ24pKSkpLCBc CisJCShhbGlnbikpCisKKy8qIFJlc2VydmUgcGFkZGluZyBzcGFjZSBmb3IgcGdfc3RhY2tfcmVh bGlnbigpIGlmIHN0cmljdGVyIHRoYW4gZGVmYXVsdC4gKi8KK3N0YXRpYyBpbmxpbmUgc2l6ZV90 CitwZ19zdGFja19wYWQoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbikKK3sKKwlpZiAoYWxpZ24g PD0gQUxJR05PRl9BTExPQ0EpCisJCXJldHVybiBzaXplOworCisJcmV0dXJuIChhbGlnbiAtIEFM SUdOT0ZfQUxMT0NBKSArIFRZUEVBTElHTihBTElHTk9GX0FMTE9DQSwgc2l6ZSk7Cit9CisKKy8q IFJlYWxpZ24gYWxsb2NhKCkncyByZXN1bHQgaWYgc3RyaWN0ZXIgdGhhbiBkZWZhdWx0LiAqLwor c3RhdGljIGlubGluZSB2b2lkICoKK3BnX3N0YWNrX3JlYWxpZ24odm9pZCAqcHRyLCBzaXplX3Qg YWxpZ24pCit7CisJQXNzZXJ0KHBnX3N0YWNrX3B0cl9pc19hbGlnbmVkX3AocHRyLCBBTElHTk9G X0FMTE9DQSkpOworCisJaWYgKGFsaWduIDw9IEFMSUdOT0ZfQUxMT0NBKQorCQlyZXR1cm4gcHRy OworCisJcmV0dXJuICh2b2lkICopIFRZUEVBTElHTihhbGlnbiwgcHRyKTsKK30KKworLyogV291 bGQgd2Ugb3ZlcmZsb3cgcGdfc3RhY2tfZXN0aW1hdGVfYWxsb2NhKCkncyBhcml0aG1ldGljPyAq Lworc3RhdGljIGlubGluZSBib29sCitwZ19zdGFja19hbGxvY2Ffd291bGRfb3ZlcmZsb3dfcChj b25zdCBjaGFyICpsb3dlciwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbikKK3sKKwlpZiAoYWxp Z24gPD0gQUxJR05PRl9BTExPQ0EpCisJeworCQkvKgorCQkgKiBwZ19zdGFja19wYWQoKSBkb2Vz bid0IGJvdGhlciB0byBhbGlnbiBpdHMgcmVzdWx0IHRvIEFMSUdOT0ZfQUxMT0NBCisJCSAqIHVu bGVzcyByZXF1ZXN0ZWQgYWxpZ25tZW50IGlzIHN0cmljdGVyIGFuZCB0aGUgcGFkZGluZyBjb3Vs ZCBhZmZlY3QKKwkJICogdGhlIHJlc3VsdCBvZiB4IDwgcGdfc3RhY2tfbGltaXQuICBUaGUgbGF0 dGVyIGlzIHVzdWFsbHkKKwkJICogQUxJR05PRl9BTExPQ0EtYWxpZ25lZCBpdHNlbGYsIHNvIGl0 J2QgYmUgYSB3YXN0ZSBvZiBjeWNsZXMgaGVyZQorCQkgKiBhbmQgaW4gcGdfc3RhY2tfZXN0aW1h dGVfYWxsb2NhKCkuCisJCSAqLworCQlBc3NlcnQocGdfc3RhY2tfcGFkKHNpemUsIGFsaWduKSA9 PSBzaXplKTsKKwkJcmV0dXJuIHNpemUgPiAodWludHB0cl90KSBsb3dlcjsKKwl9CisKKwkvKiBE b24ndCBsZXQgcGdfc3RhY2tfcGFkKCkgb3ZlcmZsb3cuICovCisJaWYgKHNpemUgPiBNYXhBbGxv Y1NpemUpCisJCXJldHVybiB0cnVlOworCisJLyogRG9uJ3QgbGV0IHBnX3N0YWNrX2VzdGltYXRl X2FsbG9jYSgpIHVuZGVyZmxvdy4gKi8KKwlyZXR1cm4gcGdfc3RhY2tfcGFkKHNpemUsIGFsaWdu KSA+ICh1aW50cHRyX3QpIGxvd2VyOworfQorCisvKgorICogRXN0aW1hdGUgcmVzdWx0IG9mIGEg cHJvcG9zZWQgYWxsb2NhKCksIHdoaWNoIHdvdWxkIGJlY29tZSB0aGUgbmV3CisgKiBwZ19zdGFj a19sb3dlcl9ib3VuZCgpLiAgVGhlIG9ubHkgcGVybWl0dGVkIHVzZSBvZiB0aGlzIHBvaW50ZXIg aXMgdG8gY2hlY2sKKyAqIGlmIGl0J2QgYmUgYmVsb3cgcGdfc3RhY2tfbGltaXQuCisgKi8KK3N0 YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCitwZ19zdGFja19lc3RpbWF0ZV9hbGxvY2EoY29uc3Qg Y2hhciAqbG93ZXIsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24pCit7CisJQXNzZXJ0KCFwZ19z dGFja19hbGxvY2Ffd291bGRfb3ZlcmZsb3dfcChsb3dlciwgc2l6ZSwgYWxpZ24pKTsKKworCXJl dHVybiBsb3dlciAtIHBnX3N0YWNrX3BhZChzaXplLCBhbGlnbik7Cit9CisKKy8qIFdvdWxkIGEg cHJvcG9zZWQgYWxsb2NhKCkgY2FsbCBleGNlZWQgb3VyIGxpbWl0PyAqLworc3RhdGljIGlubGlu ZSBib29sCitwZ19zdGFja19hbGxvY2Ffd291bGRfZml0X3AoY29uc3QgY2hhciAqbG93ZXIsIGNv bnN0IGNoYXIgKmxpbWl0LAorCQkJCQkJCXNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24pCit7CisJ cmV0dXJuICFwZ19zdGFja19hbGxvY2Ffd291bGRfb3ZlcmZsb3dfcChsb3dlciwgc2l6ZSwgYWxp Z24pICYmCisJCXBnX3N0YWNrX2VzdGltYXRlX2FsbG9jYShsb3dlciwgc2l6ZSwgYWxpZ24pID49 IGxpbWl0OworfQorCisjZW5kaWYKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3JlZ3Jlc3MuYyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcmVncmVzcy5jCmluZGV4IGY4MmEwYTEy ZThmLi4zOTZjNThhMzM5NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9yZWdyZXNzLmMK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9yZWdyZXNzLmMKQEAgLTEzOTksNiArMTM5OSw5IEBAIHRl c3RfcGdfc3RhY2tfYWxsb2MoUEdfRlVOQ1RJT05fQVJHUykKIAlERUNMQVJFX1BHX1NUQUNLX1NJ WkUoMTAyNCAqIDgpOwogCiAJLyogVG9vIGJpZyBmb3IgdGhlIHN0YWNrLiAqLworI2lmZGVmIFBH X1NUQUNLX1VTRV9BTExPQ0EKKwlBc3NlcnQoIXBnX3N0YWNrX2FsbG9jYV93b3VsZF9maXRfcChw Z19zdGFja19sb3dlcl9ib3VuZCgpLCBwZ19zdGFja19saW1pdCwgMTAwMDAsIDgpKTsKKyNlbmRp ZgogCXAgPSBwZ19zdGFja19hbGxvYygxMDAwMCk7CiAJQXNzZXJ0KCFwZ19zdGFja19wdHJfcChw KSk7CiAJcGdfc3RhY2tfZnJlZShwKTsKQEAgLTE0NDUsMTAgKzE0NDgsMzMgQEAgdGVzdF9wZ19z dGFja19hbGxvYyhQR19GVU5DVElPTl9BUkdTKQogCVBHX0VORF9UUlkoKTsKIAlBc3NlcnQocmFp c2VkX2Vycm9yKTsKIAorI2lmZGVmIFBHX1NUQUNLX1VTRV9BTExPQ0EKKwkvKiBPdmVyZmxvdyBk ZWZlbnNlcyBpbiBsaW1pdCBjb21wdXRhdGlvbnMuICovCisJQXNzZXJ0KHBnX3N0YWNrX2FsbG9j YV93b3VsZF9vdmVyZmxvd19wKHBnX3N0YWNrX2xvd2VyX2JvdW5kKCksIChzaXplX3QpIC0xLCAx MDI0KSk7CisJQXNzZXJ0KHBnX3N0YWNrX2FsbG9jYV93b3VsZF9vdmVyZmxvd19wKHBnX3N0YWNr X2xvd2VyX2JvdW5kKCksIChzaXplX3QpIC0xLCA4KSk7CisJQXNzZXJ0KCFwZ19zdGFja19hbGxv Y2Ffd291bGRfb3ZlcmZsb3dfcChwZ19zdGFja19sb3dlcl9ib3VuZCgpLAorCQkJCQkJCQkJCQkg TWF4QWxsb2NTaXplLAorCQkJCQkJCQkJCQkgMTAyNCkpOworCUFzc2VydChwZ19zdGFja19hbGxv Y2Ffd291bGRfb3ZlcmZsb3dfcChwZ19zdGFja19sb3dlcl9ib3VuZCgpLAorCQkJCQkJCQkJCQlN YXhBbGxvY1NpemUgKyAxLAorCQkJCQkJCQkJCQkxMDI0KSk7CisJQXNzZXJ0KHBnX3N0YWNrX2Fs bG9jYV93b3VsZF9vdmVyZmxvd19wKHBnX3N0YWNrX2xvd2VyX2JvdW5kKCksCisJCQkJCQkJCQkJ CShzaXplX3QpIHBnX3N0YWNrX2xvd2VyX2JvdW5kKCkgKyAxLAorCQkJCQkJCQkJCQk4KSk7Cisj ZW5kaWYKKwogCS8qIFRlc3QgYSByYW5nZSBvZiBhbGlnbm1lbnRzLiAqLworI2lmZGVmIFBHX1NU QUNLX1VTRV9BTExPQ0EKKyNkZWZpbmUgVEVTVF9BTElHTiBBTElHTk9GX0FMTE9DQQorI2Vsc2UK ICNkZWZpbmUgVEVTVF9BTElHTiBNQVhJTVVNX0FMSUdOT0YKKyNlbmRpZgogCWZvciAoaW50IGkg PSAxOyBpIDw9IFRFU1RfQUxJR04gKiA4OyBpICo9IDIpCiAJeworI2lmZGVmIFBHX1NUQUNLX1VT RV9BTExPQ0EKKwkJY29uc3QgY2hhciAqZXN0aW1hdGUgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZ OworI2VuZGlmCisKIAkJLyogQWxsb2NhdGUgYW5kIGNoZWNrIGFsaWdubWVudCBpcyBhcyByZXF1 ZXN0ZWQsIHdoZW4gd2UgdXNlIHBhbGxvYygpLiAqLwogCQlwID0gcGdfc3RhY2tfYWxsb2NfYWxp Z25lZCgxMDI0ICogOCwgaSk7CiAKQEAgLTE0NTYsMTEgKzE0ODIsNjMgQEAgdGVzdF9wZ19zdGFj a19hbGxvYyhQR19GVU5DVElPTl9BUkdTKQogCQlBc3NlcnQocGdfc3RhY2tfcHRyX2lzX2FsaWdu ZWRfcChwLCBpKSk7CiAJCXBnX3N0YWNrX2ZyZWUocCk7CiAKKyNpZmRlZiBQR19TVEFDS19VU0Vf QUxMT0NBCisJCS8qIExvd2VyIGJvdW5kIHNob3VsZCBiZSBBTElHTk9GX0FMTE9DQS1hbGlnbmVk IGF0IGFsbCB0aW1lcy4gKi8KKwkJQXNzZXJ0KHBnX3N0YWNrX3B0cl9pc19hbGlnbmVkX3AocGdf c3RhY2tfbG93ZXJfYm91bmQoKSwKKwkJCQkJCQkJCQkgQUxJR05PRl9BTExPQ0EpKTsKKworCQkv KiBFc3RpbWF0ZSB3aGF0IGFsbG9jYSgpIHdpbGwgcmV0dXJuLiAqLworCQllc3RpbWF0ZSA9IHBn X3N0YWNrX2VzdGltYXRlX2FsbG9jYShwZ19zdGFja19sb3dlcl9ib3VuZCgpLCBpLCBpKTsKKwor CQkvKiBCYXNpYyBzYW5pdHkgY2hlY2tzIG9uIHRoZSBlc3RpbWF0ZXMuICovCisJCWlmIChpID4g QUxJR05PRl9BTExPQ0EpCisJCXsKKwkJCXNpemVfdAkJc2l6ZSBQR19VU0VEX0ZPUl9BU1NFUlRT X09OTFkgPSBpOworCQkJc2l6ZV90CQlhbGlnbiBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBp OworCQkJc2l6ZV90CQlwYWRkaW5nIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWSA9IGFsaWduIC0g QUxJR05PRl9BTExPQ0E7CisKKwkJCUFzc2VydChwZ19zdGFja19wdHJfaXNfYWxpZ25lZF9wKGVz dGltYXRlLCBBTElHTk9GX0FMTE9DQSkpOworCQkJQXNzZXJ0KGVzdGltYXRlID09IHBnX3N0YWNr X2xvd2VyX2JvdW5kKCkgLSBzaXplIC0gcGFkZGluZyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlz aXplX3QJCXNpemUgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gaTsKKworCQkJQXNzZXJ0KGVz dGltYXRlID09IHBnX3N0YWNrX2xvd2VyX2JvdW5kKCkgLSBzaXplKTsKKwkJfQorI2VuZGlmCisK IAkJLyogQWxsb2NhdGUgYW5kIGNoZWNrIGFsaWdubWVudCBpcyBhcyByZXF1ZXN0ZWQuICovCiAJ CXAgPSBwZ19zdGFja19hbGxvY19hbGlnbmVkKGksIGkpOwogCiAJCUFzc2VydChwZ19zdGFja19w dHJfcChwKSk7CiAJCUFzc2VydChwZ19zdGFja19wdHJfaXNfYWxpZ25lZF9wKHAsIGkpKTsKKwor I2lmZGVmIFBHX1NUQUNLX0NPTVBBUkVfQUxMT0NBX0VTVElNQVRFCisKKwkJLyoKKwkJICogQ2hl Y2sgYWxsb2NhKCkncyBvYnNlcnZlZCBiZWhhdmlvciBhZ2FpbnN0IG91ciBlc3RpbWF0ZS4KKwkJ ICoKKwkJICogRXN0aW1hdGVzIGFyZW4ndCBleHBlY3RlZCB0byBtYXRjaCBwZXJmZWN0bHksIGFu ZCB0aGlzIHdvdWxkIGZhaWwKKwkJICogb24gQ0kgYmVjYXVzZSAtZnNhbml0aXplPWFkZHJlc3Mg Y2hhbmdlcyB0aGUgcmVzdWx0cy4gIFRoZXJlIG1heSBiZQorCQkgKiBhbnkgbnVtYmVyIG9mIG1p bm9yIGRldGFpbHMgd2UgZ2V0IHdyb25nIG9uIHNvbWUgc3lzdGVtIG9yIG90aGVyLgorCQkgKiBJ dCBwYXNzZXMgaW4gcmVndWxhciBidWlsZHMsIGFuZCBpcyB1c2VmdWwgZm9yIGludmVzdGlnYXRp bmcKKwkJICogaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKwkJICovCisJCWlmIChpID4gQUxJR05P Rl9BTExPQ0EpCisJCXsKKwkJCS8qIEVzdGltYXRlIGlzIGZvciB0aGUgbG93ZXIgYm91bmQsIGFu ZCBwIGlzIHJlYWxpZ25lZC4gKi8KKwkJCUFzc2VydChlc3RpbWF0ZSA9PSBwZ19zdGFja19sb3dl cl9ib3VuZCgpKTsKKwkJCUFzc2VydChwID09IChjb25zdCBjaGFyICopIFRZUEVBTElHTihpLCBl c3RpbWF0ZSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogV2UgZG9uJ3QgYm90aGVyIHRvIGFs aWduIGRlZmF1bHQtYWxpZ25tZW50IGVzdGltYXRlcy4gKi8KKwkJCWVzdGltYXRlID0gKGNvbnN0 IGNoYXIgKikgVFlQRUFMSUdOX0RPV04oQUxJR05PRl9BTExPQ0EsIGVzdGltYXRlKTsKKwkJCUFz c2VydChwID09IChjb25zdCBjaGFyICopIFRZUEVBTElHTl9ET1dOKEFMSUdOT0ZfQUxMT0NBLCBl c3RpbWF0ZSkpOworCQkJQXNzZXJ0KHAgPT0gcGdfc3RhY2tfbG93ZXJfYm91bmQoKSk7CisJCX0K KyNlbmRpZgogCX0KIAogCVBHX1JFVFVSTl9WT0lEKCk7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0x NTUpCgo= --0000000000002715e1064d2b7e78 Content-Type: application/octet-stream; name="v4-0008-pg_stack_alloc-Debugging-support-for-alloca.patch" Content-Disposition: attachment; filename="v4-0008-pg_stack_alloc-Debugging-support-for-alloca.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtg50qf7 RnJvbSA3MGIxZDNhMTJjY2Q3M2I2ZTE0Y2MwMGE0ZTMyZTdlZmE5YmI0YjBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTcgTWFyIDIwMjYgMDM6Mjk6MDYgKzEzMDAKU3ViamVjdDogW1BBVENIIHY0 IDA4LzIxXSBwZ19zdGFja19hbGxvYzogRGVidWdnaW5nIHN1cHBvcnQgZm9yIGFsbG9jYSgpLgoK MS4gIElmIGFzc2VydGlvbnMgYXJlIGVuYWJsZWQsIHBnX3N0YWNrX2ZyZWUoKSBub3cgYXNzZXJ0 cyB0aGF0IHN0YWNrCmFkZHJlc3NlcyB3ZXJlIHJldHVybmVkIGJ5IHBnX3N0YWNrX2FsbG9jKCkg YW5kIG5vdCBhbHJlYWR5IGZyZWVkLgoKMi4gIElmIENMT0JCRVJfRlJFRURfTUVNT1JZIGlzIGRl ZmluZWQsIGl0IHdpcGVzIHRoZSBtZW1vcnkgd2l0aCAweDdmLApsaWtlIHBmcmVlKCkuCgozLiAg SWYgLWZzYW5pdGl6ZT1hZGRyZXNzIGlzIGFjdGl2ZSwgaXQgcG9pc29ucyB0aGUgZnJlZWQgbWVt b3J5IHNvIHRoYXQKYW55IGZ1cnRoZXIgYWNjZXNzIGlzIHJlcG9ydGVkLgoKSXQgZG9lcyB0aGlz IGJ5IGFsbG9jYXRpbmcgMTYgYnl0ZXMgb2YgYm9vay1rZWVwaW5nIGRhdGEgb24gdGhlIHN0YWNr CmZvciBldmVyeSBhbGxvY2F0aW9uLCBzbyBzdGFjayBtZW1vcnkgbWlnaHQgcnVuIG91dCBzb29u ZXIuCgpSZXZpZXdlZC1ieToKRGlzY3Vzc2lvbjoKLS0tCiBzcmMvaW5jbHVkZS91dGlscy9wZ19z dGFja19hbGxvYy5oIHwgMTI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMvdGVz dC9yZWdyZXNzL3JlZ3Jlc3MuYyAgICAgICAgIHwgICAxICsKIHNyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0ICAgfCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAxMjcgaW5zZXJ0aW9ucygr KSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wZ19zdGFj a19hbGxvYy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfc3RhY2tfYWxsb2MuaAppbmRleCBhODJl ZDdjZGYwZS4uNjI4NmM0Y2MyN2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BnX3N0 YWNrX2FsbG9jLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfc3RhY2tfYWxsb2MuaApAQCAt MzYsNiArMzYsMTAgQEAKICNpbmNsdWRlICJ1dGlscy9wYWxsb2MuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKIAorI2lmZGVmIF9fU0FOSVRJWkVfQUREUkVTU19fCisjaW5jbHVkZSA8c2FuaXRp emVyL2FzYW5faW50ZXJmYWNlLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2lu Y2x1ZGUgPHVuaXN0ZC5oPgogCkBAIC0xNjYsNiArMTcwLDggQEAKIAkJdm9pZCAqcGdfc3RhY2tf bGV0X3B0ciA9IChwdHIpOwkJCQkJCQkJCVwKIAkJQXNzZXJ0KHBnX3N0YWNrX3B0cl9wKHBnX3N0 YWNrX2xldF9wdHIpIHx8CQkJCQkJXAogCQkJICAgcGdfc3RhY2tfbWF5YmVfcGZyZWUpOwkJCQkJ CQkJCVwKKwkJaWYgKHBnX3N0YWNrX3B0cl9wKHBnX3N0YWNrX2xldF9wdHIpKQkJCQkJCQlcCisJ CQlwZ19zdGFja19kZWJ1Z19mcmVlKHBnX3N0YWNrX2xldF9wdHIpOwkJCQkJCVwKIAkJaWYgKHVu bGlrZWx5KHBnX3N0YWNrX21heWJlX3BmcmVlKSAmJgkJCQkJCQlcCiAJCQkhcGdfc3RhY2tfcHRy X3AocGdfc3RhY2tfbGV0X3B0cikpCQkJCQkJCVwKIAkJCXBmcmVlKHBnX3N0YWNrX2xldF9wdHIp OwkJCQkJCQkJCVwKQEAgLTQwOCw2ICs0MTQsNyBAQCBwZ19zdGFja19hbGxvY19hbGlnbmVkX2Zy b21fYXJyYXkoY2hhciAqYXJyYXksCiAvKiBSZXF1aXJlZCBpbnRlcmZhY2UgbWFjcm9zLiAqLwog CiAjZGVmaW5lIERFQ0xBUkVfUEdfU1RBQ0tfSU1QTChzaXplKQkJCQkJCQkJCQlcCisJcGdfc3Rh Y2tfZGVidWdfZGVjbAkJCQkJCQkJCQkJCQlcCiAJcGdfc3RhY2tfaW1wbF9kZWNsCQkJCQkJCQkJ CQkJCVwKIAljb25zdCBjaGFyICpwZ19zdGFja19saW1pdCA9CQkJCQkJCQkJCVwKIAkJcGdfc3Rh Y2tfY29tcHV0ZV9saW1pdChwZ19zdGFja19sb3dlcl9ib3VuZCgpLCAoc2l6ZSkpCkBAIC01MDks OSArNTE2LDEyIEBAIHBnX3N0YWNrX2NvbXB1dGVfbGltaXQoY29uc3QgY2hhciAqc3AsIHNpemVf dCBzaXplKQogICogdHJhY2tpbmcgdGhlIGxvd2VyIGJvdW5kIGlmIG5lY2Vzc2FyeS4KICAqLwog I2RlZmluZSBwZ19zdGFja19hbGxvY2FfYWxpZ25lZChzaXplLCBhbGlnbikJCQkJCQkJXAotCXBn X3N0YWNrX3JlYWxpZ24oCQkJCQkJCQkJCQkJCVwKLQkJcGdfc3RhY2tfdHJhY2socGdfc3RhY2tf YWxsb2NhKHBnX3N0YWNrX3BhZCgoc2l6ZSksCShhbGlnbikpKSksIFwKLQkJKGFsaWduKSkKKwlw Z19zdGFja19kZWJ1Z19hbGxvYygJCQkJCQkJCQkJCQlcCisJCXBnX3N0YWNrX3JlYWxpZ24oCQkJ CQkJCQkJCQkJXAorCQkJcGdfc3RhY2tfdHJhY2soCQkJCQkJCQkJCQkJXAorCQkJCXBnX3N0YWNr X2FsbG9jYShwZ19zdGFja19wYWQoKHNpemUpLCAoYWxpZ24pKSkpLAkJXAorCQkJKGFsaWduKSks CQkJCQkJCQkJCQkJCVwKKwkJKHNpemUpKQogCiAvKiBSZXNlcnZlIHBhZGRpbmcgc3BhY2UgZm9y IHBnX3N0YWNrX3JlYWxpZ24oKSBpZiBzdHJpY3RlciB0aGFuIGRlZmF1bHQuICovCiBzdGF0aWMg aW5saW5lIHNpemVfdApAQCAtNTgyLDYgKzU5MiwxMTggQEAgcGdfc3RhY2tfYWxsb2NhX3dvdWxk X2ZpdF9wKGNvbnN0IGNoYXIgKmxvd2VyLCBjb25zdCBjaGFyICpsaW1pdCwKIAkJcGdfc3RhY2tf ZXN0aW1hdGVfYWxsb2NhKGxvd2VyLCBzaXplLCBhbGlnbikgPj0gbGltaXQ7CiB9CiAKKy8qIERl YnVnZ2luZyBzdXBwb3J0IGZvciBQR19TVEFDS19VU0VfQUxMT0NBLiAqLworCisjaWYgZGVmaW5l ZChVU0VfQVNTRVJUX0NIRUNLSU5HKSB8fAkJCQkJCQkJCQlcCisJZGVmaW5lZChDTE9CQkVSX0ZS RUVEX01FTU9SWSkgfHwJCQkJCQkJCQlcCisJZGVmaW5lZChfX1NBTklUSVpFX0FERFJFU1NfXykK KworI2RlZmluZSBQR19TVEFDS19ERUJVR19OSUwgSU5UMzJfTUFYCisKKy8qCisgKiBFbnRyaWVz IGluIGEgbGlzdCBvZiBub3QteWV0LWZyZWVkIGFsbG9jYXRpb25zLiAgU2luY2UgdGhlc2UgYXJl IGFsc28KKyAqIGFsbG9jYXRlZCB3aXRoIGFsbG9jYSgpLCByZWxhdGl2ZSBwb2ludGVycyBhcmUg dXNlZCB0byBzcXVlZXplIGl0IGRvd24gdG8KKyAqIDE2IGJ5dGVzIHJhdGhlciB0aGFuIDMyIChj b25zaWRlcmluZyB0eXBpY2FsIEFMSUdOT0ZfQUxMT0NBKS4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg cGdfc3RhY2tfZGVidWdfbm9kZQoreworCXZvaWQJICAgKnB0cjsKKwl1aW50MzIJCXNpemU7CisJ aW50MzIJCW5leHQ7Cit9IHBnX3N0YWNrX2RlYnVnX25vZGU7CisKKyNkZWZpbmUgcGdfc3RhY2tf ZGVidWdfZGVjbAkJCQkJCQkJCQkJCVwKKwlwZ19zdGFja19kZWJ1Z19ub2RlICpwZ19zdGFja19k ZWJ1Z19oZWFkID0gTlVMTDsJCQkJCVwKKworLyogQ2FsbGVkIHdpdGggYWxsb2NhKCkgcmVzdWx0 IGFscmVhZHkgcmVhbGlnbmVkIGlmIHJlcXVpcmVkLiAqLworI2RlZmluZSBwZ19zdGFja19kZWJ1 Z19hbGxvYyhwdHIsIHNpemUpCQkJCQkJCQkJXAorCXBnX3N0YWNrX2RlYnVnX2xpbmsoJnBnX3N0 YWNrX2RlYnVnX2hlYWQsCQkJCQkJCVwKKwkJCQkJCWFsbG9jYShzaXplb2YocGdfc3RhY2tfZGVi dWdfbm9kZSkpLAkJCVwKKwkJCQkJCShwdHIpLAkJCQkJCQkJCQkJXAorCQkJCQkJKHNpemUpKQor CisvKiBDYWxsZWQgYnkgcGdfc3RhY2tfZnJlZSgpLiAqLworI2RlZmluZSBwZ19zdGFja19kZWJ1 Z19mcmVlKHB0cikJCQkJCQkJCQkJXAorCXBnX3N0YWNrX2RlYnVnX3VubGluaygmcGdfc3RhY2tf ZGVidWdfaGVhZCwgKHB0cikpCisKKy8qIEdldCBwb2ludGVyIHRvIHRoZSBuZXh0IG5vZGUuICov CitzdGF0aWMgaW5saW5lIHBnX3N0YWNrX2RlYnVnX25vZGUgKgorcGdfc3RhY2tfZGVidWdfZ2V0 X25leHQoY29uc3QgcGdfc3RhY2tfZGVidWdfbm9kZSAqbm9kZSkKK3sKKwlpZiAobm9kZS0+bmV4 dCA9PSBQR19TVEFDS19ERUJVR19OSUwpCisJCXJldHVybiBOVUxMOworCWVsc2UKKwkJcmV0dXJu IChwZ19zdGFja19kZWJ1Z19ub2RlICopICgoY2hhciAqKSBub2RlICsgbm9kZS0+bmV4dCk7Cit9 CisKKy8qIFNldCBwb2ludGVyIHRvIHRoZSBuZXh0IG5vZGUuICovCitzdGF0aWMgaW5saW5lIHZv aWQKK3BnX3N0YWNrX2RlYnVnX3NldF9uZXh0KHBnX3N0YWNrX2RlYnVnX25vZGUgKm5vZGUsCisJ CQkJCQljb25zdCBwZ19zdGFja19kZWJ1Z19ub2RlICpuZXh0KQoreworCWlmIChuZXh0ID09IE5V TEwpCisJCW5vZGUtPm5leHQgPSBQR19TVEFDS19ERUJVR19OSUw7CisJZWxzZQorCQlub2RlLT5u ZXh0ID0gKGNvbnN0IGNoYXIgKikgbmV4dCAtIChjb25zdCBjaGFyICopIG5vZGU7Cit9CisKKy8q IFBvcHVsYXRlIGFuZCBpbnNlcnQgYSBuZXcgZW50cnkuICovCitzdGF0aWMgaW5saW5lIHZvaWQg KgorcGdfc3RhY2tfZGVidWdfbGluayhwZ19zdGFja19kZWJ1Z19ub2RlICoqaGVhZCwKKwkJCQkJ cGdfc3RhY2tfZGVidWdfbm9kZSAqbm9kZSwKKwkJCQkJdm9pZCAqcHRyLAorCQkJCQlzaXplX3Qg c2l6ZSkKK3sKKwlub2RlLT5wdHIgPSBwdHI7CisJbm9kZS0+c2l6ZSA9IHNpemU7CisJcGdfc3Rh Y2tfZGVidWdfc2V0X25leHQobm9kZSwgKmhlYWQpOworCSpoZWFkID0gbm9kZTsKKwlyZXR1cm4g cHRyOworfQorCisvKiBTZWFyY2ggZm9yIGFuIGVudHJ5IGFuZCBjbG9iYmVyL3BvaXNvbiBpdC4g Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcGdfc3RhY2tfZGVidWdfdW5saW5rKHBnX3N0YWNrX2Rl YnVnX25vZGUgKipoZWFkLCB2b2lkICpwdHIpCit7CisJcGdfc3RhY2tfZGVidWdfbm9kZSAqcHJl diA9IE5VTEw7CisJcGdfc3RhY2tfZGVidWdfbm9kZSAqbm9kZSA9ICpoZWFkOworCisJd2hpbGUg KG5vZGUpCisJeworCQlpZiAobm9kZS0+cHRyID09IHB0cikKKwkJeworI2lmZGVmIENMT0JCRVJf RlJFRURfTUVNT1JZCisJCQltZW1zZXQocHRyLCAweDdmLCBub2RlLT5zaXplKTsKKyNlbmRpZgor I2lmZGVmIF9fU0FOSVRJWkVfQUREUkVTU19fCisJCQlBU0FOX1BPSVNPTl9NRU1PUllfUkVHSU9O KG5vZGUtPnB0ciwgbm9kZS0+c2l6ZSk7CisjZW5kaWYKKwkJCWlmIChwcmV2KQorCQkJCXBnX3N0 YWNrX2RlYnVnX3NldF9uZXh0KHByZXYsCisJCQkJCQkJCQkJcGdfc3RhY2tfZGVidWdfZ2V0X25l eHQobm9kZSkpOworCQkJZWxzZQorCQkJCSpoZWFkID0gcGdfc3RhY2tfZGVidWdfZ2V0X25leHQo bm9kZSk7CisJCQlyZXR1cm47CisJCX0KKwkJcHJldiA9IG5vZGU7CisJCW5vZGUgPSBwZ19zdGFj a19kZWJ1Z19nZXRfbmV4dChub2RlKTsKKwl9CisJQXNzZXJ0KGZhbHNlICYmICJwZ19zdGFja19m cmVlKCkgb2YgdW5rbm93biBwb2ludGVyIik7Cit9CisKKyNlbHNlCisKKy8qIE5vIGRlYnVnIHN1 cHBvcnQgbmVlZGVkLiAqLworI2RlZmluZSBwZ19zdGFja19kZWJ1Z19kZWNsCisjZGVmaW5lIHBn X3N0YWNrX2RlYnVnX2FsbG9jKHB0ciwgc2l6ZSkgKHB0cikKKworI2VuZGlmCisKKyNlbmRpZgor CisvKiBEZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4gKi8KKyNpZm5kZWYgcGdfc3RhY2tf ZGVidWdfZnJlZQorI2RlZmluZSBwZ19zdGFja19kZWJ1Z19mcmVlKHB0cikKICNlbmRpZgogCiAj ZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcmVncmVzcy5jIGIvc3JjL3Rlc3Qv cmVncmVzcy9yZWdyZXNzLmMKaW5kZXggMzk2YzU4YTMzOTQuLmMzMjY1MGQ4Yjc4IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3JlZ3Jlc3MuYworKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Jl Z3Jlc3MuYwpAQCAtMTQwOSw2ICsxNDA5LDcgQEAgdGVzdF9wZ19zdGFja19hbGxvYyhQR19GVU5D VElPTl9BUkdTKQogCS8qIEFjY2VwdGFibGUgc2l6ZS4gKi8KIAlwID0gcGdfc3RhY2tfYWxsb2Mo MTApOwogCUFzc2VydChwZ19zdGFja19wdHJfcChwKSk7CisJcGdfc3RhY2tfZnJlZShwKTsKIAog CS8qIEFkZHJlc3NlcyBzaG91bGQgbW92ZSBkb3dud2FyZHMuICovCiAJcDIgPSBwZ19zdGFja19h bGxvYygxMCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDUyZjg2MDNhN2JlLi5lMWVk ODM2M2M2OSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysr IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTM5ODMsNiArMzk4Myw3IEBA IHBnX3NoYTUxMl9jdHgKIHBnX3NuYXBzaG90CiBwZ19zcGVjaWFsX2Nhc2UKIHBnX3N0YWNrX2Jh c2VfdAorcGdfc3RhY2tfZGVidWdfbm9kZQogcGdfdGVybmFyeQogcGdfdGltZV90CiBwZ190aW1l X3VzZWNfdAotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002715e1064d2b7e78 Content-Type: application/octet-stream; name="v4-0009-ci-Define-PG_STACK_USE_ARRAY-for-FreeBSD-task.patch" Content-Disposition: attachment; filename="v4-0009-ci-Define-PG_STACK_USE_ARRAY-for-FreeBSD-task.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtg5p7e8 RnJvbSAyNDE5MjM0MGNiN2U4YzdmYzkwNWY0YWRlM2UyMWMyOWY5YWFmMzdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgMTIgTWFyIDIwMjYgMjM6MDc6MzMgKzEzMDAKU3ViamVjdDogW1BBVENIIHY0 IDA5LzIxXSBjaTogRGVmaW5lIFBHX1NUQUNLX1VTRV9BUlJBWSBmb3IgRnJlZUJTRCB0YXNrLgoK VGhpcyBwcm92aWRlcyB0ZXN0IGNvdmVyYWdlIGZvciB0aGUgZmFsbGJhY2sgY29kZSBpbiBwZ19z dGFja19hbGxvYy5oLAp0aGF0IHdlIHdvdWxkIG90aGVyd2lzZSBsYWNrIHNpbmNlIGFsbCBtb2Rl cm4gc3lzdGVtcyBoYXZlIE1TVkMgYWxsb2NhKCkKb3IgR0NDL0NsYW5nIGJ1aWx0aW5zLgoKUmV2 aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogLmNpcnJ1cy50YXNrcy55bWwgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS8u Y2lycnVzLnRhc2tzLnltbCBiLy5jaXJydXMudGFza3MueW1sCmluZGV4IDQ4NDFhMjA0MjQ4Li4y MzU4ODYxMDNlMCAxMDA2NDQKLS0tIGEvLmNpcnJ1cy50YXNrcy55bWwKKysrIGIvLmNpcnJ1cy50 YXNrcy55bWwKQEAgLTE4MCw3ICsxODAsNyBAQCB0YXNrOgogICAgIERJU0tfU0laRTogNTAKIAog ICAgIENDQUNIRV9ESVI6IC90bXAvY2NhY2hlX2RpcgotICAgIENQUEZMQUdTOiAtRFJFTENBQ0hF X0ZPUkNFX1JFTEVBU0UgLURFTkZPUkNFX1JFR1JFU1NJT05fVEVTVF9OQU1FX1JFU1RSSUNUSU9O UworICAgIENQUEZMQUdTOiAtRFJFTENBQ0hFX0ZPUkNFX1JFTEVBU0UgLURFTkZPUkNFX1JFR1JF U1NJT05fVEVTVF9OQU1FX1JFU1RSSUNUSU9OUyAtRFBHX1NUQUNLX1VTRV9BUlJBWQogICAgIENG TEFHUzogLU9nIC1nZ2RiCiAKICAgICAjIFNldmVyYWwgYnVpbGRmYXJtIGFuaW1hbHMgZW5hYmxl IHRoZXNlIG9wdGlvbnMuIFdpdGhvdXQgdGVzdGluZyB0aGVtCi0tIAoyLjUwLjEgKEFwcGxlIEdp dC0xNTUpCgo= --0000000000002715e1064d2b7e78 Content-Type: application/x-gzip; name="v4-pg_stack_alloc-candidate-patches.tgz" Content-Disposition: attachment; filename="v4-pg_stack_alloc-candidate-patches.tgz" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtg5usb9 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 --0000000000002715e1064d2b7e78--