[PATCH] 2.3.11-5 Lazy TLB fixes/__switch_to bug

Benjamin C.R. LaHaise (blah@kvack.org)
Tue, 20 Jul 1999 02:06:47 -0400 (EDT)


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.

---372782664-1839306446-932450807=:2584
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello Ingo et al,

Attached is a patch against 2.3.11-5 (sorry about CVS -- eagerly awaiting
BitKeeper) that fixes what I think are major problems with the lazy tlb
code for x86 (for non-x86 people, please note the added
(get|put)_mmu_context and how SET_PAGE_DIR does the equivelent to a
put_mmu_context): using mmget/put isn't a wise thing in schedule, in my
opinion, as the mm context could retain quite a few resources until the
last put. Also, by incrementing mm->count, many optimizations were being
disabled, even if they're still valid (the assumption I'm working on here
is that the kernel mappings for pgds to pmds is done at boot time and
never changed; any access of any other part of the pgd my a lazy tlb task
is wholly invalid).

The mm_struct leak fix is based on the fix pointed out by Alexander Viro
(once I saw his message pointing out the actual bug, the rest came easy --
thanks Alex!): put_mmu_context is moved to schedule_tail. I'm no longer
seeing the bad pmd messages as task->mm is no longer changed on lazy tlb
processes, so Alexander's patch for fixing task_struct->mm references
isn't needed.

With these fixes, things *almost* worked, except something was freeing
random pages, resulting in massive page cache corruption (2.3.11-[45] are
DANGEROUS, and have resulted in some minor data trashing here). It turns
out that __switch_to wasn't preserving prev in %eax -- fixed by returning
prev from __switch_to. While I was at it, I made schedule_tail a FASTCALL
(code is okay with gcc 2.7.2) since the value of interest was already in
%eax.

Phew! Many thanks to Ingo for laying out the groundwork.

-ben

--
Hi!  I'm Signature Virus 99!  Copy me into your .signature and join the fun!

---372782664-1839306446-932450807=:2584 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="lazy-tlb-3.diff" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.3.96.990720020647.2584B@mole.spellcast.com> Content-Description:

SW5kZXg6IGFyY2gvaTM4Ni9rZXJuZWwvZW50cnkuUw0KPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ibGFoLWxvY2FsL2N2c3Jvb3QvbGlu Mi4zL2FyY2gvaTM4Ni9rZXJuZWwvZW50cnkuUyx2DQpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMS4xLjENCmRpZmYgLXUgLXUgLXIxLjEuMS4xIGVudHJ5LlMN Ci0tLSBlbnRyeS5TCTE5OTkvMDQvMzAgMTU6MTM6MzcJMS4xLjEuMQ0KKysr IGVudHJ5LlMJMTk5OS8wNy8yMCAwNTowNzo0OQ0KQEAgLTE1MywxMSArMTUz LDEwIEBADQogCUFMSUdODQogCS5nbG9ibAlyZXRfZnJvbV9mb3JrDQogcmV0 X2Zyb21fZm9yazoNCi0jaWZkZWYgX19TTVBfXw0KLQlwdXNobCAlZWJ4DQor CS8qICVlYXggY3VycmVudGx5IGNvbnRhaW5zIHRoZSByZXR1cm4gdmFsdWUg ZnJvbSBfX3N3aXRjaF90bywNCisJICogd2hpY2ggaXMgc3RydWN0IHRhc2sg KnByZXYgLS0ganVzdCB3aGF0IHNjaGVkdWxlX3RhaWwgbmVlZHMuIC1iZW4N CisJICovDQogCWNhbGwgU1lNQk9MX05BTUUoc2NoZWR1bGVfdGFpbCkNCi0J YWRkbCAkNCwgJWVzcA0KLSNlbmRpZiAvKiBfX1NNUF9fICovDQogCUdFVF9D VVJSRU5UKCVlYngpDQogCWptcAlyZXRfZnJvbV9zeXNfY2FsbA0KIA0KSW5k ZXg6IGFyY2gvaTM4Ni9rZXJuZWwvcHJvY2Vzcy5jDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQpSQ1MgZmlsZTogL2JsYWgtbG9jYWwvY3Zzcm9vdC9saW4y LjMvYXJjaC9pMzg2L2tlcm5lbC9wcm9jZXNzLmMsdg0KcmV0cmlldmluZyBy ZXZpc2lvbiAxLjEuMS4zDQpkaWZmIC11IC11IC1yMS4xLjEuMyBwcm9jZXNz LmMNCi0tLSBwcm9jZXNzLmMJMTk5OS8wNy8xNSAwNToxMDo0OQkxLjEuMS4z DQorKysgcHJvY2Vzcy5jCTE5OTkvMDcvMjAgMDU6MzA6MDkNCkBAIC03MzMs NyArNzMzLDcgQEANCiAgKiBtb3JlIGZsZXhpYmlsaXR5Lg0KICAqLw0KIGV4 dGVybiBpbnQgY3B1c19pbml0aWFsaXplZDsNCi12b2lkIF9fc3dpdGNoX3Rv KHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldl9wLCBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKm5leHRfcCkNCitzdHJ1Y3QgdGFza19zdHJ1Y3QgKl9fc3dpdGNoX3Rv KHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldl9wLCBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKm5leHRfcCkNCiB7DQogCXN0cnVjdCBzb2Z0X3RocmVhZF9zdHJ1Y3Qg KnByZXYgPSAmcHJldl9wLT50aHJlYWQsDQogCQkJCSAqbmV4dCA9ICZuZXh0 X3AtPnRocmVhZDsNCkBAIC04MDcsNiArODA3LDcgQEANCiAJCQkgKi8NCiAJ CQl0c3MtPmJpdG1hcCA9IElOVkFMSURfSU9fQklUTUFQX09GRlNFVDsNCiAJ fQ0KKwlyZXR1cm4gcHJldl9wOw0KIH0NCiANCiBhc21saW5rYWdlIGludCBz eXNfZm9yayhzdHJ1Y3QgcHRfcmVncyByZWdzKQ0KSW5kZXg6IGZzL2J1ZmZl ci5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2JsYWgt bG9jYWwvY3Zzcm9vdC9saW4yLjMvZnMvYnVmZmVyLmMsdg0KcmV0cmlldmlu ZyByZXZpc2lvbiAxLjEuMS4xNA0KZGlmZiAtdSAtdSAtcjEuMS4xLjE0IGJ1 ZmZlci5jDQotLS0gYnVmZmVyLmMJMTk5OS8wNy8xNSAwNTowNzozMwkxLjEu MS4xNA0KKysrIGJ1ZmZlci5jCTE5OTkvMDcvMjAgMDQ6MjU6MDUNCkBAIC00 NCw2ICs0NCw3IEBADQogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+DQogI2lu Y2x1ZGUgPGFzbS9pby5oPg0KICNpbmNsdWRlIDxhc20vYml0b3BzLmg+DQor I2luY2x1ZGUgPGFzbS9tbXVfY29udGV4dC5oPg0KIA0KICNkZWZpbmUgTlJf U0laRVMgNw0KIHN0YXRpYyBjaGFyIGJ1ZmZlcnNpemVfaW5kZXhbNjVdID0N CkBAIC0xOTY5LDI0ICsxOTcwLDE4IEBADQogCQlnb3RvIG91dDsNCiANCiAJ aWYgKGZ1bmMgPT0gMSkgew0KLQkJc3RydWN0IG1tX3N0cnVjdCAqdXNlcl9t bTsNCiAJCS8qDQogCQkgKiBiZGZsdXNoIHdpbGwgc3BlbmQgYWxsIG9mIGl0 J3MgdGltZSBpbiBrZXJuZWwtc3BhY2UsDQogCQkgKiB3aXRob3V0IHRvdWNo aW5nIHVzZXItc3BhY2UsIHNvIHdlIGNhbiBzd2l0Y2ggaXQgaW50bw0KIAkJ ICogJ2xhenkgVExCIG1vZGUnIHRvIHJlZHVjZSB0aGUgY29zdCBvZiBjb250 ZXh0LXN3aXRjaGVzDQogCQkgKiB0byBhbmQgZnJvbSBiZGZsdXNoLg0KIAkJ ICovDQotCQl1c2VyX21tID0gY3VycmVudC0+bW07DQotCQltbWdldCh1c2Vy X21tKTsNCiAJCWN1cnJlbnQtPmZsYWdzIHw9IFBGX0xBWllfVExCOw0KKwkJ Z2V0X21tdV9jb250ZXh0KGN1cnJlbnQsIGN1cnJlbnQpOw0KIA0KIAkJZXJy b3IgPSBzeW5jX29sZF9idWZmZXJzKCk7DQogDQotCQljdXJyZW50LT5mbGFn cyAmPSB+UEZfTEFaWV9UTEI7DQotCQlTRVRfUEFHRV9ESVIoY3VycmVudCwg dXNlcl9tbS0+cGdkKTsNCi0JCW1tcHV0KGN1cnJlbnQtPm1tKTsNCi0JCWN1 cnJlbnQtPm1tID0gdXNlcl9tbTsNCi0NCisJCVNFVF9QQUdFX0RJUihjdXJy ZW50LCBjdXJyZW50LT5tbS0+cGdkKTsJLyogdGhpcyBkb2VzIHRoZSBwdXRf bW11X2NvbnRleHQgZm9yIHVzICovDQogCQlnb3RvIG91dDsNCiAJfQ0KIA0K SW5kZXg6IGZzL25mcy9yZWFkLmMNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N ClJDUyBmaWxlOiAvYmxhaC1sb2NhbC9jdnNyb290L2xpbjIuMy9mcy9uZnMv cmVhZC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuNQ0KZGlmZiAt dSAtdSAtcjEuMS4xLjUgcmVhZC5jDQotLS0gcmVhZC5jCTE5OTkvMDcvMTUg MDU6MDA6MjUJMS4xLjEuNQ0KKysrIHJlYWQuYwkxOTk5LzA3LzIwIDA0OjA5 OjAzDQpAQCAtMTUyLDcgKzE1Miw3IEBADQogCQlmYWlsKys7DQogCQlkcHJp bnRrKCJORlM6ICVkIHN1Y2Nlc3NmdWwgcmVhZHMsICVkIGZhaWx1cmVzXG4i LCBzdWNjLCBmYWlsKTsNCiAJfQ0KLQlwYWdlLT5vd25lciA9IChpbnQpY3Vy cmVudDsgLy8gSEFDSywgRklYTUUsIHdpbGwgZ28gYXdheS4NCisJcGFnZS0+ b3duZXIgPSBjdXJyZW50OyAvLyBIQUNLLCBGSVhNRSwgd2lsbCBnbyBhd2F5 Lg0KIAlVbmxvY2tQYWdlKHBhZ2UpOw0KIAlmcmVlX3BhZ2UoYWRkcmVzcyk7 DQogDQpJbmRleDogaW5jbHVkZS9hc20taTM4Ni9tbXVfY29udGV4dC5oDQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2JsYWgtbG9jYWwv Y3Zzcm9vdC9saW4yLjMvaW5jbHVkZS9hc20taTM4Ni9tbXVfY29udGV4dC5o LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMg0KZGlmZiAtdSAtdSAt cjEuMS4xLjIgbW11X2NvbnRleHQuaA0KLS0tIG1tdV9jb250ZXh0LmgJMTk5 OS8wNy8xNSAwNTowODoxNAkxLjEuMS4yDQorKysgbW11X2NvbnRleHQuaAkx OTk5LzA3LzIwIDA0OjE4OjE3DQpAQCAtMTUsMTMgKzE1LDE1IEBADQogICog YSBmdW5jdGlvbiBjYWxsIC4uLg0KICAqLw0KICNkZWZpbmUgZ2V0X21tdV9j b250ZXh0KHByZXYsIG5leHQpIFwNCi0JZG8geyBpZiAobmV4dC0+ZmxhZ3Mg JiBQRl9MQVpZX1RMQikgXA0KLQkJeyBtbWdldChwcmV2LT5tbSk7IG5leHQt Pm1tID0gcHJldi0+bW07IFwNCi0JCQluZXh0LT50aHJlYWQuY3IzID0gcHJl di0+dGhyZWFkLmNyMzsgfSB9IHdoaWxlKDApDQorCWRvIHsgaWYgKG5leHQt PmZsYWdzICYgUEZfTEFaWV9UTEIpIHsgXA0KKwkJbmV4dC0+dGhyZWFkLmNy MyA9IHByZXYtPnRocmVhZC5jcjM7IFwNCisJCWdldF9wYWdlKG1lbV9tYXAg KyBNQVBfTlIoX192YShuZXh0LT50aHJlYWQuY3IzKSkpOyBcDQorCX0gfSB3 aGlsZSgwKQ0KIA0KICNkZWZpbmUgcHV0X21tdV9jb250ZXh0KHByZXYsIG5l eHQpIFwNCiAJZG8geyBpZiAocHJldi0+ZmxhZ3MgJiBQRl9MQVpZX1RMQikg XA0KLQkJCXsgbW1wdXQocHJldi0+bW0pOyB9IH0gd2hpbGUoMCkNCisJCXBn ZF9mcmVlKF9fdmEocHJldi0+dGhyZWFkLmNyMykpOyBcDQorCX0gd2hpbGUo MCkNCiANCiAjZGVmaW5lIGluaXRfbmV3X2NvbnRleHQobW0pCWRvIHsgfSB3 aGlsZSgwKQ0KIC8qDQpJbmRleDogaW5jbHVkZS9hc20taTM4Ni9wZ3RhYmxl LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvYmxhaC1s b2NhbC9jdnNyb290L2xpbjIuMy9pbmNsdWRlL2FzbS1pMzg2L3BndGFibGUu aCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjMNCmRpZmYgLXUgLXUg LXIxLjEuMS4zIHBndGFibGUuaA0KLS0tIHBndGFibGUuaAkxOTk5LzA3LzE1 IDA1OjA4OjEzCTEuMS4xLjMNCisrKyBwZ3RhYmxlLmgJMTk5OS8wNy8yMCAw NDoxOTozMQ0KQEAgLTMwNiwxMiArMzA2LDE2IEBADQogI2RlZmluZSBTRVRf UEFHRV9ESVIodHNrLHBnZGlyKSBcDQogZG8geyBcDQogCXVuc2lnbmVkIGxv bmcgX19wZ2RpciA9IF9fcGEocGdkaXIpOyBcDQotCSh0c2spLT50aHJlYWQu Y3IzID0gX19wZ2RpcjsgXA0KKwlpbnQgd2FzX2xhenkgPSAoKHRzayktPmZs YWdzICYgUEZfTEFaWV9UTEIpOyBcDQogCS8qIGRvIG5vdCBpbmhlcml0IGxh enktVExCIGFmdGVyIGV4ZWMoKSAqLyBcDQotCWlmICgocGdkaXIgIT0gc3dh cHBlcl9wZ19kaXIpICYmICgodHNrKS0+ZmxhZ3MgJiBQRl9MQVpZX1RMQikp IFwNCisJaWYgKChwZ2RpciAhPSBzd2FwcGVyX3BnX2RpcikgJiYgd2FzX2xh enkpIFwNCiAJCSh0c2spLT5mbGFncyAmPSB+UEZfTEFaWV9UTEI7IFwNCi0J aWYgKCh0c2spID09IGN1cnJlbnQpIFwNCisJaWYgKCh0c2spID09IGN1cnJl bnQpIHsgXA0KIAkJX19hc21fXyBfX3ZvbGF0aWxlX18oIm1vdmwgJTAsJSVj cjMiOiA6InIiIChfX3BnZGlyKSk7IFwNCisJCWlmICh3YXNfbGF6eSkgXA0K KwkJCXBnZF9mcmVlKF9fdmEoKHRzayktPnRocmVhZC5jcjMpKTsgXA0KKwl9 IFwNCisJKHRzayktPnRocmVhZC5jcjMgPSBfX3BnZGlyOyBcDQogfSB3aGls ZSAoMCkNCiANCiAjZGVmaW5lIHB0ZV9ub25lKHgpCSghcHRlX3ZhbCh4KSkN CkluZGV4OiBpbmNsdWRlL2FzbS1pMzg2L3N5c3RlbS5oDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2JsYWgtbG9jYWwvY3Zzcm9vdC9s aW4yLjMvaW5jbHVkZS9hc20taTM4Ni9zeXN0ZW0uaCx2DQpyZXRyaWV2aW5n IHJldmlzaW9uIDEuMS4xLjMNCmRpZmYgLXUgLXUgLXIxLjEuMS4zIHN5c3Rl bS5oDQotLS0gc3lzdGVtLmgJMTk5OS8wNy8xNSAwNTowODoxMwkxLjEuMS4z DQorKysgc3lzdGVtLmgJMTk5OS8wNy8yMCAwNTozMDo1MQ0KQEAgLTcsNyAr Nyw3IEBADQogI2lmZGVmIF9fS0VSTkVMX18NCiANCiBzdHJ1Y3QgdGFza19z dHJ1Y3Q7CS8qIG9uZSBvZiB0aGUgc3RyYW5nZXIgYXNwZWN0cyBvZiBDIGZv cndhcmQgZGVjbGFyYXRpb25zLi4gKi8NCi1leHRlcm4gdm9pZCBGQVNUQ0FM TChfX3N3aXRjaF90byhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsIHN0cnVj dCB0YXNrX3N0cnVjdCAqbmV4dCkpOw0KK2V4dGVybiBzdHJ1Y3QgdGFza19z dHJ1Y3QgKiBGQVNUQ0FMTChfX3N3aXRjaF90byhzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCkpOw0KIA0KICNk ZWZpbmUgc3dpdGNoX3RvKHByZXYsbmV4dCxsYXN0KSBkbyB7CQkJCQlcDQog CWFzbSB2b2xhdGlsZSgicHVzaGwgJSVlc2lcblx0IgkJCQkJXA0KQEAgLTIz LDcgKzIzLDcgQEANCiAJCSAgICAgInBvcGwgJSVlZGlcblx0IgkJCQkJXA0K IAkJICAgICAicG9wbCAlJWVzaVxuXHQiCQkJCQlcDQogCQkgICAgIDoiPW0i IChwcmV2LT50aHJlYWQuZXNwKSwiPW0iIChwcmV2LT50aHJlYWQuZWlwKSwJ XA0KLQkJICAgICAgIj1iIiAobGFzdCkJCQkJCVwNCisJCSAgICAgICI9YSIg KGxhc3QpCQkJCQlcDQogCQkgICAgIDoibSIgKG5leHQtPnRocmVhZC5lc3Ap LCJtIiAobmV4dC0+dGhyZWFkLmVpcCksCVwNCiAJCSAgICAgICJhIiAocHJl diksICJkIiAobmV4dCksCQkJCVwNCiAJCSAgICAgICJiIiAocHJldikpOwkJ CQkJXA0KSW5kZXg6IGtlcm5lbC9leGl0LmMNCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NClJDUyBmaWxlOiAvYmxhaC1sb2NhbC9jdnNyb290L2xpbjIuMy9r ZXJuZWwvZXhpdC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMw0K ZGlmZiAtdSAtdSAtcjEuMS4xLjMgZXhpdC5jDQotLS0gZXhpdC5jCTE5OTkv MDcvMTUgMDU6MDc6NTMJMS4xLjEuMw0KKysrIGV4aXQuYwkxOTk5LzA3LzIw IDA0OjA5OjA5DQpAQCAtMjM3LDEwICsyMzcsMTAgQEANCiAJaWYgKG1tICE9 ICZpbml0X21tKSB7DQogCQlmbHVzaF9jYWNoZV9tbShtbSk7DQogCQlmbHVz aF90bGJfbW0obW0pOw0KKwkJU0VUX1BBR0VfRElSKHRzaywgc3dhcHBlcl9w Z19kaXIpOwkvKiBzaG91bGQgZ28gYmVmb3JlIGRlc3Ryb3lfY29udGV4dCwg cmlnaHQ/IC1iZW4gKi8NCiAJCWRlc3Ryb3lfY29udGV4dChtbSk7DQogCQl0 c2stPm1tID0gJmluaXRfbW07DQogCQl0c2stPnN3YXBwYWJsZSA9IDA7DQot CQlTRVRfUEFHRV9ESVIodHNrLCBzd2FwcGVyX3BnX2Rpcik7DQogCQltbV9y ZWxlYXNlKCk7DQogCQltbXB1dChtbSk7DQogCX0NCkluZGV4OiBrZXJuZWwv c2NoZWQuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9i bGFoLWxvY2FsL2N2c3Jvb3QvbGluMi4zL2tlcm5lbC9zY2hlZC5jLHYNCnJl dHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMw0KZGlmZiAtdSAtdSAtcjEuMS4x LjMgc2NoZWQuYw0KLS0tIHNjaGVkLmMJMTk5OS8wNy8xNSAwNTowNzo1Mwkx LjEuMS4zDQorKysgc2NoZWQuYwkxOTk5LzA3LzIwIDA0OjEwOjUyDQpAQCAt NjI0LDYgKzYyNCw3IEBADQogICovDQogc3RhdGljIGlubGluZSB2b2lkIF9f c2NoZWR1bGVfdGFpbCAoc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2KQ0KIHsN CisJcHV0X21tdV9jb250ZXh0KHByZXYsIGN1cnJlbnQpOw0KICNpZmRlZiBf X1NNUF9fDQogCWlmICgocHJldi0+c3RhdGUgPT0gVEFTS19SVU5OSU5HKSAm Jg0KIAkJCShwcmV2ICE9IGlkbGVfdGFzayhzbXBfcHJvY2Vzc29yX2lkKCkp KSkNCkBAIC02MzMsNiArNjM0LDcgQEANCiAjZW5kaWYgLyogX19TTVBfXyAq Lw0KIH0NCiANCitGQVNUQ0FMTCh2b2lkIHNjaGVkdWxlX3RhaWwgKHN0cnVj dCB0YXNrX3N0cnVjdCAqcHJldikpOwkvKiBrZWVwIGluIHN5bmMgd2l0aCBl bnRyeS5TICovDQogdm9pZCBzY2hlZHVsZV90YWlsIChzdHJ1Y3QgdGFza19z dHJ1Y3QgKnByZXYpDQogew0KIAlfX3NjaGVkdWxlX3RhaWwocHJldik7DQpA QCAtNzgzLDcgKzc4NSw2IEBADQogCSAqLw0KIAlnZXRfbW11X2NvbnRleHQo cHJldiwgbmV4dCk7DQogCXN3aXRjaF90byhwcmV2LCBuZXh0LCBwcmV2KTsN Ci0JcHV0X21tdV9jb250ZXh0KHByZXYsIG5leHQpOw0KIAlfX3NjaGVkdWxl X3RhaWwocHJldik7DQogDQogc2FtZV9wcm9jZXNzOg0KQEAgLTIwMDUsNiAr MjAwNiw4IEBADQogCXQgPSBnZXRfY3ljbGVzKCk7DQogCXNjaGVkX2RhdGEt PmN1cnIgPSBjdXJyZW50Ow0KIAlzY2hlZF9kYXRhLT5sYXN0X3NjaGVkdWxl ID0gdDsNCisJaWYgKCFjdXJyZW50LT5mbGFncyAmIFBGX0xBWllfVExCKQ0K KwkJcHJpbnRrKCJpZGxlIGRvZXNuJ3QgaGF2ZSBhIGxhenkgdGxiIVxuIik7 DQogfQ0KIA0KIHZvaWQgX19pbml0IHNjaGVkX2luaXQodm9pZCkNCkBAIC0y MDI4LDcgKzIwMzEsNyBAQA0KIAkvKg0KIAkgKiBUaGUgYm9vdCBpZGxlIHRo cmVhZCBkb2VzIGxhenkgTU1VIHN3aXRjaGluZyBhcyB3ZWxsOg0KIAkgKi8N Ci0JbW1nZXQoJmluaXRfbW0pOw0KIAljdXJyZW50LT5mbGFncyB8PSBQRl9M QVpZX1RMQjsNCisJZ2V0X21tdV9jb250ZXh0KGN1cnJlbnQsIGN1cnJlbnQp Ow0KIH0NCiANCkluZGV4OiBrZXJuZWwvc29mdGlycS5jDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2JsYWgtbG9jYWwvY3Zzcm9vdC9s aW4yLjMva2VybmVsL3NvZnRpcnEuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMS4xLjENCmRpZmYgLXUgLXUgLXIxLjEuMS4xIHNvZnRpcnEuYw0KLS0t IHNvZnRpcnEuYwkxOTk5LzAzLzIxIDE1OjIyOjAwCTEuMS4xLjENCisrKyBz b2Z0aXJxLmMJMTk5OS8wNy8yMCAwNDowOToxMg0KQEAgLTI2LDQ1ICsyNiw1 MCBAQA0KIHZvaWQgKCpiaF9iYXNlWzMyXSkodm9pZCk7DQogDQogLyoNCi0g KiBUaGlzIG5lZWRzIHRvIG1ha2Ugc3VyZSB0aGF0IG9ubHkgb25lIGJvdHRv bSBoYWxmIGhhbmRsZXINCi0gKiBpcyBldmVyIGFjdGl2ZSBhdCBhIHRpbWUu IFdlIGRvIHRoaXMgd2l0aG91dCBsb2NraW5nIGJ5DQotICogZG9pbmcgYW4g YXRvbWljIGluY3JlbWVudCBvbiB0aGUgaW50cl9jb3VudCwgYW5kIGNoZWNr aW5nDQotICogKG5vbmF0b21pY2FsbHkpIGFnYWluc3QgMS4gT25seSBpZiBp dCdzIDEgZG8gd2Ugc2NoZWR1bGUNCi0gKiB0aGUgYm90dG9tIGhhbGYuDQot ICoNCi0gKiBOb3RlIHRoYXQgdGhlIG5vbi1hdG9taWNpdHkgb2YgdGhlIHRl c3QgKGFzIG9wcG9zZWQgdG8gdGhlDQotICogYWN0dWFsIHVwZGF0ZSkgbWVh bnMgdGhhdCB0aGUgdGVzdCBtYXkgZmFpbCwgYW5kIF9ub2JvZHlfDQotICog cnVucyB0aGUgaGFuZGxlcnMgaWYgdGhlcmUgaXMgYSByYWNlIHRoYXQgbWFr ZXMgbXVsdGlwbGUNCi0gKiBDUFUncyBnZXQgaGVyZSBhdCB0aGUgc2FtZSB0 aW1lLiBUaGF0J3Mgb2ssIHdlJ2xsIHJ1biB0aGVtDQotICogbmV4dCB0aW1l IGFyb3VuZC4NCisgKiBSZXBlYXRlZGx5IHJ1biBvdmVyIHRoZSBib3R0b20g aGFsdmVzIHVudGlsIHRoZXJlIGFyZSBubyBtb3JlLCBidXQgb25seSBydW4N CisgKiBlYWNoIGJvdHRvbSBoYWxmIGF0IG1vc3Qgb25jZS4gIElmIHdlIGRv bid0IGxvb3AsIGlmIG9uZSBib3R0b20gaGFsZiB0cmlnZ2Vycw0KKyAqIGFu b3RoZXIsIGl0IG1pZ2h0IGdldCBkZWxheWVkIGEgbG9uZyB0aW1lLiAgSWYg d2UgbG9vcCBpbmRlZmluYXRlbHksIHRoZW4gdGhlDQorICogc3lzdGVtIHdp bGwgbG9jayBjb21wbGV0ZWx5IHVuZGVyIGEgaGVhdnkgaXJxIGxvYWQuIC1i Y3JsDQogICovDQotc3RhdGljIGlubGluZSB2b2lkIHJ1bl9ib3R0b21faGFs dmVzKHZvaWQpDQotew0KLQl1bnNpZ25lZCBsb25nIGFjdGl2ZTsNCi0Jdm9p ZCAoKipiaCkodm9pZCk7DQotDQotCWFjdGl2ZSA9IGdldF9hY3RpdmVfYmhz KCk7DQotCWNsZWFyX2FjdGl2ZV9iaHMoYWN0aXZlKTsNCi0JYmggPSBiaF9i YXNlOw0KLQlkbyB7DQotCQlpZiAoYWN0aXZlICYgMSkNCi0JCQkoKmJoKSgp Ow0KLQkJYmgrKzsNCi0JCWFjdGl2ZSA+Pj0gMTsNCi0JfSB3aGlsZSAoYWN0 aXZlKTsNCi19DQotDQogYXNtbGlua2FnZSB2b2lkIGRvX2JvdHRvbV9oYWxm KHZvaWQpDQogew0KIAlpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOw0K Kwl1bnNpZ25lZCBsb25nIGxlZnQgPSB+MFVMOw0KKwl1bnNpZ25lZCBsb25n IGFjdGl2ZTsNCisJdm9pZCAoKipiaCkodm9pZCk7DQogDQorYWdhaW46DQog CWlmIChzb2Z0aXJxX3RyeWxvY2soY3B1KSkgew0KIAkJaWYgKGhhcmRpcnFf dHJ5bG9jayhjcHUpKSB7DQogCQkJX19zdGkoKTsNCi0JCQlydW5fYm90dG9t X2hhbHZlcygpOw0KKw0KKwkJCXdoaWxlICgoYWN0aXZlID0gbGVmdCAmIGdl dF9hY3RpdmVfYmhzKCkpKSB7DQorCQkJCWxlZnQgJj0gfmFjdGl2ZTsNCisJ CQkJY2xlYXJfYWN0aXZlX2JocyhhY3RpdmUpOw0KKwkJCQliaCA9IGJoX2Jh c2U7DQorCQkJCWRvIHsNCisJCQkJCWlmIChhY3RpdmUgJiAxKQ0KKwkJCQkJ CSgqYmgpKCk7DQorCQkJCQliaCsrOw0KKwkJCQkJCWFjdGl2ZSA+Pj0gMTsN CisJCQkJfSB3aGlsZSAoYWN0aXZlKTsNCisJCQl9DQorDQogCQkJX19jbGko KTsNCiAJCQloYXJkaXJxX2VuZGxvY2soY3B1KTsNCisJCQlzb2Z0aXJxX2Vu ZGxvY2soY3B1KTsNCisNCisJCQkvKg0KKwkJCSAqIEF2b2lkIHRoZSByYWNl IGJ5IGNoZWNraW5nIGlmIGFueSBib3R0b20gaGFsdmVzDQorCQkJICogYXJl IGFjdGl2ZSBhZnRlciByZWxlYXNpbmcgYWxsIGxvY2tzLiAgVGhpcyBpcyBh DQorCQkJICogcmFyZSByYWNlLCBidXQgc2hvdWxkIGluZXhwZW5zaXZlIHRv IGNoZWNrLiAgLWJjcmwNCisJCQkgKi8NCisJCQlybWIoKTsNCisJCQlpZiAo Z2V0X2FjdGl2ZV9iaHMoKSAmIGxlZnQpDQorCQkJCWdvdG8gYWdhaW47DQor CQkJcmV0dXJuOw0KIAkJfQ0KIAkJc29mdGlycV9lbmRsb2NrKGNwdSk7DQog CX0NCiB9DQorDQpJbmRleDogbW0vcGFnZV9hbGxvYy5jDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2JsYWgtbG9jYWwvY3Zzcm9vdC9s aW4yLjMvbW0vcGFnZV9hbGxvYy5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24g MS4xLjEuNQ0KZGlmZiAtdSAtdSAtcjEuMS4xLjUgcGFnZV9hbGxvYy5jDQot LS0gcGFnZV9hbGxvYy5jCTE5OTkvMDcvMTUgMDU6MDA6NDIJMS4xLjEuNQ0K KysrIHBhZ2VfYWxsb2MuYwkxOTk5LzA3LzIwIDAzOjQwOjM4DQpAQCAtODks NiArODksNyBAQA0KICAqIEhpbnQ6IC1tYXNrID0gMSt+bWFzaw0KICAqLw0K IHNwaW5sb2NrX3QgcGFnZV9hbGxvY19sb2NrID0gU1BJTl9MT0NLX1VOTE9D S0VEOw0KKyNkZWZpbmUgQUREUkVTUyh4KSAoUEFHRV9PRkZTRVQgKyAoKHgp IDw8IFBBR0VfU0hJRlQpKQ0KIA0KIHN0YXRpYyBpbmxpbmUgdm9pZCBmcmVl X3BhZ2VzX29rKHVuc2lnbmVkIGxvbmcgbWFwX25yLCB1bnNpZ25lZCBsb25n IG9yZGVyKQ0KIHsNCkBAIC05Nyw2ICs5OCw3IEBADQogCXVuc2lnbmVkIGxv bmcgbWFzayA9ICh+MFVMKSA8PCBvcmRlcjsNCiAJdW5zaWduZWQgbG9uZyBm bGFnczsNCiANCisJbWVtc2V0KCh2b2lkICopQUREUkVTUyhtYXBfbnIpLCAw eDVhLCBQQUdFX1NJWkUgPDwgb3JkZXIpOw0KIAlzcGluX2xvY2tfaXJxc2F2 ZSgmcGFnZV9hbGxvY19sb2NrLCBmbGFncyk7DQogDQogI2RlZmluZSBsaXN0 KHgpIChtZW1fbWFwKyh4KSkNCkBAIC0xNTksNyArMTYxLDYgQEANCiAjZGVm aW5lIE1BUktfVVNFRChpbmRleCwgb3JkZXIsIGFyZWEpIFwNCiAJY2hhbmdl X2JpdCgoaW5kZXgpID4+ICgxKyhvcmRlcikpLCAoYXJlYSktPm1hcCkNCiAj ZGVmaW5lIENBTl9ETUEoeCkgKFBhZ2VETUEoeCkpDQotI2RlZmluZSBBRERS RVNTKHgpIChQQUdFX09GRlNFVCArICgoeCkgPDwgUEFHRV9TSElGVCkpDQog I2RlZmluZSBSTVFVRVVFKG9yZGVyLCBnZnBfbWFzaykgXA0KIGRvIHsgc3Ry dWN0IGZyZWVfYXJlYV9zdHJ1Y3QgKiBhcmVhID0gZnJlZV9hcmVhK29yZGVy OyBcDQogICAgICB1bnNpZ25lZCBsb25nIG5ld19vcmRlciA9IG9yZGVyOyBc DQo= ---372782664-1839306446-932450807=:2584--

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/