Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Jan 2016 03:10:02 +0000
From:      "rpokala (Ravi Pokala)" <phabric-noreply@FreeBSD.org>
To:        freebsd-net@freebsd.org
Subject:   [Differential] [Updated, 335 lines] D1986: Teach lagg(4) to change MTU
Message-ID:  <ae0c3951d155fc575d5ae5a13c002e93@localhost.localdomain>
In-Reply-To: <differential-rev-PHID-DREV-i34kfg4qpajia7fo5u5l-req@FreeBSD.org>
References:  <differential-rev-PHID-DREV-i34kfg4qpajia7fo5u5l-req@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--b1_ae0c3951d155fc575d5ae5a13c002e93
Content-Type: text/plain; charset = "utf-8"
Content-Transfer-Encoding: 8bit

rpokala updated this revision to Diff 11984.
rpokala marked 8 inline comments as done.
rpokala added a comment.


  Address review comments from smh@, melifaro@, and hrs@.

REPOSITORY
  rS FreeBSD src repository

CHANGES SINCE LAST UPDATE
  https://reviews.freebsd.org/D1986?vs=11321&id=11984

BRANCH
  /head

REVISION DETAIL
  https://reviews.freebsd.org/D1986

AFFECTED FILES
  sys/kern/kern_condvar.c
  sys/net/if_lagg.c
  sys/net/if_lagg.h
  sys/sys/condvar.h

EMAIL PREFERENCES
  https://reviews.freebsd.org/settings/panel/emailpreferences/

To: rpokala, rstone, rpokala-panasas.com
Cc: smh, imp, melifaro, hrs, sbruno, lakshmi.n_msystechnologies.com, emaste, ae, freebsd-net-list

--b1_ae0c3951d155fc575d5ae5a13c002e93
Content-Type: text/x-patch; charset=utf-8; name="D1986.11984.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D1986.11984.patch"

ZGlmZiAtLWdpdCBhL3N5cy9zeXMvY29uZHZhci5oIGIvc3lzL3N5cy9jb25kdmFyLmgKLS0tIGEv
c3lzL3N5cy9jb25kdmFyLmgKKysrIGIvc3lzL3N5cy9jb25kdmFyLmgKQEAgLTYxLDYgKzYxLDcg
QEAKIAkgICAgc2JpbnRpbWVfdCBzYnQsIHNiaW50aW1lX3QgcHIsIGludCBmbGFncyk7CiAKIHZv
aWQJY3Zfc2lnbmFsKHN0cnVjdCBjdiAqY3ZwKTsKK2Jvb2wJY3ZfaGFzX3dhaXRlcnMoc3RydWN0
IGN2ICpjdnApOwogdm9pZAljdl9icm9hZGNhc3Rwcmkoc3RydWN0IGN2ICpjdnAsIGludCBwcmkp
OwogCiAjZGVmaW5lCWN2X3dhaXQoY3ZwLCBsb2NrKQkJCQkJCVwKZGlmZiAtLWdpdCBhL3N5cy9u
ZXQvaWZfbGFnZy5oIGIvc3lzL25ldC9pZl9sYWdnLmgKLS0tIGEvc3lzL25ldC9pZl9sYWdnLmgK
KysrIGIvc3lzL25ldC9pZl9sYWdnLmgKQEAgLTIxLDYgKzIxLDggQEAKICNpZm5kZWYgX05FVF9M
QUdHX0gKICNkZWZpbmUgX05FVF9MQUdHX0gKIAorI2luY2x1ZGUgPHN5cy9jb25kdmFyLmg+CisK
IC8qCiAgKiBHbG9iYWwgZGVmaW5pdGlvbnMKICAqLwpAQCAtMjA2LDE4ICsyMDgsNTYgQEAKIAlM
QUdHX0xMUVRZUEVfVklSVCwJLyogVGFzayByZWxhdGVkIHRvIGxhZ2cgaW50ZXJmYWNlIGl0c2Vs
ZiAqLwogfSBsYWdnX2xscXR5cGU7CiAKLS8qIExpc3Qgb2YgaW50ZXJmYWNlcyB0byBoYXZlIHRo
ZSBNQUMgYWRkcmVzcyBtb2RpZmllZCAqLwotc3RydWN0IGxhZ2dfbGxxIHsKKy8qIEFkZGluZyBu
ZXcgZW50cnkgaGVyZSwgU0hPVUxEIGFsc28gaGF2ZSByZWxldmFudCBlbnRyeSBpbiBsbHFfYWN0
aW9uICovCit0eXBlZGVmIGVudW0geworCUxBR0dfTExRX01JTiA9IDAsCisJTEFHR19MTFFfTExB
RERSID0gTEFHR19MTFFfTUlOLCAvKiBNQUMgQWRkcmVzcyBpbmRleCAqLworCUxBR0dfTExRX01U
VSwgLyogIE1UVSBpbmRleCAqLworCisJTEFHR19MTFFfTUFYIC8qIFRoaXMgU0hPVUxEIGJlIHRo
ZSBsYXN0IGVudHJ5ICovCit9IGxhZ2dfbGxxX2lkeDsKKworLyogQ29tbW9uIGxpc3QgZW50cnkg
ZGVmaW5pdGlvbiBmb3IgZWFjaCB0YXNrcSBvcGVyYXRpb24gKi8KK3N0cnVjdCBsYWdnX2xscV9z
bGlzdF9lbnRyeSB7CisJU0xJU1RfRU5UUlkobGFnZ19sbHFfc2xpc3RfZW50cnkpCWxscV9lbnRy
aWVzOworfTsKKworLyogQ29udGV4dCBmb3IgbGxhZGRyIGxscSBvcGVyYXRpb24gcGFydCBvZiBs
YWdnIHNvZnQgY29udGV4dCAqLworc3RydWN0IGxhZ2dfbGxhZGRyX2xscV9jdHh0IHsKKwlzdHJ1
Y3QgbGFnZ19sbHFfc2xpc3RfZW50cnkgbGxxX2NtbjsJLyogVGhpcyBTSE9VTEQgYmUgdGhlIGZp
cnN0CisJCQkJCQkgICBtZW1iZXIgKi8KIAlzdHJ1Y3QgaWZuZXQJCSpsbHFfaWZwOwogCXVpbnQ4
X3QJCQlsbHFfbGxhZGRyW0VUSEVSX0FERFJfTEVOXTsKIAlsYWdnX2xscXR5cGUJCWxscV90eXBl
OwotCVNMSVNUX0VOVFJZKGxhZ2dfbGxxKQlsbHFfZW50cmllczsKK307CisKKy8qIENvbnRleHQg
Zm9yIG10dSBsbHEgb3BlcmF0aW9uIHBhcnQgb2YgbGFnZyBzb2Z0IGNvbnRleHQgKi8KK3N0cnVj
dCBsYWdnX210dV9sbHFfY3R4dCB7CisJc3RydWN0IGxhZ2dfbGxxX3NsaXN0X2VudHJ5IGxscV9j
bW47CS8qIFRoaXMgU0hPVUxEIGJlIHRoZSBmaXJzdAorCQkJCQkJICAgbWVtYmVyICovCisJc3Ry
dWN0IGlmbmV0CQkqbGxxX2lmcDsKKwlzdHJ1Y3QgaWZyZXEJCWxscV9pZnI7CisJdWludDMyX3QJ
CWxscV9vbGRfbXR1OworCWludAkJCSgqbGxxX2lvY3RsKShzdHJ1Y3QgaWZuZXQgKiwgdV9sb25n
LCBjYWRkcl90KTsKIH07CiAKIHN0cnVjdCBsYWdnX2NvdW50ZXJzIHsKIAl1aW50NjRfdAl2YWxb
SUZDT1VOVEVSU107CiB9OwogCisvKiBDb25kaXRpb25hbCB2YXJpYWJsZXMgY29udGV4dCBmb3Ig
bGFnZyBvcGVyYXRpb25zICovCitzdHJ1Y3QgbGFnZ19zaWduYWwgeworCXN0cnVjdCBtdHgJCWxv
Y2s7CisJc3RydWN0IGN2CQljdjsKK307CisKKy8qIExhZ2cgTVRVIGNvbnRleHQgKi8KK3N0cnVj
dCBsYWdnX210dV9jdHh0IHsKKwlzdHJ1Y3QgbGFnZ19zaWduYWwJbXR1X3NlcmlhbDsJLyogU2Vy
aWFsaXplIGJldHdlZW4gdGhlIGNvbW1hbmRzICovCisJc3RydWN0IGxhZ2dfc2lnbmFsCW10dV9z
eW5jOwkvKiBTeW5jaHJvbml6ZSBmb3IgY29tbWFuZCBjb21wbGV0aW9uICovCisJaW50CQkJbXR1
X2NtZF9yZXQ7Cit9OworCiBzdHJ1Y3QgbGFnZ19zb2Z0YyB7CiAJc3RydWN0IGlmbmV0CQkJKnNj
X2lmcDsJLyogdmlydHVhbCBpbnRlcmZhY2UgKi8KIAlzdHJ1Y3Qgcm1sb2NrCQkJc2NfbXR4OwpA
QCAtMjM1LDkgKzI3NSwxMSBAQAogCVNMSVNUX0hFQUQoX190cGxoZCwgbGFnZ19wb3J0KQlzY19w
b3J0czsJLyogbGlzdCBvZiBpbnRlcmZhY2VzICovCiAJU0xJU1RfRU5UUlkobGFnZ19zb2Z0YykJ
c2NfZW50cmllczsKIAotCXN0cnVjdCB0YXNrCQkJc2NfbGxhZGRyX3Rhc2s7Ci0JU0xJU1RfSEVB
RChfX2xscWhkLCBsYWdnX2xscSkJc2NfbGxxX2hlYWQ7CS8qIGludGVyZmFjZXMgdG8gcHJvZ3Jh
bQotCQkJCQkJCSAgIHRoZSBsbGFkZHIgb24gKi8KKwlzdHJ1Y3QgdGFzawkJCXNjX2xscV90YXNr
OwkvKiBTWU5DICYgQVNZTkMgb3BzIGVucXVldWVkIGhlcmUgKi8KKwlzdHJ1Y3QgbGFnZ19tdHVf
Y3R4dAkJc2NfbXR1X2N0eHQ7CS8qIE1UVSBwcm9ncmFtbWluZyAqLworCS8qICBMaXN0IG9mIExM
UXMgKi8KKwlTTElTVF9IRUFEKF9fbGxxaGQsIGxhZ2dfbGxxX3NsaXN0X2VudHJ5KQlzY19sbHFb
TEFHR19MTFFfTUFYXTsKKwogCWV2ZW50aGFuZGxlcl90YWcgdmxhbl9hdHRhY2g7CiAJZXZlbnRo
YW5kbGVyX3RhZyB2bGFuX2RldGFjaDsKIAlzdHJ1Y3QgY2FsbG91dAkJCXNjX2NhbGxvdXQ7CmRp
ZmYgLS1naXQgYS9zeXMvbmV0L2lmX2xhZ2cuYyBiL3N5cy9uZXQvaWZfbGFnZy5jCi0tLSBhL3N5
cy9uZXQvaWZfbGFnZy5jCisrKyBiL3N5cy9uZXQvaWZfbGFnZy5jCkBAIC0xMDEsNyArMTAxLDEx
IEBACiBzdGF0aWMgdm9pZAlsYWdnX2xsYWRkcihzdHJ1Y3QgbGFnZ19zb2Z0YyAqLCB1aW50OF90
ICopOwogc3RhdGljIHZvaWQJbGFnZ19jYXBhYmlsaXRpZXMoc3RydWN0IGxhZ2dfc29mdGMgKik7
CiBzdGF0aWMgdm9pZAlsYWdnX3BvcnRfbGxhZGRyKHN0cnVjdCBsYWdnX3BvcnQgKiwgdWludDhf
dCAqLCBsYWdnX2xscXR5cGUpOwotc3RhdGljIHZvaWQJbGFnZ19wb3J0X3NldGxsYWRkcih2b2lk
ICosIGludCk7CitzdGF0aWMgdm9pZAlsYWdnX3BvcnRfb3BzKHZvaWQgKiwgaW50KTsKK3N0YXRp
YyB2b2lkCWxhZ2dfbGxxX2FjdGlvbl9tdHUoc3RydWN0IGxhZ2dfc29mdGMgKiwKKwkJc3RydWN0
IGxhZ2dfbGxxX3NsaXN0X2VudHJ5ICopOworc3RhdGljIHZvaWQJbGFnZ19sbHFfYWN0aW9uX2xs
YWRkcihzdHJ1Y3QgbGFnZ19zb2Z0YyAqLAorCQlzdHJ1Y3QgbGFnZ19sbHFfc2xpc3RfZW50cnkg
Kik7CiBzdGF0aWMgaW50CWxhZ2dfcG9ydF9jcmVhdGUoc3RydWN0IGxhZ2dfc29mdGMgKiwgc3Ry
dWN0IGlmbmV0ICopOwogc3RhdGljIGludAlsYWdnX3BvcnRfZGVzdHJveShzdHJ1Y3QgbGFnZ19w
b3J0ICosIGludCk7CiBzdGF0aWMgc3RydWN0IG1idWYgKmxhZ2dfaW5wdXQoc3RydWN0IGlmbmV0
ICosIHN0cnVjdCBtYnVmICopOwpAQCAtMTMwLDYgKzEzNCw5IEBACiBzdGF0aWMgdm9pZAlsYWdn
X21lZGlhX3N0YXR1cyhzdHJ1Y3QgaWZuZXQgKiwgc3RydWN0IGlmbWVkaWFyZXEgKik7CiBzdGF0
aWMgc3RydWN0IGxhZ2dfcG9ydCAqbGFnZ19saW5rX2FjdGl2ZShzdHJ1Y3QgbGFnZ19zb2Z0YyAq
LAogCSAgICBzdHJ1Y3QgbGFnZ19wb3J0ICopOworc3RhdGljIGludAlsYWdnX2NoYW5nZV9tdHUo
c3RydWN0IGlmbmV0ICosIHN0cnVjdCBpZnJlcSAqKTsKK3N0YXRpYyB2b2lkCV9sYWdnX2xscV9j
bGVhbnVwKHN0cnVjdCBsYWdnX2xscV9zbGlzdF9lbnRyeSAqKTsKK3N0YXRpYyB2b2lkCWxhZ2df
bGxxX2NsZWFudXAoc3RydWN0IGxhZ2dfc29mdGMgKiwgbGFnZ19sbHFfaWR4KTsKIAogLyogU2lt
cGxlIHJvdW5kIHJvYmluICovCiBzdGF0aWMgdm9pZAlsYWdnX3JyX2F0dGFjaChzdHJ1Y3QgbGFn
Z19zb2Z0YyAqKTsKQEAgLTE2NSw2ICsxNzIsMjQgQEAKIAkJICAgIHN0cnVjdCBtYnVmICopOwog
c3RhdGljIHZvaWQJbGFnZ19sYWNwX2xsYWRkcihzdHJ1Y3QgbGFnZ19zb2Z0YyAqKTsKIAorLyoK
KyAqIFRoaXMgYWN0aW9uIGhhbmRsZXIgc2hhbGwgYmUgY2FsbGVkIGZyb20gdGFza3F1ZXVlIGhh
bmRsZXIgZm9yIGVhY2gKKyAqIHN1Ym1pdHRlZCBvcGVyYXRpb24KKyAqLwordHlwZWRlZiB2b2lk
ICgqbGFnZ19sbHFfYWN0aW9uKShzdHJ1Y3QgbGFnZ19zb2Z0YyAqLAorCQlzdHJ1Y3QgbGFnZ19s
bHFfc2xpc3RfZW50cnkgKik7CisKKy8qCisgKiBsYWdnIGxscSBhY3Rpb24gVGFibGU6IENhbGxl
ZCBhdCB0aGUgdGFza3F1ZXVlIGNvbnRleHQgZm9yIGVhY2gKKyAqIHN1Ym1pdHRlZCBvcGVyYXRp
b25zLgorICogQ29udGVudHMgU0hPVUxEIGJlIGluIHN5bmMgd2l0aCBsYWdnX2xscV9pZHggaW5k
ZXguCisgKiBOZXcgZW50cmllcyBzaGFsbCBiZSBhcHBlbmRlZC4KKyAqLworc3RhdGljIGNvbnN0
IGxhZ2dfbGxxX2FjdGlvbiBsbHFfYWN0aW9uW0xBR0dfTExRX01BWF0gPSB7CisJCWxhZ2dfbGxx
X2FjdGlvbl9sbGFkZHIsIC8qIE1hcHMgdG8gTEFHR19MTFFfTExBRERSIGluZGV4ICovCisJCWxh
Z2dfbGxxX2FjdGlvbl9tdHUsIC8qIE1hcHMgdG8gTEFHR19MTFFfTVRVIGluZGV4ICovCit9Owor
CiAvKiBsYWdnIHByb3RvY29sIHRhYmxlICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGxhZ2dfcHJv
dG8gewogCWxhZ2dfcHJvdG8JcHJfbnVtOwpAQCAtNDg3LDcgKzUxMiw3IEBACiAKIAlMQUdHX0xP
Q0tfSU5JVChzYyk7CiAJU0xJU1RfSU5JVCgmc2MtPnNjX3BvcnRzKTsKLQlUQVNLX0lOSVQoJnNj
LT5zY19sbGFkZHJfdGFzaywgMCwgbGFnZ19wb3J0X3NldGxsYWRkciwgc2MpOworCVRBU0tfSU5J
VCgmc2MtPnNjX2xscV90YXNrLCAwLCBsYWdnX3BvcnRfb3BzLCBzYyk7CiAKIAkvKiBJbml0aWFs
aXNlIHBzZXVkbyBtZWRpYSB0eXBlcyAqLwogCWlmbWVkaWFfaW5pdCgmc2MtPnNjX21lZGlhLCAw
LCBsYWdnX21lZGlhX2NoYW5nZSwKQEAgLTUwNSw2ICs1MzAsMTMgQEAKIAlpZnAtPmlmX2ZsYWdz
ID0gSUZGX1NJTVBMRVggfCBJRkZfQlJPQURDQVNUIHwgSUZGX01VTFRJQ0FTVDsKIAlpZnAtPmlm
X2NhcGVuYWJsZSA9IGlmcC0+aWZfY2FwYWJpbGl0aWVzID0gSUZDQVBfSFdTVEFUUzsKIAorCW10
eF9pbml0KCZzYy0+c2NfbXR1X2N0eHQubXR1X3N5bmMubG9jaywgaWZwLT5pZl94bmFtZSwKKwkg
ICAgIm10dV9zeW5jX2xvY2siLCBNVFhfREVGKTsKKwltdHhfaW5pdCgmc2MtPnNjX210dV9jdHh0
Lm10dV9zZXJpYWwubG9jaywgaWZwLT5pZl94bmFtZSwKKwkgICAgIm10dV9zZXJpYWxfbG9jayIs
IE1UWF9ERUYpOworCWN2X2luaXQoJnNjLT5zY19tdHVfY3R4dC5tdHVfc3luYy5jdiwgIm10dV9z
eW5jX2N2Iik7CisJY3ZfaW5pdCgmc2MtPnNjX210dV9jdHh0Lm10dV9zZXJpYWwuY3YsICJtdHVf
c2VyaWFsX2N2Iik7CisKIAkvKgogCSAqIEF0dGFjaCBhcyBhbiBvcmRpbmFyeSBldGhlcm5ldCBk
ZXZpY2UsIGNoaWxkcmVuIHdpbGwgYmUgYXR0YWNoZWQKIAkgKiBhcyBzcGVjaWFsIGRldmljZSBJ
RlRfSUVFRTgwMjNBRExBRy4KQEAgLTU1Myw3ICs1ODUsMTEgQEAKIAlTTElTVF9SRU1PVkUoJlZf
bGFnZ19saXN0LCBzYywgbGFnZ19zb2Z0Yywgc2NfZW50cmllcyk7CiAJTEFHR19MSVNUX1VOTE9D
SygpOwogCi0JdGFza3F1ZXVlX2RyYWluKHRhc2txdWV1ZV9zd2ksICZzYy0+c2NfbGxhZGRyX3Rh
c2spOworCXRhc2txdWV1ZV9kcmFpbih0YXNrcXVldWVfc3dpLCAmc2MtPnNjX2xscV90YXNrKTsK
Kwljdl9kZXN0cm95KCZzYy0+c2NfbXR1X2N0eHQubXR1X3N5bmMuY3YpOworCWN2X2Rlc3Ryb3ko
JnNjLT5zY19tdHVfY3R4dC5tdHVfc2VyaWFsLmN2KTsKKwltdHhfZGVzdHJveSgmc2MtPnNjX210
dV9jdHh0Lm10dV9zeW5jLmxvY2spOworCW10eF9kZXN0cm95KCZzYy0+c2NfbXR1X2N0eHQubXR1
X3NlcmlhbC5sb2NrKTsKIAlMQUdHX0xPQ0tfREVTVFJPWShzYyk7CiAJZnJlZShzYywgTV9ERVZC
VUYpOwogfQpAQCAtNjQ1LDcgKzY4MSw4IEBACiB7CiAJc3RydWN0IGxhZ2dfc29mdGMgKnNjID0g
bHAtPmxwX3NvZnRjOwogCXN0cnVjdCBpZm5ldCAqaWZwID0gbHAtPmxwX2lmcDsKLQlzdHJ1Y3Qg
bGFnZ19sbHEgKmxscTsKKwlzdHJ1Y3QgbGFnZ19sbHFfc2xpc3RfZW50cnkgKmNtbl9sbHE7CisJ
c3RydWN0IGxhZ2dfbGxhZGRyX2xscV9jdHh0ICpsbHFfY3R4dDsKIAogCUxBR0dfV0xPQ0tfQVNT
RVJUKHNjKTsKIApAQCAtNjU4LDYyICs2OTUsMjIyIEBACiAJCXJldHVybjsKIAogCS8qIENoZWNr
IHRvIG1ha2Ugc3VyZSBpdHMgbm90IGFscmVhZHkgcXVldWVkIHRvIGJlIGNoYW5nZWQgKi8KLQlT
TElTVF9GT1JFQUNIKGxscSwgJnNjLT5zY19sbHFfaGVhZCwgbGxxX2VudHJpZXMpIHsKLQkJaWYg
KGxscS0+bGxxX2lmcCA9PSBpZnApIHsKKwlTTElTVF9GT1JFQUNIKGNtbl9sbHEsICZzYy0+c2Nf
bGxxW0xBR0dfTExRX0xMQUREUl0sIGxscV9lbnRyaWVzKSB7CisJCWxscV9jdHh0ID0gKHN0cnVj
dCBsYWdnX2xsYWRkcl9sbHFfY3R4dCAqKWNtbl9sbHE7CisJCWlmIChsbHFfY3R4dC0+bGxxX2lm
cCA9PSBpZnApIHsKIAkJCS8qIFVwZGF0ZSBsbGFkZHIsIGl0IG1heSBoYXZlIGNoYW5nZWQgKi8K
LQkJCWJjb3B5KGxsYWRkciwgbGxxLT5sbHFfbGxhZGRyLCBFVEhFUl9BRERSX0xFTik7CisJCQli
Y29weShsbGFkZHIsIGxscV9jdHh0LT5sbHFfbGxhZGRyLCBFVEhFUl9BRERSX0xFTik7CiAJCQly
ZXR1cm47CiAJCX0KIAl9CiAKLQlsbHEgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBsYWdnX2xscSks
IE1fREVWQlVGLCBNX05PV0FJVCB8IE1fWkVSTyk7Ci0JaWYgKGxscSA9PSBOVUxMKQkvKiBYWFgg
d2hhdCB0byBkbyAqLworCWxscV9jdHh0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgbGFnZ19sbGFk
ZHJfbGxxX2N0eHQpLCBNX0RFVkJVRiwKKwkgICAgTV9OT1dBSVQgfCBNX1pFUk8pOworCWlmIChs
bHFfY3R4dCA9PSBOVUxMKQkvKiBYWFggd2hhdCB0byBkbyAqLwogCQlyZXR1cm47CiAKLQlsbHEt
PmxscV9pZnAgPSBpZnA7Ci0JbGxxLT5sbHFfdHlwZSA9IGxscV90eXBlOwotCWJjb3B5KGxsYWRk
ciwgbGxxLT5sbHFfbGxhZGRyLCBFVEhFUl9BRERSX0xFTik7CisJbGxxX2N0eHQtPmxscV9pZnAg
PSBpZnA7CisJbGxxX2N0eHQtPmxscV90eXBlID0gbGxxX3R5cGU7CisJYmNvcHkobGxhZGRyLCBs
bHFfY3R4dC0+bGxxX2xsYWRkciwgRVRIRVJfQUREUl9MRU4pOwogCS8qIFhYWDogV2Ugc2hvdWxk
IGluc2VydCB0byB0YWlsICovCi0JU0xJU1RfSU5TRVJUX0hFQUQoJnNjLT5zY19sbHFfaGVhZCwg
bGxxLCBsbHFfZW50cmllcyk7CisJU0xJU1RfSU5TRVJUX0hFQUQoJnNjLT5zY19sbHFbTEFHR19M
TFFfTExBRERSXSwKKwkgICAgKHN0cnVjdCBsYWdnX2xscV9zbGlzdF9lbnRyeSAqKWxscV9jdHh0
LCBsbHFfZW50cmllcyk7CiAKLQl0YXNrcXVldWVfZW5xdWV1ZSh0YXNrcXVldWVfc3dpLCAmc2Mt
PnNjX2xsYWRkcl90YXNrKTsKKwl0YXNrcXVldWVfZW5xdWV1ZSh0YXNrcXVldWVfc3dpLCAmc2Mt
PnNjX2xscV90YXNrKTsKIH0KIAogLyoKLSAqIFNldCB0aGUgaW50ZXJmYWNlIE1BQyBhZGRyZXNz
IGZyb20gYSB0YXNrcXVldWUgdG8gYXZvaWQgYSBMT1IuCisgKiBTZXQgdGhlIGludGVyZmFjZSBN
VFUsIE1BQyBhZGRyZXNzIGZyb20gYSB0YXNrcXVldWUgdG8gYXZvaWQgYSBMT1IuCiAgKgogICog
U2V0IG5vaW5saW5lIHRvIGJlIGR0cmFjZS1mcmllbmRseQogICovCiBzdGF0aWMgX19ub2lubGlu
ZSB2b2lkCi1sYWdnX3BvcnRfc2V0bGxhZGRyKHZvaWQgKmFyZywgaW50IHBlbmRpbmcpCitsYWdn
X3BvcnRfb3BzKHZvaWQgKmFyZywgaW50IHBlbmRpbmcpCiB7CiAJc3RydWN0IGxhZ2dfc29mdGMg
KnNjID0gKHN0cnVjdCBsYWdnX3NvZnRjICopYXJnOwotCXN0cnVjdCBsYWdnX2xscSAqbGxxLCAq
aGVhZDsKLQlzdHJ1Y3QgaWZuZXQgKmlmcDsKKwlzdHJ1Y3QgbGFnZ19sbHFfc2xpc3RfZW50cnkg
KmxscV9maXJzdDsKKwlsYWdnX2xscV9pZHggbGxxX2lkeDsKKworCWZvciAobGxxX2lkeCA9IExB
R0dfTExRX01JTjsgbGxxX2lkeCA8IExBR0dfTExRX01BWDsgbGxxX2lkeCsrKSB7CisJCUxBR0df
V0xPQ0soc2MpOworCQlsbHFfZmlyc3QgPSBTTElTVF9GSVJTVCgmc2MtPnNjX2xscVtsbHFfaWR4
XSk7CisJCVNMSVNUX0lOSVQoJnNjLT5zY19sbHFbbGxxX2lkeF0pOworCQlMQUdHX1dVTkxPQ0so
c2MpOworCisJCWlmIChsbHFfZmlyc3QgIT0gTlVMTCkKKwkJCWxscV9hY3Rpb25bbGxxX2lkeF0o
c2MsIGxscV9maXJzdCk7CisJfQorfQogCi0JLyogR3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBvZiB0
aGUgcXVldWUgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBzb2Z0YyAqLworc3RhdGljIHZvaWQKK2xh
Z2dfbGxxX2FjdGlvbl9tdHUoc3RydWN0IGxhZ2dfc29mdGMgKnNjLCBzdHJ1Y3QgbGFnZ19sbHFf
c2xpc3RfZW50cnkgKmZpcnN0KQoreworCXN0cnVjdCBsYWdnX2xscV9zbGlzdF9lbnRyeSAqbGxx
OworCWludCBlcnI7CisKKwkvKiBTZXQgdGhlIG5ldyBNVFUgb24gdGhlIGxhZ2cgaW50ZXJmYWNl
ICovCiAJTEFHR19XTE9DSyhzYyk7Ci0JaGVhZCA9IFNMSVNUX0ZJUlNUKCZzYy0+c2NfbGxxX2hl
YWQpOwotCVNMSVNUX0ZJUlNUKCZzYy0+c2NfbGxxX2hlYWQpID0gTlVMTDsKKwlzYy0+c2NfaWZw
LT5pZl9tdHUgPSAoKHN0cnVjdCBsYWdnX210dV9sbHFfY3R4dCAqKWZpcnN0KS0+bGxxX2lmci5p
ZnJfbXR1OwogCUxBR0dfV1VOTE9DSyhzYyk7CiAKIAkvKgorCSAqIFRyYXZlcnNlIHRoZSBxdWV1
ZSBhbmQgc2V0IHRoZSBtdHUgb24gZWFjaCBpZnAuIEl0IGlzIHNhZmUgdG8gZG8KKwkgKiB1bmxv
Y2tlZCBhcyB3ZSBoYXZlIHRoZSBvbmx5IHJlZmVyZW5jZSB0byBpdC4KKwkgKi8KKwlsbHEgPSBm
aXJzdDsKKwlTTElTVF9GT1JFQUNIX0ZST00obGxxLCAoc3RydWN0IF9fbGxxaGQgKilOVUxMLCBs
bHFfZW50cmllcykgeworCQlzdHJ1Y3QgbGFnZ19tdHVfbGxxX2N0eHQgKmxscV9jdHh0OworCQls
bHFfY3R4dCA9IChzdHJ1Y3QgbGFnZ19tdHVfbGxxX2N0eHQgKilsbHE7CisJCS8qIFNldCB0aGUg
bmV3IE1UVSBvbiB0aGUgcGh5c2ljYWwgaW50ZXJmYWNlICovCisJCWVyciA9ICgqbGxxX2N0eHQt
PmxscV9pb2N0bCkobGxxX2N0eHQtPmxscV9pZnAsIFNJT0NTSUZNVFUsCisJCSAgICAoY2FkZHJf
dCkmbGxxX2N0eHQtPmxscV9pZnIpOworCQlpZiAoZXJyKSB7CisJCQlpZl9wcmludGYobGxxX2N0
eHQtPmxscV9pZnAsCisJCQkgICAgIkZhaWxlZCB0byBjaGFuZ2UgTVRVIGZyb20gJWQgdG8gJWQg
KGVyciAlZClcbiIsCisJCQkgICAgbGxxX2N0eHQtPmxscV9vbGRfbXR1LCBsbHFfY3R4dC0+bGxx
X2lmci5pZnJfbXR1LCBlcnIpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAoZXJyKSB7CisJ
CS8qIFJlc3RvcmUgdGhlIG9sZCBNVFUgb24gdGhlIGxhZ2cgaW50ZXJmYWNlICovCisJCUxBR0df
V0xPQ0soc2MpOworCQlzYy0+c2NfaWZwLT5pZl9tdHUgPSAoKHN0cnVjdCBsYWdnX210dV9sbHFf
Y3R4dCAqKWZpcnN0KS0+bGxxX29sZF9tdHU7CisJCUxBR0dfV1VOTE9DSyhzYyk7CisKKwkJLyog
UmVzdG9yZSB0aGUgb2xkIE1UVSBvbiB0aGUgcGh5c2ljYWwgaW50ZXJmYWNlICovCisJCWxscSA9
IGZpcnN0OworCQlTTElTVF9GT1JFQUNIX0ZST00obGxxLCAoc3RydWN0IF9fbGxxaGQgKilOVUxM
LCBsbHFfZW50cmllcykgeworCQkJc3RydWN0IGxhZ2dfbXR1X2xscV9jdHh0ICpsbHFfY3R4dDsK
KwkJCWxscV9jdHh0ID0gKHN0cnVjdCBsYWdnX210dV9sbHFfY3R4dCAqKWxscTsKKwkJCWxscV9j
dHh0LT5sbHFfaWZyLmlmcl9tdHUgPSBsbHFfY3R4dC0+bGxxX29sZF9tdHU7CisJCQllcnIgPSAo
KmxscV9jdHh0LT5sbHFfaW9jdGwpCisJCQkgICAgKGxscV9jdHh0LT5sbHFfaWZwLCBTSU9DU0lG
TVRVLCAoY2FkZHJfdCkmbGxxX2N0eHQtPmxscV9pZnIpOworCQkJaWYgKGVycikgeworCQkJCWlm
X3ByaW50ZihsbHFfY3R4dC0+bGxxX2lmcCwKKwkJCQkgICAgIkZhaWxlZCB0byByZXN0b3JlIE1U
VSB0byAlZCAoZXJyICVkKVxuIiwKKwkJCQkgICAgbGxxX2N0eHQtPmxscV9vbGRfbXR1LCBlcnIp
OworCQkJfQorCQl9CisJfQorCisJLyogRnJlZSB0aGUgTVRVIExMUSBlbnRyaWVzICovCisJX2xh
Z2dfbGxxX2NsZWFudXAoZmlyc3QpOworCisJbXR4X2xvY2soJnNjLT5zY19tdHVfY3R4dC5tdHVf
c3luYy5sb2NrKTsKKwlzYy0+c2NfbXR1X2N0eHQubXR1X2NtZF9yZXQgPSBlcnI7CisJLyogU2ln
bmFsIGZvciBjb21tYW5kIGNvbXBsZXRpb24gKi8KKwljdl9zaWduYWwoJnNjLT5zY19tdHVfY3R4
dC5tdHVfc3luYy5jdik7CisJbXR4X3VubG9jaygmc2MtPnNjX210dV9jdHh0Lm10dV9zeW5jLmxv
Y2spOworfQorCitzdGF0aWMgdm9pZCBfbGFnZ19sbHFfY2xlYW51cChzdHJ1Y3QgbGFnZ19sbHFf
c2xpc3RfZW50cnkgKmxscSkKK3sKKwlzdHJ1Y3QgbGFnZ19sbHFfc2xpc3RfZW50cnkgKnRtcF9s
bHE7CisKKwlTTElTVF9GT1JFQUNIX0ZST01fU0FGRShsbHEsIChzdHJ1Y3QgX19sbHFoZCAqKU5V
TEwsIGxscV9lbnRyaWVzLAorCSAgICB0bXBfbGxxKSB7CisJCWZyZWUobGxxLCBNX0RFVkJVRik7
CisJfQorfQorCitzdGF0aWMgdm9pZCBsYWdnX2xscV9jbGVhbnVwKHN0cnVjdCBsYWdnX3NvZnRj
ICpzYywgbGFnZ19sbHFfaWR4IGlkeCkKK3sKKwlzdHJ1Y3QgbGFnZ19sbHFfc2xpc3RfZW50cnkg
KmxscTsKKworCUxBR0dfV0xPQ0tfQVNTRVJUKHNjKTsKKworCWxscSA9IFNMSVNUX0ZJUlNUKCZz
Yy0+c2NfbGxxW2lkeF0pOworCVNMSVNUX0lOSVQoJnNjLT5zY19sbHFbaWR4XSk7CisKKwlfbGFn
Z19sbHFfY2xlYW51cChsbHEpOworfQorCitzdGF0aWMgaW50CitsYWdnX2NoYW5nZV9tdHUoc3Ry
dWN0IGlmbmV0ICppZnAsIHN0cnVjdCBpZnJlcSAqaWZyKQoreworCXN0cnVjdCBsYWdnX3NvZnRj
ICpzYzsKKwlzdHJ1Y3QgbGFnZ19wb3J0ICpscDsKKwlzdHJ1Y3QgbGFnZ19tdHVfbGxxX2N0eHQg
KmxscV9jdHh0OworCWludCByZXQ7CisKKwlzYyA9IChzdHJ1Y3QgbGFnZ19zb2Z0YyAqKWlmcC0+
aWZfc29mdGM7CisKKwltdHhfbG9jaygmc2MtPnNjX210dV9jdHh0Lm10dV9zZXJpYWwubG9jayk7
CisJaWYgKGN2X2hhc193YWl0ZXJzKCZzYy0+c2NfbXR1X2N0eHQubXR1X3NlcmlhbC5jdikgPT0g
VFJVRSkgeworCQkvKiBTZXJpYWxpemUgdGhlIGNvbW1hbmQgKi8KKwkJY3Zfd2FpdCgmc2MtPnNj
X210dV9jdHh0Lm10dV9zZXJpYWwuY3YsCisJCSAgICAmc2MtPnNjX210dV9jdHh0Lm10dV9zZXJp
YWwubG9jayk7CisJfQorCW10eF91bmxvY2soJnNjLT5zY19tdHVfY3R4dC5tdHVfc2VyaWFsLmxv
Y2spOworCisJLyogTm8gY2hhbmdlIGluIE1UVSAqLworCWlmIChpZnAtPmlmX210dSA9PSBpZnIt
Pmlmcl9tdHUpIHsKKwkJcmV0ID0gMDsKKwkJZ290byBvdXQ7CisJfQorCisJTEFHR19XTE9DSyhz
Yyk7CisJLyogQWxsIGxhZ2cgcG9ydHMgKE1UVSBjaGFuZ2UpIHNoYWxsIGJlIHF1ZXVlZCBhdG9t
aWMgKi8KKwlTTElTVF9GT1JFQUNIKGxwLCAmc2MtPnNjX3BvcnRzLCBscF9lbnRyaWVzKSB7CisJ
CWxscV9jdHh0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgbGFnZ19tdHVfbGxxX2N0eHQpLCBNX0RF
VkJVRiwKKwkJICAgIE1fTk9XQUlUKTsKKwkJaWYgKGxscV9jdHh0ID09IE5VTEwpIHsKKwkJCWxh
Z2dfbGxxX2NsZWFudXAoc2MsIExBR0dfTExRX01UVSk7CisJCQlMQUdHX1dVTkxPQ0soc2MpOwor
CQkJcmV0ID0gRU5PTUVNOworCQkJZ290byBvdXQ7CisJCX0KKwkJU0xJU1RfSU5TRVJUX0hFQUQo
JnNjLT5zY19sbHFbTEFHR19MTFFfTVRVXSwKKwkJICAgIChzdHJ1Y3QgbGFnZ19sbHFfc2xpc3Rf
ZW50cnkgKilsbHFfY3R4dCwgbGxxX2VudHJpZXMpOworCisJCWJjb3B5KGlmciwgJmxscV9jdHh0
LT5sbHFfaWZyLCBzaXplb2Yoc3RydWN0IGlmcmVxKSk7CisJCWxscV9jdHh0LT5sbHFfb2xkX210
dSA9IGlmcC0+aWZfbXR1OworCQlsbHFfY3R4dC0+bGxxX2lmcCA9IGxwLT5scF9pZnA7CisJCWxs
cV9jdHh0LT5sbHFfaW9jdGwgPSBscC0+bHBfaW9jdGw7CisJfQorCW10eF9sb2NrKCZzYy0+c2Nf
bXR1X2N0eHQubXR1X3N5bmMubG9jayk7CisJdGFza3F1ZXVlX2VucXVldWUodGFza3F1ZXVlX3N3
aSwgJnNjLT5zY19sbHFfdGFzayk7CisJTEFHR19XVU5MT0NLKHNjKTsKKworCS8qIFdhaXQgZm9y
IHRoZSBjb21tYW5kIGNvbXBsZXRpb24gKi8KKwljdl93YWl0KCZzYy0+c2NfbXR1X2N0eHQubXR1
X3N5bmMuY3YsICZzYy0+c2NfbXR1X2N0eHQubXR1X3N5bmMubG9jayk7CisJcmV0ID0gc2MtPnNj
X210dV9jdHh0Lm10dV9jbWRfcmV0OworCW10eF91bmxvY2soJnNjLT5zY19tdHVfY3R4dC5tdHVf
c3luYy5sb2NrKTsKKworb3V0OgorCW10eF9sb2NrKCZzYy0+c2NfbXR1X2N0eHQubXR1X3Nlcmlh
bC5sb2NrKTsKKwkvKiBTaWduYWwgdG8gcHJvY2VzcyB0aGUgbmV4dCBjb21tYW5kICovCisJY3Zf
c2lnbmFsKCZzYy0+c2NfbXR1X2N0eHQubXR1X3NlcmlhbC5jdik7CisJbXR4X3VubG9jaygmc2Mt
PnNjX210dV9jdHh0Lm10dV9zZXJpYWwubG9jayk7CisKKwlyZXR1cm4gKHJldCk7Cit9CisKK3N0
YXRpYyB2b2lkCitsYWdnX2xscV9hY3Rpb25fbGxhZGRyKHN0cnVjdCBsYWdnX3NvZnRjICpzYywg
c3RydWN0IGxhZ2dfbGxxX3NsaXN0X2VudHJ5ICpoZWFkKQoreworCXN0cnVjdCBsYWdnX2xsYWRk
cl9sbHFfY3R4dCAqbGxxX2N0eHQ7CisJc3RydWN0IGxhZ2dfbGxxX3NsaXN0X2VudHJ5ICpsbHE7
CisJc3RydWN0IGlmbmV0ICppZnA7CisKKwkvKgogCSAqIFRyYXZlcnNlIHRoZSBxdWV1ZSBhbmQg
c2V0IHRoZSBsbGFkZHIgb24gZWFjaCBpZnAuIEl0IGlzIHNhZmUgdG8gZG8KIAkgKiB1bmxvY2tl
ZCBhcyB3ZSBoYXZlIHRoZSBvbmx5IHJlZmVyZW5jZSB0byBpdC4KIAkgKi8KIAlmb3IgKGxscSA9
IGhlYWQ7IGxscSAhPSBOVUxMOyBsbHEgPSBoZWFkKSB7Ci0JCWlmcCA9IGxscS0+bGxxX2lmcDsK
KwkJbGxxX2N0eHQgPSAoc3RydWN0IGxhZ2dfbGxhZGRyX2xscV9jdHh0ICopbGxxOworCQlpZnAg
PSBsbHFfY3R4dC0+bGxxX2lmcDsKIAogCQlDVVJWTkVUX1NFVChpZnAtPmlmX3ZuZXQpOwogCiAJ
CS8qCiAJCSAqIFNldCB0aGUgbGluayBsYXllciBhZGRyZXNzIG9uIHRoZSBsYWdncG9ydCBpbnRl
cmZhY2UuCiAJCSAqIE5vdGUgdGhhdCBpZl9zZXRsbGFkZHIoKSBvciBpZmxsYWRkcl9ldmVudCBo
YW5kbGVyCiAJCSAqIG1heSByZXN1bHQgaW4gYXJwIHRyYW5zbWlzc2lvbiAvIGxsdGFibGUgdXBk
YXRlcy4KIAkJICovCi0JCWlmIChsbHEtPmxscV90eXBlID09IExBR0dfTExRVFlQRV9QSFlTKQot
CQkJaWZfc2V0bGxhZGRyKGlmcCwgbGxxLT5sbHFfbGxhZGRyLAotCQkJICAgIEVUSEVSX0FERFJf
TEVOKTsKKwkJaWYgKGxscV9jdHh0LT5sbHFfdHlwZSA9PSBMQUdHX0xMUVRZUEVfUEhZUykKKwkJ
CWlmX3NldGxsYWRkcihpZnAsIGxscV9jdHh0LT5sbHFfbGxhZGRyLCBFVEhFUl9BRERSX0xFTik7
CiAJCWVsc2UKIAkJCUVWRU5USEFORExFUl9JTlZPS0UoaWZsbGFkZHJfZXZlbnQsIGlmcCk7CiAJ
CUNVUlZORVRfUkVTVE9SRSgpOwpAQCAtODc3LDcgKzEwNzQsOCBAQAogewogCXN0cnVjdCBsYWdn
X3NvZnRjICpzYyA9IGxwLT5scF9zb2Z0YzsKIAlzdHJ1Y3QgbGFnZ19wb3J0ICpscF9wdHIsICps
cDA7Ci0Jc3RydWN0IGxhZ2dfbGxxICpsbHE7CisJc3RydWN0IGxhZ2dfbGxxX3NsaXN0X2VudHJ5
ICpjbW5fbGxxOworCXN0cnVjdCBsYWdnX2xsYWRkcl9sbHFfY3R4dCAqbGxxX2N0eHQ7CiAJc3Ry
dWN0IGlmbmV0ICppZnAgPSBscC0+bHBfaWZwOwogCXVpbnQ2NF90ICpwdmFsLCB2ZGlmZjsKIAlp
bnQgaTsKQEAgLTk0MCwxMSArMTEzOCwxMiBAQAogCiAJLyogUmVtb3ZlIGFueSBwZW5kaW5nIGxs
YWRkciBjaGFuZ2VzIGZyb20gdGhlIHF1ZXVlICovCiAJaWYgKGxwLT5scF9kZXRhY2hpbmcpIHsK
LQkJU0xJU1RfRk9SRUFDSChsbHEsICZzYy0+c2NfbGxxX2hlYWQsIGxscV9lbnRyaWVzKSB7Ci0J
CQlpZiAobGxxLT5sbHFfaWZwID09IGlmcCkgewotCQkJCVNMSVNUX1JFTU9WRSgmc2MtPnNjX2xs
cV9oZWFkLCBsbHEsIGxhZ2dfbGxxLAotCQkJCSAgICBsbHFfZW50cmllcyk7Ci0JCQkJZnJlZShs
bHEsIE1fREVWQlVGKTsKKwkJU0xJU1RfRk9SRUFDSChjbW5fbGxxLCAmc2MtPnNjX2xscVtMQUdH
X0xMUV9MTEFERFJdLCBsbHFfZW50cmllcykgeworCQkJbGxxX2N0eHQgPSAoc3RydWN0IGxhZ2df
bGxhZGRyX2xscV9jdHh0ICopY21uX2xscTsKKwkJCWlmIChsbHFfY3R4dC0+bGxxX2lmcCA9PSBp
ZnApIHsKKwkJCQlTTElTVF9SRU1PVkUoJnNjLT5zY19sbHFbTEFHR19MTFFfTExBRERSXSwgY21u
X2xscSwKKwkJCQkgICAgbGFnZ19sbHFfc2xpc3RfZW50cnksIGxscV9lbnRyaWVzKTsKKwkJCQlm
cmVlKGNtbl9sbHEsIE1fREVWQlVGKTsKIAkJCQlicmVhazsJLyogT25seSBhcHBlYXJzIG9uY2Ug
Ki8KIAkJCX0KIAkJfQpAQCAtMTUyOSwxMCArMTcyOCwxMiBAQAogCQlicmVhazsKIAogCWNhc2Ug
U0lPQ1NJRkNBUDoKLQljYXNlIFNJT0NTSUZNVFU6Ci0JCS8qIERvIG5vdCBhbGxvdyB0aGUgTVRV
IG9yIGNhcHMgdG8gYmUgZGlyZWN0bHkgY2hhbmdlZCAqLworCQkvKiBEbyBub3QgYWxsb3cgdGhl
IENBUHMgdG8gYmUgZGlyZWN0bHkgY2hhbmdlZC4gKi8KIAkJZXJyb3IgPSBFSU5WQUw7CiAJCWJy
ZWFrOworCWNhc2UgU0lPQ1NJRk1UVToKKwkJZXJyb3IgPSBsYWdnX2NoYW5nZV9tdHUoaWZwLCBp
ZnIpOworCQlicmVhazsKIAogCWRlZmF1bHQ6CiAJCWVycm9yID0gZXRoZXJfaW9jdGwoaWZwLCBj
bWQsIGRhdGEpOwpkaWZmIC0tZ2l0IGEvc3lzL2tlcm4va2Vybl9jb25kdmFyLmMgYi9zeXMva2Vy
bi9rZXJuX2NvbmR2YXIuYwotLS0gYS9zeXMva2Vybi9rZXJuX2NvbmR2YXIuYworKysgYi9zeXMv
a2Vybi9rZXJuX2NvbmR2YXIuYwpAQCAtNDU1LDMgKzQ1NSwxNiBAQAogCWlmICh3YWtldXBfc3dh
cHBlcikKIAkJa2lja19wcm9jMCgpOwogfQorCisvKgorICogUmV0dXJuIHRydWUgaWYgb25lIG9y
IG1vcmUgTFdQcyBhcmUgd2FpdGluZyBvbiB0aGUgc3BlY2lmaWVkCisgKiBjb25kaXRpb24gdmFy
aWFibGUuCisgKi8KK2Jvb2wKK2N2X2hhc193YWl0ZXJzKHN0cnVjdCBjdiAqY3ZwKQoreworCWlm
IChjdnAtPmN2X3dhaXRlcnMgPiAwKQorCQlyZXR1cm4gKFRSVUUpOworCWVsc2UKKwkJcmV0dXJu
IChGQUxTRSk7Cit9Cgo=


--b1_ae0c3951d155fc575d5ae5a13c002e93--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ae0c3951d155fc575d5ae5a13c002e93>