Date: Sun, 12 Jan 2014 00:24:33 +0200 From: Guy Yur <guyyur@gmail.com> To: freebsd-net@freebsd.org, freebsd-arm@freebsd.org Subject: Re: 10.0-RC1, armv6: "pfctl -s state" crashes on BeagleBone Black due to unaligned access Message-ID: <CAC67Hz9Z5xv_m9F0WY5OZAFaFsuUNXtKx5gpTBpGipfn2ArYkg@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
--089e0160c35e9e329d04efb94ed2 Content-Type: text/plain; charset=UTF-8 Hi, New patch that adds new aligned state structs and new ioctls. A trade-off of allowing correct alignment and improved speed for architectures that require alignment at the cost of extra maintenance when the state structs need to be extended. I duplicated the structs pfsync_state_scrub, pfsync_state_peer, pfsync_state_key and pfsync_state as non __packed structures. (pfsync_state_key is not marked as __packed, should it be?) pfsync_state_export also duplicated for the new struct. In the new state struct I reordered creatorid before the packets array to keep alignment on 8 bytes. packets and bytes converted to u_int64_t instead of array of u_int32_t (they are u_int64_t in the internal pf_state). sizeof(struct pf_addr) = 16; 16 % 4 = 0 sizeof(struct pfioc_state2_scrub) = 8; 8 % 4 = 0 sizeof(struct pfioc_state2_peer) = 28; 28 % 4 = 0 sizeof(struct pfioc_state2_key) = 36; 36 % 4 = 0 sizeof(struct pfioc_state2) = 232; 232 % 8 = 0 offsetof(struct pfioc_state2, src) = 96; 96 % 4 = 0 offsetof(struct pfioc_state2, dst) = 124; 124 % 4 = 0 offsetof(struct pfioc_state2, rt_addr) = 152; 152 % 4 = 0 offsetof(struct pfioc_state2, rule) = 168; 168 % 4 = 0 offsetof(struct pfioc_state2, packets) = 192; 192 % 8 = 0 The export for the new struct is done in host byte order which is used by the internal pf_state structure (except for pf_addr, id and creatorid which are kept in network order). I didn't bother creating a new version of DIOCADDSTATE since it is only used for pfsync and it receives only one pfioc_state / pfsync_state. Tested both of the new ioctls on the BeagleBone Black by modifying pfctl to also issue the single state ioctl with the (id,creatorid) of the last entry found in the print loop. I am not sure about the new structs and ioctls naming and there might be style bugs. Also attached a patch to constify the print functions in pfctl if there is interest in that. Needs to be applied after the new structs patch. P.S. Are alignment traps disabled on the Raspberry Pi? I wasn't able to cause a user space crash on the Pi with unaligned access. Regards, Guy --089e0160c35e9e329d04efb94ed2 Content-Type: application/octet-stream; name="pf-pfioc_state2.patch" Content-Disposition: attachment; filename="pf-pfioc_state2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hqbfbiu50 SW5kZXg6IHN5cy9uZXQvcGZ2YXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0L3BmdmFyLmgJKHJl dmlzaW9uIDI2MDQ5MikKKysrIHN5cy9uZXQvcGZ2YXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTQz LDYgKzk0MywyMyBAQCBleHRlcm4gcGZsb2dfcGFja2V0X3QJCSpwZmxvZ19wYWNrZXRfcHRyOwog CX0JCQkJCQkJCVwKIH0gd2hpbGUgKDApCiAKKyNkZWZpbmUgcGZfc3RhdGVfcGVlcl9odG9oKHMs ZCkgZG8gewkJXAorCShkKS0+c2VxbG8gPSAocyktPnNlcWxvOwkJXAorCShkKS0+c2VxaGkgPSAo cyktPnNlcWhpOwkJXAorCShkKS0+c2VxZGlmZiA9IChzKS0+c2VxZGlmZjsJCVwKKwkoZCktPm1h eF93aW4gPSAocyktPm1heF93aW47CQlcCisJKGQpLT5tc3MgPSAocyktPm1zczsJCQlcCisJKGQp LT5zdGF0ZSA9IChzKS0+c3RhdGU7CQlcCisJKGQpLT53c2NhbGUgPSAocyktPndzY2FsZTsJCVwK KwlpZiAoKHMpLT5zY3J1YikgewkJCQkJCVwKKwkJKGQpLT5zY3J1Yi5wZnNzX2ZsYWdzID0gCQkJ CVwKKwkJICAgIChzKS0+c2NydWItPnBmc3NfZmxhZ3MgJiBQRlNTX1RJTUVTVEFNUDsJCVwKKwkJ KGQpLT5zY3J1Yi5wZnNzX3R0bCA9IChzKS0+c2NydWItPnBmc3NfdHRsOwkJXAorCQkoZCktPnNj cnViLnBmc3NfdHNfbW9kID0gKHMpLT5zY3J1Yi0+cGZzc190c19tb2Q7CVwKKwkJKGQpLT5zY3J1 Yi5zY3J1Yl9mbGFnID0gUEZTWU5DX1NDUlVCX0ZMQUdfVkFMSUQ7CVwKKwl9CQkJCQkJCQlcCit9 IHdoaWxlICgwKQorCiAjZGVmaW5lIHBmX3N0YXRlX2NvdW50ZXJfaHRvbihzLGQpIGRvIHsJCQkJ XAogCWRbMF0gPSBodG9ubCgocz4+MzIpJjB4ZmZmZmZmZmYpOwkJCVwKIAlkWzFdID0gaHRvbmwo cyYweGZmZmZmZmZmKTsJCQkJXApAQCAtMTQ0MCw2ICsxNDU3LDU1IEBAIHN0cnVjdCBwZmlvY19z dGF0ZSB7CiAJc3RydWN0IHBmc3luY19zdGF0ZQlzdGF0ZTsKIH07CiAKK3N0cnVjdCBwZmlvY19z dGF0ZTJfc2NydWIgeworCXVfaW50MTZfdAlwZnNzX2ZsYWdzOworCXVfaW50OF90CXBmc3NfdHRs OwkvKiBzdGFzaGVkIFRUTAkJKi8KKyNkZWZpbmUgUEZJT0NfU0NSVUJfRkxBR19WQUxJRAkJUEZT WU5DX1NDUlVCX0ZMQUdfVkFMSUQKKwl1X2ludDhfdAlzY3J1Yl9mbGFnOworCXVfaW50MzJfdAlw ZnNzX3RzX21vZDsJLyogdGltZXN0YW1wIG1vZHVsYXRpb24JKi8KK307CisKK3N0cnVjdCBwZmlv Y19zdGF0ZTJfcGVlciB7CisJc3RydWN0IHBmaW9jX3N0YXRlMl9zY3J1YiBzY3J1YjsJLyogc3Rh dGUgaXMgc2NydWJiZWQJKi8KKwl1X2ludDMyX3QJc2VxbG87CQkvKiBNYXggc2VxdWVuY2UgbnVt YmVyIHNlbnQJKi8KKwl1X2ludDMyX3QJc2VxaGk7CQkvKiBNYXggdGhlIG90aGVyIGVuZCBBQ0tk ICsgd2luCSovCisJdV9pbnQzMl90CXNlcWRpZmY7CS8qIFNlcXVlbmNlIG51bWJlciBtb2R1bGF0 b3IJKi8KKwl1X2ludDE2X3QJbWF4X3dpbjsJLyogbGFyZ2VzdCB3aW5kb3cgKHByZSBzY2FsaW5n KQkqLworCXVfaW50MTZfdAltc3M7CQkvKiBNYXhpbXVtIHNlZ21lbnQgc2l6ZSBvcHRpb24JKi8K Kwl1X2ludDhfdAlzdGF0ZTsJCS8qIGFjdGl2ZSBzdGF0ZSBsZXZlbAkJKi8KKwl1X2ludDhfdAl3 c2NhbGU7CQkvKiB3aW5kb3cgc2NhbGluZyBmYWN0b3IJKi8KK307CisKK3N0cnVjdCBwZmlvY19z dGF0ZTJfa2V5IHsKKwlzdHJ1Y3QgcGZfYWRkcgkgYWRkclsyXTsKKwl1X2ludDE2X3QJIHBvcnRb Ml07Cit9OworCitzdHJ1Y3QgcGZpb2Nfc3RhdGUyIHsKKwl1X2ludDY0X3QJIGlkOworCWNoYXIJ CSBpZm5hbWVbSUZOQU1TSVpdOworCXN0cnVjdCBwZmlvY19zdGF0ZTJfa2V5CWtleVsyXTsKKwlz dHJ1Y3QgcGZpb2Nfc3RhdGUyX3BlZXIgc3JjOworCXN0cnVjdCBwZmlvY19zdGF0ZTJfcGVlciBk c3Q7CisJc3RydWN0IHBmX2FkZHIJIHJ0X2FkZHI7CisJdV9pbnQzMl90CSBydWxlOworCXVfaW50 MzJfdAkgYW5jaG9yOworCXVfaW50MzJfdAkgbmF0X3J1bGU7CisJdV9pbnQzMl90CSBjcmVhdGlv bjsKKwl1X2ludDMyX3QJIGV4cGlyZTsKKwl1X2ludDMyX3QJIGNyZWF0b3JpZDsKKwl1X2ludDY0 X3QJIHBhY2tldHNbMl07CisJdV9pbnQ2NF90CSBieXRlc1syXTsKKwlzYV9mYW1pbHlfdAkgYWY7 CisJdV9pbnQ4X3QJIHByb3RvOworCXVfaW50OF90CSBkaXJlY3Rpb247CisJdV9pbnQ4X3QJIGxv ZzsKKwl1X2ludDhfdAkgc3RhdGVfZmxhZ3M7CisJdV9pbnQ4X3QJIHRpbWVvdXQ7CisJdV9pbnQ4 X3QJIHN5bmNfZmxhZ3M7CisJdV9pbnQ4X3QJIHVwZGF0ZXM7Cit9OworCiBzdHJ1Y3QgcGZpb2Nf c3JjX25vZGVfa2lsbCB7CiAJc2FfZmFtaWx5X3QgcHNua19hZjsKIAlzdHJ1Y3QgcGZfcnVsZV9h ZGRyIHBzbmtfc3JjOwpAQCAtMTQ2OCw2ICsxNTM0LDE0IEBAIHN0cnVjdCBwZmlvY19zdGF0ZXMg ewogI2RlZmluZSBwc19zdGF0ZXMJcHNfdS5wc3Vfc3RhdGVzCiB9OwogCitzdHJ1Y3QgcGZpb2Nf c3RhdGVzMiB7CisJaW50CXBzX2xlbjsKKwl1bmlvbiB7CisJCWNhZGRyX3QJCQkgcHN1X2J1ZjsK KwkJc3RydWN0IHBmaW9jX3N0YXRlMgkqcHN1X3N0YXRlczsKKwl9IHBzX3U7Cit9OworCiBzdHJ1 Y3QgcGZpb2Nfc3JjX25vZGVzIHsKIAlpbnQJcHNuX2xlbjsKIAl1bmlvbiB7CkBAIC0xNjQyLDYg KzE3MTYsOCBAQCBzdHJ1Y3QgcGZfaWZzcGVlZCB7CiAJdV9pbnQzMl90CQliYXVkcmF0ZTsKIH07 CiAjZGVmaW5lCURJT0NHSUZTUEVFRAlfSU9XUignRCcsIDkyLCBzdHJ1Y3QgcGZfaWZzcGVlZCkK KyNkZWZpbmUgRElPQ0dFVFNUQVRFMglfSU9XUignRCcsIDkzLCBzdHJ1Y3QgcGZpb2Nfc3RhdGUy KQorI2RlZmluZSBESU9DR0VUU1RBVEVTMglfSU9XUignRCcsIDk0LCBzdHJ1Y3QgcGZpb2Nfc3Rh dGVzMikKIAogI2lmZGVmIF9LRVJORUwKIHN0cnVjdCBwZl9zcmNoYXNoIHsKSW5kZXg6IHN5cy9u ZXRwZmlsL3BmL3BmX2lvY3RsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldHBmaWwvcGYvcGZfaW9j dGwuYwkocmV2aXNpb24gMjYwNDkyKQorKysgc3lzL25ldHBmaWwvcGYvcGZfaW9jdGwuYwkod29y a2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw4IEBAIHN0YXRpYyBpbnQJCSBwZl9jb21taXRfcnVs ZXModV9pbnQzMl90LCBpbnQsIGNoYXIKIHN0YXRpYyBpbnQJCSBwZl9hZGRyX3NldHVwKHN0cnVj dCBwZl9ydWxlc2V0ICosCiAJCQkgICAgc3RydWN0IHBmX2FkZHJfd3JhcCAqLCBzYV9mYW1pbHlf dCk7CiBzdGF0aWMgdm9pZAkJIHBmX2FkZHJfY29weW91dChzdHJ1Y3QgcGZfYWRkcl93cmFwICop Oworc3RhdGljIHZvaWQJCSBwZmlvY19zdGF0ZTJfZXhwb3J0KHN0cnVjdCBwZmlvY19zdGF0ZTIg KnNwLAorCQkJICAgIHN0cnVjdCBwZl9zdGF0ZSAqc3QpOwogCiBWTkVUX0RFRklORShzdHJ1Y3Qg cGZfcnVsZSwJcGZfZGVmYXVsdF9ydWxlKTsKIApAQCAtMTAwMyw2ICsxMDA1LDggQEAgcGZpb2N0 bChzdHJ1Y3QgY2RldiAqZGV2LCB1X2xvbmcgY21kLCBjYWRkcl90IGFkZHIKIAkJY2FzZSBESU9D R0lGU1BFRUQ6CiAJCWNhc2UgRElPQ1NFVElGRkxBRzoKIAkJY2FzZSBESU9DQ0xSSUZGTEFHOgor CQljYXNlIERJT0NHRVRTVEFURTI6CisJCWNhc2UgRElPQ0dFVFNUQVRFUzI6CiAJCQlicmVhazsK IAkJY2FzZSBESU9DUkNMUlRBQkxFUzoKIAkJY2FzZSBESU9DUkFERFRBQkxFUzoKQEAgLTEwNDEs NiArMTA0NSw4IEBAIHBmaW9jdGwoc3RydWN0IGNkZXYgKmRldiwgdV9sb25nIGNtZCwgY2FkZHJf dCBhZGRyCiAJCWNhc2UgRElPQ0dFVFNSQ05PREVTOgogCQljYXNlIERJT0NJR0VUSUZBQ0VTOgog CQljYXNlIERJT0NHSUZTUEVFRDoKKwkJY2FzZSBESU9DR0VUU1RBVEUyOgorCQljYXNlIERJT0NH RVRTVEFURVMyOgogCQkJYnJlYWs7CiAJCWNhc2UgRElPQ1JDTFJUQUJMRVM6CiAJCWNhc2UgRElP Q1JBRERUQUJMRVM6CkBAIC0xNzU4LDYgKzE3NjQsNjggQEAgRElPQ0dFVFNUQVRFU19mdWxsOgog CQlicmVhazsKIAl9CiAKKwljYXNlIERJT0NHRVRTVEFURTI6IHsKKwkJc3RydWN0IHBmaW9jX3N0 YXRlMgkqcHMgPSAoc3RydWN0IHBmaW9jX3N0YXRlMiAqKWFkZHI7CisJCXN0cnVjdCBwZl9zdGF0 ZQkJKnM7CisKKwkJcyA9IHBmX2ZpbmRfc3RhdGVfYnlpZChwcy0+aWQsIHBzLT5jcmVhdG9yaWQp OworCQlpZiAocyA9PSBOVUxMKSB7CisJCQllcnJvciA9IEVOT0VOVDsKKwkJCWJyZWFrOworCQl9 CisKKwkJcGZpb2Nfc3RhdGUyX2V4cG9ydChwcywgcyk7CisJCVBGX1NUQVRFX1VOTE9DSyhzKTsK KwkJYnJlYWs7CisJfQorCisJY2FzZSBESU9DR0VUU1RBVEVTMjogeworCQlzdHJ1Y3QgcGZpb2Nf c3RhdGVzMgkqcHMgPSAoc3RydWN0IHBmaW9jX3N0YXRlczIgKilhZGRyOworCQlzdHJ1Y3QgcGZf c3RhdGUJCSpzOworCQlzdHJ1Y3QgcGZpb2Nfc3RhdGUyCSpwc3RvcmUsICpwOworCQlpbnQgaSwg bnI7CisKKwkJaWYgKHBzLT5wc19sZW4gPT0gMCkgeworCQkJbnIgPSB1bWFfem9uZV9nZXRfY3Vy KFZfcGZfc3RhdGVfeik7CisJCQlwcy0+cHNfbGVuID0gc2l6ZW9mKHN0cnVjdCBwZmlvY19zdGF0 ZTIpICogbnI7CisJCQlicmVhazsKKwkJfQorCisJCXAgPSBwc3RvcmUgPSBtYWxsb2MocHMtPnBz X2xlbiwgTV9URU1QLCBNX1dBSVRPSyk7CisJCW5yID0gMDsKKworCQlmb3IgKGkgPSAwOyBpIDw9 IFZfcGZfaGFzaG1hc2s7IGkrKykgeworCQkJc3RydWN0IHBmX2lkaGFzaCAqaWggPSAmVl9wZl9p ZGhhc2hbaV07CisKKwkJCVBGX0hBU0hST1dfTE9DSyhpaCk7CisJCQlMSVNUX0ZPUkVBQ0gocywg JmloLT5zdGF0ZXMsIGVudHJ5KSB7CisKKwkJCQlpZiAocy0+dGltZW91dCA9PSBQRlRNX1VOTElO S0VEKQorCQkJCQljb250aW51ZTsKKworCQkJCWlmICgobnIrMSkgKiBzaXplb2YoKnApID4gcHMt PnBzX2xlbikgeworCQkJCQlQRl9IQVNIUk9XX1VOTE9DSyhpaCk7CisJCQkJCWdvdG8gRElPQ0dF VFNUQVRFUzJfZnVsbDsKKwkJCQl9CisJCQkJcGZpb2Nfc3RhdGUyX2V4cG9ydChwLCBzKTsKKwkJ CQlwKys7CisJCQkJbnIrKzsKKwkJCX0KKwkJCVBGX0hBU0hST1dfVU5MT0NLKGloKTsKKwkJfQor RElPQ0dFVFNUQVRFUzJfZnVsbDoKKwkJZXJyb3IgPSBjb3B5b3V0KHBzdG9yZSwgcHMtPnBzX3N0 YXRlcywKKwkJICAgIHNpemVvZihzdHJ1Y3QgcGZpb2Nfc3RhdGUyKSAqIG5yKTsKKwkJaWYgKGVy cm9yKSB7CisJCQlmcmVlKHBzdG9yZSwgTV9URU1QKTsKKwkJCWJyZWFrOworCQl9CisJCXBzLT5w c19sZW4gPSBzaXplb2Yoc3RydWN0IHBmaW9jX3N0YXRlMikgKiBucjsKKwkJZnJlZShwc3RvcmUs IE1fVEVNUCk7CisKKwkJYnJlYWs7CisJfQorCiAJY2FzZSBESU9DR0VUU1RBVFVTOiB7CiAJCXN0 cnVjdCBwZl9zdGF0dXMgKnMgPSAoc3RydWN0IHBmX3N0YXR1cyAqKWFkZHI7CiAJCVBGX1JVTEVT X1JMT0NLKCk7CkBAIC0zMzA4LDYgKzMzNzYsNjYgQEAgcGZzeW5jX3N0YXRlX2V4cG9ydChzdHJ1 Y3QgcGZzeW5jX3N0YXRlICpzcCwgc3RydWMKIH0KIAogc3RhdGljIHZvaWQKK3BmaW9jX3N0YXRl Ml9leHBvcnQoc3RydWN0IHBmaW9jX3N0YXRlMiAqc3AsIHN0cnVjdCBwZl9zdGF0ZSAqc3QpCit7 CisJYnplcm8oc3AsIHNpemVvZihzdHJ1Y3QgcGZpb2Nfc3RhdGUyKSk7CisKKwkvKiBjb3B5IGZy b20gc3RhdGUga2V5ICovCisJc3AtPmtleVtQRl9TS19XSVJFXS5hZGRyWzBdID0gc3QtPmtleVtQ Rl9TS19XSVJFXS0+YWRkclswXTsKKwlzcC0+a2V5W1BGX1NLX1dJUkVdLmFkZHJbMV0gPSBzdC0+ a2V5W1BGX1NLX1dJUkVdLT5hZGRyWzFdOworCXNwLT5rZXlbUEZfU0tfV0lSRV0ucG9ydFswXSA9 IHN0LT5rZXlbUEZfU0tfV0lSRV0tPnBvcnRbMF07CisJc3AtPmtleVtQRl9TS19XSVJFXS5wb3J0 WzFdID0gc3QtPmtleVtQRl9TS19XSVJFXS0+cG9ydFsxXTsKKwlzcC0+a2V5W1BGX1NLX1NUQUNL XS5hZGRyWzBdID0gc3QtPmtleVtQRl9TS19TVEFDS10tPmFkZHJbMF07CisJc3AtPmtleVtQRl9T S19TVEFDS10uYWRkclsxXSA9IHN0LT5rZXlbUEZfU0tfU1RBQ0tdLT5hZGRyWzFdOworCXNwLT5r ZXlbUEZfU0tfU1RBQ0tdLnBvcnRbMF0gPSBzdC0+a2V5W1BGX1NLX1NUQUNLXS0+cG9ydFswXTsK KwlzcC0+a2V5W1BGX1NLX1NUQUNLXS5wb3J0WzFdID0gc3QtPmtleVtQRl9TS19TVEFDS10tPnBv cnRbMV07CisJc3AtPnByb3RvID0gc3QtPmtleVtQRl9TS19XSVJFXS0+cHJvdG87CisJc3AtPmFm ID0gc3QtPmtleVtQRl9TS19XSVJFXS0+YWY7CisKKwkvKiBjb3B5IGZyb20gc3RhdGUgKi8KKwlz dHJsY3B5KHNwLT5pZm5hbWUsIHN0LT5raWYtPnBmaWtfbmFtZSwgc2l6ZW9mKHNwLT5pZm5hbWUp KTsKKwliY29weSgmc3QtPnJ0X2FkZHIsICZzcC0+cnRfYWRkciwgc2l6ZW9mKHNwLT5ydF9hZGRy KSk7CisJc3AtPmNyZWF0aW9uID0gdGltZV91cHRpbWUgLSBzdC0+Y3JlYXRpb247CisJc3AtPmV4 cGlyZSA9IHBmX3N0YXRlX2V4cGlyZXMoc3QpOworCWlmIChzcC0+ZXhwaXJlIDw9IHRpbWVfdXB0 aW1lKQorCQlzcC0+ZXhwaXJlID0gMDsKKwllbHNlCisJCXNwLT5leHBpcmUgPSBzcC0+ZXhwaXJl IC0gdGltZV91cHRpbWU7CisKKwlzcC0+ZGlyZWN0aW9uID0gc3QtPmRpcmVjdGlvbjsKKwlzcC0+ bG9nID0gc3QtPmxvZzsKKwlzcC0+dGltZW91dCA9IHN0LT50aW1lb3V0OworCXNwLT5zdGF0ZV9m bGFncyA9IHN0LT5zdGF0ZV9mbGFnczsKKwlpZiAoc3QtPnNyY19ub2RlKQorCQlzcC0+c3luY19m bGFncyB8PSBQRlNZTkNfRkxBR19TUkNOT0RFOworCWlmIChzdC0+bmF0X3NyY19ub2RlKQorCQlz cC0+c3luY19mbGFncyB8PSBQRlNZTkNfRkxBR19OQVRTUkNOT0RFOworCisJc3AtPmlkID0gc3Qt PmlkOworCXNwLT5jcmVhdG9yaWQgPSBzdC0+Y3JlYXRvcmlkOworCXBmX3N0YXRlX3BlZXJfaHRv aCgmc3QtPnNyYywgJnNwLT5zcmMpOworCXBmX3N0YXRlX3BlZXJfaHRvaCgmc3QtPmRzdCwgJnNw LT5kc3QpOworCisJaWYgKHN0LT5ydWxlLnB0ciA9PSBOVUxMKQorCQlzcC0+cnVsZSA9IC0xOwor CWVsc2UKKwkJc3AtPnJ1bGUgPSBzdC0+cnVsZS5wdHItPm5yOworCWlmIChzdC0+YW5jaG9yLnB0 ciA9PSBOVUxMKQorCQlzcC0+YW5jaG9yID0gLTE7CisJZWxzZQorCQlzcC0+YW5jaG9yID0gc3Qt PmFuY2hvci5wdHItPm5yOworCWlmIChzdC0+bmF0X3J1bGUucHRyID09IE5VTEwpCisJCXNwLT5u YXRfcnVsZSA9IC0xOworCWVsc2UKKwkJc3AtPm5hdF9ydWxlID0gc3QtPm5hdF9ydWxlLnB0ci0+ bnI7CisKKwlzcC0+cGFja2V0c1swXSA9IHN0LT5wYWNrZXRzWzBdOworCXNwLT5wYWNrZXRzWzFd ID0gc3QtPnBhY2tldHNbMV07CisJc3AtPmJ5dGVzWzBdID0gc3QtPmJ5dGVzWzBdOworCXNwLT5i eXRlc1sxXSA9IHN0LT5ieXRlc1sxXTsKK30KKworc3RhdGljIHZvaWQKIHBmX3RibGFkZHJfY29w eW91dChzdHJ1Y3QgcGZfYWRkcl93cmFwICphdykKIHsKIAlzdHJ1Y3QgcGZyX2t0YWJsZSAqa3Q7 CkluZGV4OiBzYmluL3BmY3RsL3BmX3ByaW50X3N0YXRlLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc2Jpbi9w ZmN0bC9wZl9wcmludF9zdGF0ZS5jCShyZXZpc2lvbiAyNjA0OTIpCisrKyBzYmluL3BmY3RsL3Bm X3ByaW50X3N0YXRlLmMJKHdvcmtpbmcgY29weSkKQEAgLTE5NCwyMSArMTk0LDIwIEBAIHByaW50 X2hvc3Qoc3RydWN0IHBmX2FkZHIgKmFkZHIsIHVfaW50MTZfdCBwb3J0LCBzCiB9CiAKIHZvaWQK LXByaW50X3NlcShzdHJ1Y3QgcGZzeW5jX3N0YXRlX3BlZXIgKnApCitwcmludF9zZXEoc3RydWN0 IHBmaW9jX3N0YXRlMl9wZWVyICpwKQogewogCWlmIChwLT5zZXFkaWZmKQotCQlwcmludGYoIlsl dSArICV1XSgrJXUpIiwgbnRvaGwocC0+c2VxbG8pLAotCQkgICAgbnRvaGwocC0+c2VxaGkpIC0g bnRvaGwocC0+c2VxbG8pLCBudG9obChwLT5zZXFkaWZmKSk7CisJCXByaW50ZigiWyV1ICsgJXVd KCsldSkiLCBwLT5zZXFsbywgcC0+c2VxaGkgLSBwLT5zZXFsbywKKwkJICAgIHAtPnNlcWRpZmYp OwogCWVsc2UKLQkJcHJpbnRmKCJbJXUgKyAldV0iLCBudG9obChwLT5zZXFsbyksCi0JCSAgICBu dG9obChwLT5zZXFoaSkgLSBudG9obChwLT5zZXFsbykpOworCQlwcmludGYoIlsldSArICV1XSIs IHAtPnNlcWxvLCBwLT5zZXFoaSAtIHAtPnNlcWxvKTsKIH0KIAogdm9pZAotcHJpbnRfc3RhdGUo c3RydWN0IHBmc3luY19zdGF0ZSAqcywgaW50IG9wdHMpCitwcmludF9zdGF0ZShzdHJ1Y3QgcGZp b2Nfc3RhdGUyICpzLCBpbnQgb3B0cykKIHsKLQlzdHJ1Y3QgcGZzeW5jX3N0YXRlX3BlZXIgKnNy YywgKmRzdDsKLQlzdHJ1Y3QgcGZzeW5jX3N0YXRlX2tleSAqc2ssICpuazsKKwlzdHJ1Y3QgcGZp b2Nfc3RhdGUyX3BlZXIgKnNyYywgKmRzdDsKKwlzdHJ1Y3QgcGZpb2Nfc3RhdGUyX2tleSAqc2ss ICpuazsKIAlzdHJ1Y3QgcHJvdG9lbnQgKnA7CiAJaW50IG1pbiwgc2VjOwogCkBAIC0yOTYsMTAg KzI5NSw4IEBAIHZvaWQKIAl9CiAKIAlpZiAob3B0cyAmIFBGX09QVF9WRVJCT1NFKSB7Ci0JCXVf aW50NjRfdCBwYWNrZXRzWzJdOwotCQl1X2ludDY0X3QgYnl0ZXNbMl07Ci0JCXVfaW50MzJfdCBj cmVhdGlvbiA9IG50b2hsKHMtPmNyZWF0aW9uKTsKLQkJdV9pbnQzMl90IGV4cGlyZSA9IG50b2hs KHMtPmV4cGlyZSk7CisJCXVfaW50MzJfdCBjcmVhdGlvbiA9IHMtPmNyZWF0aW9uOworCQl1X2lu dDMyX3QgZXhwaXJlID0gcy0+ZXhwaXJlOwogCiAJCXNlYyA9IGNyZWF0aW9uICUgNjA7CiAJCWNy ZWF0aW9uIC89IDYwOwpAQCAtMzEyLDE5ICszMDksMTMgQEAgdm9pZAogCQlleHBpcmUgLz0gNjA7 CiAJCXByaW50ZigiLCBleHBpcmVzIGluICUuMnU6JS4ydTolLjJ1IiwgZXhwaXJlLCBtaW4sIHNl Yyk7CiAKLQkJYmNvcHkocy0+cGFja2V0c1swXSwgJnBhY2tldHNbMF0sIHNpemVvZih1X2ludDY0 X3QpKTsKLQkJYmNvcHkocy0+cGFja2V0c1sxXSwgJnBhY2tldHNbMV0sIHNpemVvZih1X2ludDY0 X3QpKTsKLQkJYmNvcHkocy0+Ynl0ZXNbMF0sICZieXRlc1swXSwgc2l6ZW9mKHVfaW50NjRfdCkp OwotCQliY29weShzLT5ieXRlc1sxXSwgJmJ5dGVzWzFdLCBzaXplb2YodV9pbnQ2NF90KSk7CiAJ CXByaW50ZigiLCAlanU6JWp1IHBrdHMsICVqdTolanUgYnl0ZXMiLAotCQkgICAgKHVpbnRtYXhf dCApYmU2NHRvaChwYWNrZXRzWzBdKSwKLQkJICAgICh1aW50bWF4X3QgKWJlNjR0b2gocGFja2V0 c1sxXSksCi0JCSAgICAodWludG1heF90ICliZTY0dG9oKGJ5dGVzWzBdKSwKLQkJICAgICh1aW50 bWF4X3QgKWJlNjR0b2goYnl0ZXNbMV0pKTsKLQkJaWYgKG50b2hsKHMtPmFuY2hvcikgIT0gLTEp Ci0JCQlwcmludGYoIiwgYW5jaG9yICV1IiwgbnRvaGwocy0+YW5jaG9yKSk7Ci0JCWlmIChudG9o bChzLT5ydWxlKSAhPSAtMSkKLQkJCXByaW50ZigiLCBydWxlICV1IiwgbnRvaGwocy0+cnVsZSkp OworCQkgICAgKHVpbnRtYXhfdClzLT5wYWNrZXRzWzBdLCAodWludG1heF90KXMtPnBhY2tldHNb MV0sCisJCSAgICAodWludG1heF90KXMtPmJ5dGVzWzBdLCAodWludG1heF90KXMtPmJ5dGVzWzFd KTsKKwkJaWYgKHMtPmFuY2hvciAhPSAtMSkKKwkJCXByaW50ZigiLCBhbmNob3IgJXUiLCBzLT5h bmNob3IpOworCQlpZiAocy0+cnVsZSAhPSAtMSkKKwkJCXByaW50ZigiLCBydWxlICV1Iiwgcy0+ cnVsZSk7CiAJCWlmIChzLT5zdGF0ZV9mbGFncyAmIFBGU1RBVEVfU0xPUFBZKQogCQkJcHJpbnRm KCIsIHNsb3BweSIpOwogCQlpZiAocy0+c3luY19mbGFncyAmIFBGU1lOQ19GTEFHX1NSQ05PREUp CkBAIC0zMzQsMTEgKzMyNSw4IEBAIHZvaWQKIAkJcHJpbnRmKCJcbiIpOwogCX0KIAlpZiAob3B0 cyAmIFBGX09QVF9WRVJCT1NFMikgewotCQl1X2ludDY0X3QgaWQ7Ci0KLQkJYmNvcHkoJnMtPmlk LCAmaWQsIHNpemVvZih1X2ludDY0X3QpKTsKIAkJcHJpbnRmKCIgICBpZDogJTAxNmp4IGNyZWF0 b3JpZDogJTA4eCIsCi0JCSAgICAodWludG1heF90ICliZTY0dG9oKGlkKSwgbnRvaGwocy0+Y3Jl YXRvcmlkKSk7CisJCSAgICAodWludG1heF90KWJlNjR0b2gocy0+aWQpLCBudG9obChzLT5jcmVh dG9yaWQpKTsKIAkJcHJpbnRmKCJcbiIpOwogCX0KIH0KSW5kZXg6IHNiaW4vcGZjdGwvcGZjdGwu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBzYmluL3BmY3RsL3BmY3RsLmMJKHJldmlzaW9uIDI2MDQ5MikKKysr IHNiaW4vcGZjdGwvcGZjdGwuYwkod29ya2luZyBjb3B5KQpAQCAtMTA1NCw4ICsxMDU0LDggQEAg ZG9uZToKIGludAogcGZjdGxfc2hvd19zdGF0ZXMoaW50IGRldiwgY29uc3QgY2hhciAqaWZhY2Us IGludCBvcHRzKQogewotCXN0cnVjdCBwZmlvY19zdGF0ZXMgcHM7Ci0Jc3RydWN0IHBmc3luY19z dGF0ZSAqcDsKKwlzdHJ1Y3QgcGZpb2Nfc3RhdGVzMiBwczsKKwlzdHJ1Y3QgcGZpb2Nfc3RhdGUy ICpwOwogCWNoYXIgKmluYnVmID0gTlVMTCwgKm5ld2luYnVmID0gTlVMTDsKIAl1bnNpZ25lZCBp bnQgbGVuID0gMDsKIAlpbnQgaSwgZG90aXRsZSA9IChvcHRzICYgUEZfT1BUX1NIT1dBTEwpOwpA QCAtMTA2OSwxMiArMTA2OSwxMiBAQCBwZmN0bF9zaG93X3N0YXRlcyhpbnQgZGV2LCBjb25zdCBj aGFyICppZmFjZSwgaW50CiAJCQkJZXJyKDEsICJyZWFsbG9jIik7CiAJCQlwcy5wc19idWYgPSBp bmJ1ZiA9IG5ld2luYnVmOwogCQl9Ci0JCWlmIChpb2N0bChkZXYsIERJT0NHRVRTVEFURVMsICZw cykgPCAwKSB7Ci0JCQl3YXJuKCJESU9DR0VUU1RBVEVTIik7CisJCWlmIChpb2N0bChkZXYsIERJ T0NHRVRTVEFURVMyLCAmcHMpIDwgMCkgeworCQkJd2FybigiRElPQ0dFVFNUQVRFUzIiKTsKIAkJ CWZyZWUoaW5idWYpOwogCQkJcmV0dXJuICgtMSk7CiAJCX0KLQkJaWYgKHBzLnBzX2xlbiArIHNp emVvZihzdHJ1Y3QgcGZpb2Nfc3RhdGVzKSA8IGxlbikKKwkJaWYgKHBzLnBzX2xlbiArIHNpemVv ZihzdHJ1Y3QgcGZpb2Nfc3RhdGVzMikgPCBsZW4pCiAJCQlicmVhazsKIAkJaWYgKGxlbiA9PSAw ICYmIHBzLnBzX2xlbiA9PSAwKQogCQkJZ290byBkb25lOwpJbmRleDogc2Jpbi9wZmN0bC9wZmN0 bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHNiaW4vcGZjdGwvcGZjdGwuaAkocmV2aXNpb24gMjYwNDkyKQor Kysgc2Jpbi9wZmN0bC9wZmN0bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsOCArMTE3LDggQEAg Y2hhcgkJKnJhdGUyc3RyKGRvdWJsZSk7CiAKIHZvaWQJIHByaW50X2FkZHIoc3RydWN0IHBmX2Fk ZHJfd3JhcCAqLCBzYV9mYW1pbHlfdCwgaW50KTsKIHZvaWQJIHByaW50X2hvc3Qoc3RydWN0IHBm X2FkZHIgKiwgdV9pbnQxNl90IHAsIHNhX2ZhbWlseV90LCBpbnQpOwotdm9pZAkgcHJpbnRfc2Vx KHN0cnVjdCBwZnN5bmNfc3RhdGVfcGVlciAqKTsKLXZvaWQJIHByaW50X3N0YXRlKHN0cnVjdCBw ZnN5bmNfc3RhdGUgKiwgaW50KTsKK3ZvaWQJIHByaW50X3NlcShzdHJ1Y3QgcGZpb2Nfc3RhdGUy X3BlZXIgKik7Cit2b2lkCSBwcmludF9zdGF0ZShzdHJ1Y3QgcGZpb2Nfc3RhdGUyICosIGludCk7 CiBpbnQJIHVubWFzayhzdHJ1Y3QgcGZfYWRkciAqLCBzYV9mYW1pbHlfdCk7CiAKIGludAkgcGZj dGxfY21kbGluZV9zeW1zZXQoY2hhciAqKTsK --089e0160c35e9e329d04efb94ed2 Content-Type: application/octet-stream; name="pfctl-constify.patch" Content-Disposition: attachment; filename="pfctl-constify.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hqbfbpwr1 LS0tIHNiaW4vcGZjdGwvcGZjdGwuaC5vcmlnCTIwMTQtMDEtMTEgMjE6MjA6NTcuMDAwMDAwMDAw ICswMjAwCisrKyBzYmluL3BmY3RsL3BmY3RsLmgJMjAxNC0wMS0xMSAyMToyMjozMC4wMDAwMDAw MDAgKzAyMDAKQEAgLTExNSwxMSArMTE1LDExIEBAIHZvaWQJCSBwZmFsdHFfc3RvcmUoc3RydWN0 IHBmX2FsdHEgKik7CiBzdHJ1Y3QgcGZfYWx0cQkqcGZhbHRxX2xvb2t1cChjb25zdCBjaGFyICop OwogY2hhcgkJKnJhdGUyc3RyKGRvdWJsZSk7CiAKLXZvaWQJIHByaW50X2FkZHIoc3RydWN0IHBm X2FkZHJfd3JhcCAqLCBzYV9mYW1pbHlfdCwgaW50KTsKLXZvaWQJIHByaW50X2hvc3Qoc3RydWN0 IHBmX2FkZHIgKiwgdV9pbnQxNl90IHAsIHNhX2ZhbWlseV90LCBpbnQpOwotdm9pZAkgcHJpbnRf c2VxKHN0cnVjdCBwZmlvY19zdGF0ZTJfcGVlciAqKTsKLXZvaWQJIHByaW50X3N0YXRlKHN0cnVj dCBwZmlvY19zdGF0ZTIgKiwgaW50KTsKLWludAkgdW5tYXNrKHN0cnVjdCBwZl9hZGRyICosIHNh X2ZhbWlseV90KTsKK3ZvaWQJIHByaW50X2FkZHIoY29uc3Qgc3RydWN0IHBmX2FkZHJfd3JhcCAq LCBzYV9mYW1pbHlfdCwgaW50KTsKK3ZvaWQJIHByaW50X2hvc3QoY29uc3Qgc3RydWN0IHBmX2Fk ZHIgKiwgdV9pbnQxNl90IHAsIHNhX2ZhbWlseV90LCBpbnQpOwordm9pZAkgcHJpbnRfc2VxKGNv bnN0IHN0cnVjdCBwZmlvY19zdGF0ZTJfcGVlciAqKTsKK3ZvaWQJIHByaW50X3N0YXRlKGNvbnN0 IHN0cnVjdCBwZmlvY19zdGF0ZTIgKiwgaW50KTsKK2ludAkgdW5tYXNrKGNvbnN0IHN0cnVjdCBw Zl9hZGRyICosIHNhX2ZhbWlseV90KTsKIAogaW50CSBwZmN0bF9jbWRsaW5lX3N5bXNldChjaGFy ICopOwogaW50CSBwZmN0bF9hZGRfdHJhbnMoc3RydWN0IHBmcl9idWZmZXIgKiwgaW50LCBjb25z dCBjaGFyICopOwotLS0gc2Jpbi9wZmN0bC9wZmN0bF9wYXJzZXIuaC5vcmlnCTIwMTQtMDEtMTEg MTQ6MDA6MTMuMDAwMDAwMDAwICswMjAwCisrKyBzYmluL3BmY3RsL3BmY3RsX3BhcnNlci5oCTIw MTQtMDEtMTEgMjE6Mzc6MDIuMDAwMDAwMDAwICswMjAwCkBAIC0yOTIsNyArMjkyLDcgQEAgZXh0 ZXJuIGNvbnN0IHN0cnVjdCBwZl90aW1lb3V0IHBmX3RpbWVvdQogCiB2b2lkCQkJIHNldF9pcG1h c2soc3RydWN0IG5vZGVfaG9zdCAqLCB1X2ludDhfdCk7CiBpbnQJCQkgY2hlY2tfbmV0bWFzayhz dHJ1Y3Qgbm9kZV9ob3N0ICosIHNhX2ZhbWlseV90KTsKLWludAkJCSB1bm1hc2soc3RydWN0IHBm X2FkZHIgKiwgc2FfZmFtaWx5X3QpOworaW50CQkJIHVubWFzayhjb25zdCBzdHJ1Y3QgcGZfYWRk ciAqLCBzYV9mYW1pbHlfdCk7CiB2b2lkCQkJIGlmYV9sb2FkKHZvaWQpOwogc3RydWN0IG5vZGVf aG9zdAkqaWZhX2V4aXN0cyhjb25zdCBjaGFyICopOwogc3RydWN0IG5vZGVfaG9zdAkqaWZhX2xv b2t1cChjb25zdCBjaGFyICosIGludCk7Ci0tLSBzYmluL3BmY3RsL3BmX3ByaW50X3N0YXRlLmMu b3JpZwkyMDE0LTAxLTExIDIxOjIxOjMwLjAwMDAwMDAwMCArMDIwMAorKysgc2Jpbi9wZmN0bC9w Zl9wcmludF9zdGF0ZS5jCTIwMTQtMDEtMTEgMjE6Mzg6MTUuMDAwMDAwMDAwICswMjAwCkBAIC01 MCwxMCArNTAsMTAgQEAgX19GQlNESUQoIiRGcmVlQlNEOiByZWxlbmcvMTAuMC9zYmluL3BmYwog I2luY2x1ZGUgInBmY3RsX3BhcnNlci5oIgogI2luY2x1ZGUgInBmY3RsLmgiCiAKLXZvaWQJcHJp bnRfbmFtZShzdHJ1Y3QgcGZfYWRkciAqLCBzYV9mYW1pbHlfdCk7Cit2b2lkCXByaW50X25hbWUo Y29uc3Qgc3RydWN0IHBmX2FkZHIgKiwgc2FfZmFtaWx5X3QpOwogCiB2b2lkCi1wcmludF9hZGRy KHN0cnVjdCBwZl9hZGRyX3dyYXAgKmFkZHIsIHNhX2ZhbWlseV90IGFmLCBpbnQgdmVyYm9zZSkK K3ByaW50X2FkZHIoY29uc3Qgc3RydWN0IHBmX2FkZHJfd3JhcCAqYWRkciwgc2FfZmFtaWx5X3Qg YWYsIGludCB2ZXJib3NlKQogewogCXN3aXRjaCAoYWRkci0+dHlwZSkgewogCWNhc2UgUEZfQURE Ul9EWU5JRlRMOgpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaW50X2FkZHIoc3RydWN0IHBmX2FkZHJf d3JhcCAqYWRkciwgc2EKIH0KIAogdm9pZAotcHJpbnRfbmFtZShzdHJ1Y3QgcGZfYWRkciAqYWRk ciwgc2FfZmFtaWx5X3QgYWYpCitwcmludF9uYW1lKGNvbnN0IHN0cnVjdCBwZl9hZGRyICphZGRy LCBzYV9mYW1pbHlfdCBhZikKIHsKIAljaGFyIGhvc3RbTklfTUFYSE9TVF07CiAKQEAgLTE2Nyw3 ICsxNjcsNyBAQCBwcmludF9uYW1lKHN0cnVjdCBwZl9hZGRyICphZGRyLCBzYV9mYW1pCiB9CiAK IHZvaWQKLXByaW50X2hvc3Qoc3RydWN0IHBmX2FkZHIgKmFkZHIsIHVfaW50MTZfdCBwb3J0LCBz YV9mYW1pbHlfdCBhZiwgaW50IG9wdHMpCitwcmludF9ob3N0KGNvbnN0IHN0cnVjdCBwZl9hZGRy ICphZGRyLCB1X2ludDE2X3QgcG9ydCwgc2FfZmFtaWx5X3QgYWYsIGludCBvcHRzKQogewogCWlm IChvcHRzICYgUEZfT1BUX1VTRUROUykKIAkJcHJpbnRfbmFtZShhZGRyLCBhZik7CkBAIC0xOTQs NyArMTk0LDcgQEAgcHJpbnRfaG9zdChzdHJ1Y3QgcGZfYWRkciAqYWRkciwgdV9pbnQxNgogfQog CiB2b2lkCi1wcmludF9zZXEoc3RydWN0IHBmaW9jX3N0YXRlMl9wZWVyICpwKQorcHJpbnRfc2Vx KGNvbnN0IHN0cnVjdCBwZmlvY19zdGF0ZTJfcGVlciAqcCkKIHsKIAlpZiAocC0+c2VxZGlmZikK IAkJcHJpbnRmKCJbJXUgKyAldV0oKyV1KSIsIHAtPnNlcWxvLCBwLT5zZXFoaSAtIHAtPnNlcWxv LApAQCAtMjA0LDEyICsyMDQsMTMgQEAgcHJpbnRfc2VxKHN0cnVjdCBwZmlvY19zdGF0ZTJfcGVl ciAqcCkKIH0KIAogdm9pZAotcHJpbnRfc3RhdGUoc3RydWN0IHBmaW9jX3N0YXRlMiAqcywgaW50 IG9wdHMpCitwcmludF9zdGF0ZShjb25zdCBzdHJ1Y3QgcGZpb2Nfc3RhdGUyICpzLCBpbnQgb3B0 cykKIHsKLQlzdHJ1Y3QgcGZpb2Nfc3RhdGUyX3BlZXIgKnNyYywgKmRzdDsKLQlzdHJ1Y3QgcGZp b2Nfc3RhdGUyX2tleSAqc2ssICpuazsKLQlzdHJ1Y3QgcHJvdG9lbnQgKnA7CisJY29uc3Qgc3Ry dWN0IHBmaW9jX3N0YXRlMl9wZWVyICpzcmMsICpkc3Q7CisJY29uc3Qgc3RydWN0IHBmaW9jX3N0 YXRlMl9rZXkgKnNrLCAqbms7CisJY29uc3Qgc3RydWN0IHByb3RvZW50ICpwOwogCWludCBtaW4s IHNlYzsKKwl1X2ludDE2X3Qgc3BvcnRbMl0sIG5wb3J0WzJdOwogCiAJaWYgKHMtPmRpcmVjdGlv biA9PSBQRl9PVVQpIHsKIAkJc3JjID0gJnMtPnNyYzsKQEAgLTIxNywxNCArMjE4LDI0IEBAIHBy aW50X3N0YXRlKHN0cnVjdCBwZmlvY19zdGF0ZTIgKnMsIGludCAKIAkJc2sgPSAmcy0+a2V5W1BG X1NLX1NUQUNLXTsKIAkJbmsgPSAmcy0+a2V5W1BGX1NLX1dJUkVdOwogCQlpZiAocy0+cHJvdG8g PT0gSVBQUk9UT19JQ01QIHx8IHMtPnByb3RvID09IElQUFJPVE9fSUNNUFY2KSAKLQkJCXNrLT5w b3J0WzBdID0gbmstPnBvcnRbMF07CisJCQlzcG9ydFswXSA9IG5rLT5wb3J0WzBdOworCQllbHNl CisJCQlzcG9ydFswXSA9IHNrLT5wb3J0WzBdOworCQlzcG9ydFsxXSA9IHNrLT5wb3J0WzFdOwor CQlucG9ydFswXSA9IG5rLT5wb3J0WzBdOworCQlucG9ydFsxXSA9IG5rLT5wb3J0WzFdOwogCX0g ZWxzZSB7CiAJCXNyYyA9ICZzLT5kc3Q7CiAJCWRzdCA9ICZzLT5zcmM7CiAJCXNrID0gJnMtPmtl eVtQRl9TS19XSVJFXTsKIAkJbmsgPSAmcy0+a2V5W1BGX1NLX1NUQUNLXTsKKwkJc3BvcnRbMF0g PSBzay0+cG9ydFswXTsKIAkJaWYgKHMtPnByb3RvID09IElQUFJPVE9fSUNNUCB8fCBzLT5wcm90 byA9PSBJUFBST1RPX0lDTVBWNikgCi0JCQlzay0+cG9ydFsxXSA9IG5rLT5wb3J0WzFdOworCQkJ c3BvcnRbMV0gPSBuay0+cG9ydFsxXTsKKwkJZWxzZQorCQkJc3BvcnRbMV0gPSBzay0+cG9ydFsx XTsKKwkJbnBvcnRbMF0gPSBuay0+cG9ydFswXTsKKwkJbnBvcnRbMV0gPSBuay0+cG9ydFsxXTsK IAl9CiAJcHJpbnRmKCIlcyAiLCBzLT5pZm5hbWUpOwogCWlmICgocCA9IGdldHByb3RvYnludW1i ZXIocy0+cHJvdG8pKSAhPSBOVUxMKQpAQCAtMjMyLDIyICsyNDMsMjIgQEAgcHJpbnRfc3RhdGUo c3RydWN0IHBmaW9jX3N0YXRlMiAqcywgaW50IAogCWVsc2UKIAkJcHJpbnRmKCIldSAiLCBzLT5w cm90byk7CiAKLQlwcmludF9ob3N0KCZuay0+YWRkclsxXSwgbmstPnBvcnRbMV0sIHMtPmFmLCBv cHRzKTsKKwlwcmludF9ob3N0KCZuay0+YWRkclsxXSwgbnBvcnRbMV0sIHMtPmFmLCBvcHRzKTsK IAlpZiAoUEZfQU5FUSgmbmstPmFkZHJbMV0sICZzay0+YWRkclsxXSwgcy0+YWYpIHx8Ci0JICAg IG5rLT5wb3J0WzFdICE9IHNrLT5wb3J0WzFdKSB7CisJICAgIG5wb3J0WzFdICE9IHNwb3J0WzFd KSB7CiAJCXByaW50ZigiICgiKTsKLQkJcHJpbnRfaG9zdCgmc2stPmFkZHJbMV0sIHNrLT5wb3J0 WzFdLCBzLT5hZiwgb3B0cyk7CisJCXByaW50X2hvc3QoJnNrLT5hZGRyWzFdLCBzcG9ydFsxXSwg cy0+YWYsIG9wdHMpOwogCQlwcmludGYoIikiKTsKIAl9CiAJaWYgKHMtPmRpcmVjdGlvbiA9PSBQ Rl9PVVQpCiAJCXByaW50ZigiIC0+ICIpOwogCWVsc2UKIAkJcHJpbnRmKCIgPC0gIik7Ci0JcHJp bnRfaG9zdCgmbmstPmFkZHJbMF0sIG5rLT5wb3J0WzBdLCBzLT5hZiwgb3B0cyk7CisJcHJpbnRf aG9zdCgmbmstPmFkZHJbMF0sIG5wb3J0WzBdLCBzLT5hZiwgb3B0cyk7CiAJaWYgKFBGX0FORVEo Jm5rLT5hZGRyWzBdLCAmc2stPmFkZHJbMF0sIHMtPmFmKSB8fAotCSAgICBuay0+cG9ydFswXSAh PSBzay0+cG9ydFswXSkgeworCSAgICBucG9ydFswXSAhPSBzcG9ydFswXSkgewogCQlwcmludGYo IiAoIik7Ci0JCXByaW50X2hvc3QoJnNrLT5hZGRyWzBdLCBzay0+cG9ydFswXSwgcy0+YWYsIG9w dHMpOworCQlwcmludF9ob3N0KCZzay0+YWRkclswXSwgc3BvcnRbMF0sIHMtPmFmLCBvcHRzKTsK IAkJcHJpbnRmKCIpIik7CiAJfQogCkBAIC0zMzIsNyArMzQzLDcgQEAgcHJpbnRfc3RhdGUoc3Ry dWN0IHBmaW9jX3N0YXRlMiAqcywgaW50IAogfQogCiBpbnQKLXVubWFzayhzdHJ1Y3QgcGZfYWRk ciAqbSwgc2FfZmFtaWx5X3QgYWYpCit1bm1hc2soY29uc3Qgc3RydWN0IHBmX2FkZHIgKm0sIHNh X2ZhbWlseV90IGFmKQogewogCWludCBpID0gMzEsIGogPSAwLCBiID0gMDsKIAl1X2ludDMyX3Qg dG1wOwo= --089e0160c35e9e329d04efb94ed2--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAC67Hz9Z5xv_m9F0WY5OZAFaFsuUNXtKx5gpTBpGipfn2ArYkg>