From owner-svn-src-head@FreeBSD.ORG Sun Nov 14 23:15:30 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8C6D3106566B; Sun, 14 Nov 2010 23:15:29 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 95B178FC19; Sun, 14 Nov 2010 23:15:28 +0000 (UTC) Received: by wyb36 with SMTP id 36so1957546wyb.13 for ; Sun, 14 Nov 2010 15:15:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type; bh=YB32VYogyHA9YUdDFInEiSNegR+Wipl5gaZTCgXoh/w=; b=ujnuBYTko3jXu9L4oXf3m2bUgwTFrGKxYZy0eXj2I181DpG9avvgnzZdCPh3h61NUe a0vghwfLzVZG7j0qgShepaXXcCdD0/rml+XrMv5Vm8Xz2q9SZCWQ+mdEFWD4U9Y9BTBm 1sNTvUpyvYrh0oA87p9p03AAo9m04CL2cYLWA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; b=A3yWs9VBT3tixDPPLEl2wQzvrxC6UbEF5yh/T7m6mDpXMoplUQBrk3qko9nQiH24Ko 6Co7mCOLhqmtRZcuOasa+ciibJI3PLPqOJY+P4dOMu433m2/hodOsMQzfJk1yS3lHwba xT2PH95f23zDXQiMF+Iwj5qry4C/0fXbVxNjU= MIME-Version: 1.0 Received: by 10.216.7.210 with SMTP id 60mr6585535wep.30.1289776527350; Sun, 14 Nov 2010 15:15:27 -0800 (PST) Sender: yanegomi@gmail.com Received: by 10.216.198.27 with HTTP; Sun, 14 Nov 2010 15:15:27 -0800 (PST) In-Reply-To: References: <201011141842.oAEIgdqL090361@svn.freebsd.org> Date: Sun, 14 Nov 2010 15:15:27 -0800 X-Google-Sender-Auth: T_jtEs22wMTU5pKjxlbtx6oAiCM Message-ID: From: Garrett Cooper To: Gavin Atkinson Content-Type: multipart/mixed; boundary=0016364c7576c09e0404950b7fbf Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Ed Schouten Subject: Re: svn commit: r215310 - head/lib/libc/gen X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2010 23:15:30 -0000 --0016364c7576c09e0404950b7fbf Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Sun, Nov 14, 2010 at 3:06 PM, Gavin Atkinson wrote: > On Sun, 14 Nov 2010, Ed Schouten wrote: >> Author: ed >> Date: Sun Nov 14 18:42:39 2010 >> New Revision: 215310 >> URL: http://svn.freebsd.org/changeset/base/215310 >> >> Log: >> =A0 Always set errno to a sane value when pututxline(3) fails. >> >> =A0 For example, it will now return ESRCH when trying to replace a >> =A0 nonexistent entry with DEAD_PROCESS. >> >> Modified: >> =A0 head/lib/libc/gen/pututxline.c >> >> Modified: head/lib/libc/gen/pututxline.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/lib/libc/gen/pututxline.c =A0 =A0Sun Nov 14 18:24:12 2010 =A0 = =A0 =A0 =A0(r215309) >> +++ head/lib/libc/gen/pututxline.c =A0 =A0Sun Nov 14 18:42:39 2010 =A0 = =A0 =A0 =A0(r215310) >> @@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$"); >> =A0#include >> =A0#include >> =A0#include >> +#include >> =A0#include >> =A0#include >> =A0#include >> @@ -53,6 +54,7 @@ futx_open(const char *file) >> =A0 =A0 =A0 /* Safety check: never use broken files. */ >> =A0 =A0 =A0 if (_fstat(fd, &sb) !=3D -1 && sb.st_size % sizeof(struct fu= tx) !=3D 0) { >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 _close(fd); >> + =A0 =A0 =A0 =A0 =A0 =A0 errno =3D EINVAL; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 return (NULL); >> =A0 =A0 =A0 } > > setutxdb(3) returns EFTYPE here, for the same error. =A0Should this be th= e > same? > >> >> @@ -142,6 +144,7 @@ utx_active_remove(struct futx *fu) >> =A0 =A0 =A0 } >> >> =A0 =A0 =A0 fclose(fp); >> + =A0 =A0 errno =3D ESRCH; >> =A0 =A0 =A0 return (1); >> =A0} > > These possible errors should probably also now be documented in > pututxline(3). I submitted another patch earlier to Ed that does this and a bit more (attached). He was going to take a look at the patch and get back to me (and I CCed Bruce Evans for additional comments), but please feel free to chime in :). Thanks, -Garrett --0016364c7576c09e0404950b7fbf Content-Type: text/x-patch; charset=US-ASCII; name="utx-changes-2.patch" Content-Disposition: attachment; filename="utx-changes-2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ggijlnzh0 SW5kZXg6IGxpYi9saWJjL2dlbi9nZXR1dHhlbnQuMwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9n ZW4vZ2V0dXR4ZW50LjMJKHJldmlzaW9uIDIxNTMxNCkKKysrIGxpYi9saWJjL2dlbi9nZXR1dHhl bnQuMwkod29ya2luZyBjb3B5KQpAQCAtMzY3LDE2ICszNjcsMTUgQEAKIC5EdiBOVUxMCiB3aGVu IHRoZSBwcm92aWRlZAogLlZ0IHV0bXB4Ci1pcyBpbnZhbGlkLgotVGhpcyBtYXkgYmUgYmVjYXVz ZQoraXMgaW52YWxpZCwgb3IKIC5GYSB1dF90eXBlCi1pcyBpbnZhbGlkIG9yCi0uRmEgdXRfdHlw ZQogaGFzIGEgdmFsdWUgb2YKIC5EdiBERUFEX1BST0NFU1MKIGFuZCBhbiBlbnRyeSB3aXRoIGFu IGlkZW50aWZpZXIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaWVsZAogLkZhIHV0X2lkCi13 YXMgbm90IGZvdW5kLgord2FzIG5vdCBmb3VuZDsgdGhlIGdsb2JhbCB2YXJpYWJsZQorLlZhIGVy cm5vCitpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLgogLlBwCiBUaGUKIC5GbiBzZXR1dHhk YgpAQCAtMzg3LDggKzM4NiwyNiBAQAogaXMgc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci4KIC5T aCBFUlJPUlMKIEluIGFkZGl0aW9uIHRvIHRoZSBlcnJvciBjb25kaXRpb25zIGRlc2NyaWJlZCBp bgorLlhyIGZkb3BlbiAzICwKIC5YciBmb3BlbiAzICwKKy5YciBmc2VlayAzICwKKy5YciBvcGVu IDMgLAogdGhlCisuRm4gcHV0dXR4bGluZQorZnVuY3Rpb24gY2FuIGdlbmVyYXRlIHRoZSBmb2xs b3dpbmcgZXJyb3JzOgorLkJsIC10YWcgLXdpZHRoIEVyCisuSXQgQnEgRXIgRVNSQ0gKK1RoZSB2 YWx1ZSBvZgorLkZhIHV0X3R5cGUKK2lzIERFQURfUFJPQ0VTUywgYW5kIHRoZSBwcm9jZXNzIGVu dHJ5IGNvdWxkIG5vdCBiZSBmb3VuZC4KKy5JdCBCcSBFciBFSU5WQUwKK1RoZSB2YWx1ZSBvZgor LkZhIHV0X3R5cGUKK2lzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKy5F bAorSW4gYWRkaXRpb24gdG8gdGhlIGVycm9yIGNvbmRpdGlvbnMgZGVzY3JpYmVkIGluCisuWHIg Zm9wZW4gMyAsCit0aGUKIC5GbiBzZXR1dHhkYgogZnVuY3Rpb24gY2FuIGdlbmVyYXRlIHRoZSBm b2xsb3dpbmcgZXJyb3JzOgogLkJsIC10YWcgLXdpZHRoIEVyCkluZGV4OiBsaWIvbGliYy9nZW4v Z2V0dXR4ZW50LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvZ2VuL2dldHV0eGVudC5jCShyZXZp c2lvbiAyMTUzMTQpCisrKyBsaWIvbGliYy9nZW4vZ2V0dXR4ZW50LmMJKHdvcmtpbmcgY29weSkK QEAgLTExMiwyMiArMTEyLDIyIEBACiAJaWYgKHVkYiA9PSBVVFhEQl9MT0cpIHsKIAkJdWludDE2 X3QgbGVuOwogCi0JCWlmIChmcmVhZCgmbGVuLCBzaXplb2YgbGVuLCAxLCB1ZikgIT0gMSkKKwkJ aWYgKGZyZWFkKCZsZW4sIHNpemVvZihsZW4pLCAxLCB1ZikgIT0gMSkKIAkJCXJldHVybiAoLTEp OwogCQlsZW4gPSBiZTE2dG9oKGxlbik7CiAJCWlmIChsZW4gPiBzaXplb2YgKmZ1KSB7CiAJCQkv KiBGb3J3YXJkIGNvbXBhdGliaWxpdHkuICovCi0JCQlpZiAoZnJlYWQoZnUsIHNpemVvZiAqZnUs IDEsIHVmKSAhPSAxKQorCQkJaWYgKGZyZWFkKGZ1LCBzaXplb2YoKmZ1KSwgMSwgdWYpICE9IDEp CiAJCQkJcmV0dXJuICgtMSk7Ci0JCQlmc2Vlayh1ZiwgbGVuIC0gc2l6ZW9mICpmdSwgU0VFS19D VVIpOworCQkJZnNlZWsodWYsIGxlbiAtIHNpemVvZigqZnUpLCBTRUVLX0NVUik7CiAJCX0gZWxz ZSB7CiAJCQkvKiBQYXJ0aWFsIHJlY29yZC4gKi8KLQkJCW1lbXNldChmdSwgMCwgc2l6ZW9mICpm dSk7CisJCQltZW1zZXQoZnUsIDAsIHNpemVvZigqZnUpKTsKIAkJCWlmIChmcmVhZChmdSwgbGVu LCAxLCB1ZikgIT0gMSkKIAkJCQlyZXR1cm4gKC0xKTsKIAkJfQogCX0gZWxzZSB7Ci0JCWlmIChm cmVhZChmdSwgc2l6ZW9mICpmdSwgMSwgdWYpICE9IDEpCisJCWlmIChmcmVhZChmdSwgc2l6ZW9m KCpmdSksIDEsIHVmKSAhPSAxKQogCQkJcmV0dXJuICgtMSk7CiAJfQogCXJldHVybiAoMCk7CkBA IC0xNjMsNyArMTYzLDggQEAKIAkJCWNhc2UgTE9HSU5fUFJPQ0VTUzoKIAkJCWNhc2UgREVBRF9Q Uk9DRVNTOgogCQkJCWlmIChtZW1jbXAoZnUuZnVfaWQsIGlkLT51dF9pZCwKLQkJCQkgICAgTUlO KHNpemVvZiBmdS5mdV9pZCwgc2l6ZW9mIGlkLT51dF9pZCkpID09IDApCisJCQkJICAgIE1JTihz aXplb2YoZnUuZnVfaWQpLCBzaXplb2YoaWQtPnV0X2lkKSkpID09CisJCQkJICAgIDApCiAJCQkJ CWdvdG8gZm91bmQ7CiAJCQl9CiAJCQlicmVhazsKQEAgLTE5MSw3ICsxOTIsOCBAQAogCQljYXNl IFVTRVJfUFJPQ0VTUzoKIAkJY2FzZSBMT0dJTl9QUk9DRVNTOgogCQkJaWYgKHN0cm5jbXAoZnUu ZnVfbGluZSwgbGluZS0+dXRfbGluZSwKLQkJCSAgICBNSU4oc2l6ZW9mIGZ1LmZ1X2xpbmUsIHNp emVvZiBsaW5lLT51dF9saW5lKSkgPT0gMCkKKwkJCSAgICBNSU4oc2l6ZW9mKGZ1LmZ1X2xpbmUp LCBzaXplb2YobGluZS0+dXRfbGluZSkpKSA9PQorCQkJICAgIDApCiAJCQkJZ290byBmb3VuZDsK IAkJCWJyZWFrOwogCQl9CkBAIC0yMTIsNyArMjE0LDcgQEAKIAogCQlzd2l0Y2ggKGZ1LmZ1X3R5 cGUpIHsKIAkJY2FzZSBVU0VSX1BST0NFU1M6Ci0JCQlpZiAoc3RybmNtcChmdS5mdV91c2VyLCB1 c2VyLCBzaXplb2YgZnUuZnVfdXNlcikgPT0gMCkKKwkJCWlmIChzdHJuY21wKGZ1LmZ1X3VzZXIs IHVzZXIsIHNpemVvZihmdS5mdV91c2VyKSkgPT0gMCkKIAkJCQlnb3RvIGZvdW5kOwogCQkJYnJl YWs7CiAJCX0KSW5kZXg6IGxpYi9saWJjL2dlbi9wdXR1dHhsaW5lLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g bGliL2xpYmMvZ2VuL3B1dHV0eGxpbmUuYwkocmV2aXNpb24gMjE1MzE0KQorKysgbGliL2xpYmMv Z2VuL3B1dHV0eGxpbmUuYwkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQAogc3RhdGlj IEZJTEUgKgogZnV0eF9vcGVuKGNvbnN0IGNoYXIgKmZpbGUpCiB7CisJc3RydWN0IHN0YXQgc2I7 CisJRklMRSAqZnA7CiAJaW50IGZkOwotCUZJTEUgKmZwOwotCXN0cnVjdCBzdGF0IHNiOwogCiAJ ZmQgPSBfb3BlbihmaWxlLCBPX0NSRUFUfE9fUkRXUnxPX0VYTE9DSywgMDY0NCk7CiAJaWYgKGZk IDwgMCkKQEAgLTU0LDcgKzU0LDcgQEAKIAkvKiBTYWZldHkgY2hlY2s6IG5ldmVyIHVzZSBicm9r ZW4gZmlsZXMuICovCiAJaWYgKF9mc3RhdChmZCwgJnNiKSAhPSAtMSAmJiBzYi5zdF9zaXplICUg c2l6ZW9mKHN0cnVjdCBmdXR4KSAhPSAwKSB7CiAJCV9jbG9zZShmZCk7Ci0JCWVycm5vID0gRUlO VkFMOworCQllcnJubyA9IEVGVFlQRTsKIAkJcmV0dXJuIChOVUxMKTsKIAl9CiAJCkBAIC02Mywx NiArNjMsMTYgQEAKIAkJX2Nsb3NlKGZkKTsKIAkJcmV0dXJuIChOVUxMKTsKIAl9Ci0KIAlyZXR1 cm4gKGZwKTsKIH0KIAogc3RhdGljIGludAogdXR4X2FjdGl2ZV9hZGQoY29uc3Qgc3RydWN0IGZ1 dHggKmZ1KQogeworCXN0cnVjdCBmdXR4IGZlOwogCUZJTEUgKmZwOwotCXN0cnVjdCBmdXR4IGZl OwogCW9mZl90IHBhcnRpYWwgPSAtMTsKKwlpbnQgZXJyb3IsIHJldDsKIAogCS8qCiAJICogUmVn aXN0ZXIgdXNlciBsb2dpbiBzZXNzaW9ucy4gIE92ZXJ3cml0ZSBlbnRyaWVzIG9mIHNlc3Npb25z CkBAIC04MCwxNiArODAsMTcgQEAKIAkgKi8KIAlmcCA9IGZ1dHhfb3BlbihfUEFUSF9VVFhfQUNU SVZFKTsKIAlpZiAoZnAgPT0gTlVMTCkKLQkJcmV0dXJuICgxKTsKLQl3aGlsZSAoZnJlYWQoJmZl LCBzaXplb2YgZmUsIDEsIGZwKSA9PSAxKSB7CisJCXJldHVybiAoLTEpOworCXdoaWxlIChmcmVh ZCgmZmUsIHNpemVvZihmZSksIDEsIGZwKSA9PSAxKSB7CiAJCXN3aXRjaCAoZmUuZnVfdHlwZSkg ewogCQljYXNlIFVTRVJfUFJPQ0VTUzoKIAkJY2FzZSBJTklUX1BST0NFU1M6CiAJCWNhc2UgTE9H SU5fUFJPQ0VTUzoKIAkJY2FzZSBERUFEX1BST0NFU1M6CiAJCQkvKiBPdmVyd3JpdGUgd2hlbiB1 dF9pZCBtYXRjaGVzLiAqLwotCQkJaWYgKG1lbWNtcChmdS0+ZnVfaWQsIGZlLmZ1X2lkLCBzaXpl b2YgZmUuZnVfaWQpID09IDApIHsKLQkJCQlmc2Vla28oZnAsIC0ob2ZmX3Qpc2l6ZW9mIGZlLCBT RUVLX0NVUik7CisJCQlpZiAobWVtY21wKGZ1LT5mdV9pZCwgZmUuZnVfaWQsIHNpemVvZihmZS5m dV9pZCkpID09CisJCQkgICAgMCkgeworCQkJCXJldCA9IGZzZWVrbyhmcCwgLShvZmZfdClzaXpl b2YoZmUpLCBTRUVLX0NVUik7CiAJCQkJZ290byBleGFjdDsKIAkJCX0KIAkJCWlmIChmZS5mdV90 eXBlICE9IERFQURfUFJPQ0VTUykKQEAgLTk3LDU1ICs5OCw3MyBAQAogCQkJLyogRkFMTFRIUk9V R0ggKi8KIAkJZGVmYXVsdDoKIAkJCS8qIEFsbG93IHVzIHRvIG92ZXJ3cml0ZSB1bnVzZWQgcmVj b3Jkcy4gKi8KLQkJCWlmIChwYXJ0aWFsID09IC0xKQotCQkJCXBhcnRpYWwgPSBmdGVsbG8oZnAp IC0gKG9mZl90KXNpemVvZiBmZTsKKwkJCWlmIChwYXJ0aWFsID09IC0xKSB7CisJCQkJcGFydGlh bCA9IGZ0ZWxsbyhmcCk7CisJCQkJLyogCisJCQkJICogRGlzdGluZ3Vpc2ggZXJyb3JzIGZyb20g dmFsaWQgdmFsdWVzIHNvIHdlCisJCQkJICogZG9uJ3Qgb3ZlcndyaXRlIGdvb2QgZGF0YSBieSBh Y2NpZGVudC4KKwkJCQkgKi8KKwkJCQlpZiAocGFydGlhbCAhPSAtMSkKKwkJCQkJcGFydGlhbCAt PSAob2ZmX3Qpc2l6ZW9mKGZlKTsKKwkJCX0KIAkJCWJyZWFrOwogCQl9CiAJfQotCQorCiAJLyoK IAkgKiBObyBleGFjdCBtYXRjaCBmb3VuZC4gIFVzZSB0aGUgcGFydGlhbCBtYXRjaC4gIElmIG5v IHBhcnRpYWwKIAkgKiBtYXRjaCB3YXMgZm91bmQsIGp1c3QgYXBwZW5kIGEgbmV3IHJlY29yZC4K IAkgKi8KIAlpZiAocGFydGlhbCAhPSAtMSkKLQkJZnNlZWtvKGZwLCBwYXJ0aWFsLCBTRUVLX1NF VCk7CisJCXJldCA9IGZzZWVrbyhmcCwgcGFydGlhbCwgU0VFS19TRVQpOwogZXhhY3Q6Ci0JZndy aXRlKGZ1LCBzaXplb2YgKmZ1LCAxLCBmcCk7CisJaWYgKHJldCA9PSAtMSkKKwkJZXJyb3IgPSBl cnJubzsKKwllbHNlIGlmIChmd3JpdGUoZnUsIHNpemVvZigqZnUpLCAxLCBmcCkgPCAxKQorCQll cnJvciA9IGVycm5vOworCWVsc2UKKwkJZXJyb3IgPSAwOwogCWZjbG9zZShmcCk7Ci0JcmV0dXJu ICgwKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAoZXJyb3IgPT0gMCA/IDAgOiAxKTsKIH0K IAogc3RhdGljIGludAogdXR4X2FjdGl2ZV9yZW1vdmUoc3RydWN0IGZ1dHggKmZ1KQogeworCXN0 cnVjdCBmdXR4IGZlOwogCUZJTEUgKmZwOwotCXN0cnVjdCBmdXR4IGZlOworCWludCBlcnJvciwg cmV0OwogCiAJLyoKIAkgKiBSZW1vdmUgdXNlciBsb2dpbiBzZXNzaW9ucywgaGF2aW5nIHRoZSBz YW1lIHV0X2lkLgogCSAqLwogCWZwID0gZnV0eF9vcGVuKF9QQVRIX1VUWF9BQ1RJVkUpOwogCWlm IChmcCA9PSBOVUxMKQotCQlyZXR1cm4gKDEpOwotCXdoaWxlIChmcmVhZCgmZmUsIHNpemVvZiBm ZSwgMSwgZnApID09IDEpIHsKKwkJcmV0dXJuICgtMSk7CisJZXJyb3IgPSBFU1JDSDsKKwlyZXQg PSAtMTsKKwl3aGlsZSAoZnJlYWQoJmZlLCBzaXplb2YoZmUpLCAxLCBmcCkgPT0gMSAmJiByZXQg IT0gMCkKIAkJc3dpdGNoIChmZS5mdV90eXBlKSB7CiAJCWNhc2UgVVNFUl9QUk9DRVNTOgogCQlj YXNlIElOSVRfUFJPQ0VTUzoKIAkJY2FzZSBMT0dJTl9QUk9DRVNTOgotCQkJaWYgKG1lbWNtcChm dS0+ZnVfaWQsIGZlLmZ1X2lkLCBzaXplb2YgZmUuZnVfaWQpICE9IDApCisJCQlpZiAobWVtY21w KGZ1LT5mdV9pZCwgZmUuZnVfaWQsIHNpemVvZihmZS5mdV9pZCkpICE9IDApCiAJCQkJY29udGlu dWU7CiAKIAkJCS8qIFRlcm1pbmF0ZSBzZXNzaW9uLiAqLwotCQkJZnNlZWtvKGZwLCAtKG9mZl90 KXNpemVvZiBmZSwgU0VFS19DVVIpOwotCQkJZndyaXRlKGZ1LCBzaXplb2YgKmZ1LCAxLCBmcCk7 Ci0JCQlmY2xvc2UoZnApOwotCQkJcmV0dXJuICgwKTsKKwkJCWlmIChmc2Vla28oZnAsIC0ob2Zm X3Qpc2l6ZW9mKGZlKSwgU0VFS19DVVIpID09IC0xKQorCQkJCWVycm9yID0gZXJybm87CisJCQll bHNlIGlmIChmd3JpdGUoZnUsIHNpemVvZigqZnUpLCAxLCBmcCkgPCAxKQorCQkJCWVycm9yID0g ZXJybm87CisJCQllbHNlCisJCQkJcmV0ID0gMDsKKwogCQl9Ci0JfQogCiAJZmNsb3NlKGZwKTsK LQllcnJubyA9IEVTUkNIOwotCXJldHVybiAoMSk7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4g KHJldCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNTgsOSArMTc3LDEyIEBACiBzdGF0aWMgaW50 CiB1dHhfbGFzdGxvZ2luX2FkZChjb25zdCBzdHJ1Y3QgZnV0eCAqZnUpCiB7CisJc3RydWN0IGZ1 dHggZmU7CiAJRklMRSAqZnA7Ci0Jc3RydWN0IGZ1dHggZmU7CisJaW50IGVycm9yLCByZXQ7CiAK KwlyZXQgPSAwOworCiAJLyoKIAkgKiBXcml0ZSBhbiBlbnRyeSB0byBsYXN0bG9naW4uICBPdmVy d3JpdGUgdGhlIGVudHJ5IGlmIHRoZQogCSAqIGN1cnJlbnQgdXNlciBhbHJlYWR5IGhhcyBhbiBl bnRyeS4gIElmIG5vdCwgYXBwZW5kIGEgbmV3CkBAIC0xNjgsMjUgKzE5MCwzMSBAQAogCSAqLwog CWZwID0gZnV0eF9vcGVuKF9QQVRIX1VUWF9MQVNUTE9HSU4pOwogCWlmIChmcCA9PSBOVUxMKQot CQlyZXR1cm4gKDEpOworCQlyZXR1cm4gKC0xKTsKIAl3aGlsZSAoZnJlYWQoJmZlLCBzaXplb2Yg ZmUsIDEsIGZwKSA9PSAxKSB7CiAJCWlmIChzdHJuY21wKGZ1LT5mdV91c2VyLCBmZS5mdV91c2Vy LCBzaXplb2YgZmUuZnVfdXNlcikgIT0gMCkKIAkJCWNvbnRpbnVlOwotCQkKKwogCQkvKiBGb3Vu ZCBhIHByZXZpb3VzIGxhc3Rsb2dpbiBlbnRyeSBmb3IgdGhpcyB1c2VyLiAqLwotCQlmc2Vla28o ZnAsIC0ob2ZmX3Qpc2l6ZW9mIGZlLCBTRUVLX0NVUik7CisJCXJldCA9IGZzZWVrbyhmcCwgLShv ZmZfdClzaXplb2YgZmUsIFNFRUtfQ1VSKTsKIAkJYnJlYWs7CiAJfQotCWZ3cml0ZShmdSwgc2l6 ZW9mICpmdSwgMSwgZnApOworCWlmIChyZXQgPT0gLTEpCisJCWVycm9yID0gZXJybm87CisJZWxz ZSBpZiAoZndyaXRlKGZ1LCBzaXplb2YgKmZ1LCAxLCBmcCkgPCAxKSB7CisJCWVycm9yID0gZXJy bm87CisJCXJldCA9IC0xOworCX0KIAlmY2xvc2UoZnApOwotCXJldHVybiAoMCk7CisJZXJybm8g PSBlcnJvcjsKKwlyZXR1cm4gKHJldCk7CiB9CiAKIHN0YXRpYyB2b2lkCiB1dHhfbGFzdGxvZ2lu X3VwZ3JhZGUodm9pZCkKIHsKKwlzdHJ1Y3Qgc3RhdCBzYjsKIAlpbnQgZmQ7Ci0Jc3RydWN0IHN0 YXQgc2I7CiAKIAlmZCA9IF9vcGVuKF9QQVRIX1VUWF9MQVNUTE9HSU4sIE9fUkRXUiwgMDY0NCk7 CiAJaWYgKGZkIDwgMCkKQEAgLTIwNSw5ICsyMzMsOSBAQAogc3RhdGljIGludAogdXR4X2xvZ19h ZGQoY29uc3Qgc3RydWN0IGZ1dHggKmZ1KQogewotCWludCBmZDsKKwlzdHJ1Y3QgaW92ZWMgdmVj WzJdOworCWludCBlcnJvciwgZmQ7CiAJdWludDE2X3QgbDsKLQlzdHJ1Y3QgaW92ZWMgdmVjWzJd OwogCiAJLyoKIAkgKiBBcHBlbmQgYW4gZW50cnkgdG8gdGhlIGxvZyBmaWxlLiAgV2Ugb25seSBu ZWVkIHRvIGFwcGVuZApAQCAtMjE1LDE5ICsyNDMsMjMgQEAKIAkgKiB6ZXJvLWJ5dGVzLiAgUHJl cGVuZCBhIGxlbmd0aCBmaWVsZCwgaW5kaWNhdGluZyB0aGUgbGVuZ3RoIG9mCiAJICogdGhlIHJl Y29yZCwgZXhjbHVkaW5nIHRoZSBsZW5ndGggZmllbGQgaXRzZWxmLgogCSAqLwotCWZvciAobCA9 IHNpemVvZiAqZnU7IGwgPiAwICYmICgoY29uc3QgY2hhciAqKWZ1KVtsIC0gMV0gPT0gJ1wwJzsg bC0tKTsKKwlmb3IgKGwgPSBzaXplb2YoKmZ1KTsgbCA+IDAgJiYgKChjb25zdCBjaGFyICopZnUp W2wgLSAxXSA9PSAnXDAnOyBsLS0pIDsKIAl2ZWNbMF0uaW92X2Jhc2UgPSAmbDsKLQl2ZWNbMF0u aW92X2xlbiA9IHNpemVvZiBsOworCXZlY1swXS5pb3ZfbGVuID0gc2l6ZW9mKGwpOwogCXZlY1sx XS5pb3ZfYmFzZSA9IF9fREVDT05TVCh2b2lkICosIGZ1KTsKIAl2ZWNbMV0uaW92X2xlbiA9IGw7 CiAJbCA9IGh0b2JlMTYobCk7CiAKIAlmZCA9IF9vcGVuKF9QQVRIX1VUWF9MT0csIE9fQ1JFQVR8 T19XUk9OTFl8T19BUFBFTkQsIDA2NDQpOwogCWlmIChmZCA8IDApCi0JCXJldHVybiAoMSk7Ci0J X3dyaXRldihmZCwgdmVjLCAyKTsKKwkJcmV0dXJuICgtMSk7CisJaWYgKF93cml0ZXYoZmQsIHZl YywgMikgPT0gLTEpCisJCWVycm9yID0gZXJybm87CisJZWxzZQorCQllcnJvciA9IDA7CiAJX2Ns b3NlKGZkKTsKLQlyZXR1cm4gKDApOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIChlcnJvciA9 PSAwID8gMCA6IDEpOwogfQogCiBzdHJ1Y3QgdXRtcHggKgpAQCAtMjM3LDcgKzI2OSw3IEBACiAJ aW50IGJhZCA9IDA7CiAKIAl1dHhfdG9fZnV0eCh1dG1weCwgJmZ1KTsKLQkKKwogCXN3aXRjaCAo ZnUuZnVfdHlwZSkgewogCWNhc2UgQk9PVF9USU1FOgogCWNhc2UgU0hVVERPV05fVElNRToKQEAg LTI2Nyw2ICsyOTksNyBAQAogCQkJcmV0dXJuIChOVUxMKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoK KwkJZXJybm8gPSBFSU5WQUw7CiAJCXJldHVybiAoTlVMTCk7CiAJfQogCkluZGV4OiBsaWIvbGli Yy9nZW4vdXR4ZGIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9nZW4vdXR4ZGIuYwkocmV2aXNp b24gMjE1MzE0KQorKysgbGliL2xpYmMvZ2VuL3V0eGRiLmMJKHdvcmtpbmcgY29weSkKQEAgLTEz Miw5ICsxMzIsOCBAQAogCQl1dCA9IGNhbGxvYygxLCBzaXplb2YgKnV0KTsKIAkJaWYgKHV0ID09 IE5VTEwpCiAJCQlyZXR1cm4gKE5VTEwpOwotCX0gZWxzZSB7CisJfSBlbHNlCiAJCW1lbXNldCh1 dCwgMCwgc2l6ZW9mICp1dCk7Ci0JfQogCiAJc3dpdGNoIChmdS0+ZnVfdHlwZSkgewogCWNhc2Ug Qk9PVF9USU1FOgo= --0016364c7576c09e0404950b7fbf--