Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751407AbWCYNwp (ORCPT ); Sat, 25 Mar 2006 08:52:45 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751410AbWCYNwp (ORCPT ); Sat, 25 Mar 2006 08:52:45 -0500 Received: from lirs02.phys.au.dk ([130.225.28.43]:25784 "EHLO lirs02.phys.au.dk") by vger.kernel.org with ESMTP id S1751407AbWCYNwo (ORCPT ); Sat, 25 Mar 2006 08:52:44 -0500 Date: Sat, 25 Mar 2006 14:52:27 +0100 (MET) From: Esben Nielsen X-X-Sender: simlo@lifa03.phys.au.dk To: Ingo Molnar , ThomasGleixner , LKML Subject: Comment on 2.6.16-rt6 PI Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="202006785-1655826578-1143294747=:23241" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 28769 Lines: 494 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --202006785-1655826578-1143294747=:23241 Content-Type: TEXT/PLAIN; charset=US-ASCII 1) I found a bug adjust_pi_chain(): if (top_waiter) plist_del(&top_waiter->pi_list_entry, &owner->pi_waiters); if (waiter && waiter == rt_mutex_top_waiter(lock)) { waiter->pi_list_entry.prio = waiter->task->prio; plist_add(&waiter->pi_list_entry, &owner->pi_waiters); } In my test setup this leaves the owner->pi_waiters empty even though there are waiters. I tried to move the removal of top_waiter inside the second if statement but then a lot of other tests failed. I don't have time to fix it. 2) Some time ago I got started on a patch which I consider a lot simpler than the approach in -rt6, which I consider _very_ complicated. My patch doesn't work yet but I will send it to you anyway. My machine UP boots hangs in "Letting udev process events...". I think it is because I tried to switch around xchg(¤t->state,x) stuff which I don't feel too secure about. I don't have time to work on it these days - barely time to send this mail, actually :-( The idea I use is to delay the adjust_pi_chain() until all spin locks are released - i.e. just before schedule() is called in the lock operation or on the way out when the task is signalled or times out. Only two spin locks will ever be held at the same time, namely sometask->pi_lock or somelock->wait_lock. All spinlocks are released before the next iteration - which is good for latencies and makes far less deadlock issues to consider. The patch is against 2.6.16-rt1. Esben --202006785-1655826578-1143294747=:23241 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="pi.patch2" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="pi.patch2" ZGlmZiAtdXByIGxpbnV4LTIuNi4xNi1ydDEvaW5jbHVkZS9saW51eC9ydG11 dGV4LmggbGludXgtMi42LjE2LXJ0MS5waXBhdGNoL2luY2x1ZGUvbGludXgv cnRtdXRleC5oDQotLS0gbGludXgtMi42LjE2LXJ0MS9pbmNsdWRlL2xpbnV4 L3J0bXV0ZXguaAkyMDA2LTAzLTIwIDIyOjIyOjEwLjAwMDAwMDAwMCArMDEw MA0KKysrIGxpbnV4LTIuNi4xNi1ydDEucGlwYXRjaC9pbmNsdWRlL2xpbnV4 L3J0bXV0ZXguaAkyMDA2LTAzLTIwIDIyOjI1OjIzLjAwMDAwMDAwMCArMDEw MA0KQEAgLTEyNiwxNCArMTI2LDExIEBAIGV4dGVybiB2b2lkIHJ0X211dGV4 X2luaXRfcHJveHlfbG9ja2VkKHMNCiAgZG8gewkJCQkJCQkJCVwNCiAJc3Bp bl9sb2NrX2luaXQoJnAtPnBpX2xvY2spOwkJCQkJXA0KIAlwbGlzdF9oZWFk X2luaXQoJnAtPnBpX3dhaXRlcnMsICZwLT5waV9sb2NrKTsJCQlcDQotCXAt PnBpX2Jsb2NrZWRfb24gPSBOVUxMOwkJCQkJXA0KLQlwLT5waV9sb2NrZWRf YnkgPSBOVUxMOwkJCQkJCVwNCi0JSU5JVF9MSVNUX0hFQUQoJnAtPnBpX2xv Y2tfY2hhaW4pOwkJCQlcDQorICAgICAgICBwLT5waV9ibG9ja2VkX29uID0g TlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KICB9IHdoaWxlICgwKQ0KICMgZGVmaW5lIElOSVRfUlRfTVVURVhFUyh0 c2spCQkJCQkJXA0KIAkucGlfd2FpdGVycwk9IFBMSVNUX0hFQURfSU5JVCh0 c2sucGlfd2FpdGVycywgdHNrLnBpX2xvY2spLAlcDQotCS5waV9sb2NrCT0g UkFXX1NQSU5fTE9DS19VTkxPQ0tFRCwJCQlcDQotCS5waV9sb2NrX2NoYWlu CT0gTElTVF9IRUFEX0lOSVQodHNrLnBpX2xvY2tfY2hhaW4pLA0KKwkucGlf bG9jawk9IFJBV19TUElOX0xPQ0tfVU5MT0NLRUQNCiAjZWxzZQ0KICMgZGVm aW5lIHJ0X211dGV4X2luaXRfdGFzayhwKQkJZG8geyB9IHdoaWxlICgwKQ0K ICMgZGVmaW5lIElOSVRfUlRfTVVURVhFUyh0c2spDQpkaWZmIC11cHIgbGlu dXgtMi42LjE2LXJ0MS9pbmNsdWRlL2xpbnV4L3NjaGVkLmggbGludXgtMi42 LjE2LXJ0MS5waXBhdGNoL2luY2x1ZGUvbGludXgvc2NoZWQuaA0KLS0tIGxp bnV4LTIuNi4xNi1ydDEvaW5jbHVkZS9saW51eC9zY2hlZC5oCTIwMDYtMDMt MjAgMjI6MjI6MTAuMDAwMDAwMDAwICswMTAwDQorKysgbGludXgtMi42LjE2 LXJ0MS5waXBhdGNoL2luY2x1ZGUvbGludXgvc2NoZWQuaAkyMDA2LTAzLTIw IDIyOjI1OjIzLjAwMDAwMDAwMCArMDEwMA0KQEAgLTk4Myw5ICs5ODMsNiBA QCBzdHJ1Y3QgdGFza19zdHJ1Y3Qgew0KIAlzdHJ1Y3QgcGxpc3RfaGVhZCBw aV93YWl0ZXJzOw0KIAkvKiBEZWFkbG9jayBkZXRlY3Rpb24gYW5kIHByaW9y aXR5IGluaGVyaXRhbmNlIGhhbmRsaW5nICovDQogCXN0cnVjdCBydF9tdXRl eF93YWl0ZXIgKnBpX2Jsb2NrZWRfb247DQotCS8qIFBJIGxvY2tpbmcgaGVs cGVycyAqLw0KLQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpX2xvY2tlZF9ieTsN Ci0Jc3RydWN0IGxpc3RfaGVhZCBwaV9sb2NrX2NoYWluOw0KICNlbmRpZg0K IA0KICNpZmRlZiBDT05GSUdfREVCVUdfTVVURVhFUw0KZGlmZiAtdXByIGxp bnV4LTIuNi4xNi1ydDEvaW5jbHVkZS9saW51eC9zcGlubG9ja19hcGlfc21w LmggbGludXgtMi42LjE2LXJ0MS5waXBhdGNoL2luY2x1ZGUvbGludXgvc3Bp bmxvY2tfYXBpX3NtcC5oDQotLS0gbGludXgtMi42LjE2LXJ0MS9pbmNsdWRl L2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAuaAkyMDA2LTAzLTIwIDIyOjIyOjEw LjAwMDAwMDAwMCArMDEwMA0KKysrIGxpbnV4LTIuNi4xNi1ydDEucGlwYXRj aC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAuaAkyMDA2LTAzLTIw IDIyOjI1OjIzLjAwMDAwMDAwMCArMDEwMA0KQEAgLTM5LDYgKzM5LDcgQEAg aW50IF9fbG9ja2Z1bmMgX3Jhd19yZWFkX3RyeWxvY2socmF3X3J3bA0KIGlu dCBfX2xvY2tmdW5jIF9yYXdfd3JpdGVfdHJ5bG9jayhyYXdfcndsb2NrX3Qg KmxvY2spOw0KIGludCBfX2xvY2tmdW5jIF9yYXdfc3Bpbl90cnlsb2NrX2ly cXNhdmUocmF3X3NwaW5sb2NrX3QgKmxvY2ssDQogCQkJCQkgdW5zaWduZWQg bG9uZyAqZmxhZ3MpOw0KK2ludCBfX2xvY2tmdW5jIF9yYXdfc3Bpbl90cnls b2NrX2lycShyYXdfc3BpbmxvY2tfdCAqbG9jayk7DQogaW50IF9fbG9ja2Z1 bmMgX3Jhd19zcGluX3RyeWxvY2tfYmgocmF3X3NwaW5sb2NrX3QgKmxvY2sp Ow0KIHZvaWQgX19sb2NrZnVuYyBfcmF3X3NwaW5fdW5sb2NrKHJhd19zcGlu bG9ja190ICpsb2NrKQkJX19yZWxlYXNlcyhyYXdfc3BpbmxvY2tfdCk7DQog dm9pZCBfX2xvY2tmdW5jIF9yYXdfc3Bpbl91bmxvY2tfbm9fcmVzY2hlZChy YXdfc3BpbmxvY2tfdCAqbG9jaykgX19yZWxlYXNlcyhyYXdfc3BpbmxvY2tf dCk7DQpkaWZmIC11cHIgbGludXgtMi42LjE2LXJ0MS9pbmNsdWRlL2xpbnV4 L3NwaW5sb2NrX2FwaV91cC5oIGxpbnV4LTIuNi4xNi1ydDEucGlwYXRjaC9p bmNsdWRlL2xpbnV4L3NwaW5sb2NrX2FwaV91cC5oDQotLS0gbGludXgtMi42 LjE2LXJ0MS9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX2FwaV91cC5oCTIwMDYt MDMtMjAgMjI6MjI6MTAuMDAwMDAwMDAwICswMTAwDQorKysgbGludXgtMi42 LjE2LXJ0MS5waXBhdGNoL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfYXBpX3Vw LmgJMjAwNi0wMy0yMCAyMjoyNToyMy4wMDAwMDAwMDAgKzAxMDANCkBAIC0z OSw2ICszOSw5IEBADQogI2RlZmluZSBfX1RSWUxPQ0tfSVJRU0FWRShsb2Nr LCBmbGFncykgXA0KIAkoeyByYXdfbG9jYWxfaXJxX3NhdmUoKihmbGFncykp OyBfX0xPQ0sobG9jayk7IDE7IH0pDQogDQorI2RlZmluZSBfX1RSWUxPQ0tf SVJRKGxvY2spIFwNCisJKHsgcmF3X2xvY2FsX2lycV9kaXNhYmxlKCk7IF9f TE9DSyhsb2NrKTsgMTsgfSkNCisNCiAjZGVmaW5lIF9yYXdfc3Bpbl90cnls b2NrX2lycXNhdmUobG9jaywgZmxhZ3MpCV9fVFJZTE9DS19JUlFTQVZFKGxv Y2ssIGZsYWdzKQ0KIA0KICNkZWZpbmUgX19VTkxPQ0sobG9jaykgXA0KQEAg LTc1LDYgKzc4LDcgQEANCiAjZGVmaW5lIF9yYXdfcmVhZF90cnlsb2NrX2Jo KGxvY2spCQkoeyBfX0xPQ0tfQkgobG9jayk7IDE7IH0pDQogI2RlZmluZSBf cmF3X3dyaXRlX3RyeWxvY2tfYmgobG9jaykJCSh7IF9fTE9DS19CSChsb2Nr KTsgMTsgfSkNCiAjZGVmaW5lIF9yYXdfc3Bpbl90cnlsb2NrX2lycXNhdmUo bG9jaywgZmxhZ3MpCV9fVFJZTE9DS19JUlFTQVZFKGxvY2ssIGZsYWdzKQ0K KyNkZWZpbmUgX3Jhd19zcGluX3RyeWxvY2tfaXJxKGxvY2spCSAgICAgICAg X19UUllMT0NLX0lSUShsb2NrKQ0KICNkZWZpbmUgX3Jhd19yZWFkX3RyeWxv Y2tfaXJxc2F2ZShsb2NrLCBmbGFncykJX19UUllMT0NLX0lSUVNBVkUobG9j aywgZmxhZ3MpDQogI2RlZmluZSBfcmF3X3JlYWRfdHJ5bG9ja19pcnFzYXZl KGxvY2ssIGZsYWdzKQlfX1RSWUxPQ0tfSVJRU0FWRShsb2NrLCBmbGFncykN CiAjZGVmaW5lIF9yYXdfc3Bpbl91bmxvY2sobG9jaykJCQlfX1VOTE9DSyhs b2NrKQ0KZGlmZiAtdXByIGxpbnV4LTIuNi4xNi1ydDEva2VybmVsL3J0bXV0 ZXgtZGVidWcuYyBsaW51eC0yLjYuMTYtcnQxLnBpcGF0Y2gva2VybmVsL3J0 bXV0ZXgtZGVidWcuYw0KLS0tIGxpbnV4LTIuNi4xNi1ydDEva2VybmVsL3J0 bXV0ZXgtZGVidWcuYwkyMDA2LTAzLTIwIDIyOjIyOjEwLjAwMDAwMDAwMCAr MDEwMA0KKysrIGxpbnV4LTIuNi4xNi1ydDEucGlwYXRjaC9rZXJuZWwvcnRt dXRleC1kZWJ1Zy5jCTIwMDYtMDMtMjEgMDA6MTE6NDAuMDAwMDAwMDAwICsw MTAwDQpAQCAtMzg1LDkgKzM4NSw3IEBAIHJlc3RhcnQ6DQogdm9pZCBydF9t dXRleF9kZWJ1Z190YXNrX2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2sp DQogew0KIAlXQVJOX09OKCFwbGlzdF9oZWFkX2VtcHR5KCZ0c2stPnBpX3dh aXRlcnMpKTsNCi0JV0FSTl9PTighbGlzdF9lbXB0eSgmdHNrLT5waV9sb2Nr X2NoYWluKSk7DQogCVdBUk5fT04odHNrLT5waV9ibG9ja2VkX29uKTsNCi0J V0FSTl9PTih0c2stPnBpX2xvY2tlZF9ieSk7DQogfQ0KIA0KIC8qDQpAQCAt NDAyLDYgKzQwMCw3IEBAIHZvaWQgZGVidWdfcnRfbXV0ZXhfZGVhZGxvY2so aW50IGRldGVjdCwNCiAJaWYgKCFydF90cmFjZV9vbiB8fCBkZXRlY3QpDQog CQlyZXR1cm47DQogDQorCXNwaW5fbG9jaygmdHJhY2Vsb2NrKTsNCiAJVFJB Q0VfT0ZGKCk7DQogDQogCXByaW50aygiXG49PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7DQpAQCAtNDMwLDcgKzQy OSw2IEBAIHZvaWQgZGVidWdfcnRfbXV0ZXhfZGVhZGxvY2soaW50IGRldGVj dCwNCiAJcnRfbXV0ZXhfc2hvd19hbGxfbG9ja3MoKTsNCiAJcHJpbnRrKCJb IHR1cm5pbmcgb2ZmIGRlYWRsb2NrIGRldGVjdGlvbi4iDQogCSAgICAgICAi UGxlYXNlIHJlcG9ydCB0aGlzIHRyYWNlLiBdXG5cbiIpOw0KLQlyYXdfbG9j YWxfaXJxX2Rpc2FibGUoKTsNCiB9DQogDQogdm9pZCBkZWJ1Z19ydF9tdXRl eF9sb2NrKHN0cnVjdCBydF9tdXRleCAqbG9jayBfX0lQX0RFQ0xfXykNCk9u bHkgaW4gbGludXgtMi42LjE2LXJ0MS5waXBhdGNoL2tlcm5lbDogcnRtdXRl eC1kZWJ1Zy5jfg0KZGlmZiAtdXByIGxpbnV4LTIuNi4xNi1ydDEva2VybmVs L3J0bXV0ZXguYyBsaW51eC0yLjYuMTYtcnQxLnBpcGF0Y2gva2VybmVsL3J0 bXV0ZXguYw0KLS0tIGxpbnV4LTIuNi4xNi1ydDEva2VybmVsL3J0bXV0ZXgu YwkyMDA2LTAzLTIwIDIyOjIyOjEwLjAwMDAwMDAwMCArMDEwMA0KKysrIGxp bnV4LTIuNi4xNi1ydDEucGlwYXRjaC9rZXJuZWwvcnRtdXRleC5jCTIwMDYt MDMtMjEgMDA6MDE6MzMuMDAwMDAwMDAwICswMTAwDQpAQCAtMTA1LDEyNiAr MTA1LDk0IEBAIHN0YXRpYyB2b2lkIHJ0X211dGV4X3VuZG9fcGkodGFza190 ICp0YXMNCiANCiAvKg0KICAqIEFkanVzdCB0aGUgcHJpb3JpdHkgY2hhaW4u IEFsc28gdXNlZCBmb3IgZGVhZGxvY2sgZGV0ZWN0aW9uLg0KKyAqIERlY3Jl YXNlcyB0YXNrJ3MgdXNhZ2UgYnkgb25lIC0gbWF5IHRodXMgZnJlZSB0aGUg dGFzay4NCisgKiBSZXR1cm5zIDAgb3IgLUVERUFETEsuDQogICovDQotc3Rh dGljIGludCBhZGp1c3RfcHJpb19jaGFpbihzdHJ1Y3QgcnRfbXV0ZXggKmFj dF9sb2NrLA0KLQkJCSAgICAgc3RydWN0IHJ0X211dGV4X3dhaXRlciAqd2Fp dGVyLA0KLQkJCSAgICAgc3RydWN0IHJ0X211dGV4X3dhaXRlciAqdG9wX3dh aXRlciwNCi0JCQkgICAgIGludCBkZWFkbG9ja19kZXRlY3QgX19JUF9ERUNM X18pDQorc3RhdGljIGludCBhZGp1c3RfcHJpb19jaGFpbih0YXNrX3QgKnRh c2ssDQorCQkJICAgICBpbnQgZGVhZGxvY2tfZGV0ZWN0LA0KKwkJCSAgICAg c3RydWN0IHJ0X211dGV4ICphY3RfbG9jayBfX0lQX0RFQ0xfXykNCiB7DQot CUxJU1RfSEVBRChsb2NrX2NoYWluKTsNCiAJc3RydWN0IHJ0X211dGV4ICps b2NrID0gYWN0X2xvY2s7DQotCXRhc2tfdCAqb3duZXIsICp0YXNrID0gY3Vy cmVudDsNCisJc3RydWN0IHJ0X211dGV4X3dhaXRlciAqd2FpdGVyLCAqdG9w X3dhaXRlcjsNCisJdGFza190ICpvd25lcjsNCisJdW5zaWduZWQgbG9uZyBm bGFnczsNCisNCiAJaW50IGRldGVjdF9kZWFkbG9jaywgcmV0ID0gMDsNCiAN CiAJZGV0ZWN0X2RlYWRsb2NrID0gZGVidWdfcnRfbXV0ZXhfZGV0ZWN0X2Rl YWRsb2NrKGRlYWRsb2NrX2RldGVjdCk7DQogDQogCWZvciAoOzspIHsNCi0J CW93bmVyID0gcnRfbXV0ZXhfb3duZXIobG9jayk7DQotCQl3aGlsZSghX3Jh d19zcGluX3RyeWxvY2soJm93bmVyLT5waV9sb2NrKSkgew0KLQ0KLQkJCWlm IChvd25lci0+cGlfbG9ja2VkX2J5ID09IHRhc2spIHsNCi0JCQkJZGVidWdf cnRfbXV0ZXhfZGVhZGxvY2soZGVhZGxvY2tfZGV0ZWN0LA0KLQkJCQkJCQlh Y3RfbG9jaywgbG9jaywgaXApOw0KLQkJCQlyZXQgPSBkZWFkbG9ja19kZXRl Y3QgPyAtRURFQURMSyA6IDA7DQotCQkJCWdvdG8gb3V0X3VubG9ja19jaGFp bjsNCi0JCQl9DQotCQkJY3B1X3JlbGF4KCk7DQorCQlpZih0YXNrPT1jdXJy ZW50KSB7DQorCQkJZGVidWdfcnRfbXV0ZXhfZGVhZGxvY2soZGVhZGxvY2tf ZGV0ZWN0LA0KKwkJCQkJCWFjdF9sb2NrLCBsb2NrLCBpcCk7DQorDQorCQkJ cHV0X3Rhc2tfc3RydWN0KHRhc2spOw0KKwkJCQkNCisJCQlyZXR1cm4gZGVh ZGxvY2tfZGV0ZWN0ID8gLUVERUFETEsgOiAwOw0KIAkJfQ0KLQkJQlVHX09O KG93bmVyLT5waV9sb2NrZWRfYnkpOw0KLQkJb3duZXItPnBpX2xvY2tlZF9i eSA9IHRhc2s7DQorCXJldHJ5Og0KKwkJX3Jhd19zcGluX2xvY2soJnRhc2st PnBpX2xvY2spOw0KKwkJYWRqdXN0X3ByaW8odGFzayk7DQorCQl3YWl0ZXIg PSB0YXNrLT5waV9ibG9ja2VkX29uOw0KKwkJaWYoICF3YWl0ZXIgKSANCisJ CQlicmVhazsNCiANCi0JCWlmIChsaWtlbHkoZGV0ZWN0X2RlYWRsb2NrID49 IDApKSB7DQotCQkJaWYgKHRvcF93YWl0ZXIpDQotCQkJCXBsaXN0X2RlbCgm dG9wX3dhaXRlci0+cGlfbGlzdF9lbnRyeSwNCi0JCQkJCSAgJm93bmVyLT5w aV93YWl0ZXJzKTsNCisJCWlmKCAhZGV0ZWN0X2RlYWRsb2NrICYmDQorCQkg ICAgd2FpdGVyLT5saXN0X2VudHJ5LnByaW8gPT0gdGFzay0+cHJpbyAmJg0K KwkJICAgIHdhaXRlci0+cGlfbGlzdF9lbnRyeS5wcmlvID09IHdhaXRlci0+ bGlzdF9lbnRyeS5wcmlvICkNCisJCQlicmVhazsNCiANCi0JCQlpZiAod2Fp dGVyICYmIHdhaXRlciA9PSBydF9tdXRleF9maXJzdF93YWl0ZXIobG9jaykp IHsNCi0JCQkJd2FpdGVyLT5waV9saXN0X2VudHJ5LnByaW8gPSB3YWl0ZXIt PnRhc2stPnByaW87DQotCQkJCXBsaXN0X2FkZCgmd2FpdGVyLT5waV9saXN0 X2VudHJ5LA0KLQkJCQkJICAmb3duZXItPnBpX3dhaXRlcnMpOw0KLQkJCX0N Ci0JCQlhZGp1c3RfcHJpbyhvd25lcik7DQorCQkNCisJCWxvY2sgPSB3YWl0 ZXItPmxvY2s7DQorCQlpZiggIXNwaW5fdHJ5bG9ja19pcnFzYXZlKCZsb2Nr LT53YWl0X2xvY2ssIGZsYWdzKSApIHsNCisJCQlfcmF3X3NwaW5fdW5sb2Nr KCZ0YXNrLT5waV9sb2NrKTsNCisJCQlnb3RvIHJldHJ5Ow0KIAkJfQ0KIA0K LQkJLyoNCi0JCSAqIFdoZW4gdGhlIG93bmVyIGlzIGJsb2NrZWQgb24gYSBs b2NrLCB0cnkgdG8gbG9jaw0KLQkJICogdGhlIGxvY2suDQotCQkgKi8NCi0J CWZvciAoOzspIHsNCi0JCQl3YWl0ZXIgPSBvd25lci0+cGlfYmxvY2tlZF9v bjsNCi0JCQlpZiAoIXdhaXRlcikNCi0JCQkJZ290byBvdXRfdW5sb2NrX293 bmVyOw0KLQkJCWxvY2sgPSB3YWl0ZXItPmxvY2s7DQotDQotCQkJaWYgKHVu bGlrZWx5KGxvY2sgPT0gYWN0X2xvY2sgfHwNCi0JCQkJcnRfbXV0ZXhfb3du ZXIobG9jaykgPT0gdGFzaykpIHsNCi0JCQkJZGVidWdfcnRfbXV0ZXhfZGVh ZGxvY2soZGVhZGxvY2tfZGV0ZWN0LA0KLQkJCQkJCQlhY3RfbG9jaywgbG9j aywgaXApOw0KLQkJCQlyZXQgPSBkZWFkbG9ja19kZXRlY3QgPyAtRURFQURM SyA6IDA7DQotCQkJCWdvdG8gb3V0X3VubG9ja19vd25lcjsNCi0JCQl9DQot CQkJaWYgKF9yYXdfc3Bpbl90cnlsb2NrKCZsb2NrLT53YWl0X2xvY2spKQ0K LQkJCQlicmVhazsNCisJCXRvcF93YWl0ZXIgPSBydF9tdXRleF9maXJzdF93 YWl0ZXIobG9jayk7DQogDQotCQkJb3duZXItPnBpX2xvY2tlZF9ieSA9IE5V TEw7DQotCQkJX3Jhd19zcGluX3VubG9jaygmb3duZXItPnBpX2xvY2spOw0K LQkJCWNwdV9yZWxheCgpOw0KLQkJCV9yYXdfc3Bpbl9sb2NrKCZvd25lci0+ cGlfbG9jayk7DQotCQkJQlVHX09OKG93bmVyLT5waV9sb2NrZWRfYnkpOw0K LQkJCW93bmVyLT5waV9sb2NrZWRfYnkgPSB0YXNrOw0KLQkJfQ0KLQkJV0FS Tl9PTighbGlzdF9lbXB0eSgmb3duZXItPnBpX2xvY2tfY2hhaW4pKTsNCi0J CWxpc3RfYWRkKCZvd25lci0+cGlfbG9ja19jaGFpbiwgJmxvY2tfY2hhaW4p Ow0KKwkJcGxpc3RfZGVsKCZ3YWl0ZXItPmxpc3RfZW50cnksICZsb2NrLT53 YWl0X2xpc3QpOw0KKwkJd2FpdGVyLT5saXN0X2VudHJ5LnByaW8gPSB0YXNr LT5wcmlvOw0KKwkJcGxpc3RfYWRkKCZ3YWl0ZXItPmxpc3RfZW50cnksICZs b2NrLT53YWl0X2xpc3QpOw0KKwkgICAgICAgDQorCQlfcmF3X3NwaW5fdW5s b2NrKCZ0YXNrLT5waV9sb2NrKTsNCiANCiAJCW93bmVyID0gcnRfbXV0ZXhf b3duZXIobG9jayk7DQorCQlCVUdfT04oIW93bmVyKTsNCisJCUJVR19PTihv d25lcj09dGFzayk7DQorCQlpZih3YWl0ZXIgPT0gcnRfbXV0ZXhfZmlyc3Rf d2FpdGVyKGxvY2spKSB7DQorCQkJX3Jhd19zcGluX2xvY2soJm93bmVyLT5w aV9sb2NrKTsNCisJCQlwbGlzdF9kZWwoJnRvcF93YWl0ZXItPnBpX2xpc3Rf ZW50cnksIA0KKwkJCQkJICAmb3duZXItPnBpX3dhaXRlcnMpOw0KIA0KLQkJ aWYgKHVubGlrZWx5KG93bmVyID09IHRhc2sgfHwgb3duZXItPnBpX2xvY2tl ZF9ieSA9PSB0YXNrKSkgew0KLQkJCWRlYnVnX3J0X211dGV4X2RlYWRsb2Nr KGRlYWRsb2NrX2RldGVjdCwgYWN0X2xvY2ssDQotCQkJCQkJbG9jaywgaXAp Ow0KLQkJCXJldCA9IGRlYWRsb2NrX2RldGVjdCA/IC1FREVBRExLIDogMDsN Ci0JCQlnb3RvIG91dF91bmxvY2tfY2hhaW47DQorCQkJd2FpdGVyLT5waV9s aXN0X2VudHJ5LnByaW8gPSB3YWl0ZXItPmxpc3RfZW50cnkucHJpbzsNCisJ CQlwbGlzdF9hZGQoJndhaXRlci0+cGlfbGlzdF9lbnRyeSwgJm93bmVyLT5w aV93YWl0ZXJzKTsNCisJCQlfcmF3X3NwaW5fdW5sb2NrKCZvd25lci0+cGlf bG9jayk7DQorCQl9DQorCQllbHNlIGlmKHRvcF93YWl0ZXIgPT0gd2FpdGVy KSB7DQorCQkJLyogd2FpdGVyIGlzIG5vIGxvbmdlciB0aGUgZnJvbnRtb3N0 IHdhaXRlciAqLw0KKwkJCV9yYXdfc3Bpbl9sb2NrKCZvd25lci0+cGlfbG9j ayk7DQorCQkJcGxpc3RfZGVsKCZ3YWl0ZXItPnBpX2xpc3RfZW50cnksIA0K KwkJCQkgICZvd25lci0+cGlfd2FpdGVycyk7DQorCQkJdG9wX3dhaXRlciA9 IHJ0X211dGV4X2ZpcnN0X3dhaXRlcihsb2NrKTsNCisJCQl0b3Bfd2FpdGVy LT5waV9saXN0X2VudHJ5LnByaW8gPSANCisJCQkgIHRvcF93YWl0ZXItPmxp c3RfZW50cnkucHJpbzsNCisJCQlwbGlzdF9hZGQoJnRvcF93YWl0ZXItPnBp X2xpc3RfZW50cnksIA0KKwkJCQkgICZvd25lci0+cGlfd2FpdGVycyk7DQor CQkJX3Jhd19zcGluX3VubG9jaygmb3duZXItPnBpX2xvY2spOw0KIAkJfQ0K IA0KLQkJLyogU2tpcCB0aGlzLCB3aGVuIHdlIGp1c3QgZ28gZm9yIGRlYWRs b2NrIGRldGVjdGlvbiAqLw0KLQkJaWYgKHVubGlrZWx5KGRldGVjdF9kZWFk bG9jayA8MCkpDQotCQkJY29udGludWU7DQogDQotCQl0b3Bfd2FpdGVyID0g cnRfbXV0ZXhfZmlyc3Rfd2FpdGVyKGxvY2spOw0KKwkJZ2V0X3Rhc2tfc3Ry dWN0KG93bmVyKTsNCiANCi0JCXBsaXN0X2RlbCgmd2FpdGVyLT5saXN0X2Vu dHJ5LCAmbG9jay0+d2FpdF9saXN0KTsNCi0JCXdhaXRlci0+bGlzdF9lbnRy eS5wcmlvID0gd2FpdGVyLT50YXNrLT5wcmlvOw0KLQkJcGxpc3RfYWRkKCZ3 YWl0ZXItPmxpc3RfZW50cnksICZsb2NrLT53YWl0X2xpc3QpOw0KKwkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmbG9jay0+d2FpdF9sb2NrLGZsYWdzKTsN CiANCi0JCS8qDQotCQkgKiBXZSBjYW4gc3RvcCBoZXJlLCBpZiB0aGUgd2Fp dGVyIGlzL3dhcyBub3QgdGhlIHRvcA0KLQkJICogcHJpb3JpdHkgd2FpdGVy IGFuZCBkZWFkbG9jayBkZXRlY3Rpb24gaXMgb2ZmDQotCQkgKi8NCi0JCWlm ICh0b3Bfd2FpdGVyICE9IHdhaXRlciAmJg0KLQkJICAgIHdhaXRlciAhPSBy dF9tdXRleF9maXJzdF93YWl0ZXIobG9jaykpIHsNCi0JCQlpZiAoIWRldGVj dF9kZWFkbG9jaykNCi0JCQkJZ290byBvdXRfdW5sb2NrX2NoYWluOw0KLQkJ CWRldGVjdF9kZWFkbG9jayA9IC0xOw0KLQkJfSBlbHNlIHsNCi0JCQkvKg0K LQkJCSAqIHdhaXRlciBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIG5ldyB0b3AN Ci0JCQkgKiB3YWl0ZXIgIQ0KLQkJCSAqLw0KLQkJCXdhaXRlciA9IHJ0X211 dGV4X2ZpcnN0X3dhaXRlcihsb2NrKTsNCi0JCX0NCi0JfQ0KLSBvdXRfdW5s b2NrX293bmVyOg0KLQlvd25lci0+cGlfbG9ja2VkX2J5ID0gTlVMTDsNCi0J X3Jhd19zcGluX3VubG9jaygmb3duZXItPnBpX2xvY2spOw0KLQ0KLSBvdXRf dW5sb2NrX2NoYWluOg0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUob3du ZXIsIHRhc2ssICZsb2NrX2NoYWluLCBwaV9sb2NrX2NoYWluKSB7DQotCQl3 YWl0ZXIgPSBvd25lci0+cGlfYmxvY2tlZF9vbjsNCi0JCWxpc3RfZGVsX2lu aXQoJm93bmVyLT5waV9sb2NrX2NoYWluKTsNCi0JCUJVR19PTighb3duZXIt PnBpX2xvY2tlZF9ieSk7DQotCQlvd25lci0+cGlfbG9ja2VkX2J5ID0gTlVM TDsNCi0JCV9yYXdfc3Bpbl91bmxvY2soJndhaXRlci0+bG9jay0+d2FpdF9s b2NrKTsNCi0JCV9yYXdfc3Bpbl91bmxvY2soJm93bmVyLT5waV9sb2NrKTsN CisJCXB1dF90YXNrX3N0cnVjdCh0YXNrKTsNCisJCXRhc2sgPSBvd25lcjsN CiAJfQ0KKwkNCisJX3Jhd19zcGluX3VubG9jaygmdGFzay0+cGlfbG9jayk7 DQorCXB1dF90YXNrX3N0cnVjdCh0YXNrKTsNCiAJcmV0dXJuIHJldDsNCiB9 DQogDQpAQCAtMjM0LDE1ICsyMDIsMjAgQEAgc3RhdGljIGludCBhZGp1c3Rf cHJpb19jaGFpbihzdHJ1Y3QgcnRfbQ0KICAqIFByZXBhcmUgd2FpdGVyIGFu ZCBwcm9wYWdhdGUgcGkgY2hhaW4NCiAgKg0KICAqIFRoaXMgbXVzdCBiZSBj YWxsZWQgd2l0aCBsb2NrLT53YWl0X2xvY2sgaGVsZC4NCisgKg0KKyAqIFJl dHVybnMgb3duZXIgaWYgaXQgaXMgbmVlZGVkIHRvIGJlIGJvb3N0ZWQgd2l0 aCBhZGp1c3RfcHJpb19jaGFpbigpIGlmDQorICogaXQgaXMgaW4gaXRzZWxm IGJsb2NrZWQgb24gYSBsb2NrLiANCiAgKi8NCi1zdGF0aWMgaW50IHRhc2tf YmxvY2tzX29uX3J0X211dGV4KHN0cnVjdCBydF9tdXRleCAqbG9jaywNCi0J CQkJICAgc3RydWN0IHJ0X211dGV4X3dhaXRlciAqd2FpdGVyLA0KLQkJCQkg ICBpbnQgZGVhZGxvY2tfZGV0ZWN0IF9fSVBfREVDTF9fKQ0KK3N0YXRpYyB0 YXNrX3QgKnRhc2tfYmxvY2tzX29uX3J0X211dGV4KHN0cnVjdCBydF9tdXRl eCAqbG9jaywNCisJCQkJICAgc3RydWN0IHJ0X211dGV4X3dhaXRlciAqd2Fp dGVyDQorCQkJCSAgIF9fSVBfREVDTF9fKQ0KIHsNCi0JaW50IHJlcyA9IDA7 DQogCXN0cnVjdCBydF9tdXRleF93YWl0ZXIgKnRvcF93YWl0ZXIgPSB3YWl0 ZXI7DQorCXRhc2tfdCAqb3duZXIgPSBydF9tdXRleF9vd25lcihsb2NrKTsN CisJdGFza190ICpyZXMgPSBOVUxMOw0KIA0KIAlfcmF3X3NwaW5fbG9jaygm Y3VycmVudC0+cGlfbG9jayk7DQorCWFkanVzdF9wcmlvKGN1cnJlbnQpOw0K IAl3YWl0ZXItPnRhc2sgPSBjdXJyZW50Ow0KIAl3YWl0ZXItPmxvY2sgPSBs b2NrOw0KIAlwbGlzdF9ub2RlX2luaXQoJndhaXRlci0+bGlzdF9lbnRyeSwg Y3VycmVudC0+cHJpbyk7DQpAQCAtMjU0LDIxICsyMjcsMjUgQEAgc3RhdGlj IGludCB0YXNrX2Jsb2Nrc19vbl9ydF9tdXRleChzdHJ1Yw0KIAlwbGlzdF9h ZGQoJndhaXRlci0+bGlzdF9lbnRyeSwgJmxvY2stPndhaXRfbGlzdCk7DQog DQogCWN1cnJlbnQtPnBpX2Jsb2NrZWRfb24gPSB3YWl0ZXI7DQotCWN1cnJl bnQtPnBpX2xvY2tlZF9ieSA9IHJ0X211dGV4X293bmVyKGxvY2spOw0KIA0K LQkvKg0KLQkgKiBDYWxsIGFkanVzdF9wcmlvX2NoYWluLCB3aGVuIHdhaXRl ciBpcyB0aGUgbmV3IHRvcCB3YWl0ZXINCi0JICogb3Igd2hlbiBkZWFkbG9j ayBkZXRlY3Rpb24gaXMgcmVxdWVzdGVkLg0KLQkgKi8NCi0JaWYgKHdhaXRl ciA9PSBydF9tdXRleF9maXJzdF93YWl0ZXIobG9jaykgfHwNCi0JICAgIGRl YnVnX3J0X211dGV4X2RldGVjdF9kZWFkbG9jayhkZWFkbG9ja19kZXRlY3Qp KSB7DQorCV9yYXdfc3Bpbl91bmxvY2soJmN1cnJlbnQtPnBpX2xvY2spOw0K IA0KLQkJcmVzID0gYWRqdXN0X3ByaW9fY2hhaW4obG9jaywgd2FpdGVyLCB0 b3Bfd2FpdGVyLA0KLQkJCQkJZGVhZGxvY2tfZGV0ZWN0IF9fSVBfXyk7DQor CWlmICh3YWl0ZXIgPT0gcnRfbXV0ZXhfZmlyc3Rfd2FpdGVyKGxvY2spKSB7 DQorCQlfcmF3X3NwaW5fbG9jaygmb3duZXItPnBpX2xvY2spOw0KKwkJcGxp c3RfZGVsKCZ0b3Bfd2FpdGVyLT5waV9saXN0X2VudHJ5LCAmb3duZXItPnBp X3dhaXRlcnMpOw0KKwkJcGxpc3RfYWRkKCZ3YWl0ZXItPnBpX2xpc3RfZW50 cnksICZvd25lci0+cGlfd2FpdGVycyk7DQorCQkNCisJCWFkanVzdF9wcmlv KG93bmVyKTsNCisJCWlmKG93bmVyLT5waV9ibG9ja2VkX29uKSB7DQorCQkJ LyogTmVzdGVkIGxvY2tzLiBXZSBkbyB0aGUgYm9vc3Rpbmcgb2YgdGhlIG5l eHQNCisJCQkgICB0YXNrcyBqdXN0IGJlZm9yZSBnb2luZyB0byBzbGVlcCBp biBzY2hlZHVsZSAqLw0KKwkJCXJlcyA9IG93bmVyOw0KKwkJCWdldF90YXNr X3N0cnVjdChvd25lcik7DQorCQl9DQorDQorCQlfcmF3X3NwaW5fdW5sb2Nr KCZvd25lci0+cGlfbG9jayk7DQogCX0NCiANCi0JY3VycmVudC0+cGlfbG9j a2VkX2J5ID0gTlVMTDsNCi0JX3Jhd19zcGluX3VubG9jaygmY3VycmVudC0+ cGlfbG9jayk7DQogCXJldHVybiByZXM7DQogfQ0KIA0KQEAgLTQ0MSwzMiAr NDE4LDM3IEBAIHN0YXRpYyB2b2lkIHdha2V1cF9uZXh0X3dhaXRlcihzdHJ1 Y3QgcnQNCiAgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGxvY2stPndhaXRfbG9j ayBoZWxkDQogICovDQogc3RhdGljIHZvaWQgcmVtb3ZlX3dhaXRlcihzdHJ1 Y3QgcnRfbXV0ZXggKmxvY2ssDQotCQkJICBzdHJ1Y3QgcnRfbXV0ZXhfd2Fp dGVyICp3YWl0ZXIgX19JUF9ERUNMX18pDQorCQkJICBzdHJ1Y3QgcnRfbXV0 ZXhfd2FpdGVyICp3YWl0ZXIsDQorCQkJICB0YXNrX3QgKipvd25lcl9yZWYg X19JUF9ERUNMX18pDQogew0KIAlpbnQgZmlyc3QgPSAod2FpdGVyID09IHJ0 X211dGV4X2ZpcnN0X3dhaXRlcihsb2NrKSk7DQogDQorCSpvd25lcl9yZWYg PSBOVUxMOw0KKw0KIAlwbGlzdF9kZWwoJndhaXRlci0+bGlzdF9lbnRyeSwg JmxvY2stPndhaXRfbGlzdCk7DQogDQotCV9yYXdfc3Bpbl9sb2NrKCZjdXJy ZW50LT5waV9sb2NrKTsNCiANCiAJaWYgKGZpcnN0ICYmIHJ0X211dGV4X293 bmVyKGxvY2spICE9IGN1cnJlbnQpIHsNCi0JCXN0cnVjdCBydF9tdXRleF93 YWl0ZXIgKm5leHRfd2FpdGVyID0gTlVMTDsNCi0NCi0JCWN1cnJlbnQtPnBp X2xvY2tlZF9ieSA9IHJ0X211dGV4X293bmVyKGxvY2spOw0KLQ0KLQkJaWYg KHJ0X211dGV4X2hhc193YWl0ZXJzKGxvY2spKQ0KLQkJCW5leHRfd2FpdGVy ID0gcnRfbXV0ZXhfZmlyc3Rfd2FpdGVyKGxvY2spOw0KKwkJdGFza190ICpv d25lciA9IHJ0X211dGV4X293bmVyKGxvY2spOw0KIA0KLQkJYWRqdXN0X3By aW9fY2hhaW4obG9jaywgbmV4dF93YWl0ZXIsIHdhaXRlciwgMCBfX0lQX18p Ow0KKwkJX3Jhd19zcGluX2xvY2soJm93bmVyLT5waV9sb2NrKTsNCiANCi0J CWN1cnJlbnQtPnBpX2xvY2tlZF9ieSA9IE5VTEw7DQorCQlwbGlzdF9kZWwo JndhaXRlci0+cGlfbGlzdF9lbnRyeSwgJm93bmVyLT5waV93YWl0ZXJzKTsN CisJCWFkanVzdF9wcmlvKG93bmVyKTsNCisJCWlmKG93bmVyLT5waV9ibG9j a2VkX29uKSB7DQorCQkJLyogT3duZXIgaXMgYmxvY2tlZCBvbiBzb21ldGhp bmcgLSB3ZSBoYXZlDQorCQkJICAgdG8gKHVuKWJvb3N0IHRocm91Z2hvdXQg dGhlIGxvY2sgY2hhaW4gYnV0DQorCQkJICAgd2UgaGF2ZSB0byB3YWl0IHVu dGlsIHdlIGhhdmUgZHJvcHBlZCBhbGwgbG9ja3MgKi8NCisJCQkqb3duZXJf cmVmID0gb3duZXI7DQorCQkJZ2V0X3Rhc2tfc3RydWN0KG93bmVyKTsNCisJ CX0NCisJCV9yYXdfc3Bpbl91bmxvY2soJm93bmVyLT5waV9sb2NrKTsJCQkN CiAJfQ0KIA0KIAlXQVJOX09OKCFwbGlzdF9ub2RlX2VtcHR5KCZ3YWl0ZXIt PnBpX2xpc3RfZW50cnkpKTsNCiANCiAJY3VycmVudC0+cGlfYmxvY2tlZF9v biA9IE5VTEw7DQogCXdhaXRlci0+dGFzayA9IE5VTEw7DQotCV9yYXdfc3Bp bl91bmxvY2soJmN1cnJlbnQtPnBpX2xvY2spOw0KIH0NCiANCiAjaWZkZWYg Q09ORklHX1BSRUVNUFRfUlQNCkBAIC00ODUsNiArNDY3LDcgQEAgcnRfbG9j a19zbG93bG9jayhzdHJ1Y3QgcnRfbXV0ZXggKmxvY2sgXw0KIHsNCiAJc3Ry dWN0IHJ0X211dGV4X3dhaXRlciB3YWl0ZXI7DQogCXVuc2lnbmVkIGxvbmcg c2F2ZWRfc3RhdGUsIHN0YXRlLCBmbGFnczsNCisJdGFza190ICpvd25lcjsN CiANCiAJZGVidWdfcnRfbXV0ZXhfaW5pdF93YWl0ZXIoJndhaXRlcik7DQog CXdhaXRlci50YXNrID0gTlVMTDsNCkBAIC01MTAsNyArNDkzLDcgQEAgcnRf bG9ja19zbG93bG9jayhzdHJ1Y3QgcnRfbXV0ZXggKmxvY2sgXw0KIAkgKiBz YXZlZF9zdGF0ZSBhY2NvcmRpbmdseS4gSWYgd2UgZGlkIG5vdCBnZXQgYSBy ZWFsIHdha2V1cA0KIAkgKiB0aGVuIHdlIHJldHVybiB3aXRoIHRoZSBzYXZl ZCBzdGF0ZS4NCiAJICovDQotCXNhdmVkX3N0YXRlID0geGNoZygmY3VycmVu dC0+c3RhdGUsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTsNCisJc2F2ZWRfc3Rh dGUgPSB4Y2hnKCZjdXJyZW50LT5zdGF0ZSwgVEFTS19SVU5OSU5HX01VVEVY KTsNCiANCiAJZm9yICg7Oykgew0KIAkJdW5zaWduZWQgbG9uZyBzYXZlZF9m bGFnczsNCkBAIC01MjUsOCArNTA4LDIyIEBAIHJ0X2xvY2tfc2xvd2xvY2so c3RydWN0IHJ0X211dGV4ICpsb2NrIF8NCiAJCSAqIGJ1dCB0aGUgbG9jayBn b3Qgc3RvbGVuIGJ5IGFuIGhpZ2hlciBwcmlvIHRhc2suDQogCQkgKi8NCiAJ CWlmICh1bmxpa2VseSghd2FpdGVyLnRhc2spKQ0KLQkJCXRhc2tfYmxvY2tz X29uX3J0X211dGV4KGxvY2ssICZ3YWl0ZXIsIDAgX19JUF9fKTsNCi0NCisJ CQlvd25lciA9IHRhc2tfYmxvY2tzX29uX3J0X211dGV4KGxvY2ssICZ3YWl0 ZXIgX19JUF9fKTsNCisJCWVsc2UNCisJCQlvd25lciA9IE5VTEw7DQorDQor CQlpZihvd25lcikgew0KKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxv Y2stPndhaXRfbG9jayxmbGFncyk7DQorCQkJYWRqdXN0X3ByaW9fY2hhaW4o b3duZXIsIDAsIGxvY2sgX19JUF9fKTsNCisJCQlzcGluX2xvY2tfaXJxc2F2 ZSgmbG9jay0+d2FpdF9sb2NrLGZsYWdzKTsNCisJCQlpZih1bmxpa2VseSgh d2FpdGVyLnRhc2spKQ0KKwkJCQljb250aW51ZTsgLyogV2UgZ290IHdva2Vu IHVwIGJ5IHRoZSBvd25lcg0KKwkJCQkJICAgKiBTdGFydCBsb29wIGFsbCBv dmVyIHdpdGhvdXQNCisJCQkJCSAgICogZ29pbmcgaW50byBzY2hlZHVsZSB0 byB0cnkNCisJCQkJCSAgICogdG8gZ2V0IHRoZSBsb2NrIG5vdyANCisJCQkJ CSAgICovDQorCQl9DQorCQkJDQogCQkvKg0KIAkJICogUHJldmVudCBzY2hl ZHVsZSgpIHRvIGRyb3AgQktMLCB3aGlsZSB3YWl0aW5nIGZvcg0KIAkJICog dGhlIGxvY2sgISBXZSByZXN0b3JlIGxvY2tfZGVwdGggd2hlbiB3ZSBjb21l IGJhY2suDQpAQCAtNTM0LDkgKzUzMSwxMSBAQCBydF9sb2NrX3Nsb3dsb2Nr KHN0cnVjdCBydF9tdXRleCAqbG9jayBfDQogCQlzYXZlZF9mbGFncyA9IGN1 cnJlbnQtPmZsYWdzICYgUEZfTk9TQ0hFRDsNCiAJCWN1cnJlbnQtPmxvY2tf ZGVwdGggPSAtMTsNCiAJCWN1cnJlbnQtPmZsYWdzICY9IH5QRl9OT1NDSEVE Ow0KKwkJc3RhdGUgPSB4Y2hnKCZjdXJyZW50LT5zdGF0ZSwgVEFTS19VTklO VEVSUlVQVElCTEUpOw0KIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbG9j ay0+d2FpdF9sb2NrLCBmbGFncyk7DQogDQotCQlzY2hlZHVsZV9ydF9tdXRl eChsb2NrKTsNCisJCWlmIChsaWtlbHkoc3RhdGUgPT0gVEFTS19SVU5OSU5H X01VVEVYKSkNCisJCQlzY2hlZHVsZV9ydF9tdXRleChsb2NrKTsNCiANCiAJ CXNwaW5fbG9ja19pcnEoJmxvY2stPndhaXRfbG9jayk7DQogCQljdXJyZW50 LT5mbGFncyB8PSBzYXZlZF9mbGFnczsNCkBAIC01NTcsNyArNTU2LDkgQEAg cnRfbG9ja19zbG93bG9jayhzdHJ1Y3QgcnRfbXV0ZXggKmxvY2sgXw0KIAkg KiBjYW4gZW5kIHVwIHdpdGggYSBub24tTlVMTCB3YWl0ZXIudGFzazoNCiAJ ICovDQogCWlmICh1bmxpa2VseSh3YWl0ZXIudGFzaykpDQotCQlyZW1vdmVf d2FpdGVyKGxvY2ssICZ3YWl0ZXIgX19JUF9fKTsNCisJCXJlbW92ZV93YWl0 ZXIobG9jaywgJndhaXRlciwgJm93bmVyIF9fSVBfXyk7DQorCWVsc2UNCisJ CW93bmVyID0gTlVMTDsNCiAJLyoNCiAJICogdHJ5X3RvX3Rha2VfcnRfbXV0 ZXgoKSBzZXRzIHRoZSB3YWl0ZXIgYml0DQogCSAqIHVuY29uZGl0aW9uYWxs eS4gV2UgbWlnaHQgaGF2ZSB0byBmaXggdGhhdCB1cDoNCkBAIC01NjcsNiAr NTY4LDggQEAgcnRfbG9ja19zbG93bG9jayhzdHJ1Y3QgcnRfbXV0ZXggKmxv Y2sgXw0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZsb2NrLT53YWl0X2xv Y2ssIGZsYWdzKTsNCiANCiAJZGVidWdfcnRfbXV0ZXhfZnJlZV93YWl0ZXIo JndhaXRlcik7DQorCWlmKG93bmVyKQ0KKwkJYWRqdXN0X3ByaW9fY2hhaW4o b3duZXIsIDAsIGxvY2sgX19JUF9fKTsNCiB9DQogDQogLyoNCkBAIC02Nzcs NiArNjgwLDcgQEAgcnRfbXV0ZXhfc2xvd2xvY2soc3RydWN0IHJ0X211dGV4 ICpsb2NrLA0KIAlzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsNCiAJaW50IHJl dCA9IDAsIHNhdmVkX2xvY2tfZGVwdGggPSAtMTsNCiAJdW5zaWduZWQgbG9u ZyBmbGFnczsNCisJdGFza190ICpvd25lcjsNCiANCiAJZGVidWdfcnRfbXV0 ZXhfaW5pdF93YWl0ZXIoJndhaXRlcik7DQogCXdhaXRlci50YXNrID0gTlVM TDsNCkBAIC02OTEsOCArNjk1LDYgQEAgcnRfbXV0ZXhfc2xvd2xvY2soc3Ry dWN0IHJ0X211dGV4ICpsb2NrLA0KIAkJcmV0dXJuIDA7DQogCX0NCiANCi0J QlVHX09OKHJ0X211dGV4X293bmVyKGxvY2spID09IGN1cnJlbnQpOw0KLQ0K IAkvKg0KIAkgKiBXZSBkcm9wIEJLTCBoZXJlIGJlZm9yZSB3ZSBnbyBpbnRv IHRoZSB3YWl0IGxvb3AgdG8gYXZvaWQgYQ0KIAkgKiBwb3NzaWJsZSBkZWFk bG9jayBpbiB0aGUgc2NoZWR1bGVyLg0KQEAgLTcwMCwxMyArNzAyLDEyIEBA IHJ0X211dGV4X3Nsb3dsb2NrKHN0cnVjdCBydF9tdXRleCAqbG9jaywNCiAJ aWYgKHVubGlrZWx5KGN1cnJlbnQtPmxvY2tfZGVwdGggPj0gMCkpDQogCQlz YXZlZF9sb2NrX2RlcHRoID0gcnRfcmVsZWFzZV9ia2wobG9jayk7DQogDQot CXNldF90YXNrX3N0YXRlKGN1cnJlbnQsIHN0YXRlKTsNCi0NCiAJLyogU2V0 dXAgdGhlIHRpbWVyLCB3aGVuIHRpbWUgIT0gMCAqLw0KIAl0aW1lcl9pbnN0 YWxsZWQgPSBydF9tdXRleF9zZXR1cF90aW1lcigmdGltZXIsIHRpbWUpOw0K IA0KIAlmb3IgKDs7KSB7DQogCQl1bnNpZ25lZCBsb25nIHNhdmVkX2ZsYWdz Ow0KKwkJdGFza190ICpvd25lciA9IE5VTEw7DQogDQogCQkvKiBUcnkgdG8g YWNxdWlyZSB0aGUgbG9jayAqLw0KIAkJaWYgKHRyeV90b190YWtlX3J0X211 dGV4KGxvY2sgX19JUF9fKSkNCkBAIC03MzEsMTYgKzczMiwzMiBAQCBydF9t dXRleF9zbG93bG9jayhzdHJ1Y3QgcnRfbXV0ZXggKmxvY2ssDQogCQkgKiB3 aGVuIHdlIGhhdmUgYmVlbiB3b2tlbiB1cCBieSB0aGUgcHJldmlvdXMgb3du ZXINCiAJCSAqIGJ1dCB0aGUgbG9jayBnb3Qgc3RvbGVuIGJ5IGFuIGhpZ2hl ciBwcmlvIHRhc2suDQogCQkgKi8NCi0JCWlmICh1bmxpa2VseSghd2FpdGVy LnRhc2spKSB7DQotCQkJcmV0ID0gdGFza19ibG9ja3Nfb25fcnRfbXV0ZXgo bG9jaywgJndhaXRlciwNCi0JCQkJCQkgICAgICBkZWFkbG9ja19kZXRlY3Qg X19JUF9fKTsNCi0JCQlpZiAocmV0KQ0KLQkJCQlicmVhazsNCi0JCX0NCisJ CWlmICh1bmxpa2VseSghd2FpdGVyLnRhc2spKQ0KKwkJCW93bmVyID0gdGFz a19ibG9ja3Nfb25fcnRfbXV0ZXgobG9jaywgJndhaXRlciBfX0lQX18pOw0K KwkJZWxzZQ0KKwkJCW93bmVyID0gTlVMTDsNCisNCisJCWlmKGRlYWRsb2Nr X2RldGVjdCAmJiAhb3duZXIpIHsNCisgCQkJb3duZXIgPSBydF9tdXRleF9v d25lcihsb2NrKTsNCisgCQkJZ2V0X3Rhc2tfc3RydWN0KG93bmVyKTsNCisg IAkJfQ0KKwkJDQorIAkJaWYob3duZXIpIHsNCisgCQkJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmbG9jay0+d2FpdF9sb2NrLGZsYWdzKTsNCisJCQkNCisg CQkJYWRqdXN0X3ByaW9fY2hhaW4ob3duZXIsIGRlYWRsb2NrX2RldGVjdCwg bG9jayBfX0lQX18pOw0KKyANCisJCQlzcGluX2xvY2tfaXJxc2F2ZSgmbG9j ay0+d2FpdF9sb2NrLCBmbGFncyk7DQorIA0KKyAJCQlpZiAodW5saWtlbHko IXdhaXRlci50YXNrKSkgDQorIAkJCQkvKiBMb29wIGFyb3VuZCBhbmQgdHJ5 IGFnYWluIC0gd2UgbWF5YmUNCisgCQkJCSAgIGdvdCB0aGUgbG9jayB3aGls ZSB3ZSB3aGVyZSBsb29waW5nICovDQorIAkJCQljb250aW51ZTsNCisgCQl9 DQogDQogCQlzYXZlZF9mbGFncyA9IGN1cnJlbnQtPmZsYWdzICYgUEZfTk9T Q0hFRDsNCiAJCWN1cnJlbnQtPmZsYWdzICY9IH5QRl9OT1NDSEVEOw0KLQ0K KwkJc2V0X3Rhc2tfc3RhdGUoY3VycmVudCwgc3RhdGUpOw0KIAkJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmbG9jay0+d2FpdF9sb2NrLCBmbGFncyk7DQog DQogCQlzY2hlZHVsZV9ydF9tdXRleChsb2NrKTsNCkBAIC03NTQsOCArNzcx LDEwIEBAIHJ0X211dGV4X3Nsb3dsb2NrKHN0cnVjdCBydF9tdXRleCAqbG9j aywNCiANCiAJc2V0X3Rhc2tfc3RhdGUoY3VycmVudCwgVEFTS19SVU5OSU5H KTsNCiANCi0JaWYgKHVubGlrZWx5KHdhaXRlci50YXNrKSkNCi0JCXJlbW92 ZV93YWl0ZXIobG9jaywgJndhaXRlciBfX0lQX18pOw0KKwlpZiAodW5saWtl bHkod2FpdGVyLnRhc2spKSANCisJCXJlbW92ZV93YWl0ZXIobG9jaywgJndh aXRlciwgJm93bmVyIF9fSVBfXyk7DQorCWVsc2UNCisJCW93bmVyID0gTlVM TDsNCiANCiAJLyoNCiAJICogdHJ5X3RvX3Rha2VfcnRfbXV0ZXgoKSBzZXRz IHRoZSB3YWl0ZXIgYml0DQpAQCAtNzY1LDYgKzc4NCw5IEBAIHJ0X211dGV4 X3Nsb3dsb2NrKHN0cnVjdCBydF9tdXRleCAqbG9jaywNCiANCiAJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmbG9jay0+d2FpdF9sb2NrLCBmbGFncyk7DQog DQorCWlmKHVubGlrZWx5KG93bmVyKSkNCisJCWFkanVzdF9wcmlvX2NoYWlu KG93bmVyLDAsbG9jayBfX0lQX18pOw0KKw0KIAkvKiBSZW1vdmUgcGVuZGlu ZyB0aW1lciAqLw0KIAlpZiAodW5saWtlbHkodGltZXJfaW5zdGFsbGVkKSkN CiAJCWRlbF9zaW5nbGVzaG90X3RpbWVyX3N5bmMoJnRpbWVyKTsNCk9ubHkg aW4gbGludXgtMi42LjE2LXJ0MS5waXBhdGNoL2tlcm5lbDogcnRtdXRleC5j Lm9yaWcNCk9ubHkgaW4gbGludXgtMi42LjE2LXJ0MS5waXBhdGNoL2tlcm5l bDogcnRtdXRleC5jLnJlag0KT25seSBpbiBsaW51eC0yLjYuMTYtcnQxLnBp cGF0Y2gva2VybmVsOiBydG11dGV4LmN+DQpPbmx5IGluIGxpbnV4LTIuNi4x Ni1ydDEucGlwYXRjaC9rZXJuZWw6IHJ0bXV0ZXguaC5vcmlnDQpPbmx5IGlu IGxpbnV4LTIuNi4xNi1ydDEucGlwYXRjaC9rZXJuZWw6IHJ0bXV0ZXguaC5y ZWoNCg== --202006785-1655826578-1143294747=:23241-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/