From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9541 invoked by alias); 18 Aug 2012 18:10:41 -0000 Received: (qmail 9525 invoked by uid 22791); 18 Aug 2012 18:10:36 -0000 X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KHOP_THREADED,RCVD_IN_DNSWL_NONE,RCVD_IN_HOSTKARMA_NO,RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mailout-de.gmx.net (HELO mailout-de.gmx.net) (213.165.64.23) by sourceware.org (qpsmtpd/0.43rc1) with SMTP; Sat, 18 Aug 2012 18:10:20 +0000 Received: (qmail invoked by alias); 18 Aug 2012 18:10:18 -0000 Received: from teras.ics.forth.gr (EHLO teras.ics.forth.gr) [139.91.70.93] by mail.gmx.net (mp001) with SMTP; 18 Aug 2012 20:10:18 +0200 Date: Sat, 18 Aug 2012 18:10:00 -0000 From: Dimitrios Apostolou To: gcc-patches@gcc.gnu.org cc: Andrey Belevantsev Subject: [graphds.h] Allocate graph from obstack In-Reply-To: Message-ID: References: User-Agent: Alpine 2.02 (LNX 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1196155265-1345313418=:20463" X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2012-08/txt/msg01261.txt.bz2 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-1196155265-1345313418=:20463 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Content-length: 540 Initially I had one obstack per struct graph, which was better than using XNEW for every edge, but still obstack_init() called from new_graph() was too frequent. So in this iteration of the patch the obstack is static global, initialised once and never freed. Please advise on whether this is acceptable, and also where I should initialise the obstack once, and avoid checking if it's NULL in every use. Minor speed gains (couple of ms), tested with pre-C++ conversion snapshot, I'll retest soon and post update. Thanks, Dimitris --8323328-1196155265-1345313418=:20463 Content-Type: TEXT/plain; name=graph_obstack.diff Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=graph_obstack.diff Content-length: 22733 MjAxMi0wOC0xOCAgRGltaXRyaW9zIEFwb3N0b2xvdSAgPGppbWlzQGdteC5u ZXQ+DQoNCgkqIGdjYy9ncmFwaGRzLmg6IEd1YXJkZWQgdGhlIGhlYWRlciBm aWxlLiBJbmNsdWRlZCBsaWJpYmVydHkuaCBhbmQNCglvYnN0YWNrLmguDQoJ KGdyYXBoX29ic3RhY2spOiBOZXcgc3RhdGljIG9ic3RhY2sgdG8gYWxsb2Nh dGUgZ3JhcGhzIGFuZA0KCWdyYXBoX2VkZ2VzIGZyb20uDQoJKG5ld19ncmFw aCwgYWRkX2VkZ2UpOiBBZGQgb2JzdGFjayBhcmd1bWVudC4NCgkoZnJlZV9n cmFwaCk6IFJlbW92ZS4NCgkqIGdjYy9ncmFwaGRzLmMgKG5ld19ncmFwaCk6 IEFsbG9jYXRlIGdyYXBoLCB2ZXJ0aWNlcyBmcm9tIG9ic3RhY2suDQoJKGFk ZF9lZGdlKTogQWxsb2NhdGUgZWRnZSBmcm9tIG9ic3RhY2suDQoJKGZyZWVf Z3JhcGgpOiBSZW1vdmUsIGFsbCBncmFwaCBkYXRhIGlzIG5vdyBmcmVlZCB3 aGVuIGZyZWVpbmcgdGhlDQoJb2JqZWN0IGluIHRoZSBvYnN0YWNrLg0KCSog Z2NjL3RyZWUtZGF0YS1yZWYuaCAoZnJlZV9yZGcpOiBTYW1lLg0KCShidWls ZF9lbXB0eV9yZGcpOiBBZGQgb2JzdGFjayBhcmd1bWVudC4NCgkqIGdjYy9j Zmdsb29wYW5hbC5jIChtYXJrX2lycmVkdWNpYmxlX2xvb3BzKTogSW5pdGlh bGlzZSBvYnN0YWNrDQoJaWYgaXQncyBub3QsIHVzZSBpdCBmb3IgZ3JhcGgg YWxsb2NhdGlvbnMuDQoJKiBnY2MvZG9taW5hbmNlLmMgKGl0ZXJhdGVfZml4 X2RvbWluYXRvcnMpOiBTYW1lLg0KCSogZ2NjL2dyYXBoaXRlLXNlc2UtdG8t cG9seS5jIChidWlsZF9hbGlhc19zZXRfb3B0aW1hbF9wKQ0KCShidWlsZF9i YXNlX29ial9zZXRfZm9yX2Rycyk6IFNhbWUuDQoJKiBnY2MvdHJlZS1kYXRh LXJlZi5jIChyZGdfdmVydGV4X2Zvcl9zdG10KQ0KCShjcmVhdGVfcmRnX2Vk Z2VfZm9yX2RkciwgY3JlYXRlX3JkZ19lZGdlc19mb3Jfc2NhbGFyKQ0KCShj cmVhdGVfcmRnX2VkZ2VzLCBjcmVhdGVfcmRnX3ZlcnRpY2VzKQ0KCShrbm93 bl9kZXBlbmRlbmNlc19wLGJ1aWxkX2VtcHR5X3JkZywgYnVpbGRfcmRnLCBm cmVlX3JkZyk6IFNhbWUuDQoJKiBnY2MvdHJlZS1sb29wLWRpc3RyaWJ1dGlv bi5jIChkaXN0cmlidXRlX2xvb3ApOiBTYW1lLg0KDQoNCj09PSBtb2RpZmll ZCBmaWxlICdnY2MvY2ZnbG9vcGFuYWwuYycNCi0tLSBnY2MvY2ZnbG9vcGFu YWwuYwkyMDEyLTA1LTMxIDIwOjE5OjAwICswMDAwDQorKysgZ2NjL2NmZ2xv b3BhbmFsLmMJMjAxMi0wOC0xOCAxNjo0MzowMiArMDAwMA0KQEAgLTkzLDgg KzkzLDE0IEBAIG1hcmtfaXJyZWR1Y2libGVfbG9vcHMgKHZvaWQpDQogCWUt PmZsYWdzICY9IH5FREdFX0lSUkVEVUNJQkxFX0xPT1A7DQogICAgIH0NCiAN CisgIGlmIChncmFwaF9vYnN0YWNrID09IE5VTEwpDQorICAgIHsNCisgICAg ICBncmFwaF9vYnN0YWNrID0gWE5FVyAoc3RydWN0IG9ic3RhY2spOw0KKyAg ICAgIG9ic3RhY2tfaW5pdCAoZ3JhcGhfb2JzdGFjayk7DQorICAgIH0NCisN CiAgIC8qIENyZWF0ZSB0aGUgZWRnZSBsaXN0cy4gICovDQotICBnID0gbmV3 X2dyYXBoIChsYXN0X2Jhc2ljX2Jsb2NrICsgbnVtKTsNCisgIGcgPSBuZXdf Z3JhcGggKGxhc3RfYmFzaWNfYmxvY2sgKyBudW0sIGdyYXBoX29ic3RhY2sp Ow0KIA0KICAgRk9SX0JCX0JFVFdFRU4gKGFjdCwgRU5UUllfQkxPQ0tfUFRS LCBFWElUX0JMT0NLX1BUUiwgbmV4dF9iYikNCiAgICAgRk9SX0VBQ0hfRURH RSAoZSwgZWksIGFjdC0+c3VjY3MpDQpAQCAtMTM0LDcgKzE0MCw3IEBAIG1h cmtfaXJyZWR1Y2libGVfbG9vcHMgKHZvaWQpDQogCSAgICBzcmMgPSBMT09Q X1JFUFIgKGNsb29wKTsNCiAJICB9DQogDQotCWFkZF9lZGdlIChnLCBzcmMs IGRlc3QpLT5kYXRhID0gZTsNCisJYWRkX2VkZ2UgKGcsIHNyYywgZGVzdCwg Z3JhcGhfb2JzdGFjayktPmRhdGEgPSBlOw0KICAgICAgIH0NCiANCiAgIC8q IEZpbmQgdGhlIHN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnRzLiAgKi8N CkBAIC0xNjEsNyArMTY3LDggQEAgbWFya19pcnJlZHVjaWJsZV9sb29wcyAo dm9pZCkNCiAJICByZWFsLT5zcmMtPmZsYWdzIHw9IEJCX0lSUkVEVUNJQkxF X0xPT1A7DQogICAgICAgfQ0KIA0KLSAgZnJlZV9ncmFwaCAoZyk7DQorICAv KiBEZXN0cm95IGFsbCBkYXRhIGFsbG9jYXRlZCBmb3IgdGhlIGdyYXBoLiAg Ki8NCisgIFhPQkRFTEVURSAoZ3JhcGhfb2JzdGFjaywgZyk7DQogDQogICBs b29wc19zdGF0ZV9zZXQgKExPT1BTX0hBVkVfTUFSS0VEX0lSUkVEVUNJQkxF X1JFR0lPTlMpOw0KICAgcmV0dXJuIGlycmVkX2xvb3BfZm91bmQ7DQoNCj09 PSBtb2RpZmllZCBmaWxlICdnY2MvZG9taW5hbmNlLmMnDQotLS0gZ2NjL2Rv bWluYW5jZS5jCTIwMTItMDgtMTQgMTU6NTk6NDEgKzAwMDANCisrKyBnY2Mv ZG9taW5hbmNlLmMJMjAxMi0wOC0xOCAxNjo0MzowMiArMDAwMA0KQEAgLTEz NDEsNyArMTM0MSwxMyBAQCBpdGVyYXRlX2ZpeF9kb21pbmF0b3JzIChlbnVt IGNkaV9kaXJlY3RpDQogICAgIH0NCiAgICpwb2ludGVyX21hcF9pbnNlcnQg KG1hcCwgRU5UUllfQkxPQ0tfUFRSKSA9ICh2b2lkICopIChzaXplX3QpIG47 DQogDQotICBnID0gbmV3X2dyYXBoIChuICsgMSk7DQorICBpZiAoZ3JhcGhf b2JzdGFjayA9PSBOVUxMKQ0KKyAgICB7DQorICAgICAgZ3JhcGhfb2JzdGFj ayA9IFhORVcgKHN0cnVjdCBvYnN0YWNrKTsNCisgICAgICBvYnN0YWNrX2lu aXQgKGdyYXBoX29ic3RhY2spOw0KKyAgICB9DQorDQorICBnID0gbmV3X2dy YXBoIChuICsgMSwgZ3JhcGhfb2JzdGFjayk7DQogICBmb3IgKHkgPSAwOyB5 IDwgZy0+bl92ZXJ0aWNlczsgeSsrKQ0KICAgICBnLT52ZXJ0aWNlc1t5XS5k YXRhID0gQklUTUFQX0FMTE9DIChOVUxMKTsNCiAgIEZPUl9FQUNIX1ZFQ19F TFQgKGJhc2ljX2Jsb2NrLCBiYnMsIGksIGJiKQ0KQEAgLTEzNTgsNyArMTM2 NCw3IEBAIGl0ZXJhdGVfZml4X2RvbWluYXRvcnMgKGVudW0gY2RpX2RpcmVj dGkNCiAJICBpZiAoIWJpdG1hcF9zZXRfYml0ICgoYml0bWFwKSBnLT52ZXJ0 aWNlc1tkb21faV0uZGF0YSwgaSkpDQogCSAgICBjb250aW51ZTsNCiANCi0J ICBhZGRfZWRnZSAoZywgZG9tX2ksIGkpOw0KKwkgIGFkZF9lZGdlIChnLCBk b21faSwgaSwgZ3JhcGhfb2JzdGFjayk7DQogCX0NCiAgICAgfQ0KICAgZm9y ICh5ID0gMDsgeSA8IGctPm5fdmVydGljZXM7IHkrKykNCkBAIC0xMzkyLDcg KzEzOTgsOCBAQCBpdGVyYXRlX2ZpeF9kb21pbmF0b3JzIChlbnVtIGNkaV9k aXJlY3RpDQogICBmcmVlIChicm90aGVyKTsNCiAgIGZyZWUgKHBhcmVudCk7 DQogDQotICBmcmVlX2dyYXBoIChnKTsNCisgIC8qIERlc3Ryb3kgYWxsIGRh dGEgYWxsb2NhdGVkIGZvciB0aGUgZ3JhcGguICAqLw0KKyAgWE9CREVMRVRF IChncmFwaF9vYnN0YWNrLCBnKTsNCiB9DQogDQogdm9pZA0KDQo9PT0gbW9k aWZpZWQgZmlsZSAnZ2NjL2dyYXBoZHMuYycNCi0tLSBnY2MvZ3JhcGhkcy5j CTIwMDktMTEtMjUgMTA6NTU6NTQgKzAwMDANCisrKyBnY2MvZ3JhcGhkcy5j CTIwMTItMDgtMTggMTY6NDM6MDIgKzAwMDANCkBAIC01MywyOCArNTMsMjkg QEAgZHVtcF9ncmFwaCAoRklMRSAqZiwgc3RydWN0IGdyYXBoICpnKQ0KICAg ICB9DQogfQ0KIA0KLS8qIENyZWF0ZXMgYSBuZXcgZ3JhcGggd2l0aCBOX1ZF UlRJQ0VTIHZlcnRpY2VzLiAgKi8NCisvKiBDcmVhdGVzIGEgbmV3IGdyYXBo IHdpdGggTl9WRVJUSUNFUyB2ZXJ0aWNlcyBmcm9tIG9ic3RhY2sgTy4gICov DQogDQogc3RydWN0IGdyYXBoICoNCi1uZXdfZ3JhcGggKGludCBuX3ZlcnRp Y2VzKQ0KK25ld19ncmFwaCAoaW50IG5fdmVydGljZXMsIHN0cnVjdCBvYnN0 YWNrICpvKQ0KIHsNCi0gIHN0cnVjdCBncmFwaCAqZyA9IFhORVcgKHN0cnVj dCBncmFwaCk7DQorICBzdHJ1Y3QgZ3JhcGggKmcgPSBYT0JORVcgKG8sIHN0 cnVjdCBncmFwaCk7DQogDQogICBnLT5uX3ZlcnRpY2VzID0gbl92ZXJ0aWNl czsNCi0gIGctPnZlcnRpY2VzID0gWENORVdWRUMgKHN0cnVjdCB2ZXJ0ZXgs IG5fdmVydGljZXMpOw0KKyAgZy0+dmVydGljZXMgPSBYT0JORVdWRUMgKG8s IHN0cnVjdCB2ZXJ0ZXgsIG5fdmVydGljZXMpOw0KKyAgbWVtc2V0IChnLT52 ZXJ0aWNlcywgMCwgbl92ZXJ0aWNlcyAqIHNpemVvZiAoKmctPnZlcnRpY2Vz KSk7DQogDQogICByZXR1cm4gZzsNCiB9DQogDQotLyogQWRkcyBhbiBlZGdl IGZyb20gRiB0byBUIHRvIGdyYXBoIEcuICBUaGUgbmV3IGVkZ2UgaXMgcmV0 dXJuZWQuICAqLw0KKy8qIEFkZHMgYW4gZWRnZSBmcm9tIEYgdG8gVCB0byBn cmFwaCBHLiAgQWxsb2NhdGlvbnMgYXJlIGZyb20gb2JzdGFjayBPLiBUaGUN CisgICBuZXcgZWRnZSBpcyByZXR1cm5lZC4gICovDQogDQogc3RydWN0IGdy YXBoX2VkZ2UgKg0KLWFkZF9lZGdlIChzdHJ1Y3QgZ3JhcGggKmcsIGludCBm LCBpbnQgdCkNCithZGRfZWRnZSAoc3RydWN0IGdyYXBoICpnLCBpbnQgZiwg aW50IHQsIHN0cnVjdCBvYnN0YWNrICpvKQ0KIHsNCi0gIHN0cnVjdCBncmFw aF9lZGdlICplID0gWE5FVyAoc3RydWN0IGdyYXBoX2VkZ2UpOw0KKyAgc3Ry dWN0IGdyYXBoX2VkZ2UgKmUgPSBYT0JORVcgKG8sIHN0cnVjdCBncmFwaF9l ZGdlKTsNCiAgIHN0cnVjdCB2ZXJ0ZXggKnZmID0gJmctPnZlcnRpY2VzW2Zd LCAqdnQgPSAmZy0+dmVydGljZXNbdF07DQogDQotDQogICBlLT5zcmMgPSBm Ow0KICAgZS0+ZGVzdCA9IHQ7DQogDQpAQCAtMzIxLDI4ICszMjIsNiBAQCBm b3JfZWFjaF9lZGdlIChzdHJ1Y3QgZ3JhcGggKmcsIGdyYXBoZHNfDQogICAg ICAgY2FsbGJhY2sgKGcsIGUpOw0KIH0NCiANCi0vKiBSZWxlYXNlcyB0aGUg bWVtb3J5IG9jY3VwaWVkIGJ5IEcuICAqLw0KLQ0KLXZvaWQNCi1mcmVlX2dy YXBoIChzdHJ1Y3QgZ3JhcGggKmcpDQotew0KLSAgc3RydWN0IGdyYXBoX2Vk Z2UgKmUsICpuOw0KLSAgc3RydWN0IHZlcnRleCAqdjsNCi0gIGludCBpOw0K LQ0KLSAgZm9yIChpID0gMDsgaSA8IGctPm5fdmVydGljZXM7IGkrKykNCi0g ICAgew0KLSAgICAgIHYgPSAmZy0+dmVydGljZXNbaV07DQotICAgICAgZm9y IChlID0gdi0+c3VjYzsgZTsgZSA9IG4pDQotCXsNCi0JICBuID0gZS0+c3Vj Y19uZXh0Ow0KLQkgIGZyZWUgKGUpOw0KLQl9DQotICAgIH0NCi0gIGZyZWUg KGctPnZlcnRpY2VzKTsNCi0gIGZyZWUgKGcpOw0KLX0NCi0NCiAvKiBSZXR1 cm5zIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBvZiBYIGFuZCBZIGlu IHRyZWUgd2hvc2UgcGFyZW50DQogICAgbGlua3MgYXJlIGdpdmVuIGJ5IFBB UkVOVC4gIE1BUktTIGlzIHRoZSBhcnJheSB1c2VkIHRvIG1hcmsgdGhlDQog ICAgdmVydGljZXMgb2YgdGhlIHRyZWUsIGFuZCBNQVJLIGlzIHRoZSBudW1i ZXIgY3VycmVudGx5IHVzZWQgYXMgYSBtYXJrLiAgKi8NCg0KPT09IG1vZGlm aWVkIGZpbGUgJ2djYy9ncmFwaGRzLmgnDQotLS0gZ2NjL2dyYXBoZHMuaAky MDA5LTAyLTIwIDE1OjIwOjM4ICswMDAwDQorKysgZ2NjL2dyYXBoZHMuaAky MDEyLTA4LTE4IDE3OjE4OjMwICswMDAwDQpAQCAtMTgsNiArMTgsMTEgQEAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgRw0KIGFs b25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qg c2VlDQogPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8NCiAN CisjaWZuZGVmIEdSQVBIRFNfSA0KKyNkZWZpbmUgR1JBUEhEU19IDQorDQor I2luY2x1ZGUgIm9ic3RhY2suaCINCisNCiAvKiBTdHJ1Y3R1cmUgcmVwcmVz ZW50aW5nIGVkZ2Ugb2YgYSBncmFwaC4gICovDQogDQogc3RydWN0IGdyYXBo X2VkZ2UNCkBAIC0yOCw2ICszMyw4IEBAIHN0cnVjdCBncmFwaF9lZGdlDQog ICB2b2lkICpkYXRhOwkJLyogRGF0YSBhdHRhY2hlZCB0byB0aGUgZWRnZS4g ICovDQogfTsNCiANCitzdGF0aWMgc3RydWN0IG9ic3RhY2sgKmdyYXBoX29i c3RhY2sgQVRUUklCVVRFX1VOVVNFRDsNCisNCiAvKiBTdHJ1Y3R1cmUgcmVw cmVzZW50aW5nIHZlcnRleCBvZiBhIGdyYXBoLiAgKi8NCiANCiBzdHJ1Y3Qg dmVydGV4DQpAQCAtNTAsOSArNTcsOSBAQCBzdHJ1Y3QgZ3JhcGgNCiAgIGh0 YWJfdCBpbmRpY2VzOwkvKiBGYXN0IGxvb2t1cCBmb3IgaW5kaWNlcy4gICov DQogfTsNCiANCi1zdHJ1Y3QgZ3JhcGggKm5ld19ncmFwaCAoaW50KTsNCitz dHJ1Y3QgZ3JhcGggKm5ld19ncmFwaCAoaW50LCBzdHJ1Y3Qgb2JzdGFjayAq KTsNCiB2b2lkIGR1bXBfZ3JhcGggKEZJTEUgKiwgc3RydWN0IGdyYXBoICop Ow0KLXN0cnVjdCBncmFwaF9lZGdlICphZGRfZWRnZSAoc3RydWN0IGdyYXBo ICosIGludCwgaW50KTsNCitzdHJ1Y3QgZ3JhcGhfZWRnZSAqYWRkX2VkZ2Ug KHN0cnVjdCBncmFwaCAqLCBpbnQsIGludCwgc3RydWN0IG9ic3RhY2sgKik7 DQogdm9pZCBpZGVudGlmeV92ZXJ0aWNlcyAoc3RydWN0IGdyYXBoICosIGlu dCwgaW50KTsNCiBpbnQgZ3JhcGhkc19kZnMgKHN0cnVjdCBncmFwaCAqLCBp bnQgKiwgaW50LA0KIAkJIFZFQyAoaW50LCBoZWFwKSAqKiwgYm9vbCwgYml0 bWFwKTsNCkBAIC02MCw0ICs2Nyw1IEBAIGludCBncmFwaGRzX3NjYyAoc3Ry dWN0IGdyYXBoICosIGJpdG1hcCkNCiB2b2lkIGdyYXBoZHNfZG9tdHJlZSAo c3RydWN0IGdyYXBoICosIGludCwgaW50ICosIGludCAqLCBpbnQgKik7DQog dHlwZWRlZiB2b2lkICgqZ3JhcGhkc19lZGdlX2NhbGxiYWNrKSAoc3RydWN0 IGdyYXBoICosIHN0cnVjdCBncmFwaF9lZGdlICopOw0KIHZvaWQgZm9yX2Vh Y2hfZWRnZSAoc3RydWN0IGdyYXBoICosIGdyYXBoZHNfZWRnZV9jYWxsYmFj ayk7DQotdm9pZCBmcmVlX2dyYXBoIChzdHJ1Y3QgZ3JhcGggKmcpOw0KKw0K KyNlbmRpZgkvKiBHUkFQSERTX0ggKi8NCg0KPT09IG1vZGlmaWVkIGZpbGUg J2djYy9ncmFwaGl0ZS1zZXNlLXRvLXBvbHkuYycNCi0tLSBnY2MvZ3JhcGhp dGUtc2VzZS10by1wb2x5LmMJMjAxMi0wOC0xNiAxNDoyNzo1MSArMDAwMA0K KysrIGdjYy9ncmFwaGl0ZS1zZXNlLXRvLXBvbHkuYwkyMDEyLTA4LTE4IDE2 OjQzOjAyICswMDAwDQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgc3RhdGljIGlu dA0KIGJ1aWxkX2FsaWFzX3NldF9vcHRpbWFsX3AgKFZFQyAoZGF0YV9yZWZl cmVuY2VfcCwgaGVhcCkgKmRycykNCiB7DQogICBpbnQgbnVtX3ZlcnRpY2Vz ID0gVkVDX2xlbmd0aCAoZGF0YV9yZWZlcmVuY2VfcCwgZHJzKTsNCi0gIHN0 cnVjdCBncmFwaCAqZyA9IG5ld19ncmFwaCAobnVtX3ZlcnRpY2VzKTsNCisg IHN0cnVjdCBncmFwaCAqZzsNCiAgIGRhdGFfcmVmZXJlbmNlX3AgZHIxLCBk cjI7DQogICBpbnQgaSwgajsNCiAgIGludCBudW1fY29ubmVjdGVkX2NvbXBv bmVudHM7DQpAQCAtMTczMCwxMiArMTczMCwxOSBAQCBidWlsZF9hbGlhc19z ZXRfb3B0aW1hbF9wIChWRUMgKGRhdGFfcmVmDQogICBpbnQgdGhpc19jb21w b25lbnRfaXNfY2xpcXVlOw0KICAgaW50IGFsbF9jb21wb25lbnRzX2FyZV9j bGlxdWVzID0gMTsNCiANCisgIGlmIChncmFwaF9vYnN0YWNrID09IE5VTEwp DQorICAgIHsNCisgICAgICBncmFwaF9vYnN0YWNrID0gWE5FVyAoc3RydWN0 IG9ic3RhY2spOw0KKyAgICAgIG9ic3RhY2tfaW5pdCAoZ3JhcGhfb2JzdGFj ayk7DQorICAgIH0NCisgIGcgPSBuZXdfZ3JhcGggKG51bV92ZXJ0aWNlcywg Z3JhcGhfb2JzdGFjayk7DQorDQogICBGT1JfRUFDSF9WRUNfRUxUIChkYXRh X3JlZmVyZW5jZV9wLCBkcnMsIGksIGRyMSkNCiAgICAgZm9yIChqID0gaSsx OyBWRUNfaXRlcmF0ZSAoZGF0YV9yZWZlcmVuY2VfcCwgZHJzLCBqLCBkcjIp OyBqKyspDQogICAgICAgaWYgKGRyX21heV9hbGlhc19wIChkcjEsIGRyMiwg dHJ1ZSkpDQogCXsNCi0JICBhZGRfZWRnZSAoZywgaSwgaik7DQotCSAgYWRk X2VkZ2UgKGcsIGosIGkpOw0KKwkgIGFkZF9lZGdlIChnLCBpLCBqLCBncmFw aF9vYnN0YWNrKTsNCisJICBhZGRfZWRnZSAoZywgaiwgaSwgZ3JhcGhfb2Jz dGFjayk7DQogCX0NCiANCiAgIGFsbF92ZXJ0aWNlcyA9IFhORVdWRUMgKGlu dCwgbnVtX3ZlcnRpY2VzKTsNCkBAIC0xNzk1LDcgKzE4MDIsNyBAQCBidWls ZF9hbGlhc19zZXRfb3B0aW1hbF9wIChWRUMgKGRhdGFfcmVmDQogDQogICBm cmVlIChhbGxfdmVydGljZXMpOw0KICAgZnJlZSAodmVydGljZXMpOw0KLSAg ZnJlZV9ncmFwaCAoZyk7DQorICBYT0JERUxFVEUgKGdyYXBoX29ic3RhY2ss IGcpOw0KICAgcmV0dXJuIGFsbF9jb21wb25lbnRzX2FyZV9jbGlxdWVzOw0K IH0NCiANCkBAIC0xODA1LDE3ICsxODEyLDI0IEBAIHN0YXRpYyB2b2lkDQog YnVpbGRfYmFzZV9vYmpfc2V0X2Zvcl9kcnMgKFZFQyAoZGF0YV9yZWZlcmVu Y2VfcCwgaGVhcCkgKmRycykNCiB7DQogICBpbnQgbnVtX3ZlcnRleCA9IFZF Q19sZW5ndGggKGRhdGFfcmVmZXJlbmNlX3AsIGRycyk7DQotICBzdHJ1Y3Qg Z3JhcGggKmcgPSBuZXdfZ3JhcGggKG51bV92ZXJ0ZXgpOw0KKyAgc3RydWN0 IGdyYXBoICpnOw0KICAgZGF0YV9yZWZlcmVuY2VfcCBkcjEsIGRyMjsNCiAg IGludCBpLCBqOw0KICAgaW50ICpxdWV1ZTsNCiANCisgIGlmIChncmFwaF9v YnN0YWNrID09IE5VTEwpDQorICAgIHsNCisgICAgICBncmFwaF9vYnN0YWNr ID0gWE5FVyAoc3RydWN0IG9ic3RhY2spOw0KKyAgICAgIG9ic3RhY2tfaW5p dCAoZ3JhcGhfb2JzdGFjayk7DQorICAgIH0NCisgIGcgPSBuZXdfZ3JhcGgg KG51bV92ZXJ0ZXgsIGdyYXBoX29ic3RhY2spOw0KKw0KICAgRk9SX0VBQ0hf VkVDX0VMVCAoZGF0YV9yZWZlcmVuY2VfcCwgZHJzLCBpLCBkcjEpDQogICAg IGZvciAoaiA9IGkgKyAxOyBWRUNfaXRlcmF0ZSAoZGF0YV9yZWZlcmVuY2Vf cCwgZHJzLCBqLCBkcjIpOyBqKyspDQogICAgICAgaWYgKGRyX3NhbWVfYmFz ZV9vYmplY3RfcCAoZHIxLCBkcjIpKQ0KIAl7DQotCSAgYWRkX2VkZ2UgKGcs IGksIGopOw0KLQkgIGFkZF9lZGdlIChnLCBqLCBpKTsNCisJICBhZGRfZWRn ZSAoZywgaSwgaiwgZ3JhcGhfb2JzdGFjayk7DQorCSAgYWRkX2VkZ2UgKGcs IGosIGksIGdyYXBoX29ic3RhY2spOw0KIAl9DQogDQogICBxdWV1ZSA9IFhO RVdWRUMgKGludCwgbnVtX3ZlcnRleCk7DQpAQCAtMTgzNiw3ICsxODUwLDcg QEAgYnVpbGRfYmFzZV9vYmpfc2V0X2Zvcl9kcnMgKFZFQyAoZGF0YV9yZQ0K ICAgICB9DQogDQogICBmcmVlIChxdWV1ZSk7DQotICBmcmVlX2dyYXBoIChn KTsNCisgIFhPQkRFTEVURSAoZ3JhcGhfb2JzdGFjaywgZyk7DQogfQ0KIA0K IC8qIEJ1aWxkIHRoZSBkYXRhIHJlZmVyZW5jZXMgZm9yIFBCQi4gICovDQoN Cj09PSBtb2RpZmllZCBmaWxlICdnY2MvdHJlZS1kYXRhLXJlZi5jJw0KLS0t IGdjYy90cmVlLWRhdGEtcmVmLmMJMjAxMi0wNy0xNiAxMTozMjo0MiArMDAw MA0KKysrIGdjYy90cmVlLWRhdGEtcmVmLmMJMjAxMi0wOC0xOCAxNjo0Mzow MiArMDAwMA0KQEAgLTQ5MzYsMTAgKzQ5MzYsMTAgQEAgcmRnX3ZlcnRleF9m b3Jfc3RtdCAoc3RydWN0IGdyYXBoICpyZGcgQQ0KIA0KIC8qIENyZWF0ZXMg YW4gZWRnZSBpbiBSREcgZm9yIGVhY2ggZGlzdGFuY2UgdmVjdG9yIGZyb20g RERSLiAgVGhlDQogICAgb3JkZXIgdGhhdCB3ZSBrZWVwIHRyYWNrIG9mIGlu IHRoZSBSREcgaXMgdGhlIG9yZGVyIGluIHdoaWNoDQotICAgc3RhdGVtZW50 cyBoYXZlIHRvIGJlIGV4ZWN1dGVkLiAgKi8NCisgICBzdGF0ZW1lbnRzIGhh dmUgdG8gYmUgZXhlY3V0ZWQuIEFsbG9jYXRpb24gaGFwcGVuIGZyb20gb2Jz dGFjayBPLiAgKi8NCiANCiBzdGF0aWMgdm9pZA0KLWNyZWF0ZV9yZGdfZWRn ZV9mb3JfZGRyIChzdHJ1Y3QgZ3JhcGggKnJkZywgZGRyX3AgZGRyKQ0KK2Ny ZWF0ZV9yZGdfZWRnZV9mb3JfZGRyIChzdHJ1Y3QgZ3JhcGggKnJkZywgZGRy X3AgZGRyLCBzdHJ1Y3Qgb2JzdGFjayAqbykNCiB7DQogICBzdHJ1Y3QgZ3Jh cGhfZWRnZSAqZTsNCiAgIGludCB2YSwgdmI7DQpAQCAtNDk2Myw4ICs0OTYz LDggQEAgY3JlYXRlX3JkZ19lZGdlX2Zvcl9kZHIgKHN0cnVjdCBncmFwaCAq cg0KICAgaWYgKHZhIDwgMCB8fCB2YiA8IDApDQogICAgIHJldHVybjsNCiAN Ci0gIGUgPSBhZGRfZWRnZSAocmRnLCB2YSwgdmIpOw0KLSAgZS0+ZGF0YSA9 IFhORVcgKHN0cnVjdCByZGdfZWRnZSk7DQorICBlID0gYWRkX2VkZ2UgKHJk ZywgdmEsIHZiLCBvKTsNCisgIGUtPmRhdGEgPSBYT0JORVcgKG8sIHN0cnVj dCByZGdfZWRnZSk7DQogDQogICBSREdFX0xFVkVMIChlKSA9IGxldmVsOw0K ICAgUkRHRV9SRUxBVElPTiAoZSkgPSBkZHI7DQpAQCAtNDk4MSwxMCArNDk4 MSwxMSBAQCBjcmVhdGVfcmRnX2VkZ2VfZm9yX2RkciAoc3RydWN0IGdyYXBo ICpyDQogfQ0KIA0KIC8qIENyZWF0ZXMgZGVwZW5kZW5jZSBlZGdlcyBpbiBS REcgZm9yIGFsbCB0aGUgdXNlcyBvZiBERUYuICBJREVGIGlzDQotICAgdGhl IGluZGV4IG9mIERFRiBpbiBSREcuICAqLw0KKyAgIHRoZSBpbmRleCBvZiBE RUYgaW4gUkRHLiBBbGxvY2F0aW9uIGhhcHBlbiBmcm9tIG9ic3RhY2sgTy4g ICovDQogDQogc3RhdGljIHZvaWQNCi1jcmVhdGVfcmRnX2VkZ2VzX2Zvcl9z Y2FsYXIgKHN0cnVjdCBncmFwaCAqcmRnLCB0cmVlIGRlZiwgaW50IGlkZWYp DQorY3JlYXRlX3JkZ19lZGdlc19mb3Jfc2NhbGFyIChzdHJ1Y3QgZ3JhcGgg KnJkZywgdHJlZSBkZWYsIGludCBpZGVmLA0KKwkJCSAgICAgc3RydWN0IG9i c3RhY2sgKm8pDQogew0KICAgdXNlX29wZXJhbmRfcCBpbW1fdXNlX3A7DQog ICBpbW1fdXNlX2l0ZXJhdG9yIGl0ZXJhdG9yOw0KQEAgLTQ5OTcsMTcgKzQ5 OTgsMTggQEAgY3JlYXRlX3JkZ19lZGdlc19mb3Jfc2NhbGFyIChzdHJ1Y3Qg Z3JhcA0KICAgICAgIGlmICh1c2UgPCAwKQ0KIAljb250aW51ZTsNCiANCi0g ICAgICBlID0gYWRkX2VkZ2UgKHJkZywgaWRlZiwgdXNlKTsNCi0gICAgICBl LT5kYXRhID0gWE5FVyAoc3RydWN0IHJkZ19lZGdlKTsNCisgICAgICBlID0g YWRkX2VkZ2UgKHJkZywgaWRlZiwgdXNlLCBvKTsNCisgICAgICBlLT5kYXRh ID0gWE9CTkVXIChvLCBzdHJ1Y3QgcmRnX2VkZ2UpOw0KICAgICAgIFJER0Vf VFlQRSAoZSkgPSBmbG93X2RkOw0KICAgICAgIFJER0VfUkVMQVRJT04gKGUp ID0gTlVMTDsNCiAgICAgfQ0KIH0NCiANCi0vKiBDcmVhdGVzIHRoZSBlZGdl cyBvZiB0aGUgcmVkdWNlZCBkZXBlbmRlbmNlIGdyYXBoIFJERy4gICovDQor LyogQ3JlYXRlcyB0aGUgZWRnZXMgb2YgdGhlIHJlZHVjZWQgZGVwZW5kZW5j ZSBncmFwaCBSREcuIEFsbG9jYXRpb25zIGhhcHBlbg0KKyAgIGZyb20gb2Jz dGFjayBPLiAgKi8NCiANCiBzdGF0aWMgdm9pZA0KLWNyZWF0ZV9yZGdfZWRn ZXMgKHN0cnVjdCBncmFwaCAqcmRnLCBWRUMgKGRkcl9wLCBoZWFwKSAqZGRy cykNCitjcmVhdGVfcmRnX2VkZ2VzIChzdHJ1Y3QgZ3JhcGggKnJkZywgVkVD IChkZHJfcCwgaGVhcCkgKmRkcnMsIHN0cnVjdCBvYnN0YWNrICpvKQ0KIHsN CiAgIGludCBpOw0KICAgc3RydWN0IGRhdGFfZGVwZW5kZW5jZV9yZWxhdGlv biAqZGRyOw0KQEAgLTUwMTYsMTggKzUwMTgsMjAgQEAgY3JlYXRlX3JkZ19l ZGdlcyAoc3RydWN0IGdyYXBoICpyZGcsIFZFQw0KIA0KICAgRk9SX0VBQ0hf VkVDX0VMVCAoZGRyX3AsIGRkcnMsIGksIGRkcikNCiAgICAgaWYgKEREUl9B UkVfREVQRU5ERU5UIChkZHIpID09IE5VTExfVFJFRSkNCi0gICAgICBjcmVh dGVfcmRnX2VkZ2VfZm9yX2RkciAocmRnLCBkZHIpOw0KKyAgICAgIGNyZWF0 ZV9yZGdfZWRnZV9mb3JfZGRyIChyZGcsIGRkciwgbyk7DQogDQogICBmb3Ig KGkgPSAwOyBpIDwgcmRnLT5uX3ZlcnRpY2VzOyBpKyspDQogICAgIEZPUl9F QUNIX1BISV9PUl9TVE1UX0RFRiAoZGVmX3AsIFJER19TVE1UIChyZGcsIGkp LA0KIAkJCSAgICAgIGl0ZXIsIFNTQV9PUF9ERUYpDQotICAgICAgY3JlYXRl X3JkZ19lZGdlc19mb3Jfc2NhbGFyIChyZGcsIERFRl9GUk9NX1BUUiAoZGVm X3ApLCBpKTsNCisgICAgICBjcmVhdGVfcmRnX2VkZ2VzX2Zvcl9zY2FsYXIg KHJkZywgREVGX0ZST01fUFRSIChkZWZfcCksIGksIG8pOw0KIH0NCiANCi0v KiBCdWlsZCB0aGUgdmVydGljZXMgb2YgdGhlIHJlZHVjZWQgZGVwZW5kZW5j ZSBncmFwaCBSREcuICAqLw0KKy8qIEJ1aWxkIHRoZSB2ZXJ0aWNlcyBvZiB0 aGUgcmVkdWNlZCBkZXBlbmRlbmNlIGdyYXBoIFJERy4gRGF0YSBpcyBhbGxv Y2F0ZWQNCisgICBmcm9tIG9ic3RhY2sgTy4gKi8NCiANCiBzdGF0aWMgdm9p ZA0KLWNyZWF0ZV9yZGdfdmVydGljZXMgKHN0cnVjdCBncmFwaCAqcmRnLCBW RUMgKGdpbXBsZSwgaGVhcCkgKnN0bXRzLCBsb29wX3AgbG9vcCkNCitjcmVh dGVfcmRnX3ZlcnRpY2VzIChzdHJ1Y3QgZ3JhcGggKnJkZywgVkVDIChnaW1w bGUsIGhlYXApICpzdG10cywgbG9vcF9wIGxvb3AsDQorCQkgICAgIHN0cnVj dCBvYnN0YWNrICpvKQ0KIHsNCiAgIGludCBpLCBqOw0KICAgZ2ltcGxlIHN0 bXQ7DQpAQCAtNTA0MSw3ICs1MDQ1LDcgQEAgY3JlYXRlX3JkZ192ZXJ0aWNl cyAoc3RydWN0IGdyYXBoICpyZGcsDQogICAgICAgLyogUmVjb3JkIHN0YXRl bWVudCB0byB2ZXJ0ZXggbWFwcGluZy4gICovDQogICAgICAgZ2ltcGxlX3Nl dF91aWQgKHN0bXQsIGkpOw0KIA0KLSAgICAgIHYtPmRhdGEgPSBYTkVXIChz dHJ1Y3QgcmRnX3ZlcnRleCk7DQorICAgICAgdi0+ZGF0YSA9IFhPQk5FVyAo bywgc3RydWN0IHJkZ192ZXJ0ZXgpOw0KICAgICAgIFJER1ZfU1RNVCAodikg PSBzdG10Ow0KICAgICAgIFJER1ZfREFUQVJFRlMgKHYpID0gTlVMTDsNCiAg ICAgICBSREdWX0hBU19NRU1fV1JJVEUgKHYpID0gZmFsc2U7DQpAQCAtNTEx NSwyNCArNTExOSwzMCBAQCBrbm93bl9kZXBlbmRlbmNlc19wIChWRUMgKGRk cl9wLCBoZWFwKSAqDQogDQogLyogQnVpbGQgdGhlIFJlZHVjZWQgRGVwZW5k ZW5jZSBHcmFwaCAoUkRHKSB3aXRoIG9uZSB2ZXJ0ZXggcGVyDQogICAgc3Rh dGVtZW50IG9mIHRoZSBsb29wIG5lc3QsIGFuZCBvbmUgZWRnZSBwZXIgZGF0 YSBkZXBlbmRlbmNlIG9yDQotICAgc2NhbGFyIGRlcGVuZGVuY2UuICAqLw0K KyAgIHNjYWxhciBkZXBlbmRlbmNlLiBBbGxvY2F0ZWQgZnJvbSBvYnN0YWNr IE8uICAqLw0KIA0KIHN0cnVjdCBncmFwaCAqDQotYnVpbGRfZW1wdHlfcmRn IChpbnQgbl9zdG10cykNCitidWlsZF9lbXB0eV9yZGcgKGludCBuX3N0bXRz LCBzdHJ1Y3Qgb2JzdGFjayAqbykNCiB7DQotICBzdHJ1Y3QgZ3JhcGggKnJk ZyA9IG5ld19ncmFwaCAobl9zdG10cyk7DQotICByZXR1cm4gcmRnOw0KKyAg aWYgKGdyYXBoX29ic3RhY2sgPT0gTlVMTCkNCisgICAgew0KKyAgICAgIGdy YXBoX29ic3RhY2sgPSBYT0JORVcgKG8sIHN0cnVjdCBvYnN0YWNrKTsNCisg ICAgICBvYnN0YWNrX2luaXQgKGdyYXBoX29ic3RhY2spOw0KKyAgICB9DQor DQorICByZXR1cm4gbmV3X2dyYXBoIChuX3N0bXRzLCBvKTsNCiB9DQogDQog LyogQnVpbGQgdGhlIFJlZHVjZWQgRGVwZW5kZW5jZSBHcmFwaCAoUkRHKSB3 aXRoIG9uZSB2ZXJ0ZXggcGVyDQogICAgc3RhdGVtZW50IG9mIHRoZSBsb29w IG5lc3QsIGFuZCBvbmUgZWRnZSBwZXIgZGF0YSBkZXBlbmRlbmNlIG9yDQot ICAgc2NhbGFyIGRlcGVuZGVuY2UuICAqLw0KKyAgIHNjYWxhciBkZXBlbmRl bmNlLiBBbGwgZGF0YSBpcyBhbGxvY2F0ZWQgZnJvbSBvYnN0YWNrIE8uICAq Lw0KIA0KIHN0cnVjdCBncmFwaCAqDQogYnVpbGRfcmRnIChzdHJ1Y3QgbG9v cCAqbG9vcCwNCiAJICAgVkVDIChsb29wX3AsIGhlYXApICoqbG9vcF9uZXN0 LA0KIAkgICBWRUMgKGRkcl9wLCBoZWFwKSAqKmRlcGVuZGVuY2VfcmVsYXRp b25zLA0KLQkgICBWRUMgKGRhdGFfcmVmZXJlbmNlX3AsIGhlYXApICoqZGF0 YXJlZnMpDQorCSAgIFZFQyAoZGF0YV9yZWZlcmVuY2VfcCwgaGVhcCkgKipk YXRhcmVmcywNCisJICAgc3RydWN0IG9ic3RhY2sgKm8pDQogew0KICAgc3Ry dWN0IGdyYXBoICpyZGcgPSBOVUxMOw0KIA0KQEAgLTUxNDIsMzggKzUxNTIs MTUgQEAgYnVpbGRfcmRnIChzdHJ1Y3QgbG9vcCAqbG9vcCwNCiAgICAgew0K ICAgICAgIFZFQyAoZ2ltcGxlLCBoZWFwKSAqc3RtdHMgPSBWRUNfYWxsb2Mg KGdpbXBsZSwgaGVhcCwgMTApOw0KICAgICAgIHN0bXRzX2Zyb21fbG9vcCAo bG9vcCwgJnN0bXRzKTsNCi0gICAgICByZGcgPSBidWlsZF9lbXB0eV9yZGcg KFZFQ19sZW5ndGggKGdpbXBsZSwgc3RtdHMpKTsNCi0gICAgICBjcmVhdGVf cmRnX3ZlcnRpY2VzIChyZGcsIHN0bXRzLCBsb29wKTsNCi0gICAgICBjcmVh dGVfcmRnX2VkZ2VzIChyZGcsICpkZXBlbmRlbmNlX3JlbGF0aW9ucyk7DQor ICAgICAgcmRnID0gYnVpbGRfZW1wdHlfcmRnIChWRUNfbGVuZ3RoIChnaW1w bGUsIHN0bXRzKSwgbyk7DQorICAgICAgY3JlYXRlX3JkZ192ZXJ0aWNlcyAo cmRnLCBzdG10cywgbG9vcCwgbyk7DQorICAgICAgY3JlYXRlX3JkZ19lZGdl cyAocmRnLCAqZGVwZW5kZW5jZV9yZWxhdGlvbnMsIG8pOw0KICAgICAgIFZF Q19mcmVlIChnaW1wbGUsIGhlYXAsIHN0bXRzKTsNCiAgICAgfQ0KIA0KICAg cmV0dXJuIHJkZzsNCiB9DQogDQotLyogRnJlZSB0aGUgcmVkdWNlZCBkZXBl bmRlbmNlIGdyYXBoIFJERy4gICovDQotDQotdm9pZA0KLWZyZWVfcmRnIChz dHJ1Y3QgZ3JhcGggKnJkZykNCi17DQotICBpbnQgaTsNCi0NCi0gIGZvciAo aSA9IDA7IGkgPCByZGctPm5fdmVydGljZXM7IGkrKykNCi0gICAgew0KLSAg ICAgIHN0cnVjdCB2ZXJ0ZXggKnYgPSAmKHJkZy0+dmVydGljZXNbaV0pOw0K LSAgICAgIHN0cnVjdCBncmFwaF9lZGdlICplOw0KLQ0KLSAgICAgIGZvciAo ZSA9IHYtPnN1Y2M7IGU7IGUgPSBlLT5zdWNjX25leHQpDQotCWZyZWUgKGUt PmRhdGEpOw0KLQ0KLSAgICAgIGdpbXBsZV9zZXRfdWlkIChSREdWX1NUTVQg KHYpLCAtMSk7DQotICAgICAgZnJlZV9kYXRhX3JlZnMgKFJER1ZfREFUQVJF RlMgKHYpKTsNCi0gICAgICBmcmVlICh2LT5kYXRhKTsNCi0gICAgfQ0KLQ0K LSAgZnJlZV9ncmFwaCAocmRnKTsNCi19DQotDQogLyogRGV0ZXJtaW5lcyB3 aGV0aGVyIHRoZSBzdGF0ZW1lbnQgZnJvbSB2ZXJ0ZXggViBvZiB0aGUgUkRH IGhhcyBhDQogICAgZGVmaW5pdGlvbiB1c2VkIG91dHNpZGUgdGhlIGxvb3Ag dGhhdCBjb250YWlucyB0aGlzIHN0YXRlbWVudC4gICovDQogDQoNCj09PSBt b2RpZmllZCBmaWxlICdnY2MvdHJlZS1kYXRhLXJlZi5oJw0KLS0tIGdjYy90 cmVlLWRhdGEtcmVmLmgJMjAxMi0wNi0wNiAwOTo0NToyNyArMDAwMA0KKysr IGdjYy90cmVlLWRhdGEtcmVmLmgJMjAxMi0wOC0xOCAxNjo0MzowMiArMDAw MA0KQEAgLTU4OSw5ICs1ODksOSBAQCB0eXBlZGVmIHN0cnVjdCByZGdfZWRn ZQ0KIHN0cnVjdCBncmFwaCAqYnVpbGRfcmRnIChzdHJ1Y3QgbG9vcCAqLA0K IAkJCSBWRUMgKGxvb3BfcCwgaGVhcCkgKiosDQogCQkJIFZFQyAoZGRyX3As IGhlYXApICoqLA0KLQkJCSBWRUMgKGRhdGFfcmVmZXJlbmNlX3AsIGhlYXAp ICoqKTsNCi1zdHJ1Y3QgZ3JhcGggKmJ1aWxkX2VtcHR5X3JkZyAoaW50KTsN Ci12b2lkIGZyZWVfcmRnIChzdHJ1Y3QgZ3JhcGggKik7DQorCQkJIFZFQyAo ZGF0YV9yZWZlcmVuY2VfcCwgaGVhcCkgKiosDQorCQkJIHN0cnVjdCBvYnN0 YWNrICopOw0KK3N0cnVjdCBncmFwaCAqYnVpbGRfZW1wdHlfcmRnIChpbnQs IHN0cnVjdCBvYnN0YWNrICopOw0KIA0KIC8qIFJldHVybiB0aGUgaW5kZXgg b2YgdGhlIHZhcmlhYmxlIFZBUiBpbiB0aGUgTE9PUF9ORVNUIGFycmF5LiAg Ki8NCiANCg0KPT09IG1vZGlmaWVkIGZpbGUgJ2djYy90cmVlLWxvb3AtZGlz dHJpYnV0aW9uLmMnDQotLS0gZ2NjL3RyZWUtbG9vcC1kaXN0cmlidXRpb24u YwkyMDEyLTA4LTE0IDE0OjE2OjE4ICswMDAwDQorKysgZ2NjL3RyZWUtbG9v cC1kaXN0cmlidXRpb24uYwkyMDEyLTA4LTE4IDE2OjQzOjAyICswMDAwDQpA QCAtMTM5Myw3ICsxMzkzLDE0IEBAIGRpc3RyaWJ1dGVfbG9vcCAoc3RydWN0 IGxvb3AgKmxvb3AsIFZFQw0KICAgZGF0YXJlZnMgPSBWRUNfYWxsb2MgKGRh dGFfcmVmZXJlbmNlX3AsIGhlYXAsIDEwKTsNCiAgIGRlcGVuZGVuY2VfcmVs YXRpb25zID0gVkVDX2FsbG9jIChkZHJfcCwgaGVhcCwgMTAwKTsNCiAgIGxv b3BfbmVzdCA9IFZFQ19hbGxvYyAobG9vcF9wLCBoZWFwLCAzKTsNCi0gIHJk ZyA9IGJ1aWxkX3JkZyAobG9vcCwgJmxvb3BfbmVzdCwgJmRlcGVuZGVuY2Vf cmVsYXRpb25zLCAmZGF0YXJlZnMpOw0KKw0KKyAgaWYgKGdyYXBoX29ic3Rh Y2sgPT0gTlVMTCkNCisgICAgew0KKyAgICAgIGdyYXBoX29ic3RhY2sgPSBY TkVXIChzdHJ1Y3Qgb2JzdGFjayk7DQorICAgICAgb2JzdGFja19pbml0IChn cmFwaF9vYnN0YWNrKTsNCisgICAgfQ0KKyAgcmRnID0gYnVpbGRfcmRnIChs b29wLCAmbG9vcF9uZXN0LCAmZGVwZW5kZW5jZV9yZWxhdGlvbnMsICZkYXRh cmVmcywNCisJCSAgIGdyYXBoX29ic3RhY2spOw0KIA0KICAgaWYgKCFyZGcp DQogICAgIHsNCkBAIC0xNDI5LDcgKzE0MzYsOSBAQCBkaXN0cmlidXRlX2xv b3AgKHN0cnVjdCBsb29wICpsb29wLCBWRUMNCiANCiAgIHJlcyA9IGxkaXN0 X2dlbiAobG9vcCwgcmRnLCB2ZXJ0aWNlcyk7DQogICBWRUNfZnJlZSAoaW50 LCBoZWFwLCB2ZXJ0aWNlcyk7DQotICBmcmVlX3JkZyAocmRnKTsNCisNCisg IFhPQkRFTEVURSAoZ3JhcGhfb2JzdGFjaywgcmRnKTsNCisNCiAgIGZyZWVf ZGVwZW5kZW5jZV9yZWxhdGlvbnMgKGRlcGVuZGVuY2VfcmVsYXRpb25zKTsN CiAgIGZyZWVfZGF0YV9yZWZzIChkYXRhcmVmcyk7DQogICBWRUNfZnJlZSAo bG9vcF9wLCBoZWFwLCBsb29wX25lc3QpOw0KDQo= --8323328-1196155265-1345313418=:20463--