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, 4 Apr 2017 14:27:29 +1000 Message-ID: <20170404042733.17203-5-airlied@gmail.com> References: <20170404042733.17203-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id BB4376E521 for ; Tue, 4 Apr 2017 04:27:40 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4265B31F3E7 for ; Tue, 4 Apr 2017 04:27:40 +0000 (UTC) Received: from dreadlord-bne-redhat-com.bne.redhat.com (dhcp-40-179.bne.redhat.com [10.64.40.179]) by smtp.corp.redhat.com (Postfix) with ESMTP id ACDD77DE0C for ; Tue, 4 Apr 2017 04:27:39 +0000 (UTC) In-Reply-To: <20170404042733.17203-1-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: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgcGF0Y2ggYWxsb3dz IHRoZSB1bmRlcmx5aW5nIGZlbmNlIGluIGEgc3luY19maWxlIHRvIGJlIGNoYW5nZWQKb3Igc2V0 IHRvIE5VTEwuIFRoaXMgaXNuJ3QgY3VycmVudGx5IHJlcXVpcmVkIGJ1dCBmb3IgVnVsa2FuCnNl bWFwaG9yZXMgd2UgbmVlZCB0byBiZSBhYmxlIHRvIHN3YXAgYW5kIHJlc2V0IHRoZSBmZW5jZS4K CkluIG9yZGVyIHRvIGZhY2lsaWF0ZSB0aGlzLCBpdCB1c2VzIHJjdSB0byBwcm90ZWN0IHRoZSBm ZW5jZSwKYWxvbmcgd2l0aCBhIG5ldyBtdXRleC4gVGhlIG11dGV4IGFsc28gcHJvdGVjdHMgdGhl IGNhbGxiYWNrLgpJdCBhbHNvIGNoZWNrcyBmb3IgTlVMTCB3aGVuIHJldHJpZXZpbmcgdGhlIHJj dSBwcm90ZWN0ZWQKZmVuY2UgaW4gY2FzZSBpdCBoYXMgYmVlbiByZXNldC4KCnYxLjE6IGZpeCB0 aGUgbG9ja2luZyAoSnVsaWEgTGF3YWxsKS4KdjI6IHVzZSByY3UgdHJ5IG9uZQp2MzogZml4IHBv bGwgdG8gdXNlIHByb3BlciByY3UsIGZpeHVwIG1lcmdlL2ZpbGwgaW9jdGxzCnRvIG5vdCBjcmFz aCBvbiBOVUxMIGZlbmNlIGNhc2VzLgp2NDogdXNlIHJjdSBpbiBldmVuIG1vcmUgcGxhY2VzLCBh ZGQgbWlzc2luZyBmcHV0CgpTaWduZWQtb2ZmLWJ5OiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRo YXQuY29tPgotLS0KIGRyaXZlcnMvZG1hLWJ1Zi9zeW5jX2ZpbGUuYyB8IDEzNSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogaW5jbHVkZS9saW51eC9zeW5jX2Zp bGUuaCAgIHwgICA2ICstCiAyIGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCAyOSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvc3luY19maWxlLmMgYi9k cml2ZXJzL2RtYS1idWYvc3luY19maWxlLmMKaW5kZXggMTUzYmYwMy4uNjM3NmY2ZiAxMDA2NDQK LS0tIGEvZHJpdmVycy9kbWEtYnVmL3N5bmNfZmlsZS5jCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9z eW5jX2ZpbGUuYwpAQCAtMjgsNiArMjgsMTAgQEAKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxl X29wZXJhdGlvbnMgc3luY19maWxlX2ZvcHM7CiAKKyNkZWZpbmUgc3luY19maWxlX2hlbGQob2Jq KSBsb2NrZGVwX2lzX2hlbGQoJihvYmopLT5sb2NrKQorI2RlZmluZSBzeW5jX2ZpbGVfYXNzZXJ0 X2hlbGQob2JqKSBcCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmKG9iaiktPmxvY2spCisKIC8qKgog ICogc3luY19maWxlX3ZhbGlkYXRlX3R5cGVfZmxhZ3MgLSB2YWxpZGF0ZSB0eXBlL2ZsYWdzIGZv ciBzdXBwb3J0CiAgKiBAdHlwZTogdHlwZSBvZiBzeW5jIGZpbGUgb2JqZWN0CkBAIC04MSw2ICs4 NSwxMCBAQCBzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGVfYWxsb2ModWludDMyX3QgdHlwZSwg dWludDMyX3QgZmxhZ3MpCiAKIAlzeW5jX2ZpbGUtPnR5cGUgPSB0eXBlOwogCXN5bmNfZmlsZS0+ ZmxhZ3MgPSBmbGFnczsKKworCVJDVV9JTklUX1BPSU5URVIoc3luY19maWxlLT5mZW5jZSwgTlVM TCk7CisKKwltdXRleF9pbml0KCZzeW5jX2ZpbGUtPmxvY2spOwogCXJldHVybiBzeW5jX2ZpbGU7 CiAKIGVycjoKQEAgLTExNyw3ICsxMjUsOSBAQCBzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGVf Y3JlYXRlKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLAogCWlmICghc3luY19maWxlKQogCQlyZXR1 cm4gTlVMTDsKIAotCXN5bmNfZmlsZS0+ZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KGZlbmNlKTsKKwlk bWFfZmVuY2VfZ2V0KGZlbmNlKTsKKworCVJDVV9JTklUX1BPSU5URVIoc3luY19maWxlLT5mZW5j ZSwgZmVuY2UpOwogCiAJc25wcmludGYoc3luY19maWxlLT5uYW1lLCBzaXplb2Yoc3luY19maWxl LT5uYW1lKSwgIiVzLSVzJWxsdS0lZCIsCiAJCSBmZW5jZS0+b3BzLT5nZXRfZHJpdmVyX25hbWUo ZmVuY2UpLApAQCAtMTY4LDEzICsxNzgsMjggQEAgc3RydWN0IGRtYV9mZW5jZSAqc3luY19maWxl X2dldF9mZW5jZShpbnQgZmQpCiAJaWYgKCFzeW5jX2ZpbGUpCiAJCXJldHVybiBOVUxMOwogCi0J ZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KHN5bmNfZmlsZS0+ZmVuY2UpOworCWlmICghcmN1X2FjY2Vz c19wb2ludGVyKHN5bmNfZmlsZS0+ZmVuY2UpKSB7CisJCWZwdXQoc3luY19maWxlLT5maWxlKTsK KwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmN1X3JlYWRfbG9jaygpOworCWZlbmNlID0gZG1hX2Zl bmNlX2dldF9yY3Vfc2FmZSgmc3luY19maWxlLT5mZW5jZSk7CisJcmN1X3JlYWRfdW5sb2NrKCk7 CisKIAlmcHV0KHN5bmNfZmlsZS0+ZmlsZSk7CiAKIAlyZXR1cm4gZmVuY2U7CiB9CiBFWFBPUlRf U1lNQk9MKHN5bmNfZmlsZV9nZXRfZmVuY2UpOwogCitzdGF0aWMgaW5saW5lIHN0cnVjdCBkbWFf ZmVuY2UgKgorc3luY19maWxlX2dldF9mZW5jZV9sb2NrZWQoc3RydWN0IHN5bmNfZmlsZSAqc3lu Y19maWxlKQoreworCXJldHVybiByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5bmNfZmlsZS0+ ZmVuY2UsCisJCQkJCSBzeW5jX2ZpbGVfaGVsZChzeW5jX2ZpbGUpKTsKK30KKwogc3RhdGljIGlu dCBzeW5jX2ZpbGVfc2V0X2ZlbmNlKHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSwKIAkJCSAg ICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2VzLCBpbnQgbnVtX2ZlbmNlcykKIHsKQEAgLTE4 Nyw3ICsyMTIsNyBAQCBzdGF0aWMgaW50IHN5bmNfZmlsZV9zZXRfZmVuY2Uoc3RydWN0IHN5bmNf ZmlsZSAqc3luY19maWxlLAogCSAqIHdlIG93biB0aGUgcmVmZXJlbmNlIG9mIHRoZSBkbWFfZmVu Y2VfYXJyYXkgY3JlYXRpb24uCiAJICovCiAJaWYgKG51bV9mZW5jZXMgPT0gMSkgewotCQlzeW5j X2ZpbGUtPmZlbmNlID0gZmVuY2VzWzBdOworCQlSQ1VfSU5JVF9QT0lOVEVSKHN5bmNfZmlsZS0+ ZmVuY2UsIGZlbmNlc1swXSk7CiAJCWtmcmVlKGZlbmNlcyk7CiAJfSBlbHNlIHsKIAkJYXJyYXkg PSBkbWFfZmVuY2VfYXJyYXlfY3JlYXRlKG51bV9mZW5jZXMsIGZlbmNlcywKQEAgLTE5NiwyNCAr MjIxLDMwIEBAIHN0YXRpYyBpbnQgc3luY19maWxlX3NldF9mZW5jZShzdHJ1Y3Qgc3luY19maWxl ICpzeW5jX2ZpbGUsCiAJCWlmICghYXJyYXkpCiAJCQlyZXR1cm4gLUVOT01FTTsKIAotCQlzeW5j X2ZpbGUtPmZlbmNlID0gJmFycmF5LT5iYXNlOworCQlSQ1VfSU5JVF9QT0lOVEVSKHN5bmNfZmls ZS0+ZmVuY2UsICZhcnJheS0+YmFzZSk7CiAJfQogCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBz dHJ1Y3QgZG1hX2ZlbmNlICoqZ2V0X2ZlbmNlcyhzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUs CisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIHJjdSByZWFkIGxvY2sgdGFrZW4gKi8KK3N0YXRpYyBz dHJ1Y3QgZG1hX2ZlbmNlICoqZ2V0X2ZlbmNlcyhzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UsCiAJ CQkJICAgICBpbnQgKm51bV9mZW5jZXMpCiB7Ci0JaWYgKGRtYV9mZW5jZV9pc19hcnJheShzeW5j X2ZpbGUtPmZlbmNlKSkgewotCQlzdHJ1Y3QgZG1hX2ZlbmNlX2FycmF5ICphcnJheSA9IHRvX2Rt YV9mZW5jZV9hcnJheShzeW5jX2ZpbGUtPmZlbmNlKTsKKwlpZiAoISpmZW5jZSkgeworCQkqbnVt X2ZlbmNlcyA9IDA7CisJCXJldHVybiBOVUxMOworCX0KKworCWlmIChkbWFfZmVuY2VfaXNfYXJy YXkoKmZlbmNlKSkgeworCQlzdHJ1Y3QgZG1hX2ZlbmNlX2FycmF5ICphcnJheSA9IHRvX2RtYV9m ZW5jZV9hcnJheSgqZmVuY2UpOwogCiAJCSpudW1fZmVuY2VzID0gYXJyYXktPm51bV9mZW5jZXM7 CiAJCXJldHVybiBhcnJheS0+ZmVuY2VzOwogCX0KIAogCSpudW1fZmVuY2VzID0gMTsKLQlyZXR1 cm4gJnN5bmNfZmlsZS0+ZmVuY2U7CisJcmV0dXJuIGZlbmNlOwogfQogCiBzdGF0aWMgdm9pZCBh ZGRfZmVuY2Uoc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlcywKQEAgLTI0MywxOCArMjc0LDMxIEBA IHN0YXRpYyBzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGVfbWVyZ2UoY29uc3QgY2hhciAqbmFt ZSwgc3RydWN0IHN5bmNfZmlsZSAqYSwKIAlzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGU7CiAJ c3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlcywgKipuZmVuY2VzLCAqKmFfZmVuY2VzLCAqKmJfZmVu Y2VzOwogCWludCBpLCBpX2EsIGlfYiwgbnVtX2ZlbmNlcywgYV9udW1fZmVuY2VzLCBiX251bV9m ZW5jZXM7CisJc3RydWN0IGRtYV9mZW5jZSAqYV9mZW5jZSwgKmJfZmVuY2U7CiAKIAlpZiAoYS0+ dHlwZSAhPSBiLT50eXBlKQogCQlyZXR1cm4gTlVMTDsKIAotCXN5bmNfZmlsZSA9IHN5bmNfZmls ZV9hbGxvYyhhLT50eXBlLCBhLT5mbGFncyk7Ci0JaWYgKCFzeW5jX2ZpbGUpCisJaWYgKCFyY3Vf YWNjZXNzX3BvaW50ZXIoYS0+ZmVuY2UpIHx8CisJICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoYi0+ ZmVuY2UpKQogCQlyZXR1cm4gTlVMTDsKIAotCWFfZmVuY2VzID0gZ2V0X2ZlbmNlcyhhLCAmYV9u dW1fZmVuY2VzKTsKLQliX2ZlbmNlcyA9IGdldF9mZW5jZXMoYiwgJmJfbnVtX2ZlbmNlcyk7CisJ cmN1X3JlYWRfbG9jaygpOworCWFfZmVuY2UgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlKCZhLT5m ZW5jZSk7CisJYl9mZW5jZSA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJmItPmZlbmNlKTsKKwly Y3VfcmVhZF91bmxvY2soKTsKKworCWFfZmVuY2VzID0gZ2V0X2ZlbmNlcygmYV9mZW5jZSwgJmFf bnVtX2ZlbmNlcyk7CisJYl9mZW5jZXMgPSBnZXRfZmVuY2VzKCZiX2ZlbmNlLCAmYl9udW1fZmVu Y2VzKTsKKwlpZiAoIWFfbnVtX2ZlbmNlcyB8fCAhYl9udW1fZmVuY2VzKQorCQlnb3RvIHB1dF9z cmNfZmVuY2VzOworCiAJaWYgKGFfbnVtX2ZlbmNlcyA+IElOVF9NQVggLSBiX251bV9mZW5jZXMp Ci0JCXJldHVybiBOVUxMOworCQlnb3RvIHB1dF9zcmNfZmVuY2VzOworCisJc3luY19maWxlID0g c3luY19maWxlX2FsbG9jKGEtPnR5cGUsIGEtPmZsYWdzKTsKKwlpZiAoIXN5bmNfZmlsZSkKKwkJ Z290byBwdXRfc3JjX2ZlbmNlczsKIAogCW51bV9mZW5jZXMgPSBhX251bV9mZW5jZXMgKyBiX251 bV9mZW5jZXM7CiAKQEAgLTMxNSwxMSArMzU5LDE2IEBAIHN0YXRpYyBzdHJ1Y3Qgc3luY19maWxl ICpzeW5jX2ZpbGVfbWVyZ2UoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN5bmNfZmlsZSAqYSwK IAkJZ290byBlcnI7CiAJfQogCisJZG1hX2ZlbmNlX3B1dChhX2ZlbmNlKTsKKwlkbWFfZmVuY2Vf cHV0KGJfZmVuY2UpOwogCXN0cmxjcHkoc3luY19maWxlLT5uYW1lLCBuYW1lLCBzaXplb2Yoc3lu Y19maWxlLT5uYW1lKSk7CiAJcmV0dXJuIHN5bmNfZmlsZTsKIAogZXJyOgogCWZwdXQoc3luY19m aWxlLT5maWxlKTsKK3B1dF9zcmNfZmVuY2VzOgorCWRtYV9mZW5jZV9wdXQoYV9mZW5jZSk7CisJ ZG1hX2ZlbmNlX3B1dChiX2ZlbmNlKTsKIAlyZXR1cm4gTlVMTDsKIAogfQpAQCAtMzI4LDEwICsz NzcsMTUgQEAgc3RhdGljIHZvaWQgc3luY19maWxlX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiB7 CiAJc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVj dCBzeW5jX2ZpbGUsCiAJCQkJCQkgICAgIGtyZWYpOworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl OworCisJZmVuY2UgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5bmNfZmlsZS0+ZmVuY2Us IDEpOworCWlmIChmZW5jZSkgeworCQlpZiAodGVzdF9iaXQoUE9MTF9FTkFCTEVELCAmZmVuY2Ut PmZsYWdzKSkKKwkJCWRtYV9mZW5jZV9yZW1vdmVfY2FsbGJhY2soZmVuY2UsICZzeW5jX2ZpbGUt PmNiKTsKKwkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CisJfQogCi0JaWYgKHRlc3RfYml0KFBPTExf RU5BQkxFRCwgJnN5bmNfZmlsZS0+ZmVuY2UtPmZsYWdzKSkKLQkJZG1hX2ZlbmNlX3JlbW92ZV9j YWxsYmFjayhzeW5jX2ZpbGUtPmZlbmNlLCAmc3luY19maWxlLT5jYik7Ci0JZG1hX2ZlbmNlX3B1 dChzeW5jX2ZpbGUtPmZlbmNlKTsKIAlrZnJlZShzeW5jX2ZpbGUpOwogfQogCkBAIC0zNDYsMTYg KzQwMCwyNSBAQCBzdGF0aWMgaW50IHN5bmNfZmlsZV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogc3RhdGljIHVuc2lnbmVkIGludCBzeW5jX2ZpbGVfcG9s bChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdCkKIHsKIAlzdHJ1Y3Qgc3luY19m aWxlICpzeW5jX2ZpbGUgPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJdW5zaWduZWQgaW50IHJldF92 YWwgPSAwOworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwogCiAJcG9sbF93YWl0KGZpbGUsICZz eW5jX2ZpbGUtPndxLCB3YWl0KTsKIAotCWlmICghdGVzdF9hbmRfc2V0X2JpdChQT0xMX0VOQUJM RUQsICZzeW5jX2ZpbGUtPmZlbmNlLT5mbGFncykpIHsKLQkJaWYgKGRtYV9mZW5jZV9hZGRfY2Fs bGJhY2soc3luY19maWxlLT5mZW5jZSwgJnN5bmNfZmlsZS0+Y2IsCi0JCQkJCSAgIGZlbmNlX2No ZWNrX2NiX2Z1bmMpIDwgMCkKLQkJCXdha2VfdXBfYWxsKCZzeW5jX2ZpbGUtPndxKTsKKwltdXRl eF9sb2NrKCZzeW5jX2ZpbGUtPmxvY2spOworCisJZmVuY2UgPSBzeW5jX2ZpbGVfZ2V0X2ZlbmNl X2xvY2tlZChzeW5jX2ZpbGUpOworCWlmIChmZW5jZSkgeworCQlpZiAoIXRlc3RfYW5kX3NldF9i aXQoUE9MTF9FTkFCTEVELCAmZmVuY2UtPmZsYWdzKSkgeworCQkJaWYgKGRtYV9mZW5jZV9hZGRf Y2FsbGJhY2soZmVuY2UsICZzeW5jX2ZpbGUtPmNiLAorCQkJCQkJICAgZmVuY2VfY2hlY2tfY2Jf ZnVuYykgPCAwKQorCQkJCXdha2VfdXBfYWxsKCZzeW5jX2ZpbGUtPndxKTsKKwkJfQorCQlyZXRf dmFsID0gZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGZlbmNlKSA/IFBPTExJTiA6IDA7CiAJfQorCW11 dGV4X3VubG9jaygmc3luY19maWxlLT5sb2NrKTsKIAotCXJldHVybiBkbWFfZmVuY2VfaXNfc2ln bmFsZWQoc3luY19maWxlLT5mZW5jZSkgPyBQT0xMSU4gOiAwOworCXJldHVybiByZXRfdmFsOwog fQogCiBzdGF0aWMgbG9uZyBzeW5jX2ZpbGVfaW9jdGxfbWVyZ2Uoc3RydWN0IHN5bmNfZmlsZSAq c3luY19maWxlLApAQCAtNDMxLDYgKzQ5NCw3IEBAIHN0YXRpYyBsb25nIHN5bmNfZmlsZV9pb2N0 bF9mZW5jZV9pbmZvKHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSwKIAlzdHJ1Y3Qgc3luY19m aWxlX2luZm8gaW5mbzsKIAlzdHJ1Y3Qgc3luY19mZW5jZV9pbmZvICpmZW5jZV9pbmZvID0gTlVM TDsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2VzOworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl OwogCV9fdTMyIHNpemU7CiAJaW50IG51bV9mZW5jZXMsIHJldCwgaTsKIApAQCAtNDQwLDcgKzUw NCwxNSBAQCBzdGF0aWMgbG9uZyBzeW5jX2ZpbGVfaW9jdGxfZmVuY2VfaW5mbyhzdHJ1Y3Qgc3lu Y19maWxlICpzeW5jX2ZpbGUsCiAJaWYgKGluZm8uZmxhZ3MgfHwgaW5mby5wYWQpCiAJCXJldHVy biAtRUlOVkFMOwogCi0JZmVuY2VzID0gZ2V0X2ZlbmNlcyhzeW5jX2ZpbGUsICZudW1fZmVuY2Vz KTsKKwlyY3VfcmVhZF9sb2NrKCk7CisJZmVuY2UgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlKCZz eW5jX2ZpbGUtPmZlbmNlKTsKKwlyY3VfcmVhZF91bmxvY2soKTsKKworCWZlbmNlcyA9IGdldF9m ZW5jZXMoJmZlbmNlLCAmbnVtX2ZlbmNlcyk7CisKKwkvKiBpZiB0aGVyZSBhcmUgbm8gZmVuY2Vz IGluIHRoZSBzeW5jX2ZpbGUganVzdCByZXR1cm4gKi8KKwlpZiAoIW51bV9mZW5jZXMpCisJCWdv dG8gbm9fZmVuY2VzOwogCiAJLyoKIAkgKiBQYXNzaW5nIG51bV9mZW5jZXMgPSAwIG1lYW5zIHRo YXQgdXNlcnNwYWNlIGRvZXNuJ3Qgd2FudCB0bwpAQCAtNDUxLDEzICs1MjMsMTcgQEAgc3RhdGlj IGxvbmcgc3luY19maWxlX2lvY3RsX2ZlbmNlX2luZm8oc3RydWN0IHN5bmNfZmlsZSAqc3luY19m aWxlLAogCWlmICghaW5mby5udW1fZmVuY2VzKQogCQlnb3RvIG5vX2ZlbmNlczsKIAotCWlmIChp bmZvLm51bV9mZW5jZXMgPCBudW1fZmVuY2VzKQotCQlyZXR1cm4gLUVJTlZBTDsKKwlpZiAoaW5m by5udW1fZmVuY2VzIDwgbnVtX2ZlbmNlcykgeworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIG91 dDsKKwl9CiAKIAlzaXplID0gbnVtX2ZlbmNlcyAqIHNpemVvZigqZmVuY2VfaW5mbyk7CiAJZmVu Y2VfaW5mbyA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFmZW5jZV9pbmZvKQot CQlyZXR1cm4gLUVOT01FTTsKKwlpZiAoIWZlbmNlX2luZm8pIHsKKwkJcmV0ID0gLUVOT01FTTsK KwkJZ290byBvdXQ7CisJfQogCiAJZm9yIChpID0gMDsgaSA8IG51bV9mZW5jZXM7IGkrKykKIAkJ c3luY19maWxsX2ZlbmNlX2luZm8oZmVuY2VzW2ldLCAmZmVuY2VfaW5mb1tpXSk7CkBAIC00NzAs NyArNTQ2LDEwIEBAIHN0YXRpYyBsb25nIHN5bmNfZmlsZV9pb2N0bF9mZW5jZV9pbmZvKHN0cnVj dCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSwKIAogbm9fZmVuY2VzOgogCXN0cmxjcHkoaW5mby5uYW1l LCBzeW5jX2ZpbGUtPm5hbWUsIHNpemVvZihpbmZvLm5hbWUpKTsKLQlpbmZvLnN0YXR1cyA9IGRt YV9mZW5jZV9pc19zaWduYWxlZChzeW5jX2ZpbGUtPmZlbmNlKTsKKwlpZiAobnVtX2ZlbmNlcykK KwkJaW5mby5zdGF0dXMgPSBkbWFfZmVuY2VfaXNfc2lnbmFsZWQoc3luY19maWxlLT5mZW5jZSk7 CisJZWxzZQorCQlpbmZvLnN0YXR1cyA9IC1FTk9FTlQ7CiAJaW5mby5udW1fZmVuY2VzID0gbnVt X2ZlbmNlczsKIAogCWlmIChjb3B5X3RvX3VzZXIoKHZvaWQgX191c2VyICopYXJnLCAmaW5mbywg c2l6ZW9mKGluZm8pKSkKQEAgLTQ4MCw3ICs1NTksNyBAQCBzdGF0aWMgbG9uZyBzeW5jX2ZpbGVf aW9jdGxfZmVuY2VfaW5mbyhzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUsCiAKIG91dDoKIAlr ZnJlZShmZW5jZV9pbmZvKTsKLQorCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwogCXJldHVybiByZXQ7 CiB9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3luY19maWxlLmggYi9pbmNsdWRlL2xp bnV4L3N5bmNfZmlsZS5oCmluZGV4IGU2ODNkZDEuLjRiZjY2MWIgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvc3luY19maWxlLmgKKysrIGIvaW5jbHVkZS9saW51eC9zeW5jX2ZpbGUuaApAQCAt MzQsNiArMzQsNyBAQAogICogQGNiOgkJCWZlbmNlIGNhbGxiYWNrIGluZm9ybWF0aW9uCiAgKiBA dHlwZTogICAgICAgICAgICAgICBzeW5jIGZpbGUgdHlwZQogICogQGZsYWdzOiAgICAgICAgICAg ICAgZmxhZ3MgdXNlZCB0byBjcmVhdGUgc3luYyBmaWxlCisgKiBAbG9jazogICAgICAgICAgICAg ICBtdXRleCB0byBwcm90ZWN0IGZlbmNlL2NiIC0gdXNlZCBmb3Igc2VtYXBob3JlcwogICovCiBz dHJ1Y3Qgc3luY19maWxlIHsKIAlzdHJ1Y3QgZmlsZQkJKmZpbGU7CkBAIC00NSwxMCArNDYsMTMg QEAgc3RydWN0IHN5bmNfZmlsZSB7CiAKIAl3YWl0X3F1ZXVlX2hlYWRfdAl3cTsKIAotCXN0cnVj dCBkbWFfZmVuY2UJKmZlbmNlOworCXN0cnVjdCBkbWFfZmVuY2UgX19yY3UJKmZlbmNlOwogCXN0 cnVjdCBkbWFfZmVuY2VfY2IgY2I7CiAJdWludDMyX3QgdHlwZTsKIAl1aW50MzJfdCBmbGFnczsK KworCS8qIHByb3RlY3RzIHRoZSBmZW5jZSBwb2ludGVyIGFuZCBjYiAqLworCXN0cnVjdCBtdXRl eCBsb2NrOwogfTsKIAogI2RlZmluZSBQT0xMX0VOQUJMRUQgRE1BX0ZFTkNFX0ZMQUdfVVNFUl9C SVRTCi0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==