Skip site navigation (1)Skip section navigation (2)
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>