From owner-freebsd-threads@FreeBSD.ORG Sun Jul 21 08:30:02 2013 Return-Path: Delivered-To: freebsd-threads@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 91155C20 for ; Sun, 21 Jul 2013 08:30:02 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 83F46BD7 for ; Sun, 21 Jul 2013 08:30:02 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r6L8U2Ag097538 for ; Sun, 21 Jul 2013 08:30:02 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r6L8U27O097537; Sun, 21 Jul 2013 08:30:02 GMT (envelope-from gnats) Date: Sun, 21 Jul 2013 08:30:02 GMT Message-Id: <201307210830.r6L8U27O097537@freefall.freebsd.org> To: freebsd-threads@FreeBSD.org Cc: From: Petr Salinger Subject: Re: threads/180652: compat32 problem in clock_getcpuclockid2 X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Petr Salinger List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Jul 2013 08:30:02 -0000 The following reply was made to PR threads/180652; it has been noted by GNATS. From: Petr Salinger To: Konstantin Belousov Cc: freebsd-gnats-submit@FreeBSD.org Subject: Re: threads/180652: compat32 problem in clock_getcpuclockid2 Date: Sun, 21 Jul 2013 10:23:54 +0200 (CEST) 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-1230774450-1374395034=:23067 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed >> I only tested with adapted tst-timer2.c. I hope you would do the rest. > I tried. The tst-timer4.c timed out. I will look at it later. There have been two problems: a) sigev_value.sival_ptr have not been copied b) the code misshandles timer_create() with NULL struct sigevent With attached patch, it passes our tests. I think, that there is a similar bug in both new freebsd32_kmq_notify() and sys_kmq_notify(). They do not handle NULL in struct sigevent, it might suffice to - return (kern_kmq_notify(td, uap->mqd, &ev)); + return (kern_kmq_notify(td, uap->mqd, uap->sigev == NULL ? NULL : &ev)); But this seems not be covered by our testsuite. Petr --8323328-1230774450-1374395034=:23067 Content-Type: TEXT/plain; name=kt2.diff Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=kt2.diff ZGlmZiAtLWdpdCBhL3N5cy9jb21wYXQvZnJlZWJzZDMyL2ZyZWVic2QzMi5o IGIvc3lzL2NvbXBhdC9mcmVlYnNkMzIvZnJlZWJzZDMyLmgNCmluZGV4IGE5 NWIwZTUuLjliMDQ5NjUgMTAwNjQ0DQotLS0gYS9zeXMvY29tcGF0L2ZyZWVi c2QzMi9mcmVlYnNkMzIuaA0KKysrIGIvc3lzL2NvbXBhdC9mcmVlYnNkMzIv ZnJlZWJzZDMyLmgNCkBAIC02OSw2ICs2OSwxNSBAQCBzdHJ1Y3QgdGltZXNw ZWMzMiB7DQogCUNQKChzcmMpLmZsZCwoZHN0KS5mbGQsdHZfbnNlYyk7CVwN CiB9IHdoaWxlICgwKQ0KIA0KK3N0cnVjdCBpdGltZXJzcGVjMzIgew0KKwlz dHJ1Y3QgdGltZXNwZWMzMiAgaXRfaW50ZXJ2YWw7DQorCXN0cnVjdCB0aW1l c3BlYzMyICBpdF92YWx1ZTsNCit9Ow0KKyNkZWZpbmUgSVRTX0NQKHNyYywg ZHN0KSBkbyB7CQkJXA0KKwlUU19DUCgoc3JjKSwgKGRzdCksIGl0X2ludGVy dmFsKTsJXA0KKwlUU19DUCgoc3JjKSwgKGRzdCksIGl0X3ZhbHVlKTsJCVwN Cit9IHdoaWxlICgwKQ0KKw0KIHN0cnVjdCBydXNhZ2UzMiB7DQogCXN0cnVj dCB0aW1ldmFsMzIgcnVfdXRpbWU7DQogCXN0cnVjdCB0aW1ldmFsMzIgcnVf c3RpbWU7DQpkaWZmIC0tZ2l0IGEvc3lzL2NvbXBhdC9mcmVlYnNkMzIvZnJl ZWJzZDMyX21pc2MuYyBiL3N5cy9jb21wYXQvZnJlZWJzZDMyL2ZyZWVic2Qz Ml9taXNjLmMNCmluZGV4IGNmY2Q4M2IuLjNkODQ5NDEgMTAwNjQ0DQotLS0g YS9zeXMvY29tcGF0L2ZyZWVic2QzMi9mcmVlYnNkMzJfbWlzYy5jDQorKysg Yi9zeXMvY29tcGF0L2ZyZWVic2QzMi9mcmVlYnNkMzJfbWlzYy5jDQpAQCAt MjMzMSw2ICsyMzMxLDcwIEBAIGZyZWVic2QzMl9jbG9ja19nZXRyZXMoc3Ry dWN0IHRocmVhZCAqdGQsDQogCXJldHVybiAoZXJyb3IpOw0KIH0NCiANCitp bnQgZnJlZWJzZDMyX2t0aW1lcl9jcmVhdGUoc3RydWN0IHRocmVhZCAqdGQs DQorICAgIHN0cnVjdCBmcmVlYnNkMzJfa3RpbWVyX2NyZWF0ZV9hcmdzICp1 YXApDQorew0KKwlzdHJ1Y3Qgc2lnZXZlbnQzMiBldjMyOw0KKwlzdHJ1Y3Qg c2lnZXZlbnQgZXYsICpldnA7DQorCWludCBlcnJvciwgaWQ7DQorDQorCWlm ICh1YXAtPmV2cCA9PSBOVUxMKSB7DQorCQlldnAgPSBOVUxMOw0KKwl9IGVs c2Ugew0KKwkJZXZwID0gJmV2Ow0KKwkJZXJyb3IgPSBjb3B5aW4odWFwLT5l dnAsICZldjMyLCBzaXplb2YoZXYzMikpOw0KKwkJaWYgKGVycm9yICE9IDAp DQorCQkJcmV0dXJuIChlcnJvcik7DQorCQllcnJvciA9IGNvbnZlcnRfc2ln ZXZlbnQzMigmZXYzMiwgJmV2KTsNCisJCWlmIChlcnJvciAhPSAwKQ0KKwkJ CXJldHVybiAoZXJyb3IpOw0KKwl9DQorCWVycm9yID0ga2Vybl9rdGltZXJf Y3JlYXRlKHRkLCB1YXAtPmNsb2NrX2lkLCBldnAsICZpZCwgLTEpOw0KKwlp ZiAoZXJyb3IgPT0gMCkgew0KKwkJZXJyb3IgPSBjb3B5b3V0KCZpZCwgdWFw LT50aW1lcmlkLCBzaXplb2YoaW50KSk7DQorCQlpZiAoZXJyb3IgIT0gMCkN CisJCQlrZXJuX2t0aW1lcl9kZWxldGUodGQsIGlkKTsNCisJfQ0KKwlyZXR1 cm4gKGVycm9yKTsNCit9DQorDQoraW50DQorZnJlZWJzZDMyX2t0aW1lcl9z ZXR0aW1lKHN0cnVjdCB0aHJlYWQgKnRkLA0KKyAgICBzdHJ1Y3QgZnJlZWJz ZDMyX2t0aW1lcl9zZXR0aW1lX2FyZ3MgKnVhcCkNCit7DQorCXN0cnVjdCBp dGltZXJzcGVjMzIgdmFsMzIsIG92YWwzMjsNCisJc3RydWN0IGl0aW1lcnNw ZWMgdmFsLCBvdmFsLCAqb3ZhbHA7DQorCWludCBlcnJvcjsNCisNCisJZXJy b3IgPSBjb3B5aW4odWFwLT52YWx1ZSwgJnZhbDMyLCBzaXplb2YodmFsMzIp KTsNCisJaWYgKGVycm9yICE9IDApDQorCQlyZXR1cm4gKGVycm9yKTsNCisJ SVRTX0NQKHZhbDMyLCB2YWwpOw0KKwlvdmFscCA9IHVhcC0+b3ZhbHVlICE9 IE5VTEwgPyAmb3ZhbCA6IE5VTEw7DQorCWVycm9yID0ga2Vybl9rdGltZXJf c2V0dGltZSh0ZCwgdWFwLT50aW1lcmlkLCB1YXAtPmZsYWdzLCAmdmFsLCBv dmFscCk7DQorCWlmIChlcnJvciA9PSAwICYmIHVhcC0+b3ZhbHVlICE9IE5V TEwpIHsNCisJCUlUU19DUChvdmFsLCBvdmFsMzIpOw0KKwkJZXJyb3IgPSBj b3B5b3V0KCZvdmFsMzIsIHVhcC0+b3ZhbHVlLCBzaXplb2Yob3ZhbDMyKSk7 DQorCX0NCisJcmV0dXJuIChlcnJvcik7DQorfQ0KKw0KK2ludA0KK2ZyZWVi c2QzMl9rdGltZXJfZ2V0dGltZShzdHJ1Y3QgdGhyZWFkICp0ZCwNCisgICAg c3RydWN0IGZyZWVic2QzMl9rdGltZXJfZ2V0dGltZV9hcmdzICp1YXApDQor ew0KKwlzdHJ1Y3QgaXRpbWVyc3BlYzMyIHZhbDMyOw0KKwlzdHJ1Y3QgaXRp bWVyc3BlYyB2YWw7DQorCWludCBlcnJvcjsNCisNCisJZXJyb3IgPSBrZXJu X2t0aW1lcl9nZXR0aW1lKHRkLCB1YXAtPnRpbWVyaWQsICZ2YWwpOw0KKwlp ZiAoZXJyb3IgPT0gMCkgew0KKwkJSVRTX0NQKHZhbCwgdmFsMzIpOw0KKwkJ ZXJyb3IgPSBjb3B5b3V0KCZ2YWwzMiwgdWFwLT52YWx1ZSwgc2l6ZW9mKHZh bDMyKSk7DQorCX0NCisJcmV0dXJuIChlcnJvcik7DQorfQ0KKw0KIGludA0K IGZyZWVic2QzMl9jbG9ja19nZXRjcHVjbG9ja2lkMihzdHJ1Y3QgdGhyZWFk ICp0ZCwNCiAgICAgc3RydWN0IGZyZWVic2QzMl9jbG9ja19nZXRjcHVjbG9j a2lkMl9hcmdzICp1YXApDQpAQCAtMjkxMiwzICsyOTc2LDI5IEBAIGZyZWVi c2QzMl9wb3NpeF9mYWR2aXNlKHN0cnVjdCB0aHJlYWQgKnRkLA0KIAlyZXR1 cm4gKGtlcm5fcG9zaXhfZmFkdmlzZSh0ZCwgdWFwLT5mZCwgUEFJUjMyVE82 NChvZmZfdCwgdWFwLT5vZmZzZXQpLA0KIAkgICAgUEFJUjMyVE82NChvZmZf dCwgdWFwLT5sZW4pLCB1YXAtPmFkdmljZSkpOw0KIH0NCisNCitpbnQNCitj b252ZXJ0X3NpZ2V2ZW50MzIoc3RydWN0IHNpZ2V2ZW50MzIgKnNpZzMyLCBz dHJ1Y3Qgc2lnZXZlbnQgKnNpZykNCit7DQorDQorCUNQKCpzaWczMiwgKnNp Zywgc2lnZXZfbm90aWZ5KTsNCisJc3dpdGNoIChzaWctPnNpZ2V2X25vdGlm eSkgew0KKwljYXNlIFNJR0VWX05PTkU6DQorCQlicmVhazsNCisJY2FzZSBT SUdFVl9USFJFQURfSUQ6DQorCQlDUCgqc2lnMzIsICpzaWcsIHNpZ2V2X25v dGlmeV90aHJlYWRfaWQpOw0KKwkJLyogRkFMTFRIUk9VR0ggKi8NCisJY2Fz ZSBTSUdFVl9TSUdOQUw6DQorCQlDUCgqc2lnMzIsICpzaWcsIHNpZ2V2X3Np Z25vKTsNCisJCVBUUklOX0NQKCpzaWczMiwgKnNpZywgc2lnZXZfdmFsdWUu c2l2YWxfcHRyKTsNCisJCWJyZWFrOw0KKwljYXNlIFNJR0VWX0tFVkVOVDoN CisJCUNQKCpzaWczMiwgKnNpZywgc2lnZXZfbm90aWZ5X2txdWV1ZSk7DQor CQlDUCgqc2lnMzIsICpzaWcsIHNpZ2V2X25vdGlmeV9rZXZlbnRfZmxhZ3Mp Ow0KKwkJUFRSSU5fQ1AoKnNpZzMyLCAqc2lnLCBzaWdldl92YWx1ZS5zaXZh bF9wdHIpOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlyZXR1cm4gKEVJ TlZBTCk7DQorCX0NCisJcmV0dXJuICgwKTsNCit9DQpkaWZmIC0tZ2l0IGEv c3lzL2NvbXBhdC9mcmVlYnNkMzIvZnJlZWJzZDMyX3NpZ25hbC5oIGIvc3lz L2NvbXBhdC9mcmVlYnNkMzIvZnJlZWJzZDMyX3NpZ25hbC5oDQppbmRleCBk MzFhOGFlLi4xODg5OWY4IDEwMDY0NA0KLS0tIGEvc3lzL2NvbXBhdC9mcmVl YnNkMzIvZnJlZWJzZDMyX3NpZ25hbC5oDQorKysgYi9zeXMvY29tcGF0L2Zy ZWVic2QzMi9mcmVlYnNkMzJfc2lnbmFsLmgNCkBAIC05Nyw2ICs5Nyw4IEBA IHN0cnVjdCBzaWdldmVudDMyIHsNCiAJfSBfc2lnZXZfdW47DQogfTsNCiAN CitzdHJ1Y3Qgc2lnZXZlbnQ7DQoraW50IGNvbnZlcnRfc2lnZXZlbnQzMihz dHJ1Y3Qgc2lnZXZlbnQzMiAqc2lnMzIsIHN0cnVjdCBzaWdldmVudCAqc2ln KTsNCiB2b2lkIHNpZ2luZm9fdG9fc2lnaW5mbzMyKGNvbnN0IHNpZ2luZm9f dCAqc3JjLCBzdHJ1Y3Qgc2lnaW5mbzMyICpkc3QpOw0KIA0KICNlbmRpZiAv KiAhX0NPTVBBVF9GUkVFQlNEMzJfU0lHTkFMX0hfICovDQpkaWZmIC0tZ2l0 IGEvc3lzL2NvbXBhdC9mcmVlYnNkMzIvc3lzY2FsbHMubWFzdGVyIGIvc3lz L2NvbXBhdC9mcmVlYnNkMzIvc3lzY2FsbHMubWFzdGVyDQppbmRleCA2Y2I2 NDlmLi5kYWVlNzJjIDEwMDY0NA0KLS0tIGEvc3lzL2NvbXBhdC9mcmVlYnNk MzIvc3lzY2FsbHMubWFzdGVyDQorKysgYi9zeXMvY29tcGF0L2ZyZWVic2Qz Mi9zeXNjYWxscy5tYXN0ZXINCkBAIC00NDEsMTEgKzQ0MSwxNyBAQA0KIAkJ CQkgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjMzIgKnRwKTsgfQ0KIDIzNAlB VUVfTlVMTAlTVEQJeyBpbnQgZnJlZWJzZDMyX2Nsb2NrX2dldHJlcyhjbG9j a2lkX3QgY2xvY2tfaWQsIFwNCiAJCQkJICAgIHN0cnVjdCB0aW1lc3BlYzMy ICp0cCk7IH0NCi0yMzUJQVVFX05VTEwJVU5JTVBMCXRpbWVyX2NyZWF0ZQ0K LTIzNglBVUVfTlVMTAlVTklNUEwJdGltZXJfZGVsZXRlDQotMjM3CUFVRV9O VUxMCVVOSU1QTAl0aW1lcl9zZXR0aW1lDQotMjM4CUFVRV9OVUxMCVVOSU1Q TAl0aW1lcl9nZXR0aW1lDQotMjM5CUFVRV9OVUxMCVVOSU1QTAl0aW1lcl9n ZXRvdmVycnVuDQorMjM1CUFVRV9OVUxMCVNURAl7IGludCBmcmVlYnNkMzJf a3RpbWVyX2NyZWF0ZShcDQorCQkJCSAgICBjbG9ja2lkX3QgY2xvY2tfaWQs IFwNCisJCQkJICAgIHN0cnVjdCBzaWdldmVudDMyICpldnAsIGludCAqdGlt ZXJpZCk7IH0NCisyMzYJQVVFX05VTEwJTk9QUk9UTwl7IGludCBrdGltZXJf ZGVsZXRlKGludCB0aW1lcmlkKTsgfQ0KKzIzNwlBVUVfTlVMTAlTVEQJeyBp bnQgZnJlZWJzZDMyX2t0aW1lcl9zZXR0aW1lKGludCB0aW1lcmlkLFwNCisJ CQkJICAgIGludCBmbGFncywgXA0KKwkJCQkgICAgY29uc3Qgc3RydWN0IGl0 aW1lcnNwZWMzMiAqdmFsdWUsIFwNCisJCQkJICAgIHN0cnVjdCBpdGltZXJz cGVjMzIgKm92YWx1ZSk7IH0NCisyMzgJQVVFX05VTEwJU1RECXsgaW50IGZy ZWVic2QzMl9rdGltZXJfZ2V0dGltZShpbnQgdGltZXJpZCxcDQorCQkJCSAg ICBzdHJ1Y3QgaXRpbWVyc3BlYzMyICp2YWx1ZSk7IH0NCisyMzkJQVVFX05V TEwJTk9QUk9UTwl7IGludCBrdGltZXJfZ2V0b3ZlcnJ1bihpbnQgdGltZXJp ZCk7IH0NCiAyNDAJQVVFX05VTEwJU1RECXsgaW50IGZyZWVic2QzMl9uYW5v c2xlZXAoIFwNCiAJCQkJICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzMyICpy cXRwLCBcDQogCQkJCSAgICBzdHJ1Y3QgdGltZXNwZWMzMiAqcm10cCk7IH0N CkBAIC00NzYsNyArNDgyLDcgQEANCiAJCQkJICAgIHN0cnVjdCBhaW9jYjMy ICphaW9jYnApOyB9DQogMjU3CUFVRV9OVUxMCU5PU1RECXsgaW50IGZyZWVi c2QzMl9saW9fbGlzdGlvKGludCBtb2RlLCBcDQogCQkJCSAgICBzdHJ1Y3Qg YWlvY2IzMiAqIGNvbnN0ICphY2JfbGlzdCwgXA0KLQkJCQkgICAgaW50IG5l bnQsIHN0cnVjdCBzaWdldmVudCAqc2lnKTsgfQ0KKwkJCQkgICAgaW50IG5l bnQsIHN0cnVjdCBzaWdldmVudDMyICpzaWcpOyB9DQogMjU4CUFVRV9OVUxM CVVOSU1QTAlub3N5cw0KIDI1OQlBVUVfTlVMTAlVTklNUEwJbm9zeXMNCiAy NjAJQVVFX05VTEwJVU5JTVBMCW5vc3lzDQpAQCAtODI1LDggKzgzMSw4IEBA DQogCQkJCSAgICBjb25zdCBjaGFyICptc2dfcHRyLCBzaXplX3QgbXNnX2xl bixcDQogCQkJCSAgICB1bnNpZ25lZCBtc2dfcHJpbywJCQlcDQogCQkJCSAg ICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMzMiAqYWJzX3RpbWVvdXQpO30NCi00 NjEJQVVFX05VTEwJTk9QUk9UT3xOT1NURAl7IGludCBrbXFfbm90aWZ5KGlu dCBtcWQsCVwNCi0JCQkJICAgIGNvbnN0IHN0cnVjdCBzaWdldmVudCAqc2ln ZXYpOyB9DQorNDYxCUFVRV9OVUxMCU5PU1RECXsgaW50IGZyZWVic2QzMl9r bXFfbm90aWZ5KGludCBtcWQsCVwNCisJCQkJICAgIGNvbnN0IHN0cnVjdCBz aWdldmVudDMyICpzaWdldik7IH0NCiA0NjIJQVVFX05VTEwJTk9QUk9UT3xO T1NURAl7IGludCBrbXFfdW5saW5rKGNvbnN0IGNoYXIgKnBhdGgpOyB9DQog NDYzCUFVRV9OVUxMCU5PUFJPVE8JeyBpbnQgYWJvcnQyKGNvbnN0IGNoYXIg KndoeSwgaW50IG5hcmdzLCB2b2lkICoqYXJncyk7IH0NCiA0NjQJQVVFX05V TEwgCU5PUFJPVE8JeyBpbnQgdGhyX3NldF9uYW1lKGxvbmcgaWQsIGNvbnN0 IGNoYXIgKm5hbWUpOyB9DQpkaWZmIC0tZ2l0IGEvc3lzL2tlcm4va2Vybl90 aW1lLmMgYi9zeXMva2Vybi9rZXJuX3RpbWUuYw0KaW5kZXggNmI5MDhhMC4u NDE1MTg4YyAxMDA2NDQNCi0tLSBhL3N5cy9rZXJuL2tlcm5fdGltZS5jDQor KysgYi9zeXMva2Vybi9rZXJuX3RpbWUuYw0KQEAgLTk4LDkgKzk4LDYgQEAg c3RhdGljIGludAlyZWFsdGltZXJfc2V0dGltZShzdHJ1Y3QgaXRpbWVyICos IGludCwNCiBzdGF0aWMgaW50CXJlYWx0aW1lcl9kZWxldGUoc3RydWN0IGl0 aW1lciAqKTsNCiBzdGF0aWMgdm9pZAlyZWFsdGltZXJfY2xvY2t0aW1lKGNs b2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOw0KIHN0YXRpYyB2b2lkCXJl YWx0aW1lcl9leHBpcmUodm9pZCAqKTsNCi1zdGF0aWMgaW50CWtlcm5fdGlt ZXJfY3JlYXRlKHN0cnVjdCB0aHJlYWQgKiwgY2xvY2tpZF90LA0KLQkJCXN0 cnVjdCBzaWdldmVudCAqLCBpbnQgKiwgaW50KTsNCi1zdGF0aWMgaW50CWtl cm5fdGltZXJfZGVsZXRlKHN0cnVjdCB0aHJlYWQgKiwgaW50KTsNCiANCiBp bnQJCXJlZ2lzdGVyX3Bvc2l4X2Nsb2NrKGludCwgc3RydWN0IGtjbG9jayAq KTsNCiB2b2lkCQlpdGltZXJfZmlyZShzdHJ1Y3QgaXRpbWVyICppdCk7DQpA QCAtMTA3OCwyMCArMTA3NSwxOCBAQCBzeXNfa3RpbWVyX2NyZWF0ZShzdHJ1 Y3QgdGhyZWFkICp0ZCwgc3RydWN0IGt0aW1lcl9jcmVhdGVfYXJncyAqdWFw KQ0KIAkJZXZwMSA9ICZldjsNCiAJfSBlbHNlDQogCQlldnAxID0gTlVMTDsN Ci0NCi0JZXJyb3IgPSBrZXJuX3RpbWVyX2NyZWF0ZSh0ZCwgdWFwLT5jbG9j a19pZCwgZXZwMSwgJmlkLCAtMSk7DQotDQorCWVycm9yID0ga2Vybl9rdGlt ZXJfY3JlYXRlKHRkLCB1YXAtPmNsb2NrX2lkLCBldnAxLCAmaWQsIC0xKTsN CiAJaWYgKGVycm9yID09IDApIHsNCiAJCWVycm9yID0gY29weW91dCgmaWQs IHVhcC0+dGltZXJpZCwgc2l6ZW9mKGludCkpOw0KIAkJaWYgKGVycm9yICE9 IDApDQotCQkJa2Vybl90aW1lcl9kZWxldGUodGQsIGlkKTsNCisJCQlrZXJu X2t0aW1lcl9kZWxldGUodGQsIGlkKTsNCiAJfQ0KIAlyZXR1cm4gKGVycm9y KTsNCiB9DQogDQotc3RhdGljIGludA0KLWtlcm5fdGltZXJfY3JlYXRlKHN0 cnVjdCB0aHJlYWQgKnRkLCBjbG9ja2lkX3QgY2xvY2tfaWQsDQotCXN0cnVj dCBzaWdldmVudCAqZXZwLCBpbnQgKnRpbWVyaWQsIGludCBwcmVzZXRfaWQp DQoraW50DQora2Vybl9rdGltZXJfY3JlYXRlKHN0cnVjdCB0aHJlYWQgKnRk LCBjbG9ja2lkX3QgY2xvY2tfaWQsIHN0cnVjdCBzaWdldmVudCAqZXZwLA0K KyAgICBpbnQgKnRpbWVyaWQsIGludCBwcmVzZXRfaWQpDQogew0KIAlzdHJ1 Y3QgcHJvYyAqcCA9IHRkLT50ZF9wcm9jOw0KIAlzdHJ1Y3QgaXRpbWVyICpp dDsNCkBAIC0xMjA2LDcgKzEyMDEsOCBAQCBzdHJ1Y3Qga3RpbWVyX2RlbGV0 ZV9hcmdzIHsNCiBpbnQNCiBzeXNfa3RpbWVyX2RlbGV0ZShzdHJ1Y3QgdGhy ZWFkICp0ZCwgc3RydWN0IGt0aW1lcl9kZWxldGVfYXJncyAqdWFwKQ0KIHsN Ci0JcmV0dXJuIChrZXJuX3RpbWVyX2RlbGV0ZSh0ZCwgdWFwLT50aW1lcmlk KSk7DQorDQorCXJldHVybiAoa2Vybl9rdGltZXJfZGVsZXRlKHRkLCB1YXAt PnRpbWVyaWQpKTsNCiB9DQogDQogc3RhdGljIHN0cnVjdCBpdGltZXIgKg0K QEAgLTEyMjgsOCArMTIyNCw4IEBAIGl0aW1lcl9maW5kKHN0cnVjdCBwcm9j ICpwLCBpbnQgdGltZXJpZCkNCiAJcmV0dXJuIChpdCk7DQogfQ0KIA0KLXN0 YXRpYyBpbnQNCi1rZXJuX3RpbWVyX2RlbGV0ZShzdHJ1Y3QgdGhyZWFkICp0 ZCwgaW50IHRpbWVyaWQpDQoraW50DQora2Vybl9rdGltZXJfZGVsZXRlKHN0 cnVjdCB0aHJlYWQgKnRkLCBpbnQgdGltZXJpZCkNCiB7DQogCXN0cnVjdCBw cm9jICpwID0gdGQtPnRkX3Byb2M7DQogCXN0cnVjdCBpdGltZXIgKml0Ow0K QEAgLTEyNzEsMzUgKzEyNjcsNDAgQEAgc3RydWN0IGt0aW1lcl9zZXR0aW1l X2FyZ3Mgew0KIGludA0KIHN5c19rdGltZXJfc2V0dGltZShzdHJ1Y3QgdGhy ZWFkICp0ZCwgc3RydWN0IGt0aW1lcl9zZXR0aW1lX2FyZ3MgKnVhcCkNCiB7 DQotCXN0cnVjdCBwcm9jICpwID0gdGQtPnRkX3Byb2M7DQotCXN0cnVjdCBp dGltZXIgKml0Ow0KIAlzdHJ1Y3QgaXRpbWVyc3BlYyB2YWwsIG92YWwsICpv dmFscDsNCiAJaW50IGVycm9yOw0KIA0KIAllcnJvciA9IGNvcHlpbih1YXAt PnZhbHVlLCAmdmFsLCBzaXplb2YodmFsKSk7DQogCWlmIChlcnJvciAhPSAw KQ0KIAkJcmV0dXJuIChlcnJvcik7DQotCQ0KLQlpZiAodWFwLT5vdmFsdWUg IT0gTlVMTCkNCi0JCW92YWxwID0gJm92YWw7DQotCWVsc2UNCi0JCW92YWxw ID0gTlVMTDsNCisJb3ZhbHAgPSB1YXAtPm92YWx1ZSAhPSBOVUxMID8gJm92 YWwgOiBOVUxMOw0KKwllcnJvciA9IGtlcm5fa3RpbWVyX3NldHRpbWUodGQs IHVhcC0+dGltZXJpZCwgdWFwLT5mbGFncywgJnZhbCwgb3ZhbHApOw0KKwlp ZiAoZXJyb3IgPT0gMCAmJiB1YXAtPm92YWx1ZSAhPSBOVUxMKQ0KKwkJZXJy b3IgPSBjb3B5b3V0KG92YWxwLCB1YXAtPm92YWx1ZSwgc2l6ZW9mKCpvdmFs cCkpOw0KKwlyZXR1cm4gKGVycm9yKTsNCit9DQogDQoraW50DQora2Vybl9r dGltZXJfc2V0dGltZShzdHJ1Y3QgdGhyZWFkICp0ZCwgaW50IHRpbWVyX2lk LCBpbnQgZmxhZ3MsDQorICAgIHN0cnVjdCBpdGltZXJzcGVjICp2YWwsIHN0 cnVjdCBpdGltZXJzcGVjICpvdmFsKQ0KK3sNCisJc3RydWN0IHByb2MgKnA7 DQorCXN0cnVjdCBpdGltZXIgKml0Ow0KKwlpbnQgZXJyb3I7DQorDQorCXAg PSB0ZC0+dGRfcHJvYzsNCiAJUFJPQ19MT0NLKHApOw0KLQlpZiAodWFwLT50 aW1lcmlkIDwgMyB8fA0KLQkgICAgKGl0ID0gaXRpbWVyX2ZpbmQocCwgdWFw LT50aW1lcmlkKSkgPT0gTlVMTCkgew0KKwlpZiAodGltZXJfaWQgPCAzIHx8 IChpdCA9IGl0aW1lcl9maW5kKHAsIHRpbWVyX2lkKSkgPT0gTlVMTCkgew0K IAkJUFJPQ19VTkxPQ0socCk7DQogCQllcnJvciA9IEVJTlZBTDsNCiAJfSBl bHNlIHsNCiAJCVBST0NfVU5MT0NLKHApOw0KIAkJaXRpbWVyX2VudGVyKGl0 KTsNCi0JCWVycm9yID0gQ0xPQ0tfQ0FMTChpdC0+aXRfY2xvY2tpZCwgdGlt ZXJfc2V0dGltZSwNCi0JCQkJKGl0LCB1YXAtPmZsYWdzLCAmdmFsLCBvdmFs cCkpOw0KKwkJZXJyb3IgPSBDTE9DS19DQUxMKGl0LT5pdF9jbG9ja2lkLCB0 aW1lcl9zZXR0aW1lLCAoaXQsDQorCQkgICAgZmxhZ3MsIHZhbCwgb3ZhbCkp Ow0KIAkJaXRpbWVyX2xlYXZlKGl0KTsNCiAJCUlUSU1FUl9VTkxPQ0soaXQp Ow0KIAl9DQotCWlmIChlcnJvciA9PSAwICYmIHVhcC0+b3ZhbHVlICE9IE5V TEwpDQotCQllcnJvciA9IGNvcHlvdXQob3ZhbHAsIHVhcC0+b3ZhbHVlLCBz aXplb2YoKm92YWxwKSk7DQogCXJldHVybiAoZXJyb3IpOw0KIH0NCiANCkBA IC0xMzEyLDI2ICsxMzEzLDM0IEBAIHN0cnVjdCBrdGltZXJfZ2V0dGltZV9h cmdzIHsNCiBpbnQNCiBzeXNfa3RpbWVyX2dldHRpbWUoc3RydWN0IHRocmVh ZCAqdGQsIHN0cnVjdCBrdGltZXJfZ2V0dGltZV9hcmdzICp1YXApDQogew0K LQlzdHJ1Y3QgcHJvYyAqcCA9IHRkLT50ZF9wcm9jOw0KLQlzdHJ1Y3QgaXRp bWVyICppdDsNCiAJc3RydWN0IGl0aW1lcnNwZWMgdmFsOw0KIAlpbnQgZXJy b3I7DQogDQorCWVycm9yID0ga2Vybl9rdGltZXJfZ2V0dGltZSh0ZCwgdWFw LT50aW1lcmlkLCAmdmFsKTsNCisJaWYgKGVycm9yID09IDApDQorCQllcnJv ciA9IGNvcHlvdXQoJnZhbCwgdWFwLT52YWx1ZSwgc2l6ZW9mKHZhbCkpOw0K KwlyZXR1cm4gKGVycm9yKTsNCit9DQorDQoraW50DQora2Vybl9rdGltZXJf Z2V0dGltZShzdHJ1Y3QgdGhyZWFkICp0ZCwgaW50IHRpbWVyX2lkLCBzdHJ1 Y3QgaXRpbWVyc3BlYyAqdmFsKQ0KK3sNCisJc3RydWN0IHByb2MgKnA7DQor CXN0cnVjdCBpdGltZXIgKml0Ow0KKwlpbnQgZXJyb3I7DQorDQorCXAgPSB0 ZC0+dGRfcHJvYzsNCiAJUFJPQ19MT0NLKHApOw0KLQlpZiAodWFwLT50aW1l cmlkIDwgMyB8fA0KLQkgICAoaXQgPSBpdGltZXJfZmluZChwLCB1YXAtPnRp bWVyaWQpKSA9PSBOVUxMKSB7DQorCWlmICh0aW1lcl9pZCA8IDMgfHwgKGl0 ID0gaXRpbWVyX2ZpbmQocCwgdGltZXJfaWQpKSA9PSBOVUxMKSB7DQogCQlQ Uk9DX1VOTE9DSyhwKTsNCiAJCWVycm9yID0gRUlOVkFMOw0KIAl9IGVsc2Ug ew0KIAkJUFJPQ19VTkxPQ0socCk7DQogCQlpdGltZXJfZW50ZXIoaXQpOw0K LQkJZXJyb3IgPSBDTE9DS19DQUxMKGl0LT5pdF9jbG9ja2lkLCB0aW1lcl9n ZXR0aW1lLA0KLQkJCQkoaXQsICZ2YWwpKTsNCisJCWVycm9yID0gQ0xPQ0tf Q0FMTChpdC0+aXRfY2xvY2tpZCwgdGltZXJfZ2V0dGltZSwgKGl0LCB2YWwp KTsNCiAJCWl0aW1lcl9sZWF2ZShpdCk7DQogCQlJVElNRVJfVU5MT0NLKGl0 KTsNCiAJfQ0KLQlpZiAoZXJyb3IgPT0gMCkNCi0JCWVycm9yID0gY29weW91 dCgmdmFsLCB1YXAtPnZhbHVlLCBzaXplb2YodmFsKSk7DQogCXJldHVybiAo ZXJyb3IpOw0KIH0NCiANCkBAIC0xNjI2LDcgKzE2MzUsNyBAQCBpdGltZXJz X2V2ZW50X2hvb2tfZXhpdCh2b2lkICphcmcsIHN0cnVjdCBwcm9jICpwKQ0K IAkJCXBhbmljKCJ1bmhhbmRsZWQgZXZlbnQiKTsNCiAJCWZvciAoOyBpIDwg VElNRVJfTUFYOyArK2kpIHsNCiAJCQlpZiAoKGl0ID0gaXRzLT5pdHNfdGlt ZXJzW2ldKSAhPSBOVUxMKQ0KLQkJCQlrZXJuX3RpbWVyX2RlbGV0ZShjdXJ0 aHJlYWQsIGkpOw0KKwkJCQlrZXJuX2t0aW1lcl9kZWxldGUoY3VydGhyZWFk LCBpKTsNCiAJCX0NCiAJCWlmIChpdHMtPml0c190aW1lcnNbMF0gPT0gTlVM TCAmJg0KIAkJICAgIGl0cy0+aXRzX3RpbWVyc1sxXSA9PSBOVUxMICYmDQpk aWZmIC0tZ2l0IGEvc3lzL2tlcm4vdWlwY19tcXVldWUuYyBiL3N5cy9rZXJu L3VpcGNfbXF1ZXVlLmMNCmluZGV4IDczNTc5ZDMuLmFlM2YxYTYgMTAwNjQ0 DQotLS0gYS9zeXMva2Vybi91aXBjX21xdWV1ZS5jDQorKysgYi9zeXMva2Vy bi91aXBjX21xdWV1ZS5jDQpAQCAtMjIzNSwxMCArMjIzNSw5IEBAIHN5c19r bXFfdGltZWRzZW5kKHN0cnVjdCB0aHJlYWQgKnRkLCBzdHJ1Y3Qga21xX3Rp bWVkc2VuZF9hcmdzICp1YXApDQogCXJldHVybiAoZXJyb3IpOw0KIH0NCiAN Ci1pbnQNCi1zeXNfa21xX25vdGlmeShzdHJ1Y3QgdGhyZWFkICp0ZCwgc3Ry dWN0IGttcV9ub3RpZnlfYXJncyAqdWFwKQ0KK3N0YXRpYyBpbnQNCitrZXJu X2ttcV9ub3RpZnkoc3RydWN0IHRocmVhZCAqdGQsIGludCBtcWQsIHN0cnVj dCBzaWdldmVudCAqc2lnZXYpDQogew0KLQlzdHJ1Y3Qgc2lnZXZlbnQgZXY7 DQogCXN0cnVjdCBmaWxlZGVzYyAqZmRwOw0KIAlzdHJ1Y3QgcHJvYyAqcDsN CiAJc3RydWN0IG1xdWV1ZSAqbXE7DQpAQCAtMjI0NiwzNCArMjI0NSwzMSBA QCBzeXNfa21xX25vdGlmeShzdHJ1Y3QgdGhyZWFkICp0ZCwgc3RydWN0IGtt cV9ub3RpZnlfYXJncyAqdWFwKQ0KIAlzdHJ1Y3QgbXF1ZXVlX25vdGlmaWVy ICpudCwgKm5ld250ID0gTlVMTDsNCiAJaW50IGVycm9yOw0KIA0KLQlwID0g dGQtPnRkX3Byb2M7DQotCWZkcCA9IHRkLT50ZF9wcm9jLT5wX2ZkOw0KLQlp ZiAodWFwLT5zaWdldikgew0KLQkJZXJyb3IgPSBjb3B5aW4odWFwLT5zaWdl diwgJmV2LCBzaXplb2YoZXYpKTsNCi0JCWlmIChlcnJvcikNCi0JCQlyZXR1 cm4gKGVycm9yKTsNCi0JCWlmIChldi5zaWdldl9ub3RpZnkgIT0gU0lHRVZf U0lHTkFMICYmDQotCQkgICAgZXYuc2lnZXZfbm90aWZ5ICE9IFNJR0VWX1RI UkVBRF9JRCAmJg0KLQkJICAgIGV2LnNpZ2V2X25vdGlmeSAhPSBTSUdFVl9O T05FKQ0KKwlpZiAoc2lnZXYgIT0gTlVMTCkgew0KKwkJaWYgKHNpZ2V2LT5z aWdldl9ub3RpZnkgIT0gU0lHRVZfU0lHTkFMICYmDQorCQkgICAgc2lnZXYt PnNpZ2V2X25vdGlmeSAhPSBTSUdFVl9USFJFQURfSUQgJiYNCisJCSAgICBz aWdldi0+c2lnZXZfbm90aWZ5ICE9IFNJR0VWX05PTkUpDQogCQkJcmV0dXJu IChFSU5WQUwpOw0KLQkJaWYgKChldi5zaWdldl9ub3RpZnkgPT0gU0lHRVZf U0lHTkFMIHx8DQotCQkgICAgIGV2LnNpZ2V2X25vdGlmeSA9PSBTSUdFVl9U SFJFQURfSUQpICYmDQotCQkJIV9TSUdfVkFMSUQoZXYuc2lnZXZfc2lnbm8p KQ0KKwkJaWYgKChzaWdldi0+c2lnZXZfbm90aWZ5ID09IFNJR0VWX1NJR05B TCB8fA0KKwkJICAgIHNpZ2V2LT5zaWdldl9ub3RpZnkgPT0gU0lHRVZfVEhS RUFEX0lEKSAmJg0KKwkJICAgICFfU0lHX1ZBTElEKHNpZ2V2LT5zaWdldl9z aWdubykpDQogCQkJcmV0dXJuIChFSU5WQUwpOw0KIAl9DQotCWVycm9yID0g Z2V0bXEodGQsIHVhcC0+bXFkLCAmZnAsIE5VTEwsICZtcSk7DQorCXAgPSB0 ZC0+dGRfcHJvYzsNCisJZmRwID0gdGQtPnRkX3Byb2MtPnBfZmQ7DQorCWVy cm9yID0gZ2V0bXEodGQsIG1xZCwgJmZwLCBOVUxMLCAmbXEpOw0KIAlpZiAo ZXJyb3IpDQogCQlyZXR1cm4gKGVycm9yKTsNCiBhZ2FpbjoNCiAJRklMRURF U0NfU0xPQ0soZmRwKTsNCi0JZnAyID0gZmdldF9sb2NrZWQoZmRwLCB1YXAt Pm1xZCk7DQorCWZwMiA9IGZnZXRfbG9ja2VkKGZkcCwgbXFkKTsNCiAJaWYg KGZwMiA9PSBOVUxMKSB7DQogCQlGSUxFREVTQ19TVU5MT0NLKGZkcCk7DQog CQllcnJvciA9IEVCQURGOw0KIAkJZ290byBvdXQ7DQogCX0NCiAjaWZkZWYg Q0FQQUJJTElUSUVTDQotCWVycm9yID0gY2FwX2NoZWNrKGNhcF9yaWdodHMo ZmRwLCB1YXAtPm1xZCksIENBUF9QT0xMX0VWRU5UKTsNCisJZXJyb3IgPSBj YXBfY2hlY2soY2FwX3JpZ2h0cyhmZHAsIG1xZCksIENBUF9QT0xMX0VWRU5U KTsNCiAJaWYgKGVycm9yKSB7DQogCQlGSUxFREVTQ19TVU5MT0NLKGZkcCk7 DQogCQlnb3RvIG91dDsNCkBAIC0yMjg2LDEyICsyMjgyLDEyIEBAIGFnYWlu Og0KIAl9DQogCW10eF9sb2NrKCZtcS0+bXFfbXV0ZXgpOw0KIAlGSUxFREVT Q19TVU5MT0NLKGZkcCk7DQotCWlmICh1YXAtPnNpZ2V2ICE9IE5VTEwpIHsN CisJaWYgKHNpZ2V2ICE9IE5VTEwpIHsNCiAJCWlmIChtcS0+bXFfbm90aWZp ZXIgIT0gTlVMTCkgew0KIAkJCWVycm9yID0gRUJVU1k7DQogCQl9IGVsc2Ug ew0KIAkJCVBST0NfTE9DSyhwKTsNCi0JCQludCA9IG5vdGlmaWVyX3NlYXJj aChwLCB1YXAtPm1xZCk7DQorCQkJbnQgPSBub3RpZmllcl9zZWFyY2gocCwg bXFkKTsNCiAJCQlpZiAobnQgPT0gTlVMTCkgew0KIAkJCQlpZiAobmV3bnQg PT0gTlVMTCkgew0KIAkJCQkJUFJPQ19VTkxPQ0socCk7DQpAQCAtMjMxNCwx MCArMjMxMCwxMCBAQCBhZ2FpbjoNCiAJCQkJbnQtPm50X2tzaS5rc2lfZmxh Z3MgfD0gS1NJX0lOUyB8IEtTSV9FWFQ7DQogCQkJCW50LT5udF9rc2kua3Np X2NvZGUgPSBTSV9NRVNHUTsNCiAJCQkJbnQtPm50X3Byb2MgPSBwOw0KLQkJ CQludC0+bnRfa3NpLmtzaV9tcWQgPSB1YXAtPm1xZDsNCisJCQkJbnQtPm50 X2tzaS5rc2lfbXFkID0gbXFkOw0KIAkJCQlub3RpZmllcl9pbnNlcnQocCwg bnQpOw0KIAkJCX0NCi0JCQludC0+bnRfc2lnZXYgPSBldjsNCisJCQludC0+ bnRfc2lnZXYgPSAqc2lnZXY7DQogCQkJbXEtPm1xX25vdGlmaWVyID0gbnQ7 DQogCQkJUFJPQ19VTkxPQ0socCk7DQogCQkJLyoNCkBAIC0yMzMwLDcgKzIz MjYsNyBAQCBhZ2FpbjoNCiAJCQkJbXF1ZXVlX3NlbmRfbm90aWZpY2F0aW9u KG1xKTsNCiAJCX0NCiAJfSBlbHNlIHsNCi0JCW5vdGlmaWVyX3JlbW92ZShw LCBtcSwgdWFwLT5tcWQpOw0KKwkJbm90aWZpZXJfcmVtb3ZlKHAsIG1xLCBt cWQpOw0KIAl9DQogCW10eF91bmxvY2soJm1xLT5tcV9tdXRleCk7DQogDQpA QCAtMjM0MSw2ICsyMzM3LDIwIEBAIG91dDoNCiAJcmV0dXJuIChlcnJvcik7 DQogfQ0KIA0KK2ludA0KK3N5c19rbXFfbm90aWZ5KHN0cnVjdCB0aHJlYWQg KnRkLCBzdHJ1Y3Qga21xX25vdGlmeV9hcmdzICp1YXApDQorew0KKwlzdHJ1 Y3Qgc2lnZXZlbnQgZXY7DQorCWludCBlcnJvcjsNCisNCisJaWYgKHVhcC0+ c2lnZXYgIT0gTlVMTCkgew0KKwkJZXJyb3IgPSBjb3B5aW4odWFwLT5zaWdl diwgJmV2LCBzaXplb2YoZXYpKTsNCisJCWlmIChlcnJvciAhPSAwKQ0KKwkJ CXJldHVybiAoZXJyb3IpOw0KKwl9DQorCXJldHVybiAoa2Vybl9rbXFfbm90 aWZ5KHRkLCB1YXAtPm1xZCwgJmV2KSk7DQorfQ0KKw0KIHN0YXRpYyB2b2lk DQogbXF1ZXVlX2ZkY2xvc2Uoc3RydWN0IHRocmVhZCAqdGQsIGludCBmZCwg c3RydWN0IGZpbGUgKmZwKQ0KIHsNCkBAIC0yNjM3LDYgKzI2NDcsNyBAQCBz dGF0aWMgc3RydWN0IHN5c2NhbGxfaGVscGVyX2RhdGEgbXFfc3lzY2FsbHNb XSA9IHsNCiAjaWZkZWYgQ09NUEFUX0ZSRUVCU0QzMg0KICNpbmNsdWRlIDxj b21wYXQvZnJlZWJzZDMyL2ZyZWVic2QzMi5oPg0KICNpbmNsdWRlIDxjb21w YXQvZnJlZWJzZDMyL2ZyZWVic2QzMl9wcm90by5oPg0KKyNpbmNsdWRlIDxj b21wYXQvZnJlZWJzZDMyL2ZyZWVic2QzMl9zaWduYWwuaD4NCiAjaW5jbHVk ZSA8Y29tcGF0L2ZyZWVic2QzMi9mcmVlYnNkMzJfc3lzY2FsbC5oPg0KICNp bmNsdWRlIDxjb21wYXQvZnJlZWJzZDMyL2ZyZWVic2QzMl91dGlsLmg+DQog DQpAQCAtMjc2MywxMiArMjc3NCwzMCBAQCBmcmVlYnNkMzJfa21xX3RpbWVk cmVjZWl2ZShzdHJ1Y3QgdGhyZWFkICp0ZCwNCiAJcmV0dXJuIChlcnJvcik7 DQogfQ0KIA0KK2ludA0KK2ZyZWVic2QzMl9rbXFfbm90aWZ5KHN0cnVjdCB0 aHJlYWQgKnRkLCBzdHJ1Y3QgZnJlZWJzZDMyX2ttcV9ub3RpZnlfYXJncyAq dWFwKQ0KK3sNCisJc3RydWN0IHNpZ2V2ZW50IGV2Ow0KKwlzdHJ1Y3Qgc2ln ZXZlbnQzMiBldjMyOw0KKwlpbnQgZXJyb3I7DQorDQorCWlmICh1YXAtPnNp Z2V2ICE9IE5VTEwpIHsNCisJCWVycm9yID0gY29weWluKHVhcC0+c2lnZXYs ICZldjMyLCBzaXplb2YoZXYzMikpOw0KKwkJaWYgKGVycm9yICE9IDApDQor CQkJcmV0dXJuIChlcnJvcik7DQorCQllcnJvciA9IGNvbnZlcnRfc2lnZXZl bnQzMigmZXYzMiwgJmV2KTsNCisJCWlmIChlcnJvciAhPSAwKQ0KKwkJCXJl dHVybiAoZXJyb3IpOw0KKwl9DQorCXJldHVybiAoa2Vybl9rbXFfbm90aWZ5 KHRkLCB1YXAtPm1xZCwgJmV2KSk7DQorfQ0KKw0KIHN0YXRpYyBzdHJ1Y3Qg c3lzY2FsbF9oZWxwZXJfZGF0YSBtcTMyX3N5c2NhbGxzW10gPSB7DQogCVNZ U0NBTEwzMl9JTklUX0hFTFBFUihmcmVlYnNkMzJfa21xX29wZW4pLA0KIAlT WVNDQUxMMzJfSU5JVF9IRUxQRVIoZnJlZWJzZDMyX2ttcV9zZXRhdHRyKSwN CiAJU1lTQ0FMTDMyX0lOSVRfSEVMUEVSKGZyZWVic2QzMl9rbXFfdGltZWRz ZW5kKSwNCiAJU1lTQ0FMTDMyX0lOSVRfSEVMUEVSKGZyZWVic2QzMl9rbXFf dGltZWRyZWNlaXZlKSwNCi0JU1lTQ0FMTDMyX0lOSVRfSEVMUEVSX0NPTVBB VChrbXFfbm90aWZ5KSwNCisJU1lTQ0FMTDMyX0lOSVRfSEVMUEVSKGZyZWVi c2QzMl9rbXFfbm90aWZ5KSwNCiAJU1lTQ0FMTDMyX0lOSVRfSEVMUEVSX0NP TVBBVChrbXFfdW5saW5rKSwNCiAJU1lTQ0FMTF9JTklUX0xBU1QNCiB9Ow0K ZGlmZiAtLWdpdCBhL3N5cy9rZXJuL3Zmc19haW8uYyBiL3N5cy9rZXJuL3Zm c19haW8uYw0KaW5kZXggNWZiOTM0MS4uODYyNDQzYyAxMDA2NDQNCi0tLSBh L3N5cy9rZXJuL3Zmc19haW8uYw0KKysrIGIvc3lzL2tlcm4vdmZzX2Fpby5j DQpAQCAtMjc1NSwzMSArMjc1NSw2IEBAIGFpb2NiMzJfY29weWluX29sZF9z aWdldmVudChzdHJ1Y3QgYWlvY2IgKnVqb2IsIHN0cnVjdCBhaW9jYiAqa2pv YikNCiB9DQogDQogc3RhdGljIGludA0KLWNvbnZlcnRfc2lnZXZlbnQzMihz dHJ1Y3Qgc2lnZXZlbnQzMiAqc2lnMzIsIHN0cnVjdCBzaWdldmVudCAqc2ln KQ0KLXsNCi0NCi0JQ1AoKnNpZzMyLCAqc2lnLCBzaWdldl9ub3RpZnkpOw0K LQlzd2l0Y2ggKHNpZy0+c2lnZXZfbm90aWZ5KSB7DQotCWNhc2UgU0lHRVZf Tk9ORToNCi0JCWJyZWFrOw0KLQljYXNlIFNJR0VWX1RIUkVBRF9JRDoNCi0J CUNQKCpzaWczMiwgKnNpZywgc2lnZXZfbm90aWZ5X3RocmVhZF9pZCk7DQot CQkvKiBGQUxMVEhST1VHSCAqLw0KLQljYXNlIFNJR0VWX1NJR05BTDoNCi0J CUNQKCpzaWczMiwgKnNpZywgc2lnZXZfc2lnbm8pOw0KLQkJYnJlYWs7DQot CWNhc2UgU0lHRVZfS0VWRU5UOg0KLQkJQ1AoKnNpZzMyLCAqc2lnLCBzaWdl dl9ub3RpZnlfa3F1ZXVlKTsNCi0JCUNQKCpzaWczMiwgKnNpZywgc2lnZXZf bm90aWZ5X2tldmVudF9mbGFncyk7DQotCQlQVFJJTl9DUCgqc2lnMzIsICpz aWcsIHNpZ2V2X3ZhbHVlLnNpdmFsX3B0cik7DQotCQlicmVhazsNCi0JZGVm YXVsdDoNCi0JCXJldHVybiAoRUlOVkFMKTsNCi0JfQ0KLQlyZXR1cm4gKDAp Ow0KLX0NCi0NCi1zdGF0aWMgaW50DQogYWlvY2IzMl9jb3B5aW4oc3RydWN0 IGFpb2NiICp1am9iLCBzdHJ1Y3QgYWlvY2IgKmtqb2IpDQogew0KIAlzdHJ1 Y3QgYWlvY2IzMiBqb2IzMjsNCmRpZmYgLS1naXQgYS9zeXMvc3lzL3N5c2Nh bGxzdWJyLmggYi9zeXMvc3lzL3N5c2NhbGxzdWJyLmgNCmluZGV4IDc1Mjc4 YzMuLmUxOGM3MzUgMTAwNjQ0DQotLS0gYS9zeXMvc3lzL3N5c2NhbGxzdWJy LmgNCisrKyBiL3N5cy9zeXMvc3lzY2FsbHN1YnIuaA0KQEAgLTIyOCw2ICsy MjgsMTMgQEAgaW50CWtlcm5fc3ltbGluayhzdHJ1Y3QgdGhyZWFkICp0ZCwg Y2hhciAqcGF0aCwgY2hhciAqbGluaywNCiAJICAgIGVudW0gdWlvX3NlZyBz ZWdmbGcpOw0KIGludAlrZXJuX3N5bWxpbmthdChzdHJ1Y3QgdGhyZWFkICp0 ZCwgY2hhciAqcGF0aDEsIGludCBmZCwgY2hhciAqcGF0aDIsDQogCSAgICBl bnVtIHVpb19zZWcgc2VnZmxnKTsNCitpbnQJa2Vybl9rdGltZXJfY3JlYXRl KHN0cnVjdCB0aHJlYWQgKnRkLCBjbG9ja2lkX3QgY2xvY2tfaWQsDQorCSAg ICBzdHJ1Y3Qgc2lnZXZlbnQgKmV2cCwgaW50ICp0aW1lcmlkLCBpbnQgcHJl c2V0X2lkKTsNCitpbnQJa2Vybl9rdGltZXJfZGVsZXRlKHN0cnVjdCB0aHJl YWQgKiwgaW50KTsNCitpbnQJa2Vybl9rdGltZXJfc2V0dGltZShzdHJ1Y3Qg dGhyZWFkICp0ZCwgaW50IHRpbWVyX2lkLCBpbnQgZmxhZ3MsDQorCSAgICBz dHJ1Y3QgaXRpbWVyc3BlYyAqdmFsLCBzdHJ1Y3QgaXRpbWVyc3BlYyAqb3Zh bCk7DQoraW50CWtlcm5fa3RpbWVyX2dldHRpbWUoc3RydWN0IHRocmVhZCAq dGQsIGludCB0aW1lcl9pZCwNCisJICAgIHN0cnVjdCBpdGltZXJzcGVjICp2 YWwpOw0KIGludAlrZXJuX3Rocl9uZXcoc3RydWN0IHRocmVhZCAqdGQsIHN0 cnVjdCB0aHJfcGFyYW0gKnBhcmFtKTsNCiBpbnQJa2Vybl90aHJfc3VzcGVu ZChzdHJ1Y3QgdGhyZWFkICp0ZCwgc3RydWN0IHRpbWVzcGVjICp0c3ApOw0K IGludAlrZXJuX3RydW5jYXRlKHN0cnVjdCB0aHJlYWQgKnRkLCBjaGFyICpw YXRoLCBlbnVtIHVpb19zZWcgcGF0aHNlZywNCg== --8323328-1230774450-1374395034=:23067--