usb/185628: usbd_req_re_enumerate set address failed USB_ERR_STALLED for Seagate USB drives between r259425 and r260321
Alex Goncharov
alex_goncharov_usa at yahoo.com
Sun Jan 12 06:10:01 UTC 2014
The following reply was made to PR usb/185628; it has been noted by GNATS.
From: Alex Goncharov <alex_goncharov_usa at yahoo.com>
To: "freebsd-gnats-submit at FreeBSD.org" <freebsd-gnats-submit at FreeBSD.org>,
Hans Petter Selasky <hps at bitfrost.no>, freebsd-usb at FreeBSD.org
Cc:
Subject: Re: usb/185628: usbd_req_re_enumerate set address failed USB_ERR_STALLED for Seagate USB drives between r259425 and r260321
Date: Sat, 11 Jan 2014 21:58:02 -0800 (PST)
--2120775178-1643984294-1389506282=:33519
Content-Type: text/plain; charset=us-ascii
,-- On Fri, 1/10/14, Hans Petter Selasky <hps at bitfrost.no> wrote:
,-- On 01/10/14 12:49, Alex Goncharov wrote:
>> Maybe; but think about the fact correlations: the fact of the two
>> system's upgrade, two identical Seagate units, and other HDDs being
>> non-stalled.
>
> If you are running EHCI, there has been no changes in the USB stack,
Apparently, there have been; this is what causes the bogus error:
------------------------------------------------------------------------
r259454 | hselasky | 2013-12-16 03:51:58 -0500 (Mon, 16 Dec 2013) | 11 lines
MFC r244503 and r246565:
Make sure all USB drivers allocate buffer memory
through the USB API and/or busdma.
The following assumptions have been made:
umass - buffers passed from CAM/SCSI layer are OK
network - mbufs are OK.
Some other nits while at it.
------------------------------------------------------------------------
I am attaching the code difference for the two relevant files
----------------------------------------
M sys/dev/usb/storage/ustorage_fs.c
M sys/dev/usb/usb_msctest.c
----------------------------------------
in this change set, skipping the irrelevant 'sys/dev/usb/wlan' ones.
Can this be fixed reasonably soon, please? (I miss my HDDs :)
-- Alex
--2120775178-1643984294-1389506282=:33519
Content-Type: text/x-patch; name="sys-dev-usb-2013-12-16-2013-12-17.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="sys-dev-usb-2013-12-16-2013-12-17.diff"
SW5kZXg6IHN5cy9kZXYvdXNiL3N0b3JhZ2UvdXN0b3JhZ2VfZnMuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L3VzYi9zdG9yYWdlL3Vz
dG9yYWdlX2ZzLmMJKHJldmlzaW9uIDI1OTQ0OSkKKysrIHN5cy9kZXYvdXNi
L3N0b3JhZ2UvdXN0b3JhZ2VfZnMuYwkocmV2aXNpb24gMjU5NDk0KQpAQCAt
NzQsNyArNzQsNyBAQAogLyogRGVmaW5lIHNvbWUgbGltaXRzICovCiAKICNp
Zm5kZWYgVVNUT1JBR0VfRlNfQlVMS19TSVpFIAotI2RlZmluZQlVU1RPUkFH
RV9GU19CVUxLX1NJWkUgKDFVTCA8PCAxNykJLyogYnl0ZXMgKi8KKyNkZWZp
bmUJVVNUT1JBR0VfRlNfQlVMS19TSVpFCSgxVSA8PCAxNykJLyogYnl0ZXMg
Ki8KICNlbmRpZgogCiAjaWZuZGVmCVVTVE9SQUdFX0ZTX01BWF9MVU4KQEAg
LTg1LDggKzg1LDYgQEAKICNkZWZpbmUJVVNUT1JBR0VfUURBVEFfTUFYCTQw
CS8qIGJ5dGVzICovCiAjZW5kaWYKIAotI2RlZmluZSBzY19jbWRfZGF0YSBz
Y19jYncuQ0JXQ0RCCi0KIC8qCiAgKiBUaGUgU0NTSSBJRCBzdHJpbmcgbXVz
dCBiZSBleGFjdGx5IDI4IGNoYXJhY3RlcnMgbG9uZwogICogZXhsdWRpbmcg
dGhlIHRlcm1pbmF0aW5nIHplcm8uCkBAIC0xNzYsOCArMTc0LDkgQEAKIAog
c3RydWN0IHVzdG9yYWdlX2ZzX3NvZnRjIHsKIAotCXVzdG9yYWdlX2ZzX2Ji
Yl9jYndfdCBzY19jYnc7CS8qIENvbW1hbmQgV3JhcHBlciBCbG9jayAqLwot
CXVzdG9yYWdlX2ZzX2JiYl9jc3dfdCBzY19jc3c7CS8qIENvbW1hbmQgU3Rh
dHVzIEJsb2NrICovCisJdXN0b3JhZ2VfZnNfYmJiX2Nid190ICpzY19jYnc7
CS8qIENvbW1hbmQgV3JhcHBlciBCbG9jayAqLworCXVzdG9yYWdlX2ZzX2Ji
Yl9jc3dfdCAqc2NfY3N3OwkvKiBDb21tYW5kIFN0YXR1cyBCbG9jayAqLwor
CXZvaWQgKnNjX2RtYV9wdHI7CQkvKiBNYWluIGRhdGEgYnVmZmVyICovCiAK
IAlzdHJ1Y3QgbXR4IHNjX210eDsKIApAQCAtMjc1LDcgKzI3NCw2IEBACiAJ
CS5lbmRwb2ludCA9IFVFX0FERFJfQU5ZLAogCQkuZGlyZWN0aW9uID0gVUVf
RElSX09VVCwKIAkJLmJ1ZnNpemUgPSBzaXplb2YodXN0b3JhZ2VfZnNfYmJi
X2Nid190KSwKLQkJLmZsYWdzID0gey5leHRfYnVmZmVyID0gMSx9LAogCQku
Y2FsbGJhY2sgPSAmdXN0b3JhZ2VfZnNfdF9iYmJfY29tbWFuZF9jYWxsYmFj
aywKIAkJLnVzYl9tb2RlID0gVVNCX01PREVfREVWSUNFLAogCX0sCkBAIC0y
OTUsNyArMjkzLDcgQEAKIAkJLmVuZHBvaW50ID0gVUVfQUREUl9BTlksCiAJ
CS5kaXJlY3Rpb24gPSBVRV9ESVJfT1VULAogCQkuYnVmc2l6ZSA9IFVTVE9S
QUdFX0ZTX0JVTEtfU0laRSwKLQkJLmZsYWdzID0gey5wcm94eV9idWZmZXIg
PSAxLC5zaG9ydF94ZmVyX29rID0gMSwuZXh0X2J1ZmZlciA9IDF9LAorCQku
ZmxhZ3MgPSB7LnByb3h5X2J1ZmZlciA9IDEsLnNob3J0X3hmZXJfb2sgPSAx
fSwKIAkJLmNhbGxiYWNrID0gJnVzdG9yYWdlX2ZzX3RfYmJiX2RhdGFfcmVh
ZF9jYWxsYmFjaywKIAkJLnVzYl9tb2RlID0gVVNCX01PREVfREVWSUNFLAog
CX0sCkBAIC0zMTUsNyArMzEzLDcgQEAKIAkJLmVuZHBvaW50ID0gVUVfQURE
Ul9BTlksCiAJCS5kaXJlY3Rpb24gPSBVRV9ESVJfSU4sCiAJCS5idWZzaXpl
ID0gc2l6ZW9mKHVzdG9yYWdlX2ZzX2JiYl9jc3dfdCksCi0JCS5mbGFncyA9
IHsuc2hvcnRfeGZlcl9vayA9IDEsLmV4dF9idWZmZXIgPSAxLH0sCisJCS5m
bGFncyA9IHsuc2hvcnRfeGZlcl9vayA9IDF9LAogCQkuY2FsbGJhY2sgPSAm
dXN0b3JhZ2VfZnNfdF9iYmJfc3RhdHVzX2NhbGxiYWNrLAogCQkudXNiX21v
ZGUgPSBVU0JfTU9ERV9ERVZJQ0UsCiAJfSwKQEAgLTQwOSw2ICs0MDcsMTQg
QEAKIAkJICAgICJ0cmFuc2ZlcnMsICVzXG4iLCB1c2JkX2VycnN0cihlcnIp
KTsKIAkJZ290byBkZXRhY2g7CiAJfQorCisJc2MtPnNjX2NidyA9IHVzYmRf
eGZlcl9nZXRfZnJhbWVfYnVmZmVyKHNjLT5zY194ZmVyWworCSAgICBVU1RP
UkFHRV9GU19UX0JCQl9DT01NQU5EXSwgMCk7CisJc2MtPnNjX2NzdyA9IHVz
YmRfeGZlcl9nZXRfZnJhbWVfYnVmZmVyKHNjLT5zY194ZmVyWworCSAgICBV
U1RPUkFHRV9GU19UX0JCQl9TVEFUVVNdLCAwKTsKKyAJc2MtPnNjX2RtYV9w
dHIgPSB1c2JkX3hmZXJfZ2V0X2ZyYW1lX2J1ZmZlcihzYy0+c2NfeGZlclsK
KwkgICAgVVNUT1JBR0VfRlNfVF9CQkJfREFUQV9SRUFEXSwgMCk7CisKIAkv
KiBzdGFydCBNYXNzIFN0b3JhZ2UgU3RhdGUgTWFjaGluZSAqLwogCiAJbXR4
X2xvY2soJnNjLT5zY19tdHgpOwpAQCAtNTE4LDcgKzUyNCw3IEBACiAJc3dp
dGNoIChVU0JfR0VUX1NUQVRFKHhmZXIpKSB7CiAJY2FzZSBVU0JfU1RfVFJB
TlNGRVJSRUQ6CiAKLQkJdGFnID0gVUdFVERXKHNjLT5zY19jYncuZENCV1Np
Z25hdHVyZSk7CisJCXRhZyA9IFVHRVREVyhzYy0+c2NfY2J3LT5kQ0JXU2ln
bmF0dXJlKTsKIAogCQlpZiAodGFnICE9IENCV1NJR05BVFVSRSkgewogCQkJ
LyogZG8gbm90aGluZyAqLwpAQCAtNTI1LDI5ICs1MzEsMjkgQEAKIAkJCURQ
UklOVEYoImludmFsaWQgc2lnbmF0dXJlIDB4JTA4eFxuIiwgdGFnKTsKIAkJ
CWJyZWFrOwogCQl9Ci0JCXRhZyA9IFVHRVREVyhzYy0+c2NfY2J3LmRDQldU
YWcpOworCQl0YWcgPSBVR0VURFcoc2MtPnNjX2Nidy0+ZENCV1RhZyk7CiAK
IAkJLyogZWNobyBiYWNrIHRhZyAqLwotCQlVU0VURFcoc2MtPnNjX2Nzdy5k
Q1NXVGFnLCB0YWcpOworCQlVU0VURFcoc2MtPnNjX2Nzdy0+ZENTV1RhZywg
dGFnKTsKIAogCQkvKiByZXNldCBzdGF0dXMgKi8KLQkJc2MtPnNjX2Nzdy5i
Q1NXU3RhdHVzID0gMDsKKwkJc2MtPnNjX2Nzdy0+YkNTV1N0YXR1cyA9IDA7
CiAKIAkJLyogcmVzZXQgZGF0YSBvZmZzZXQsIGRhdGEgbGVuZ3RoIGFuZCBk
YXRhIHJlbWFpbmRlciAqLwogCQlzYy0+c2NfdHJhbnNmZXIub2Zmc2V0ID0g
MDsKIAkJc2MtPnNjX3RyYW5zZmVyLmRhdGFfcmVtID0KLQkJICAgIFVHRVRE
VyhzYy0+c2NfY2J3LmRDQldEYXRhVHJhbnNmZXJMZW5ndGgpOworCQkgICAg
VUdFVERXKHNjLT5zY19jYnctPmRDQldEYXRhVHJhbnNmZXJMZW5ndGgpOwog
CiAJCS8qIHJlc2V0IGRhdGEgZmxhZ3MgKi8KIAkJc2MtPnNjX3RyYW5zZmVy
LmRhdGFfc2hvcnQgPSAwOwogCiAJCS8qIGV4dHJhY3QgTFVOICovCi0JCXNj
LT5zY190cmFuc2Zlci5sdW4gPSBzYy0+c2NfY2J3LmJDQldMVU47CisJCXNj
LT5zY190cmFuc2Zlci5sdW4gPSBzYy0+c2NfY2J3LT5iQ0JXTFVOOwogCiAJ
CWlmIChzYy0+c2NfdHJhbnNmZXIuZGF0YV9yZW0gPT0gMCkgewogCQkJc2Mt
PnNjX3RyYW5zZmVyLmNid19kaXIgPSBESVJfTk9ORTsKIAkJfSBlbHNlIHsK
LQkJCWlmIChzYy0+c2NfY2J3LmJDQldGbGFncyAmIENCV0ZMQUdTX0lOKSB7
CisJCQlpZiAoc2MtPnNjX2Nidy0+YkNCV0ZsYWdzICYgQ0JXRkxBR1NfSU4p
IHsKIAkJCQlzYy0+c2NfdHJhbnNmZXIuY2J3X2RpciA9IERJUl9XUklURTsK
IAkJCX0gZWxzZSB7CiAJCQkJc2MtPnNjX3RyYW5zZmVyLmNid19kaXIgPSBE
SVJfUkVBRDsKQEAgLTU1NCw4ICs1NjAsOCBAQAogCQkJfQogCQl9CiAKLQkJ
c2MtPnNjX3RyYW5zZmVyLmNtZF9sZW4gPSBzYy0+c2NfY2J3LmJDREJMZW5n
dGg7Ci0JCWlmICgoc2MtPnNjX3RyYW5zZmVyLmNtZF9sZW4gPiBzaXplb2Yo
c2MtPnNjX2Nidy5DQldDREIpKSB8fAorCQlzYy0+c2NfdHJhbnNmZXIuY21k
X2xlbiA9IHNjLT5zY19jYnctPmJDREJMZW5ndGg7CisJCWlmICgoc2MtPnNj
X3RyYW5zZmVyLmNtZF9sZW4gPiBzaXplb2Yoc2MtPnNjX2Nidy0+Q0JXQ0RC
KSkgfHwKIAkJICAgIChzYy0+c2NfdHJhbnNmZXIuY21kX2xlbiA9PSAwKSkg
ewogCQkJLyoganVzdCBoYWx0IC0gdGhpcyBpcyBpbnZhbGlkICovCiAJCQlE
UFJJTlRGKCJpbnZhbGlkIGNvbW1hbmQgbGVuZ3RoICVkIGJ5dGVzXG4iLApA
QCAtNTk3LDkgKzYwMyw2IEBACiAJCQl1c2JkX3hmZXJfc2V0X3N0YWxsKHhm
ZXIpOwogCQkJRFBSSU5URigic3RhbGwgcGlwZVxuIik7CiAJCX0KLQotCQl1
c2JkX3hmZXJfc2V0X2ZyYW1lX2RhdGEoeGZlciwgMCwgJnNjLT5zY19jYncs
Ci0JCSAgICBzaXplb2Yoc2MtPnNjX2NidykpOwogCQl1c2JkX3RyYW5zZmVy
X3N1Ym1pdCh4ZmVyKTsKIAkJYnJlYWs7CiAKQEAgLTYxNiw5ICs2MTksOSBA
QAogCQlnb3RvIHRyX3NldHVwOwogCX0KIAlpZiAoZXJyKSB7Ci0JCWlmIChz
Yy0+c2NfY3N3LmJDU1dTdGF0dXMgPT0gMCkgeworCQlpZiAoc2MtPnNjX2Nz
dy0+YkNTV1N0YXR1cyA9PSAwKSB7CiAJCQkvKiBzZXQgc29tZSBkZWZhdWx0
IGVycm9yIGNvZGUgKi8KLQkJCXNjLT5zY19jc3cuYkNTV1N0YXR1cyA9IENT
V1NUQVRVU19GQUlMRUQ7CisJCQlzYy0+c2NfY3N3LT5iQ1NXU3RhdHVzID0g
Q1NXU1RBVFVTX0ZBSUxFRDsKIAkJfQogCQlpZiAoc2MtPnNjX3RyYW5zZmVy
LmNid19kaXIgPT0gRElSX1JFQUQpIHsKIAkJCS8qIGR1bXAgYWxsIGRhdGEg
Ki8KQEAgLTY5OSw2ICs3MDIsOSBAQAogCiAJc3dpdGNoIChVU0JfR0VUX1NU
QVRFKHhmZXIpKSB7CiAJY2FzZSBVU0JfU1RfVFJBTlNGRVJSRUQ6CisJCS8q
IFhYWCBjb3B5IGRhdGEgZnJvbSBETUEgYnVmZmVyICovCisJCW1lbWNweShz
Yy0+c2NfdHJhbnNmZXIuZGF0YV9wdHIsIHNjLT5zY19kbWFfcHRyLCBhY3Rs
ZW4pOworCiAJCXNjLT5zY190cmFuc2Zlci5kYXRhX3JlbSAtPSBhY3RsZW47
CiAJCXNjLT5zY190cmFuc2Zlci5kYXRhX3B0ciArPSBhY3RsZW47CiAJCXNj
LT5zY190cmFuc2Zlci5vZmZzZXQgKz0gYWN0bGVuOwpAQCAtNzIxLDggKzcy
Nyw3IEBACiAJCQl1c2JkX3hmZXJfc2V0X3N0YWxsKHhmZXIpOwogCQl9CiAK
LQkJdXNiZF94ZmVyX3NldF9mcmFtZV9kYXRhKHhmZXIsIDAsIHNjLT5zY190
cmFuc2Zlci5kYXRhX3B0ciwKLQkJICAgIG1heF9idWxrKTsKKwkJdXNiZF94
ZmVyX3NldF9mcmFtZV9kYXRhKHhmZXIsIDAsIHNjLT5zY19kbWFfcHRyLCBt
YXhfYnVsayk7CiAJCXVzYmRfdHJhbnNmZXJfc3VibWl0KHhmZXIpOwogCQli
cmVhazsKIApAQCAtNzc4LDggKzc4MywxMCBAQAogCQkJdXNiZF94ZmVyX3Nl
dF9zdGFsbCh4ZmVyKTsKIAkJfQogCi0JCXVzYmRfeGZlcl9zZXRfZnJhbWVf
ZGF0YSh4ZmVyLCAwLCBzYy0+c2NfdHJhbnNmZXIuZGF0YV9wdHIsCi0JCSAg
ICBtYXhfYnVsayk7CisJCS8qIFhYWCBjb3B5IGRhdGEgdG8gRE1BIGJ1ZmZl
ciAqLworCQltZW1jcHkoc2MtPnNjX2RtYV9wdHIsIHNjLT5zY190cmFuc2Zl
ci5kYXRhX3B0ciwgbWF4X2J1bGspOworCisJCXVzYmRfeGZlcl9zZXRfZnJh
bWVfZGF0YSh4ZmVyLCAwLCBzYy0+c2NfZG1hX3B0ciwgbWF4X2J1bGspOwog
CQl1c2JkX3RyYW5zZmVyX3N1Ym1pdCh4ZmVyKTsKIAkJYnJlYWs7CiAKQEAg
LTgxMywxNiArODIwLDEzIEBACiAKIAljYXNlIFVTQl9TVF9TRVRVUDoKIHRy
X3NldHVwOgotCQlVU0VURFcoc2MtPnNjX2Nzdy5kQ1NXU2lnbmF0dXJlLCBD
U1dTSUdOQVRVUkUpOwotCQlVU0VURFcoc2MtPnNjX2Nzdy5kQ1NXRGF0YVJl
c2lkdWUsIHNjLT5zY190cmFuc2Zlci5kYXRhX3JlbSk7CisJCVVTRVREVyhz
Yy0+c2NfY3N3LT5kQ1NXU2lnbmF0dXJlLCBDU1dTSUdOQVRVUkUpOworCQlV
U0VURFcoc2MtPnNjX2Nzdy0+ZENTV0RhdGFSZXNpZHVlLCBzYy0+c2NfdHJh
bnNmZXIuZGF0YV9yZW0pOwogCiAJCWlmIChzYy0+c2NfdHJhbnNmZXIuZGF0
YV9lcnJvcikgewogCQkJc2MtPnNjX3RyYW5zZmVyLmRhdGFfZXJyb3IgPSAw
OwogCQkJdXNiZF94ZmVyX3NldF9zdGFsbCh4ZmVyKTsKIAkJfQotCi0JCXVz
YmRfeGZlcl9zZXRfZnJhbWVfZGF0YSh4ZmVyLCAwLCAmc2MtPnNjX2NzdywK
LQkJICAgIHNpemVvZihzYy0+c2NfY3N3KSk7CiAJCXVzYmRfdHJhbnNmZXJf
c3VibWl0KHhmZXIpOwogCQlicmVhazsKIApAQCAtOTM0LDE3ICs5MzgsMTcg
QEAKIAkvKgogCSAqIEdldCB0aGUgc3RhcnRpbmcgTG9naWNhbCBCbG9jayBB
ZGRyZXNzCiAJICovCi0JbGJhID0gZ2V0X2JlMzIoJnNjLT5zY19jbWRfZGF0
YVsyXSk7CisJbGJhID0gZ2V0X2JlMzIoJnNjLT5zY19jYnctPkNCV0NEQlsy
XSk7CiAKIAkvKgogCSAqIFdlIGFsbG93IERQTyAoRGlzYWJsZSBQYWdlIE91
dCA9IGRvbid0IHNhdmUgZGF0YSBpbiB0aGUgY2FjaGUpCiAJICogYnV0IHdl
IGRvbid0IGltcGxlbWVudCBpdC4KIAkgKi8KLQlpZiAoKHNjLT5zY19jbWRf
ZGF0YVsxXSAmIH4weDEwKSAhPSAwKSB7CisJaWYgKChzYy0+c2NfY2J3LT5D
QldDREJbMV0gJiB+MHgxMCkgIT0gMCkgewogCQljdXJybHVuLT5zZW5zZV9k
YXRhID0gU1NfSU5WQUxJRF9GSUVMRF9JTl9DREI7CiAJCXJldHVybiAoMSk7
CiAJfQotCXZsZW4gPSBnZXRfYmUxNigmc2MtPnNjX2NtZF9kYXRhWzddKTsK
Kwl2bGVuID0gZ2V0X2JlMTYoJnNjLT5zY19jYnctPkNCV0NEQls3XSk7CiAJ
aWYgKHZsZW4gPT0gMCkgewogCQlnb3RvIGRvbmU7CiAJfQpAQCAtMTA5Miw4
ICsxMDk2LDggQEAKIHsKIAl1aW50OF90ICpidWYgPSBzYy0+c2NfdHJhbnNm
ZXIuZGF0YV9wdHI7CiAJc3RydWN0IHVzdG9yYWdlX2ZzX2x1biAqY3Vycmx1
biA9IHNjLT5zY190cmFuc2Zlci5jdXJybHVuOwotCXVpbnQzMl90IGxiYSA9
IGdldF9iZTMyKCZzYy0+c2NfY21kX2RhdGFbMl0pOwotCXVpbnQ4X3QgcG1p
ID0gc2MtPnNjX2NtZF9kYXRhWzhdOworCXVpbnQzMl90IGxiYSA9IGdldF9i
ZTMyKCZzYy0+c2NfY2J3LT5DQldDREJbMl0pOworCXVpbnQ4X3QgcG1pID0g
c2MtPnNjX2Nidy0+Q0JXQ0RCWzhdOwogCiAJLyogQ2hlY2sgdGhlIFBNSSBh
bmQgTEJBIGZpZWxkcyAqLwogCWlmICgocG1pID4gMSkgfHwgKChwbWkgPT0g
MCkgJiYgKGxiYSAhPSAwKSkpIHsKQEAgLTExMjYsNyArMTEzMCw3IEBACiAJ
dWludDhfdCAqYnVmMDsKIAl1aW50MTZfdCBsZW47CiAJdWludDE2X3QgbGlt
aXQ7Ci0JdWludDhfdCBtc2NtbmQgPSBzYy0+c2NfY21kX2RhdGFbMF07CisJ
dWludDhfdCBtc2NtbmQgPSBzYy0+c2NfY2J3LT5DQldDREJbMF07CiAJdWlu
dDhfdCBwYzsKIAl1aW50OF90IHBhZ2VfY29kZTsKIAl1aW50OF90IGNoYW5n
ZWFibGVfdmFsdWVzOwpAQCAtMTEzNCwxMyArMTEzOCwxMyBAQAogCiAJYnVm
MCA9IGJ1ZjsKIAotCWlmICgoc2MtPnNjX2NtZF9kYXRhWzFdICYgfjB4MDgp
ICE9IDApIHsKKwlpZiAoKHNjLT5zY19jYnctPkNCV0NEQlsxXSAmIH4weDA4
KSAhPSAwKSB7CiAJCS8qIE1hc2sgYXdheSBEQkQgKi8KIAkJY3Vycmx1bi0+
c2Vuc2VfZGF0YSA9IFNTX0lOVkFMSURfRklFTERfSU5fQ0RCOwogCQlyZXR1
cm4gKDEpOwogCX0KLQlwYyA9IHNjLT5zY19jbWRfZGF0YVsyXSA+PiA2Owot
CXBhZ2VfY29kZSA9IHNjLT5zY19jbWRfZGF0YVsyXSAmIDB4M2Y7CisJcGMg
PSBzYy0+c2NfY2J3LT5DQldDREJbMl0gPj4gNjsKKwlwYWdlX2NvZGUgPSBz
Yy0+c2NfY2J3LT5DQldDREJbMl0gJiAweDNmOwogCWlmIChwYyA9PSAzKSB7
CiAJCWN1cnJsdW4tPnNlbnNlX2RhdGEgPSBTU19TQVZJTkdfUEFSQU1FVEVS
U19OT1RfU1VQUE9SVEVEOwogCQlyZXR1cm4gKDEpOwpAQCAtMTIzNyw5ICsx
MjQxLDkgQEAKIAkJY3Vycmx1bi0+c2Vuc2VfZGF0YSA9IFNTX0lOVkFMSURf
Q09NTUFORDsKIAkJcmV0dXJuICgxKTsKIAl9Ci0JaW1tZWQgPSBzYy0+c2Nf
Y21kX2RhdGFbMV0gJiAweDAxOwotCWxvZWogPSBzYy0+c2NfY21kX2RhdGFb
NF0gJiAweDAyOwotCXN0YXJ0ID0gc2MtPnNjX2NtZF9kYXRhWzRdICYgMHgw
MTsKKwlpbW1lZCA9IHNjLT5zY19jYnctPkNCV0NEQlsxXSAmIDB4MDE7CisJ
bG9laiA9IHNjLT5zY19jYnctPkNCV0NEQls0XSAmIDB4MDI7CisJc3RhcnQg
PSBzYy0+c2NfY2J3LT5DQldDREJbNF0gJiAweDAxOwogCiAJaWYgKGltbWVk
IHx8IGxvZWogfHwgc3RhcnQpIHsKIAkJLyogY29tcGlsZSBmaXggKi8KQEAg
LTEyNjQsOCArMTI2OCw4IEBACiAJCWN1cnJsdW4tPnNlbnNlX2RhdGEgPSBT
U19JTlZBTElEX0NPTU1BTkQ7CiAJCXJldHVybiAoMSk7CiAJfQotCXByZXZl
bnQgPSBzYy0+c2NfY21kX2RhdGFbNF0gJiAweDAxOwotCWlmICgoc2MtPnNj
X2NtZF9kYXRhWzRdICYgfjB4MDEpICE9IDApIHsKKwlwcmV2ZW50ID0gc2Mt
PnNjX2Nidy0+Q0JXQ0RCWzRdICYgMHgwMTsKKwlpZiAoKHNjLT5zY19jYnct
PkNCV0NEQls0XSAmIH4weDAxKSAhPSAwKSB7CiAJCS8qIE1hc2sgYXdheSBQ
cmV2ZW50ICovCiAJCWN1cnJsdW4tPnNlbnNlX2RhdGEgPSBTU19JTlZBTElE
X0ZJRUxEX0lOX0NEQjsKIAkJcmV0dXJuICgxKTsKQEAgLTEzNjksMTEgKzEz
NzMsMTEgQEAKIAkgKiBHZXQgdGhlIHN0YXJ0aW5nIExvZ2ljYWwgQmxvY2sg
QWRkcmVzcyBhbmQgY2hlY2sgdGhhdCBpdCdzIG5vdAogCSAqIHRvbyBiaWcK
IAkgKi8KLQlpZiAoc2MtPnNjX2NtZF9kYXRhWzBdID09IFNDX1JFQURfNikg
ewotCQlsYmEgPSAoKCh1aW50MzJfdClzYy0+c2NfY21kX2RhdGFbMV0pIDw8
IDE2KSB8Ci0JCSAgICBnZXRfYmUxNigmc2MtPnNjX2NtZF9kYXRhWzJdKTsK
KwlpZiAoc2MtPnNjX2Nidy0+Q0JXQ0RCWzBdID09IFNDX1JFQURfNikgewor
CQlsYmEgPSAoKCh1aW50MzJfdClzYy0+c2NfY2J3LT5DQldDREJbMV0pIDw8
IDE2KSB8CisJCSAgICBnZXRfYmUxNigmc2MtPnNjX2Nidy0+Q0JXQ0RCWzJd
KTsKIAl9IGVsc2UgewotCQlsYmEgPSBnZXRfYmUzMigmc2MtPnNjX2NtZF9k
YXRhWzJdKTsKKwkJbGJhID0gZ2V0X2JlMzIoJnNjLT5zY19jYnctPkNCV0NE
QlsyXSk7CiAKIAkJLyoKIAkJICogV2UgYWxsb3cgRFBPIChEaXNhYmxlIFBh
Z2UgT3V0ID0gZG9uJ3Qgc2F2ZSBkYXRhIGluIHRoZQpAQCAtMTM4MCw3ICsx
Mzg0LDcgQEAKIAkJICogY2FjaGUpIGFuZCBGVUEgKEZvcmNlIFVuaXQgQWNj
ZXNzID0gZG9uJ3QgcmVhZCBmcm9tIHRoZQogCQkgKiBjYWNoZSksIGJ1dCB3
ZSBkb24ndCBpbXBsZW1lbnQgdGhlbS4KIAkJICovCi0JCWlmICgoc2MtPnNj
X2NtZF9kYXRhWzFdICYgfjB4MTgpICE9IDApIHsKKwkJaWYgKChzYy0+c2Nf
Y2J3LT5DQldDREJbMV0gJiB+MHgxOCkgIT0gMCkgewogCQkJY3Vycmx1bi0+
c2Vuc2VfZGF0YSA9IFNTX0lOVkFMSURfRklFTERfSU5fQ0RCOwogCQkJcmV0
dXJuICgxKTsKIAkJfQpAQCAtMTQyNywxMSArMTQzMSwxMSBAQAogCSAqIEdl
dCB0aGUgc3RhcnRpbmcgTG9naWNhbCBCbG9jayBBZGRyZXNzIGFuZCBjaGVj
ayB0aGF0IGl0J3Mgbm90CiAJICogdG9vIGJpZy4KIAkgKi8KLQlpZiAoc2Mt
PnNjX2NtZF9kYXRhWzBdID09IFNDX1dSSVRFXzYpCi0JCWxiYSA9ICgoKHVp
bnQzMl90KXNjLT5zY19jbWRfZGF0YVsxXSkgPDwgMTYpIHwKLQkJICAgIGdl
dF9iZTE2KCZzYy0+c2NfY21kX2RhdGFbMl0pOworCWlmIChzYy0+c2NfY2J3
LT5DQldDREJbMF0gPT0gU0NfV1JJVEVfNikKKwkJbGJhID0gKCgodWludDMy
X3Qpc2MtPnNjX2Nidy0+Q0JXQ0RCWzFdKSA8PCAxNikgfAorCQkgICAgZ2V0
X2JlMTYoJnNjLT5zY19jYnctPkNCV0NEQlsyXSk7CiAJZWxzZSB7Ci0JCWxi
YSA9IGdldF9iZTMyKCZzYy0+c2NfY21kX2RhdGFbMl0pOworCQlsYmEgPSBn
ZXRfYmUzMigmc2MtPnNjX2Nidy0+Q0JXQ0RCWzJdKTsKIAogCQkvKgogCQkg
KiBXZSBhbGxvdyBEUE8gKERpc2FibGUgUGFnZSBPdXQgPSBkb24ndCBzYXZl
IGRhdGEgaW4gdGhlCkBAIC0xNDM5LDExICsxNDQzLDExIEBACiAJCSAqIG1l
ZGl1bSkuICBXZSBkb24ndCBpbXBsZW1lbnQgRFBPOyB3ZSBpbXBsZW1lbnQg
RlVBIGJ5CiAJCSAqIHBlcmZvcm1pbmcgc3luY2hyb25vdXMgb3V0cHV0Lgog
CQkgKi8KLQkJaWYgKChzYy0+c2NfY21kX2RhdGFbMV0gJiB+MHgxOCkgIT0g
MCkgeworCQlpZiAoKHNjLT5zY19jYnctPkNCV0NEQlsxXSAmIH4weDE4KSAh
PSAwKSB7CiAJCQljdXJybHVuLT5zZW5zZV9kYXRhID0gU1NfSU5WQUxJRF9G
SUVMRF9JTl9DREI7CiAJCQlyZXR1cm4gKDEpOwogCQl9Ci0JCWlmIChzYy0+
c2NfY21kX2RhdGFbMV0gJiAweDA4KSB7CisJCWlmIChzYy0+c2NfY2J3LT5D
QldDREJbMV0gJiAweDA4KSB7CiAJCQkvKiBGVUEgKi8KIAkJCS8qIFhYWCBz
ZXQgU1lOQyBmbGFnIGhlcmUgKi8KIAkJfQpAQCAtMTQ4Myw3ICsxNDg3LDcg
QEAKIAkJCSAqIHRoZXJlIG11c3QgYmUgc29tZXRoaW5nIHdyb25nIGFib3V0
IHRoaXMgU0NTSQogCQkJICogY29tbWFuZAogCQkJICovCi0JCQlzYy0+c2Nf
Y3N3LmJDU1dTdGF0dXMgPSBDU1dTVEFUVVNfUEhBU0U7CisJCQlzYy0+c2Nf
Y3N3LT5iQ1NXU3RhdHVzID0gQ1NXU1RBVFVTX1BIQVNFOwogCQkJcmV0dXJu
ICgxKTsKIAkJfQogCQkvKiBjb21wdXRlIHRoZSBtaW5pbXVtIGxlbmd0aCAq
LwpAQCAtMTUxOSw3ICsxNTIzLDcgQEAKICAgICB1aW50MTZfdCBtYXNrLCB1
aW50OF90IG5lZWRzX21lZGl1bSkKIHsKIAlzdHJ1Y3QgdXN0b3JhZ2VfZnNf
bHVuICpjdXJybHVuOwotCXVpbnQ4X3QgbHVuID0gKHNjLT5zY19jbWRfZGF0
YVsxXSA+PiA1KTsKKwl1aW50OF90IGx1biA9IChzYy0+c2NfY2J3LT5DQldD
REJbMV0gPj4gNSk7CiAJdWludDhfdCBpOwogCiAJLyogVmVyaWZ5IHRoZSBs
ZW5ndGggb2YgdGhlIGNvbW1hbmQgaXRzZWxmICovCkBAIC0xNTI2LDExICsx
NTMwLDExIEBACiAJaWYgKG1pbl9jbWRfc2l6ZSA+IHNjLT5zY190cmFuc2Zl
ci5jbWRfbGVuKSB7CiAJCURQUklOVEYoIiV1ID4gJXVcbiIsCiAJCSAgICBt
aW5fY21kX3NpemUsIHNjLT5zY190cmFuc2Zlci5jbWRfbGVuKTsKLQkJc2Mt
PnNjX2Nzdy5iQ1NXU3RhdHVzID0gQ1NXU1RBVFVTX1BIQVNFOworCQlzYy0+
c2NfY3N3LT5iQ1NXU3RhdHVzID0gQ1NXU1RBVFVTX1BIQVNFOwogCQlyZXR1
cm4gKDEpOwogCX0KIAkvKiBNYXNrIGF3YXkgdGhlIExVTiAqLwotCXNjLT5z
Y19jbWRfZGF0YVsxXSAmPSAweDFmOworCXNjLT5zY19jYnctPkNCV0NEQlsx
XSAmPSAweDFmOwogCiAJLyogQ2hlY2sgaWYgTFVOIGlzIGNvcnJlY3QgKi8K
IAlpZiAobHVuICE9IHNjLT5zY190cmFuc2Zlci5sdW4pIHsKQEAgLTE1NDAs
NyArMTU0NCw3IEBACiAJaWYgKHNjLT5zY190cmFuc2Zlci5sdW4gPD0gc2Mt
PnNjX2xhc3RfbHVuKSB7CiAJCXNjLT5zY190cmFuc2Zlci5jdXJybHVuID0g
Y3Vycmx1biA9CiAJCSAgICBzYy0+c2NfbHVuICsgc2MtPnNjX3RyYW5zZmVy
Lmx1bjsKLQkJaWYgKHNjLT5zY19jbWRfZGF0YVswXSAhPSBTQ19SRVFVRVNU
X1NFTlNFKSB7CisJCWlmIChzYy0+c2NfY2J3LT5DQldDREJbMF0gIT0gU0Nf
UkVRVUVTVF9TRU5TRSkgewogCQkJY3Vycmx1bi0+c2Vuc2VfZGF0YSA9IFNT
X05PX1NFTlNFOwogCQkJY3Vycmx1bi0+c2Vuc2VfZGF0YV9pbmZvID0gMDsK
IAkJCWN1cnJsdW4tPmluZm9fdmFsaWQgPSAwOwpAQCAtMTU1MSw4ICsxNTU1
LDggQEAKIAkJICogZWxzZSBtdXN0IGZhaWwhCiAJCSAqLwogCQlpZiAoKGN1
cnJsdW4tPnVuaXRfYXR0ZW50aW9uX2RhdGEgIT0gU1NfTk9fU0VOU0UpICYm
Ci0JCSAgICAoc2MtPnNjX2NtZF9kYXRhWzBdICE9IFNDX0lOUVVJUlkpICYm
Ci0JCSAgICAoc2MtPnNjX2NtZF9kYXRhWzBdICE9IFNDX1JFUVVFU1RfU0VO
U0UpKSB7CisJCSAgICAoc2MtPnNjX2Nidy0+Q0JXQ0RCWzBdICE9IFNDX0lO
UVVJUlkpICYmCisJCSAgICAoc2MtPnNjX2Nidy0+Q0JXQ0RCWzBdICE9IFND
X1JFUVVFU1RfU0VOU0UpKSB7CiAJCQljdXJybHVuLT5zZW5zZV9kYXRhID0g
Y3Vycmx1bi0+dW5pdF9hdHRlbnRpb25fZGF0YTsKIAkJCWN1cnJsdW4tPnVu
aXRfYXR0ZW50aW9uX2RhdGEgPSBTU19OT19TRU5TRTsKIAkJCXJldHVybiAo
MSk7CkBAIC0xNTY0LDggKzE1NjgsOCBAQAogCQkgKiBJTlFVSVJZIGFuZCBS
RVFVRVNUIFNFTlNFIGNvbW1hbmRzIGFyZSBleHBsaWNpdGx5IGFsbG93ZWQK
IAkJICogdG8gdXNlIHVuc3VwcG9ydGVkIExVTnM7IGFsbCBvdGhlcnMgbWF5
IG5vdC4KIAkJICovCi0JCWlmICgoc2MtPnNjX2NtZF9kYXRhWzBdICE9IFND
X0lOUVVJUlkpICYmCi0JCSAgICAoc2MtPnNjX2NtZF9kYXRhWzBdICE9IFND
X1JFUVVFU1RfU0VOU0UpKSB7CisJCWlmICgoc2MtPnNjX2Nidy0+Q0JXQ0RC
WzBdICE9IFNDX0lOUVVJUlkpICYmCisJCSAgICAoc2MtPnNjX2Nidy0+Q0JX
Q0RCWzBdICE9IFNDX1JFUVVFU1RfU0VOU0UpKSB7CiAJCQlyZXR1cm4gKDEp
OwogCQl9CiAJfQpAQCAtMTU3NSw3ICsxNTc5LDcgQEAKIAkgKiBub24temVy
by4KIAkgKi8KIAlmb3IgKGkgPSAwOyBpICE9IG1pbl9jbWRfc2l6ZTsgaSsr
KSB7Ci0JCWlmIChzYy0+c2NfY21kX2RhdGFbaV0gJiYgIShtYXNrICYgKDFV
TCA8PCBpKSkpIHsKKwkJaWYgKHNjLT5zY19jYnctPkNCV0NEQltpXSAmJiAh
KG1hc2sgJiAoMVVMIDw8IGkpKSkgewogCQkJaWYgKGN1cnJsdW4pIHsKIAkJ
CQljdXJybHVuLT5zZW5zZV9kYXRhID0gU1NfSU5WQUxJRF9GSUVMRF9JTl9D
REI7CiAJCQl9CkBAIC0xNjEzLDEyICsxNjE3LDEyIEBACiAJc2MtPnNjX3Ry
YW5zZmVyLmRhdGFfcHRyID0gc2MtPnNjX3FkYXRhOwogCiAJRFBSSU5URigi
Y21kX2RhdGFbMF09MHglMDJ4LCBkYXRhX3JlbT0weCUwOHhcbiIsCi0JICAg
IHNjLT5zY19jbWRfZGF0YVswXSwgc2MtPnNjX3RyYW5zZmVyLmRhdGFfcmVt
KTsKKwkgICAgc2MtPnNjX2Nidy0+Q0JXQ0RCWzBdLCBzYy0+c2NfdHJhbnNm
ZXIuZGF0YV9yZW0pOwogCi0Jc3dpdGNoIChzYy0+c2NfY21kX2RhdGFbMF0p
IHsKKwlzd2l0Y2ggKHNjLT5zY19jYnctPkNCV0NEQlswXSkgewogCWNhc2Ug
U0NfSU5RVUlSWToKIAkJc2MtPnNjX3RyYW5zZmVyLmNtZF9kaXIgPSBESVJf
V1JJVEU7Ci0JCWVycm9yID0gdXN0b3JhZ2VfZnNfbWluX2xlbihzYywgc2Mt
PnNjX2NtZF9kYXRhWzRdLCAtMVUpOworCQllcnJvciA9IHVzdG9yYWdlX2Zz
X21pbl9sZW4oc2MsIHNjLT5zY19jYnctPkNCV0NEQls0XSwgLTFVKTsKIAkJ
aWYgKGVycm9yKSB7CiAJCQlicmVhazsKIAkJfQpAQCAtMTYzMyw3ICsxNjM3
LDcgQEAKIAogCWNhc2UgU0NfTU9ERV9TRUxFQ1RfNjoKIAkJc2MtPnNjX3Ry
YW5zZmVyLmNtZF9kaXIgPSBESVJfUkVBRDsKLQkJZXJyb3IgPSB1c3RvcmFn
ZV9mc19taW5fbGVuKHNjLCBzYy0+c2NfY21kX2RhdGFbNF0sIC0xVSk7CisJ
CWVycm9yID0gdXN0b3JhZ2VfZnNfbWluX2xlbihzYywgc2MtPnNjX2Nidy0+
Q0JXQ0RCWzRdLCAtMVUpOwogCQlpZiAoZXJyb3IpIHsKIAkJCWJyZWFrOwog
CQl9CkBAIC0xNjQ5LDcgKzE2NTMsNyBAQAogCWNhc2UgU0NfTU9ERV9TRUxF
Q1RfMTA6CiAJCXNjLT5zY190cmFuc2Zlci5jbWRfZGlyID0gRElSX1JFQUQ7
CiAJCWVycm9yID0gdXN0b3JhZ2VfZnNfbWluX2xlbihzYywKLQkJICAgIGdl
dF9iZTE2KCZzYy0+c2NfY21kX2RhdGFbN10pLCAtMVUpOworCQkgICAgZ2V0
X2JlMTYoJnNjLT5zY19jYnctPkNCV0NEQls3XSksIC0xVSk7CiAJCWlmIChl
cnJvcikgewogCQkJYnJlYWs7CiAJCX0KQEAgLTE2NjQsNyArMTY2OCw3IEBA
CiAKIAljYXNlIFNDX01PREVfU0VOU0VfNjoKIAkJc2MtPnNjX3RyYW5zZmVy
LmNtZF9kaXIgPSBESVJfV1JJVEU7Ci0JCWVycm9yID0gdXN0b3JhZ2VfZnNf
bWluX2xlbihzYywgc2MtPnNjX2NtZF9kYXRhWzRdLCAtMVUpOworCQllcnJv
ciA9IHVzdG9yYWdlX2ZzX21pbl9sZW4oc2MsIHNjLT5zY19jYnctPkNCV0NE
Qls0XSwgLTFVKTsKIAkJaWYgKGVycm9yKSB7CiAJCQlicmVhazsKIAkJfQpA
QCAtMTY4MCw3ICsxNjg0LDcgQEAKIAljYXNlIFNDX01PREVfU0VOU0VfMTA6
CiAJCXNjLT5zY190cmFuc2Zlci5jbWRfZGlyID0gRElSX1dSSVRFOwogCQll
cnJvciA9IHVzdG9yYWdlX2ZzX21pbl9sZW4oc2MsCi0JCSAgICBnZXRfYmUx
Nigmc2MtPnNjX2NtZF9kYXRhWzddKSwgLTFVKTsKKwkJICAgIGdldF9iZTE2
KCZzYy0+c2NfY2J3LT5DQldDREJbN10pLCAtMVUpOwogCQlpZiAoZXJyb3Ip
IHsKIAkJCWJyZWFrOwogCQl9CkBAIC0xNzA4LDcgKzE3MTIsNyBAQAogCQli
cmVhazsKIAogCWNhc2UgU0NfUkVBRF82OgotCQlpID0gc2MtPnNjX2NtZF9k
YXRhWzRdOworCQlpID0gc2MtPnNjX2Nidy0+Q0JXQ0RCWzRdOwogCQlzYy0+
c2NfdHJhbnNmZXIuY21kX2RpciA9IERJUl9XUklURTsKIAkJdGVtcCA9ICgo
aSA9PSAwKSA/IDI1NlVMIDogaSk7CiAJCWVycm9yID0gdXN0b3JhZ2VfZnNf
bWluX2xlbihzYywgdGVtcCA8PCA5LCBtYXNrOSk7CkBAIC0xNzI2LDcgKzE3
MzAsNyBAQAogCiAJY2FzZSBTQ19SRUFEXzEwOgogCQlzYy0+c2NfdHJhbnNm
ZXIuY21kX2RpciA9IERJUl9XUklURTsKLQkJdGVtcCA9IGdldF9iZTE2KCZz
Yy0+c2NfY21kX2RhdGFbN10pOworCQl0ZW1wID0gZ2V0X2JlMTYoJnNjLT5z
Y19jYnctPkNCV0NEQls3XSk7CiAJCWVycm9yID0gdXN0b3JhZ2VfZnNfbWlu
X2xlbihzYywgdGVtcCA8PCA5LCBtYXNrOSk7CiAJCWlmIChlcnJvcikgewog
CQkJYnJlYWs7CkBAIC0xNzQyLDEwICsxNzQ2LDEwIEBACiAKIAljYXNlIFND
X1JFQURfMTI6CiAJCXNjLT5zY190cmFuc2Zlci5jbWRfZGlyID0gRElSX1dS
SVRFOwotCQl0ZW1wID0gZ2V0X2JlMzIoJnNjLT5zY19jbWRfZGF0YVs2XSk7
CisJCXRlbXAgPSBnZXRfYmUzMigmc2MtPnNjX2Nidy0+Q0JXQ0RCWzZdKTsK
IAkJaWYgKHRlbXAgPj0gKDFVTCA8PCAoMzIgLSA5KSkpIHsKIAkJCS8qIG51
bWVyaWNhbCBvdmVyZmxvdyAqLwotCQkJc2MtPnNjX2Nzdy5iQ1NXU3RhdHVz
ID0gQ1NXU1RBVFVTX0ZBSUxFRDsKKwkJCXNjLT5zY19jc3ctPmJDU1dTdGF0
dXMgPSBDU1dTVEFUVVNfRkFJTEVEOwogCQkJZXJyb3IgPSAxOwogCQkJYnJl
YWs7CiAJCX0KQEAgLTE3NzYsNyArMTc4MCw3IEBACiAJY2FzZSBTQ19SRUFE
X0ZPUk1BVF9DQVBBQ0lUSUVTOgogCQlzYy0+c2NfdHJhbnNmZXIuY21kX2Rp
ciA9IERJUl9XUklURTsKIAkJZXJyb3IgPSB1c3RvcmFnZV9mc19taW5fbGVu
KHNjLAotCQkgICAgZ2V0X2JlMTYoJnNjLT5zY19jbWRfZGF0YVs3XSksIC0x
VSk7CisJCSAgICBnZXRfYmUxNigmc2MtPnNjX2Nidy0+Q0JXQ0RCWzddKSwg
LTFVKTsKIAkJaWYgKGVycm9yKSB7CiAJCQlicmVhazsKIAkJfQpAQCAtMTc5
MSw3ICsxNzk1LDcgQEAKIAogCWNhc2UgU0NfUkVRVUVTVF9TRU5TRToKIAkJ
c2MtPnNjX3RyYW5zZmVyLmNtZF9kaXIgPSBESVJfV1JJVEU7Ci0JCWVycm9y
ID0gdXN0b3JhZ2VfZnNfbWluX2xlbihzYywgc2MtPnNjX2NtZF9kYXRhWzRd
LCAtMVUpOworCQllcnJvciA9IHVzdG9yYWdlX2ZzX21pbl9sZW4oc2MsIHNj
LT5zY19jYnctPkNCV0NEQls0XSwgLTFVKTsKIAkJaWYgKGVycm9yKSB7CiAJ
CQlicmVhazsKIAkJfQpAQCAtMTg2MCw3ICsxODY0LDcgQEAKIAkJYnJlYWs7
CiAKIAljYXNlIFNDX1dSSVRFXzY6Ci0JCWkgPSBzYy0+c2NfY21kX2RhdGFb
NF07CisJCWkgPSBzYy0+c2NfY2J3LT5DQldDREJbNF07CiAJCXNjLT5zY190
cmFuc2Zlci5jbWRfZGlyID0gRElSX1JFQUQ7CiAJCXRlbXAgPSAoKGkgPT0g
MCkgPyAyNTZVTCA6IGkpOwogCQllcnJvciA9IHVzdG9yYWdlX2ZzX21pbl9s
ZW4oc2MsIHRlbXAgPDwgOSwgbWFzazkpOwpAQCAtMTg3OCw3ICsxODgyLDcg
QEAKIAogCWNhc2UgU0NfV1JJVEVfMTA6CiAJCXNjLT5zY190cmFuc2Zlci5j
bWRfZGlyID0gRElSX1JFQUQ7Ci0JCXRlbXAgPSBnZXRfYmUxNigmc2MtPnNj
X2NtZF9kYXRhWzddKTsKKwkJdGVtcCA9IGdldF9iZTE2KCZzYy0+c2NfY2J3
LT5DQldDREJbN10pOwogCQllcnJvciA9IHVzdG9yYWdlX2ZzX21pbl9sZW4o
c2MsIHRlbXAgPDwgOSwgbWFzazkpOwogCQlpZiAoZXJyb3IpIHsKIAkJCWJy
ZWFrOwpAQCAtMTg5NCwxMCArMTg5OCwxMCBAQAogCiAJY2FzZSBTQ19XUklU
RV8xMjoKIAkJc2MtPnNjX3RyYW5zZmVyLmNtZF9kaXIgPSBESVJfUkVBRDsK
LQkJdGVtcCA9IGdldF9iZTMyKCZzYy0+c2NfY21kX2RhdGFbNl0pOworCQl0
ZW1wID0gZ2V0X2JlMzIoJnNjLT5zY19jYnctPkNCV0NEQls2XSk7CiAJCWlm
ICh0ZW1wID4gKG1hc2s5ID4+IDkpKSB7CiAJCQkvKiBudW1lcmljYWwgb3Zl
cmZsb3cgKi8KLQkJCXNjLT5zY19jc3cuYkNTV1N0YXR1cyA9IENTV1NUQVRV
U19GQUlMRUQ7CisJCQlzYy0+c2NfY3N3LT5iQ1NXU3RhdHVzID0gQ1NXU1RB
VFVTX0ZBSUxFRDsKIAkJCWVycm9yID0gMTsKIAkJCWJyZWFrOwogCQl9Cklu
ZGV4OiBzeXMvZGV2L3VzYi91c2JfbXNjdGVzdC5jCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHN5cy9kZXYvdXNiL3VzYl9tc2N0ZXN0LmMJKHJldmlz
aW9uIDI1OTQ0OSkKKysrIHN5cy9kZXYvdXNiL3VzYl9tc2N0ZXN0LmMJKHJl
dmlzaW9uIDI1OTQ5NCkKQEAgLTEzOSw4ICsxMzksOCBAQAogc3RydWN0IGJi
Yl90cmFuc2ZlciB7CiAJc3RydWN0IG10eCBtdHg7CiAJc3RydWN0IGN2IGN2
OwotCXN0cnVjdCBiYmJfY2J3IGNidzsKLQlzdHJ1Y3QgYmJiX2NzdyBjc3c7
CisJc3RydWN0IGJiYl9jYncgKmNidzsKKwlzdHJ1Y3QgYmJiX2NzdyAqY3N3
OwogCiAJc3RydWN0IHVzYl94ZmVyICp4ZmVyW1NUX01BWF07CiAKQEAgLTE1
OCw3ICsxNTgsNyBAQAogCXVpbnQ4X3QJc3RhdHVzX3RyeTsKIAlpbnQJZXJy
b3I7CiAKLQl1aW50OF90CWJ1ZmZlcltTQ1NJX01BWF9MRU5dIF9fYWxpZ25l
ZCg0KTsKKwl1aW50OF90CSpidWZmZXI7CiB9OwogCiBzdGF0aWMgdXNiX2Nh
bGxiYWNrX3QgYmJiX2NvbW1hbmRfY2FsbGJhY2s7CkBAIC0xODQsNyArMTg0
LDYgQEAKIAkJLmVuZHBvaW50ID0gVUVfQUREUl9BTlksCiAJCS5kaXJlY3Rp
b24gPSBVRV9ESVJfT1VULAogCQkuYnVmc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg
YmJiX2NidyksCi0JCS5mbGFncyA9IHsuZXh0X2J1ZmZlciA9IDEsfSwKIAkJ
LmNhbGxiYWNrID0gJmJiYl9jb21tYW5kX2NhbGxiYWNrLAogCQkudGltZW91
dCA9IDQgKiBVU0JfTVNfSFosCS8qIDQgc2Vjb25kcyAqLwogCX0sCkBAIC0x
OTMsOCArMTkyLDggQEAKIAkJLnR5cGUgPSBVRV9CVUxLLAogCQkuZW5kcG9p
bnQgPSBVRV9BRERSX0FOWSwKIAkJLmRpcmVjdGlvbiA9IFVFX0RJUl9JTiwK
LQkJLmJ1ZnNpemUgPSBCVUxLX1NJWkUsCi0JCS5mbGFncyA9IHsuZXh0X2J1
ZmZlciA9IDEsLnByb3h5X2J1ZmZlciA9IDEsLnNob3J0X3hmZXJfb2sgPSAx
LH0sCisJCS5idWZzaXplID0gTUFYKFNDU0lfTUFYX0xFTiwgQlVMS19TSVpF
KSwKKwkJLmZsYWdzID0gey5wcm94eV9idWZmZXIgPSAxLC5zaG9ydF94ZmVy
X29rID0gMSx9LAogCQkuY2FsbGJhY2sgPSAmYmJiX2RhdGFfcmVhZF9jYWxs
YmFjaywKIAkJLnRpbWVvdXQgPSA0ICogVVNCX01TX0haLAkvKiA0IHNlY29u
ZHMgKi8KIAl9LApAQCAtMjMyLDcgKzIzMSw3IEBACiAJCS5lbmRwb2ludCA9
IFVFX0FERFJfQU5ZLAogCQkuZGlyZWN0aW9uID0gVUVfRElSX0lOLAogCQku
YnVmc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYmJiX2NzdyksCi0JCS5mbGFncyA9
IHsuZXh0X2J1ZmZlciA9IDEsLnNob3J0X3hmZXJfb2sgPSAxLH0sCisJCS5m
bGFncyA9IHsuc2hvcnRfeGZlcl9vayA9IDEsfSwKIAkJLmNhbGxiYWNrID0g
JmJiYl9zdGF0dXNfY2FsbGJhY2ssCiAJCS50aW1lb3V0ID0gMSAqIFVTQl9N
U19IWiwJLyogMSBzZWNvbmQgICovCiAJfSwKQEAgLTI0MSw3ICsyNDAsNiBA
QAogc3RhdGljIHZvaWQKIGJiYl9kb25lKHN0cnVjdCBiYmJfdHJhbnNmZXIg
KnNjLCBpbnQgZXJyb3IpCiB7Ci0KIAlzYy0+ZXJyb3IgPSBlcnJvcjsKIAlz
Yy0+c3RhdGUgPSBTVF9DT01NQU5EOwogCXNjLT5zdGF0dXNfdHJ5ID0gMTsK
QEAgLTI5MCwxOCArMjg4LDE3IEBACiAKIAljYXNlIFVTQl9TVF9TRVRVUDoK
IAkJc2MtPnN0YXR1c190cnkgPSAwOwotCQl0YWcgPSBVR0VURFcoc2MtPmNi
dy5kQ0JXVGFnKSArIDE7Ci0JCVVTRVREVyhzYy0+Y2J3LmRDQldTaWduYXR1
cmUsIENCV1NJR05BVFVSRSk7Ci0JCVVTRVREVyhzYy0+Y2J3LmRDQldUYWcs
IHRhZyk7Ci0JCVVTRVREVyhzYy0+Y2J3LmRDQldEYXRhVHJhbnNmZXJMZW5n
dGgsICh1aW50MzJfdClzYy0+ZGF0YV9sZW4pOwotCQlzYy0+Y2J3LmJDQldG
bGFncyA9ICgoc2MtPmRpciA9PSBESVJfSU4pID8gQ0JXRkxBR1NfSU4gOiBD
QldGTEFHU19PVVQpOwotCQlzYy0+Y2J3LmJDQldMVU4gPSBzYy0+bHVuOwot
CQlzYy0+Y2J3LmJDREJMZW5ndGggPSBzYy0+Y21kX2xlbjsKLQkJaWYgKHNj
LT5jYncuYkNEQkxlbmd0aCA+IHNpemVvZihzYy0+Y2J3LkNCV0NEQikpIHsK
LQkJCXNjLT5jYncuYkNEQkxlbmd0aCA9IHNpemVvZihzYy0+Y2J3LkNCV0NE
Qik7CisJCXRhZyA9IFVHRVREVyhzYy0+Y2J3LT5kQ0JXVGFnKSArIDE7CisJ
CVVTRVREVyhzYy0+Y2J3LT5kQ0JXU2lnbmF0dXJlLCBDQldTSUdOQVRVUkUp
OworCQlVU0VURFcoc2MtPmNidy0+ZENCV1RhZywgdGFnKTsKKwkJVVNFVERX
KHNjLT5jYnctPmRDQldEYXRhVHJhbnNmZXJMZW5ndGgsICh1aW50MzJfdClz
Yy0+ZGF0YV9sZW4pOworCQlzYy0+Y2J3LT5iQ0JXRmxhZ3MgPSAoKHNjLT5k
aXIgPT0gRElSX0lOKSA/IENCV0ZMQUdTX0lOIDogQ0JXRkxBR1NfT1VUKTsK
KwkJc2MtPmNidy0+YkNCV0xVTiA9IHNjLT5sdW47CisJCXNjLT5jYnctPmJD
REJMZW5ndGggPSBzYy0+Y21kX2xlbjsKKwkJaWYgKHNjLT5jYnctPmJDREJM
ZW5ndGggPiBzaXplb2Yoc2MtPmNidy0+Q0JXQ0RCKSkgeworCQkJc2MtPmNi
dy0+YkNEQkxlbmd0aCA9IHNpemVvZihzYy0+Y2J3LT5DQldDREIpOwogCQkJ
RFBSSU5URk4oMCwgIlRydW5jYXRpbmcgbG9uZyBjb21tYW5kXG4iKTsKIAkJ
fQotCQl1c2JkX3hmZXJfc2V0X2ZyYW1lX2RhdGEoeGZlciwgMCwgJnNjLT5j
YncsIHNpemVvZihzYy0+Y2J3KSk7CiAJCXVzYmRfdHJhbnNmZXJfc3VibWl0
KHhmZXIpOwogCQlicmVhazsKIApAQCAtNDMwLDkgKzQyNyw5IEBACiAKIAkJ
LyogdmVyeSBzaW1wbGUgc3RhdHVzIGNoZWNrICovCiAKLQkJaWYgKGFjdGxl
biA8IChpbnQpc2l6ZW9mKHNjLT5jc3cpKSB7CisJCWlmIChhY3RsZW4gPCAo
aW50KXNpemVvZihzdHJ1Y3QgYmJiX2NzdykpIHsKIAkJCWJiYl9kb25lKHNj
LCBVU0JfRVJSX1NIT1JUX1hGRVIpOwotCQl9IGVsc2UgaWYgKHNjLT5jc3cu
YkNTV1N0YXR1cyA9PSBDU1dTVEFUVVNfR09PRCkgeworCQl9IGVsc2UgaWYg
KHNjLT5jc3ctPmJDU1dTdGF0dXMgPT0gQ1NXU1RBVFVTX0dPT0QpIHsKIAkJ
CWJiYl9kb25lKHNjLCAwKTsJLyogc3VjY2VzcyAqLwogCQl9IGVsc2Ugewog
CQkJYmJiX2RvbmUoc2MsIEVSUl9DU1dfRkFJTEVEKTsJLyogZXJyb3IgKi8K
QEAgLTQ0MCw3ICs0MzcsNiBAQAogCQlicmVhazsKIAogCWNhc2UgVVNCX1NU
X1NFVFVQOgotCQl1c2JkX3hmZXJfc2V0X2ZyYW1lX2RhdGEoeGZlciwgMCwg
JnNjLT5jc3csIHNpemVvZihzYy0+Y3N3KSk7CiAJCXVzYmRfdHJhbnNmZXJf
c3VibWl0KHhmZXIpOwogCQlicmVhazsKIApAQCAtNDc4LDkgKzQ3NCw5IEBA
CiAJc2MtPmRhdGFfdGltZW91dCA9IChkYXRhX3RpbWVvdXQgKyBVU0JfTVNf
SFopOwogCXNjLT5hY3RsZW4gPSAwOwogCXNjLT5jbWRfbGVuID0gY21kX2xl
bjsKLQltZW1zZXQoJnNjLT5jYncuQ0JXQ0RCLCAwLCBzaXplb2Yoc2MtPmNi
dy5DQldDREIpKTsKLQltZW1jcHkoJnNjLT5jYncuQ0JXQ0RCLCBjbWRfcHRy
LCBjbWRfbGVuKTsKLQlEUFJJTlRGTigxLCAiU0NTSSBjbWQgPSAlKkRcbiIs
IChpbnQpY21kX2xlbiwgKGNoYXIgKilzYy0+Y2J3LkNCV0NEQiwgIjoiKTsK
KwltZW1zZXQoJnNjLT5jYnctPkNCV0NEQiwgMCwgc2l6ZW9mKHNjLT5jYnct
PkNCV0NEQikpOworCW1lbWNweSgmc2MtPmNidy0+Q0JXQ0RCLCBjbWRfcHRy
LCBjbWRfbGVuKTsKKwlEUFJJTlRGTigxLCAiU0NTSSBjbWQgPSAlKkRcbiIs
IChpbnQpY21kX2xlbiwgKGNoYXIgKilzYy0+Y2J3LT5DQldDREIsICI6Iik7
CiAKIAltdHhfbG9jaygmc2MtPm10eCk7CiAJdXNiZF90cmFuc2Zlcl9zdGFy
dChzYy0+eGZlcltzYy0+c3RhdGVdKTsKQEAgLTU0OSw2ICs1NDUsMTQgQEAK
IAkJYmJiX2RldGFjaChzYyk7CiAJCXJldHVybiAoTlVMTCk7CiAJfQorCS8q
IHN0b3JlIHBvaW50ZXIgdG8gRE1BIGJ1ZmZlcnMgKi8KKwlzYy0+YnVmZmVy
ID0gdXNiZF94ZmVyX2dldF9mcmFtZV9idWZmZXIoCisJICAgIHNjLT54ZmVy
W1NUX0RBVEFfUkRdLCAwKTsKKwlzYy0+Y2J3ID0gdXNiZF94ZmVyX2dldF9m
cmFtZV9idWZmZXIoCisJICAgIHNjLT54ZmVyW1NUX0NPTU1BTkRdLCAwKTsK
KwlzYy0+Y3N3ID0gdXNiZF94ZmVyX2dldF9mcmFtZV9idWZmZXIoCisJICAg
IHNjLT54ZmVyW1NUX1NUQVRVU10sIDApOworCiAJcmV0dXJuIChzYyk7CiB9
CiAK
--2120775178-1643984294-1389506282=:33519--
More information about the freebsd-usb
mailing list