From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 04/33] drm/i915: Use RCU to annotate and enforce protection for breadcrumb's bh Date: Sun, 7 Aug 2016 15:45:12 +0100 Message-ID: <1470581141-14432-5-git-send-email-chris@chris-wilson.co.uk> References: <1470581141-14432-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 65E0C6E2EA for ; Sun, 7 Aug 2016 14:45:52 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id x83so11037979wma.3 for ; Sun, 07 Aug 2016 07:45:52 -0700 (PDT) In-Reply-To: <1470581141-14432-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org VGhlIGJvdHRvbS1oYWxmIHdlIHVzZSBmb3IgcHJvY2Vzc2luZyB0aGUgYnJlYWRjcnVtYiBpbnRl cnJ1cHQgaXMgYQp0YXNrLCB3aGljaCBpcyBhbiBSQ1UgcHJvdGVjdGVkIHN0cnVjdC4gV2hlbiBh Y2Nlc3NpbmcgdGhpcyBzdHJ1Y3QsIHdlCm5lZWQgdG8gYmUgaG9sZGluZyB0aGUgUkNVIHJlYWQg bG9jayB0byBwcmV2ZW50IGl0IGRpc2FwcGVhcmluZyBiZW5lYXRoCnVzLiBXZSBjYW4gdXNlIHRo ZSBSQ1UgYW5ub3RhdGlvbiB0byBtYXJrIG91ciBpcnFfc2Vxbm9fYmggcG9pbnRlciBhcwpiZWlu ZyB1bmRlciBSQ1UgZ3VhcmQgYW5kIHRoZW4gdXNlIHRoZSBSQ1UgYWNjZXNzb3JzIHRvIGJvdGgg cHJvdmlkZQpjb3JyZWN0IG9yZGVyaW5nIG9mIGFjY2VzcyB0aHJvdWdoIHRoZSBwb2ludGVyLgoK TW9zdCBub3RhYmx5LCB0aGlzIGZpeGVzIHRoZSBhY2Nlc3MgZnJvbSBoYXJkIGlycSBjb250ZXh0 IHRvIHVzZSB0aGUgUkNVCnJlYWQgbG9jaywgd2hpY2ggYm90aCBEYW5pZWwgYW5kIFR2cnRrbyBj b21wbGFpbmVkIGFib3V0LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNo PgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgIHwgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMgfCAyMiArKysrKysrKystLS0tLS0t LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgIHwgIDIgLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgfCAyMSArKysrKysrKysr KysrKy0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZmVlYzAwZjc2OWUxLi4zZDU0NmI1 YzJlNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMzg0OCw3ICszODQ4LDcgQEAgc3Rh dGljIGlubGluZSBib29sIF9faTkxNV9yZXF1ZXN0X2lycV9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAkgKiBpcyB3b2tlbi4KIAkgKi8KIAlpZiAoZW5naW5lLT5p cnFfc2Vxbm9fYmFycmllciAmJgotCSAgICBSRUFEX09OQ0UoZW5naW5lLT5icmVhZGNydW1icy5p cnFfc2Vxbm9fYmgpID09IGN1cnJlbnQgJiYKKwkgICAgcmN1X2FjY2Vzc19wb2ludGVyKGVuZ2lu ZS0+YnJlYWRjcnVtYnMuaXJxX3NlcW5vX2JoKSA9PSBjdXJyZW50ICYmCiAJICAgIGNtcHhjaGdf cmVsYXhlZCgmZW5naW5lLT5icmVhZGNydW1icy5pcnFfcG9zdGVkLCAxLCAwKSkgewogCQlzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRzazsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYnJlYWRjcnVtYnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1 bWJzLmMKaW5kZXggOGVjYjNiNjUzOGZjLi43NTUyYmQwMzk1NjUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwpAQCAtNjAsMTAgKzYwLDggQEAgc3RhdGljIHZvaWQg aW50ZWxfYnJlYWRjcnVtYnNfZmFrZV9pcnEodW5zaWduZWQgbG9uZyBkYXRhKQogCSAqIGV2ZXJ5 IGppZmZpZSBpbiBvcmRlciB0byBraWNrIHRoZSBvbGRlc3Qgd2FpdGVyIHRvIGRvIHRoZQogCSAq IGNvaGVyZW50IHNlcW5vIGNoZWNrLgogCSAqLwotCXJjdV9yZWFkX2xvY2soKTsKIAlpZiAoaW50 ZWxfZW5naW5lX3dha2V1cChlbmdpbmUpKQogCQltb2RfdGltZXIoJmVuZ2luZS0+YnJlYWRjcnVt YnMuZmFrZV9pcnEsIGppZmZpZXMgKyAxKTsKLQlyY3VfcmVhZF91bmxvY2soKTsKIH0KIAogc3Rh dGljIHZvaWQgaXJxX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCkBAIC0y MzIsNyArMjMwLDcgQEAgc3RhdGljIGJvb2wgX19pbnRlbF9lbmdpbmVfYWRkX3dhaXQoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCX0KIAlyYl9saW5rX25vZGUoJndhaXQtPm5vZGUs IHBhcmVudCwgcCk7CiAJcmJfaW5zZXJ0X2NvbG9yKCZ3YWl0LT5ub2RlLCAmYi0+d2FpdGVycyk7 Ci0JR0VNX0JVR19PTighZmlyc3QgJiYgIWItPmlycV9zZXFub19iaCk7CisJR0VNX0JVR19PTigh Zmlyc3QgJiYgIXJjdV9hY2Nlc3NfcG9pbnRlcihiLT5pcnFfc2Vxbm9fYmgpKTsKIAogCWlmIChj b21wbGV0ZWQpIHsKIAkJc3RydWN0IHJiX25vZGUgKm5leHQgPSByYl9uZXh0KGNvbXBsZXRlZCk7 CkBAIC0yNDIsNyArMjQwLDcgQEAgc3RhdGljIGJvb2wgX19pbnRlbF9lbmdpbmVfYWRkX3dhaXQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJR0VNX0JVR19PTihmaXJzdCk7CiAJ CQliLT50aW1lb3V0ID0gd2FpdF90aW1lb3V0KCk7CiAJCQliLT5maXJzdF93YWl0ID0gdG9fd2Fp dChuZXh0KTsKLQkJCXNtcF9zdG9yZV9tYihiLT5pcnFfc2Vxbm9fYmgsIGItPmZpcnN0X3dhaXQt PnRzayk7CisJCQlyY3VfYXNzaWduX3BvaW50ZXIoYi0+aXJxX3NlcW5vX2JoLCBiLT5maXJzdF93 YWl0LT50c2spOwogCQkJLyogQXMgdGhlcmUgaXMgYSBkZWxheSBiZXR3ZWVuIHJlYWRpbmcgdGhl IGN1cnJlbnQKIAkJCSAqIHNlcW5vLCBwcm9jZXNzaW5nIHRoZSBjb21wbGV0ZWQgdGFza3MgYW5k IHNlbGVjdGluZwogCQkJICogdGhlIG5leHQgd2FpdGVyLCB3ZSBtYXkgaGF2ZSBtaXNzZWQgdGhl IGludGVycnVwdApAQCAtMjY5LDcgKzI2Nyw3IEBAIHN0YXRpYyBib29sIF9faW50ZWxfZW5naW5l X2FkZF93YWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJR0VNX0JVR19PTihy Yl9maXJzdCgmYi0+d2FpdGVycykgIT0gJndhaXQtPm5vZGUpOwogCQliLT50aW1lb3V0ID0gd2Fp dF90aW1lb3V0KCk7CiAJCWItPmZpcnN0X3dhaXQgPSB3YWl0OwotCQlzbXBfc3RvcmVfbWIoYi0+ aXJxX3NlcW5vX2JoLCB3YWl0LT50c2spOworCQlyY3VfYXNzaWduX3BvaW50ZXIoYi0+aXJxX3Nl cW5vX2JoLCB3YWl0LT50c2spOwogCQkvKiBBZnRlciBhc3NpZ25pbmcgb3Vyc2VsdmVzIGFzIHRo ZSBuZXcgYm90dG9tLWhhbGYsIHdlIG11c3QKIAkJICogcGVyZm9ybSBhIGN1cnNvcnkgY2hlY2sg dG8gcHJldmVudCBhIG1pc3NlZCBpbnRlcnJ1cHQuCiAJCSAqIEVpdGhlciB3ZSBtaXNzIHRoZSBp bnRlcnJ1cHQgd2hpbHN0IHByb2dyYW1taW5nIHRoZSBoYXJkd2FyZSwKQEAgLTI4MCw3ICsyNzgs NyBAQCBzdGF0aWMgYm9vbCBfX2ludGVsX2VuZ2luZV9hZGRfd2FpdChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCiAJCSAqLwogCQlfX2ludGVsX2JyZWFkY3J1bWJzX2VuYWJsZV9pcnEo Yik7CiAJfQotCUdFTV9CVUdfT04oIWItPmlycV9zZXFub19iaCk7CisJR0VNX0JVR19PTighcmN1 X2FjY2Vzc19wb2ludGVyKGItPmlycV9zZXFub19iaCkpOwogCUdFTV9CVUdfT04oIWItPmZpcnN0 X3dhaXQpOwogCUdFTV9CVUdfT04ocmJfZmlyc3QoJmItPndhaXRlcnMpICE9ICZiLT5maXJzdF93 YWl0LT5ub2RlKTsKIApAQCAtMzM1LDcgKzMzMyw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX3JlbW92 ZV93YWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJY29uc3QgaW50IHByaW9y aXR5ID0gd2FrZXVwX3ByaW9yaXR5KGIsIHdhaXQtPnRzayk7CiAJCXN0cnVjdCByYl9ub2RlICpu ZXh0OwogCi0JCUdFTV9CVUdfT04oYi0+aXJxX3NlcW5vX2JoICE9IHdhaXQtPnRzayk7CisJCUdF TV9CVUdfT04ocmN1X2FjY2Vzc19wb2ludGVyKGItPmlycV9zZXFub19iaCkgIT0gd2FpdC0+dHNr KTsKIAogCQkvKiBXZSBhcmUgdGhlIGN1cnJlbnQgYm90dG9tLWhhbGYuIEZpbmQgdGhlIG5leHQg Y2FuZGlkYXRlLAogCQkgKiB0aGUgZmlyc3Qgd2FpdGVyIGluIHRoZSBxdWV1ZSBvbiB0aGUgcmVt YWluaW5nIG9sZGVzdApAQCAtMzc5LDEzICszNzcsMTMgQEAgdm9pZCBpbnRlbF9lbmdpbmVfcmVt b3ZlX3dhaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJICovCiAJCQliLT50 aW1lb3V0ID0gd2FpdF90aW1lb3V0KCk7CiAJCQliLT5maXJzdF93YWl0ID0gdG9fd2FpdChuZXh0 KTsKLQkJCXNtcF9zdG9yZV9tYihiLT5pcnFfc2Vxbm9fYmgsIGItPmZpcnN0X3dhaXQtPnRzayk7 CisJCQlyY3VfYXNzaWduX3BvaW50ZXIoYi0+aXJxX3NlcW5vX2JoLCBiLT5maXJzdF93YWl0LT50 c2spOwogCQkJaWYgKGItPmZpcnN0X3dhaXQtPnNlcW5vICE9IHdhaXQtPnNlcW5vKQogCQkJCV9f aW50ZWxfYnJlYWRjcnVtYnNfZW5hYmxlX2lycShiKTsKLQkJCXdha2VfdXBfcHJvY2VzcyhiLT5p cnFfc2Vxbm9fYmgpOworCQkJd2FrZV91cF9wcm9jZXNzKGItPmZpcnN0X3dhaXQtPnRzayk7CiAJ CX0gZWxzZSB7CiAJCQliLT5maXJzdF93YWl0ID0gTlVMTDsKLQkJCVdSSVRFX09OQ0UoYi0+aXJx X3NlcW5vX2JoLCBOVUxMKTsKKwkJCXJjdV9hc3NpZ25fcG9pbnRlcihiLT5pcnFfc2Vxbm9fYmgs IE5VTEwpOwogCQkJX19pbnRlbF9icmVhZGNydW1ic19kaXNhYmxlX2lycShiKTsKIAkJfQogCX0g ZWxzZSB7CkBAIC0zOTksNyArMzk3LDcgQEAgb3V0X3VubG9jazoKIAlHRU1fQlVHX09OKGItPmZp cnN0X3dhaXQgPT0gd2FpdCk7CiAJR0VNX0JVR19PTihyYl9maXJzdCgmYi0+d2FpdGVycykgIT0K IAkJICAgKGItPmZpcnN0X3dhaXQgPyAmYi0+Zmlyc3Rfd2FpdC0+bm9kZSA6IE5VTEwpKTsKLQlH RU1fQlVHX09OKCFiLT5pcnFfc2Vxbm9fYmggXiBSQl9FTVBUWV9ST09UKCZiLT53YWl0ZXJzKSk7 CisJR0VNX0JVR19PTighcmN1X2FjY2Vzc19wb2ludGVyKGItPmlycV9zZXFub19iaCkgXiBSQl9F TVBUWV9ST09UKCZiLT53YWl0ZXJzKSk7CiAJc3Bpbl91bmxvY2soJmItPmxvY2spOwogfQogCkBA IC01OTYsMTEgKzU5NCw5IEBAIHVuc2lnbmVkIGludCBpbnRlbF9raWNrX3dhaXRlcnMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJICogUkNVIGxvY2ssIGkuZS4gYXMgd2UgY2FsbCB3 YWtlX3VwX3Byb2Nlc3MoKSB3ZSBtdXN0IGJlIGhvbGRpbmcgdGhlCiAJICogcmN1X3JlYWRfbG9j aygpLgogCSAqLwotCXJjdV9yZWFkX2xvY2soKTsKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBp OTE1KQogCQlpZiAodW5saWtlbHkoaW50ZWxfZW5naW5lX3dha2V1cChlbmdpbmUpKSkKIAkJCW1h c2sgfD0gaW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKLQlyY3VfcmVhZF91bmxvY2soKTsKIAog CXJldHVybiBtYXNrOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmlu ZGV4IGUwOGExZTFiMDRlNC4uMTZiNzI2ZmUzM2ViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jCkBAIC0yNDEwLDkgKzI0MTAsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9p bml0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKQogCS8q IEFmdGVyIG1hbnVhbGx5IGFkdmFuY2luZyB0aGUgc2Vxbm8sIGZha2UgdGhlIGludGVycnVwdCBp biBjYXNlCiAJICogdGhlcmUgYXJlIGFueSB3YWl0ZXJzIGZvciB0aGF0IHNlcW5vLgogCSAqLwot CXJjdV9yZWFkX2xvY2soKTsKIAlpbnRlbF9lbmdpbmVfd2FrZXVwKGVuZ2luZSk7Ci0JcmN1X3Jl YWRfdW5sb2NrKCk7CiB9CiAKIHN0YXRpYyB2b2lkIGdlbjZfYnNkX3N1Ym1pdF9yZXF1ZXN0KHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAppbmRleCA0YWVkNDU4NmIwYjYuLjY2ZGM5MzQ2OTA3NiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMTcxLDcgKzE3MSw3IEBAIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCSAqIHRoZSBvdmVyaGVhZCBvZiB3YWtpbmcgdGhhdCBj bGllbnQgaXMgbXVjaCBwcmVmZXJyZWQuCiAJICovCiAJc3RydWN0IGludGVsX2JyZWFkY3J1bWJz IHsKLQkJc3RydWN0IHRhc2tfc3RydWN0ICppcnFfc2Vxbm9fYmg7IC8qIGJoIGZvciB1c2VyIGlu dGVycnVwdHMgKi8KKwkJc3RydWN0IHRhc2tfc3RydWN0IF9fcmN1ICppcnFfc2Vxbm9fYmg7IC8q IGJoIGZvciBpbnRlcnJ1cHRzICovCiAJCWJvb2wgaXJxX3Bvc3RlZDsKIAogCQlzcGlubG9ja190 IGxvY2s7IC8qIHByb3RlY3RzIHRoZSBsaXN0cyBvZiByZXF1ZXN0cyAqLwpAQCAtNTQxLDIzICs1 NDEsMzAgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfZW5n aW5lX2hhc193YWl0ZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXJldHVy biBSRUFEX09OQ0UoZW5naW5lLT5icmVhZGNydW1icy5pcnFfc2Vxbm9fYmgpOworCXJldHVybiBy Y3VfYWNjZXNzX3BvaW50ZXIoZW5naW5lLT5icmVhZGNydW1icy5pcnFfc2Vxbm9fYmgpOwogfQog CiBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfZW5naW5lX3dha2V1cChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiB7CiAJYm9vbCB3YWtldXAgPSBmYWxzZTsKLQlzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRzayA9IFJFQURfT05DRShlbmdpbmUtPmJyZWFkY3J1bWJzLmlycV9zZXFub19iaCk7 CisKIAkvKiBOb3RlIHRoYXQgZm9yIHRoaXMgbm90IHRvIGRhbmdlcm91c2x5IGNoYXNlIGEgZGFu Z2xpbmcgcG9pbnRlciwKLQkgKiB0aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmUg dGhhdCB0aGUgdGFzayByZW1haW4gdmFsaWQgZm9yCi0JICogd2FrZV91cF9wcm9jZXNzKCkgaS5l LiB0aGF0IHRoZSBSQ1UgZ3JhY2UgcGVyaW9kIGNhbm5vdCBleHBpcmUuCisJICogd2UgbXVzdCBo b2xkIHRoZSByY3VfcmVhZF9sb2NrIGhlcmUuCiAJICoKIAkgKiBBbHNvIG5vdGUgdGhhdCB0c2sg aXMgbGlrZWx5IHRvIGJlIGluICFUQVNLX1JVTk5JTkcgc3RhdGUgc28gYW4KIAkgKiBlYXJseSB0 ZXN0IGZvciB0c2stPnN0YXRlICE9IFRBU0tfUlVOTklORyBiZWZvcmUgd2FrZV91cF9wcm9jZXNz KCkKIAkgKiBpcyB1bmxpa2VseSB0byBiZSBiZW5lZmljaWFsLgogCSAqLwotCWlmICh0c2spCi0J CXdha2V1cCA9IHdha2VfdXBfcHJvY2Vzcyh0c2spOworCWlmIChyY3VfYWNjZXNzX3BvaW50ZXIo ZW5naW5lLT5icmVhZGNydW1icy5pcnFfc2Vxbm9fYmgpKSB7CisJCXN0cnVjdCB0YXNrX3N0cnVj dCAqdHNrOworCisJCXJjdV9yZWFkX2xvY2soKTsKKwkJdHNrID0gcmN1X2RlcmVmZXJlbmNlKGVu Z2luZS0+YnJlYWRjcnVtYnMuaXJxX3NlcW5vX2JoKTsKKwkJaWYgKHRzaykKKwkJCXdha2V1cCA9 IHdha2VfdXBfcHJvY2Vzcyh0c2spOworCQlyY3VfcmVhZF91bmxvY2soKTsKKwl9CisKIAlyZXR1 cm4gd2FrZXVwOwogfQogCi0tIAoyLjguMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==