From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luck, Tony" Date: Fri, 16 May 2003 22:33:30 +0000 Subject: [Linux-ia64] Re: [PATCH] head.S fix for unusual load addrs MIME-Version: 1 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C31BFB.2D4EF89E" Message-Id: List-Id: References: In-Reply-To: To: linux-ia64@vger.kernel.org This is a multi-part message in MIME format. ------_=_NextPart_001_01C31BFB.2D4EF89E Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Here's a first crack at the missing fs/proc/kcore.c part of relocating the kernel. Not as pretty as I'd hoped ... just having your kernel at a lower address than your modules isn't sufficient to fit with what the code currently does (which is to assume that your kernel is in the 1-1 area above PAGE_OFFSET). Perhaps it might be cleaner to add the kernel to the vmlist (as somebody suggested before)? That would get rid of almost all the changes except one ... we'd still need to set KCORE_BASE to the start address of region 5, so any suggestions on how to do that in a cleaner way than #ifdef CONFIG_IA64 gratefully accepted. -Tony ------_=_NextPart_001_01C31BFB.2D4EF89E Content-Type: application/octet-stream; name="kcore.c" Content-Transfer-Encoding: base64 Content-Description: kcore.c Content-Disposition: attachment; filename="kcore.c" LyoKICoJZnMvcHJvYy9rY29yZS5jIGtlcm5lbCBFTEYvQU9VVCBjb3JlIGR1bXBlcgogKgogKglN b2RlbGxlZCBvbiBmcy9leGVjLmM6YW91dF9jb3JlX2R1bXAoKQogKglKZXJlbXkgRml0emhhcmRp bmdlIDxqZXJlbXlAc3cub3ouYXU+CiAqCUVMRiB2ZXJzaW9uIHdyaXR0ZW4gYnkgRGF2aWQgSG93 ZWxscyA8RGF2aWQuSG93ZWxsc0BuZXhvci5jby51az4KICoJTW9kaWZpZWQgYW5kIGluY29ycG9y YXRlZCBpbnRvIDIuMy54IGJ5IFRpZ3JhbiBBaXZhemlhbiA8dGlncmFuQHZlcml0YXMuY29tPgog KglTdXBwb3J0IHRvIGR1bXAgdm1hbGxvYydkIGFyZWFzIChFTEYgb25seSksIFRpZ3JhbiBBaXZh emlhbiA8dGlncmFuQHZlcml0YXMuY29tPgogKglTYWZlIGFjY2Vzc2VzIHRvIHZtYWxsb2MvZGly ZWN0LW1hcHBlZCBkaXNjb250aWd1b3VzIGFyZWFzLCBLYW5vaiBTYXJjYXIgPGthbm9qQHNnaS5j b20+CiAqLwoKI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgojaW5jbHVkZSA8bGludXgvbW0uaD4K I2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4KI2luY2x1ZGUgPGxpbnV4L3VzZXIuaD4KI2luY2x1 ZGUgPGxpbnV4L2Eub3V0Lmg+CiNpbmNsdWRlIDxsaW51eC9lbGYuaD4KI2luY2x1ZGUgPGxpbnV4 L2VsZmNvcmUuaD4KI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KI2luY2x1ZGUgPGxpbnV4L2hp Z2htZW0uaD4KI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiNpbmNsdWRlIDxhc20vaW8uaD4KCgpz dGF0aWMgaW50IG9wZW5fa2NvcmUoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxlICog ZmlscCkKewoJcmV0dXJuIGNhcGFibGUoQ0FQX1NZU19SQVdJTykgPyAwIDogLUVQRVJNOwp9Cgpz dGF0aWMgc3NpemVfdCByZWFkX2tjb3JlKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBs b2ZmX3QgKik7CgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2Nfa2NvcmVfb3BlcmF0aW9ucyA9 IHsKCXJlYWQ6CQlyZWFkX2tjb3JlLAoJb3BlbjoJCW9wZW5fa2NvcmUsCn07CgojaWZkZWYgQ09O RklHX0tDT1JFX0FPVVQKc3RhdGljIHNzaXplX3QgcmVhZF9rY29yZShzdHJ1Y3QgZmlsZSAqZmls ZSwgY2hhciAqYnVmLCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKewoJdW5zaWduZWQgbG9u ZyBsb25nIHAgPSAqcHBvcywgbWVtc2l6ZTsKCXNzaXplX3QgcmVhZDsKCXNzaXplX3QgY291bnQx OwoJY2hhciAqIHBudDsKCXN0cnVjdCB1c2VyIGR1bXA7CiNpZiBkZWZpbmVkIChfX2kzODZfXykg fHwgZGVmaW5lZCAoX19tYzY4MDAwX18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKIwlkZWZpbmUg RklSU1RfTUFQUEVECVBBR0VfU0laRQkvKiB3ZSBkb24ndCBoYXZlIHBhZ2UgMCBtYXBwZWQgb24g eDg2Li4gKi8KI2Vsc2UKIwlkZWZpbmUgRklSU1RfTUFQUEVECTAKI2VuZGlmCgoJbWVtc2V0KCZk dW1wLCAwLCBzaXplb2Yoc3RydWN0IHVzZXIpKTsKCWR1bXAubWFnaWMgPSBDTUFHSUM7CglkdW1w LnVfZHNpemUgPSAodmlydF90b19waHlzKGhpZ2hfbWVtb3J5KSA+PiBQQUdFX1NISUZUKTsKI2lm IGRlZmluZWQgKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCglkdW1wLnN0YXJ0X2Nv ZGUgPSBQQUdFX09GRlNFVDsKI2VuZGlmCiNpZmRlZiBfX2FscGhhX18KCWR1bXAuc3RhcnRfZGF0 YSA9IFBBR0VfT0ZGU0VUOwojZW5kaWYKCgltZW1zaXplID0gdmlydF90b19waHlzKGhpZ2hfbWVt b3J5KTsKCWlmIChwID49IG1lbXNpemUpCgkJcmV0dXJuIDA7CglpZiAoY291bnQgPiBtZW1zaXpl IC0gcCkKCQljb3VudCA9IG1lbXNpemUgLSBwOwoJcmVhZCA9IDA7CgoJaWYgKHAgPCBzaXplb2Yo c3RydWN0IHVzZXIpICYmIGNvdW50ID4gMCkgewoJCWNvdW50MSA9IGNvdW50OwoJCWlmIChwICsg Y291bnQxID4gc2l6ZW9mKHN0cnVjdCB1c2VyKSkKCQkJY291bnQxID0gc2l6ZW9mKHN0cnVjdCB1 c2VyKS1wOwoJCXBudCA9IChjaGFyICopICZkdW1wICsgcDsKCQlpZiAoY29weV90b191c2VyKGJ1 Ziwodm9pZCAqKSBwbnQsIGNvdW50MSkpCgkJCXJldHVybiAtRUZBVUxUOwoJCWJ1ZiArPSBjb3Vu dDE7CgkJcCArPSBjb3VudDE7CgkJY291bnQgLT0gY291bnQxOwoJCXJlYWQgKz0gY291bnQxOwoJ fQoKCWlmIChjb3VudCA+IDAgJiYgcCA8IFBBR0VfU0laRSArIEZJUlNUX01BUFBFRCkgewoJCWNv dW50MSA9IFBBR0VfU0laRSArIEZJUlNUX01BUFBFRCAtIHA7CgkJaWYgKGNvdW50MSA+IGNvdW50 KQoJCQljb3VudDEgPSBjb3VudDsKCQlpZiAoY2xlYXJfdXNlcihidWYsIGNvdW50MSkpCgkJCXJl dHVybiAtRUZBVUxUOwoJCWJ1ZiArPSBjb3VudDE7CgkJcCArPSBjb3VudDE7CgkJY291bnQgLT0g Y291bnQxOwoJCXJlYWQgKz0gY291bnQxOwoJfQoJaWYgKGNvdW50ID4gMCkgewoJCWlmIChjb3B5 X3RvX3VzZXIoYnVmLCAodm9pZCAqKSAoUEFHRV9PRkZTRVQrcC1QQUdFX1NJWkUpLCBjb3VudCkp CgkJCXJldHVybiAtRUZBVUxUOwoJCXJlYWQgKz0gY291bnQ7Cgl9CgkqcHBvcyArPSByZWFkOwoJ cmV0dXJuIHJlYWQ7Cn0KI2Vsc2UgLyogQ09ORklHX0tDT1JFX0FPVVQgKi8KCiNkZWZpbmUgcm91 bmR1cCh4LCB5KSAgKCgoKHgpKygoeSktMSkpLyh5KSkqKHkpKQoKLyogQW4gRUxGIG5vdGUgaW4g bWVtb3J5ICovCnN0cnVjdCBtZW1lbGZub3RlCnsKCWNvbnN0IGNoYXIgKm5hbWU7CglpbnQgdHlw ZTsKCXVuc2lnbmVkIGludCBkYXRhc3o7Cgl2b2lkICpkYXRhOwp9OwoKZXh0ZXJuIGNoYXIgc2F2 ZWRfY29tbWFuZF9saW5lW107CgpzdGF0aWMgc2l6ZV90IGdldF9rY29yZV9zaXplKGludCAqbnVt X3ZtYSwgc2l6ZV90ICplbGZfYnVmbGVuKQp7CglzaXplX3QgdHJ5LCBzaXplOwoJc3RydWN0IHZt X3N0cnVjdCAqbTsKCgkqbnVtX3ZtYSA9IDA7CglzaXplID0gKChzaXplX3QpaGlnaF9tZW1vcnkg LSBQQUdFX09GRlNFVCArIFBBR0VfU0laRSk7CglpZiAoIXZtbGlzdCkgewoJCSplbGZfYnVmbGVu ID0gUEFHRV9TSVpFOwoJCXJldHVybiAoc2l6ZSk7Cgl9CgoJZm9yIChtPXZtbGlzdDsgbTsgbT1t LT5uZXh0KSB7CgkJdHJ5ID0gKHNpemVfdCltLT5hZGRyICsgbS0+c2l6ZTsKCQlpZiAodHJ5ID4g c2l6ZSkKCQkJc2l6ZSA9IHRyeTsKCQkqbnVtX3ZtYSA9ICpudW1fdm1hICsgMTsKCX0KCSplbGZf YnVmbGVuID0Jc2l6ZW9mKHN0cnVjdCBlbGZoZHIpICsgCgkJCSgqbnVtX3ZtYSArIDIpKnNpemVv ZihzdHJ1Y3QgZWxmX3BoZHIpICsgCgkJCTMgKiBzaXplb2Yoc3RydWN0IG1lbWVsZm5vdGUpOwoJ KmVsZl9idWZsZW4gPSBQQUdFX0FMSUdOKCplbGZfYnVmbGVuKTsKCXJldHVybiAoc2l6ZSAtIFBB R0VfT0ZGU0VUICsgKmVsZl9idWZsZW4pOwp9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKgog KiBkZXRlcm1pbmUgc2l6ZSBvZiBFTEYgbm90ZQogKi8Kc3RhdGljIGludCBub3Rlc2l6ZShzdHJ1 Y3QgbWVtZWxmbm90ZSAqZW4pCnsKCWludCBzejsKCglzeiA9IHNpemVvZihzdHJ1Y3QgZWxmX25v dGUpOwoJc3ogKz0gcm91bmR1cChzdHJsZW4oZW4tPm5hbWUpLCA0KTsKCXN6ICs9IHJvdW5kdXAo ZW4tPmRhdGFzeiwgNCk7CgoJcmV0dXJuIHN6Owp9IC8qIGVuZCBub3Rlc2l6ZSgpICovCgovKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCi8qCiAqIHN0b3JlIGEgbm90ZSBpbiB0aGUgaGVhZGVyIGJ1ZmZl cgogKi8Kc3RhdGljIGNoYXIgKnN0b3Jlbm90ZShzdHJ1Y3QgbWVtZWxmbm90ZSAqbWVuLCBjaGFy ICpidWZwKQp7CglzdHJ1Y3QgZWxmX25vdGUgZW47CgojZGVmaW5lIERVTVBfV1JJVEUoYWRkcixu cikgZG8geyBtZW1jcHkoYnVmcCxhZGRyLG5yKTsgYnVmcCArPSBucjsgfSB3aGlsZSgwKQoKCWVu Lm5fbmFtZXN6ID0gc3RybGVuKG1lbi0+bmFtZSk7Cgllbi5uX2Rlc2NzeiA9IG1lbi0+ZGF0YXN6 OwoJZW4ubl90eXBlID0gbWVuLT50eXBlOwoKCURVTVBfV1JJVEUoJmVuLCBzaXplb2YoZW4pKTsK CURVTVBfV1JJVEUobWVuLT5uYW1lLCBlbi5uX25hbWVzeik7CgoJLyogWFhYIC0gY2FzdCBmcm9t IGxvbmcgbG9uZyB0byBsb25nIHRvIGF2b2lkIG5lZWQgZm9yIGxpYmdjYy5hICovCglidWZwID0g KGNoYXIqKSByb3VuZHVwKCh1bnNpZ25lZCBsb25nKWJ1ZnAsNCk7CglEVU1QX1dSSVRFKG1lbi0+ ZGF0YSwgbWVuLT5kYXRhc3opOwoJYnVmcCA9IChjaGFyKikgcm91bmR1cCgodW5zaWduZWQgbG9u ZylidWZwLDQpOwoKI3VuZGVmIERVTVBfV1JJVEUKCglyZXR1cm4gYnVmcDsKfSAvKiBlbmQgc3Rv cmVub3RlKCkgKi8KCi8qCiAqIHN0b3JlIGFuIEVMRiBjb3JlZHVtcCBoZWFkZXIgaW4gdGhlIHN1 cHBsaWVkIGJ1ZmZlcgogKiBudW1fdm1hIGlzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdm1s aXN0CiAqLwpzdGF0aWMgdm9pZCBlbGZfa2NvcmVfc3RvcmVfaGRyKGNoYXIgKmJ1ZnAsIGludCBu dW1fdm1hLCBpbnQgZGF0YW9mZikKewoJc3RydWN0IGVsZl9wcnN0YXR1cyBwcnN0YXR1czsJLyog TlRfUFJTVEFUVVMgKi8KCXN0cnVjdCBlbGZfcHJwc2luZm8gcHJwc2luZm87CS8qIE5UX1BSUFNJ TkZPICovCglzdHJ1Y3QgZWxmX3BoZHIgKm5oZHIsICpwaGRyOwoJc3RydWN0IGVsZmhkciAqZWxm OwoJc3RydWN0IG1lbWVsZm5vdGUgbm90ZXNbM107CglvZmZfdCBvZmZzZXQgPSAwOwoJc3RydWN0 IHZtX3N0cnVjdCAqbTsKCgkvKiBzZXR1cCBFTEYgaGVhZGVyICovCgllbGYgPSAoc3RydWN0IGVs ZmhkciAqKSBidWZwOwoJYnVmcCArPSBzaXplb2Yoc3RydWN0IGVsZmhkcik7CglvZmZzZXQgKz0g c2l6ZW9mKHN0cnVjdCBlbGZoZHIpOwoJbWVtY3B5KGVsZi0+ZV9pZGVudCwgRUxGTUFHLCBTRUxG TUFHKTsKCWVsZi0+ZV9pZGVudFtFSV9DTEFTU10JPSBFTEZfQ0xBU1M7CgllbGYtPmVfaWRlbnRb RUlfREFUQV0JPSBFTEZfREFUQTsKCWVsZi0+ZV9pZGVudFtFSV9WRVJTSU9OXT0gRVZfQ1VSUkVO VDsKCW1lbXNldChlbGYtPmVfaWRlbnQrRUlfUEFELCAwLCBFSV9OSURFTlQtRUlfUEFEKTsKCWVs Zi0+ZV90eXBlCT0gRVRfQ09SRTsKCWVsZi0+ZV9tYWNoaW5lCT0gRUxGX0FSQ0g7CgllbGYtPmVf dmVyc2lvbgk9IEVWX0NVUlJFTlQ7CgllbGYtPmVfZW50cnkJPSAwOwoJZWxmLT5lX3Bob2ZmCT0g c2l6ZW9mKHN0cnVjdCBlbGZoZHIpOwoJZWxmLT5lX3Nob2ZmCT0gMDsKCWVsZi0+ZV9mbGFncwk9 IDA7CgllbGYtPmVfZWhzaXplCT0gc2l6ZW9mKHN0cnVjdCBlbGZoZHIpOwoJZWxmLT5lX3BoZW50 c2l6ZT0gc2l6ZW9mKHN0cnVjdCBlbGZfcGhkcik7CgllbGYtPmVfcGhudW0JPSAyICsgbnVtX3Zt YTsKCWVsZi0+ZV9zaGVudHNpemU9IDA7CgllbGYtPmVfc2hudW0JPSAwOwoJZWxmLT5lX3Noc3Ry bmR4CT0gMDsKCgkvKiBzZXR1cCBFTEYgUFRfTk9URSBwcm9ncmFtIGhlYWRlciAqLwoJbmhkciA9 IChzdHJ1Y3QgZWxmX3BoZHIgKikgYnVmcDsKCWJ1ZnAgKz0gc2l6ZW9mKHN0cnVjdCBlbGZfcGhk cik7CglvZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCBlbGZfcGhkcik7CgluaGRyLT5wX3R5cGUJPSBQ VF9OT1RFOwoJbmhkci0+cF9vZmZzZXQJPSAwOwoJbmhkci0+cF92YWRkcgk9IDA7CgluaGRyLT5w X3BhZGRyCT0gMDsKCW5oZHItPnBfZmlsZXN6CT0gMDsKCW5oZHItPnBfbWVtc3oJPSAwOwoJbmhk ci0+cF9mbGFncwk9IDA7CgluaGRyLT5wX2FsaWduCT0gMDsKCgkvKiBzZXR1cCBFTEYgUFRfTE9B RCBwcm9ncmFtIGhlYWRlciBmb3IgdGhlIAoJICogdmlydHVhbCByYW5nZSAweGMwMDAwMDAwIC0+ IGhpZ2hfbWVtb3J5ICovCglwaGRyID0gKHN0cnVjdCBlbGZfcGhkciAqKSBidWZwOwoJYnVmcCAr PSBzaXplb2Yoc3RydWN0IGVsZl9waGRyKTsKCW9mZnNldCArPSBzaXplb2Yoc3RydWN0IGVsZl9w aGRyKTsKCXBoZHItPnBfdHlwZQk9IFBUX0xPQUQ7CglwaGRyLT5wX2ZsYWdzCT0gUEZfUnxQRl9X fFBGX1g7CglwaGRyLT5wX29mZnNldAk9IGRhdGFvZmY7CglwaGRyLT5wX3ZhZGRyCT0gUEFHRV9P RkZTRVQ7CglwaGRyLT5wX3BhZGRyCT0gX19wYShQQUdFX09GRlNFVCk7CglwaGRyLT5wX2ZpbGVz egk9IHBoZHItPnBfbWVtc3ogPSAoKHVuc2lnbmVkIGxvbmcpaGlnaF9tZW1vcnkgLSBQQUdFX09G RlNFVCk7CglwaGRyLT5wX2FsaWduCT0gUEFHRV9TSVpFOwoKCS8qIHNldHVwIEVMRiBQVF9MT0FE IHByb2dyYW0gaGVhZGVyIGZvciBldmVyeSB2bWFsbG9jJ2QgYXJlYSAqLwoJZm9yIChtPXZtbGlz dDsgbTsgbT1tLT5uZXh0KSB7CgkJaWYgKG0tPmZsYWdzICYgVk1fSU9SRU1BUCkgLyogZG9uJ3Qg ZHVtcCBpb3JlbWFwJ2Qgc3R1ZmYhIChUQSkgKi8KCQkJY29udGludWU7CgoJCXBoZHIgPSAoc3Ry dWN0IGVsZl9waGRyICopIGJ1ZnA7CgkJYnVmcCArPSBzaXplb2Yoc3RydWN0IGVsZl9waGRyKTsK CQlvZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCBlbGZfcGhkcik7CgoJCXBoZHItPnBfdHlwZQk9IFBU X0xPQUQ7CgkJcGhkci0+cF9mbGFncwk9IFBGX1J8UEZfV3xQRl9YOwoJCXBoZHItPnBfb2Zmc2V0 CT0gKHNpemVfdCltLT5hZGRyIC0gUEFHRV9PRkZTRVQgKyBkYXRhb2ZmOwoJCXBoZHItPnBfdmFk ZHIJPSAoc2l6ZV90KW0tPmFkZHI7CgkJcGhkci0+cF9wYWRkcgk9IF9fcGEobS0+YWRkcik7CgkJ cGhkci0+cF9maWxlc3oJPSBwaGRyLT5wX21lbXN6CT0gbS0+c2l6ZTsKCQlwaGRyLT5wX2FsaWdu CT0gUEFHRV9TSVpFOwoJfQoKCS8qCgkgKiBTZXQgdXAgdGhlIG5vdGVzIGluIHNpbWlsYXIgZm9y bSB0byBTVlI0IGNvcmUgZHVtcHMgbWFkZQoJICogd2l0aCBpbmZvIGZyb20gdGhlaXIgL3Byb2Mu CgkgKi8KCW5oZHItPnBfb2Zmc2V0CT0gb2Zmc2V0OwoKCS8qIHNldCB1cCB0aGUgcHJvY2VzcyBz dGF0dXMgKi8KCW5vdGVzWzBdLm5hbWUgPSAiQ09SRSI7Cglub3Rlc1swXS50eXBlID0gTlRfUFJT VEFUVVM7Cglub3Rlc1swXS5kYXRhc3ogPSBzaXplb2Yoc3RydWN0IGVsZl9wcnN0YXR1cyk7Cglu b3Rlc1swXS5kYXRhID0gJnByc3RhdHVzOwoKCW1lbXNldCgmcHJzdGF0dXMsIDAsIHNpemVvZihz dHJ1Y3QgZWxmX3Byc3RhdHVzKSk7CgoJbmhkci0+cF9maWxlc3oJPSBub3Rlc2l6ZSgmbm90ZXNb MF0pOwoJYnVmcCA9IHN0b3Jlbm90ZSgmbm90ZXNbMF0sIGJ1ZnApOwoKCS8qIHNldCB1cCB0aGUg cHJvY2VzcyBpbmZvICovCglub3Rlc1sxXS5uYW1lCT0gIkNPUkUiOwoJbm90ZXNbMV0udHlwZQk9 IE5UX1BSUFNJTkZPOwoJbm90ZXNbMV0uZGF0YXN6CT0gc2l6ZW9mKHN0cnVjdCBlbGZfcHJwc2lu Zm8pOwoJbm90ZXNbMV0uZGF0YQk9ICZwcnBzaW5mbzsKCgltZW1zZXQoJnBycHNpbmZvLCAwLCBz aXplb2Yoc3RydWN0IGVsZl9wcnBzaW5mbykpOwoJcHJwc2luZm8ucHJfc3RhdGUJPSAwOwoJcHJw c2luZm8ucHJfc25hbWUJPSAnUic7CglwcnBzaW5mby5wcl96b21iCT0gMDsKCglzdHJjcHkocHJw c2luZm8ucHJfZm5hbWUsICJ2bWxpbnV4Iik7CglzdHJuY3B5KHBycHNpbmZvLnByX3BzYXJncywg c2F2ZWRfY29tbWFuZF9saW5lLCBFTEZfUFJBUkdTWik7CgoJbmhkci0+cF9maWxlc3oJPSBub3Rl c2l6ZSgmbm90ZXNbMV0pOwoJYnVmcCA9IHN0b3Jlbm90ZSgmbm90ZXNbMV0sIGJ1ZnApOwoKCS8q IHNldCB1cCB0aGUgdGFzayBzdHJ1Y3R1cmUgKi8KCW5vdGVzWzJdLm5hbWUJPSAiQ09SRSI7Cglu b3Rlc1syXS50eXBlCT0gTlRfVEFTS1NUUlVDVDsKCW5vdGVzWzJdLmRhdGFzegk9IHNpemVvZihz dHJ1Y3QgdGFza19zdHJ1Y3QpOwoJbm90ZXNbMl0uZGF0YQk9IGN1cnJlbnQ7CgoJbmhkci0+cF9m aWxlc3oJPSBub3Rlc2l6ZSgmbm90ZXNbMl0pOwoJYnVmcCA9IHN0b3Jlbm90ZSgmbm90ZXNbMl0s IGJ1ZnApOwoKfSAvKiBlbmQgZWxmX2tjb3JlX3N0b3JlX2hkcigpICovCgovKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCi8qCiAqIHJlYWQgZnJvbSB0aGUgRUxGIGhlYWRlciBhbmQgdGhlbiBrZXJuZWwg bWVtb3J5CiAqLwpzdGF0aWMgc3NpemVfdCByZWFkX2tjb3JlKHN0cnVjdCBmaWxlICpmaWxlLCBj aGFyICpidWZmZXIsIHNpemVfdCBidWZsZW4sIGxvZmZfdCAqZnBvcykKewoJc3NpemVfdCBhY2Mg PSAwOwoJc2l6ZV90IHNpemUsIHRzejsKCXNpemVfdCBlbGZfYnVmbGVuOwoJaW50IG51bV92bWE7 Cgl1bnNpZ25lZCBsb25nIHN0YXJ0OwoKCXJlYWRfbG9jaygmdm1saXN0X2xvY2spOwoJcHJvY19y b290X2tjb3JlLT5zaXplID0gc2l6ZSA9IGdldF9rY29yZV9zaXplKCZudW1fdm1hLCAmZWxmX2J1 Zmxlbik7CglpZiAoYnVmbGVuID09IDAgfHwgKmZwb3MgPj0gc2l6ZSkgewoJCXJlYWRfdW5sb2Nr KCZ2bWxpc3RfbG9jayk7CgkJcmV0dXJuIDA7Cgl9CgoJLyogdHJpbSBidWZsZW4gdG8gbm90IGdv IGJleW9uZCBFT0YgKi8KCWlmIChidWZsZW4gPiBzaXplIC0gKmZwb3MpCgkJYnVmbGVuID0gc2l6 ZSAtICpmcG9zOwoKCS8qIGNvbnN0cnVjdCBhbiBFTEYgY29yZSBoZWFkZXIgaWYgd2UnbGwgbmVl ZCBzb21lIG9mIGl0ICovCglpZiAoKmZwb3MgPCBlbGZfYnVmbGVuKSB7CgkJY2hhciAqIGVsZl9i dWY7CgoJCXRzeiA9IGVsZl9idWZsZW4gLSAqZnBvczsKCQlpZiAoYnVmbGVuIDwgdHN6KQoJCQl0 c3ogPSBidWZsZW47CgkJZWxmX2J1ZiA9IGttYWxsb2MoZWxmX2J1ZmxlbiwgR0ZQX0FUT01JQyk7 CgkJaWYgKCFlbGZfYnVmKSB7CgkJCXJlYWRfdW5sb2NrKCZ2bWxpc3RfbG9jayk7CgkJCXJldHVy biAtRU5PTUVNOwoJCX0KCQltZW1zZXQoZWxmX2J1ZiwgMCwgZWxmX2J1Zmxlbik7CgkJZWxmX2tj b3JlX3N0b3JlX2hkcihlbGZfYnVmLCBudW1fdm1hLCBlbGZfYnVmbGVuKTsKCQlyZWFkX3VubG9j aygmdm1saXN0X2xvY2spOwoJCWlmIChjb3B5X3RvX3VzZXIoYnVmZmVyLCBlbGZfYnVmICsgKmZw b3MsIHRzeikpIHsKCQkJa2ZyZWUoZWxmX2J1Zik7CgkJCXJldHVybiAtRUZBVUxUOwoJCX0KCQlr ZnJlZShlbGZfYnVmKTsKCQlidWZsZW4gLT0gdHN6OwoJCSpmcG9zICs9IHRzejsKCQlidWZmZXIg Kz0gdHN6OwoJCWFjYyArPSB0c3o7CgoJCS8qIGxlYXZlIG5vdyBpZiBmaWxsZWQgYnVmZmVyIGFs cmVhZHkgKi8KCQlpZiAoYnVmbGVuID09IDApCgkJCXJldHVybiBhY2M7Cgl9IGVsc2UKCQlyZWFk X3VubG9jaygmdm1saXN0X2xvY2spOwoKCS8qIHdoZXJlIHBhZ2UgMCBub3QgbWFwcGVkLCB3cml0 ZSB6ZXJvcyBpbnRvIGJ1ZmZlciAqLwojaWYgZGVmaW5lZCAoX19pMzg2X18pIHx8IGRlZmluZWQg KF9fbWM2ODAwMF9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCglpZiAoKmZwb3MgPCBQQUdFX1NJ WkUgKyBlbGZfYnVmbGVuKSB7CgkJLyogd29yayBvdXQgaG93IG11Y2ggdG8gY2xlYXIgKi8KCQl0 c3ogPSBQQUdFX1NJWkUgKyBlbGZfYnVmbGVuIC0gKmZwb3M7CgkJaWYgKGJ1ZmxlbiA8IHRzeikK CQkJdHN6ID0gYnVmbGVuOwoKCQkvKiB3cml0ZSB6ZXJvcyB0byBidWZmZXIgKi8KCQlpZiAoY2xl YXJfdXNlcihidWZmZXIsIHRzeikpCgkJCXJldHVybiAtRUZBVUxUOwoJCWJ1ZmxlbiAtPSB0c3o7 CgkJKmZwb3MgKz0gdHN6OwoJCWJ1ZmZlciArPSB0c3o7CgkJYWNjICs9IHRzejsKCgkJLyogbGVh dmUgbm93IGlmIGZpbGxlZCBidWZmZXIgYWxyZWFkeSAqLwoJCWlmIChidWZsZW4gPT0gMCkKCQkJ cmV0dXJuIHRzejsKCX0KI2VuZGlmCgkKCS8qCgkgKiBGaWxsIHRoZSByZW1haW5kZXIgb2YgdGhl IGJ1ZmZlciBmcm9tIGtlcm5lbCBWTSBzcGFjZS4KCSAqIFdlIHNhaWQgaW4gdGhlIEVMRiBoZWFk ZXIgdGhhdCB0aGUgZGF0YSB3aGljaCBzdGFydHMKCSAqIGF0ICdlbGZfYnVmbGVuJyBpcyB2aXJ0 dWFsIGFkZHJlc3MgUEFHRV9PRkZTRVQuIC0tcm1rCgkgKi8KCXN0YXJ0ID0gUEFHRV9PRkZTRVQg KyAoKmZwb3MgLSBlbGZfYnVmbGVuKTsKCWlmICgodHN6ID0gKFBBR0VfU0laRSAtIChzdGFydCAm IH5QQUdFX01BU0spKSkgPiBidWZsZW4pCgkJdHN6ID0gYnVmbGVuOwoJCQoJd2hpbGUgKGJ1Zmxl bikgewoJCWlmICgoc3RhcnQgPj0gVk1BTExPQ19TVEFSVCkgJiYgKHN0YXJ0IDwgVk1BTExPQ19F TkQpKSB7CgkJCWNoYXIgKiBlbGZfYnVmOwoJCQlzdHJ1Y3Qgdm1fc3RydWN0ICptOwoJCQl1bnNp Z25lZCBsb25nIGN1cnN0YXJ0ID0gc3RhcnQ7CgkJCXVuc2lnbmVkIGxvbmcgY3Vyc2l6ZSA9IHRz ejsKCgkJCWVsZl9idWYgPSBrbWFsbG9jKHRzeiwgR0ZQX0tFUk5FTCk7CgkJCWlmICghZWxmX2J1 ZikKCQkJCXJldHVybiAtRU5PTUVNOwoJCQltZW1zZXQoZWxmX2J1ZiwgMCwgdHN6KTsKCgkJCXJl YWRfbG9jaygmdm1saXN0X2xvY2spOwoJCQlmb3IgKG09dm1saXN0OyBtICYmIGN1cnNpemU7IG09 bS0+bmV4dCkgewoJCQkJdW5zaWduZWQgbG9uZyB2bXN0YXJ0OwoJCQkJdW5zaWduZWQgbG9uZyB2 bXNpemU7CgkJCQl1bnNpZ25lZCBsb25nIG1zaXplID0gbS0+c2l6ZSAtIFBBR0VfU0laRTsKCgkJ CQlpZiAoKCh1bnNpZ25lZCBsb25nKW0tPmFkZHIgKyBtc2l6ZSkgPCAKCQkJCQkJCQljdXJzdGFy dCkKCQkJCQljb250aW51ZTsKCQkJCWlmICgodW5zaWduZWQgbG9uZyltLT5hZGRyID4gKGN1cnN0 YXJ0ICsgCgkJCQkJCQkJY3Vyc2l6ZSkpCgkJCQkJYnJlYWs7CgkJCQl2bXN0YXJ0ID0gKGN1cnN0 YXJ0IDwgKHVuc2lnbmVkIGxvbmcpbS0+YWRkciA/IAoJCQkJCSh1bnNpZ25lZCBsb25nKW0tPmFk ZHIgOiBjdXJzdGFydCk7CgkJCQlpZiAoKCh1bnNpZ25lZCBsb25nKW0tPmFkZHIgKyBtc2l6ZSkg PiAKCQkJCQkJCShjdXJzdGFydCArIGN1cnNpemUpKQoJCQkJCXZtc2l6ZSA9IGN1cnN0YXJ0ICsg Y3Vyc2l6ZSAtIHZtc3RhcnQ7CgkJCQllbHNlCgkJCQkJdm1zaXplID0gKHVuc2lnbmVkIGxvbmcp bS0+YWRkciArIAoJCQkJCQkJbXNpemUgLSB2bXN0YXJ0OwoJCQkJY3Vyc3RhcnQgPSB2bXN0YXJ0 ICsgdm1zaXplOwoJCQkJY3Vyc2l6ZSAtPSB2bXNpemU7CgkJCQkvKiBkb24ndCBkdW1wIGlvcmVt YXAnZCBzdHVmZiEgKFRBKSAqLwoJCQkJaWYgKG0tPmZsYWdzICYgVk1fSU9SRU1BUCkKCQkJCQlj b250aW51ZTsKCQkJCW1lbWNweShlbGZfYnVmICsgKHZtc3RhcnQgLSBzdGFydCksCgkJCQkJKGNo YXIgKil2bXN0YXJ0LCB2bXNpemUpOwoJCQl9CgkJCXJlYWRfdW5sb2NrKCZ2bWxpc3RfbG9jayk7 CgkJCWlmIChjb3B5X3RvX3VzZXIoYnVmZmVyLCBlbGZfYnVmLCB0c3opKSB7CgkJCQlrZnJlZShl bGZfYnVmKTsKCQkJCXJldHVybiAtRUZBVUxUOwoJCQl9CgkJCWtmcmVlKGVsZl9idWYpOwoJCX0g ZWxzZSBpZiAoKHN0YXJ0ID4gUEFHRV9PRkZTRVQpICYmIChzdGFydCA8IAoJCQkJCQkodW5zaWdu ZWQgbG9uZyloaWdoX21lbW9yeSkpIHsKCQkJaWYgKGtlcm5fYWRkcl92YWxpZChzdGFydCkpIHsK CQkJCWlmIChjb3B5X3RvX3VzZXIoYnVmZmVyLCAoY2hhciAqKXN0YXJ0LCB0c3opKQoJCQkJCXJl dHVybiAtRUZBVUxUOwoJCQl9IGVsc2UgewoJCQkJaWYgKGNsZWFyX3VzZXIoYnVmZmVyLCB0c3op KQoJCQkJCXJldHVybiAtRUZBVUxUOwoJCQl9CgkJfSBlbHNlIHsKCQkJaWYgKGNsZWFyX3VzZXIo YnVmZmVyLCB0c3opKQoJCQkJcmV0dXJuIC1FRkFVTFQ7CgkJfQoJCWJ1ZmxlbiAtPSB0c3o7CgkJ KmZwb3MgKz0gdHN6OwoJCWJ1ZmZlciArPSB0c3o7CgkJYWNjICs9IHRzejsKCQlzdGFydCArPSB0 c3o7CgkJdHN6ID0gKGJ1ZmxlbiA+IFBBR0VfU0laRSA/IFBBR0VfU0laRSA6IGJ1Zmxlbik7Cgl9 CgoJcmV0dXJuIGFjYzsKfQojZW5kaWYgLyogQ09ORklHX0tDT1JFX0FPVVQgKi8K ------_=_NextPart_001_01C31BFB.2D4EF89E--