From owner-freebsd-performance@FreeBSD.ORG Sun Mar 11 03:17:42 2007 Return-Path: X-Original-To: freebsd-performance@freebsd.org Delivered-To: freebsd-performance@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 68E9416A401 for ; Sun, 11 Mar 2007 03:17:42 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [209.31.154.42]) by mx1.freebsd.org (Postfix) with ESMTP id B0B4C13C428 for ; Sun, 11 Mar 2007 03:17:41 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [209.31.154.41]) by cyrus.watson.org (Postfix) with ESMTP id 3E07246CCC; Sat, 10 Mar 2007 22:17:41 -0500 (EST) Date: Sun, 11 Mar 2007 04:17:41 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: garcol@postino.it In-Reply-To: <1173276364.45eec6ccb23ff@www.postino.punto.it> Message-ID: <20070311041547.V79670@fledge.watson.org> References: <1173276364.45eec6ccb23ff@www.postino.punto.it> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-681862891-1173583061=:79670" Cc: "freebsd-performance@freebsd.org" , rwatson@abraham.elitel.it, FreeBSD.org@abraham.elitel.it, at@abraham.elitel.it Subject: Re: MFC of UDP socket enhancement for BIND? X-BeenThere: freebsd-performance@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Performance/tuning List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Mar 2007 03:17:42 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --0-681862891-1173583061=:79670 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed On Wed, 7 Mar 2007, garcol@postino.it wrote: >> For reference, the sosend_copyin.diff applies these changes: >> >> src/sys/kern/uipc_socket.c:1.253, 1.254, 1.255 > > Sorry, It's seem doesn't work ... . The function sosend_copyin() where Have > I to declare it? socketvar.h:1.144 is missing from this patch; I've attached a revised version of sosend_dgram.diff that includes that change (prototype declaration of socketvar.h). Thanks, Robert N M Watson Computer Laboratory University of Cambridge --0-681862891-1173583061=:79670 Content-Type: TEXT/plain; charset=US-ASCII; name=sosend_dgram.diff Content-Transfer-Encoding: BASE64 Content-ID: <20070311041741.S79670@fledge.watson.org> Content-Description: Content-Disposition: attachment; filename=sosend_dgram.diff SW5kZXg6IGtlcm4vdWlwY19zb2NrZXQuYw0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KUkNTIGZpbGU6IC9kYXRhL2Zic2QtY3ZzL25jdnMvc3JjL3N5cy9r ZXJuL3VpcGNfc29ja2V0LmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjI0 Mi4yLjgNCmRpZmYgLXUgLXIxLjI0Mi4yLjggdWlwY19zb2NrZXQuYw0KLS0t IGtlcm4vdWlwY19zb2NrZXQuYwkzIEZlYiAyMDA3IDA0OjAxOjIyIC0wMDAw CTEuMjQyLjIuOA0KKysrIGtlcm4vdWlwY19zb2NrZXQuYwkxMSBNYXIgMjAw NyAwMzoxMjoyMSAtMDAwMA0KQEAgLTU4NCw3ICs1ODQsMzAxIEBADQogCXJl dHVybiAoZXJyb3IpOw0KIH0NCiANCisjaWZkZWYgWkVST19DT1BZX1NPQ0tF VFMNCitzdHJ1Y3Qgc29femVyb2NvcHlfc3RhdHN7DQorCWludCBzaXplX29r Ow0KKwlpbnQgYWxpZ25fb2s7DQorCWludCBmb3VuZF9pZnA7DQorfTsNCitz dHJ1Y3Qgc29femVyb2NvcHlfc3RhdHMgc29femVyb2NwX3N0YXRzID0gezAs MCwwfTsNCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPg0KKyNpbmNsdWRlIDxu ZXQvcm91dGUuaD4NCisjaW5jbHVkZSA8bmV0aW5ldC9pbl9wY2IuaD4NCisj aW5jbHVkZSA8dm0vdm0uaD4NCisjaW5jbHVkZSA8dm0vdm1fcGFnZS5oPg0K KyNpbmNsdWRlIDx2bS92bV9vYmplY3QuaD4NCisjZW5kaWYgLypaRVJPX0NP UFlfU09DS0VUUyovDQorDQorLyoNCisgKiBzb3NlbmRfY29weWluKCkgYWNj ZXB0cyBhIHVpbyBhbmQgcHJlcGFyZXMgYW4gbWJ1ZiBjaGFpbiBob2xkaW5n IHBhcnQgb3INCisgKiBhbGwgb2YgdGhlIGRhdGEgcmVmZXJlbmNlZCBieSB0 aGUgdWlvLiAgSWYgZGVzaXJlZCwgaXQgdXNlcyB6ZXJvLWNvcHkuDQorICog KnNwYWNlIHdpbGwgYmUgdXBkYXRlZCB0byByZWZsZWN0IGRhdGEgY29waWVk IGluLg0KKyAqDQorICogTkI6IElmIGF0b21pYyBJL08gaXMgcmVxdWVzdGVk LCB0aGUgY2FsbGVyIG11c3QgYWxyZWFkeSBoYXZlIGNoZWNrZWQgdGhhdA0K KyAqIHNwYWNlIGNhbiBob2xkIHJlc2lkIGJ5dGVzLg0KKyAqDQorICogTkI6 IEluIHRoZSBldmVudCBvZiBhbiBlcnJvciwgdGhlIGNhbGxlciBtYXkgbmVl ZCB0byBmcmVlIHRoZSBwYXJ0aWFsDQorICogY2hhaW4gcG9pbnRlZCB0byBi eSAqbXBwLiAgVGhlIGNvbnRlbnRzIG9mIGJvdGggKnVpbyBhbmQgKnNwYWNl IG1heSBiZQ0KKyAqIG1vZGlmaWVkIGV2ZW4gaW4gdGhlIGNhc2Ugb2YgYW4g ZXJyb3IuDQorICovDQorc3RhdGljIGludA0KK3Nvc2VuZF9jb3B5aW4oc3Ry dWN0IHVpbyAqdWlvLCBzdHJ1Y3QgbWJ1ZiAqKnJldG1wLCBpbnQgYXRvbWlj LCBsb25nICpzcGFjZSwNCisgICAgaW50IGZsYWdzKQ0KK3sNCisJc3RydWN0 IG1idWYgKm0sICoqbXAsICp0b3A7DQorCWxvbmcgbGVuLCByZXNpZDsNCisJ aW50IGVycm9yOw0KKyNpZmRlZiBaRVJPX0NPUFlfU09DS0VUUw0KKwlpbnQg Y293X3NlbmQ7DQorI2VuZGlmDQorDQorCSpyZXRtcCA9IHRvcCA9IE5VTEw7 DQorCW1wID0gJnRvcDsNCisJbGVuID0gMDsNCisJcmVzaWQgPSB1aW8tPnVp b19yZXNpZDsNCisJZXJyb3IgPSAwOw0KKwlkbyB7DQorI2lmZGVmIFpFUk9f Q09QWV9TT0NLRVRTDQorCQljb3dfc2VuZCA9IDA7DQorI2VuZGlmIC8qIFpF Uk9fQ09QWV9TT0NLRVRTICovDQorCQlpZiAocmVzaWQgPj0gTUlOQ0xTSVpF KSB7DQorI2lmZGVmIFpFUk9fQ09QWV9TT0NLRVRTDQorCQkJaWYgKHRvcCA9 PSBOVUxMKSB7DQorCQkJCU1HRVRIRFIobSwgTV9UUllXQUlULCBNVF9EQVRB KTsNCisJCQkJaWYgKG0gPT0gTlVMTCkgew0KKwkJCQkJZXJyb3IgPSBFTk9C VUZTOw0KKwkJCQkJZ290byBvdXQ7DQorCQkJCX0NCisJCQkJbS0+bV9wa3Ro ZHIubGVuID0gMDsNCisJCQkJbS0+bV9wa3RoZHIucmN2aWYgPSBOVUxMOyAN CisJCQl9IGVsc2Ugew0KKwkJCQlNR0VUKG0sIE1fVFJZV0FJVCwgTVRfREFU QSk7DQorCQkJCWlmIChtID09IE5VTEwpIHsNCisJCQkJCWVycm9yID0gRU5P QlVGUzsNCisJCQkJCWdvdG8gb3V0Ow0KKwkJCQl9DQorCQkJfQ0KKwkJCWlm IChzb196ZXJvX2NvcHlfc2VuZCAmJg0KKwkJCSAgICByZXNpZD49UEFHRV9T SVpFICYmDQorCQkJICAgICpzcGFjZT49UEFHRV9TSVpFICYmDQorCQkJICAg IHVpby0+dWlvX2lvdi0+aW92X2xlbj49UEFHRV9TSVpFKSB7DQorCQkJCXNv X3plcm9jcF9zdGF0cy5zaXplX29rKys7DQorCQkJCXNvX3plcm9jcF9zdGF0 cy5hbGlnbl9vaysrOw0KKwkJCQljb3dfc2VuZCA9IHNvY293X3NldHVwKG0s IHVpbyk7DQorCQkJCWxlbiA9IGNvd19zZW5kOw0KKwkJCX0NCisJCQlpZiAo IWNvd19zZW5kKSB7DQorCQkJCU1DTEdFVChtLCBNX1RSWVdBSVQpOw0KKwkJ CQlpZiAoKG0tPm1fZmxhZ3MgJiBNX0VYVCkgPT0gMCkgew0KKwkJCQkJbV9m cmVlKG0pOw0KKwkJCQkJbSA9IE5VTEw7DQorCQkJCX0gZWxzZSB7DQorCQkJ CQlsZW4gPSBtaW4obWluKE1DTEJZVEVTLCByZXNpZCksDQorCQkJCQkgICAg KnNwYWNlKTsNCisJCQkJfQ0KKwkJCX0NCisjZWxzZSAvKiBaRVJPX0NPUFlf U09DS0VUUyAqLw0KKwkJCWlmICh0b3AgPT0gTlVMTCkgew0KKwkJCQltID0g bV9nZXRjbChNX1RSWVdBSVQsIE1UX0RBVEEsIE1fUEtUSERSKTsNCisJCQkJ bS0+bV9wa3RoZHIubGVuID0gMDsNCisJCQkJbS0+bV9wa3RoZHIucmN2aWYg PSBOVUxMOw0KKwkJCX0gZWxzZQ0KKwkJCQltID0gbV9nZXRjbChNX1RSWVdB SVQsIE1UX0RBVEEsIDApOw0KKwkJCWxlbiA9IG1pbihtaW4oTUNMQllURVMs IHJlc2lkKSwgKnNwYWNlKTsNCisjZW5kaWYgLyogWkVST19DT1BZX1NPQ0tF VFMgKi8NCisJCX0gZWxzZSB7DQorCQkJaWYgKHRvcCA9PSBOVUxMKSB7DQor CQkJCW0gPSBtX2dldGhkcihNX1RSWVdBSVQsIE1UX0RBVEEpOw0KKwkJCQlt LT5tX3BrdGhkci5sZW4gPSAwOw0KKwkJCQltLT5tX3BrdGhkci5yY3ZpZiA9 IE5VTEw7DQorDQorCQkJCWxlbiA9IG1pbihtaW4oTUhMRU4sIHJlc2lkKSwg KnNwYWNlKTsNCisJCQkJLyoNCisJCQkJICogRm9yIGRhdGFncmFtIHByb3Rv Y29scywgbGVhdmUgcm9vbQ0KKwkJCQkgKiBmb3IgcHJvdG9jb2wgaGVhZGVy cyBpbiBmaXJzdCBtYnVmLg0KKwkJCQkgKi8NCisJCQkJaWYgKGF0b21pYyAm JiBtICYmIGxlbiA8IE1ITEVOKQ0KKwkJCQkJTUhfQUxJR04obSwgbGVuKTsN CisJCQl9IGVsc2Ugew0KKwkJCQltID0gbV9nZXQoTV9UUllXQUlULCBNVF9E QVRBKTsNCisJCQkJbGVuID0gbWluKG1pbihNTEVOLCByZXNpZCksICpzcGFj ZSk7DQorCQkJfQ0KKwkJfQ0KKwkJaWYgKG0gPT0gTlVMTCkgew0KKwkJCWVy cm9yID0gRU5PQlVGUzsNCisJCQlnb3RvIG91dDsNCisJCX0NCisNCisJCSpz cGFjZSAtPSBsZW47DQorI2lmZGVmIFpFUk9fQ09QWV9TT0NLRVRTDQorCQlp ZiAoY293X3NlbmQpDQorCQkJZXJyb3IgPSAwOw0KKwkJZWxzZQ0KKyNlbmRp ZiAvKiBaRVJPX0NPUFlfU09DS0VUUyAqLw0KKwkJZXJyb3IgPSB1aW9tb3Zl KG10b2QobSwgdm9pZCAqKSwgKGludClsZW4sIHVpbyk7DQorCQlyZXNpZCA9 IHVpby0+dWlvX3Jlc2lkOw0KKwkJbS0+bV9sZW4gPSBsZW47DQorCQkqbXAg PSBtOw0KKwkJdG9wLT5tX3BrdGhkci5sZW4gKz0gbGVuOw0KKwkJaWYgKGVy cm9yKQ0KKwkJCWdvdG8gb3V0Ow0KKwkJbXAgPSAmbS0+bV9uZXh0Ow0KKwkJ aWYgKHJlc2lkIDw9IDApIHsNCisJCQlpZiAoZmxhZ3MgJiBNU0dfRU9SKQ0K KwkJCQl0b3AtPm1fZmxhZ3MgfD0gTV9FT1I7DQorCQkJYnJlYWs7DQorCQl9 DQorCX0gd2hpbGUgKCpzcGFjZSA+IDAgJiYgYXRvbWljKTsNCitvdXQ6DQor CSpyZXRtcCA9IHRvcDsNCisJcmV0dXJuIChlcnJvcik7DQorfQ0KKw0KICNk ZWZpbmUJU0JMT0NLV0FJVChmKQkoKChmKSAmIE1TR19ET05UV0FJVCkgPyBN X05PV0FJVCA6IE1fV0FJVE9LKQ0KKw0KK2ludA0KK3Nvc2VuZF9kZ3JhbShz bywgYWRkciwgdWlvLCB0b3AsIGNvbnRyb2wsIGZsYWdzLCB0ZCkNCisJc3Ry dWN0IHNvY2tldCAqc287DQorCXN0cnVjdCBzb2NrYWRkciAqYWRkcjsNCisJ c3RydWN0IHVpbyAqdWlvOw0KKwlzdHJ1Y3QgbWJ1ZiAqdG9wOw0KKwlzdHJ1 Y3QgbWJ1ZiAqY29udHJvbDsNCisJaW50IGZsYWdzOw0KKwlzdHJ1Y3QgdGhy ZWFkICp0ZDsNCit7DQorCWxvbmcgc3BhY2UsIHJlc2lkOw0KKwlpbnQgY2xl biA9IDAsIGVycm9yLCBkb250cm91dGU7DQorCWludCBhdG9taWMgPSBzb3Nl bmRhbGxhdG9uY2Uoc28pIHx8IHRvcDsNCisNCisJS0FTU0VSVChzby0+c29f dHlwZSA9PSBTT0NLX0RHUkFNLCAoInNvZGdyYW1fc2VuZDogIVNPQ0tfREdS QU0iKSk7DQorCUtBU1NFUlQoc28tPnNvX3Byb3RvLT5wcl9mbGFncyAmIFBS X0FUT01JQywNCisJICAgICgic29kZ3JhbV9zZW5kOiAhUFJfQVRPTUlDIikp Ow0KKw0KKwlpZiAodWlvICE9IE5VTEwpDQorCQlyZXNpZCA9IHVpby0+dWlv X3Jlc2lkOw0KKwllbHNlDQorCQlyZXNpZCA9IHRvcC0+bV9wa3RoZHIubGVu Ow0KKwkvKg0KKwkgKiBJbiB0aGVvcnkgcmVzaWQgc2hvdWxkIGJlIHVuc2ln bmVkLg0KKwkgKiBIb3dldmVyLCBzcGFjZSBtdXN0IGJlIHNpZ25lZCwgYXMg aXQgbWlnaHQgYmUgbGVzcyB0aGFuIDANCisJICogaWYgd2Ugb3Zlci1jb21t aXR0ZWQsIGFuZCB3ZSBtdXN0IHVzZSBhIHNpZ25lZCBjb21wYXJpc29uDQor CSAqIG9mIHNwYWNlIGFuZCByZXNpZC4gIE9uIHRoZSBvdGhlciBoYW5kLCBh IG5lZ2F0aXZlIHJlc2lkDQorCSAqIGNhdXNlcyB1cyB0byBsb29wIHNlbmRp bmcgMC1sZW5ndGggc2VnbWVudHMgdG8gdGhlIHByb3RvY29sLg0KKwkgKg0K KwkgKiBBbHNvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IE1TR19FT1IgaXNu J3QgdXNlZCBvbiBTT0NLX1NUUkVBTQ0KKwkgKiB0eXBlIHNvY2tldHMgc2lu Y2UgdGhhdCdzIGFuIGVycm9yLg0KKwkgKi8NCisJaWYgKHJlc2lkIDwgMCkg ew0KKwkJZXJyb3IgPSBFSU5WQUw7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0K Kwlkb250cm91dGUgPQ0KKwkgICAgKGZsYWdzICYgTVNHX0RPTlRST1VURSkg JiYgKHNvLT5zb19vcHRpb25zICYgU09fRE9OVFJPVVRFKSA9PSAwOw0KKwlp ZiAodGQgIT0gTlVMTCkNCisJCXRkLT50ZF9wcm9jLT5wX3N0YXRzLT5wX3J1 LnJ1X21zZ3NuZCsrOw0KKwlpZiAoY29udHJvbCAhPSBOVUxMKQ0KKwkJY2xl biA9IGNvbnRyb2wtPm1fbGVuOw0KKw0KKwlTT0NLQlVGX0xPQ0soJnNvLT5z b19zbmQpOw0KKwlpZiAoc28tPnNvX3NuZC5zYl9zdGF0ZSAmIFNCU19DQU5U U0VORE1PUkUpIHsNCisJCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fc25kKTsN CisJCWVycm9yID0gRVBJUEU7DQorCQlnb3RvIG91dDsNCisJfQ0KKwlpZiAo c28tPnNvX2Vycm9yKSB7DQorCQllcnJvciA9IHNvLT5zb19lcnJvcjsNCisJ CXNvLT5zb19lcnJvciA9IDA7DQorCQlTT0NLQlVGX1VOTE9DSygmc28tPnNv X3NuZCk7DQorCQlnb3RvIG91dDsNCisJfQ0KKwlpZiAoKHNvLT5zb19zdGF0 ZSAmIFNTX0lTQ09OTkVDVEVEKSA9PSAwKSB7DQorCQkvKg0KKwkJICogYHNl bmR0bycgYW5kIGBzZW5kbXNnJyBpcyBhbGxvd2VkIG9uIGEgY29ubmVjdGlv bi0NCisJCSAqIGJhc2VkIHNvY2tldCBpZiBpdCBzdXBwb3J0cyBpbXBsaWVk IGNvbm5lY3QuDQorCQkgKiBSZXR1cm4gRU5PVENPTk4gaWYgbm90IGNvbm5l Y3RlZCBhbmQgbm8gYWRkcmVzcyBpcw0KKwkJICogc3VwcGxpZWQuDQorCQkg Ki8NCisJCWlmICgoc28tPnNvX3Byb3RvLT5wcl9mbGFncyAmIFBSX0NPTk5S RVFVSVJFRCkgJiYNCisJCSAgICAoc28tPnNvX3Byb3RvLT5wcl9mbGFncyAm IFBSX0lNUExPUENMKSA9PSAwKSB7DQorCQkJaWYgKChzby0+c29fc3RhdGUg JiBTU19JU0NPTkZJUk1JTkcpID09IDAgJiYNCisJCQkgICAgIShyZXNpZCA9 PSAwICYmIGNsZW4gIT0gMCkpIHsNCisJCQkJU09DS0JVRl9VTkxPQ0soJnNv LT5zb19zbmQpOw0KKwkJCQllcnJvciA9IEVOT1RDT05OOw0KKwkJCQlnb3Rv IG91dDsNCisJCQl9DQorCQl9IGVsc2UgaWYgKGFkZHIgPT0gTlVMTCkgew0K KwkJCWlmIChzby0+c29fcHJvdG8tPnByX2ZsYWdzICYgUFJfQ09OTlJFUVVJ UkVEKQ0KKwkJCQllcnJvciA9IEVOT1RDT05OOw0KKwkJCWVsc2UNCisJCQkJ ZXJyb3IgPSBFREVTVEFERFJSRVE7DQorCQkJU09DS0JVRl9VTkxPQ0soJnNv LT5zb19zbmQpOw0KKwkJCWdvdG8gb3V0Ow0KKwkJfQ0KKwl9DQorDQorCS8q DQorCSAqIERvIHdlIG5lZWQgTVNHX09PQiBzdXBwb3J0IGluIFNPQ0tfREdS QU0/ICBTaWducyBoZXJlIG1heSBiZSBhDQorCSAqIHByb2JsZW0gYW5kIG5l ZWQgZml4aW5nLg0KKwkgKi8NCisJc3BhY2UgPSBzYnNwYWNlKCZzby0+c29f c25kKTsNCisJaWYgKGZsYWdzICYgTVNHX09PQikNCisJCXNwYWNlICs9IDEw MjQ7DQorCXNwYWNlIC09IGNsZW47DQorCWlmIChyZXNpZCA+IHNwYWNlKSB7 DQorCQllcnJvciA9IEVNU0dTSVpFOw0KKwkJZ290byBvdXQ7DQorCX0NCisJ U09DS0JVRl9VTkxPQ0soJnNvLT5zb19zbmQpOw0KKwlpZiAodWlvID09IE5V TEwpIHsNCisJCXJlc2lkID0gMDsNCisJCWlmIChmbGFncyAmIE1TR19FT1Ip DQorCQkJdG9wLT5tX2ZsYWdzIHw9IE1fRU9SOw0KKwl9IGVsc2Ugew0KKwkJ ZXJyb3IgPSBzb3NlbmRfY29weWluKHVpbywgJnRvcCwgYXRvbWljLCAmc3Bh Y2UsIGZsYWdzKTsNCisJCWlmIChlcnJvcikNCisJCQlnb3RvIG91dDsNCisJ CXJlc2lkID0gdWlvLT51aW9fcmVzaWQ7DQorCX0NCisJS0FTU0VSVChyZXNp ZCA9PSAwLCAoInNvc2VuZF9kZ3JhbTogcmVzaWQgIT0gMCIpKTsNCisJLyoN CisJICogWFhYUlc6IEZyb2JiaW5nIFNPX0RPTlRST1VURSBoZXJlIGlzIGV2 ZW4gd29yc2Ugd2l0aG91dCBzYmxvY2sNCisJICogdGhhbiB3aXRoLg0KKwkg Ki8NCisJaWYgKGRvbnRyb3V0ZSkgew0KKwkJU09DS19MT0NLKHNvKTsNCisJ CXNvLT5zb19vcHRpb25zIHw9IFNPX0RPTlRST1VURTsNCisJCVNPQ0tfVU5M T0NLKHNvKTsNCisJfQ0KKwkvKg0KKwkgKiBYWFggYWxsIHRoZSBTQlNfQ0FO VFNFTkRNT1JFIGNoZWNrcyBwcmV2aW91c2x5DQorCSAqIGRvbmUgY291bGQg YmUgb3V0IG9mIGRhdGUuICBXZSBjb3VsZCBoYXZlIHJlY2lldmVkDQorCSAq IGEgcmVzZXQgcGFja2V0IGluIGFuIGludGVycnVwdCBvciBtYXliZSB3ZSBz bGVwdA0KKwkgKiB3aGlsZSBkb2luZyBwYWdlIGZhdWx0cyBpbiB1aW9tb3Zl KCkgZXRjLiBXZSBjb3VsZA0KKwkgKiBwcm9iYWJseSByZWNoZWNrIGFnYWlu IGluc2lkZSB0aGUgbG9ja2luZyBwcm90ZWN0aW9uDQorCSAqIGhlcmUsIGJ1 dCB0aGVyZSBhcmUgcHJvYmFibHkgb3RoZXIgcGxhY2VzIHRoYXQgdGhpcw0K KwkgKiBhbHNvIGhhcHBlbnMuICBXZSBtdXN0IHJldGhpbmsgdGhpcy4NCisJ ICovDQorCWVycm9yID0gKCpzby0+c29fcHJvdG8tPnByX3VzcnJlcXMtPnBy dV9zZW5kKShzbywNCisJICAgIChmbGFncyAmIE1TR19PT0IpID8gUFJVU19P T0IgOg0KKwkvKg0KKwkgKiBJZiB0aGUgdXNlciBzZXQgTVNHX0VPRiwgdGhl IHByb3RvY29sDQorCSAqIHVuZGVyc3RhbmRzIHRoaXMgZmxhZyBhbmQgbm90 aGluZyBsZWZ0IHRvDQorCSAqIHNlbmQgdGhlbiB1c2UgUFJVX1NFTkRfRU9G IGluc3RlYWQgb2YgUFJVX1NFTkQuDQorCSAqLw0KKwkgICAgKChmbGFncyAm IE1TR19FT0YpICYmDQorCSAgICAgKHNvLT5zb19wcm90by0+cHJfZmxhZ3Mg JiBQUl9JTVBMT1BDTCkgJiYNCisJICAgICAocmVzaWQgPD0gMCkpID8NCisJ CVBSVVNfRU9GIDoNCisJCS8qIElmIHRoZXJlIGlzIG1vcmUgdG8gc2VuZCBz ZXQgUFJVU19NT1JFVE9DT01FICovDQorCQkocmVzaWQgPiAwICYmIHNwYWNl ID4gMCkgPyBQUlVTX01PUkVUT0NPTUUgOiAwLA0KKwkJdG9wLCBhZGRyLCBj b250cm9sLCB0ZCk7DQorCWlmIChkb250cm91dGUpIHsNCisJCVNPQ0tfTE9D Syhzbyk7DQorCQlzby0+c29fb3B0aW9ucyAmPSB+U09fRE9OVFJPVVRFOw0K KwkJU09DS19VTkxPQ0soc28pOw0KKwl9DQorCWNsZW4gPSAwOw0KKwljb250 cm9sID0gTlVMTDsNCisJdG9wID0gTlVMTDsNCitvdXQ6DQorCWlmICh0b3Ag IT0gTlVMTCkNCisJCW1fZnJlZW0odG9wKTsNCisJaWYgKGNvbnRyb2wgIT0g TlVMTCkNCisJCW1fZnJlZW0oY29udHJvbCk7DQorCXJldHVybiAoZXJyb3Ip Ow0KK30NCisNCiAvKg0KICAqIFNlbmQgb24gYSBzb2NrZXQuDQogICogSWYg c2VuZCBtdXN0IGdvIGFsbCBhdCBvbmNlIGFuZCBtZXNzYWdlIGlzIGxhcmdl ciB0aGFuDQpAQCAtNjAyLDIyICs4OTYsNyBAQA0KICAqIG11c3QgY2hlY2sg Zm9yIHNob3J0IGNvdW50cyBpZiBFSU5UUi9FUkVTVEFSVCBhcmUgcmV0dXJu ZWQuDQogICogRGF0YSBhbmQgY29udHJvbCBidWZmZXJzIGFyZSBmcmVlZCBv biByZXR1cm4uDQogICovDQotDQotI2lmZGVmIFpFUk9fQ09QWV9TT0NLRVRT DQotc3RydWN0IHNvX3plcm9jb3B5X3N0YXRzew0KLQlpbnQgc2l6ZV9vazsN Ci0JaW50IGFsaWduX29rOw0KLQlpbnQgZm91bmRfaWZwOw0KLX07DQotc3Ry dWN0IHNvX3plcm9jb3B5X3N0YXRzIHNvX3plcm9jcF9zdGF0cyA9IHswLDAs MH07DQotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCi0jaW5jbHVkZSA8bmV0 L3JvdXRlLmg+DQotI2luY2x1ZGUgPG5ldGluZXQvaW5fcGNiLmg+DQotI2lu Y2x1ZGUgPHZtL3ZtLmg+DQotI2luY2x1ZGUgPHZtL3ZtX3BhZ2UuaD4NCi0j aW5jbHVkZSA8dm0vdm1fb2JqZWN0Lmg+DQotI2VuZGlmIC8qWkVST19DT1BZ X1NPQ0tFVFMqLw0KLQ0KKyNkZWZpbmUJc25kZXJyKGVycm5vKQl7IGVycm9y ID0gKGVycm5vKTsgZ290byByZWxlYXNlOyB9DQogaW50DQogc29zZW5kKHNv LCBhZGRyLCB1aW8sIHRvcCwgY29udHJvbCwgZmxhZ3MsIHRkKQ0KIAlzdHJ1 Y3Qgc29ja2V0ICpzbzsNCkBAIC02MjgsMTQgKzkwNyw5IEBADQogCWludCBm bGFnczsNCiAJc3RydWN0IHRocmVhZCAqdGQ7DQogew0KLQlzdHJ1Y3QgbWJ1 ZiAqKm1wOw0KLQlzdHJ1Y3QgbWJ1ZiAqbTsNCi0JbG9uZyBzcGFjZSwgbGVu ID0gMCwgcmVzaWQ7DQorCWxvbmcgc3BhY2UsIHJlc2lkOw0KIAlpbnQgY2xl biA9IDAsIGVycm9yLCBkb250cm91dGU7DQogCWludCBhdG9taWMgPSBzb3Nl bmRhbGxhdG9uY2Uoc28pIHx8IHRvcDsNCi0jaWZkZWYgWkVST19DT1BZX1NP Q0tFVFMNCi0JaW50IGNvd19zZW5kOw0KLSNlbmRpZiAvKiBaRVJPX0NPUFlf U09DS0VUUyAqLw0KIA0KIAlpZiAodWlvICE9IE5VTEwpDQogCQlyZXNpZCA9 IHVpby0+dWlvX3Jlc2lkOw0KQEAgLTY2Myw3ICs5MzcsNiBAQA0KIAkJdGQt PnRkX3Byb2MtPnBfc3RhdHMtPnBfcnUucnVfbXNnc25kKys7DQogCWlmIChj b250cm9sICE9IE5VTEwpDQogCQljbGVuID0gY29udHJvbC0+bV9sZW47DQot I2RlZmluZQlzbmRlcnIoZXJybm8pCXsgZXJyb3IgPSAoZXJybm8pOyBnb3Rv IHJlbGVhc2U7IH0NCiANCiAJU09DS0JVRl9MT0NLKCZzby0+c29fc25kKTsN CiByZXN0YXJ0Og0KQEAgLTcxMywxNTMgKzk4Niw2MSBAQA0KIAkJCWdvdG8g cmVzdGFydDsNCiAJCX0NCiAJCVNPQ0tCVUZfVU5MT0NLKCZzby0+c29fc25k KTsNCi0JCW1wID0gJnRvcDsNCiAJCXNwYWNlIC09IGNsZW47DQogCQlkbyB7 DQotCQkgICAgaWYgKHVpbyA9PSBOVUxMKSB7DQotCQkJLyoNCi0JCQkgKiBE YXRhIGlzIHByZXBhY2thZ2VkIGluICJ0b3AiLg0KLQkJCSAqLw0KLQkJCXJl c2lkID0gMDsNCi0JCQlpZiAoZmxhZ3MgJiBNU0dfRU9SKQ0KLQkJCQl0b3At Pm1fZmxhZ3MgfD0gTV9FT1I7DQotCQkgICAgfSBlbHNlIGRvIHsNCi0jaWZk ZWYgWkVST19DT1BZX1NPQ0tFVFMNCi0JCQljb3dfc2VuZCA9IDA7DQotI2Vu ZGlmIC8qIFpFUk9fQ09QWV9TT0NLRVRTICovDQotCQkJaWYgKHJlc2lkID49 IE1JTkNMU0laRSkgew0KLSNpZmRlZiBaRVJPX0NPUFlfU09DS0VUUw0KLQkJ CQlpZiAodG9wID09IE5VTEwpIHsNCi0JCQkJCU1HRVRIRFIobSwgTV9UUllX QUlULCBNVF9EQVRBKTsNCi0JCQkJCWlmIChtID09IE5VTEwpIHsNCi0JCQkJ CQllcnJvciA9IEVOT0JVRlM7DQotCQkJCQkJU09DS0JVRl9MT0NLKCZzby0+ c29fc25kKTsNCi0JCQkJCQlnb3RvIHJlbGVhc2U7DQotCQkJCQl9DQotCQkJ CQltLT5tX3BrdGhkci5sZW4gPSAwOw0KLQkJCQkJbS0+bV9wa3RoZHIucmN2 aWYgPSBOVUxMOyANCi0JCQkJfSBlbHNlIHsNCi0JCQkJCU1HRVQobSwgTV9U UllXQUlULCBNVF9EQVRBKTsNCi0JCQkJCWlmIChtID09IE5VTEwpIHsNCi0J CQkJCQllcnJvciA9IEVOT0JVRlM7DQotCQkJCQkJU09DS0JVRl9MT0NLKCZz by0+c29fc25kKTsNCi0JCQkJCQlnb3RvIHJlbGVhc2U7DQotCQkJCQl9DQot CQkJCX0NCi0JCQkJaWYgKHNvX3plcm9fY29weV9zZW5kICYmDQotCQkJCSAg ICByZXNpZD49UEFHRV9TSVpFICYmDQotCQkJCSAgICBzcGFjZT49UEFHRV9T SVpFICYmDQotCQkJCSAgICB1aW8tPnVpb19pb3YtPmlvdl9sZW4+PVBBR0Vf U0laRSkgew0KLQkJCQkJc29femVyb2NwX3N0YXRzLnNpemVfb2srKzsNCi0J CQkJCXNvX3plcm9jcF9zdGF0cy5hbGlnbl9vaysrOw0KLQkJCQkJY293X3Nl bmQgPSBzb2Nvd19zZXR1cChtLCB1aW8pOw0KLQkJCQkJbGVuID0gY293X3Nl bmQ7DQotCQkJCX0NCi0JCQkJaWYgKCFjb3dfc2VuZCkgew0KLQkJCQkJTUNM R0VUKG0sIE1fVFJZV0FJVCk7DQotCQkJCQlpZiAoKG0tPm1fZmxhZ3MgJiBN X0VYVCkgPT0gMCkgew0KLQkJCQkJCW1fZnJlZShtKTsNCi0JCQkJCQltID0g TlVMTDsNCi0JCQkJCX0gZWxzZSB7DQotCQkJCQkJbGVuID0gbWluKG1pbihN Q0xCWVRFUywgcmVzaWQpLCBzcGFjZSk7DQotCQkJCQl9DQotCQkJCX0NCi0j ZWxzZSAvKiBaRVJPX0NPUFlfU09DS0VUUyAqLw0KLQkJCQlpZiAodG9wID09 IE5VTEwpIHsNCi0JCQkJCW0gPSBtX2dldGNsKE1fVFJZV0FJVCwgTVRfREFU QSwgTV9QS1RIRFIpOw0KLQkJCQkJbS0+bV9wa3RoZHIubGVuID0gMDsNCi0J CQkJCW0tPm1fcGt0aGRyLnJjdmlmID0gTlVMTDsNCi0JCQkJfSBlbHNlDQot CQkJCQltID0gbV9nZXRjbChNX1RSWVdBSVQsIE1UX0RBVEEsIDApOw0KLQkJ CQlsZW4gPSBtaW4obWluKE1DTEJZVEVTLCByZXNpZCksIHNwYWNlKTsNCi0j ZW5kaWYgLyogWkVST19DT1BZX1NPQ0tFVFMgKi8NCisJCQlpZiAodWlvID09 IE5VTEwpIHsNCisJCQkJcmVzaWQgPSAwOw0KKwkJCQlpZiAoZmxhZ3MgJiBN U0dfRU9SKQ0KKwkJCQkJdG9wLT5tX2ZsYWdzIHw9IE1fRU9SOw0KIAkJCX0g ZWxzZSB7DQotCQkJCWlmICh0b3AgPT0gTlVMTCkgew0KLQkJCQkJbSA9IG1f Z2V0aGRyKE1fVFJZV0FJVCwgTVRfREFUQSk7DQotCQkJCQltLT5tX3BrdGhk ci5sZW4gPSAwOw0KLQkJCQkJbS0+bV9wa3RoZHIucmN2aWYgPSBOVUxMOw0K LQ0KLQkJCQkJbGVuID0gbWluKG1pbihNSExFTiwgcmVzaWQpLCBzcGFjZSk7 DQotCQkJCQkvKg0KLQkJCQkJICogRm9yIGRhdGFncmFtIHByb3RvY29scywg bGVhdmUgcm9vbQ0KLQkJCQkJICogZm9yIHByb3RvY29sIGhlYWRlcnMgaW4g Zmlyc3QgbWJ1Zi4NCi0JCQkJCSAqLw0KLQkJCQkJaWYgKGF0b21pYyAmJiBt ICYmIGxlbiA8IE1ITEVOKQ0KLQkJCQkJCU1IX0FMSUdOKG0sIGxlbik7DQot CQkJCX0gZWxzZSB7DQotCQkJCQltID0gbV9nZXQoTV9UUllXQUlULCBNVF9E QVRBKTsNCi0JCQkJCWxlbiA9IG1pbihtaW4oTUxFTiwgcmVzaWQpLCBzcGFj ZSk7DQorCQkJCWVycm9yID0gc29zZW5kX2NvcHlpbih1aW8sICZ0b3AsIGF0 b21pYywNCisJCQkJICAgICZzcGFjZSwgZmxhZ3MpOw0KKwkJCQlpZiAoZXJy b3IgIT0gMCkgew0KKwkJCQkJU09DS0JVRl9MT0NLKCZzby0+c29fc25kKTsN CisJCQkJCWdvdG8gcmVsZWFzZTsNCiAJCQkJfQ0KKwkJCQlyZXNpZCA9IHVp by0+dWlvX3Jlc2lkOw0KIAkJCX0NCi0JCQlpZiAobSA9PSBOVUxMKSB7DQot CQkJCWVycm9yID0gRU5PQlVGUzsNCi0JCQkJU09DS0JVRl9MT0NLKCZzby0+ c29fc25kKTsNCi0JCQkJZ290byByZWxlYXNlOw0KLQkJCX0NCi0NCi0JCQlz cGFjZSAtPSBsZW47DQotI2lmZGVmIFpFUk9fQ09QWV9TT0NLRVRTDQotCQkJ aWYgKGNvd19zZW5kKQ0KLQkJCQllcnJvciA9IDA7DQotCQkJZWxzZQ0KLSNl bmRpZiAvKiBaRVJPX0NPUFlfU09DS0VUUyAqLw0KLQkJCWVycm9yID0gdWlv bW92ZShtdG9kKG0sIHZvaWQgKiksIChpbnQpbGVuLCB1aW8pOw0KLQkJCXJl c2lkID0gdWlvLT51aW9fcmVzaWQ7DQotCQkJbS0+bV9sZW4gPSBsZW47DQot CQkJKm1wID0gbTsNCi0JCQl0b3AtPm1fcGt0aGRyLmxlbiArPSBsZW47DQot CQkJaWYgKGVycm9yKSB7DQotCQkJCVNPQ0tCVUZfTE9DSygmc28tPnNvX3Nu ZCk7DQotCQkJCWdvdG8gcmVsZWFzZTsNCi0JCQl9DQotCQkJbXAgPSAmbS0+ bV9uZXh0Ow0KLQkJCWlmIChyZXNpZCA8PSAwKSB7DQotCQkJCWlmIChmbGFn cyAmIE1TR19FT1IpDQotCQkJCQl0b3AtPm1fZmxhZ3MgfD0gTV9FT1I7DQot CQkJCWJyZWFrOw0KKwkJCWlmIChkb250cm91dGUpIHsNCisJCQkJU09DS19M T0NLKHNvKTsNCisJCQkJc28tPnNvX29wdGlvbnMgfD0gU09fRE9OVFJPVVRF Ow0KKwkJCQlTT0NLX1VOTE9DSyhzbyk7DQogCQkJfQ0KLQkJICAgIH0gd2hp bGUgKHNwYWNlID4gMCAmJiBhdG9taWMpOw0KLQkJICAgIGlmIChkb250cm91 dGUpIHsNCi0JCQkgICAgU09DS19MT0NLKHNvKTsNCi0JCQkgICAgc28tPnNv X29wdGlvbnMgfD0gU09fRE9OVFJPVVRFOw0KLQkJCSAgICBTT0NLX1VOTE9D Syhzbyk7DQotCQkgICAgfQ0KLQkJICAgIC8qDQotCQkgICAgICogWFhYIGFs bCB0aGUgU0JTX0NBTlRTRU5ETU9SRSBjaGVja3MgcHJldmlvdXNseQ0KLQkJ ICAgICAqIGRvbmUgY291bGQgYmUgb3V0IG9mIGRhdGUuICBXZSBjb3VsZCBo YXZlIHJlY2lldmVkDQotCQkgICAgICogYSByZXNldCBwYWNrZXQgaW4gYW4g aW50ZXJydXB0IG9yIG1heWJlIHdlIHNsZXB0DQotCQkgICAgICogd2hpbGUg ZG9pbmcgcGFnZSBmYXVsdHMgaW4gdWlvbW92ZSgpIGV0Yy4gV2UgY291bGQN Ci0JCSAgICAgKiBwcm9iYWJseSByZWNoZWNrIGFnYWluIGluc2lkZSB0aGUg bG9ja2luZyBwcm90ZWN0aW9uDQotCQkgICAgICogaGVyZSwgYnV0IHRoZXJl IGFyZSBwcm9iYWJseSBvdGhlciBwbGFjZXMgdGhhdCB0aGlzDQotCQkgICAg ICogYWxzbyBoYXBwZW5zLiAgV2UgbXVzdCByZXRoaW5rIHRoaXMuDQotCQkg ICAgICovDQotCQkgICAgZXJyb3IgPSAoKnNvLT5zb19wcm90by0+cHJfdXNy cmVxcy0+cHJ1X3NlbmQpKHNvLA0KLQkJCShmbGFncyAmIE1TR19PT0IpID8g UFJVU19PT0IgOg0KKwkJCS8qDQorCQkJICogWFhYIGFsbCB0aGUgU0JTX0NB TlRTRU5ETU9SRSBjaGVja3MgcHJldmlvdXNseQ0KKwkJCSAqIGRvbmUgY291 bGQgYmUgb3V0IG9mIGRhdGUuICBXZSBjb3VsZCBoYXZlIHJlY2lldmVkDQor CQkJICogYSByZXNldCBwYWNrZXQgaW4gYW4gaW50ZXJydXB0IG9yIG1heWJl IHdlIHNsZXB0DQorCQkJICogd2hpbGUgZG9pbmcgcGFnZSBmYXVsdHMgaW4g dWlvbW92ZSgpIGV0Yy4gV2UgY291bGQNCisJCQkgKiBwcm9iYWJseSByZWNo ZWNrIGFnYWluIGluc2lkZSB0aGUgbG9ja2luZyBwcm90ZWN0aW9uDQorCQkJ ICogaGVyZSwgYnV0IHRoZXJlIGFyZSBwcm9iYWJseSBvdGhlciBwbGFjZXMg dGhhdCB0aGlzDQorCQkJICogYWxzbyBoYXBwZW5zLiAgV2UgbXVzdCByZXRo aW5rIHRoaXMuDQorCQkJICovDQorCQkJZXJyb3IgPSAoKnNvLT5zb19wcm90 by0+cHJfdXNycmVxcy0+cHJ1X3NlbmQpKHNvLA0KKwkJCSAgICAoZmxhZ3Mg JiBNU0dfT09CKSA/IFBSVVNfT09CIDoNCiAJCQkvKg0KIAkJCSAqIElmIHRo ZSB1c2VyIHNldCBNU0dfRU9GLCB0aGUgcHJvdG9jb2wNCiAJCQkgKiB1bmRl cnN0YW5kcyB0aGlzIGZsYWcgYW5kIG5vdGhpbmcgbGVmdCB0bw0KIAkJCSAq IHNlbmQgdGhlbiB1c2UgUFJVX1NFTkRfRU9GIGluc3RlYWQgb2YgUFJVX1NF TkQuDQogCQkJICovDQotCQkJKChmbGFncyAmIE1TR19FT0YpICYmDQotCQkJ IChzby0+c29fcHJvdG8tPnByX2ZsYWdzICYgUFJfSU1QTE9QQ0wpICYmDQot CQkJIChyZXNpZCA8PSAwKSkgPw0KKwkJCSAgICAoKGZsYWdzICYgTVNHX0VP RikgJiYNCisJCQkgICAgIChzby0+c29fcHJvdG8tPnByX2ZsYWdzICYgUFJf SU1QTE9QQ0wpICYmDQorCQkJICAgICAocmVzaWQgPD0gMCkpID8NCiAJCQkJ UFJVU19FT0YgOg0KIAkJCS8qIElmIHRoZXJlIGlzIG1vcmUgdG8gc2VuZCBz ZXQgUFJVU19NT1JFVE9DT01FICovDQotCQkJKHJlc2lkID4gMCAmJiBzcGFj ZSA+IDApID8gUFJVU19NT1JFVE9DT01FIDogMCwNCi0JCQl0b3AsIGFkZHIs IGNvbnRyb2wsIHRkKTsNCi0JCSAgICBpZiAoZG9udHJvdXRlKSB7DQotCQkJ ICAgIFNPQ0tfTE9DSyhzbyk7DQotCQkJICAgIHNvLT5zb19vcHRpb25zICY9 IH5TT19ET05UUk9VVEU7DQotCQkJICAgIFNPQ0tfVU5MT0NLKHNvKTsNCi0J CSAgICB9DQotCQkgICAgY2xlbiA9IDA7DQotCQkgICAgY29udHJvbCA9IE5V TEw7DQotCQkgICAgdG9wID0gTlVMTDsNCi0JCSAgICBtcCA9ICZ0b3A7DQot CQkgICAgaWYgKGVycm9yKSB7DQotCQkJU09DS0JVRl9MT0NLKCZzby0+c29f c25kKTsNCi0JCQlnb3RvIHJlbGVhc2U7DQotCQkgICAgfQ0KKwkJCSAgICAo cmVzaWQgPiAwICYmIHNwYWNlID4gMCkgPyBQUlVTX01PUkVUT0NPTUUgOiAw LA0KKwkJCSAgICB0b3AsIGFkZHIsIGNvbnRyb2wsIHRkKTsNCisJCQlpZiAo ZG9udHJvdXRlKSB7DQorCQkJCVNPQ0tfTE9DSyhzbyk7DQorCQkJCXNvLT5z b19vcHRpb25zICY9IH5TT19ET05UUk9VVEU7DQorCQkJCVNPQ0tfVU5MT0NL KHNvKTsNCisJCQl9DQorCQkJY2xlbiA9IDA7DQorCQkJY29udHJvbCA9IE5V TEw7DQorCQkJdG9wID0gTlVMTDsNCisJCQlpZiAoZXJyb3IpIHsNCisJCQkJ U09DS0JVRl9MT0NLKCZzby0+c29fc25kKTsNCisJCQkJZ290byByZWxlYXNl Ow0KKwkJCX0NCiAJCX0gd2hpbGUgKHJlc2lkICYmIHNwYWNlID4gMCk7DQog CQlTT0NLQlVGX0xPQ0soJnNvLT5zb19zbmQpOw0KIAl9IHdoaWxlIChyZXNp ZCk7DQpAQCAtODc3LDYgKzEwNTgsNyBAQA0KIAkJbV9mcmVlbShjb250cm9s KTsNCiAJcmV0dXJuIChlcnJvcik7DQogfQ0KKyN1bmRlZiBzbmRlcnINCiAN CiAvKg0KICAqIFRoZSBwYXJ0IG9mIHNvcmVjZWl2ZSgpIHRoYXQgaW1wbGVt ZW50cyByZWFkaW5nIG5vbi1pbmxpbmUgb3V0LW9mLWJhbmQNCkluZGV4OiBu ZXRpbmV0L3VkcF91c3JyZXEuYw0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K UkNTIGZpbGU6IC9kYXRhL2Zic2QtY3ZzL25jdnMvc3JjL3N5cy9uZXRpbmV0 L3VkcF91c3JyZXEuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTc1LjIu OQ0KZGlmZiAtdSAtcjEuMTc1LjIuOSB1ZHBfdXNycmVxLmMNCi0tLSBuZXRp bmV0L3VkcF91c3JyZXEuYwkyOSBEZWMgMjAwNiAxOToyNTo0OSAtMDAwMAkx LjE3NS4yLjkNCisrKyBuZXRpbmV0L3VkcF91c3JyZXEuYwkxMSBNYXIgMjAw NyAwMzoxMjoyMiAtMDAwMA0KQEAgLTExNTAsNiArMTE1MCw3IEBADQogCS5w cnVfZGlzY29ubmVjdCA9CXVkcF9kaXNjb25uZWN0LA0KIAkucHJ1X3BlZXJh ZGRyID0JCXVkcF9wZWVyYWRkciwNCiAJLnBydV9zZW5kID0JCXVkcF9zZW5k LA0KKwkucHJ1X3Nvc2VuZCA9CQlzb3NlbmRfZGdyYW0sDQogCS5wcnVfc2h1 dGRvd24gPQkJdWRwX3NodXRkb3duLA0KIAkucHJ1X3NvY2thZGRyID0JCXVk cF9zb2NrYWRkciwNCiAJLnBydV9zb3NldGxhYmVsID0JaW5fcGNic29zZXRs YWJlbA0KSW5kZXg6IHN5cy9zb2NrZXR2YXIuaA0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KUkNTIGZpbGU6IC9kYXRhL2Zic2QtY3ZzL25jdnMvc3JjL3N5 cy9zeXMvc29ja2V0dmFyLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjE0 MS4yLjENCmRpZmYgLXUgLXIxLjE0MS4yLjEgc29ja2V0dmFyLmgNCi0tLSBz eXMvc29ja2V0dmFyLmgJMjggSnVuIDIwMDYgMTQ6MzM6NDcgLTAwMDAJMS4x NDEuMi4xDQorKysgc3lzL3NvY2tldHZhci5oCTExIE1hciAyMDA3IDAzOjEz OjI1IC0wMDAwDQpAQCAtNTMzLDYgKzUzMyw5IEBADQogaW50CXNvc2VuZChz dHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICphZGRyLCBzdHJ1 Y3QgdWlvICp1aW8sDQogCSAgICBzdHJ1Y3QgbWJ1ZiAqdG9wLCBzdHJ1Y3Qg bWJ1ZiAqY29udHJvbCwgaW50IGZsYWdzLA0KIAkgICAgc3RydWN0IHRocmVh ZCAqdGQpOw0KK2ludAlzb3NlbmRfZGdyYW0oc3RydWN0IHNvY2tldCAqc28s IHN0cnVjdCBzb2NrYWRkciAqYWRkciwNCisJICAgIHN0cnVjdCB1aW8gKnVp bywgc3RydWN0IG1idWYgKnRvcCwgc3RydWN0IG1idWYgKmNvbnRyb2wsDQor CSAgICBpbnQgZmxhZ3MsIHN0cnVjdCB0aHJlYWQgKnRkKTsNCiBpbnQJc29z ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nrb3B0ICpzb3B0 KTsNCiBpbnQJc29zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGhv dyk7DQogdm9pZAlzb3RveHNvY2tldChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry dWN0IHhzb2NrZXQgKnhzbyk7DQo= --0-681862891-1173583061=:79670--