From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/8] sync_file: add a mutex to protect fence and callback members. (v4) Date: Tue, 4 Apr 2017 09:52:38 +0200 Message-ID: <20170404075238.qfty7535aq4p7ul6@phenom.ffwll.local> References: <20170404042733.17203-1-airlied@gmail.com> <20170404042733.17203-5-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x244.google.com (mail-wr0-x244.google.com [IPv6:2a00:1450:400c:c0c::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4BB466E089 for ; Tue, 4 Apr 2017 07:52:46 +0000 (UTC) Received: by mail-wr0-x244.google.com with SMTP id k6so38429387wre.3 for ; Tue, 04 Apr 2017 00:52:46 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20170404042733.17203-5-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Dave Airlie Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBcHIgMDQsIDIwMTcgYXQgMDI6Mjc6MjlQTSArMTAwMCwgRGF2ZSBBaXJsaWUgd3Jv dGU6Cj4gRnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KPiAKPiBUaGlzIHBh dGNoIGFsbG93cyB0aGUgdW5kZXJseWluZyBmZW5jZSBpbiBhIHN5bmNfZmlsZSB0byBiZSBjaGFu Z2VkCj4gb3Igc2V0IHRvIE5VTEwuIFRoaXMgaXNuJ3QgY3VycmVudGx5IHJlcXVpcmVkIGJ1dCBm b3IgVnVsa2FuCj4gc2VtYXBob3JlcyB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gc3dhcCBhbmQgcmVz ZXQgdGhlIGZlbmNlLgo+IAo+IEluIG9yZGVyIHRvIGZhY2lsaWF0ZSB0aGlzLCBpdCB1c2VzIHJj dSB0byBwcm90ZWN0IHRoZSBmZW5jZSwKPiBhbG9uZyB3aXRoIGEgbmV3IG11dGV4LiBUaGUgbXV0 ZXggYWxzbyBwcm90ZWN0cyB0aGUgY2FsbGJhY2suCj4gSXQgYWxzbyBjaGVja3MgZm9yIE5VTEwg d2hlbiByZXRyaWV2aW5nIHRoZSByY3UgcHJvdGVjdGVkCj4gZmVuY2UgaW4gY2FzZSBpdCBoYXMg YmVlbiByZXNldC4KPiAKPiB2MS4xOiBmaXggdGhlIGxvY2tpbmcgKEp1bGlhIExhd2FsbCkuCj4g djI6IHVzZSByY3UgdHJ5IG9uZQo+IHYzOiBmaXggcG9sbCB0byB1c2UgcHJvcGVyIHJjdSwgZml4 dXAgbWVyZ2UvZmlsbCBpb2N0bHMKPiB0byBub3QgY3Jhc2ggb24gTlVMTCBmZW5jZSBjYXNlcy4K PiB2NDogdXNlIHJjdSBpbiBldmVuIG1vcmUgcGxhY2VzLCBhZGQgbWlzc2luZyBmcHV0Cj4gCj4g U2lnbmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KPiAtLS0KPiAg ZHJpdmVycy9kbWEtYnVmL3N5bmNfZmlsZS5jIHwgMTM1ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tCj4gIGluY2x1ZGUvbGludXgvc3luY19maWxlLmggICB8ICAg NiArLQo+ICAyIGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL3N5bmNfZmlsZS5jIGIvZHJpdmVy cy9kbWEtYnVmL3N5bmNfZmlsZS5jCj4gaW5kZXggMTUzYmYwMy4uNjM3NmY2ZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2RtYS1idWYvc3luY19maWxlLmMKPiArKysgYi9kcml2ZXJzL2RtYS1idWYv c3luY19maWxlLmMKPiBAQCAtMjgsNiArMjgsMTAgQEAKPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zIHN5bmNfZmlsZV9mb3BzOwo+ICAKPiArI2RlZmluZSBzeW5jX2Zp bGVfaGVsZChvYmopIGxvY2tkZXBfaXNfaGVsZCgmKG9iaiktPmxvY2spCj4gKyNkZWZpbmUgc3lu Y19maWxlX2Fzc2VydF9oZWxkKG9iaikgXAo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmKG9iaikt PmxvY2spCj4gKwo+ICAvKioKPiAgICogc3luY19maWxlX3ZhbGlkYXRlX3R5cGVfZmxhZ3MgLSB2 YWxpZGF0ZSB0eXBlL2ZsYWdzIGZvciBzdXBwb3J0Cj4gICAqIEB0eXBlOiB0eXBlIG9mIHN5bmMg ZmlsZSBvYmplY3QKPiBAQCAtODEsNiArODUsMTAgQEAgc3RydWN0IHN5bmNfZmlsZSAqc3luY19m aWxlX2FsbG9jKHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzKQo+ICAKPiAgCXN5bmNfZmls ZS0+dHlwZSA9IHR5cGU7Cj4gIAlzeW5jX2ZpbGUtPmZsYWdzID0gZmxhZ3M7Cj4gKwo+ICsJUkNV X0lOSVRfUE9JTlRFUihzeW5jX2ZpbGUtPmZlbmNlLCBOVUxMKTsKPiArCj4gKwltdXRleF9pbml0 KCZzeW5jX2ZpbGUtPmxvY2spOwo+ICAJcmV0dXJuIHN5bmNfZmlsZTsKPiAgCj4gIGVycjoKPiBA QCAtMTE3LDcgKzEyNSw5IEBAIHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZV9jcmVhdGUoc3Ry dWN0IGRtYV9mZW5jZSAqZmVuY2UsCj4gIAlpZiAoIXN5bmNfZmlsZSkKPiAgCQlyZXR1cm4gTlVM TDsKPiAgCj4gLQlzeW5jX2ZpbGUtPmZlbmNlID0gZG1hX2ZlbmNlX2dldChmZW5jZSk7Cj4gKwlk bWFfZmVuY2VfZ2V0KGZlbmNlKTsKPiArCj4gKwlSQ1VfSU5JVF9QT0lOVEVSKHN5bmNfZmlsZS0+ ZmVuY2UsIGZlbmNlKTsKPiAgCj4gIAlzbnByaW50ZihzeW5jX2ZpbGUtPm5hbWUsIHNpemVvZihz eW5jX2ZpbGUtPm5hbWUpLCAiJXMtJXMlbGx1LSVkIiwKPiAgCQkgZmVuY2UtPm9wcy0+Z2V0X2Ry aXZlcl9uYW1lKGZlbmNlKSwKPiBAQCAtMTY4LDEzICsxNzgsMjggQEAgc3RydWN0IGRtYV9mZW5j ZSAqc3luY19maWxlX2dldF9mZW5jZShpbnQgZmQpCj4gIAlpZiAoIXN5bmNfZmlsZSkKPiAgCQly ZXR1cm4gTlVMTDsKPiAgCj4gLQlmZW5jZSA9IGRtYV9mZW5jZV9nZXQoc3luY19maWxlLT5mZW5j ZSk7Cj4gKwlpZiAoIXJjdV9hY2Nlc3NfcG9pbnRlcihzeW5jX2ZpbGUtPmZlbmNlKSkgewo+ICsJ CWZwdXQoc3luY19maWxlLT5maWxlKTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwly Y3VfcmVhZF9sb2NrKCk7Cj4gKwlmZW5jZSA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJnN5bmNf ZmlsZS0+ZmVuY2UpOwo+ICsJcmN1X3JlYWRfdW5sb2NrKCk7CgpMb29rcyBsaWtlIHJvb20gZm9y IGEgZG1hX2ZlbmNlX2dldF9yY3VfdW5sb2NrZWQgdmFyaWFudC4gT3B0aW9uYWwKYmlrZXNoZWQg Oi0pCgo+ICsKPiAgCWZwdXQoc3luY19maWxlLT5maWxlKTsKPiAgCj4gIAlyZXR1cm4gZmVuY2U7 Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChzeW5jX2ZpbGVfZ2V0X2ZlbmNlKTsKPiAgCj4gK3N0YXRp YyBpbmxpbmUgc3RydWN0IGRtYV9mZW5jZSAqCj4gK3N5bmNfZmlsZV9nZXRfZmVuY2VfbG9ja2Vk KHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSkKPiArewo+ICsJcmV0dXJuIHJjdV9kZXJlZmVy ZW5jZV9wcm90ZWN0ZWQoc3luY19maWxlLT5mZW5jZSwKPiArCQkJCQkgc3luY19maWxlX2hlbGQo c3luY19maWxlKSk7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgc3luY19maWxlX3NldF9mZW5jZShz dHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUsCj4gIAkJCSAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNl ICoqZmVuY2VzLCBpbnQgbnVtX2ZlbmNlcykKPiAgewo+IEBAIC0xODcsNyArMjEyLDcgQEAgc3Rh dGljIGludCBzeW5jX2ZpbGVfc2V0X2ZlbmNlKHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSwK PiAgCSAqIHdlIG93biB0aGUgcmVmZXJlbmNlIG9mIHRoZSBkbWFfZmVuY2VfYXJyYXkgY3JlYXRp b24uCj4gIAkgKi8KPiAgCWlmIChudW1fZmVuY2VzID09IDEpIHsKPiAtCQlzeW5jX2ZpbGUtPmZl bmNlID0gZmVuY2VzWzBdOwo+ICsJCVJDVV9JTklUX1BPSU5URVIoc3luY19maWxlLT5mZW5jZSwg ZmVuY2VzWzBdKTsKPiAgCQlrZnJlZShmZW5jZXMpOwo+ICAJfSBlbHNlIHsKPiAgCQlhcnJheSA9 IGRtYV9mZW5jZV9hcnJheV9jcmVhdGUobnVtX2ZlbmNlcywgZmVuY2VzLAo+IEBAIC0xOTYsMjQg KzIyMSwzMCBAQCBzdGF0aWMgaW50IHN5bmNfZmlsZV9zZXRfZmVuY2Uoc3RydWN0IHN5bmNfZmls ZSAqc3luY19maWxlLAo+ICAJCWlmICghYXJyYXkpCj4gIAkJCXJldHVybiAtRU5PTUVNOwo+ICAK PiAtCQlzeW5jX2ZpbGUtPmZlbmNlID0gJmFycmF5LT5iYXNlOwo+ICsJCVJDVV9JTklUX1BPSU5U RVIoc3luY19maWxlLT5mZW5jZSwgJmFycmF5LT5iYXNlKTsKPiAgCX0KPiAgCj4gIAlyZXR1cm4g MDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBkbWFfZmVuY2UgKipnZXRfZmVuY2VzKHN0cnVj dCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSwKPiArLyogbXVzdCBiZSBjYWxsZWQgd2l0aCByY3UgcmVh ZCBsb2NrIHRha2VuICovCj4gK3N0YXRpYyBzdHJ1Y3QgZG1hX2ZlbmNlICoqZ2V0X2ZlbmNlcyhz dHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UsCj4gIAkJCQkgICAgIGludCAqbnVtX2ZlbmNlcykKPiAg ewo+IC0JaWYgKGRtYV9mZW5jZV9pc19hcnJheShzeW5jX2ZpbGUtPmZlbmNlKSkgewo+IC0JCXN0 cnVjdCBkbWFfZmVuY2VfYXJyYXkgKmFycmF5ID0gdG9fZG1hX2ZlbmNlX2FycmF5KHN5bmNfZmls ZS0+ZmVuY2UpOwo+ICsJaWYgKCEqZmVuY2UpIHsKPiArCQkqbnVtX2ZlbmNlcyA9IDA7Cj4gKwkJ cmV0dXJuIE5VTEw7Cj4gKwl9Cj4gKwo+ICsJaWYgKGRtYV9mZW5jZV9pc19hcnJheSgqZmVuY2Up KSB7Cj4gKwkJc3RydWN0IGRtYV9mZW5jZV9hcnJheSAqYXJyYXkgPSB0b19kbWFfZmVuY2VfYXJy YXkoKmZlbmNlKTsKPiAgCj4gIAkJKm51bV9mZW5jZXMgPSBhcnJheS0+bnVtX2ZlbmNlczsKPiAg CQlyZXR1cm4gYXJyYXktPmZlbmNlczsKPiAgCX0KPiAgCj4gIAkqbnVtX2ZlbmNlcyA9IDE7Cj4g LQlyZXR1cm4gJnN5bmNfZmlsZS0+ZmVuY2U7Cj4gKwlyZXR1cm4gZmVuY2U7Cj4gIH0KPiAgCj4g IHN0YXRpYyB2b2lkIGFkZF9mZW5jZShzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2VzLAo+IEBAIC0y NDMsMTggKzI3NCwzMSBAQCBzdGF0aWMgc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlX21lcmdl KGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzeW5jX2ZpbGUgKmEsCj4gIAlzdHJ1Y3Qgc3luY19m aWxlICpzeW5jX2ZpbGU7Cj4gIAlzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2VzLCAqKm5mZW5jZXMs ICoqYV9mZW5jZXMsICoqYl9mZW5jZXM7Cj4gIAlpbnQgaSwgaV9hLCBpX2IsIG51bV9mZW5jZXMs IGFfbnVtX2ZlbmNlcywgYl9udW1fZmVuY2VzOwo+ICsJc3RydWN0IGRtYV9mZW5jZSAqYV9mZW5j ZSwgKmJfZmVuY2U7Cj4gIAo+ICAJaWYgKGEtPnR5cGUgIT0gYi0+dHlwZSkKPiAgCQlyZXR1cm4g TlVMTDsKPiAgCj4gLQlzeW5jX2ZpbGUgPSBzeW5jX2ZpbGVfYWxsb2MoYS0+dHlwZSwgYS0+Zmxh Z3MpOwo+IC0JaWYgKCFzeW5jX2ZpbGUpCj4gKwlpZiAoIXJjdV9hY2Nlc3NfcG9pbnRlcihhLT5m ZW5jZSkgfHwKPiArCSAgICAhcmN1X2FjY2Vzc19wb2ludGVyKGItPmZlbmNlKSkKPiAgCQlyZXR1 cm4gTlVMTDsKPiAgCj4gLQlhX2ZlbmNlcyA9IGdldF9mZW5jZXMoYSwgJmFfbnVtX2ZlbmNlcyk7 Cj4gLQliX2ZlbmNlcyA9IGdldF9mZW5jZXMoYiwgJmJfbnVtX2ZlbmNlcyk7Cj4gKwlyY3VfcmVh ZF9sb2NrKCk7Cj4gKwlhX2ZlbmNlID0gZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgmYS0+ZmVuY2Up Owo+ICsJYl9mZW5jZSA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJmItPmZlbmNlKTsKPiArCXJj dV9yZWFkX3VubG9jaygpOwo+ICsKPiArCWFfZmVuY2VzID0gZ2V0X2ZlbmNlcygmYV9mZW5jZSwg JmFfbnVtX2ZlbmNlcyk7Cj4gKwliX2ZlbmNlcyA9IGdldF9mZW5jZXMoJmJfZmVuY2UsICZiX251 bV9mZW5jZXMpOwo+ICsJaWYgKCFhX251bV9mZW5jZXMgfHwgIWJfbnVtX2ZlbmNlcykKPiArCQln b3RvIHB1dF9zcmNfZmVuY2VzOwo+ICsKPiAgCWlmIChhX251bV9mZW5jZXMgPiBJTlRfTUFYIC0g Yl9udW1fZmVuY2VzKQo+IC0JCXJldHVybiBOVUxMOwo+ICsJCWdvdG8gcHV0X3NyY19mZW5jZXM7 Cj4gKwo+ICsJc3luY19maWxlID0gc3luY19maWxlX2FsbG9jKGEtPnR5cGUsIGEtPmZsYWdzKTsK PiArCWlmICghc3luY19maWxlKQo+ICsJCWdvdG8gcHV0X3NyY19mZW5jZXM7Cj4gIAo+ICAJbnVt X2ZlbmNlcyA9IGFfbnVtX2ZlbmNlcyArIGJfbnVtX2ZlbmNlczsKPiAgCj4gQEAgLTMxNSwxMSAr MzU5LDE2IEBAIHN0YXRpYyBzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGVfbWVyZ2UoY29uc3Qg Y2hhciAqbmFtZSwgc3RydWN0IHN5bmNfZmlsZSAqYSwKPiAgCQlnb3RvIGVycjsKPiAgCX0KPiAg Cj4gKwlkbWFfZmVuY2VfcHV0KGFfZmVuY2UpOwo+ICsJZG1hX2ZlbmNlX3B1dChiX2ZlbmNlKTsK PiAgCXN0cmxjcHkoc3luY19maWxlLT5uYW1lLCBuYW1lLCBzaXplb2Yoc3luY19maWxlLT5uYW1l KSk7Cj4gIAlyZXR1cm4gc3luY19maWxlOwo+ICAKPiAgZXJyOgo+ICAJZnB1dChzeW5jX2ZpbGUt PmZpbGUpOwo+ICtwdXRfc3JjX2ZlbmNlczoKPiArCWRtYV9mZW5jZV9wdXQoYV9mZW5jZSk7Cj4g KwlkbWFfZmVuY2VfcHV0KGJfZmVuY2UpOwo+ICAJcmV0dXJuIE5VTEw7Cj4gIAo+ICB9Cj4gQEAg LTMyOCwxMCArMzc3LDE1IEBAIHN0YXRpYyB2b2lkIHN5bmNfZmlsZV9mcmVlKHN0cnVjdCBrcmVm ICprcmVmKQo+ICB7Cj4gIAlzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUgPSBjb250YWluZXJf b2Yoa3JlZiwgc3RydWN0IHN5bmNfZmlsZSwKPiAgCQkJCQkJICAgICBrcmVmKTsKPiArCXN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlOwo+ICsKPiArCWZlbmNlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3Rl Y3RlZChzeW5jX2ZpbGUtPmZlbmNlLCAxKTsKPiArCWlmIChmZW5jZSkgewo+ICsJCWlmICh0ZXN0 X2JpdChQT0xMX0VOQUJMRUQsICZmZW5jZS0+ZmxhZ3MpKQo+ICsJCQlkbWFfZmVuY2VfcmVtb3Zl X2NhbGxiYWNrKGZlbmNlLCAmc3luY19maWxlLT5jYik7Cj4gKwkJZG1hX2ZlbmNlX3B1dChmZW5j ZSk7Cj4gKwl9Cj4gIAo+IC0JaWYgKHRlc3RfYml0KFBPTExfRU5BQkxFRCwgJnN5bmNfZmlsZS0+ ZmVuY2UtPmZsYWdzKSkKPiAtCQlkbWFfZmVuY2VfcmVtb3ZlX2NhbGxiYWNrKHN5bmNfZmlsZS0+ ZmVuY2UsICZzeW5jX2ZpbGUtPmNiKTsKPiAtCWRtYV9mZW5jZV9wdXQoc3luY19maWxlLT5mZW5j ZSk7Cj4gIAlrZnJlZShzeW5jX2ZpbGUpOwo+ICB9Cj4gIAo+IEBAIC0zNDYsMTYgKzQwMCwyNSBA QCBzdGF0aWMgaW50IHN5bmNfZmlsZV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVj dCBmaWxlICpmaWxlKQo+ICBzdGF0aWMgdW5zaWduZWQgaW50IHN5bmNfZmlsZV9wb2xsKHN0cnVj dCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KQo+ICB7Cj4gIAlzdHJ1Y3Qgc3luY19maWxl ICpzeW5jX2ZpbGUgPSBmaWxlLT5wcml2YXRlX2RhdGE7Cj4gKwl1bnNpZ25lZCBpbnQgcmV0X3Zh bCA9IDA7Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiAgCj4gIAlwb2xsX3dhaXQoZmls ZSwgJnN5bmNfZmlsZS0+d3EsIHdhaXQpOwo+ICAKPiAtCWlmICghdGVzdF9hbmRfc2V0X2JpdChQ T0xMX0VOQUJMRUQsICZzeW5jX2ZpbGUtPmZlbmNlLT5mbGFncykpIHsKPiAtCQlpZiAoZG1hX2Zl bmNlX2FkZF9jYWxsYmFjayhzeW5jX2ZpbGUtPmZlbmNlLCAmc3luY19maWxlLT5jYiwKPiAtCQkJ CQkgICBmZW5jZV9jaGVja19jYl9mdW5jKSA8IDApCj4gLQkJCXdha2VfdXBfYWxsKCZzeW5jX2Zp bGUtPndxKTsKPiArCW11dGV4X2xvY2soJnN5bmNfZmlsZS0+bG9jayk7Cj4gKwo+ICsJZmVuY2Ug PSBzeW5jX2ZpbGVfZ2V0X2ZlbmNlX2xvY2tlZChzeW5jX2ZpbGUpOwo+ICsJaWYgKGZlbmNlKSB7 Cj4gKwkJaWYgKCF0ZXN0X2FuZF9zZXRfYml0KFBPTExfRU5BQkxFRCwgJmZlbmNlLT5mbGFncykp IHsKClRoaXMgc2VlbXMgdG8gYmUgYSBwcmUtZXhpc3RpbmcgYnVnLCBidXQgaWYgc29tZW9uZSBl bHNlIGFscmVhZHkgZW5hYmxlZApwb2xsaW5nIChlLmcuIGRyaXZlciB1c2VzIHRoaXMgYXMgYW4g aW4tZmVuY2UsIGxhdGVyIG9uIHVzZXJzcGFjZSBwb2xscykKd2Ugc2VlbSB0byBmYWlsIHRvIGlu c3RhbGwgb3VyIHdha2V1cCBjYiBmb3Igc3luY19maWxlLiBTZWVtcyBidWdneS4KCkJlc2lkZXMg dGhpcyBvbmUgSSBkaWRuJ3Qgc3BvdCBhbnl0aGluZyB3cm9uZywgYW5kIHNpbmNlIGl0J3Mgbm90 IG9uZSBvZgp5b3VyIG93biBkb2luZzoKClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5p ZWwudmV0dGVyQGZmd2xsLmNoPgoKPiArCQkJaWYgKGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZmVu Y2UsICZzeW5jX2ZpbGUtPmNiLAo+ICsJCQkJCQkgICBmZW5jZV9jaGVja19jYl9mdW5jKSA8IDAp Cj4gKwkJCQl3YWtlX3VwX2FsbCgmc3luY19maWxlLT53cSk7Cj4gKwkJfQo+ICsJCXJldF92YWwg PSBkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZmVuY2UpID8gUE9MTElOIDogMDsKPiAgCX0KPiArCW11 dGV4X3VubG9jaygmc3luY19maWxlLT5sb2NrKTsKPiAgCj4gLQlyZXR1cm4gZG1hX2ZlbmNlX2lz X3NpZ25hbGVkKHN5bmNfZmlsZS0+ZmVuY2UpID8gUE9MTElOIDogMDsKPiArCXJldHVybiByZXRf dmFsOwo+ICB9Cj4gIAo+ICBzdGF0aWMgbG9uZyBzeW5jX2ZpbGVfaW9jdGxfbWVyZ2Uoc3RydWN0 IHN5bmNfZmlsZSAqc3luY19maWxlLAo+IEBAIC00MzEsNiArNDk0LDcgQEAgc3RhdGljIGxvbmcg c3luY19maWxlX2lvY3RsX2ZlbmNlX2luZm8oc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlLAo+ ICAJc3RydWN0IHN5bmNfZmlsZV9pbmZvIGluZm87Cj4gIAlzdHJ1Y3Qgc3luY19mZW5jZV9pbmZv ICpmZW5jZV9pbmZvID0gTlVMTDsKPiAgCXN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZXM7Cj4gKwlz dHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiAgCV9fdTMyIHNpemU7Cj4gIAlpbnQgbnVtX2ZlbmNl cywgcmV0LCBpOwo+ICAKPiBAQCAtNDQwLDcgKzUwNCwxNSBAQCBzdGF0aWMgbG9uZyBzeW5jX2Zp bGVfaW9jdGxfZmVuY2VfaW5mbyhzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUsCj4gIAlpZiAo aW5mby5mbGFncyB8fCBpbmZvLnBhZCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQlmZW5j ZXMgPSBnZXRfZmVuY2VzKHN5bmNfZmlsZSwgJm51bV9mZW5jZXMpOwo+ICsJcmN1X3JlYWRfbG9j aygpOwo+ICsJZmVuY2UgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlKCZzeW5jX2ZpbGUtPmZlbmNl KTsKPiArCXJjdV9yZWFkX3VubG9jaygpOwo+ICsKPiArCWZlbmNlcyA9IGdldF9mZW5jZXMoJmZl bmNlLCAmbnVtX2ZlbmNlcyk7Cj4gKwo+ICsJLyogaWYgdGhlcmUgYXJlIG5vIGZlbmNlcyBpbiB0 aGUgc3luY19maWxlIGp1c3QgcmV0dXJuICovCj4gKwlpZiAoIW51bV9mZW5jZXMpCj4gKwkJZ290 byBub19mZW5jZXM7Cj4gIAo+ICAJLyoKPiAgCSAqIFBhc3NpbmcgbnVtX2ZlbmNlcyA9IDAgbWVh bnMgdGhhdCB1c2Vyc3BhY2UgZG9lc24ndCB3YW50IHRvCj4gQEAgLTQ1MSwxMyArNTIzLDE3IEBA IHN0YXRpYyBsb25nIHN5bmNfZmlsZV9pb2N0bF9mZW5jZV9pbmZvKHN0cnVjdCBzeW5jX2ZpbGUg KnN5bmNfZmlsZSwKPiAgCWlmICghaW5mby5udW1fZmVuY2VzKQo+ICAJCWdvdG8gbm9fZmVuY2Vz Owo+ICAKPiAtCWlmIChpbmZvLm51bV9mZW5jZXMgPCBudW1fZmVuY2VzKQo+IC0JCXJldHVybiAt RUlOVkFMOwo+ICsJaWYgKGluZm8ubnVtX2ZlbmNlcyA8IG51bV9mZW5jZXMpIHsKPiArCQlyZXQg PSAtRUlOVkFMOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICAKPiAgCXNpemUgPSBudW1fZmVuY2Vz ICogc2l6ZW9mKCpmZW5jZV9pbmZvKTsKPiAgCWZlbmNlX2luZm8gPSBremFsbG9jKHNpemUsIEdG UF9LRVJORUwpOwo+IC0JaWYgKCFmZW5jZV9pbmZvKQo+IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJ aWYgKCFmZW5jZV9pbmZvKSB7Cj4gKwkJcmV0ID0gLUVOT01FTTsKPiArCQlnb3RvIG91dDsKPiAr CX0KPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2ZlbmNlczsgaSsrKQo+ICAJCXN5bmNfZmls bF9mZW5jZV9pbmZvKGZlbmNlc1tpXSwgJmZlbmNlX2luZm9baV0pOwo+IEBAIC00NzAsNyArNTQ2 LDEwIEBAIHN0YXRpYyBsb25nIHN5bmNfZmlsZV9pb2N0bF9mZW5jZV9pbmZvKHN0cnVjdCBzeW5j X2ZpbGUgKnN5bmNfZmlsZSwKPiAgCj4gIG5vX2ZlbmNlczoKPiAgCXN0cmxjcHkoaW5mby5uYW1l LCBzeW5jX2ZpbGUtPm5hbWUsIHNpemVvZihpbmZvLm5hbWUpKTsKPiAtCWluZm8uc3RhdHVzID0g ZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKHN5bmNfZmlsZS0+ZmVuY2UpOwo+ICsJaWYgKG51bV9mZW5j ZXMpCj4gKwkJaW5mby5zdGF0dXMgPSBkbWFfZmVuY2VfaXNfc2lnbmFsZWQoc3luY19maWxlLT5m ZW5jZSk7Cj4gKwllbHNlCj4gKwkJaW5mby5zdGF0dXMgPSAtRU5PRU5UOwo+ICAJaW5mby5udW1f ZmVuY2VzID0gbnVtX2ZlbmNlczsKPiAgCj4gIAlpZiAoY29weV90b191c2VyKCh2b2lkIF9fdXNl ciAqKWFyZywgJmluZm8sIHNpemVvZihpbmZvKSkpCj4gQEAgLTQ4MCw3ICs1NTksNyBAQCBzdGF0 aWMgbG9uZyBzeW5jX2ZpbGVfaW9jdGxfZmVuY2VfaW5mbyhzdHJ1Y3Qgc3luY19maWxlICpzeW5j X2ZpbGUsCj4gIAo+ICBvdXQ6Cj4gIAlrZnJlZShmZW5jZV9pbmZvKTsKPiAtCj4gKwlkbWFfZmVu Y2VfcHV0KGZlbmNlKTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGludXgvc3luY19maWxlLmggYi9pbmNsdWRlL2xpbnV4L3N5bmNfZmlsZS5oCj4gaW5k ZXggZTY4M2RkMS4uNGJmNjYxYiAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L3N5bmNfZmls ZS5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9zeW5jX2ZpbGUuaAo+IEBAIC0zNCw2ICszNCw3IEBA Cj4gICAqIEBjYjoJCQlmZW5jZSBjYWxsYmFjayBpbmZvcm1hdGlvbgo+ICAgKiBAdHlwZTogICAg ICAgICAgICAgICBzeW5jIGZpbGUgdHlwZQo+ICAgKiBAZmxhZ3M6ICAgICAgICAgICAgICBmbGFn cyB1c2VkIHRvIGNyZWF0ZSBzeW5jIGZpbGUKPiArICogQGxvY2s6ICAgICAgICAgICAgICAgbXV0 ZXggdG8gcHJvdGVjdCBmZW5jZS9jYiAtIHVzZWQgZm9yIHNlbWFwaG9yZXMKPiAgICovCj4gIHN0 cnVjdCBzeW5jX2ZpbGUgewo+ICAJc3RydWN0IGZpbGUJCSpmaWxlOwo+IEBAIC00NSwxMCArNDYs MTMgQEAgc3RydWN0IHN5bmNfZmlsZSB7Cj4gIAo+ICAJd2FpdF9xdWV1ZV9oZWFkX3QJd3E7Cj4g IAo+IC0Jc3RydWN0IGRtYV9mZW5jZQkqZmVuY2U7Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1 CSpmZW5jZTsKPiAgCXN0cnVjdCBkbWFfZmVuY2VfY2IgY2I7Cj4gIAl1aW50MzJfdCB0eXBlOwo+ ICAJdWludDMyX3QgZmxhZ3M7Cj4gKwo+ICsJLyogcHJvdGVjdHMgdGhlIGZlbmNlIHBvaW50ZXIg YW5kIGNiICovCj4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsKPiAgfTsKPiAgCj4gICNkZWZpbmUgUE9M TF9FTkFCTEVEIERNQV9GRU5DRV9GTEFHX1VTRVJfQklUUwo+IC0tIAo+IDIuOS4zCj4gCj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwg bWFpbGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKRGFu aWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Js b2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==