threads/180652: compat32 problem in clock_getcpuclockid2

Petr Salinger Petr.Salinger at seznam.cz
Sun Jul 21 08:30:02 UTC 2013


The following reply was made to PR threads/180652; it has been noted by GNATS.

From: Petr Salinger <Petr.Salinger at seznam.cz>
To: Konstantin Belousov <kostikbel at gmail.com>
Cc: freebsd-gnats-submit at 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: <alpine.LNX.2.00.1307211023540.23067 at contest.felk.cvut.cz>
 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--


More information about the freebsd-threads mailing list