From owner-freebsd-net@freebsd.org Thu Jan 19 16:46:40 2017 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 14C88CB857D for ; Thu, 19 Jan 2017 16:46:40 +0000 (UTC) (envelope-from v.maffione@gmail.com) Received: from mail-ot0-x242.google.com (mail-ot0-x242.google.com [IPv6:2607:f8b0:4003:c0f::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CAADC13CF; Thu, 19 Jan 2017 16:46:39 +0000 (UTC) (envelope-from v.maffione@gmail.com) Received: by mail-ot0-x242.google.com with SMTP id 36so4827028otx.3; Thu, 19 Jan 2017 08:46:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=QFAI4F0Q3MSr0xXAeDGb3LdEYflG/rb7VDG0iPoRwEk=; b=LQh845OXAUD/h2AM4sT9Ci2aZhZQV5mTgZhgYhl7/JNQKAsu/2eWDApSN6+LCxCKb5 L8KORTjHjbJziqIhILCMU/pIBkrFhT9NThRmzqaWPn3Q5l5oL5l9mkvXVQcE9w21W/v9 42GYbOxdAko2S8gZExWB3mYFDUkh+NjsriMteP1bKA4MpAMPmY2qmuE0QpBoTPPIo3oX F8+mrIu+B5irG8K7AzkVQvVFohh8E3t5sUox4/vB6daq6zBvY2R+ZK+MFwcwCpDBl1N+ HVqgwQG3szib6M3miK3ld+BCL4RMUEMYeufJXILiEcxoisZ8uNUFJES6tNz7OO/F5qo1 syww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=QFAI4F0Q3MSr0xXAeDGb3LdEYflG/rb7VDG0iPoRwEk=; b=g9soHnglG6LeY12P/Ex4ngaoC3tE+A999hgBxcByxK8Ifld7F3wzA3kaZw4L2HGcP/ WBfSuYSxKgMQZ8BZNiCjS46SyCs2ZRXP9JuVY/3x0R7GoJMD87AyBUj0Aqtrq2/AJl1L Yprw+MrpV4MnIPo65/eHLk/v/9qvrdEjCIeZlH3SIOQNZZRvWfdZvadZmtmsayDKt8t+ ntgXvj3Fvo88iZb61eH1PYvJNL+uDHbESD0AimXejlIeeQHRIRkAaj1aSxD+8/hPCI3g ZTBUYCAUytSdLoTEgDjhZ8/6DuSU5ADiyxQ37UTYIYIeyCCkEpebTVDXVmRbem+Wu8ar 9PKQ== X-Gm-Message-State: AIkVDXK3RogBbMq/XpsO3uhDvXVD2HmbpV/Bk9hVkZt7xdKdhevwPbN+cN0izhlnmZXRoZhinKraV3Eyc0aZcw== X-Received: by 10.157.52.66 with SMTP id v60mr4571111otb.61.1484844399112; Thu, 19 Jan 2017 08:46:39 -0800 (PST) MIME-Version: 1.0 Received: by 10.157.6.166 with HTTP; Thu, 19 Jan 2017 08:46:38 -0800 (PST) In-Reply-To: References: From: Vincenzo Maffione Date: Thu, 19 Jan 2017 17:46:38 +0100 Message-ID: Subject: Re: Fix netmap emulated mode for FreeBSD 11 versions To: Luiz Otavio O Souza Cc: FreeBSD Net , Giuseppe Lettieri , Luigi Rizzo Content-Type: multipart/mixed; boundary=001a114152c2f51c52054675462a X-Content-Filtered-By: Mailman/MimeDel 2.1.23 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jan 2017 16:46:40 -0000 --001a114152c2f51c52054675462a Content-Type: text/plain; charset=UTF-8 Hi Luiz, I attached the patch, to be applied to the source code contained in this image: ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/amd64/amd64/ISO-IMAGES/11.0/FreeBSD-11.0-STABLE-amd64-20170105-r311441-disc1.iso.xz The patch is simply a backport from -head of some modifications involving the emulated netmap mode. I tried the minimize the changes to only (1) fix the crash and (2) fix another synchronization problem. I did different tests on em and vtnet interfaces, and the thing seems to work. Thanks, Vincenzo 2017-01-19 14:24 GMT+01:00 Luiz Otavio O Souza : > On 19 January 2017 at 09:11, Vincenzo Maffione wrote: > > Hi, > > > > A change in mb_free_ext() introduced in FreeBSD 11 versions broke the > > transmission support for netmap in emulated mode. This means immediate > > kernel crashes for netmap users in non-native (emulated) mode. > > > > This problem has been fixed in FreeBSD-12-CURRENT, which contains a > recent > > version of Netmap. However, FreeBSD 11 versions (release, stable) are > still > > affected, as they contain old Netmap versions. > > Is it possible to push the fix (provided by me) to the relevant > > release/stable branches? What is the procedure (I'm not familiar with the > > FreeBSD release engineering process)? > > Hi Vincenzo, > > Yeah, I saw that trying netmap on ARM (running with emulated drivers) > and I can confirm that it is fixed on -head. > > Please, send me the fix and I'll get it committed on stable/11 (this > is a common situation and the fix can be committed directly into the > affected branch). > > Thanks! > Luiz > -- Vincenzo Maffione --001a114152c2f51c52054675462a Content-Type: text/x-patch; charset=US-ASCII; name="11-stable-fix-netmap.patch" Content-Disposition: attachment; filename="11-stable-fix-netmap.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iy4lthgp0 ZGlmZiAtLWdpdCBhL3N5cy9kZXYvbmV0bWFwL25ldG1hcF9mcmVlYnNkLmMgYi9zeXMvZGV2L25l dG1hcC9uZXRtYXBfZnJlZWJzZC5jCmluZGV4IDI1YzljNWMuLjA0MGQxYWMgMTAwNjQ0Ci0tLSBh L3N5cy9kZXYvbmV0bWFwL25ldG1hcF9mcmVlYnNkLmMKKysrIGIvc3lzL2Rldi9uZXRtYXAvbmV0 bWFwX2ZyZWVic2QuYwpAQCAtMjE4LDMwICsyMTgsMTYgQEAgZ2VuZXJpY194bWl0X2ZyYW1lKHN0 cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgbWJ1ZiAqbSwKIHsKIAlpbnQgcmV0OwogCi0JLyoKLQkg KiBUaGUgbWJ1ZiBzaG91bGQgYmUgYSBjbHVzdGVyIGZyb20gb3VyIHNwZWNpYWwgcG9vbCwKLQkg KiBzbyB3ZSBkbyBub3QgbmVlZCB0byBkbyBhbiBtX2NvcHliYWNrIGJ1dCBqdXN0IGNvcHkKLQkg KiAoYW5kIGV2ZW50dWFsbHksIGp1c3QgcmVmZXJlbmNlIHRoZSBuZXRtYXAgYnVmZmVyKQotCSAq LworCS8qIExpbmsgdGhlIGV4dGVybmFsIHN0b3JhZ2UgdG8gdGhlIG5ldG1hcCBidWZmZXIsIHNv IHRoYXQKKwkgKiBubyBjb3B5IGlzIG5lY2Vzc2FyeS4gKi8KKwltLT5tX2V4dC5leHRfYnVmID0g bS0+bV9kYXRhID0gYWRkcjsKKwltLT5tX2V4dC5leHRfc2l6ZSA9IGxlbjsKIAotCWlmIChHRVRf TUJVRl9SRUZDTlQobSkgIT0gMSkgewotCQlEKCJpbnZhbGlkIHJlZmNudCAlZCBmb3IgJXAiLAot CQkJR0VUX01CVUZfUkVGQ05UKG0pLCBtKTsKLQkJcGFuaWMoImluIGdlbmVyaWNfeG1pdF9mcmFt ZSIpOwotCX0KLQkvLyBYWFggdGhlIGV4dF9zaXplIGNoZWNrIGlzIHVubmVjZXNzYXJ5IGlmIHdl IGxpbmsgdGhlIG5ldG1hcCBidWYKLQlpZiAobS0+bV9leHQuZXh0X3NpemUgPCBsZW4pIHsKLQkJ UkQoNSwgInNpemUgJWQgPCBsZW4gJWQiLCBtLT5tX2V4dC5leHRfc2l6ZSwgbGVuKTsKLQkJbGVu ID0gbS0+bV9leHQuZXh0X3NpemU7Ci0JfQotCWlmICgwKSB7IC8qIFhYWCBzZWVtcyB0byBoYXZl IG5lZ2xpZ2libGUgYmVuZWZpdHMgKi8KLQkJbS0+bV9leHQuZXh0X2J1ZiA9IG0tPm1fZGF0YSA9 IGFkZHI7Ci0JfSBlbHNlIHsKLQkJYmNvcHkoYWRkciwgbS0+bV9kYXRhLCBsZW4pOwotCX0KIAlt LT5tX2xlbiA9IG0tPm1fcGt0aGRyLmxlbiA9IGxlbjsKLQkvLyBpbmMgcmVmY291bnQuIEFsbCBv dXJzLCB3ZSBjb3VsZCBza2lwIHRoZSBhdG9taWMKLQlhdG9taWNfZmV0Y2hhZGRfaW50KFBOVF9N QlVGX1JFRkNOVChtKSwgMSk7CisKKwkvKiBtYnVmIHJlZmNudCBpcyBub3QgY29udGVuZGVkLCBu byBuZWVkIHRvIHVzZSBhdG9taWMKKwkgKiAoYSBtZW1vcnkgYmFycmllciBpcyBlbm91Z2gpLiAq LworCVNFVF9NQlVGX1JFRkNOVChtLCAyKTsKIAlNX0hBU0hUWVBFX1NFVChtLCBNX0hBU0hUWVBF X09QQVFVRSk7CiAJbS0+bV9wa3RoZHIuZmxvd2lkID0gcmluZ19ucjsKIAltLT5tX3BrdGhkci5y Y3ZpZiA9IGlmcDsgLyogdXNlZCBmb3IgdHggbm90aWZpY2F0aW9uICovCmRpZmYgLS1naXQgYS9z eXMvZGV2L25ldG1hcC9uZXRtYXBfZ2VuZXJpYy5jIGIvc3lzL2Rldi9uZXRtYXAvbmV0bWFwX2dl bmVyaWMuYwppbmRleCA3MjU0Nzg3Li4zMjBmN2IyIDEwMDY0NAotLS0gYS9zeXMvZGV2L25ldG1h cC9uZXRtYXBfZ2VuZXJpYy5jCisrKyBiL3N5cy9kZXYvbmV0bWFwL25ldG1hcF9nZW5lcmljLmMK QEAgLTkwLDUzICs5MCw0MCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IHN0YWJsZS8xMS9zeXMvZGV2 L25ldG1hcC9uZXRtYXBfZ2VuZXJpYy5jIDI5ODk1NSAyMDE2LTA1LTAzCiAvKgogICogRnJlZUJT RCBtYnVmIGFsbG9jYXRvci9kZWFsbG9jYXRvciBpbiBlbXVsYXRpb24gbW9kZToKICAqCi0gKiBX ZSBhbGxvY2F0ZSBFWFRfUEFDS0VUIG1idWYrY2x1c3RlcnMsIGJ1dCBuZWVkIHRvIHNldCBNX05P RlJFRQotICogc28gdGhhdCB0aGUgZGVzdHJ1Y3RvciwgaWYgaW52b2tlZCwgd2lsbCBub3QgZnJl ZSB0aGUgcGFja2V0LgotICogICAgSW4gcHJpbmNpcGxlIHdlIHNob3VsZCBzZXQgdGhlIGRlc3Ry dWN0b3Igb25seSBvbiBkZW1hbmQsCi0gKiBidXQgc2luY2UgdGhlcmUgbWlnaHQgYmUgYSByYWNl IHdlIGJldHRlciBkbyBpdCBvbiBhbGxvY2F0aW9uLgotICogQXMgYSBjb25zZXF1ZW5jZSwgd2Ug YWxzbyBuZWVkIHRvIHNldCB0aGUgZGVzdHJ1Y3RvciBvciB3ZQotICogd291bGQgbGVhayBidWZm ZXJzLgotICovCi0KLS8qCi0gKiBtYnVmIHdyYXBwZXJzCisgKiBXZSBhbGxvY2F0ZSBtYnVmcyB3 aXRoIG1fZ2V0aGRyKCksIHNpbmNlIHRoZSBtYnVmIGhlYWRlciBpcyBuZWVkZWQKKyAqIGJ5IHRo ZSBkcml2ZXIuIFdlIGFsc28gYXR0YWNoIGEgY3VzdG9tbHktcHJvdmlkZWQgZXh0ZXJuYWwgc3Rv cmFnZSwKKyAqIHdoaWNoIGluIHRoaXMgY2FzZSBpcyBhIG5ldG1hcCBidWZmZXIuIFdoZW4gY2Fs bGluZyBtX2V4dGFkZCgpLCBob3dldmVyCisgKiB3ZSBwYXNzIGEgTlVMTCBhZGRyZXNzLCBzaW5j ZSB0aGUgcmVhbCBhZGRyZXNzIChhbmQgbGVuZ3RoKSB3aWxsIGJlCisgKiBmaWxsZWQgaW4gYnkg bm1fb3NfZ2VuZXJpY194bWl0X2ZyYW1lKCkgcmlnaHQgYmVmb3JlIGNhbGxpbmcKKyAqIGlmX3Ry YW5zbWl0KCkuCisgKgorICogVGhlIGR0b3IgZnVuY3Rpb24gZG9lcyBub3RoaW5nLCBob3dldmVy IHdlIG5lZWQgaXQgc2luY2UgbWJfZnJlZV9leHQoKQorICogaGFzIGEgS0FTU0VSVCgpLCBjaGVj a2luZyB0aGF0IHRoZSBtYnVmIGR0b3IgZnVuY3Rpb24gaXMgbm90IE5VTEwuCiAgKi8KIAotLyog bWJ1ZiBkZXN0cnVjdG9yLCBhbHNvIG5lZWQgdG8gY2hhbmdlIHRoZSB0eXBlIHRvIEVYVF9FWFRS RUYsCi0gKiBhZGQgYW4gTV9OT0ZSRUUgZmxhZywgYW5kIHRoZW4gY2xlYXIgdGhlIGZsYWcgYW5k Ci0gKiBjaGFpbiBpbnRvIHVtYV96ZnJlZSh6b25lX3BhY2ssIG1mKQotICogKG9yIHJlaW5zdGFs bCB0aGUgYnVmZmVyID8pCi0gKi8KLSNkZWZpbmUgU0VUX01CVUZfREVTVFJVQ1RPUihtLCBmbikJ ZG8gewkJXAotCShtKS0+bV9leHQuZXh0X2ZyZWUgPSAodm9pZCAqKWZuOwlcCi0JKG0pLT5tX2V4 dC5leHRfdHlwZSA9IEVYVF9FWFRSRUY7CVwKLX0gd2hpbGUgKDApCitzdGF0aWMgdm9pZCB2b2lk X21idWZfZHRvcihzdHJ1Y3QgbWJ1ZiAqbSwgdm9pZCAqYXJnMSwgdm9pZCAqYXJnMikgeyB9CiAK LXN0YXRpYyB2b2lkCi1uZXRtYXBfZGVmYXVsdF9tYnVmX2Rlc3RydWN0b3Ioc3RydWN0IG1idWYg Km0pCitzdGF0aWMgaW5saW5lIHZvaWQKK1NFVF9NQlVGX0RFU1RSVUNUT1Ioc3RydWN0IG1idWYg Km0sIHZvaWQgKmZuKQogewotCS8qIHJlc3RvcmUgb3JpZ2luYWwgbWJ1ZiAqLwotCW0tPm1fZXh0 LmV4dF9idWYgPSBtLT5tX2RhdGEgPSBtLT5tX2V4dC5leHRfYXJnMTsKLQltLT5tX2V4dC5leHRf YXJnMSA9IE5VTEw7Ci0JbS0+bV9leHQuZXh0X3R5cGUgPSBFWFRfUEFDS0VUOwotCW0tPm1fZXh0 LmV4dF9mcmVlID0gTlVMTDsKLQlpZiAoR0VUX01CVUZfUkVGQ05UKG0pID09IDApCi0JCVNFVF9N QlVGX1JFRkNOVChtLCAxKTsKLQl1bWFfemZyZWUoem9uZV9wYWNrLCBtKTsKKwltLT5tX2V4dC5l eHRfZnJlZSA9IGZuID8gZm4gOiAodm9pZCAqKXZvaWRfbWJ1Zl9kdG9yOwogfQogCiBzdGF0aWMg aW5saW5lIHN0cnVjdCBtYnVmICoKIG5ldG1hcF9nZXRfbWJ1ZihpbnQgbGVuKQogewogCXN0cnVj dCBtYnVmICptOwotCW0gPSBtX2dldGNsKE1fTk9XQUlULCBNVF9EQVRBLCBNX1BLVEhEUik7Ci0J aWYgKG0pIHsKLQkJbS0+bV9mbGFncyB8PSBNX05PRlJFRTsJLyogWFhYTlA6IEFsbW9zdCBjZXJ0 YWlubHkgaW5jb3JyZWN0LiAqLwotCQltLT5tX2V4dC5leHRfYXJnMSA9IG0tPm1fZXh0LmV4dF9i dWY7IC8vIFhYWCBzYXZlCi0JCW0tPm1fZXh0LmV4dF9mcmVlID0gKHZvaWQgKiluZXRtYXBfZGVm YXVsdF9tYnVmX2Rlc3RydWN0b3I7Ci0JCW0tPm1fZXh0LmV4dF90eXBlID0gRVhUX0VYVFJFRjsK LQkJTkQoNSwgImNyZWF0ZSBtICVwIHJlZmNudCAlZCIsIG0sIEdFVF9NQlVGX1JFRkNOVChtKSk7 CisKKwkodm9pZClsZW47CisKKwltID0gbV9nZXRoZHIoTV9OT1dBSVQsIE1UX0RBVEEpOworCWlm IChtID09IE5VTEwpIHsKKwkJcmV0dXJuIG07CiAJfQorCisJbV9leHRhZGQobSwgTlVMTCAvKiBi dWYgKi8sIDAgLyogc2l6ZSAqLywgdm9pZF9tYnVmX2R0b3IsCisJCSBOVUxMLCBOVUxMLCAwLCBF WFRfTkVUX0RSVik7CisKIAlyZXR1cm4gbTsKIH0KIApAQCAtNDEyLDExICszOTksNiBAQCBzdGF0 aWMgdm9pZAogZ2VuZXJpY19tYnVmX2Rlc3RydWN0b3Ioc3RydWN0IG1idWYgKm0pCiB7CiAJbmV0 bWFwX2dlbmVyaWNfaXJxKE1CVUZfSUZQKG0pLCBNQlVGX1RYUShtKSwgTlVMTCk7Ci0jaWZkZWYg X19GcmVlQlNEX18KLQlpZiAobmV0bWFwX3ZlcmJvc2UpCi0JCVJEKDUsICJUeCBpcnEgKCVwKSBx dWV1ZSAlZCBpbmRleCAlZCIgLCBtLCBNQlVGX1RYUShtKSwgKGludCkodWludHB0cl90KW0tPm1f ZXh0LmV4dF9hcmcxKTsKLQluZXRtYXBfZGVmYXVsdF9tYnVmX2Rlc3RydWN0b3IobSk7Ci0jZW5k aWYgLyogX19GcmVlQlNEX18gKi8KIAlJRlJBVEUocmF0ZV9jdHgubmV3LnR4aXJxKyspOwogfQog CkBAIC00NDcsNyArNDI5LDcgQEAgZ2VuZXJpY19uZXRtYXBfdHhfY2xlYW4oc3RydWN0IG5ldG1h cF9rcmluZyAqa3JpbmcpCiAJCQkJLy8gWFhYIGhvdyBkbyB3ZSBwcm9jZWVkID8gYnJlYWsgPwog CQkJCXJldHVybiAtRU5PTUVNOwogCQkJfQotCQl9IGVsc2UgaWYgKEdFVF9NQlVGX1JFRkNOVCht KSAhPSAxKSB7CisJCX0gZWxzZSBpZiAoTUJVRl9SRUZDTlQobSkgIT0gMSkgewogCQkJYnJlYWs7 IC8qIFRoaXMgbWJ1ZiBpcyBzdGlsbCBidXN5OiBpdHMgcmVmY250IGlzIDIuICovCiAJCX0KIAkJ bisrOwpAQCAtNDc2LDYyICs0NTgsMzkgQEAgZ2VuZXJpY19uZXRtYXBfdHhfY2xlYW4oc3RydWN0 IG5ldG1hcF9rcmluZyAqa3JpbmcpCiAJcmV0dXJuIG47CiB9CiAKLQotLyoKLSAqIFdlIGhhdmUg cGVuZGluZyBwYWNrZXRzIGluIHRoZSBkcml2ZXIgYmV0d2VlbiBucl9od3RhaWwgKzEgYW5kIGh3 Y3VyLgotICogQ29tcHV0ZSBhIHBvc2l0aW9uIGluIHRoZSBtaWRkbGUsIHRvIGJlIHVzZWQgdG8g Z2VuZXJhdGUKLSAqIGEgbm90aWZpY2F0aW9uLgotICovCi1zdGF0aWMgaW5saW5lIHVfaW50Ci1n ZW5lcmljX3R4X2V2ZW50X21pZGRsZShzdHJ1Y3QgbmV0bWFwX2tyaW5nICprcmluZywgdV9pbnQg aHdjdXIpCi17Ci0JdV9pbnQgbiA9IGtyaW5nLT5ua3JfbnVtX3Nsb3RzOwotCXVfaW50IG50YyA9 IG5tX25leHQoa3JpbmctPm5yX2h3dGFpbCwgbi0xKTsKLQl1X2ludCBlOwotCi0JaWYgKGh3Y3Vy ID49IG50YykgewotCQllID0gKGh3Y3VyICsgbnRjKSAvIDI7Ci0JfSBlbHNlIHsgLyogd3JhcCBh cm91bmQgKi8KLQkJZSA9IChod2N1ciArIG4gKyBudGMpIC8gMjsKLQkJaWYgKGUgPj0gbikgewot CQkJZSAtPSBuOwotCQl9Ci0JfQotCi0JaWYgKHVubGlrZWx5KGUgPj0gbikpIHsKLQkJRCgiVGhp cyBjYW5ub3QgaGFwcGVuIik7Ci0JCWUgPSAwOwotCX0KLQotCXJldHVybiBlOwotfQotCi0vKgot ICogV2UgaGF2ZSBwZW5kaW5nIHBhY2tldHMgaW4gdGhlIGRyaXZlciBiZXR3ZWVuIG5yX2h3dGFp bCsxIGFuZCBod2N1ci4KLSAqIFNjaGVkdWxlIGEgbm90aWZpY2F0aW9uIGFwcHJveGltYXRlbHkg aW4gdGhlIG1pZGRsZSBvZiB0aGUgdHdvLgotICogVGhlcmUgaXMgYSByYWNlIGJ1dCB0aGlzIGlz IG9ubHkgY2FsbGVkIHdpdGhpbiB0eHN5bmMgd2hpY2ggZG9lcwotICogYSBkb3VibGUgY2hlY2su Ci0gKi8KIHN0YXRpYyB2b2lkCiBnZW5lcmljX3NldF90eF9ldmVudChzdHJ1Y3QgbmV0bWFwX2ty aW5nICprcmluZywgdV9pbnQgaHdjdXIpCiB7CisJdV9pbnQgbGltID0ga3JpbmctPm5rcl9udW1f c2xvdHMgLSAxOwogCXN0cnVjdCBtYnVmICptOwogCXVfaW50IGU7CisJdV9pbnQgbnRjID0gbm1f bmV4dChrcmluZy0+bnJfaHd0YWlsLCBsaW0pOyAvKiBuZXh0IHRvIGNsZWFuICovCiAKLQlpZiAo bm1fbmV4dChrcmluZy0+bnJfaHd0YWlsLCBrcmluZy0+bmtyX251bV9zbG90cyAtMSkgPT0gaHdj dXIpIHsKKwlpZiAobnRjID09IGh3Y3VyKSB7CiAJCXJldHVybjsgLyogYWxsIGJ1ZmZlcnMgYXJl IGZyZWUgKi8KIAl9Ci0JZSA9IGdlbmVyaWNfdHhfZXZlbnRfbWlkZGxlKGtyaW5nLCBod2N1cik7 CisKKwkvKgorCSAqIFdlIGhhdmUgcGVuZGluZyBwYWNrZXRzIGluIHRoZSBkcml2ZXIgYmV0d2Vl biBod3RhaWwrMQorCSAqIGFuZCBod2N1ciwgYW5kIHdlIGhhdmUgdG8gY2hvc2Ugb25lIG9mIHRo ZXNlIHNsb3QgdG8KKwkgKiBnZW5lcmF0ZSBhIG5vdGlmaWNhdGlvbi4KKwkgKiBUaGVyZSBpcyBh IHJhY2UgYnV0IHRoaXMgaXMgb25seSBjYWxsZWQgd2l0aGluIHR4c3luYyB3aGljaAorCSAqIGRv ZXMgYSBkb3VibGUgY2hlY2suCisJICovCisKKwkvKiBDaG9vc2UgdGhlIGZpcnN0IHBlbmRpbmcg c2xvdCwgdG8gYmUgc2FmZSBhZ2FpbnN0IGRyaXZlcgorCSAqIHJlb3JkZXJpbmcgbWJ1ZiB0cmFu c21pc3Npb25zLiAqLworCWUgPSBudGM7CiAKIAltID0ga3JpbmctPnR4X3Bvb2xbZV07Ci0JTkQo NSwgIlJlcXVlc3QgRXZlbnQgYXQgJWQgbWJ1ZiAlcCByZWZjbnQgJWQiLCBlLCBtLCBtID8gR0VU X01CVUZfUkVGQ05UKG0pIDogLTIgKTsKKwlORCg1LCAiUmVxdWVzdCBFdmVudCBhdCAlZCBtYnVm ICVwIHJlZmNudCAlZCIsIGUsIG0sIG0gPyBNQlVGX1JFRkNOVChtKSA6IC0yICk7CiAJaWYgKG0g PT0gTlVMTCkgewogCQkvKiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBl dmVudCBvbiB0aGUgbmV0bWFwCiAJCSAgIHNsb3QgJ2UnOiBUaGVyZSBpcyBub3RoaW5nIHRvIGRv LiAqLwogCQlyZXR1cm47CiAJfQogCWtyaW5nLT50eF9wb29sW2VdID0gTlVMTDsKLQlTRVRfTUJV Rl9ERVNUUlVDVE9SKG0sIGdlbmVyaWNfbWJ1Zl9kZXN0cnVjdG9yKTsKKwlTRVRfTUJVRl9ERVNU UlVDVE9SKG0sICh2b2lkICopZ2VuZXJpY19tYnVmX2Rlc3RydWN0b3IpOwogCiAJLy8gWFhYIHdt YigpID8KIAkvKiBEZWNyZW1lbnQgdGhlIHJlZmNvdW50IGFuIGZyZWUgaXQgaWYgd2UgaGF2ZSB0 aGUgbGFzdCBvbmUuICovCmRpZmYgLS1naXQgYS9zeXMvZGV2L25ldG1hcC9uZXRtYXBfa2Vybi5o IGIvc3lzL2Rldi9uZXRtYXAvbmV0bWFwX2tlcm4uaAppbmRleCAzZDBmOWQ5Li45ODUxOGRlIDEw MDY0NAotLS0gYS9zeXMvZGV2L25ldG1hcC9uZXRtYXBfa2Vybi5oCisrKyBiL3N5cy9kZXYvbmV0 bWFwL25ldG1hcF9rZXJuLmgKQEAgLTk3LDEzICs5NywxMSBAQCBzdHJ1Y3QgbmV0bWFwX2FkYXB0 ZXIgKm5ldG1hcF9nZXRuYShpZl90IGlmcCk7CiAjZW5kaWYKIAogI2lmIF9fRnJlZUJTRF92ZXJz aW9uID49IDExMDAwMjcKLSNkZWZpbmUgR0VUX01CVUZfUkVGQ05UKG0pICAgICAgKChtKS0+bV9l eHQuZXh0X2NudCA/ICooKG0pLT5tX2V4dC5leHRfY250KSA6IC0xKQotI2RlZmluZSBTRVRfTUJV Rl9SRUZDTlQobSwgeCkgICAqKChtKS0+bV9leHQuZXh0X2NudCkgPSB4Ci0jZGVmaW5lIFBOVF9N QlVGX1JFRkNOVChtKSAgICAgICgobSktPm1fZXh0LmV4dF9jbnQpCisjZGVmaW5lIE1CVUZfUkVG Q05UKG0pCQkoKG0pLT5tX2V4dC5leHRfY291bnQpCisjZGVmaW5lIFNFVF9NQlVGX1JFRkNOVCht LCB4KSAgIChtKS0+bV9leHQuZXh0X2NvdW50ID0geAogI2Vsc2UKLSNkZWZpbmUgR0VUX01CVUZf UkVGQ05UKG0pICAgICAgKChtKS0+bV9leHQucmVmX2NudCA/ICooKG0pLT5tX2V4dC5yZWZfY250 KSA6IC0xKQorI2RlZmluZSBNQlVGX1JFRkNOVChtKQkJKChtKS0+bV9leHQucmVmX2NudCA/ICoo KG0pLT5tX2V4dC5yZWZfY250KSA6IC0xKQogI2RlZmluZSBTRVRfTUJVRl9SRUZDTlQobSwgeCkg ICAqKChtKS0+bV9leHQucmVmX2NudCkgPSB4Ci0jZGVmaW5lIFBOVF9NQlVGX1JFRkNOVChtKSAg ICAgICgobSktPm1fZXh0LnJlZl9jbnQpCiAjZW5kaWYKIAogTUFMTE9DX0RFQ0xBUkUoTV9ORVRN QVApOwo= --001a114152c2f51c52054675462a--