fix inode/device usage for win32, take #1
[email protected] (Pierre Joye) Sat, 17 Oct 2009 20:15:21 +0200
| Newsgroups | php.apc.dev |
|---|---|
| Message-ID | <[email protected]> |
--00c09ffb4d2ee7d4e80476257ee7 Content-Type: text/plain; charset=ISO-8859-1 hi, This is a first attempt (draft) to fix the pecl bug #16860 (http://pecl.php.net/bugs/bug.php?id=16860). Here are the changes I made so far: - add apc_ino_t and apc_dev_t - native ino_t/dev_t on non windows platform - unsigned int64 on windows - use string for the inode and device key (cache info and iterator) - device uses now the volume serial number (part of the file information) - inode uses now the file id (part of the file information) - add zend_file_handle support to apc_cache_make_file_key to avoid (no need to open/stat a file already opened) - to do: have to add fstat on unix - getfileinfofromhandle (stat-like) is used on windows I have tested it using fcgi and apache 2.2 on windows and everything seems to work as it should. However I like to test it further and fix any side effects before to apply it. Thomas Peterson also tested it using apache and CLI with the test cases provided in the report. Comments and suggestions welcome :) Cheers, -- Pierre http://blog.thepimp.net | http://www.libgd.org --00c09ffb4d2ee7d4e80476257ee7 Content-Type: text/plain; charset=US-ASCII; name="inode_win32_fix.txt" Content-Disposition: attachment; filename="inode_win32_fix.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g0wkr8q30 SW5kZXg6IGFwY19tYWluLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBhcGNfbWFpbi5jCShyZXZpc2lvbiAy ODk2ODkpDQorKysgYXBjX21haW4uYwkod29ya2luZyBjb3B5KQ0KQEAgLTUyMSw3ICs1MjEsNyBA QA0KICNlbmRpZgogCiAgICAgLyogdHJ5IHRvIGNyZWF0ZSBhIGNhY2hlIGtleTsgaWYgd2UgZmFp bCwgZ2l2ZSB1cCBvbiBjYWNoaW5nICovCi0gICAgaWYgKCFhcGNfY2FjaGVfbWFrZV9maWxlX2tl eSgma2V5LCBoLT5maWxlbmFtZSwgUEcoaW5jbHVkZV9wYXRoKSwgdCBUU1JNTFNfQ0MpKSB7Cisg ICAgaWYgKCFhcGNfY2FjaGVfbWFrZV9maWxlX2tleSgma2V5LCBoLT5maWxlbmFtZSwgUEcoaW5j bHVkZV9wYXRoKSwgdCwgaCBUU1JNTFNfQ0MpKSB7CiAgICAgICAgIHJldHVybiBvbGRfY29tcGls ZV9maWxlKGgsIHR5cGUgVFNSTUxTX0NDKTsKICAgICB9CiAKSW5kZXg6IHBocF9hcGMuYw0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KLS0tIHBocF9hcGMuYwkocmV2aXNpb24gMjg5Njg5KQ0KKysrIHBocF9hcGMuYwko d29ya2luZyBjb3B5KQ0KQEAgLTQ2Miw4ICs0NjIsMjEgQEANCiAKICAgICAgICAgaWYocC0+dHlw ZSA9PSBBUENfQ0FDSEVfRU5UUllfRklMRSkgewogICAgICAgICAgICAgYWRkX2Fzc29jX3N0cmlu ZyhsaW5rLCAiZmlsZW5hbWUiLCBwLT5kYXRhLmZpbGUuZmlsZW5hbWUsIDEpOworI2lmZGVmIFBI UF9XSU4zMgorCQkJeworCQkJCWNoYXIgYnVmWzIwXTsKKwkJCQlzcHJpbnRmKGJ1ZiwgIiVJNjRk IiwgIHAtPmRhdGEuZmlsZS5kZXZpY2UpOworCQkJCWFkZF9hc3NvY19zdHJpbmcobGluaywgImRl dmljZSIsIGJ1ZiwgMSk7CisKKwkJCQlzcHJpbnRmKGJ1ZiwgIiVJNjRkIiwgIHAtPmRhdGEuZmls ZS5pbm9kZSk7CisJCQkJYWRkX2Fzc29jX3N0cmluZyhsaW5rLCAiaW5vZGUiLCBidWYsIDEpOwor CQkJfQorI2Vsc2UKICAgICAgICAgICAgIGFkZF9hc3NvY19sb25nKGxpbmssICJkZXZpY2UiLCBw LT5kYXRhLmZpbGUuZGV2aWNlKTsKICAgICAgICAgICAgIGFkZF9hc3NvY19sb25nKGxpbmssICJp bm9kZSIsIHAtPmRhdGEuZmlsZS5pbm9kZSk7CisjZW5kaWYKKworCiAgICAgICAgICAgICBhZGRf YXNzb2Nfc3RyaW5nKGxpbmssICJ0eXBlIiwgImZpbGUiLCAxKTsKICAgICAgICAgICAgIGlmKEFQ Q0coZmlsZV9tZDUpKSB7CiAgICAgICAgICAgICAgICAgbWFrZV9kaWdlc3QobWQ1c3RyLCBwLT5k YXRhLmZpbGUubWQ1KTsKQEAgLTUwMCw4ICs1MTMsMjAgQEANCiAKICAgICAgICAgaWYocC0+dHlw ZSA9PSBBUENfQ0FDSEVfRU5UUllfRklMRSkgewogICAgICAgICAgICAgYWRkX2Fzc29jX3N0cmlu ZyhsaW5rLCAiZmlsZW5hbWUiLCBwLT5kYXRhLmZpbGUuZmlsZW5hbWUsIDEpOworI2lmZGVmIFBI UF9XSU4zMgorCQkJeworCQkJCWNoYXIgYnVmWzIwXTsKKwkJCQlzcHJpbnRmKGJ1ZiwgIiVJNjRk IiwgIHAtPmRhdGEuZmlsZS5kZXZpY2UpOworCQkJCWFkZF9hc3NvY19zdHJpbmcobGluaywgImRl dmljZSIsIGJ1ZiwgMSk7CisKKwkJCQlzcHJpbnRmKGJ1ZiwgIiVJNjRkIiwgIHAtPmRhdGEuZmls ZS5pbm9kZSk7CisJCQkJYWRkX2Fzc29jX3N0cmluZyhsaW5rLCAiaW5vZGUiLCBidWYsIDEpOwor CQkJfQorI2Vsc2UKICAgICAgICAgICAgIGFkZF9hc3NvY19sb25nKGxpbmssICJkZXZpY2UiLCBw LT5kYXRhLmZpbGUuZGV2aWNlKTsKICAgICAgICAgICAgIGFkZF9hc3NvY19sb25nKGxpbmssICJp bm9kZSIsIHAtPmRhdGEuZmlsZS5pbm9kZSk7CisjZW5kaWYKKwogICAgICAgICAgICAgYWRkX2Fz c29jX3N0cmluZyhsaW5rLCAidHlwZSIsICJmaWxlIiwgMSk7CiAgICAgICAgICAgICBpZihBUENH KGZpbGVfbWQ1KSkgewogICAgICAgICAgICAgICAgIG1ha2VfZGlnZXN0KG1kNXN0ciwgcC0+ZGF0 YS5maWxlLm1kNSk7CkBAIC0xMjU1LDcgKzEyODAsNyBAQA0KICAgICAgICAgICAgIGZpbGVfaGFu ZGxlLmZyZWVfZmlsZW5hbWUgPSAwOwogICAgICAgICAgICAgZmlsZV9oYW5kbGUub3BlbmVkX3Bh dGggPSBOVUxMOwogCi0gICAgICAgICAgICBpZiAoIWFwY19jYWNoZV9tYWtlX2ZpbGVfa2V5KCYo a2V5c1tpXSksIGZpbGVfaGFuZGxlLmZpbGVuYW1lLCBQRyhpbmNsdWRlX3BhdGgpLCB0IFRTUk1M U19DQykpIHsKKyAgICAgICAgICAgIGlmICghYXBjX2NhY2hlX21ha2VfZmlsZV9rZXkoJihrZXlz W2ldKSwgZmlsZV9oYW5kbGUuZmlsZW5hbWUsIFBHKGluY2x1ZGVfcGF0aCksIHQsIE5VTEwgVFNS TUxTX0NDKSkgewogICAgICAgICAgICAgICAgIGFkZF9hc3NvY19sb25nKHJldHVybl92YWx1ZSwg Wl9TVFJWQUxfUFAoaGVudHJ5KSwgLTEpOyAgLyogLTE6IGNvbXBpbGF0aW9uIGVycm9yICovCiAg ICAgICAgICAgICAgICAgYXBjX3dwcmludCgiRXJyb3IgY29tcGlsaW5nICVzIGluIGFwY19jb21w aWxlX2ZpbGUuIiwgZmlsZV9oYW5kbGUuZmlsZW5hbWUpOwogICAgICAgICAgICAgICAgIGJyZWFr OwpJbmRleDogYXBjX2l0ZXJhdG9yLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBhcGNfaXRlcmF0b3IuYwko cmV2aXNpb24gMjg5Njg5KQ0KKysrIGFwY19pdGVyYXRvci5jCSh3b3JraW5nIGNvcHkpDQpAQCAt NDYsNyArNDYsMTEgQEANCiAKICAgICBpZiAoc2xvdC0+a2V5LnR5cGUgPT0gQVBDX0NBQ0hFX0tF WV9GSUxFKSB7CiAgICAgICAgIC8qIGtleXMgc2hvdWxkIGJlIHVuaXF1ZSBhbmQgd2l0aCBzdGF0 PTEgd2UgY291bGQgaGF2ZSBtdWx0aXBsZSBmaWxlcyB3aXRoIHRoZSBzYW1lIG5hbWUsIHNvIHVz ZSAnPGRldmljZT4gPGlub2RlPicgaW5zdGVhZCAqLworI2lmZGVmIFBIUF9XSU4zMgorICAgICAg ICBpdGVtLT5rZXlfbGVuID0gc3BwcmludGYoJml0ZW0tPmtleSwgMCwgIiVJNjRkICVJNjRkIiwg c2xvdC0+a2V5LmRhdGEuZmlsZS5kZXZpY2UsIHNsb3QtPmtleS5kYXRhLmZpbGUuaW5vZGUpOwor I2Vsc2UKICAgICAgICAgaXRlbS0+a2V5X2xlbiA9IHNwcHJpbnRmKCZpdGVtLT5rZXksIDAsICIl bGQgJWxkIiwgKHVsb25nKXNsb3QtPmtleS5kYXRhLmZpbGUuZGV2aWNlLCAodWxvbmcpc2xvdC0+ a2V5LmRhdGEuZmlsZS5pbm9kZSk7CisjZW5kaWYKICAgICAgICAgaXRlbS0+ZmlsZW5hbWVfa2V5 ID0gZXN0cmR1cChzbG90LT52YWx1ZS0+ZGF0YS5maWxlLmZpbGVuYW1lKTsKICAgICB9IGVsc2Ug aWYgKHNsb3QtPmtleS50eXBlID09IEFQQ19DQUNIRV9LRVlfVVNFUikgewogICAgICAgICBpdGVt LT5rZXkgPSBlc3RybmR1cCgoY2hhciopc2xvdC0+a2V5LmRhdGEudXNlci5pZGVudGlmaWVyLCBz bG90LT5rZXkuZGF0YS51c2VyLmlkZW50aWZpZXJfbGVuKTsKQEAgLTgwLDEyICs4NCwyNCBAQA0K ICAgICB9CiAgICAgaWYgKEFQQ19JVEVSX0RFVklDRSAmIGl0ZXJhdG9yLT5mb3JtYXQpIHsKICAg ICAgICAgaWYoc2xvdC0+a2V5LnR5cGUgPT0gQVBDX0NBQ0hFX0tFWV9GSUxFKSB7CisjaWZkZWYg UEhQX1dJTjMyCisJCQljaGFyIGJ1ZlsyMF07CisJCQlzcHJpbnRmKGJ1ZiwgIiVJNjRkIiwgc2xv dC0+a2V5LmRhdGEuZmlsZS5kZXZpY2UpOworCQkJYWRkX2Fzc29jX3N0cmluZyhpdGVtLT52YWx1 ZSwgImRldmljZSIsIGJ1ZiwgMSk7CisjZWxzZQogICAgICAgICAgICAgYWRkX2Fzc29jX2xvbmco aXRlbS0+dmFsdWUsICJkZXZpY2UiLCBzbG90LT5rZXkuZGF0YS5maWxlLmRldmljZSk7CisjZW5k aWYKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoQVBDX0lURVJfSU5PREUgJiBpdGVyYXRvci0+ Zm9ybWF0KSB7CiAgICAgICAgIGlmKHNsb3QtPmtleS50eXBlID09IEFQQ19DQUNIRV9LRVlfRklM RSkgeworI2lmZGVmIFBIUF9XSU4zMgorCQkJY2hhciBidWZbMjBdOworCQkJc3ByaW50ZihidWYs ICIlSTY0ZCIsIHNsb3QtPmtleS5kYXRhLmZpbGUuZGV2aWNlKTsKKwkJCWFkZF9hc3NvY19zdHJp bmcoaXRlbS0+dmFsdWUsICJkZXZpY2UiLCBidWYsIDEpOworI2Vsc2UKICAgICAgICAgICAgIGFk ZF9hc3NvY19sb25nKGl0ZW0tPnZhbHVlLCAiaW5vZGUiLCBzbG90LT5rZXkuZGF0YS5maWxlLmlu b2RlKTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgfQogICAgIGlmIChBUENfSVRFUl9LRVkgJiBp dGVyYXRvci0+Zm9ybWF0KSB7CkluZGV4OiBhcGNfY2FjaGUuYw0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGFw Y19jYWNoZS5jCShyZXZpc2lvbiAyODk2ODkpDQorKysgYXBjX2NhY2hlLmMJKHdvcmtpbmcgY29w eSkNCkBAIC00OCwxMCArNDgsMTcgQEANCiBzdGF0aWMgdm9pZCBhcGNfY2FjaGVfZXhwdW5nZShh cGNfY2FjaGVfdCogY2FjaGUsIHNpemVfdCBzaXplKTsKIAogLyoge3t7IGhhc2ggKi8KKyNpZmRl ZiBQSFBfV0lOMzIKK3N0YXRpYyBfX2ludDY0IGhhc2goYXBjX2NhY2hlX2tleV90IGtleSkKK3sK KyAgICByZXR1cm4ga2V5LmRhdGEuZmlsZS5kZXZpY2UgKyBrZXkuZGF0YS5maWxlLmlub2RlOwor fQorI2Vsc2UKIHN0YXRpYyB1bnNpZ25lZCBpbnQgaGFzaChhcGNfY2FjaGVfa2V5X3Qga2V5KQog ewogICAgIHJldHVybiBrZXkuZGF0YS5maWxlLmRldmljZSArIGtleS5kYXRhLmZpbGUuaW5vZGU7 CiB9CisjZW5kaWYKIC8qIH19fSAqLwogCiAvKiB7e3sgc3RyaW5nX25oYXNoXzggKi8KQEAgLTcw MCw3ICs3MDcsNyBAQA0KICAgICB0ID0gYXBjX3RpbWUoKTsKIAogICAgIC8qIHRyeSB0byBjcmVh dGUgYSBjYWNoZSBrZXk7IGlmIHdlIGZhaWwsIGdpdmUgdXAgb24gY2FjaGluZyAqLwotICAgIGlm ICghYXBjX2NhY2hlX21ha2VfZmlsZV9rZXkoJmtleSwgZmlsZW5hbWUsIFBHKGluY2x1ZGVfcGF0 aCksIHQgVFNSTUxTX0NDKSkgeworICAgIGlmICghYXBjX2NhY2hlX21ha2VfZmlsZV9rZXkoJmtl eSwgZmlsZW5hbWUsIFBHKGluY2x1ZGVfcGF0aCksIHQsIE5VTEwgVFNSTUxTX0NDKSkgewogICAg ICAgICBhcGNfd3ByaW50KCJDb3VsZCBub3Qgc3RhdCBmaWxlICVzLCB1bmFibGUgdG8gZGVsZXRl IGZyb20gY2FjaGUuIiwgZmlsZW5hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAt NzQ4LDE0ICs3NTUsMjMgQEANCiBpbnQgYXBjX2NhY2hlX21ha2VfZmlsZV9rZXkoYXBjX2NhY2hl X2tleV90KiBrZXksCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1l LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBpbmNsdWRlX3BhdGgsCi0gICAg ICAgICAgICAgICAgICAgICAgIHRpbWVfdCB0CisgICAgICAgICAgICAgICAgICAgICAgIHRpbWVf dCB0LAorICAgICAgICAgICAgICAgICAgICAgICB6ZW5kX2ZpbGVfaGFuZGxlKiB6ZmgKICAgICAg ICAgICAgICAgICAgICAgICAgVFNSTUxTX0RDKQogewogICAgIHN0cnVjdCBzdGF0ICp0bXBfYnVm PU5VTEw7CiAgICAgc3RydWN0IGFwY19maWxlaW5mb190IGZpbGVpbmZvID0geyB7MH0sIH07CiAg ICAgaW50IGxlbjsKKyNpZmRlZiBQSFBfV0lOMzIKKwlIQU5ETEUgaEZpbGUgPSBJTlZBTElEX0hB TkRMRV9WQUxVRTsKKwlCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBoSW5mbzsKKwlCT09MIGNs b3NlX2hmaWxlID0gRkFMU0U7CisjZW5kaWYKIAogICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisJ aWYgKCFmaWxlbmFtZSAmJiB6ZmggJiYgemZoLT5vcGVuZWRfcGF0aCkgeworCQlmaWxlbmFtZSA9 IHpmaC0+b3BlbmVkX3BhdGg7CisJfQogCiAgICAgaWYgKCFmaWxlbmFtZSB8fCAhU0cocmVxdWVz dF9pbmZvKS5wYXRoX3RyYW5zbGF0ZWQpIHsKICNpZmRlZiBfX0RFQlVHX0FQQ19fCkBAIC04MzIs OCArODQ4LDU2IEBADQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyNpZiBQSFBfV0lOMzIK KyAgICBpZiAoemZoKSB7CisJCXN3aXRjaCAoemZoLT50eXBlKSB7CisJCQljYXNlIFpFTkRfSEFO RExFX0ZEOgorCQkJCWhGaWxlID0gKEhBTkRMRSkgX2dldF9vc2ZoYW5kbGUoemZoLT5oYW5kbGUu ZmQpOworCQkJCWJyZWFrOworCisJCQljYXNlIFpFTkRfSEFORExFX0ZQOgorCQkJCWhGaWxlID0g KEhBTkRMRSkgX2dldF9vc2ZoYW5kbGUoZmlsZW5vKHpmaC0+aGFuZGxlLmZwKSk7CisJCQkJYnJl YWs7CisKKwkJCWRlZmF1bHQ6CisJCQkJcmV0dXJuIDA7CisJCX0KKyAgICB9CisKKyAgICBpZiAo aEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKwkJLyogVXNlIHRoZSBGRCBmcm9tIHpl bmQgaGFuZGxlIGluc3RlYWQsIGdldCBhIGZpbGUgSEFORExFIHVzaW5nCisJCSAgIF9nZXRfb3Nm aGFuZGxlICovCisJCUhBTkRMRSBoRmlsZTsKKworCQloRmlsZSA9IENyZWF0ZUZpbGUoZmlsZW5h bWUsIEdFTkVSSUNfV1JJVEUsIEZJTEVfU0hBUkVfV1JJVEV8RklMRV9TSEFSRV9SRUFELCBOVUxM LCBPUEVOX0FMV0FZUywgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOworCQlpZiAo IWhGaWxlKSB7CisjIGlmZGVmIF9fREVCVUdfQVBDX18KKwkJCWZwcmludGYoc3RkZXJyLCJDYW5u b3QgY3JlYXRlIGEgZmlsZSBIQU5ETEUgZm9yICVzXG4iLCBmaWxlbmFtZSk7CisjIGVuZGlmCisJ CQlyZXR1cm4gMDsKKwkJfQorCQljbG9zZV9oZmlsZSA9IFRSVUU7CisJfQorCisJaWYgKCFHZXRG aWxlSW5mb3JtYXRpb25CeUhhbmRsZShoRmlsZSwgJmhJbmZvKSkgeworIyBpZmRlZiBfX0RFQlVH X0FQQ19fCisJCWZwcmludGYoc3RkZXJyLCJDYW5ub3QgZ2V0IGZpbGUgaW5mb3JtYXRpb24gZnJv bSBoYW5kbGVcbiIpOworIyBlbmRpZgorCQlDbG9zZUhhbmRsZShoRmlsZSk7CisJCXJldHVybiAw OworCX0KKwkKKwlpZiAoY2xvc2VfaGZpbGUpIHsKKwkJQ2xvc2VIYW5kbGUoaEZpbGUpOworCX0K KwlrZXktPmRhdGEuZmlsZS5kZXZpY2UgPSBoSW5mby5kd1ZvbHVtZVNlcmlhbE51bWJlcjsKKwlr ZXktPmRhdGEuZmlsZS5pbm9kZSA9ICgoKGFwY19pbm9fdCkoaEluZm8ubkZpbGVJbmRleEhpZ2gp IDw8IDMyKSB8IChhcGNfaW5vX3QpIGhJbmZvLm5GaWxlSW5kZXhMb3cpOworCisjZWxzZQogICAg IGtleS0+ZGF0YS5maWxlLmRldmljZSA9IGZpbGVpbmZvLnN0X2J1Zi5zYi5zdF9kZXY7CiAgICAg a2V5LT5kYXRhLmZpbGUuaW5vZGUgID0gZmlsZWluZm8uc3RfYnVmLnNiLnN0X2lubzsKKyNlbmRp ZgorCiAgICAgLyoKICAgICAgKiBJZiB3b3JraW5nIHdpdGggY29udGVudCBtYW5hZ2VtZW50IHN5 c3RlbXMgdGhhdCBsaWtlIHRvIG11bmdlIHRoZSBtdGltZSwgCiAgICAgICogaXQgbWlnaHQgYmUg YXBwcm9wcmlhdGUgdG8ga2V5IG9mZiBvZiB0aGUgY3RpbWUgdG8gYmUgaW1tdW5lIHRvIHN5c3Rl bXMKSW5kZXg6IGFwY19jYWNoZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gYXBjX2NhY2hlLmgJKHJldmlz aW9uIDI4OTY4OSkNCisrKyBhcGNfY2FjaGUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTQ5LDYgKzQ5 LDE0IEBADQogI2RlZmluZSBBUENfQ0FDSEVfS0VZX1VTRVIgICAgIDIKICNkZWZpbmUgQVBDX0NB Q0hFX0tFWV9GUEZJTEUgICAzCiAKKyNpZmRlZiBQSFBfV0lOMzIKK3R5cGVkZWYgX19pbnQ2NCBh cGNfaW5vX3Q7Cit0eXBlZGVmIF9faW50NjQgYXBjX2Rldl90OworI2Vsc2UKK3R5cGVkZWYgaW5v X3QgYXBjX2lub190OwordHlwZWRlZiBpbm9fdCBhcGNfZGV2X3Q7CisjZW5kaWYKKwogLyoge3t7 IGNhY2hlIGxvY2tpbmcgbWFjcm9zICovCiAjZGVmaW5lIENBQ0hFX0xPQ0soY2FjaGUpICAgICAg ICB7IExPQ0soY2FjaGUtPmhlYWRlci0+bG9jayk7ICAgY2FjaGUtPmhhc19sb2NrID0gMTsgfQog I2RlZmluZSBDQUNIRV9VTkxPQ0soY2FjaGUpICAgICAgeyBVTkxPQ0soY2FjaGUtPmhlYWRlci0+ bG9jayk7IGNhY2hlLT5oYXNfbG9jayA9IDA7IH0KQEAgLTYyLDggKzcwLDggQEANCiAKIHR5cGVk ZWYgdW5pb24gX2FwY19jYWNoZV9rZXlfZGF0YV90IHsKICAgICBzdHJ1Y3QgewotICAgICAgICBk ZXZfdCBkZXZpY2U7ICAgICAgICAgICAgIC8qIHRoZSBmaWxlc3lzdGVtIGRldmljZSAqLwotICAg ICAgICBpbm9fdCBpbm9kZTsgICAgICAgICAgICAgIC8qIHRoZSBmaWxlc3lzdGVtIGlub2RlICov CisgICAgICAgIGFwY19kZXZfdCBkZXZpY2U7ICAgICAgICAgICAgIC8qIHRoZSBmaWxlc3lzdGVt IGRldmljZSAqLworICAgICAgICBhcGNfaW5vX3QgaW5vZGU7ICAgICAgICAgICAgICAvKiB0aGUg ZmlsZXN5c3RlbSBpbm9kZSAqLwogICAgIH0gZmlsZTsKICAgICBzdHJ1Y3QgewogICAgICAgICBj b25zdCBjaGFyICppZGVudGlmaWVyOwpAQCAtMjMxLDcgKzIzOSw4IEBADQogZXh0ZXJuIGludCBh cGNfY2FjaGVfbWFrZV9maWxlX2tleShhcGNfY2FjaGVfa2V5X3QqIGtleSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZW5hbWUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGluY2x1ZGVfcGF0aCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV90IHQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGltZV90IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHplbmRfZmlsZV9oYW5kbGUqIGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVFNSTUxTX0RDKTsKIAogLyoKQEAgLTI1OSw4ICsyNjgsOCBAQA0KIHR5cGVkZWYgdW5p b24gX2FwY19jYWNoZV9saW5rX2RhdGFfdCB7CiAgICAgc3RydWN0IHsKICAgICAgICAgY2hhciAq ZmlsZW5hbWU7Ci0gICAgICAgIGRldl90IGRldmljZTsKLSAgICAgICAgaW5vX3QgaW5vZGU7Cisg ICAgICAgIGFwY19pbm9fdCBkZXZpY2U7CisgICAgICAgIGFwY19kZXZfdCBpbm9kZTsKICAgICAg ICAgdW5zaWduZWQgY2hhciAqbWQ1OwogICAgIH0gZmlsZTsKICAgICBzdHJ1Y3QgewpJbmRleDog YXBjX2Jpbi5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQotLS0gYXBjX2Jpbi5jCShyZXZpc2lvbiAyODk2ODkpDQor KysgYXBjX2Jpbi5jCSh3b3JraW5nIGNvcHkpDQpAQCAtODk0LDcgKzg5NCw3IEBADQogICAgICAg ICAgICAgICAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg ICAgICAgICAgaWYgKCFhcGNfY2FjaGVfbWFrZV9maWxlX2tleSgmY2FjaGVfa2V5LCBlcC0+dmFs LmZpbGUuZmlsZW5hbWUsIFBHKGluY2x1ZGVfcGF0aCksIHQgVFNSTUxTX0NDKSkgeworICAgICAg ICAgICAgICAgIGlmICghYXBjX2NhY2hlX21ha2VfZmlsZV9rZXkoJmNhY2hlX2tleSwgZXAtPnZh bC5maWxlLmZpbGVuYW1lLCBQRyhpbmNsdWRlX3BhdGgpLCB0LCBOVUxMIFRTUk1MU19DQykpIHsK ICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlOwogICAgICAgICAgICAgICAgIH0KIAo= --00c09ffb4d2ee7d4e80476257ee7--