From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; dkim=pass header.d=mojatatu.com header.i=@mojatatu.com header.a=rsa-sha256 header.s=google header.b="uO63x8C/"; arc=none (Message is not ARC signed); dmarc=none Received: from mail-qv1-xf2a.google.com (mail-qv1-xf2a.google.com [IPv6:2607:f8b0:4864:20::f2a]) by mail.toke.dk (Postfix) with ESMTPS id 201F0188C4BF for ; Tue, 20 Oct 2026 18:57:42 +0200 (CEST) Received: by mail-qv1-xf2a.google.com with SMTP id 6a1803df08f44-917aca1aee5so35777656d6.2 for ; Tue, 20 Oct 2026 09:57:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mojatatu.com; s=google; t=1792515460; x=1793120260; darn=lists.bufferbloat.net; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=bfUIbeXHt/0TqqaByaoBr38NSDw34fjPOfMdXq9pS6o=; b=uO63x8C/cG/t0kYZhAA/ueGA5IpDIfIqE/r66AiKh/2rzIICZNRy8G5XYwcIxqgr6J Ms4HjCWxM4VJi+64Mg5zqVNRj9m7G4tnur5qPizIuQaGuG74lFnTha9w1sJ7fsu280mE KyXMlwE0arAReHbhCPnHV5q/C6cQHuRILI1NI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792515460; x=1793120260; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=bfUIbeXHt/0TqqaByaoBr38NSDw34fjPOfMdXq9pS6o=; b=YntXVeBG4KThaC9cNPb2TlLL7DUxM9stL8no5GNfO92MUgWvfx+sL4BRFH/Spj1p8u 4ioZPUW3J3MoKWo2FSoYK1fFTQeIyfk85XsgXE+7JSPJsXzmG9WbGVnnbnkN4/PdYX1N ukIL2SX4zaCcQp3R32xLc7QTf0nuIW4hnvugwFUliz5DVxkr9yH1YYU8+YxYqJHIOSFB Jj3c9NoVRamzc1XzgRjOsQIjlX1QcRLnzmflDZXsQLLq9KUJfQcNsqg1KuLVfkO67NIa i1ddZ/hbfMo2+dkRVq36orAdupVQ66OyQy3EUNLZjB7miR5anXSMdajDHgdBzV2rOREY a7gA== X-Forwarded-Encrypted: i=1; AKwUvBzo4xN5KQ5wsInaMhOjscmcpePRu61rZ4saFvVLJrcVUrcSa+f29EDrt89eZYqwnUywYT84@lists.bufferbloat.net X-Gm-Message-State: AFq9FYLWxLxHeLGj5rBx8BMw4cay3L0n+ZKMnC8HgA78Mx9QJ1cJMe+R 3CZfFD5M8v+2nobt8luDhhOTCmYV6VkRgyzDCQ0B91bzyR00jUiQ3Kl4f2X5iXbIFg== X-Gm-Gg: AYBFou3rFc2WRN8lwZtIQEJFpUePg7kgnJrpMT+OxnR1eLCtUB1Gy/OaQolv+vKE+I+ IhVPs/KFjNd4lhJazuj7F2nV7j7rECsdea4GtCZmuZ/6gkffON3IRjlDDkmDxnP8y/gJaKouI89 s9PW7A8dzbHVCGzTeMdWfm8nmuFgJd8K1+9sCkRP6TBkKzqruXumgvf6JfHHSRTMaVYv3pE60un 5F6EOS6aqRNiKIHB3CmX1NMoJGwWiKUhhe+u5TKZk0O4YV5LIspnjavDgsbWKHi9cDt7bHGeKtX RQMBDqdhQl1XQ0kzM7l0fXNUQIHp16WjEFXQ99tv1rJohsI8loCm0gYN98tOXwwM3nO8KXzlVGx pmmGm366Eyizu9T+zrpmIuH/gLSvwoQ7p8kEuO0xBZeT6tzPUu7QFWl6KZhwRY/UPn8nErzXjSe A9NjoG7RZwM8NIDDXWl5AoBDTEUxU3L3j1pfj3/vZWz3Wh10bTtqEfhWreUD3AJYVIXIvR1Tc+s yor0pLRGZaOhHOQvkDJUWoZDJqHyJOGytDlJJMWrt5xW47st35dlDy3+e3qvYxTftQ4rgIWtiRY jioSYuXv/ttjNmWHWcmoA4nxAA== X-Received: by 2002:a05:6214:242d:b0:91b:876c:4b73 with SMTP id 6a1803df08f44-91bdec23a4cmr213001096d6.1.1792515460329; Tue, 20 Oct 2026 09:57:40 -0700 (PDT) Received: from mbili.waya ([64.203.83.2]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-91c10a441acsm3034586d6.6.2026.10.20.09.57.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2026 09:57:39 -0700 (PDT) From: Jamal Hadi Salim To: netdev@vger.kernel.org Cc: Jamal Hadi Salim , Jiri Pirko , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Victor Nogueira , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , cake@lists.bufferbloat.net, Sashiko Date: Tue, 20 Oct 2026 12:57:29 -0400 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: 4SGM7GA7AS67CQD742POFMYQ2EI4AC73 X-Message-ID-Hash: 4SGM7GA7AS67CQD742POFMYQ2EI4AC73 X-MailFrom: jhs@mojatatu.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Subject: [Cake] [PATCH net-next v8 3/4] net/sched: cap the accounted backlog before it can wrap List-Id: Cake - FQ_codel the next generation Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: VGhpcyBpcyBhIGZvbGxvd3VwIG9mIGNvbW1pdCA3MDlmMzRmN2MyOGQgKCJuZXQvc2NoZWQ6IGZx OiBhZGQgb3ZlcmZsb3cNCmJvdW5kcyB0byBxdWFudHVtIGFuZCBpbml0aWFsIHF1YW50dW0iKSBh cyByZXBvcnRlZCBieSBTYXNoaWtvLg0KDQpUaGUgaXNzdWU6IGZxX2NvZGVsLCBjYWtlLCBjb2Rl bCwgcGllLCBmcV9waWUsIGR1YWxwaTIsIFJFRCwgcGZpZm8sDQpwbHVnIGFuZCAobm9uLVdSRUQp IGdyZWQgYWNjb3VudCBldmVyeSBlbnF1ZXVlZCBwYWNrZXQncyBzdGFiLWFkanVzdGVkDQpsZW5n dGggaW50byB0aGUgMzItYml0IHNjaC0+cXN0YXRzLmJhY2tsb2cuIEEgY3JhZnRlZCB0YyBzaXpl IHRhYmxlDQppbmZsYXRlcyBxZGlzY19wa3RfbGVuKCkgdXAgdG8gUURJU0NfUEtUX0xFTl9NQVgg KDEgTWlCKSwgYW5kIGEgZG9kZ3kNCkdTTyBza2IgY2FuIGFjY291bnQgZXZlbiBtb3JlIHRocm91 Z2ggcWRpc2NfcGt0X2xlbl9zZWdzX2luaXQoKSwgc28gYQ0KZmV3IHRob3VzYW5kIHBhY2tldHMg d3JhcCB0aGUgY291bnRlciBtb2QgMl4zMi4NCg0KVGhlIEFRTSB0aGVuIHJlYWRzIGEgc21hbGwg YmFja2xvZyBhbmQgbWFrZXMgdGhlIHdyb25nIGRyb3AgZGVjaXNpb24sDQphbmQgdGhlIGRlcXVl dWUtc2lkZSBzdWJ0cmFjdGlvbnMgbGVhdmUgaXQgY29ycnVwdCAoZm9yIG5vbi1XUkVEIGdyZWQN Cml0IGlzIHRoZSByZXBvcnRlZCBzdGF0cyBhbmQgdGhlIGRlcXVldWUtc2lkZSBzdWJ0cmFjdGlv bnMgdGhhdCBnbw0Kd3JvbmcgaW5zdGVhZCkuIEluIGZxX2NvZGVsIGEgd3JhcHBlZCBwZXItZmxv dyBiYWNrbG9nIGNhbiBhbHNvIG1ha2UNCmZxX2NvZGVsX2Ryb3AoKSdzIHNjYW4gcGljayBhbiBl bXB0eSBmbG93LCBkZXJlZmVyZW5jaW5nIGEgTlVMTA0KZmxvdy0+aGVhZC4NCg0KVGhlIEZpeDog ZHJvcCBhdCBlbnF1ZXVlIG9uY2UgdGhlIHN0b3JlZCBiYWNrbG9nIGNhbm5vdCByZXByZXNlbnQg dGhlDQppbmNvbWluZyBwYWNrZXQncyBhY2NvdW50ZWQgbGVuZ3RoLg0KDQpPcmRpbmFyeSBwYWNr ZXRzIChxZGlzY19wa3RfbGVuKCkgYXQgbW9zdCBRRElTQ19QS1RfTEVOX01BWCkgYXJlDQpjb3Zl cmVkIGJ5IGEgc3RhbmRpbmcgY2VpbGluZzogZHJvcCBvbmNlIHRoZSBiYWNrbG9nIGlzIHdpdGhp bg0KUURJU0NfTUFYX0JBQ0tMT0cgKFUzMl9NQVggLSBRRElTQ19QS1RfTEVOX01BWCkgb2YgdGhl IHdyYXAgcG9pbnQsIHRoZQ0KbGFyZ2VzdCBiYWNrbG9nIG9uZSBtb3JlIDEgTWlCIHBhY2tldCBj YW5ub3Qgd3JhcCwgc28gdGhlcmUgaXMgbm8NCnBlci1lbnF1ZXVlIDY0LWJpdCBhZGQuDQoNCkEg bGFyZ2VyIHdpcmUgZXN0aW1hdGUgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZSBzcGFjZSB0aGF0IGFj dHVhbGx5DQpyZW1haW5zIChsZW4gPiBVMzJfTUFYIC0gYmFja2xvZyk6IHFkaXNjX3BrdF9sZW5f c2Vnc19pbml0KCkgYWRkcyB0aGUNCmhlYWRlcnMgcmVwbGljYXRlZCBvbiBldmVyeSBvdXRwdXQg c2VnbWVudCwgc28gYSBzdXBwb3J0ZWQgc21hbGwtTVNTDQpCSUcgVENQIGFnZ3JlZ2F0ZSBjYW4g Y2FycnkgYSB3aXJlIGVzdGltYXRlIGFib3ZlIDEgTWlCIHdoaWxlIGl0cyByYXcNCmxlbmd0aCBz dGF5cyB3aXRoaW4gR1NPX01BWF9TSVpFLCBhbmQgc3VjaCB0cmFmZmljIG11c3QgcGFzcyBvbiBh bg0KZW1wdHkgcXVldWUuDQoNCnFkaXNjX3BrdF9sZW4oKSBpdHNlbGYgc3RheXMgdHJ1dGhmdWwg Zm9yIGV2ZXJ5IGlucHV0OiBpdCBpcyBub3QNCmNsYW1wZWQgYW5kIHRoZSBpbml0aWFsaXplciBr ZWVwcyBzdWNjZWVkaW5nLCBzbyBCUEYNCl9fc2tfYnVmZi53aXJlX2xlbiwgYWN0X3BvbGljZSBh bmQgdGhlIEhUQi9UQkYgc2hhcGVycyByZWFkIHRoZSByZWFsDQpsZW5ndGgsIGFuZCBzY2hfaGFu ZGxlX2luZ3Jlc3MoKSAtLSB3aGljaCBpZ25vcmVzIHRoZSBpbml0aWFsaXplcidzDQpyZXR1cm4g dmFsdWUgYW5kIHJlYWRzIHBrdF9zZWdzIGZvciBwYWNrZXQgc3RhdGlzdGljcyAtLSBrZWVwcw0K Y29tcGxldGUgbWV0YWRhdGEuDQoNCkNvdmVyIHNjaF9wbHVnIGFuZCBub24tV1JFRCBzY2hfZ3Jl ZCB0b286IHBsdWcgYWRtaXRzIG9uIHNrYi0+bGVuDQp3aGlsZSBxZGlzY19lbnF1ZXVlX3RhaWwo KSBhZGRzIHFkaXNjX3BrdF9sZW4oKSwgYW5kIGdyZWQgYm91bmRzIGVhY2gNCnZpcnR1YWwgcXVl dWUgYnV0IGFkZHMgZXZlcnkgVlEgaW50byB0aGUgb25lIGFnZ3JlZ2F0ZS4gcGZpZm8gaXMNCmlu Y2x1ZGVkIGJlY2F1c2UgUkVEIHJlYWRzIGEgZ3JhZnRlZCBjaGlsZCdzIGJhY2tsb2cgaW50bw0K cmVkX2NhbGNfcWF2ZygpOyBpdCBjYW4gYmUgcmVhY2hlZCBzdGFuZGFsb25lIG9yIGFzIHRoZSBk ZWZhdWx0IGNoaWxkDQpvZiBTRkIuIEluIFJFRCwgYWNjb3VudCB0aGUgcGFja2V0IHRvIHRoZSBh Z2dyZWdhdGUgYmVmb3JlIGhhbmRpbmcgaXQNCnRvIHRoZSBjaGlsZCwgYmVjYXVzZSBhIGR1cGxp Y2F0aW5nIG5ldGVtIGNoaWxkIHJlLWVucXVldWVzIGl0cyBjbG9uZQ0KYXQgdGhlIHJvb3Qgd2hp bGUgdGhlIHN0b3JlZCBiYWNrbG9nIGlzIHN0aWxsIHVuLXVwZGF0ZWQgLS0gb25lIGd1YXJkDQpj aGVjayBtdXN0IG5vdCBhdXRob3JpemUgdHdvIGFkZGl0aW9ucy4NCg0KVGhlIGd1YXJkIGJvdW5k cyBlYWNoIHFkaXNjJ3Mgb3duIGVucXVldWUgcGF0aDogYSBjaGlsZCB0aGF0IHNlZ21lbnRzIGEN CkdTTyBza2IgKHRiZiwgbmV0ZW0pIGNhbiBzdGlsbCBncm93IGEgcGFyZW50J3MgYWdncmVnYXRl IHRocm91Z2gNCnFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coKSdzIHVuY2xhbXBlZCBieXRlIGRl bHRhLCB3aGljaCBpcyBsZWZ0IHRvIGENCnNlcGFyYXRlIGNoYW5nZS4NCg0KQ29uZGl0aW9ucyB0 byByZWNyZWF0ZSB0aGUgYnVnOg0KICBpcCB0dW50YXAgYWRkIHR1bjAgbW9kZSB0dW4NCiAgaXAg bGluayBzZXQgdHVuMCB0eHF1ZXVlbGVuIDMyIHVwDQogIGlwIGFkZHIgYWRkIDEwLjk5LjAuMS8y NCBkZXYgdHVuMA0KICB0YyBxZGlzYyBhZGQgZGV2IHR1bjAgcm9vdCBoYW5kbGUgMTogc3RhYiBv dmVyaGVhZCAyMDAwMDAwMDAwIFwNCiAgICAgIGZxX2NvZGVsIGZsb3dzIDEgbGltaXQgMjAwMDAg ZWNuDQogICMgaG9sZCB0aGUgdHVuIGZkIG9wZW4gd2l0aG91dCByZWFkaW5nIHNvIHRoZSBiYWNr bG9nIHBlcnNpc3RzLCB0aGVuDQogICMgc2VuZCA2MDAwIHBhY2tldHM6IHRoZSBjb3VudGVyIHdy YXBzIGFuZCB0aGUgdW5maXhlZCBrZXJuZWwgcmVwb3J0cw0KICAjIGEgd3JhcHBlZCBiYWNrbG9n LCB3aGlsZSB0aGUgZml4ZWQgb25lIGRyb3BzIGF0IHRoZSBjZWlsaW5nLg0KDQpSZXBvcnRlZC1i eTogU2FzaGlrbyAobmlwYSkgPHNhc2hpa28tYm90QGtlcm5lbC5vcmc+DQpDbG9zZXM6IGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL25ldGRldi8yMDI2MDgxODEwMTEzMC4xNjIwMy0xLWpoc0Btb2ph dGF0dS5jb20vDQpMaW5rOiBodHRwczovL25ldGRldi1haS5ib3RzLmxpbnV4LmRldi9zYXNoaWtv LyMvcGF0Y2hzZXQvMjAyNjA4MTgxMDExMzAuMTYyMDMtMS1qaHNAbW9qYXRhdHUuY29tDQpMaW5r OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9uZXRkZXYvQ0FObjg5aUxmTUpWN2FuY0tIMUdqenpt N1pVRy1nS2NyY3prSmpKRVdONXNDdVdkLXVnQG1haWwuZ21haWwuY29tLw0KTGluazogaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcvbmV0ZGV2L0NBTm44OWkrR09GSF84Zyt2U1YwalVqMGFCcUxZVld1 Rk9ySHVEZ2dadTlrUENfbTZ0UUBtYWlsLmdtYWlsLmNvbS8NCkxpbms6IGh0dHBzOi8vbG9yZS5r ZXJuZWwub3JnL25ldGRldi84N2E0b290dGNqLmZzZkB0b2tlLmRrLw0KTGluazogaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvbmV0ZGV2Lzg3cGt4a3M2OGYuZnNmQHRva2UuZGsvDQpMaW5rOiBodHRw czovL2xvcmUua2VybmVsLm9yZy9uZXRkZXYvMTc5MjMxOTMyOTQ2LjMxMzUuNzQ5NzQ3ODk5MDE4 NjM4NTY4OEBrZXJuZWwub3JnLw0KUmV2aWV3ZWQtYnk6IFZpY3RvciBOb2d1ZWlyYSA8dmljdG9y QG1vamF0YXR1LmNvbT4NClJldmlld2VkLWJ5OiBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gPHRv a2VAdG9rZS5kaz4NClNpZ25lZC1vZmYtYnk6IEphbWFsIEhhZGkgU2FsaW0gPGpoc0Btb2phdGF0 dS5jb20+DQoNCi0tLQ0KDQp2NyAtPiB2ODogZnFfY29kZWwga2VlcHMgaXRzIG9yaWdpbmFsIGNs YXNzaWZ5IHNoYXBlICgwMDAxIG5vIGxvbmdlcg0KcmVmYWN0b3JzIGl0KTsgdGhlIGd1YXJkIGlz IHBsYWNlZCBiZXR3ZWVuIGlkeC0tIGFuZA0KY29kZWxfc2V0X2VucXVldWVfdGltZSgpIHNvIGEg ZHJvcHBlZCBwYWNrZXQgY2Fubm90IHRvdWNoIGZsb3cgc3RhdGUuDQooVG9rZSBIw7hpbGFuZC1K w7hyZ2Vuc2VuLCB2NyByZXZpZXcpDQotLS0NCiBpbmNsdWRlL25ldC9wa3Rfc2NoZWQuaCAgIHwg IDEgLQ0KIGluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmggfCAyMCArKysrKysrKysrKysrKysrKysr Kw0KIG5ldC9zY2hlZC9zY2hfY2FrZS5jICAgICAgfCAgNyArKysrKysrDQogbmV0L3NjaGVkL3Nj aF9jb2RlbC5jICAgICB8IDE2ICsrKysrKysrKy0tLS0tLS0NCiBuZXQvc2NoZWQvc2NoX2R1YWxw aTIuYyAgIHwgIDEgKw0KIG5ldC9zY2hlZC9zY2hfZmlmby5jICAgICAgfCAgNiArKysrKysNCiBu ZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmMgIHwgIDkgKysrKysrKysrDQogbmV0L3NjaGVkL3NjaF9m cV9waWUuYyAgICB8ICAzICsrLQ0KIG5ldC9zY2hlZC9zY2hfZ3JlZC5jICAgICAgfCAgOSArKysr KysrKysNCiBuZXQvc2NoZWQvc2NoX3BpZS5jICAgICAgIHwgIDMgKystDQogbmV0L3NjaGVkL3Nj aF9wbHVnLmMgICAgICB8ICA5ICsrKysrKysrLQ0KIG5ldC9zY2hlZC9zY2hfcmVkLmMgICAgICAg fCAyMyArKysrKysrKysrKysrKysrKystLS0tLQ0KIDEyIGZpbGVzIGNoYW5nZWQsIDkxIGluc2Vy dGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcGt0 X3NjaGVkLmggYi9pbmNsdWRlL25ldC9wa3Rfc2NoZWQuaA0KaW5kZXggOTBkM2U3OTQzYjE5Li4x OGE0MTljZDlkOTQgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL25ldC9wa3Rfc2NoZWQuaA0KKysrIGIv aW5jbHVkZS9uZXQvcGt0X3NjaGVkLmgNCkBAIC0xMiw3ICsxMiw2IEBADQogDQogI2RlZmluZSBE RUZBVUxUX1RYX1FVRVVFX0xFTgkxMDAwDQogI2RlZmluZSBTVEFCX1NJWkVfTE9HX01BWAkzMA0K LSNkZWZpbmUgUURJU0NfUEtUX0xFTl9NQVgJKDEgPDwgMjApCS8qIDEgTWlCICovDQogDQogc3Ry dWN0IHFkaXNjX3dhbGtlciB7DQogCWludAlzdG9wOw0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0 L3NjaF9nZW5lcmljLmggYi9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oDQppbmRleCAxYWNhYWRi M2UyY2YuLmE1YTZiZGY1NWUwYSAxMDA2NDQNCi0tLSBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmlj LmgNCisrKyBiL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmgNCkBAIC05MTUsNiArOTE1LDI2IEBA IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHFkaXNjX3BrdF9sZW4oY29uc3Qgc3RydWN0IHNr X2J1ZmYgKnNrYikNCiAJcmV0dXJuIHFkaXNjX3NrYl9jYihza2IpLT5wa3RfbGVuOw0KIH0NCiAN CisjZGVmaW5lIFFESVNDX1BLVF9MRU5fTUFYCSgxIDw8IDIwKQkvKiAxIE1pQiAqLw0KKw0KKy8q IExhcmdlc3QgYmFja2xvZyB0aGF0IHN0aWxsIGhhcyByb29tIGZvciBvbmUgbW9yZSAxIE1pQiBw YWNrZXQuICovDQorI2RlZmluZSBRRElTQ19NQVhfQkFDS0xPRwkoVTMyX01BWCAtIFFESVNDX1BL VF9MRU5fTUFYKQ0KKw0KKy8qIFdvdWxkIHRoaXMgcGFja2V0J3MgYWNjb3VudGVkIGxlbmd0aCB3 cmFwIHNjaC0+cXN0YXRzLmJhY2tsb2c/DQorICogUGFja2V0cyB1cCB0byBRRElTQ19QS1RfTEVO X01BWCBmaXQgYmVsb3cgUURJU0NfTUFYX0JBQ0tMT0c7IEdTTw0KKyAqIGNhbiBtYWtlIHRoZSBs ZW5ndGggbGFyZ2VyLCBzbyBjb21wYXJlIGFnYWluc3QgdGhlIHJlYWwgaGVhZHJvb20uDQorICov DQorc3RhdGljIGlubGluZSBib29sIHFkaXNjX2JhY2tsb2dfb3ZlcmZsb3coY29uc3Qgc3RydWN0 IFFkaXNjICpzY2gsDQorCQkJCQkgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpDQorew0KKwl1 MzIgYmFja2xvZyA9IFJFQURfT05DRShzY2gtPnFzdGF0cy5iYWNrbG9nKTsNCisJdTMyIGxlbiA9 IHFkaXNjX3BrdF9sZW4oc2tiKTsNCisNCisJaWYgKGxpa2VseShsZW4gPD0gUURJU0NfUEtUX0xF Tl9NQVgpKQ0KKwkJcmV0dXJuIGJhY2tsb2cgPiBRRElTQ19NQVhfQkFDS0xPRzsNCisJcmV0dXJu IGxlbiA+IFUzMl9NQVggLSBiYWNrbG9nOw0KK30NCisNCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGludCBxZGlzY19wa3Rfc2Vncyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KIHsNCiAJdTMy IHBrdF9zZWdzID0gcWRpc2Nfc2tiX2NiKHNrYiktPnBrdF9zZWdzOw0KZGlmZiAtLWdpdCBhL25l dC9zY2hlZC9zY2hfY2FrZS5jIGIvbmV0L3NjaGVkL3NjaF9jYWtlLmMNCmluZGV4IDBkMTNjNGIw YmZlMy4uOTFjMzMyOTViMzBiIDEwMDY0NA0KLS0tIGEvbmV0L3NjaGVkL3NjaF9jYWtlLmMNCisr KyBiL25ldC9zY2hlZC9zY2hfY2FrZS5jDQpAQCAtMTc3Nyw2ICsxNzc3LDEzIEBAIHN0YXRpYyBz MzIgY2FrZV9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLA0K IAkJcmV0dXJuIHJldDsNCiAJfQ0KIA0KKwkvKiBEcm9wIGJlZm9yZSB0b3VjaGluZyB0aGUgaGFz aCBvciBzaGFwZXIgc3RhdGUuICovDQorCWlmICh1bmxpa2VseShxZGlzY19iYWNrbG9nX292ZXJm bG93KHNjaCwgc2tiKSkpIHsNCisJCXFkaXNjX3FzdGF0c19vdmVybGltaXQoc2NoKTsNCisJCXJl dHVybiBxZGlzY19kcm9wX3JlYXNvbihza2IsIHNjaCwgdG9fZnJlZSwNCisJCQkJCSBRRElTQ19E Uk9QX09WRVJMSU1JVCk7DQorCX0NCisNCiAJLyogY2hvb3NlIGZsb3cgdG8gaW5zZXJ0IGludG8g Ki8NCiAJYiA9IGNha2Vfc2VsZWN0X3RpbihzY2gsIHNrYik7DQogCWlkeCA9IGNha2VfaGFzaChi LCBza2IsIHEtPmNvbmZpZy0+Zmxvd19tb2RlLCBmbG93X292ZXJyaWRlLA0KZGlmZiAtLWdpdCBh L25ldC9zY2hlZC9zY2hfY29kZWwuYyBiL25ldC9zY2hlZC9zY2hfY29kZWwuYw0KaW5kZXggYTFi YTJlMzU1ZjJkLi43OGM1ZDcyZDY0MDYgMTAwNjQ0DQotLS0gYS9uZXQvc2NoZWQvc2NoX2NvZGVs LmMNCisrKyBiL25ldC9zY2hlZC9zY2hfY29kZWwuYw0KQEAgLTExNiwxNSArMTE2LDE3IEBAIHN0 YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY29kZWxfcGVlayhzdHJ1Y3QgUWRpc2MgKnNjaCkNCiBzdGF0 aWMgaW50IGNvZGVsX3FkaXNjX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFk aXNjICpzY2gsDQogCQkJICAgICAgIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSkNCiB7DQotCXN0 cnVjdCBjb2RlbF9zY2hlZF9kYXRhICpxOw0KKwlzdHJ1Y3QgY29kZWxfc2NoZWRfZGF0YSAqcSA9 IHFkaXNjX3ByaXYoc2NoKTsNCiANCi0JaWYgKGxpa2VseShxZGlzY19xbGVuKHNjaCkgPCBzY2gt PmxpbWl0KSkgew0KLQkJY29kZWxfc2V0X2VucXVldWVfdGltZShza2IpOw0KLQkJcmV0dXJuIHFk aXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7DQorCWlmICh1bmxpa2VseShxZGlzY19xbGVuKHNj aCkgPj0gc2NoLT5saW1pdCkgfHwNCisJICAgIHVubGlrZWx5KHFkaXNjX2JhY2tsb2dfb3ZlcmZs b3coc2NoLCBza2IpKSkgew0KKwkJV1JJVEVfT05DRShxLT5kcm9wX292ZXJsaW1pdCwgcS0+ZHJv cF9vdmVybGltaXQgKyAxKTsNCisJCXJldHVybiBxZGlzY19kcm9wX3JlYXNvbihza2IsIHNjaCwg dG9fZnJlZSwNCisJCQkJCSBRRElTQ19EUk9QX09WRVJMSU1JVCk7DQogCX0NCi0JcSA9IHFkaXNj X3ByaXYoc2NoKTsNCi0JV1JJVEVfT05DRShxLT5kcm9wX292ZXJsaW1pdCwgcS0+ZHJvcF9vdmVy bGltaXQgKyAxKTsNCi0JcmV0dXJuIHFkaXNjX2Ryb3BfcmVhc29uKHNrYiwgc2NoLCB0b19mcmVl LCBRRElTQ19EUk9QX09WRVJMSU1JVCk7DQorDQorCWNvZGVsX3NldF9lbnF1ZXVlX3RpbWUoc2ti KTsNCisJcmV0dXJuIHFkaXNjX2VucXVldWVfdGFpbChza2IsIHNjaCk7DQogfQ0KIA0KIHN0YXRp YyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBjb2RlbF9wb2xpY3lbVENBX0NPREVMX01BWCArIDFd ID0gew0KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5jIGIvbmV0L3NjaGVkL3Nj aF9kdWFscGkyLmMNCmluZGV4IDQ5NDdkZWY3YzQ5ZS4uNzMzMWYwZWMxYzhmIDEwMDY0NA0KLS0t IGEvbmV0L3NjaGVkL3NjaF9kdWFscGkyLmMNCisrKyBiL25ldC9zY2hlZC9zY2hfZHVhbHBpMi5j DQpAQCAtMzkyLDYgKzM5Miw3IEBAIHN0YXRpYyBpbnQgZHVhbHBpMl9lbnF1ZXVlX3NrYihzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwNCiAJc3RydWN0IGR1YWxwaTJfc2ti X2NiICpjYjsNCiANCiAJaWYgKHVubGlrZWx5KHFkaXNjX3FsZW4oc2NoKSA+PSBzY2gtPmxpbWl0 KSB8fA0KKwkgICAgdW5saWtlbHkocWRpc2NfYmFja2xvZ19vdmVyZmxvdyhzY2gsIHNrYikpIHx8 DQogCSAgICB1bmxpa2VseSgodTY0KXEtPm1lbW9yeV91c2VkICsgc2tiLT50cnVlc2l6ZSA+IHEt Pm1lbW9yeV9saW1pdCkpIHsNCiAJCXFkaXNjX3FzdGF0c19vdmVybGltaXQoc2NoKTsNCiAJCWlm IChza2JfaW5fbF9xdWV1ZShza2IpKQ0KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZmlmby5j IGIvbmV0L3NjaGVkL3NjaF9maWZvLmMNCmluZGV4IDFiNjM4OGQ1MDk2Ny4uMTZjOGQ0Zjc0ZTdl IDEwMDY0NA0KLS0tIGEvbmV0L3NjaGVkL3NjaF9maWZvLmMNCisrKyBiL25ldC9zY2hlZC9zY2hf Zmlmby5jDQpAQCAtMjksNiArMjksOSBAQCBzdGF0aWMgaW50IGJmaWZvX2VucXVldWUoc3RydWN0 IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsDQogc3RhdGljIGludCBwZmlmb19lbnF1 ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLA0KIAkJCSBzdHJ1Y3Qg c2tfYnVmZiAqKnRvX2ZyZWUpDQogew0KKwlpZiAodW5saWtlbHkocWRpc2NfYmFja2xvZ19vdmVy ZmxvdyhzY2gsIHNrYikpKQ0KKwkJcmV0dXJuIHFkaXNjX2Ryb3Aoc2tiLCBzY2gsIHRvX2ZyZWUp Ow0KKw0KIAlpZiAobGlrZWx5KHNjaC0+cS5xbGVuIDwgUkVBRF9PTkNFKHNjaC0+bGltaXQpKSkN CiAJCXJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2tiLCBzY2gpOw0KIA0KQEAgLTQzLDYgKzQ2 LDkgQEAgc3RhdGljIGludCBwZmlmb190YWlsX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwg c3RydWN0IFFkaXNjICpzY2gsDQogCWlmICh1bmxpa2VseShSRUFEX09OQ0Uoc2NoLT5saW1pdCkg PT0gMCkpDQogCQlyZXR1cm4gcWRpc2NfZHJvcChza2IsIHNjaCwgdG9fZnJlZSk7DQogDQorCWlm ICh1bmxpa2VseShxZGlzY19iYWNrbG9nX292ZXJmbG93KHNjaCwgc2tiKSkpDQorCQlyZXR1cm4g cWRpc2NfZHJvcChza2IsIHNjaCwgdG9fZnJlZSk7DQorDQogCWlmIChsaWtlbHkoc2NoLT5xLnFs ZW4gPCBSRUFEX09OQ0Uoc2NoLT5saW1pdCkpKQ0KIAkJcmV0dXJuIHFkaXNjX2VucXVldWVfdGFp bChza2IsIHNjaCk7DQogDQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jIGIv bmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jDQppbmRleCBlNmM4N2EzMjk1MGYuLmE4M2YyMDUzNGJl MSAxMDA2NDQNCi0tLSBhL25ldC9zY2hlZC9zY2hfZnFfY29kZWwuYw0KKysrIGIvbmV0L3NjaGVk L3NjaF9mcV9jb2RlbC5jDQpAQCAtMjAxLDYgKzIwMSwxNSBAQCBzdGF0aWMgaW50IGZxX2NvZGVs X2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsDQogCX0NCiAJ aWR4LS07DQogDQorCS8qIERyb3AgYmVmb3JlIHRoZSBmbG93IGlzIHRvdWNoZWQsIHNvIGEgZHJv cHBlZCBwYWNrZXQgY2Fubm90DQorCSAqIGNyZWF0ZSBvciB1cGRhdGUgZmxvdyBzdGF0ZS4NCisJ ICovDQorCWlmICh1bmxpa2VseShxZGlzY19iYWNrbG9nX292ZXJmbG93KHNjaCwgc2tiKSkpIHsN CisJCXEtPmRyb3Bfb3ZlcmxpbWl0Kys7DQorCQlyZXR1cm4gcWRpc2NfZHJvcF9yZWFzb24oc2ti LCBzY2gsIHRvX2ZyZWUsDQorCQkJCQkgUURJU0NfRFJPUF9PVkVSTElNSVQpOw0KKwl9DQorDQog CWNvZGVsX3NldF9lbnF1ZXVlX3RpbWUoc2tiKTsNCiAJZmxvdyA9ICZxLT5mbG93c1tpZHhdOw0K IAlmbG93X3F1ZXVlX2FkZChmbG93LCBza2IpOw0KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hf ZnFfcGllLmMgYi9uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jDQppbmRleCA1OTgyODQ3ZGY4ZjguLjlm OTI3YTA4YjdiYyAxMDA2NDQNCi0tLSBhL25ldC9zY2hlZC9zY2hfZnFfcGllLmMNCisrKyBiL25l dC9zY2hlZC9zY2hfZnFfcGllLmMNCkBAIC0xNTUsNyArMTU1LDggQEAgc3RhdGljIGludCBmcV9w aWVfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwN CiAJbWVtb3J5X2xpbWl0ZWQgPSBxLT5tZW1vcnlfdXNhZ2UgPiBxLT5tZW1vcnlfbGltaXQgKyBz a2ItPnRydWVzaXplOw0KIA0KIAkvKiBDaGVja3MgaWYgdGhlIHFkaXNjIGlzIGZ1bGwgKi8NCi0J aWYgKHVubGlrZWx5KHFkaXNjX3FsZW4oc2NoKSA+PSBzY2gtPmxpbWl0KSkgew0KKwlpZiAodW5s aWtlbHkocWRpc2NfcWxlbihzY2gpID49IHNjaC0+bGltaXQpIHx8DQorCSAgICB1bmxpa2VseShx ZGlzY19iYWNrbG9nX292ZXJmbG93KHNjaCwgc2tiKSkpIHsNCiAJCXEtPnN0YXRzLm92ZXJsaW1p dCsrOw0KIAkJZ290byBvdXQ7DQogCX0gZWxzZSBpZiAodW5saWtlbHkobWVtb3J5X2xpbWl0ZWQp KSB7DQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9ncmVkLmMgYi9uZXQvc2NoZWQvc2NoX2dy ZWQuYw0KaW5kZXggZjA0ZjQyNWM2YzQ0Li5iZWRiOTQ1ZDNiNjcgMTAwNjQ0DQotLS0gYS9uZXQv c2NoZWQvc2NoX2dyZWQuYw0KKysrIGIvbmV0L3NjaGVkL3NjaF9ncmVkLmMNCkBAIC0xNzAsNiAr MTcwLDE1IEBAIHN0YXRpYyBpbnQgZ3JlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0 cnVjdCBRZGlzYyAqc2NoLA0KIAl1bnNpZ25lZCBsb25nIHFhdmcgPSAwOw0KIAl1MTYgZHAgPSB0 Y19pbmRleF90b19kcChza2IpOw0KIA0KKwkvKiBQZXItVlEgbGltaXRzIGRvbid0IGJvdW5kIHRo ZSB0b3RhbDogZXZlcnkgVlEgYWRkcyBpbnRvIHRoZQ0KKwkgKiBzYW1lIHUzMiBiYWNrbG9nLCBz byBjaGVjayBpdCBiZWZvcmUgcGlja2luZyBhIFZRLg0KKwkgKi8NCisJaWYgKHVubGlrZWx5KHFk aXNjX2JhY2tsb2dfb3ZlcmZsb3coc2NoLCBza2IpKSkgew0KKwkJcWRpc2NfcXN0YXRzX292ZXJs aW1pdChzY2gpOw0KKwkJcmV0dXJuIHFkaXNjX2Ryb3BfcmVhc29uKHNrYiwgc2NoLCB0b19mcmVl LA0KKwkJCQkJIFFESVNDX0RST1BfT1ZFUkxJTUlUKTsNCisJfQ0KKw0KIAlpZiAoZHAgPj0gdC0+ RFBzIHx8IChxID0gdC0+dGFiW2RwXSkgPT0gTlVMTCkgew0KIAkJZHAgPSB0LT5kZWY7DQogDQpk aWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9waWUuYyBiL25ldC9zY2hlZC9zY2hfcGllLmMNCmlu ZGV4IDNiNzg2M2ZmZDI4NC4uMmE1ZmM0OTNhN2U1IDEwMDY0NA0KLS0tIGEvbmV0L3NjaGVkL3Nj aF9waWUuYw0KKysrIGIvbmV0L3NjaGVkL3NjaF9waWUuYw0KQEAgLTg5LDcgKzg5LDggQEAgc3Rh dGljIGludCBwaWVfcWRpc2NfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRp c2MgKnNjaCwNCiAJc3RydWN0IHBpZV9zY2hlZF9kYXRhICpxID0gcWRpc2NfcHJpdihzY2gpOw0K IAlib29sIGVucXVldWUgPSBmYWxzZTsNCiANCi0JaWYgKHVubGlrZWx5KHFkaXNjX3FsZW4oc2No KSA+PSBzY2gtPmxpbWl0KSkgew0KKwlpZiAodW5saWtlbHkocWRpc2NfcWxlbihzY2gpID49IHNj aC0+bGltaXQpIHx8DQorCSAgICB1bmxpa2VseShxZGlzY19iYWNrbG9nX292ZXJmbG93KHNjaCwg c2tiKSkpIHsNCiAJCVdSSVRFX09OQ0UocS0+c3RhdHMub3ZlcmxpbWl0LCBxLT5zdGF0cy5vdmVy bGltaXQgKyAxKTsNCiAJCWdvdG8gb3V0Ow0KIAl9DQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3Nj aF9wbHVnLmMgYi9uZXQvc2NoZWQvc2NoX3BsdWcuYw0KaW5kZXggYjYwZGRmZWU2YTY4Li5jOTBi NWNhNjBiYzAgMTAwNjQ0DQotLS0gYS9uZXQvc2NoZWQvc2NoX3BsdWcuYw0KKysrIGIvbmV0L3Nj aGVkL3NjaF9wbHVnLmMNCkBAIC04OSw3ICs4OSwxNCBAQCBzdGF0aWMgaW50IHBsdWdfZW5xdWV1 ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwNCiB7DQogCXN0cnVjdCBw bHVnX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQogDQotCWlmIChsaWtlbHkoKHU2 NClzY2gtPnFzdGF0cy5iYWNrbG9nICsgc2tiLT5sZW4gPD0gcS0+bGltaXQpKSB7DQorCWlmICh1 bmxpa2VseShxZGlzY19iYWNrbG9nX292ZXJmbG93KHNjaCwgc2tiKSkpIHsNCisJCXFkaXNjX3Fz dGF0c19vdmVybGltaXQoc2NoKTsNCisJCXJldHVybiBxZGlzY19kcm9wX3JlYXNvbihza2IsIHNj aCwgdG9fZnJlZSwNCisJCQkJCSBRRElTQ19EUk9QX09WRVJMSU1JVCk7DQorCX0NCisNCisJaWYg KGxpa2VseSgodTY0KXNjaC0+cXN0YXRzLmJhY2tsb2cgKyBxZGlzY19wa3RfbGVuKHNrYikgPD0N CisJCSAgIHEtPmxpbWl0KSkgew0KIAkJaWYgKCFxLT51bnBsdWdfaW5kZWZpbml0ZSkNCiAJCQlx LT5wa3RzX2N1cnJlbnRfZXBvY2grKzsNCiAJCXJldHVybiBxZGlzY19lbnF1ZXVlX3RhaWwoc2ti LCBzY2gpOw0KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfcmVkLmMgYi9uZXQvc2NoZWQvc2No X3JlZC5jDQppbmRleCBkNzU5ODIxNDI3MGIuLjcyOTkwZDBkYjRmZCAxMDA2NDQNCi0tLSBhL25l dC9zY2hlZC9zY2hfcmVkLmMNCisrKyBiL25ldC9zY2hlZC9zY2hfcmVkLmMNCkBAIC03Niw2ICs3 NiwxMiBAQCBzdGF0aWMgaW50IHJlZF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVj dCBRZGlzYyAqc2NoLA0KIAl1bnNpZ25lZCBpbnQgbGVuOw0KIAlpbnQgcmV0Ow0KIA0KKwlpZiAo dW5saWtlbHkocWRpc2NfYmFja2xvZ19vdmVyZmxvdyhzY2gsIHNrYikpKSB7DQorCQlxZGlzY19x c3RhdHNfb3ZlcmxpbWl0KHNjaCk7DQorCQlyZXR1cm4gcWRpc2NfZHJvcF9yZWFzb24oc2tiLCBz Y2gsIHRvX2ZyZWUsDQorCQkJCQkgUURJU0NfRFJPUF9PVkVSTElNSVQpOw0KKwl9DQorDQogCXEt PnZhcnMucWF2ZyA9IHJlZF9jYWxjX3FhdmcoJnEtPnBhcm1zLA0KIAkJCQkgICAgICZxLT52YXJz LA0KIAkJCQkgICAgIGNoaWxkLT5xc3RhdHMuYmFja2xvZyk7DQpAQCAtMTM2LDE0ICsxNDIsMjEg QEAgc3RhdGljIGludCByZWRfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRp c2MgKnNjaCwNCiAJfQ0KIA0KIAlsZW4gPSBxZGlzY19wa3RfbGVuKHNrYik7DQorCS8qIFJlc2Vy dmUgdGhlIGxlbmd0aCBiZWZvcmUgdGhlIGNoaWxkIHNlZXMgdGhlIHBhY2tldDogbmV0ZW0NCisJ ICogY2FuIHJlLWVucXVldWUgYSBjbG9uZSBoZXJlIGJlZm9yZSB0aGUgYmFja2xvZyBpcyB1cGRh dGVkLg0KKwkgKiBVbmRvIGl0IGlmIHRoZSBjaGlsZCBkcm9wcyB0aGUgcGFja2V0Lg0KKwkgKi8N CisJcXN0YXRzX2JhY2tsb2dfYWRkKHNjaCwgbGVuKTsNCiAJcmV0ID0gcWRpc2NfZW5xdWV1ZShz a2IsIGNoaWxkLCB0b19mcmVlKTsNCiAJaWYgKGxpa2VseShyZXQgPT0gTkVUX1hNSVRfU1VDQ0VT UykpIHsNCi0JCXFzdGF0c19iYWNrbG9nX2FkZChzY2gsIGxlbik7DQogCQlxZGlzY19xbGVuX2lu YyhzY2gpOw0KLQl9IGVsc2UgaWYgKG5ldF94bWl0X2Ryb3BfY291bnQocmV0KSkgew0KLQkJV1JJ VEVfT05DRShxLT5zdGF0cy5wZHJvcCwNCi0JCQkgICBxLT5zdGF0cy5wZHJvcCArIDEpOw0KLQkJ cWRpc2NfcXN0YXRzX2Ryb3Aoc2NoKTsNCisJfSBlbHNlIHsNCisJCXFzdGF0c19iYWNrbG9nX3N1 YihzY2gsIGxlbik7DQorCQlpZiAobmV0X3htaXRfZHJvcF9jb3VudChyZXQpKSB7DQorCQkJV1JJ VEVfT05DRShxLT5zdGF0cy5wZHJvcCwNCisJCQkJICAgcS0+c3RhdHMucGRyb3AgKyAxKTsNCisJ CQlxZGlzY19xc3RhdHNfZHJvcChzY2gpOw0KKwkJfQ0KIAl9DQogCXJldHVybiByZXQ7DQogDQot LSANCjIuNDMuMA0KDQo=