Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Jan 2014 14:22:43 -0800
From:      Eric Joyner <ricera10@gmail.com>
To:        pyunyh@gmail.com
Cc:        damien.deville@netasq.com, freebsd-current@freebsd.org, fabien.thomas@netasq.com, Alexandre Martins <alexandre.martins@netasq.com>, Gleb Smirnoff <glebius@freebsd.org>, Jack F Vogel <jfv@freebsd.org>
Subject:   Re: FreeBSD 10-RC4: Got crash in igb driver
Message-ID:  <CA%2Bb0zg-tpzLve_mkuq7%2BfG1f-A9DgeKf8vqBpbrAK33s5Y%2B2fQ@mail.gmail.com>
In-Reply-To: <20140113021018.GA3500@michelle.cdnetworks.com>
References:  <48005124.ny58tnLn4d@pc-alex> <20140110012114.GA3103@michelle.cdnetworks.com> <20140110103529.GE73147@FreeBSD.org> <20140113021018.GA3500@michelle.cdnetworks.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--001a1134b612f2665504eff5a3dc
Content-Type: text/plain; charset=UTF-8

All,

I work with Jack on FreeBSD network drivers, and we have a patch that we
think might fix this problem. It re-implements the header pull-up code that
was in the driver pre-2.4.0, but with IPv6 support. Alexandre, could you
apply this patch to the igb version in HEAD and try it out on your network?
We can't replicate your setup here.

If it solves your problem, then the next step would be to port the patch to
the ixgbe driver since, as Yonghyeon noted, it looks like that driver will
encounter the same problem. We could then modify em to add IPv6 offload
support as well.

Thanks,

---
- Eric Joyner

On Fri, Jan 10, 2014 at 02:35:29PM +0400, Gleb Smirnoff wrote:
>   Yonghyeon,
>
> On Fri, Jan 10, 2014 at 10:21:14AM +0900, Yonghyeon PYUN wrote:
> Y> > I experience some troubles with the igb device driver on FreeBSD
10-RC4.
> Y> >
> Y> > The kernel make a pagefault in the igb_tx_ctx_setup function when
accessing to
> Y> > a IPv6 header.
> Y> >
> Y> > The network configuration is the following:
> Y> >  - box acting as an IPv6 router
> Y> >  - one interface with an IPv6 (igb0)
> Y> >  - another interface with a vlan, and IPv6 on it (vlan0 on igb1)
> Y> >
> Y> > Vlan Hardware tagging is set on both interfaces.
> Y> >
> Y> > The packet that cause the crash come from igb0 and go to vlan0.
> Y> >
> Y> > After investigation, i see that the mbuf is split in two. The first
one carry
> Y> > the ethernet header, the second, the IPv6 header and data payload.
> Y> >
> Y> > The split is due to the "m_copy" done in ip6_forward, that make the
mbuf not
> Y> > writable and the "M_PREPEND" in ether_output that insert the new
mbuf before
> Y> > the original one.
> Y> >
> Y> > The kernel crashes only if the newly allocated mbuf is at the end of
a memory
> Y> > page, and no page is available after this one. So, it's extremly
rare.
> Y> >
> Y> > I inserted a "KASSERT" into the function (see attached patch) to
check this
> Y> > behavior, and it raises on every IPv6 forwarded packet to the vlan.
The
> Y> > problem disapear if i remove hardware tagging.
> Y> >
> Y> > In the commit 256200, i see that pullups has been removed. May it be
related ?
> Y>
> Y> I think I introduced the header parsing code to meet controller
> Y> requirement in em(4) and Jack borrowed that code in the past but it
> Y> seems it was removed in r256200.  It seems igb_tx_ctx_setup()
> Y> assumes it can access ethernet/IP/TCP/UDP headers in the first mbuf
> Y> of the chain.
> Y> This looks wrong to me.
>
> Can you please restore the important code in head ASAP? Although crashes
happen
> only when the mbuf is last in a page and page isn't mapped, we read
thrash from
> next allocation on almost every packet.
>

It seems other Intel ethernet drivers except em(4) have similar
issues.  I didn't check recent Intel controllers/drivers for long
time so I don't know details on hardware requirements of
offloading.
Since Jack is very responsive and has hardwares to verify, he would
be more appropriate person to handle these issues.
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"

--001a1134b612f2665504eff5a3dc
Content-Type: application/octet-stream; name="fix.patch"
Content-Disposition: attachment; filename="fix.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hqfq2abb0

ZGlmZiAtTmF1ciBoZWFkL2lmX2lnYi5jIHBhdGNoL2lmX2lnYi5jCi0tLSBoZWFkL2lmX2lnYi5j
CTIwMTQtMDEtMTQgMTQ6MDg6MDQuMDAwMDAwMDAwIC0wODAwCisrKyBwYXRjaC9pZl9pZ2IuYwky
MDE0LTAxLTE0IDE0OjA3OjAxLjAwMDAwMDAwMCAtMDgwMApAQCAtMSw2ICsxLDYgQEAKIC8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKIAotICBDb3B5cmlnaHQgKGMpIDIwMDEtMjAxMywgSW50ZWwgQ29y
cG9yYXRpb24gCisgIENvcHlyaWdodCAoYykgMjAwMS0yMDE0LCBJbnRlbCBDb3Jwb3JhdGlvbiAK
ICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgCiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCAKQEAgLTI0NCw5ICsyNDQs
MTEgQEAKIHN0YXRpYyBib29sCWlnYl9yeGVvZihzdHJ1Y3QgaWdiX3F1ZXVlICosIGludCwgaW50
ICopOwogc3RhdGljIHZvaWQJaWdiX3J4X2NoZWNrc3VtKHUzMiwgc3RydWN0IG1idWYgKiwgdTMy
KTsKIHN0YXRpYyBpbnQJaWdiX3R4X2N0eF9zZXR1cChzdHJ1Y3QgdHhfcmluZyAqLAotCQkgICAg
c3RydWN0IG1idWYgKiwgdTMyICosIHUzMiAqKTsKKwkJICAgIHN0cnVjdCBtYnVmICosIHUzMiAq
LCB1MzIgKiwgc3RydWN0IGlnYl9wa3RfaW5mbyAqKTsKIHN0YXRpYyBpbnQJaWdiX3Rzb19zZXR1
cChzdHJ1Y3QgdHhfcmluZyAqLAotCQkgICAgc3RydWN0IG1idWYgKiwgdTMyICosIHUzMiAqKTsK
KwkJICAgIHN0cnVjdCBtYnVmICosIHUzMiAqLCB1MzIgKiwgc3RydWN0IGlnYl9wa3RfaW5mbyAq
KTsKK3N0YXRpYyBpbnQJaWdiX3B1bGx1cF9oZWFkZXJzKHN0cnVjdCBtYnVmICoqLCB1MzIsCisJ
CSAgICBzdHJ1Y3QgaWdiX3BrdF9pbmZvICopOwogc3RhdGljIHZvaWQJaWdiX3NldF9wcm9taXNj
KHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIHZvaWQJaWdiX2Rpc2FibGVfcHJvbWlzYyhzdHJ1
Y3QgYWRhcHRlciAqKTsKIHN0YXRpYyB2b2lkCWlnYl9zZXRfbXVsdGkoc3RydWN0IGFkYXB0ZXIg
Kik7CkBAIC0yOTAsNiArMjkyLDcgQEAKIHN0YXRpYyBpbnQJaWdiX3N5c2N0bF9kbWFjKFNZU0NU
TF9IQU5ETEVSX0FSR1MpOwogc3RhdGljIGludAlpZ2Jfc3lzY3RsX2VlZShTWVNDVExfSEFORExF
Ul9BUkdTKTsKIAorCiAjaWZkZWYgREVWSUNFX1BPTExJTkcKIHN0YXRpYyBwb2xsX2hhbmRsZXJf
dCBpZ2JfcG9sbDsKICNlbmRpZiAvKiBQT0xMSU5HICovCkBAIC0xODQzLDkgKzE4NDYsMTEgQEAK
IAlidXNfZG1hX3NlZ21lbnRfdCBzZWdzW0lHQl9NQVhfU0NBVFRFUl07CiAJYnVzX2RtYW1hcF90
CW1hcDsKIAlzdHJ1Y3QgaWdiX3R4X2J1ZiAqdHhidWY7CisJc3RydWN0IGlnYl9wa3RfaW5mbwlw
a3Q7CiAJdW5pb24gZTEwMDBfYWR2X3R4X2Rlc2MgKnR4ZCA9IE5VTEw7CiAKIAltX2hlYWQgPSAq
bV9oZWFkcDsKKwliemVybygmcGt0LCBzaXplb2Yoc3RydWN0IGlnYl9wa3RfaW5mbykpOwogCiAJ
LyogQmFzaWMgZGVzY3JpcHRvciBkZWZpbmVzICovCiAgICAgICAgIGNtZF90eXBlX2xlbiA9IChF
MTAwMF9BRFZUWERfRFRZUF9EQVRBIHwKQEAgLTE4NjMsNiArMTg2OCwxNCBAQAogCXR4YnVmID0g
JnR4ci0+dHhfYnVmZmVyc1tmaXJzdF07CiAJbWFwID0gdHhidWYtPm1hcDsKIAorCS8qIFB1bGx1
cCBoZWFkZXJzIGlmIG9mZmxvYWQgaGFzIGJlZW4gcmVxdWVzdGVkICovCisJaWYgKG1faGVhZC0+
bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fT0ZGTE9BRCkgeworCQllcnJvciA9IGlnYl9wdWxs
dXBfaGVhZGVycyhtX2hlYWRwLAorCQkgICAgbV9oZWFkLT5tX3BrdGhkci5jc3VtX2ZsYWdzLCAm
cGt0KTsKKwkJaWYgKGVycm9yKQorCQkJcmV0dXJuIChlcnJvcik7CisJfQorCiAJLyoKIAkgKiBN
YXAgdGhlIHBhY2tldCBmb3IgRE1BLgogCSAqLwpAQCAtMTkwNiwxOCArMTkxOSwxOCBAQAogCQli
dXNfZG1hbWFwX3VubG9hZCh0eHItPnR4dGFnLCBtYXApOwogCQlyZXR1cm4gKEVOT0JVRlMpOwog
CX0KLQltX2hlYWQgPSAqbV9oZWFkcDsKIAogCS8qCiAJKiogU2V0IHVwIHRoZSBhcHByb3ByaWF0
ZSBvZmZsb2FkIGNvbnRleHQKIAkqKiB0aGlzIHdpbGwgY29uc3VtZSB0aGUgZmlyc3QgZGVzY3Jp
cHRvcgogCSovCi0JZXJyb3IgPSBpZ2JfdHhfY3R4X3NldHVwKHR4ciwgbV9oZWFkLCAmY21kX3R5
cGVfbGVuLCAmb2xpbmZvX3N0YXR1cyk7CisJZXJyb3IgPSBpZ2JfdHhfY3R4X3NldHVwKHR4ciwg
bV9oZWFkLCAmY21kX3R5cGVfbGVuLCAmb2xpbmZvX3N0YXR1cywgJnBrdCk7CiAJaWYgKF9fcHJl
ZGljdF9mYWxzZShlcnJvcikpIHsKIAkJbV9mcmVlbSgqbV9oZWFkcCk7CiAJCSptX2hlYWRwID0g
TlVMTDsKIAkJcmV0dXJuIChlcnJvcik7CiAJfQorCW1faGVhZCA9ICptX2hlYWRwOwogCiAJLyog
ODI1NzUgbmVlZHMgdGhlIHF1ZXVlIGluZGV4IGFkZGVkICovCiAJaWYgKGFkYXB0ZXItPmh3Lm1h
Yy50eXBlID09IGUxMDAwXzgyNTc1KQpAQCAtMzcwMSw2MCArMzcxNCwzOSBAQAogICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCiBzdGF0aWMgaW50CiBpZ2JfdHNvX3NldHVwKHN0cnVjdCB0eF9yaW5nICp0eHIsIHN0
cnVjdCBtYnVmICptcCwKLSAgICB1MzIgKmNtZF90eXBlX2xlbiwgdTMyICpvbGluZm9fc3RhdHVz
KQorICAgIHUzMiAqY21kX3R5cGVfbGVuLCB1MzIgKm9saW5mb19zdGF0dXMsIHN0cnVjdCBpZ2Jf
cGt0X2luZm8gKnBrdCkKIHsKIAlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciA9IHR4ci0+YWRhcHRl
cjsKIAlzdHJ1Y3QgZTEwMDBfYWR2X3R4X2NvbnRleHRfZGVzYyAqVFhEOwogCXUzMiB2bGFuX21h
Y2lwX2xlbnMgPSAwLCB0eXBlX3R1Y21kX21saGwgPSAwOwogCXUzMiBtc3NfbDRsZW5faWR4ID0g
MCwgcGF5bGVuOwotCXUxNiB2dGFnID0gMCwgZWhfdHlwZTsKLQlpbnQgY3R4ZCwgZWhkcmxlbiwg
aXBfaGxlbiwgdGNwX2hsZW47Ci0Jc3RydWN0IGV0aGVyX3ZsYW5faGVhZGVyICplaDsKKwl1MTYg
dnRhZyA9IDA7CisJaW50IGN0eGQsIHRjcF9obGVuOwogI2lmZGVmIElORVQ2CiAJc3RydWN0IGlw
Nl9oZHIgKmlwNjsKICNlbmRpZgogI2lmZGVmIElORVQKIAlzdHJ1Y3QgaXAgKmlwOwogI2VuZGlm
Ci0Jc3RydWN0IHRjcGhkciAqdGg7Ci0KLQotCS8qCi0JICogRGV0ZXJtaW5lIHdoZXJlIGZyYW1l
IHBheWxvYWQgc3RhcnRzLgotCSAqIEp1bXAgb3ZlciB2bGFuIGhlYWRlcnMgaWYgYWxyZWFkeSBw
cmVzZW50Ci0JICovCi0JZWggPSBtdG9kKG1wLCBzdHJ1Y3QgZXRoZXJfdmxhbl9oZWFkZXIgKik7
Ci0JaWYgKGVoLT5ldmxfZW5jYXBfcHJvdG8gPT0gaHRvbnMoRVRIRVJUWVBFX1ZMQU4pKSB7Ci0J
CWVoZHJsZW4gPSBFVEhFUl9IRFJfTEVOICsgRVRIRVJfVkxBTl9FTkNBUF9MRU47Ci0JCWVoX3R5
cGUgPSBlaC0+ZXZsX3Byb3RvOwotCX0gZWxzZSB7Ci0JCWVoZHJsZW4gPSBFVEhFUl9IRFJfTEVO
OwotCQllaF90eXBlID0gZWgtPmV2bF9lbmNhcF9wcm90bzsKLQl9CiAKLQlzd2l0Y2ggKG50b2hz
KGVoX3R5cGUpKSB7CisJc3dpdGNoIChwa3QtPmV0eXBlKSB7CiAjaWZkZWYgSU5FVDYKIAljYXNl
IEVUSEVSVFlQRV9JUFY2OgotCQlpcDYgPSAoc3RydWN0IGlwNl9oZHIgKikobXAtPm1fZGF0YSAr
IGVoZHJsZW4pOworCQlpcDYgPSBwa3QtPmlwNjsKIAkJLyogWFhYLUJaIEZvciBub3cgd2UgZG8g
bm90IHByZXRlbmQgdG8gc3VwcG9ydCBleHQuIGhkcnMuICovCiAJCWlmIChpcDYtPmlwNl9ueHQg
IT0gSVBQUk9UT19UQ1ApCiAJCQlyZXR1cm4gKEVOWElPKTsKLQkJaXBfaGxlbiA9IHNpemVvZihz
dHJ1Y3QgaXA2X2hkcik7Ci0JCWlwNiA9IChzdHJ1Y3QgaXA2X2hkciAqKShtcC0+bV9kYXRhICsg
ZWhkcmxlbik7Ci0JCXRoID0gKHN0cnVjdCB0Y3BoZHIgKikoKGNhZGRyX3QpaXA2ICsgaXBfaGxl
bik7Ci0JCXRoLT50aF9zdW0gPSBpbjZfY2tzdW1fcHNldWRvKGlwNiwgMCwgSVBQUk9UT19UQ1As
IDApOworCQlwa3QtPnRoLT50aF9zdW0gPSBpbjZfY2tzdW1fcHNldWRvKGlwNiwgMCwgSVBQUk9U
T19UQ1AsIDApOwogCQl0eXBlX3R1Y21kX21saGwgfD0gRTEwMDBfQURWVFhEX1RVQ01EX0lQVjY7
CiAJCWJyZWFrOwogI2VuZGlmCiAjaWZkZWYgSU5FVAogCWNhc2UgRVRIRVJUWVBFX0lQOgotCQlp
cCA9IChzdHJ1Y3QgaXAgKikobXAtPm1fZGF0YSArIGVoZHJsZW4pOworCQlpcCA9IHBrdC0+aXA7
CiAJCWlmIChpcC0+aXBfcCAhPSBJUFBST1RPX1RDUCkKIAkJCXJldHVybiAoRU5YSU8pOwogCQlp
cC0+aXBfc3VtID0gMDsKLQkJaXBfaGxlbiA9IGlwLT5pcF9obCA8PCAyOwotCQl0aCA9IChzdHJ1
Y3QgdGNwaGRyICopKChjYWRkcl90KWlwICsgaXBfaGxlbik7Ci0JCXRoLT50aF9zdW0gPSBpbl9w
c2V1ZG8oaXAtPmlwX3NyYy5zX2FkZHIsCisJCXBrdC0+dGgtPnRoX3N1bSA9IGluX3BzZXVkbyhp
cC0+aXBfc3JjLnNfYWRkciwKIAkJICAgIGlwLT5pcF9kc3Quc19hZGRyLCBodG9ucyhJUFBST1RP
X1RDUCkpOwogCQl0eXBlX3R1Y21kX21saGwgfD0gRTEwMDBfQURWVFhEX1RVQ01EX0lQVjQ7CiAJ
CS8qIFRlbGwgdHJhbnNtaXQgZGVzYyB0byBhbHNvIGRvIElQdjQgY2hlY2tzdW0uICovCkBAIC0z
NzYzLDE3ICszNzU1LDE3IEBACiAjZW5kaWYKIAlkZWZhdWx0OgogCQlwYW5pYygiJXM6IENTVU1f
VFNPIGJ1dCBubyBzdXBwb3J0ZWQgSVAgdmVyc2lvbiAoMHglMDR4KSIsCi0JCSAgICBfX2Z1bmNf
XywgbnRvaHMoZWhfdHlwZSkpOworCQkgICAgX19mdW5jX18sIHBrdC0+ZXR5cGUpOwogCQlicmVh
azsKIAl9CiAKIAljdHhkID0gdHhyLT5uZXh0X2F2YWlsX2Rlc2M7CiAJVFhEID0gKHN0cnVjdCBl
MTAwMF9hZHZfdHhfY29udGV4dF9kZXNjICopICZ0eHItPnR4X2Jhc2VbY3R4ZF07CiAKLQl0Y3Bf
aGxlbiA9IHRoLT50aF9vZmYgPDwgMjsKKwl0Y3BfaGxlbiA9IHBrdC0+dGgtPnRoX29mZiA8PCAy
OwogCiAJLyogVGhpcyBpcyB1c2VkIGluIHRoZSB0cmFuc21pdCBkZXNjIGluIGVuY2FwICovCi0J
cGF5bGVuID0gbXAtPm1fcGt0aGRyLmxlbiAtIGVoZHJsZW4gLSBpcF9obGVuIC0gdGNwX2hsZW47
CisJcGF5bGVuID0gbXAtPm1fcGt0aGRyLmxlbiAtIHBrdC0+ZWhkcmxlbiAtIHBrdC0+aXBfaGxl
biAtIHRjcF9obGVuOwogCiAJLyogVkxBTiBNQUNMRU4gSVBMRU4gKi8KIAlpZiAobXAtPm1fZmxh
Z3MgJiBNX1ZMQU5UQUcpIHsKQEAgLTM3ODEsOCArMzc3Myw4IEBACiAgICAgICAgICAgICAgICAg
dmxhbl9tYWNpcF9sZW5zIHw9ICh2dGFnIDw8IEUxMDAwX0FEVlRYRF9WTEFOX1NISUZUKTsKIAl9
CiAKLQl2bGFuX21hY2lwX2xlbnMgfD0gZWhkcmxlbiA8PCBFMTAwMF9BRFZUWERfTUFDTEVOX1NI
SUZUOwotCXZsYW5fbWFjaXBfbGVucyB8PSBpcF9obGVuOworCXZsYW5fbWFjaXBfbGVucyB8PSBw
a3QtPmVoZHJsZW4gPDwgRTEwMDBfQURWVFhEX01BQ0xFTl9TSElGVDsKKwl2bGFuX21hY2lwX2xl
bnMgfD0gcGt0LT5pcF9obGVuOwogCVRYRC0+dmxhbl9tYWNpcF9sZW5zID0gaHRvbGUzMih2bGFu
X21hY2lwX2xlbnMpOwogCiAJLyogQURWIERUWVBFIFRVQ01EICovCkBAIC0zODIwLDE2ICszODEy
LDEzIEBACiAKIHN0YXRpYyBpbnQKIGlnYl90eF9jdHhfc2V0dXAoc3RydWN0IHR4X3JpbmcgKnR4
ciwgc3RydWN0IG1idWYgKm1wLAotICAgIHUzMiAqY21kX3R5cGVfbGVuLCB1MzIgKm9saW5mb19z
dGF0dXMpCisgICAgdTMyICpjbWRfdHlwZV9sZW4sIHUzMiAqb2xpbmZvX3N0YXR1cywgc3RydWN0
IGlnYl9wa3RfaW5mbyAqcGt0KQogewogCXN0cnVjdCBlMTAwMF9hZHZfdHhfY29udGV4dF9kZXNj
ICpUWEQ7CiAJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIgPSB0eHItPmFkYXB0ZXI7Ci0Jc3RydWN0
IGV0aGVyX3ZsYW5faGVhZGVyICplaDsKIAlzdHJ1Y3QgaXAgKmlwOwogCXN0cnVjdCBpcDZfaGRy
ICppcDY7CiAJdTMyIHZsYW5fbWFjaXBfbGVucyA9IDAsIHR5cGVfdHVjbWRfbWxobCA9IDAsIG1z
c19sNGxlbl9pZHggPSAwOwotCWludAllaGRybGVuLCBpcF9obGVuID0gMDsKLQl1MTYJZXR5cGU7
CiAJdTgJaXBwcm90byA9IDA7CiAJaW50CW9mZmxvYWQgPSBUUlVFOwogCWludAljdHhkID0gdHhy
LT5uZXh0X2F2YWlsX2Rlc2M7CkBAIC0zODM3LDcgKzM4MjYsNyBAQAogCiAJLyogRmlyc3QgY2hl
Y2sgaWYgVFNPIGlzIHRvIGJlIHVzZWQgKi8KIAlpZiAobXAtPm1fcGt0aGRyLmNzdW1fZmxhZ3Mg
JiBDU1VNX1RTTykKLQkJcmV0dXJuIChpZ2JfdHNvX3NldHVwKHR4ciwgbXAsIGNtZF90eXBlX2xl
biwgb2xpbmZvX3N0YXR1cykpOworCQlyZXR1cm4gKGlnYl90c29fc2V0dXAodHhyLCBtcCwgY21k
X3R5cGVfbGVuLCBvbGluZm9fc3RhdHVzLCBwa3QpKTsKIAogCWlmICgobXAtPm1fcGt0aGRyLmNz
dW1fZmxhZ3MgJiBDU1VNX09GRkxPQUQpID09IDApCiAJCW9mZmxvYWQgPSBGQUxTRTsKQEAgLTM4
NTksMzMgKzM4NDgsMTcgQEAKIAl9IGVsc2UgaWYgKG9mZmxvYWQgPT0gRkFMU0UpIC8qIC4uLiBu
byBvZmZsb2FkIHRvIGRvICovCiAJCXJldHVybiAoMCk7CiAKLQkvKgotCSAqIERldGVybWluZSB3
aGVyZSBmcmFtZSBwYXlsb2FkIHN0YXJ0cy4KLQkgKiBKdW1wIG92ZXIgdmxhbiBoZWFkZXJzIGlm
IGFscmVhZHkgcHJlc2VudCwKLQkgKiBoZWxwZnVsIGZvciBRaW5RIHRvby4KLQkgKi8KLQllaCA9
IG10b2QobXAsIHN0cnVjdCBldGhlcl92bGFuX2hlYWRlciAqKTsKLQlpZiAoZWgtPmV2bF9lbmNh
cF9wcm90byA9PSBodG9ucyhFVEhFUlRZUEVfVkxBTikpIHsKLQkJZXR5cGUgPSBudG9ocyhlaC0+
ZXZsX3Byb3RvKTsKLQkJZWhkcmxlbiA9IEVUSEVSX0hEUl9MRU4gKyBFVEhFUl9WTEFOX0VOQ0FQ
X0xFTjsKLQl9IGVsc2UgewotCQlldHlwZSA9IG50b2hzKGVoLT5ldmxfZW5jYXBfcHJvdG8pOwot
CQllaGRybGVuID0gRVRIRVJfSERSX0xFTjsKLQl9Ci0KIAkvKiBTZXQgdGhlIGV0aGVyIGhlYWRl
ciBsZW5ndGggKi8KLQl2bGFuX21hY2lwX2xlbnMgfD0gZWhkcmxlbiA8PCBFMTAwMF9BRFZUWERf
TUFDTEVOX1NISUZUOworCXZsYW5fbWFjaXBfbGVucyB8PSBwa3QtPmVoZHJsZW4gPDwgRTEwMDBf
QURWVFhEX01BQ0xFTl9TSElGVDsKIAotCXN3aXRjaCAoZXR5cGUpIHsKKwlzd2l0Y2ggKHBrdC0+
ZXR5cGUpIHsKIAkJY2FzZSBFVEhFUlRZUEVfSVA6Ci0JCQlpcCA9IChzdHJ1Y3QgaXAgKikobXAt
Pm1fZGF0YSArIGVoZHJsZW4pOwotCQkJaXBfaGxlbiA9IGlwLT5pcF9obCA8PCAyOworCQkJaXAg
PSBwa3QtPmlwOwogCQkJaXBwcm90byA9IGlwLT5pcF9wOwogCQkJdHlwZV90dWNtZF9tbGhsIHw9
IEUxMDAwX0FEVlRYRF9UVUNNRF9JUFY0OwogCQkJYnJlYWs7CiAJCWNhc2UgRVRIRVJUWVBFX0lQ
VjY6Ci0JCQlpcDYgPSAoc3RydWN0IGlwNl9oZHIgKikobXAtPm1fZGF0YSArIGVoZHJsZW4pOwot
CQkJaXBfaGxlbiA9IHNpemVvZihzdHJ1Y3QgaXA2X2hkcik7CisJCQlpcDYgPSBwa3QtPmlwNjsK
IAkJCS8qIFhYWC1CWiB0aGlzIHdpbGwgZ28gYmFkbHkgaW4gY2FzZSBvZiBleHQgaGRycy4gKi8K
IAkJCWlwcHJvdG8gPSBpcDYtPmlwNl9ueHQ7CiAJCQl0eXBlX3R1Y21kX21saGwgfD0gRTEwMDBf
QURWVFhEX1RVQ01EX0lQVjY7CkBAIC0zODk1LDcgKzM4NjgsNyBAQAogCQkJYnJlYWs7CiAJfQog
Ci0Jdmxhbl9tYWNpcF9sZW5zIHw9IGlwX2hsZW47CisJdmxhbl9tYWNpcF9sZW5zIHw9IHBrdC0+
aXBfaGxlbjsKIAl0eXBlX3R1Y21kX21saGwgfD0gRTEwMDBfQURWVFhEX0RDTURfREVYVCB8IEUx
MDAwX0FEVlRYRF9EVFlQX0NUWFQ7CiAKIAlzd2l0Y2ggKGlwcHJvdG8pIHsKQEAgLTM5NDEsNiAr
MzkxNCwxNjcgQEAKICAgICAgICAgcmV0dXJuICgwKTsKIH0KIAorLyoKKyAqIEludGVsIHJlY29t
bWVuZHMgZW50aXJlIElQL1RDUCBoZWFkZXIgbGVuZ3RoIHJlc2lkZSBpbiBhIHNpbmdsZQorICog
YnVmZmVyLiBJZiBtdWx0aXBsZSBkZXNjcmlwdG9ycyBhcmUgdXNlZCB0byBkZXNjcmliZSB0aGUg
SVAgYW5kCisgKiBUQ1AgaGVhZGVyLCBlYWNoIGRlc2NyaXB0b3Igc2hvdWxkIGRlc2NyaWJlIG9u
ZSBvciBtb3JlCisgKiBjb21wbGV0ZSBoZWFkZXJzOyBkZXNjcmlwdG9ycyByZWZlcmVuY2luZyBv
bmx5IHBhcnRzIG9mIGhlYWRlcnMKKyAqIGFyZSBub3Qgc3VwcG9ydGVkLiBJZiBhbGwgbGF5ZXIg
aGVhZGVycyBhcmUgbm90IGNvYWxlc2NlZCBpbnRvCisgKiBhIHNpbmdsZSBidWZmZXIsIGVhY2gg
YnVmZmVyIHNob3VsZCBub3QgY3Jvc3MgYSA0S0IgYm91bmRhcnksCisgKiBvciBiZSBsYXJnZXIg
dGhhbiB0aGUgbWF4aW11bSByZWFkIHJlcXVlc3Qgc2l6ZS4KKyAqCisgKiBDb250cm9sbGVyIGFs
c28gcmVxdWlyZXMgbW9kaWZpbmcgSVAvVENQIGhlYWRlciB0byBtYWtlIFRTTyB3b3JrCisgKiBz
byB3ZSBmaXJzdGx5IGdldCBhIHdyaXRhYmxlIG1idWYgY2hhaW4gdGhlbiBjb2FsZXNjZSBldGhl
cm5ldC8KKyAqIElQL1RDUCBoZWFkZXIgaW50byBhIHNpbmdsZSBidWZmZXIgdG8gbWVldCB0aGUg
cmVxdWlyZW1lbnQgb2YKKyAqIGNvbnRyb2xsZXIuIFRoaXMgYWxzbyBzaW1wbGlmaWVzIElQL1RD
UC9VRFAgY2hlY2tzdW0gb2ZmbG9hZGluZworICogd2hpY2ggYWxzbyBoYXMgc2ltaWxpYXIgcmVz
dHJpY3Rpb25zLgorICovCitzdGF0aWMgaW50CitpZ2JfcHVsbHVwX2hlYWRlcnMoc3RydWN0IG1i
dWYgKiptX2hlYWRwLCB1MzIgY3N1bV9mbGFncywgc3RydWN0IGlnYl9wa3RfaW5mbyAqcGt0KQor
eworCXN0cnVjdCBtYnVmIAkJKm1faGVhZCA9ICptX2hlYWRwOworCXN0cnVjdCBldGhlcl92bGFu
X2hlYWRlciAqZWg7CisJdTE2IGV0eXBlOworCXUzMiBlaGRybGVuLCBpcF9obGVuLCBkb190c28s
IHBvZmY7CisjaWZkZWYgSU5FVAorCXN0cnVjdCBpcAkJKmlwOworI2VuZGlmCisjaWZkZWYgSU5F
VDYKKwlzdHJ1Y3QgaXA2X2hkcgkJKmlwNjsKKyNlbmRpZgorCXN0cnVjdCB0Y3BoZHIJCSp0aDsK
KworCWRvX3RzbyA9ICgoY3N1bV9mbGFncyAmIENTVU1fVFNPKSAhPSAwKTsKKwliemVybyhwa3Qs
IHNpemVvZihzdHJ1Y3QgaWdiX3BrdF9pbmZvKSk7CisKKwkvKgorCSAqIERldGVybWluZSB3aGVy
ZSBmcmFtZSBwYXlsb2FkIHN0YXJ0cy4KKwkgKiBKdW1wIG92ZXIgdmxhbiBoZWFkZXJzIGlmIGFs
cmVhZHkgcHJlc2VudCwKKwkgKiBoZWxwZnVsIGZvciBRaW5RIHRvby4KKwkgKi8KKwllaCA9IG10
b2QobV9oZWFkLCBzdHJ1Y3QgZXRoZXJfdmxhbl9oZWFkZXIgKik7CisJaWYgKGVoLT5ldmxfZW5j
YXBfcHJvdG8gPT0gaHRvbnMoRVRIRVJUWVBFX1ZMQU4pKSB7CisJCWV0eXBlID0gbnRvaHMoZWgt
PmV2bF9wcm90byk7CisJCWVoZHJsZW4gPSBFVEhFUl9IRFJfTEVOICsgRVRIRVJfVkxBTl9FTkNB
UF9MRU47CisJfSBlbHNlIHsKKwkJZXR5cGUgPSBudG9ocyhlaC0+ZXZsX2VuY2FwX3Byb3RvKTsK
KwkJZWhkcmxlbiA9IEVUSEVSX0hEUl9MRU47CisJfQorCQorCS8qIG1ha2UgbWJ1ZiBjaGFpbiB3
cml0YWJsZSAqLworCWlmIChtX2hlYWQtPm1fbmV4dCAhPSBOVUxMKSB7CisJCWlmIChNX1dSSVRB
QkxFKCptX2hlYWRwKSA9PSAwKSB7CisJCQltX2hlYWQgPSBtX2R1cCgqbV9oZWFkcCwgTV9OT1dB
SVQpOworCQkJbV9mcmVlbSgqbV9oZWFkcCk7CisJCQlpZiAobV9oZWFkID09IE5VTEwpIHsKKwkJ
CQkqbV9oZWFkcCA9IE5VTEw7CisJCQkJcmV0dXJuIChFTk9CVUZTKTsKKwkJCX0KKwkJCSptX2hl
YWRwID0gbV9oZWFkOworCQl9CisJfQorCisJLyogcHVsbCB1cCBldGhlcm5ldCBoZWFkZXIsIGFj
Y291bnRzIGZvciB2bGFuIHRhZyAqLworCW1faGVhZCA9IG1fcHVsbHVwKG1faGVhZCwgZWhkcmxl
bik7CisJaWYgKG1faGVhZCA9PSBOVUxMKSB7CisJCSptX2hlYWRwID0gTlVMTDsKKwkJcmV0dXJu
IChFTk9CVUZTKTsKKwl9CisKKwkvKiBwdWxsIHVwIGlwIGFuZCBnZXQgcG9pbnRlcnMgKi8KKwlz
d2l0Y2ggKGV0eXBlKSB7CisjaWZkZWYgSU5FVAorCQljYXNlIEVUSEVSVFlQRV9JUDoKKwkJCW1f
aGVhZCA9IG1fcHVsbHVwKG1faGVhZCwgZWhkcmxlbiArIHNpemVvZihzdHJ1Y3QgaXApKTsKKwkJ
CWlwID0gKHN0cnVjdCBpcCAqKShtdG9kKG1faGVhZCwgY2hhciAqKSArIGVoZHJsZW4pOworCQkJ
aXBfaGxlbiA9IGlwLT5pcF9obCA8PCAyOworCQkJcG9mZiA9IGVoZHJsZW4gKyBpcF9obGVuOwor
CQkJYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBJTkVUNgorCQljYXNlIEVUSEVSVFlQRV9JUFY2Ogor
CQkJbV9oZWFkID0gbV9wdWxsdXAobV9oZWFkLCBlaGRybGVuICsgc2l6ZW9mKHN0cnVjdCBpcDZf
aGRyKSk7CisJCQlpcDYgPSAoc3RydWN0IGlwNl9oZHIgKikobXRvZChtX2hlYWQsIGNoYXIgKikg
KyBlaGRybGVuKTsKKwkJCWlwX2hsZW4gPSBzaXplb2Yoc3RydWN0IGlwNl9oZHIpOworCQkJcG9m
ZiA9IGVoZHJsZW4gKyBpcF9obGVuOworCQkJYnJlYWs7CisjZW5kaWYKKwkJZGVmYXVsdDoKKwkJ
CWJyZWFrOworCX0KKworCWlmIChtX2hlYWQgPT0gTlVMTCkgeworCQkqbV9oZWFkcCA9IE5VTEw7
CisJCXJldHVybiAoRU5PQlVGUyk7CisJfQorCisJaWYgKGRvX3RzbykgeworCQkvKiBwdWxsIHVw
IFRDUCBoZWFkZXIgKi8KKwkJbV9oZWFkID0gbV9wdWxsdXAobV9oZWFkLCBwb2ZmICsgc2l6ZW9m
KHN0cnVjdCB0Y3BoZHIpKTsKKwkJaWYgKG1faGVhZCA9PSBOVUxMKSB7CisJCQkqbV9oZWFkcCA9
IE5VTEw7CisJCQlyZXR1cm4gKEVOT0JVRlMpOworCQl9CisJCXRoID0gKHN0cnVjdCB0Y3BoZHIg
KikobXRvZChtX2hlYWQsIGNoYXIgKikgKyBwb2ZmKTsKKwkJLyoKKwkJICogVFNPIHdvcmthcm91
bmQ6CisJCSAqICAgcHVsbCA0IG1vcmUgYnl0ZXMgb2YgZGF0YSBpbnRvIGl0LgorCQkgKi8KKwkJ
bV9oZWFkID0gbV9wdWxsdXAobV9oZWFkLCBwb2ZmICsgKHRoLT50aF9vZmYgPDwgMikgKyA0KTsK
KwkJaWYgKG1faGVhZCA9PSBOVUxMKSB7CisJCQkqbV9oZWFkcCA9IE5VTEw7CisJCQlyZXR1cm4g
KEVOT0JVRlMpOworCQl9CisJCXBrdC0+dGggPSAoc3RydWN0IHRjcGhkciAqKShtdG9kKG1faGVh
ZCwgY2hhciAqKSArIHBvZmYpOworCX0gZWxzZSBpZiAoY3N1bV9mbGFncyAmIENTVU1fVENQKSB7
CisJCW1faGVhZCA9IG1fcHVsbHVwKG1faGVhZCwgcG9mZiArIHNpemVvZihzdHJ1Y3QgdGNwaGRy
KSk7CisJCWlmIChtX2hlYWQgPT0gTlVMTCkgeworCQkJKm1faGVhZHAgPSBOVUxMOworCQkJcmV0
dXJuIChFTk9CVUZTKTsKKwkJfQorCQl0aCA9IChzdHJ1Y3QgdGNwaGRyICopKG10b2QobV9oZWFk
LCBjaGFyICopICsgcG9mZik7CisJCW1faGVhZCA9IG1fcHVsbHVwKG1faGVhZCwgcG9mZiArICh0
aC0+dGhfb2ZmIDw8IDIpKTsKKwkJaWYgKG1faGVhZCA9PSBOVUxMKSB7CisJCQkqbV9oZWFkcCA9
IE5VTEw7CisJCQlyZXR1cm4gKEVOT0JVRlMpOworCQl9CisJCXBrdC0+dGggPSAoc3RydWN0IHRj
cGhkciAqKShtdG9kKG1faGVhZCwgY2hhciAqKSArIHBvZmYpOworCX0gZWxzZSBpZiAoY3N1bV9m
bGFncyAmIENTVU1fVURQKSB7CisJCW1faGVhZCA9IG1fcHVsbHVwKG1faGVhZCwgcG9mZiArIHNp
emVvZihzdHJ1Y3QgdWRwaGRyKSk7CisJCWlmIChtX2hlYWQgPT0gTlVMTCkgeworCQkJKm1faGVh
ZHAgPSBOVUxMOworCQkJcmV0dXJuIChFTk9CVUZTKTsKKwkJfQorCX0KKworCS8qIGZpbmFsIGNh
cHR1cmUgb2YgaXAgcG9pbnRlciAqLworCXN3aXRjaCAoZXR5cGUpIHsKKyNpZmRlZiBJTkVUCisJ
CWNhc2UgRVRIRVJUWVBFX0lQOgorCQkJcGt0LT5pcCA9IChzdHJ1Y3QgaXAgKikobXRvZChtX2hl
YWQsIGNoYXIgKikgKyBlaGRybGVuKTsKKwkJCXBrdC0+aXA2ID0gTlVMTDsKKwkJCWJyZWFrOwor
I2VuZGlmCisjaWZkZWYgSU5FVDYKKwkJY2FzZSBFVEhFUlRZUEVfSVBWNjoKKwkJCXBrdC0+aXA2
ID0gKHN0cnVjdCBpcDZfaGRyICopKG10b2QobV9oZWFkLCBjaGFyICopICsgZWhkcmxlbik7CisJ
CQlwa3QtPmlwID0gTlVMTDsKKwkJCWJyZWFrOworI2VuZGlmCisJCWRlZmF1bHQ6CisJCQlicmVh
azsKKwl9CisJKm1faGVhZHAgPSBtX2hlYWQ7CisKKwkvKiByZXR1cm4gdGhlc2UgY2FsY3VsYXRl
ZCBwb2ludGVycy92YWx1ZXMgZm9yIHJlLXVzZSAqLworCXBrdC0+ZWhkcmxlbiA9IGVoZHJsZW47
CisJcGt0LT5ldHlwZSA9IGV0eXBlOworCXBrdC0+aXBfaGxlbiA9IGlwX2hsZW47CisKKwlyZXR1
cm4gKDApOworfQorCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogIEV4YW1pbmUgZWFjaCB0eF9i
dWZmZXIgaW4gdGhlIHVzZWQgcXVldWUuIElmIHRoZSBoYXJkd2FyZSBpcyBkb25lCmRpZmYgLU5h
dXIgaGVhZC9pZl9pZ2IuaCBwYXRjaC9pZl9pZ2IuaAotLS0gaGVhZC9pZl9pZ2IuaAkyMDE0LTAx
LTE0IDE0OjA4OjA0LjAwMDAwMDAwMCAtMDgwMAorKysgcGF0Y2gvaWZfaWdiLmgJMjAxNC0wMS0x
NCAxNDowNzowMS4wMDAwMDAwMDAgLTA4MDAKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCiAKLSAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMTMsIEludGVsIENvcnBvcmF0aW9u
IAorICBDb3B5cmlnaHQgKGMpIDIwMDEtMjAxNCwgSW50ZWwgQ29ycG9yYXRpb24gCiAgIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgIAogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCkBAIC0yMzcsOSArMjM3LDkgQEAKIAog
LyogT2ZmbG9hZCBiaXRzIGluIG1idWYgZmxhZyAqLwogI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMDAwMAotI2RlZmluZSBDU1VNX09GRkxPQUQJCShDU1VNX0lQfENTVU1fVENQfENTVU1fVURQ
fENTVU1fU0NUUCkKKyNkZWZpbmUgQ1NVTV9PRkZMT0FECQkoQ1NVTV9JUHxDU1VNX1RDUHxDU1VN
X1VEUHxDU1VNX1RTT3xDU1VNX1NDVFApCiAjZWxzZQotI2RlZmluZSBDU1VNX09GRkxPQUQJCShD
U1VNX0lQfENTVU1fVENQfENTVU1fVURQKQorI2RlZmluZSBDU1VNX09GRkxPQUQJCShDU1VNX0lQ
fENTVU1fVENQfENTVU1fVURQfENTVU1fVFNPKQogI2VuZGlmCiAKIC8qIERlZmluZSB0aGUgc3Rh
cnRpbmcgSW50ZXJydXB0IHJhdGUgcGVyIFF1ZXVlICovCkBAIC01MTMsNiArNTEzLDE1IEBACiAJ
YnVzX2RtYW1hcF90CXBtYXA7CS8qIGJ1c19kbWEgbWFwIGZvciBwYWNrZXQgKi8KIH07CiAKK3N0
cnVjdCBpZ2JfcGt0X2luZm8geworCXUxNgkJZXR5cGU7CisJdTMyCQllaGRybGVuOworCXUzMgkJ
aXBfaGxlbjsKKwlzdHJ1Y3QgaXAJKmlwOworCXN0cnVjdCBpcDZfaGRyCSppcDY7CisJc3RydWN0
IHRjcGhkcgkqdGg7Cit9OworCiAvKgogKiogRmluZCB0aGUgbnVtYmVyIG9mIHVucmVmcmVzaGVk
IFJYIGRlc2NyaXB0b3JzCiAqLwo=
--001a1134b612f2665504eff5a3dc--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2Bb0zg-tpzLve_mkuq7%2BfG1f-A9DgeKf8vqBpbrAK33s5Y%2B2fQ>