From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=i4CEAS2f; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=kernel.org policy.dmarc=quarantine Received: from tor.source.kernel.org (tor.source.kernel.org [IPv6:2600:3c04:e001:324:0:1991:8:25]) by mail.toke.dk (Postfix) with ESMTPS id 97D4E17243AA for ; Wed, 30 Sep 2026 17:12:50 +0200 (CEST) Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id D481660239; Wed, 30 Sep 2026 15:12:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E3CD51F00893; Wed, 30 Sep 2026 15:12:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790781168; bh=cCqYgF7O13HbZYEuyT2OOUmn2knOMWRAAx9dC6/FytM=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=i4CEAS2fMXTxICZBtGvGFvDTdoYO2hnjLVHstCFvZZ0/MTPQRbv7DtV4JCcmbzeYN PZ8KucJrxOfn4FDU33ziDI7r4pqltzBQq2ZKbQfgQStRW6DrKrvk23ldq7pO4KcHO6 oNJhd1UHyu9AsC+l5qYQsELowXG2s57wTW4M1cKwnOP+F8fMmaZLAJp14swomQ8Lgb +grDYRX5QUWm/205NJdgfSFRdlVTMcTn8O+TLCYjgDJje1jrn18WhtA1OdKtc7gYBn esKOAHVfY2EQKbcI/WKOESqi67lQ26h2d7q0ZcsHvZguHwoKB548VsD+uWSyBFidb9 MrfijyT1cwHZg== From: netdev-bot+sashiko@kernel.org To: ndaugoing@gmail.com Cc: toke@toke.dk, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, jhs@mojatatu.com, jiri@resnulli.us, cake@lists.bufferbloat.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Date: Wed, 30 Sep 2026 15:12:47 +0000 Message-ID: <179078116751.434549.16979345983406823825@kernel.org> In-Reply-To: <20260927131009.24250-3-ndaugoing@gmail.com> References: <20260927131009.24250-3-ndaugoing@gmail.com> X-sashiko-severity: Medium Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MailFrom: netdev-bot+sashiko@kernel.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation Message-ID-Hash: KAUTY4DVGWCPEDAW3A7KXUYQZLV5P45J X-Message-ID-Hash: KAUTY4DVGWCPEDAW3A7KXUYQZLV5P45J X-Mailman-Approved-At: Thu, 01 Oct 2026 09:53:17 +0200 X-Mailman-Version: 3.3.10 Precedence: list Subject: [Cake] Re: [PATCH net v3 2/2] net/sched: sch_cake: validate transport header offset in cake_overhead() List-Id: Cake - FQ_codel the next generation Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MSBwb3RlbnRpYWwNCmlzc3VlKHMpIHRvIGNvbnNpZGVyLg0KDQpDcml0aWNhbDogMCDCtyBIaWdo OiAwICgxKSDCtyBNZWRpdW06IDEgKDEpIMK3IExvdzogMA0KDQpJZiB5b3UgYmVsaWV2ZSBub25l IG9mIHRoZSBpc3N1ZXMgYXJlIGxlZ2l0aW1hdGUsIHBsZWFzZSByZXBseSB0byBlYWNoDQppc3N1 ZSBvZiBNZWRpdW0gc2V2ZXJpdHkgb3IgaGlnaGVyIGFuZCBleHBsYWluIHdoeSB0aGUgQUkgaXMg d3JvbmcuDQpJZiBhbnkgb2YgdGhlbSBhcmUgbGVnaXRpbWF0ZSBhbmQgeW91IHBsYW4gdG8gcmVz cGluLCBwbGVhc2UgbGV0IHBhdGNod29yaw0Ka25vdyBieSBpbmNsdWRpbmcgInB3LWJvdDogY3Ii IGFzIGEgc2VwYXJhdGUgbGluZSBhdCB0aGUgZW5kIG9mIHlvdXIgcmVwbHkNCihvbmUgc3VjaCBy ZXBseSBwZXIgc2VyaWVzIGlzIGVub3VnaCkuDQoNCi0gW01lZGl1bV0gVGhlIG5ldyBgaWYgKHVu bGlrZWx5KGhkcl9sZW4gPCAwKSlgIGNoZWNrIGluIGNha2Vfb3ZlcmhlYWQoKQ0KICBvbmx5IGNh dGNoZXMgc3RhbGUgdHJhbnNwb3J0IG9mZnNldHMgdGhhdCBoYXZlIGdvbmUgbmVnYXRpdmUuDQoN ClByZS1leGlzdGluZyBpc3N1ZXM6DQotIFtIaWdoXSBUaGUgc2FtZSBuZWdhdGl2ZSB0cmFuc3Bv cnQgb2Zmc2V0IHN0b3JlZCBpbiBhbiB1bnNpZ25lZCBoZHJfbGVuDQogIGFsc28gZXhpc3RzIGlu IHFkaXNjX3BrdF9sZW5fc2Vnc19pbml0KCkgKG5ldC9jb3JlL2Rldi5jKS4NCi0gW01lZGl1bV0g SW4gY2FrZV9vdmVyaGVhZCgpLCBgbGFzdF9sZW4gPSBza2ItPmxlbiAtIHNoaW5mby0+Z3NvX3Np emUgKg0KICAoc2VncyAtIDEpYCBjYW4gd3JhcCBhcyBhIHUzMiBhZnRlciBhbiBlZ3Jlc3Mgb3Ig Y2xhc3NpZmllciBCUEYgaGVhZGVy4oCmDQoNCi0tDQoNCm5ldC9zY2hlZDogc2NoX2Nha2U6IHZh bGlkYXRlIHRyYW5zcG9ydCBoZWFkZXIgb2Zmc2V0IGluIGNha2Vfb3ZlcmhlYWQoKQ0KDQpXaGVu IHRoZSB0cmFuc3BvcnQgaGVhZGVyIHdhcyBuZXZlciBzZXQsIGNha2Vfb3ZlcmhlYWQoKSBub3cg ZmFsbHMgYmFjaw0KdG8gY2FrZV9jYWxjX292ZXJoZWFkKCksIGFzIHFkaXNjX3BrdF9sZW5fc2Vn c19pbml0KCkgZG9lcy4gVGhlIHBhdGNoDQphbHNvIGNoYW5nZXMgaGRyX2xlbiB0byBpbnQgYW5k IHVzZXMgdGhlIHNhbWUgZmFsbGJhY2sgd2hlbiB0aGUgdHJhbnNwb3J0DQpvZmZzZXQgaXMgbmVn YXRpdmUuIEEgbmVnYXRpdmUgb2Zmc2V0IGNhbiBoYXBwZW4gYWZ0ZXIgZWdyZXNzIG9yDQpjbGFz c2lmaWVyIGhlYWRlciBtYW5nbGluZywgZm9yIGV4YW1wbGUgYnBmX3NrYl9hZGp1c3Rfcm9vbSgp IGluDQpCUEZfQURKX1JPT01fTUFDIG1vZGUuDQoNCj4gZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9z Y2hfY2FrZS5jIGIvbmV0L3NjaGVkL3NjaF9jYWtlLmMNCj4gaW5kZXggYjBkNjA0YTcwNTJhOS4u NDU5NjljMWI5NWZjOSAxMDA2NDQNCj4gLS0tIGEvbmV0L3NjaGVkL3NjaF9jYWtlLmMNCj4gKysr IGIvbmV0L3NjaGVkL3NjaF9jYWtlLmMNCg0KWyAuLi4gXQ0KDQo+IEBAIC0xNDI0LDEwICsxNDI1 LDE2IEBAIHN0YXRpYyB1MzIgY2FrZV9vdmVyaGVhZChzdHJ1Y3QgY2FrZV9zY2hlZF9kYXRhICpx LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KPiAgCQlyZXR1cm4gY2FrZV9jYWxjX292ZXJo ZWFkKHEsIGxlbiwgb2ZmKTsNCj4gIA0KPiAgCS8qIGJvcnJvd2VkIGZyb20gcWRpc2NfcGt0X2xl bl9zZWdzX2luaXQoKSAqLw0KPiAtCWlmICghc2tiLT5lbmNhcHN1bGF0aW9uKQ0KPiArCWlmICgh c2tiLT5lbmNhcHN1bGF0aW9uKSB7DQo+ICsJCWlmICh1bmxpa2VseSghc2tiX3RyYW5zcG9ydF9o ZWFkZXJfd2FzX3NldChza2IpKSkNCj4gKwkJCXJldHVybiBjYWtlX2NhbGNfb3ZlcmhlYWQocSwg bGVuLCBvZmYpOw0KPiAgCQloZHJfbGVuID0gc2tiX3RyYW5zcG9ydF9vZmZzZXQoc2tiKTsNCj4g LQllbHNlDQo+ICsJfSBlbHNlIHsNCj4gIAkJaGRyX2xlbiA9IHNrYl9pbm5lcl90cmFuc3BvcnRf b2Zmc2V0KHNrYik7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKHVubGlrZWx5KGhkcl9sZW4gPCAwKSkN Cj4gKwkJcmV0dXJuIGNha2VfY2FsY19vdmVyaGVhZChxLCBsZW4sIG9mZik7DQoNCltTZXZlcml0 eTogTWVkaXVtXQ0KSXMgYSBsb3dlciBib3VuZCBvZiAwIGVub3VnaCBoZXJlPyBUaGUgc2FtZSBi cGZfc2tiX25ldF9oZHJfcG9wKCkNCm1lY2hhbmlzbSBjYW4gYWxzbyBsZWF2ZSBhIHRyYW5zcG9y dCBvZmZzZXQgdGhhdCBpcyBub24tbmVnYXRpdmUgYnV0DQpzdGFsZToNCg0KbmV0L2NvcmUvZmls dGVyLmM6YnBmX3NrYl9uZXRfaGRyX3BvcCgpIHsNCiAgICAuLi4NCgkJc2tiLT5tYWNfaGVhZGVy ICs9IGxlbjsNCgkJc2tiLT5uZXR3b3JrX2hlYWRlciArPSBsZW47DQoJCWlmICh0cmFuc19zYW1l KQ0KCQkJc2tiLT50cmFuc3BvcnRfaGVhZGVyID0gc2tiLT5uZXR3b3JrX2hlYWRlcjsNCiAgICAu Li4NCn0NCg0KVGFrZSBhIEJQRl9BREpfUk9PTV9NQUMgc2hyaW5rIHdoZXJlIGxlbl9kaWZmIGlz IG5vdCBsYXJnZXIgdGhhbiB0aGUgb2xkDQp0cmFuc3BvcnQgb2Zmc2V0LiBUaGUgb2Zmc2V0IHN0 YXlzID49IDAsIGJ1dCBpdCBwb2ludHMgYmVmb3JlIHRoZSBuZXcNCm5ldHdvcmsgaGVhZGVyLCBp bnRvIHRoZSBtb3ZlZCBNQUMgaGVhZGVyLg0KDQpHUkUgZGVjYXAgaXMgb25lIGV4YW1wbGUuIGdy ZV9idWlsZF9oZWFkZXIoKSBjYWxscw0Kc2tiX3Jlc2V0X3RyYW5zcG9ydF9oZWFkZXIoKSBhdCB0 aGUgR1JFIGhlYWRlciwgc28gdGhlIHRyYW5zcG9ydCBvZmZzZXQNCmlzIDE0ICsgMjAgPSAzNC4g QW4gZWdyZXNzIHRjIEJQRiBwcm9ncmFtIHRoZW4gZG9lczoNCg0KICAgIGJwZl9za2JfYWRqdXN0 X3Jvb20oc2tiLCAtMjQsIEJQRl9BREpfUk9PTV9NQUMsDQogICAgICAgICAgICAgICAgICAgICAg ICBCUEZfRl9BREpfUk9PTV9ERUNBUF9MNF9HUkUgfA0KICAgICAgICAgICAgICAgICAgICAgICAg QlBGX0ZfQURKX1JPT01fREVDQVBfTDNfSVBWNCk7DQoNCmJwZl9za2JfbmV0X3NocmluaygpIGNs ZWFycyB0aGUgR1JFIGdzb190eXBlIGJpdHMgYW5kDQpza2ItPmVuY2Fwc3VsYXRpb24uIEluIGNh a2Vfb3ZlcmhlYWQoKSwgaGRyX2xlbiB0aGVuIGJlY29tZXMNCjM0IC0gMjQgPSAxMC4gVGhhdCBp cyBiZWxvdyBza2JfbmV0d29ya19vZmZzZXQoKSAoMTQpLCBzbyB0aGlzIGNoZWNrIGRvZXMNCm5v dCBmaXJlLg0KDQpza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCAxMCwgc2l6ZW9mKF90Y3BoZHIpLCAu Li4pIHRoZW4gcmVhZHMgRXRoZXJuZXQNCmFuZCBJUHY0IGJ5dGVzLiBkb2ZmIGNvbWVzIGZyb20g dGhlIElQdjQgVFRMIGJ5dGUgKFRUTCA2NCBnaXZlcyAxNg0KYnl0ZXMpLCBzbyBlYWNoIHNlZ21l bnQgaXMgY2hhcmdlZCAyNiBieXRlcyBvZiBoZWFkZXJzIGluc3RlYWQgb2YgNTQuDQoNCkEgcGxh aW4gSVB2NC9UQ1AgR1NPIHNrYiBzaHJ1bmsgYnkgMzAgaW4gTUFDIG1vZGUgYmVoYXZlcyB0aGUg c2FtZSB3YXkNCigzNCAtIDMwID0gNCkuDQoNCldvdWxkIGEgY2hlY2sgc3VjaCBhcyBoZHJfbGVu IDwgKGludClvZmYgY2F0Y2ggdGhpcyBjYXNlIHRvbz8NCg0KW1NldmVyaXR5OiBIaWdoXQ0KVGhp cyBpc24ndCBhIGJ1ZyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2gsIGJ1dCBkb2VzIHFkaXNjX3Br dF9sZW5fc2Vnc19pbml0KCkNCmluIG5ldC9jb3JlL2Rldi5jIGhhdmUgdGhlIHNhbWUgbmVnYXRp dmUgb2Zmc2V0IHByb2JsZW0/IFRoZXJlIGl0IHdvdWxkDQpsZWFkIHRvIGEgd2lsZCBwb2ludGVy IGRlcmVmZXJlbmNlLg0KDQpUaGUgY29tbWl0IG1lc3NhZ2Ugc2F5czoNCg0KICAgIFdoaWxlIHFk aXNjX3BrdF9sZW5fc2Vnc19pbml0KCkgcnVucyBhdCB0aGUgc3RhcnQgb2YgX19kZXZfcXVldWVf eG1pdCgpLA0KICAgIHBhY2tldCBoZWFkZXJzIG1heSBiZSBhZGp1c3RlZCBiZWZvcmUgY2FrZV9v dmVyaGVhZCgpIGlzIHJlYWNoZWQNCg0KVGhpcyBzdWdnZXN0cyB0aGUgY29yZSBoZWxwZXIgb25s eSBldmVyIHNlZXMgc2ticyB0aGF0IGhhdmUgbm90IGJlZW4NCm1hbmdsZWQuIEhvd2V2ZXIsIGFu IGVncmVzcyB0YyBCUEYgcHJvZ3JhbSBjYW4gY2FsbCBicGZfc2tiX2FkanVzdF9yb29tKCkNCndp dGggYSBuZWdhdGl2ZSBsZW5fZGlmZiBpbiBCUEZfQURKX1JPT01fTUFDIG1vZGUgYW5kIHRoZW4g cmV0dXJuDQpicGZfcmVkaXJlY3QoKToNCg0Kc2tiX2RvX3JlZGlyZWN0KCkNCiAgX19icGZfcmVk aXJlY3RfY29tbW9uKCkNCiAgICBfX2JwZl90eF9za2IoKQ0KICAgICAgZGV2X3F1ZXVlX3htaXQo KQ0KICAgICAgICBfX2Rldl9xdWV1ZV94bWl0KCkNCiAgICAgICAgICBxZGlzY19wa3RfbGVuX3Nl Z3NfaW5pdCgpDQoNClRoaXMgcnVucyBxZGlzY19wa3RfbGVuX3NlZ3NfaW5pdCgpIGEgc2Vjb25k IHRpbWUgb24gdGhlIG1hbmdsZWQgc2tiLA0KYW5kIG5vdGhpbmcgcmVzZXRzIHRoZSB0cmFuc3Bv cnQgaGVhZGVyIGluIGJldHdlZW4uIFRoZSB0YyBpbmdyZXNzIHBhdGgsDQpmb3IgZXhhbXBsZSBh ZnRlciBhbiBpbmdyZXNzIHJlZGlyZWN0LCBpcyBhbm90aGVyIGVudHJ5IHBvaW50Lg0KDQpUd28g ZXhhbXBsZXMgb2YgdGhlIHJlc3VsdGluZyBvZmZzZXQ6DQoNCi0gQSBwbGFpbiBFdGhlcm5ldC9J UHY0L1RDUCBHU08gc2tiIHNocnVuayBieSA0MCBoYXMgYSB0cmFuc3BvcnQgb2Zmc2V0DQogIG9m IDM0IC0gNDAgPSAtNi4NCi0gQSBWWExBTiBkZWNhcCB3aXRoIEJQRl9GX0FESl9ST09NX0RFQ0FQ X0w0X1VEUCBnaXZlcyAzNCAtIDUwID0gLTE2Lg0KICBUaGlzIGRlY2FwIGFsc28gY2xlYXJzIHNr Yi0+ZW5jYXBzdWxhdGlvbi4NCg0KSW4gcWRpc2NfcGt0X2xlbl9zZWdzX2luaXQoKSwgaGRyX2xl biBpcyBzdGlsbCB1bnNpZ25lZCBpbnQ6DQoNCm5ldC9jb3JlL2Rldi5jOnFkaXNjX3BrdF9sZW5f c2Vnc19pbml0KCkgew0KICAgIC4uLg0KCXVuc2lnbmVkIGludCBoZHJfbGVuLCB0bGVuOw0KICAg IC4uLg0KCQloZHJfbGVuID0gc2tiX3RyYW5zcG9ydF9vZmZzZXQoc2tiKTsNCiAgICAuLi4NCgkJ aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGRyX2xlbiArIHNpemVvZihzdHJ1Y3QgdGNwaGRyKSkp DQoJCQlyZXR1cm4gU0tCX0RST1BfUkVBU09OX1NLQl9CQURfR1NPOw0KDQoJCXRoID0gKGNvbnN0 IHN0cnVjdCB0Y3BoZHIgKikoc2tiLT5kYXRhICsgaGRyX2xlbik7DQoJCXRsZW4gPSBfX3RjcF9o ZHJsZW4odGgpOw0KICAgIC4uLg0KfQ0KDQpXaXRoIGhkcl9sZW4gPSAweEZGRkZGRkZBLCBoZHJf bGVuICsgc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpIGlzIHRoZSBzaXplX3QNCnZhbHVlIDB4MTAwMDAw MDBFLiBwc2tiX21heV9wdWxsKCkgdGFrZXMgYW4gdW5zaWduZWQgaW50IGxlbiwgc28gdGhlDQp2 YWx1ZSBpcyB0cnVuY2F0ZWQgdG8gMTQgYW5kIHRoZSBjaGVjayBwYXNzZXMuDQoNCk9uIDY0LWJp dCwgc2tiLT5kYXRhICsgaGRyX2xlbiB0aGVuIHBvaW50cyBhYm91dCA0IEdCIHBhc3Qgc2tiLT5k YXRhLA0KYW5kIF9fdGNwX2hkcmxlbigpIGRlcmVmZXJlbmNlcyBpdC4gQ2FuIHRoaXMgb29wcywg b3IgcmVhZCBhcmJpdHJhcnkNCm1lbW9yeSB0aGF0IHRoZW4gZHJpdmVzIHRoZSBkcm9wIGFuZCBz ZWdtZW50IGNvdW50IGRlY2lzaW9ucz8NCg0KSW4gY2FrZV9vdmVyaGVhZCgpLCB0aGUgaW50IG9m ZnNldCBhcmd1bWVudCBvZiBza2JfaGVhZGVyX3BvaW50ZXIoKQ0KbGltaXRzIHRoZSBkYW1hZ2Us IGJ1dCB0aGUgY29yZSBoZWxwZXIgaGFzIG5vIHN1Y2ggcHJvdGVjdGlvbi4gVGhlDQpkZXJlZmVy ZW5jZSBjYW1lIGluIHdpdGggY29tbWl0IDdmYjRjMTk2NzAxMTBmICgibmV0OiBwdWxsIGhlYWRl cnMgaW4NCnFkaXNjX3BrdF9sZW5fc2Vnc19pbml0KCkiKS4gUmVhY2hpbmcgaXQgcmVxdWlyZXMg YSBwcml2aWxlZ2VkDQooQ0FQX0JQRi9DQVBfTkVUX0FETUlOKSB0YyBCUEYgcHJvZ3JhbS4NCg0K PiAgDQo+ICAJLyogKyB0cmFuc3BvcnQgbGF5ZXIgKi8NCj4gIAlpZiAobGlrZWx5KHNoaW5mby0+ Z3NvX3R5cGUgJiAoU0tCX0dTT19UQ1BWNCB8DQoNCltTZXZlcml0eTogTWVkaXVtXQ0KVGhpcyBp cyBhIHByZS1leGlzdGluZyBpc3N1ZSwgYnV0IGNhbiBsYXN0X2xlbiB3cmFwIGZ1cnRoZXIgZG93 biBpbg0KY2FrZV9vdmVyaGVhZCgpIGFmdGVyIHRoZSBzYW1lIGtpbmQgb2YgZWdyZXNzIG9yIGNs YXNzaWZpZXIgQlBGIHNocmluaz8NCg0KbmV0L3NjaGVkL3NjaF9jYWtlLmM6Y2FrZV9vdmVyaGVh ZCgpIHsNCiAgICAuLi4NCgl1MTYgc2VncyA9IHFkaXNjX3BrdF9zZWdzKHNrYik7DQogICAgLi4u DQoJbGVuID0gc2hpbmZvLT5nc29fc2l6ZSArIGhkcl9sZW47DQoJbGFzdF9sZW4gPSBza2ItPmxl biAtIHNoaW5mby0+Z3NvX3NpemUgKiAoc2VncyAtIDEpOw0KICAgIC4uLg0KfQ0KDQpzZWdzIGNv bWVzIGZyb20gcWRpc2Nfc2tiX2NiKHNrYiktPnBrdF9zZWdzLiBUaGF0IHZhbHVlIGlzIHNldCBp bg0KX19kZXZfcXVldWVfeG1pdCgpIGJlZm9yZSBzY2hfaGFuZGxlX2VncmVzcygpIG9yIGNha2Vf Y2xhc3NpZnkoKSBydW4uDQpicGZfc2tiX25ldF9zaHJpbmsoKSB0aGVuIGVubGFyZ2VzIGdzb19z aXplIHdpdGhvdXQgcmVmcmVzaGluZyBwa3Rfc2VnczoNCg0KbmV0L2NvcmUvZmlsdGVyLmM6YnBm X3NrYl9uZXRfc2hyaW5rKCkgew0KICAgIC4uLg0KCQlpZiAoIShmbGFncyAmIEJQRl9GX0FESl9S T09NX0ZJWEVEX0dTTykpDQoJCQlza2JfaW5jcmVhc2VfZ3NvX3NpemUoc2hpbmZvLCBsZW5fZGlm Zik7DQogICAgLi4uDQoJCXNoaW5mby0+Z3NvX3R5cGUgfD0gU0tCX0dTT19ET0RHWTsNCgkJc2hp bmZvLT5nc29fc2VncyA9IDA7DQogICAgLi4uDQp9DQoNCkFzIGEgcmVzdWx0LCBsYXN0X2xlbiA9 IG9sZF9sYXN0X2xlbiAtIGxlbl9kaWZmICogc2Vncywgd2hpY2ggd3JhcHMgd2hlbg0KbGVuX2Rp ZmYgKiBzZWdzIGlzIGxhcmdlciB0aGFuIG9sZF9sYXN0X2xlbi4NCg0KRm9yIGV4YW1wbGUsIHRh a2UgSVB2NCB3aXRoIDIwIGJ5dGVzIG9mIG9wdGlvbnMsIGdzb19zaXplIDEwMDAsDQpza2ItPmxl biA2MDA3NSBhbmQgNjEgY2FjaGVkIHNlZ21lbnRzLiBSZW1vdmluZyB0aGUgb3B0aW9ucyBpbiBO RVQgbW9kZQ0KZ2l2ZXMgNjAwNTUgLSAxMDIwICogNjAgPSAtMTE0NS4NCg0KY2FrZV9lbnF1ZXVl KCkgc3RvcmVzIHRoZSByZXN1bHQgaW4gZ2V0X2NvYmFsdF9jYihza2IpLT5hZGp1c3RlZF9sZW4u DQpJbnNpZGUgY2FrZV9jYWxjX292ZXJoZWFkKCkgdGhpcyBjYXVzZXMgdGhyZWUgcHJvYmxlbXM6 DQoNCi0gQSB0cnVuY2F0ZWQgZ2FyYmFnZSB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlIHUxNiBtYXhf bmV0bGVuIHN0YXQuDQotIFRoZSAoczMyKSBjYXN0IGNsYW1wcyB0aGUgbGFzdCBzZWdtZW50J3Mg Y2hhcmdlIHRvIHJhdGVfbXB1Lg0KLSBzZWdzIC0gMSBzZWdtZW50cyBhcmUgY2hhcmdlZCBhdCB0 aGUgZW5sYXJnZWQgZ3NvX3NpemUsIHVzaW5nIHRoZQ0KICBzdGFsZSBzZWdtZW50IGNvdW50Lg0K DQpUaGUgbmV3IGhkcl9sZW4gY2hlY2tzIGRvbid0IGNvdmVyIHRoaXMgY2FzZS4NCg0KLS0gDQpT YXNoaWtvIEFJIHJldmlldyDCtyBodHRwczovL25ldGRldi1haS5ib3RzLmxpbnV4LmRldi9zYXNo aWtvLyMvcGF0Y2hzZXQvMjAyNjA5MjcxMzEwMDkuMjQyNTAtMS1uZGF1Z29pbmclNDBnbWFpbC5j b20NCg==