From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 4/8] sync_file: add a mutex to protect fence and callback members. (v4) Date: Tue, 11 Apr 2017 13:22:16 +1000 Message-ID: <20170411032220.21101-5-airlied@gmail.com> References: <20170411032220.21101-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170411032220.21101-1-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgcGF0Y2ggYWxsb3dz IHRoZSB1bmRlcmx5aW5nIGZlbmNlIGluIGEgc3luY19maWxlIHRvIGJlIGNoYW5nZWQKb3Igc2V0 IHRvIE5VTEwuIFRoaXMgaXNuJ3QgY3VycmVudGx5IHJlcXVpcmVkIGJ1dCBmb3IgVnVsa2FuCnNl bWFwaG9yZXMgd2UgbmVlZCB0byBiZSBhYmxlIHRvIHN3YXAgYW5kIHJlc2V0IHRoZSBmZW5jZS4K CkluIG9yZGVyIHRvIGZhY2lsaWF0ZSB0aGlzLCBpdCB1c2VzIHJjdSB0byBwcm90ZWN0IHRoZSBm ZW5jZSwKYWxvbmcgd2l0aCBhIG5ldyBtdXRleC4gVGhlIG11dGV4IGFsc28gcHJvdGVjdHMgdGhl IGNhbGxiYWNrLgpJdCBhbHNvIGNoZWNrcyBmb3IgTlVMTCB3aGVuIHJldHJpZXZpbmcgdGhlIHJj dSBwcm90ZWN0ZWQKZmVuY2UgaW4gY2FzZSBpdCBoYXMgYmVlbiByZXNldC4KCnYxLjE6IGZpeCB0 aGUgbG9ja2luZyAoSnVsaWEgTGF3YWxsKS4KdjI6IHVzZSByY3UgdHJ5IG9uZQp2MzogZml4IHBv bGwgdG8gdXNlIHByb3BlciByY3UsIGZpeHVwIG1lcmdlL2ZpbGwgaW9jdGxzCnRvIG5vdCBjcmFz aCBvbiBOVUxMIGZlbmNlIGNhc2VzLgp2NDogdXNlIHJjdSBpbiBldmVuIG1vcmUgcGxhY2VzLCBh ZGQgbWlzc2luZyBmcHV0CgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRl ckBmZndsbC5jaD4KU2lnbmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNv bT4KLS0tCiBkcml2ZXJzL2RtYS1idWYvc3luY19maWxlLmMgfCAxMzUgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIGluY2x1ZGUvbGludXgvc3luY19maWxlLmgg ICB8ICAgNiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL3N5bmNfZmlsZS5jIGIvZHJpdmVy cy9kbWEtYnVmL3N5bmNfZmlsZS5jCmluZGV4IDUwZTYzNWEuLmQ4NGRlNjcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZG1hLWJ1Zi9zeW5jX2ZpbGUuYworKysgYi9kcml2ZXJzL2RtYS1idWYvc3luY19m aWxlLmMKQEAgLTI4LDYgKzI4LDEwIEBACiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVy YXRpb25zIHN5bmNfZmlsZV9mb3BzOwogCisjZGVmaW5lIHN5bmNfZmlsZV9oZWxkKG9iaikgbG9j a2RlcF9pc19oZWxkKCYob2JqKS0+bG9jaykKKyNkZWZpbmUgc3luY19maWxlX2Fzc2VydF9oZWxk KG9iaikgXAorCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJihvYmopLT5sb2NrKQorCiAvKioKICAqIHN5 bmNfZmlsZV92YWxpZGF0ZV90eXBlX2ZsYWdzIC0gdmFsaWRhdGUgdHlwZS9mbGFncyBmb3Igc3Vw cG9ydAogICogQHR5cGU6IHR5cGUgb2Ygc3luYyBmaWxlIG9iamVjdApAQCAtODEsNiArODUsMTAg QEAgc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlX2FsbG9jKHVpbnQzMl90IHR5cGUsIHVpbnQz Ml90IGZsYWdzKQogCiAJc3luY19maWxlLT50eXBlID0gdHlwZTsKIAlzeW5jX2ZpbGUtPmZsYWdz ID0gZmxhZ3M7CisKKwlSQ1VfSU5JVF9QT0lOVEVSKHN5bmNfZmlsZS0+ZmVuY2UsIE5VTEwpOwor CisJbXV0ZXhfaW5pdCgmc3luY19maWxlLT5sb2NrKTsKIAlyZXR1cm4gc3luY19maWxlOwogCiBl cnI6CkBAIC0xMTksNyArMTI3LDkgQEAgc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlX2NyZWF0 ZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwKIAlpZiAoIXN5bmNfZmlsZSkKIAkJcmV0dXJuIE5V TEw7CiAKLQlzeW5jX2ZpbGUtPmZlbmNlID0gZG1hX2ZlbmNlX2dldChmZW5jZSk7CisJZG1hX2Zl bmNlX2dldChmZW5jZSk7CisKKwlSQ1VfSU5JVF9QT0lOVEVSKHN5bmNfZmlsZS0+ZmVuY2UsIGZl bmNlKTsKIAogCXNucHJpbnRmKHN5bmNfZmlsZS0+bmFtZSwgc2l6ZW9mKHN5bmNfZmlsZS0+bmFt ZSksICIlcy0lcyVsbHUtJWQiLAogCQkgZmVuY2UtPm9wcy0+Z2V0X2RyaXZlcl9uYW1lKGZlbmNl KSwKQEAgLTE3MCwxMyArMTgwLDI4IEBAIHN0cnVjdCBkbWFfZmVuY2UgKnN5bmNfZmlsZV9nZXRf ZmVuY2UoaW50IGZkKQogCWlmICghc3luY19maWxlKQogCQlyZXR1cm4gTlVMTDsKIAotCWZlbmNl ID0gZG1hX2ZlbmNlX2dldChzeW5jX2ZpbGUtPmZlbmNlKTsKKwlpZiAoIXJjdV9hY2Nlc3NfcG9p bnRlcihzeW5jX2ZpbGUtPmZlbmNlKSkgeworCQlmcHV0KHN5bmNfZmlsZS0+ZmlsZSk7CisJCXJl dHVybiBOVUxMOworCX0KKworCXJjdV9yZWFkX2xvY2soKTsKKwlmZW5jZSA9IGRtYV9mZW5jZV9n ZXRfcmN1X3NhZmUoJnN5bmNfZmlsZS0+ZmVuY2UpOworCXJjdV9yZWFkX3VubG9jaygpOworCiAJ ZnB1dChzeW5jX2ZpbGUtPmZpbGUpOwogCiAJcmV0dXJuIGZlbmNlOwogfQogRVhQT1JUX1NZTUJP TChzeW5jX2ZpbGVfZ2V0X2ZlbmNlKTsKIAorc3RhdGljIGlubGluZSBzdHJ1Y3QgZG1hX2ZlbmNl ICoKK3N5bmNfZmlsZV9nZXRfZmVuY2VfbG9ja2VkKHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmls ZSkKK3sKKwlyZXR1cm4gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jX2ZpbGUtPmZlbmNl LAorCQkJCQkgc3luY19maWxlX2hlbGQoc3luY19maWxlKSk7Cit9CisKIHN0YXRpYyBpbnQgc3lu Y19maWxlX3NldF9mZW5jZShzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUsCiAJCQkgICAgICAg c3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlcywgaW50IG51bV9mZW5jZXMpCiB7CkBAIC0xODksNyAr MjE0LDcgQEAgc3RhdGljIGludCBzeW5jX2ZpbGVfc2V0X2ZlbmNlKHN0cnVjdCBzeW5jX2ZpbGUg KnN5bmNfZmlsZSwKIAkgKiB3ZSBvd24gdGhlIHJlZmVyZW5jZSBvZiB0aGUgZG1hX2ZlbmNlX2Fy cmF5IGNyZWF0aW9uLgogCSAqLwogCWlmIChudW1fZmVuY2VzID09IDEpIHsKLQkJc3luY19maWxl LT5mZW5jZSA9IGZlbmNlc1swXTsKKwkJUkNVX0lOSVRfUE9JTlRFUihzeW5jX2ZpbGUtPmZlbmNl LCBmZW5jZXNbMF0pOwogCQlrZnJlZShmZW5jZXMpOwogCX0gZWxzZSB7CiAJCWFycmF5ID0gZG1h X2ZlbmNlX2FycmF5X2NyZWF0ZShudW1fZmVuY2VzLCBmZW5jZXMsCkBAIC0xOTgsMjQgKzIyMywz MCBAQCBzdGF0aWMgaW50IHN5bmNfZmlsZV9zZXRfZmVuY2Uoc3RydWN0IHN5bmNfZmlsZSAqc3lu Y19maWxlLAogCQlpZiAoIWFycmF5KQogCQkJcmV0dXJuIC1FTk9NRU07CiAKLQkJc3luY19maWxl LT5mZW5jZSA9ICZhcnJheS0+YmFzZTsKKwkJUkNVX0lOSVRfUE9JTlRFUihzeW5jX2ZpbGUtPmZl bmNlLCAmYXJyYXktPmJhc2UpOwogCX0KIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0 IGRtYV9mZW5jZSAqKmdldF9mZW5jZXMoc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlLAorLyog bXVzdCBiZSBjYWxsZWQgd2l0aCByY3UgcmVhZCBsb2NrIHRha2VuICovCitzdGF0aWMgc3RydWN0 IGRtYV9mZW5jZSAqKmdldF9mZW5jZXMoc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlLAogCQkJCSAg ICAgaW50ICpudW1fZmVuY2VzKQogewotCWlmIChkbWFfZmVuY2VfaXNfYXJyYXkoc3luY19maWxl LT5mZW5jZSkpIHsKLQkJc3RydWN0IGRtYV9mZW5jZV9hcnJheSAqYXJyYXkgPSB0b19kbWFfZmVu Y2VfYXJyYXkoc3luY19maWxlLT5mZW5jZSk7CisJaWYgKCEqZmVuY2UpIHsKKwkJKm51bV9mZW5j ZXMgPSAwOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlpZiAoZG1hX2ZlbmNlX2lzX2FycmF5KCpm ZW5jZSkpIHsKKwkJc3RydWN0IGRtYV9mZW5jZV9hcnJheSAqYXJyYXkgPSB0b19kbWFfZmVuY2Vf YXJyYXkoKmZlbmNlKTsKIAogCQkqbnVtX2ZlbmNlcyA9IGFycmF5LT5udW1fZmVuY2VzOwogCQly ZXR1cm4gYXJyYXktPmZlbmNlczsKIAl9CiAKIAkqbnVtX2ZlbmNlcyA9IDE7Ci0JcmV0dXJuICZz eW5jX2ZpbGUtPmZlbmNlOworCXJldHVybiBmZW5jZTsKIH0KIAogc3RhdGljIHZvaWQgYWRkX2Zl bmNlKHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZXMsCkBAIC0yNDUsMTggKzI3NiwzMSBAQCBzdGF0 aWMgc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlX21lcmdlKGNvbnN0IGNoYXIgKm5hbWUsIHN0 cnVjdCBzeW5jX2ZpbGUgKmEsCiAJc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlOwogCXN0cnVj dCBkbWFfZmVuY2UgKipmZW5jZXMsICoqbmZlbmNlcywgKiphX2ZlbmNlcywgKipiX2ZlbmNlczsK IAlpbnQgaSwgaV9hLCBpX2IsIG51bV9mZW5jZXMsIGFfbnVtX2ZlbmNlcywgYl9udW1fZmVuY2Vz OworCXN0cnVjdCBkbWFfZmVuY2UgKmFfZmVuY2UsICpiX2ZlbmNlOwogCiAJaWYgKGEtPnR5cGUg IT0gYi0+dHlwZSkKIAkJcmV0dXJuIE5VTEw7CiAKLQlzeW5jX2ZpbGUgPSBzeW5jX2ZpbGVfYWxs b2MoYS0+dHlwZSwgYS0+ZmxhZ3MpOwotCWlmICghc3luY19maWxlKQorCWlmICghcmN1X2FjY2Vz c19wb2ludGVyKGEtPmZlbmNlKSB8fAorCSAgICAhcmN1X2FjY2Vzc19wb2ludGVyKGItPmZlbmNl KSkKIAkJcmV0dXJuIE5VTEw7CiAKLQlhX2ZlbmNlcyA9IGdldF9mZW5jZXMoYSwgJmFfbnVtX2Zl bmNlcyk7Ci0JYl9mZW5jZXMgPSBnZXRfZmVuY2VzKGIsICZiX251bV9mZW5jZXMpOworCXJjdV9y ZWFkX2xvY2soKTsKKwlhX2ZlbmNlID0gZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgmYS0+ZmVuY2Up OworCWJfZmVuY2UgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlKCZiLT5mZW5jZSk7CisJcmN1X3Jl YWRfdW5sb2NrKCk7CisKKwlhX2ZlbmNlcyA9IGdldF9mZW5jZXMoJmFfZmVuY2UsICZhX251bV9m ZW5jZXMpOworCWJfZmVuY2VzID0gZ2V0X2ZlbmNlcygmYl9mZW5jZSwgJmJfbnVtX2ZlbmNlcyk7 CisJaWYgKCFhX251bV9mZW5jZXMgfHwgIWJfbnVtX2ZlbmNlcykKKwkJZ290byBwdXRfc3JjX2Zl bmNlczsKKwogCWlmIChhX251bV9mZW5jZXMgPiBJTlRfTUFYIC0gYl9udW1fZmVuY2VzKQotCQly ZXR1cm4gTlVMTDsKKwkJZ290byBwdXRfc3JjX2ZlbmNlczsKKworCXN5bmNfZmlsZSA9IHN5bmNf ZmlsZV9hbGxvYyhhLT50eXBlLCBhLT5mbGFncyk7CisJaWYgKCFzeW5jX2ZpbGUpCisJCWdvdG8g cHV0X3NyY19mZW5jZXM7CiAKIAludW1fZmVuY2VzID0gYV9udW1fZmVuY2VzICsgYl9udW1fZmVu Y2VzOwogCkBAIC0zMTcsMTEgKzM2MSwxNiBAQCBzdGF0aWMgc3RydWN0IHN5bmNfZmlsZSAqc3lu Y19maWxlX21lcmdlKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzeW5jX2ZpbGUgKmEsCiAJCWdv dG8gZXJyOwogCX0KIAorCWRtYV9mZW5jZV9wdXQoYV9mZW5jZSk7CisJZG1hX2ZlbmNlX3B1dChi X2ZlbmNlKTsKIAlzdHJsY3B5KHN5bmNfZmlsZS0+bmFtZSwgbmFtZSwgc2l6ZW9mKHN5bmNfZmls ZS0+bmFtZSkpOwogCXJldHVybiBzeW5jX2ZpbGU7CiAKIGVycjoKIAlmcHV0KHN5bmNfZmlsZS0+ ZmlsZSk7CitwdXRfc3JjX2ZlbmNlczoKKwlkbWFfZmVuY2VfcHV0KGFfZmVuY2UpOworCWRtYV9m ZW5jZV9wdXQoYl9mZW5jZSk7CiAJcmV0dXJuIE5VTEw7CiAKIH0KQEAgLTMzMCwxMCArMzc5LDE1 IEBAIHN0YXRpYyB2b2lkIHN5bmNfZmlsZV9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQogewogCXN0 cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3Qgc3lu Y19maWxlLAogCQkJCQkJICAgICBrcmVmKTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKKwor CWZlbmNlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jX2ZpbGUtPmZlbmNlLCAxKTsK KwlpZiAoZmVuY2UpIHsKKwkJaWYgKHRlc3RfYml0KFBPTExfRU5BQkxFRCwgJmZlbmNlLT5mbGFn cykpCisJCQlkbWFfZmVuY2VfcmVtb3ZlX2NhbGxiYWNrKGZlbmNlLCAmc3luY19maWxlLT5jYik7 CisJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOworCX0KIAotCWlmICh0ZXN0X2JpdChQT0xMX0VOQUJM RUQsICZzeW5jX2ZpbGUtPmZlbmNlLT5mbGFncykpCi0JCWRtYV9mZW5jZV9yZW1vdmVfY2FsbGJh Y2soc3luY19maWxlLT5mZW5jZSwgJnN5bmNfZmlsZS0+Y2IpOwotCWRtYV9mZW5jZV9wdXQoc3lu Y19maWxlLT5mZW5jZSk7CiAJa2ZyZWUoc3luY19maWxlKTsKIH0KIApAQCAtMzQ4LDE2ICs0MDIs MjUgQEAgc3RhdGljIGludCBzeW5jX2ZpbGVfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgZmlsZSAqZmlsZSkKIHN0YXRpYyB1bnNpZ25lZCBpbnQgc3luY19maWxlX3BvbGwoc3Ry dWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQpCiB7CiAJc3RydWN0IHN5bmNfZmlsZSAq c3luY19maWxlID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXVuc2lnbmVkIGludCByZXRfdmFsID0g MDsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKIAogCXBvbGxfd2FpdChmaWxlLCAmc3luY19m aWxlLT53cSwgd2FpdCk7CiAKLQlpZiAoIXRlc3RfYW5kX3NldF9iaXQoUE9MTF9FTkFCTEVELCAm c3luY19maWxlLT5mZW5jZS0+ZmxhZ3MpKSB7Ci0JCWlmIChkbWFfZmVuY2VfYWRkX2NhbGxiYWNr KHN5bmNfZmlsZS0+ZmVuY2UsICZzeW5jX2ZpbGUtPmNiLAotCQkJCQkgICBmZW5jZV9jaGVja19j Yl9mdW5jKSA8IDApCi0JCQl3YWtlX3VwX2FsbCgmc3luY19maWxlLT53cSk7CisJbXV0ZXhfbG9j aygmc3luY19maWxlLT5sb2NrKTsKKworCWZlbmNlID0gc3luY19maWxlX2dldF9mZW5jZV9sb2Nr ZWQoc3luY19maWxlKTsKKwlpZiAoZmVuY2UpIHsKKwkJaWYgKCF0ZXN0X2FuZF9zZXRfYml0KFBP TExfRU5BQkxFRCwgJmZlbmNlLT5mbGFncykpIHsKKwkJCWlmIChkbWFfZmVuY2VfYWRkX2NhbGxi YWNrKGZlbmNlLCAmc3luY19maWxlLT5jYiwKKwkJCQkJCSAgIGZlbmNlX2NoZWNrX2NiX2Z1bmMp IDwgMCkKKwkJCQl3YWtlX3VwX2FsbCgmc3luY19maWxlLT53cSk7CisJCX0KKwkJcmV0X3ZhbCA9 IGRtYV9mZW5jZV9pc19zaWduYWxlZChmZW5jZSkgPyBQT0xMSU4gOiAwOwogCX0KKwltdXRleF91 bmxvY2soJnN5bmNfZmlsZS0+bG9jayk7CiAKLQlyZXR1cm4gZG1hX2ZlbmNlX2lzX3NpZ25hbGVk KHN5bmNfZmlsZS0+ZmVuY2UpID8gUE9MTElOIDogMDsKKwlyZXR1cm4gcmV0X3ZhbDsKIH0KIAog c3RhdGljIGxvbmcgc3luY19maWxlX2lvY3RsX21lcmdlKHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNf ZmlsZSwKQEAgLTQzMyw2ICs0OTYsNyBAQCBzdGF0aWMgbG9uZyBzeW5jX2ZpbGVfaW9jdGxfZmVu Y2VfaW5mbyhzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUsCiAJc3RydWN0IHN5bmNfZmlsZV9p bmZvIGluZm87CiAJc3RydWN0IHN5bmNfZmVuY2VfaW5mbyAqZmVuY2VfaW5mbyA9IE5VTEw7CiAJ c3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlczsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKIAlf X3UzMiBzaXplOwogCWludCBudW1fZmVuY2VzLCByZXQsIGk7CiAKQEAgLTQ0Miw3ICs1MDYsMTUg QEAgc3RhdGljIGxvbmcgc3luY19maWxlX2lvY3RsX2ZlbmNlX2luZm8oc3RydWN0IHN5bmNfZmls ZSAqc3luY19maWxlLAogCWlmIChpbmZvLmZsYWdzIHx8IGluZm8ucGFkKQogCQlyZXR1cm4gLUVJ TlZBTDsKIAotCWZlbmNlcyA9IGdldF9mZW5jZXMoc3luY19maWxlLCAmbnVtX2ZlbmNlcyk7CisJ cmN1X3JlYWRfbG9jaygpOworCWZlbmNlID0gZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgmc3luY19m aWxlLT5mZW5jZSk7CisJcmN1X3JlYWRfdW5sb2NrKCk7CisKKwlmZW5jZXMgPSBnZXRfZmVuY2Vz KCZmZW5jZSwgJm51bV9mZW5jZXMpOworCisJLyogaWYgdGhlcmUgYXJlIG5vIGZlbmNlcyBpbiB0 aGUgc3luY19maWxlIGp1c3QgcmV0dXJuICovCisJaWYgKCFudW1fZmVuY2VzKQorCQlnb3RvIG5v X2ZlbmNlczsKIAogCS8qCiAJICogUGFzc2luZyBudW1fZmVuY2VzID0gMCBtZWFucyB0aGF0IHVz ZXJzcGFjZSBkb2Vzbid0IHdhbnQgdG8KQEAgLTQ1MywxMyArNTI1LDE3IEBAIHN0YXRpYyBsb25n IHN5bmNfZmlsZV9pb2N0bF9mZW5jZV9pbmZvKHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSwK IAlpZiAoIWluZm8ubnVtX2ZlbmNlcykKIAkJZ290byBub19mZW5jZXM7CiAKLQlpZiAoaW5mby5u dW1fZmVuY2VzIDwgbnVtX2ZlbmNlcykKLQkJcmV0dXJuIC1FSU5WQUw7CisJaWYgKGluZm8ubnVt X2ZlbmNlcyA8IG51bV9mZW5jZXMpIHsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBvdXQ7CisJ fQogCiAJc2l6ZSA9IG51bV9mZW5jZXMgKiBzaXplb2YoKmZlbmNlX2luZm8pOwogCWZlbmNlX2lu Zm8gPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpOwotCWlmICghZmVuY2VfaW5mbykKLQkJcmV0 dXJuIC1FTk9NRU07CisJaWYgKCFmZW5jZV9pbmZvKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdv dG8gb3V0OworCX0KIAogCWZvciAoaSA9IDA7IGkgPCBudW1fZmVuY2VzOyBpKyspCiAJCXN5bmNf ZmlsbF9mZW5jZV9pbmZvKGZlbmNlc1tpXSwgJmZlbmNlX2luZm9baV0pOwpAQCAtNDcyLDcgKzU0 OCwxMCBAQCBzdGF0aWMgbG9uZyBzeW5jX2ZpbGVfaW9jdGxfZmVuY2VfaW5mbyhzdHJ1Y3Qgc3lu Y19maWxlICpzeW5jX2ZpbGUsCiAKIG5vX2ZlbmNlczoKIAlzdHJsY3B5KGluZm8ubmFtZSwgc3lu Y19maWxlLT5uYW1lLCBzaXplb2YoaW5mby5uYW1lKSk7Ci0JaW5mby5zdGF0dXMgPSBkbWFfZmVu Y2VfaXNfc2lnbmFsZWQoc3luY19maWxlLT5mZW5jZSk7CisJaWYgKG51bV9mZW5jZXMpCisJCWlu Zm8uc3RhdHVzID0gZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKHN5bmNfZmlsZS0+ZmVuY2UpOworCWVs c2UKKwkJaW5mby5zdGF0dXMgPSAtRU5PRU5UOwogCWluZm8ubnVtX2ZlbmNlcyA9IG51bV9mZW5j ZXM7CiAKIAlpZiAoY29weV90b191c2VyKCh2b2lkIF9fdXNlciAqKWFyZywgJmluZm8sIHNpemVv ZihpbmZvKSkpCkBAIC00ODIsNyArNTYxLDcgQEAgc3RhdGljIGxvbmcgc3luY19maWxlX2lvY3Rs X2ZlbmNlX2luZm8oc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlLAogCiBvdXQ6CiAJa2ZyZWUo ZmVuY2VfaW5mbyk7Ci0KKwlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKIAlyZXR1cm4gcmV0OwogfQog CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N5bmNfZmlsZS5oIGIvaW5jbHVkZS9saW51eC9z eW5jX2ZpbGUuaAppbmRleCBlNjgzZGQxLi40YmY2NjFiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xp bnV4L3N5bmNfZmlsZS5oCisrKyBiL2luY2x1ZGUvbGludXgvc3luY19maWxlLmgKQEAgLTM0LDYg KzM0LDcgQEAKICAqIEBjYjoJCQlmZW5jZSBjYWxsYmFjayBpbmZvcm1hdGlvbgogICogQHR5cGU6 ICAgICAgICAgICAgICAgc3luYyBmaWxlIHR5cGUKICAqIEBmbGFnczogICAgICAgICAgICAgIGZs YWdzIHVzZWQgdG8gY3JlYXRlIHN5bmMgZmlsZQorICogQGxvY2s6ICAgICAgICAgICAgICAgbXV0 ZXggdG8gcHJvdGVjdCBmZW5jZS9jYiAtIHVzZWQgZm9yIHNlbWFwaG9yZXMKICAqLwogc3RydWN0 IHN5bmNfZmlsZSB7CiAJc3RydWN0IGZpbGUJCSpmaWxlOwpAQCAtNDUsMTAgKzQ2LDEzIEBAIHN0 cnVjdCBzeW5jX2ZpbGUgewogCiAJd2FpdF9xdWV1ZV9oZWFkX3QJd3E7CiAKLQlzdHJ1Y3QgZG1h X2ZlbmNlCSpmZW5jZTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1CSpmZW5jZTsKIAlzdHJ1Y3Qg ZG1hX2ZlbmNlX2NiIGNiOwogCXVpbnQzMl90IHR5cGU7CiAJdWludDMyX3QgZmxhZ3M7CisKKwkv KiBwcm90ZWN0cyB0aGUgZmVuY2UgcG9pbnRlciBhbmQgY2IgKi8KKwlzdHJ1Y3QgbXV0ZXggbG9j azsKIH07CiAKICNkZWZpbmUgUE9MTF9FTkFCTEVEIERNQV9GRU5DRV9GTEFHX1VTRVJfQklUUwot LSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=