From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261577AbVG1QCp (ORCPT ); Thu, 28 Jul 2005 12:02:45 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S261451AbVG1PtN (ORCPT ); Thu, 28 Jul 2005 11:49:13 -0400 Received: from ecfrec.frec.bull.fr ([129.183.4.8]:48876 "EHLO ecfrec.frec.bull.fr") by vger.kernel.org with ESMTP id S261573AbVG1Prn (ORCPT ); Thu, 28 Jul 2005 11:47:43 -0400 Subject: [PATCH 2/5] Add support for AIO completion notification From: =?ISO-8859-1?Q?S=E9bastien_Dugu=E9?= To: "linux-aio kvack.org" , "linux-kernel@vger.kernel.org" Date: Thu, 28 Jul 2005 17:46:32 +0200 Message-Id: <1122565592.2019.81.camel@frecb000686> Mime-Version: 1.0 X-Mailer: Evolution 2.0.3 X-MIMETrack: Itemize by SMTP Server on ECN002/FR/BULL(Release 5.0.12 |February 13, 2003) at 28/07/2005 17:59:47, Serialize by Router on ECN002/FR/BULL(Release 5.0.12 |February 13, 2003) at 28/07/2005 17:59:49 Content-Type: multipart/mixed; boundary="=-tjQSvsMteG8jav4cSg2Z" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org --=-tjQSvsMteG8jav4cSg2Z Content-Transfer-Encoding: 7bit Content-Type: text/plain --=-tjQSvsMteG8jav4cSg2Z Content-Disposition: attachment; filename=aioevent Content-Type: application/octet-stream; name=aioevent Content-Transfer-Encoding: base64 YWlvZXZlbnQ6CgogVGhpcyBwYXRjaCBhZGRzIFBPU0lYIEFJTyBjb21wbGV0aW9uIG5vdGlmaWNh dGlvbiBldmVudCBieSBhZGRpbmcgYW4gYWlvX3NpZ2V2ZW50CmZpZWxkIHRvIHRoZSBhaW9jYi4K CiBUaGUgc2lnZXZlbnQgc3RydWN0dXJlIGlzIGZpbGxlZCBpbiBieSB0aGUgdXNlciBhcHBsaWNh dGlvbiBhcyBwYXJ0IG9mIHRoZQpBSU8gcmVxdWVzdCBwcmVwYXJhdGlvbi4gVXBvbiByZXF1ZXN0 IGNvbXBsZXRpb24sIHRoZSBrZXJuZWwgbm90aWZpZXMgdGhlCmFwcGxpY2F0aW9uIHVzaW5nIHRo b3NlIHNpZ2V2ZW50IHBhcmFtZXRlcnMuCgoKCiBNYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAg IDIKIGZzL2Fpby5jICAgICAgICAgICAgICAgIHwgIDI2NCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIGluY2x1ZGUvbGludXgvYWlvLmggICAgIHwgICAx MCArCiBpbmNsdWRlL2xpbnV4L2Fpb19hYmkuaCB8ICAgIDIKIDQgZmlsZXMgY2hhbmdlZCwgMjM2 IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQoKU2lnbmVkLW9mZi1ieTogU+liYXN0aWVu IER1Z3XpIDxzZWJhc3RpZW4uZHVndWVAYnVsbC5uZXQ+CgpJbmRleDogbGludXgtMi42LjEyL2Zz L2Fpby5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xMi5vcmlnL2ZzL2Fpby5jCTIwMDUtMDYt MjMgMTQ6MTk6MjYuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTIvZnMvYWlvLmMJMjAw NS0wNi0yMyAxNDoxOToyOC4wMDAwMDAwMDAgKzAyMDAKQEAgLTQwNiw2ICs0MDYsMTAgQEAKIAly ZXEtPmtpX2NhbmNlbCA9IE5VTEw7CiAJcmVxLT5raV9yZXRyeSA9IE5VTEw7CiAJcmVxLT5raV9k dG9yID0gTlVMTDsKKwlyZXEtPmtpX3BpZCA9IDA7CisJcmVxLT5raV9zaWdubyA9IDA7CisJcmVx LT5raV9ub3RpZnkgPSAwOworCXJlcS0+a2lfdmFsdWUgPSAwOwogCXJlcS0+cHJpdmF0ZSA9IE5V TEw7CiAJSU5JVF9MSVNUX0hFQUQoJnJlcS0+a2lfcnVuX2xpc3QpOwogCkBAIC05MDYsNiArOTEw LDkyIEBACiB9CiBFWFBPUlRfU1lNQk9MKGtpY2tfaW9jYik7CiAKK3N0YXRpYyB2b2lkIF9fYWlv X3NlbmRfc2lnbmFsKHBpZF90IHBpZCwgaW50IHNpZ25vLCBpbnQgbm90aWZ5LCB2b2lkICpvYmop Cit7CisJc3RydWN0IHNpZ2luZm8gaW5mbzsKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnA7CisKKwlt ZW1zZXQoJmluZm8sIDAsIHNpemVvZihzdHJ1Y3Qgc2lnaW5mbykpOworCisJaW5mby5zaV9zaWdu byA9IHNpZ25vOworCWluZm8uc2lfZXJybm8gPSAwOworCWluZm8uc2lfY29kZSA9IFNJX0FTWU5D SU87CisJaW5mby5zaV9waWQgPSAwOworCWluZm8uc2lfdWlkID0gMDsKKwlpbmZvLnNpX3B0ciA9 IG9iajsKKworCXJlYWRfbG9jaygmdGFza2xpc3RfbG9jayk7CisJcCA9IGZpbmRfdGFza19ieV9w aWQocGlkKTsKKworCWlmIChwLT5zaWdoYW5kKSB7CisJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJ CWludCByZXQgPSAtMTsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmcC0+c2lnaGFuZC0+c2lnbG9j aywgZmxhZ3MpOworCisJCXN3aXRjaChub3RpZnkpIHsKKworCQljYXNlIElPX05PVElGWV9TSUdO QUw6CisJCQlyZXQgPSBfX2dyb3VwX3NlbmRfc2lnX2luZm8oc2lnbm8sICZpbmZvLCBwKTsKKwkJ CWJyZWFrOworCQljYXNlIElPX05PVElGWV9USFJFQURfSUQ6CisJCQkvL3JldCA9IHNwZWNpZmlj X3NlbmRfc2lnX2luZm8oc2lnbm8sICZpbmZvLCBwKTsKKwkJCXJldCA9IF9fZ3JvdXBfc2VuZF9z aWdfaW5mbyhzaWdubywgJmluZm8sIHApOworCQkJYnJlYWs7CisJCX0KKworCQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZwLT5zaWdoYW5kLT5zaWdsb2NrLCBmbGFncyk7CisKKwkJaWYgKHJldCkK KwkJCXByaW50ayhLRVJOX0RFQlVHICJfX2Fpb19zZW5kX3NpZ25hbDogZmFpbGVkIHRvIHNlbmQg c2lnbmFsICVkIHRvICVkXG4iLAorCQkJICAgICAgIHNpZ25vLCBwaWQpOworCX0KKwlyZWFkX3Vu bG9jaygmdGFza2xpc3RfbG9jayk7Cit9CisKK3N0YXRpYyB2b2lkIF9fYWlvX3dyaXRlX2V2dChz dHJ1Y3Qga2lvY3R4ICpjdHgsIHN0cnVjdCBpb19ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGFp b19yaW5nX2luZm8JKmluZm87CisJc3RydWN0IGFpb19yaW5nICpyaW5nOworCXN0cnVjdCBpb19l dmVudCAqcmluZ19ldmVudDsKKwl1bnNpZ25lZCBsb25nICAgdGFpbDsKKworCWluZm8gPSAmY3R4 LT5yaW5nX2luZm87CisKKwkvKiBhZGQgYSBjb21wbGV0aW9uIGV2ZW50IHRvIHRoZSByaW5nIGJ1 ZmZlci4KKwkgKiBtdXN0IGJlIGRvbmUgaG9sZGluZyBjdHgtPmN0eF9sb2NrIHRvIHByZXZlbnQK KwkgKiBvdGhlciBjb2RlIGZyb20gbWVzc2luZyB3aXRoIHRoZSB0YWlsCisJICogcG9pbnRlciBz aW5jZSB3ZSBtaWdodCBiZSBjYWxsZWQgZnJvbSBpcnEKKwkgKiBjb250ZXh0LgorCSAqLworCisJ cmluZyA9IGttYXBfYXRvbWljKGluZm8tPnJpbmdfcGFnZXNbMF0sIEtNX0lSUTEpOworCisJdGFp bCA9IGluZm8tPnRhaWw7CisJcmluZ19ldmVudCA9IGFpb19yaW5nX2V2ZW50KGluZm8sIHRhaWws IEtNX0lSUTApOworCWlmICgrK3RhaWwgPj0gaW5mby0+bnIpCisJCXRhaWwgPSAwOworCisJKnJp bmdfZXZlbnQgPSAqZXZlbnQ7CisKKwlkcHJpbnRrKCJhaW9fd3JpdGVfZXZ0OiAlcFslbHVdOiAl THggJUx4ICVMeCAlTHhcbiIsCisJCWN0eCwgdGFpbCwgZXZlbnQtPm9iaiwgZXZlbnQtPmRhdGEs IGV2ZW50LT5yZXMsIGV2ZW50LT5yZXMyKTsKKworCS8qIGFmdGVyIGZsYWdnaW5nIHRoZSByZXF1 ZXN0IGFzIGRvbmUsIHdlCisJICogbXVzdCBuZXZlciBldmVuIGxvb2sgYXQgaXQgYWdhaW4KKwkg Ki8KKworCXNtcF93bWIoKTsJLyogbWFrZSBldmVudCB2aXNpYmxlIGJlZm9yZSB1cGRhdGluZyB0 YWlsICovCisKKwlpbmZvLT50YWlsID0gdGFpbDsKKwlyaW5nLT50YWlsID0gdGFpbDsKKworCXB1 dF9haW9fcmluZ19ldmVudChyaW5nX2V2ZW50LCBLTV9JUlEwKTsKKwlrdW5tYXBfYXRvbWljKHJp bmcsIEtNX0lSUTEpOworCisJcHJfZGVidWcoImFkZGVkIHRvIHJpbmcgYXQgWyVsdV1cbiIsIHRh aWwpOworfQorCiAvKiBhaW9fY29tcGxldGUKICAqCUNhbGxlZCB3aGVuIHRoZSBpbyByZXF1ZXN0 IG9uIHRoZSBnaXZlbiBpb2NiIGlzIGNvbXBsZXRlLgogICoJUmV0dXJucyB0cnVlIGlmIHRoaXMg aXMgdGhlIGxhc3QgdXNlciBvZiB0aGUgcmVxdWVzdC4gIFRoZSAKQEAgLTkxNCwxMSArMTAwNCw4 IEBACiBpbnQgZmFzdGNhbGwgYWlvX2NvbXBsZXRlKHN0cnVjdCBraW9jYiAqaW9jYiwgbG9uZyBy ZXMsIGxvbmcgcmVzMikKIHsKIAlzdHJ1Y3Qga2lvY3R4CSpjdHggPSBpb2NiLT5raV9jdHg7Ci0J c3RydWN0IGFpb19yaW5nX2luZm8JKmluZm87Ci0Jc3RydWN0IGFpb19yaW5nCSpyaW5nOwotCXN0 cnVjdCBpb19ldmVudAkqZXZlbnQ7CisJc3RydWN0IGlvX2V2ZW50IGV2ZW50OwogCXVuc2lnbmVk IGxvbmcJZmxhZ3M7Ci0JdW5zaWduZWQgbG9uZwl0YWlsOwogCWludAkJcmV0OwogCiAJLyogU3Bl Y2lhbCBjYXNlIGhhbmRsaW5nIGZvciBzeW5jIGlvY2JzOiBldmVudHMgZ28gZGlyZWN0bHkKQEAg LTk0NSwxNCArMTAzMiwxMyBAQAogCQlyZXR1cm4gcmV0OwogCX0KIAotCWluZm8gPSAmY3R4LT5y aW5nX2luZm87CisJLyogaW5zZXJ0IGV2ZW50IGluIHRoZSBldmVudCByaW5nICovCisKKwlldmVu dC5vYmogPSAodTY0KSh1bnNpZ25lZCBsb25nKWlvY2ItPmtpX29iai51c2VyOworCWV2ZW50LmRh dGEgPSBpb2NiLT5raV91c2VyX2RhdGE7CisJZXZlbnQucmVzID0gcmVzOworCWV2ZW50LnJlczIg PSByZXMyOwogCi0JLyogYWRkIGEgY29tcGxldGlvbiBldmVudCB0byB0aGUgcmluZyBidWZmZXIu Ci0JICogbXVzdCBiZSBkb25lIGhvbGRpbmcgY3R4LT5jdHhfbG9jayB0byBwcmV2ZW50Ci0JICog b3RoZXIgY29kZSBmcm9tIG1lc3Npbmcgd2l0aCB0aGUgdGFpbAotCSAqIHBvaW50ZXIgc2luY2Ug d2UgbWlnaHQgYmUgY2FsbGVkIGZyb20gaXJxCi0JICogY29udGV4dC4KLQkgKi8KIAlzcGluX2xv Y2tfaXJxc2F2ZSgmY3R4LT5jdHhfbG9jaywgZmxhZ3MpOwogCiAJaWYgKGlvY2ItPmtpX3J1bl9s aXN0LnByZXYgJiYgIWxpc3RfZW1wdHkoJmlvY2ItPmtpX3J1bl9saXN0KSkKQEAgLTk2NSwzNCAr MTA1MSwxMSBAQAogCWlmIChraW9jYklzQ2FuY2VsbGVkKGlvY2IpKQogCQlnb3RvIHB1dF9ycTsK IAotCXJpbmcgPSBrbWFwX2F0b21pYyhpbmZvLT5yaW5nX3BhZ2VzWzBdLCBLTV9JUlExKTsKLQot CXRhaWwgPSBpbmZvLT50YWlsOwotCWV2ZW50ID0gYWlvX3JpbmdfZXZlbnQoaW5mbywgdGFpbCwg S01fSVJRMCk7Ci0JaWYgKCsrdGFpbCA+PSBpbmZvLT5ucikKLQkJdGFpbCA9IDA7CisJX19haW9f d3JpdGVfZXZ0KGN0eCwgJmV2ZW50KTsKIAotCWV2ZW50LT5vYmogPSAodTY0KSh1bnNpZ25lZCBs b25nKWlvY2ItPmtpX29iai51c2VyOwotCWV2ZW50LT5kYXRhID0gaW9jYi0+a2lfdXNlcl9kYXRh OwotCWV2ZW50LT5yZXMgPSByZXM7Ci0JZXZlbnQtPnJlczIgPSByZXMyOwotCi0JZHByaW50aygi YWlvX2NvbXBsZXRlOiAlcFslbHVdOiAlcDogJXAgJUx4ICVseCAlbHhcbiIsCi0JCWN0eCwgdGFp bCwgaW9jYiwgaW9jYi0+a2lfb2JqLnVzZXIsIGlvY2ItPmtpX3VzZXJfZGF0YSwKLQkJcmVzLCBy ZXMyKTsKLQotCS8qIGFmdGVyIGZsYWdnaW5nIHRoZSByZXF1ZXN0IGFzIGRvbmUsIHdlCi0JICog bXVzdCBuZXZlciBldmVuIGxvb2sgYXQgaXQgYWdhaW4KLQkgKi8KLQlzbXBfd21iKCk7CS8qIG1h a2UgZXZlbnQgdmlzaWJsZSBiZWZvcmUgdXBkYXRpbmcgdGFpbCAqLwotCi0JaW5mby0+dGFpbCA9 IHRhaWw7Ci0JcmluZy0+dGFpbCA9IHRhaWw7Ci0KLQlwdXRfYWlvX3JpbmdfZXZlbnQoZXZlbnQs IEtNX0lSUTApOwotCWt1bm1hcF9hdG9taWMocmluZywgS01fSVJRMSk7Ci0KLQlwcl9kZWJ1Zygi YWRkZWQgdG8gcmluZyAlcCBhdCBbJWx1XVxuIiwgaW9jYiwgdGFpbCk7CisJaWYgKGlvY2ItPmtp X3NpZ25vKQorCQlfX2Fpb19zZW5kX3NpZ25hbChpb2NiLT5raV9waWQsIGlvY2ItPmtpX3NpZ25v LCBpb2NiLT5raV9ub3RpZnksCisJCQkJICAodm9pZCopKHVuc2lnbmVkIGxvbmcpaW9jYi0+a2lf dmFsdWUpOwogCiAJcHJfZGVidWcoIiVsZCByZXRyaWVzOiAlZCBvZiAlZFxuIiwgaW9jYi0+a2lf cmV0cmllZCwKIAkJaW9jYi0+a2lfbmJ5dGVzIC0gaW9jYi0+a2lfbGVmdCwgaW9jYi0+a2lfbmJ5 dGVzKTsKQEAgLTE0NzAsMTAgKzE1MzMsMTQgQEAKIAlzdHJ1Y3Qga2lvY2IgKnJlcTsKIAlzdHJ1 Y3QgZmlsZSAqZmlsZTsKIAlzc2l6ZV90IHJldDsKKwlpbnQgbm90aWZ5ID0gMDsKKwlzdHJ1Y3Qg c2lnZXZlbnQgX191c2VyICp1c2VyX2V2ZW50ID0gTlVMTDsKKwlpbnQgYWlvX3BpZCA9IDA7CisJ aW50IGFpb19zaWdubyA9IDA7CisJaW50IGFpb192YWx1ZSA9IDA7CiAKIAkvKiBlbmZvcmNlIGZv cndhcmRzIGNvbXBhdGliaWxpdHkgb24gdXNlcnMgKi8KLQlpZiAodW5saWtlbHkoaW9jYi0+YWlv X3Jlc2VydmVkMSB8fCBpb2NiLT5haW9fcmVzZXJ2ZWQyIHx8Ci0JCSAgICAgaW9jYi0+YWlvX3Jl c2VydmVkMykpIHsKKwlpZiAodW5saWtlbHkoaW9jYi0+YWlvX3Jlc2VydmVkMSkpIHsKIAkJcHJf ZGVidWcoIkVJTlZBTDogaW9fc3VibWl0OiByZXNlcnZlIGZpZWxkIHNldFxuIik7CiAJCXJldHVy biAtRUlOVkFMOwogCX0KQEAgLTE0ODgsNiArMTU1NSw3NCBAQAogCQlyZXR1cm4gLUVJTlZBTDsK IAl9CiAKKwkKKwkvKiBHZXQgc2lnZXZlbnQgKi8KKwlpZiAodW5saWtlbHkoX19nZXRfdXNlcih1 c2VyX2V2ZW50LCAoc3RydWN0IHNpZ2V2ZW50IF9fdXNlciAqKikmdXNlcl9pb2NiLT5haW9fc2ln ZXZlbnQpKSkgeworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisKKwlpZiAodXNlcl9ldmVudCAhPSBO VUxMKSB7CisKKwkJLyoKKwkJICogV2UgYXZvaWQgY29weWluZyB0aGUgd2hvbGUgc2lnZXZlbnQg YnVuY2ggYW5kIG9ubHkgZ2V0IHRoZQorCQkgKiBuZWVkZWQgZmllbGRzLgorCQkgKi8KKwkJaWYg KHVubGlrZWx5KF9fZ2V0X3VzZXIoYWlvX3BpZCwKKwkJCQkJJnVzZXJfZXZlbnQtPnNpZ2V2X25v dGlmeV90aHJlYWRfaWQpKSkgeworCQkJcmV0dXJuIC1FRkFVTFQ7CisJCX0KKworCQlpZiAodW5s aWtlbHkoX19nZXRfdXNlcihhaW9fc2lnbm8sCisJCQkJCSZ1c2VyX2V2ZW50LT5zaWdldl9zaWdu bykpKSB7CisJCQlyZXR1cm4gLUVGQVVMVDsKKwkJfQorCisJCWlmICh1bmxpa2VseShfX2dldF91 c2VyKGFpb192YWx1ZSwKKwkJCQkJJnVzZXJfZXZlbnQtPnNpZ2V2X3ZhbHVlLnNpdmFsX2ludCkp KSB7CisJCQlyZXR1cm4gLUVGQVVMVDsKKwkJfQorCX0KKworCWlmIChhaW9fc2lnbm8pIHsKKwor CQlpZiAoIChpb2NiLT5haW9fbGlvX29wY29kZSAhPSBJT0NCX0NNRF9QUkVBRCkgJiYKKwkJICAg ICAoaW9jYi0+YWlvX2xpb19vcGNvZGUgIT0gSU9DQl9DTURfUFdSSVRFKSApCisJCQlyZXR1cm4g LUVJTlZBTDsKKworCQlpZiAoYWlvX3BpZCA9PSAwKSB7CisJCQkvKiBub3RpZnkgaXRzZWxmICov CisKKwkJCWFpb19waWQgPSBjdXJyZW50LT5waWQ7CisJCQlub3RpZnkgPSBJT19OT1RJRllfU0lH TkFMOworCQl9IGVsc2UgeworCQkgICAgICAgIHBpZF90IGdyb3VwX2lkOworCQkJdGFza190ICpw dGFzazsKKwkJCS8qIG5vdGlmeSBnaXZlbiB0aHJlYWQgKi8KKworCQkJLyogY2FsbGVyIHRocmVh ZCBhbmQgdGFyZ2V0IHRocmVhZCBtdXN0IGJlIGluIHNhbWUKKwkJCSAqIHRocmVhZCBncm91cAor CQkJICovCisKKwkJCXJlYWRfbG9jaygmdGFza2xpc3RfbG9jayk7CisKKwkJCXB0YXNrID0gZmlu ZF90YXNrX2J5X3BpZChhaW9fcGlkKTsKKworCQkJaWYgKHVubGlrZWx5IChwdGFzayA9PSBOVUxM KSkgeworCQkJCXJlYWRfdW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKKwkJCQlyZXR1cm4gLUVGQVVM VDsKKwkJCX0KKworCQkJZ3JvdXBfaWQgPSBwdGFzay0+dGdpZDsKKworCQkJcmVhZF91bmxvY2so JnRhc2tsaXN0X2xvY2spOworCisJCQlpZiAoZ3JvdXBfaWQgIT0gY3VycmVudC0+dGdpZCkKKwkJ CQlyZXR1cm4gLUVJTlZBTDsKKworCQkJbm90aWZ5ID0gSU9fTk9USUZZX1RIUkVBRF9JRDsKKwkJ fQorCX0KKwogCWZpbGUgPSBmZ2V0KGlvY2ItPmFpb19maWxkZXMpOwogCWlmICh1bmxpa2VseSgh ZmlsZSkpCiAJCXJldHVybiAtRUJBREY7CkBAIC0xNTA5LDYgKzE2NDQsMTMgQEAKIAlyZXEtPmtp X3VzZXJfZGF0YSA9IGlvY2ItPmFpb19kYXRhOwogCXJlcS0+a2lfcG9zID0gaW9jYi0+YWlvX29m ZnNldDsKIAorCWlmIChhaW9fc2lnbm8pIHsKKwkJcmVxLT5raV9waWQgPSBhaW9fcGlkOworCQly ZXEtPmtpX3NpZ25vID0gYWlvX3NpZ25vOworCQlyZXEtPmtpX25vdGlmeSA9IG5vdGlmeTsKKwkJ cmVxLT5raV92YWx1ZSA9IGFpb192YWx1ZTsKKwl9CisKIAlyZXEtPmtpX2J1ZiA9IChjaGFyIF9f dXNlciAqKSh1bnNpZ25lZCBsb25nKWlvY2ItPmFpb19idWY7CiAJcmVxLT5raV9sZWZ0ID0gcmVx LT5raV9uYnl0ZXMgPSBpb2NiLT5haW9fbmJ5dGVzOwogCXJlcS0+a2lfb3Bjb2RlID0gaW9jYi0+ YWlvX2xpb19vcGNvZGU7CkBAIC0xNTc4LDYgKzE3MjAsMTAgQEAKIAlmb3IgKGk9MDsgaTxucjsg aSsrKSB7CiAJCXN0cnVjdCBpb2NiIF9fdXNlciAqdXNlcl9pb2NiOwogCQlzdHJ1Y3QgaW9jYiB0 bXA7CisJCXN0cnVjdCBzaWdldmVudCBfX3VzZXIgKnVzZXJfZXZlbnQgPSBOVUxMOworCQlpbnQg YWlvX3BpZCA9IDA7CisJCWludCBhaW9fc2lnbm8gPSAwOworCQkKIAogCQlpZiAodW5saWtlbHko X19nZXRfdXNlcih1c2VyX2lvY2IsIGlvY2JwcCArIGkpKSkgewogCQkJcmV0ID0gLUVGQVVMVDsK QEAgLTE1ODksNiArMTczNSw0NCBAQAogCQkJYnJlYWs7CiAJCX0KIAorCQkvKiBDaGVjayB1c2Vy X2lvY2IgYWNjZXNzICovCisJCWlmICh1bmxpa2VseSghYWNjZXNzX29rKFZFUklGWV9SRUFELCB1 c2VyX2lvY2IsIHNpemVvZihzdHJ1Y3QgaW9jYikpKSkgeworCQkJcmV0ID0gLUVGQVVMVDsKKwkJ CWJyZWFrOworCQl9CisKKwkJLyogR2V0IHNpZ2V2ZW50ICovCisJCWlmICh1bmxpa2VseShfX2dl dF91c2VyKHVzZXJfZXZlbnQsIChzdHJ1Y3Qgc2lnZXZlbnQgX191c2VyICoqKSZ1c2VyX2lvY2It PmFpb19zaWdldmVudCkpKSB7CisJCQlyZXQgPSAtRUZBVUxUOworCQkJYnJlYWs7CisJCX0KKwor CQlpZiAodXNlcl9ldmVudCAhPSBOVUxMKSB7CisKKwkJCS8qIENoZWNrIHVzZXJfZXZlbnQgYWNj ZXNzICovCisJCQlpZiAodW5saWtlbHkoIWFjY2Vzc19vayhWRVJJRllfUkVBRCwgdXNlcl9ldmVu dCwKKwkJCQkJCXNpemVvZihzdHJ1Y3Qgc2lnZXZlbnQpKSkpIHsKKwkJCQlyZXQgPSAtRUZBVUxU OworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogV2UgYXZvaWQgY29weWluZyB0aGUg d2hvbGUgc2lnZXZlbnQgYnVuY2ggYW5kIG9ubHkgZ2V0IHRoZQorCQkJICogbmVlZGVkIGZpZWxk cy4KKwkJCSAqLworCQkJaWYgKHVubGlrZWx5KF9fZ2V0X3VzZXIoYWlvX3BpZCwKKwkJCQkJCSZ1 c2VyX2V2ZW50LT5zaWdldl9ub3RpZnlfdGhyZWFkX2lkKSkpIHsKKwkJCQlyZXQgPSAtRUZBVUxU OworCQkJCWJyZWFrOworCQkJfQorCisJCQlpZiAodW5saWtlbHkoX19nZXRfdXNlcihhaW9fc2ln bm8sCisJCQkJCQkmdXNlcl9ldmVudC0+c2lnZXZfc2lnbm8pKSkgeworCQkJCXJldCA9IC1FRkFV TFQ7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwogCQlyZXQgPSBpb19zdWJtaXRfb25lKGN0eCwg dXNlcl9pb2NiLCAmdG1wKTsKIAkJaWYgKHJldCkKIAkJCWJyZWFrOwpJbmRleDogbGludXgtMi42 LjEyL2luY2x1ZGUvbGludXgvYWlvX2FiaS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi4xMi5v cmlnL2luY2x1ZGUvbGludXgvYWlvX2FiaS5oCTIwMDUtMDYtMjMgMTQ6MTk6MjAuMDAwMDAwMDAw ICswMjAwCisrKyBsaW51eC0yLjYuMTIvaW5jbHVkZS9saW51eC9haW9fYWJpLmgJMjAwNS0wNi0y MyAxNDoxOToyOC4wMDAwMDAwMDAgKzAyMDAKQEAgLTgxLDcgKzgxLDcgQEAKIAlfX3M2NAlhaW9f b2Zmc2V0OwogCiAJLyogZXh0cmEgcGFyYW1ldGVycyAqLwotCV9fdTY0CWFpb19yZXNlcnZlZDI7 CS8qIFRPRE86IHVzZSB0aGlzIGZvciBhIChzdHJ1Y3Qgc2lnZXZlbnQgKikgKi8KKwlfX3U2NAlh aW9fc2lnZXZlbnQ7CS8qIFRPRE86IHVzZSB0aGlzIGZvciBhIChzdHJ1Y3Qgc2lnZXZlbnQgKikg Ki8KIAlfX3U2NAlhaW9fcmVzZXJ2ZWQzOwogfTsgLyogNjQgYnl0ZXMgKi8KIApJbmRleDogbGlu dXgtMi42LjEyL2luY2x1ZGUvbGludXgvYWlvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42LjEy Lm9yaWcvaW5jbHVkZS9saW51eC9haW8uaAkyMDA1LTA2LTIzIDE0OjE5OjI2LjAwMDAwMDAwMCAr MDIwMAorKysgbGludXgtMi42LjEyL2luY2x1ZGUvbGludXgvYWlvLmgJMjAwNS0wNi0yMyAxNDox OToyOC4wMDAwMDAwMDAgKzAyMDAKQEAgLTcsNiArNywxMSBAQAogCiAjaW5jbHVkZSA8YXNtL2F0 b21pYy5oPgogCitlbnVtIHsKKwlJT19OT1RJRllfU0lHTkFMID0gMCwJCS8qIHNlbmQgc2lnbmFs IHRvIGEgcHJvY2Vzc2UgKi8KKwlJT19OT1RJRllfVEhSRUFEX0lEID0gMSwJLyogc2VuZCBzaWdu YWwgdG8gYSBzcGVjaWZpYyB0aHJlYWQgKi8KK307CisKICNkZWZpbmUgQUlPX01BWFNFR1MJCTQK ICNkZWZpbmUgQUlPX0tJT0dSUF9OUl9BVE9NSUMJOAogCkBAIC03Myw2ICs3OCwxMSBAQAogCWxv bmcJCQlraV9yZXRyaWVkOyAJLyoganVzdCBmb3IgdGVzdGluZyAqLwogCWxvbmcJCQlraV9raWNr ZWQ7IAkvKiBqdXN0IGZvciB0ZXN0aW5nICovCiAJbG9uZwkJCWtpX3F1ZXVlZDsgCS8qIGp1c3Qg Zm9yIHRlc3RpbmcgKi8KKwkvKiB0byBub3RpZnkgYSBwcm9jZXNzIG9uIEkvTyBldmVudCAqLwor CV9fczMyCQkJa2lfcGlkOworCV9fdTE2CQkJa2lfc2lnbm87CisJX191MTYJCQlraV9ub3RpZnk7 CisJX191NjQJCQlraV92YWx1ZTsKIAogCXZvaWQJCQkqcHJpdmF0ZTsKIH07CkluZGV4OiBsaW51 eC0yLjYuMTIvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42LjEyLm9yaWcvTWFrZWZp bGUJMjAwNS0wNi0yMyAxNDoxOToyNi4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xMi9N YWtlZmlsZQkyMDA1LTA2LTIzIDE0OjE5OjI4LjAwMDAwMDAwMCArMDIwMApAQCAtMSw3ICsxLDcg QEAKIFZFUlNJT04gPSAyCiBQQVRDSExFVkVMID0gNgogU1VCTEVWRUwgPSAxMgotRVhUUkFWRVJT SU9OID0gLlBBSU8tYWlvbWF4ZXZlbnRzCitFWFRSQVZFUlNJT04gPSAuUEFJTy1haW9ldmVudAog TkFNRT1Xb296eSBOdW1iYXQKIAogIyAqRE9DVU1FTlRBVElPTioK --=-tjQSvsMteG8jav4cSg2Z--