From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-29808-1520455420-2-8412539164042850645 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no ("Email failed DMARC policy for domain") X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES unknown, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='CN', FromHeader='com', MailFrom='org' X-Spam-charsets: X-IgnoreVacation: yes ("Email failed DMARC policy for domain") X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: linux-usb-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1520455418; b=BgqEpmuiphEV6WLJtl0mDN742qjexd1KZ8TWFduvHsNHE4B A4kYj297WX16wRElXs1IKtP9tArjCOpjWFlyxFPMl0qKNhXKVa1DvYierynht/Rq OuEbpB+V0lWl0ZZpYF3shoW4EFHFURmjtQwVNIvVz9VtlTtN4tHfLQLwC2O4/BHp BizzQj5vYXMWdwT6ipv1IVqXFx3OhvNDHbWAEYYu0Um6DEP8Hpvqgm0yv0Lc+430 RSBbP7aY95/TerwjPRpyri5jzxxnrMUVZ4o1ZBRtZEEKS+Fvgb3ZXnS5hgU6LznE r1YD6GATEYQ8uE1T2n9K4preJA5COyXfpjE1PIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :in-reply-to:references:in-reply-to:references:sender:list-id; s=arctest; t=1520455418; bh=j97GHQTCWs2qloq94a43JEkDxqG9Tma3eFS iB+rPQOY=; b=Mv7CNiac3KLwNTa853AzqIL0SFiiZgXvnRiHMOkc41peI0/CeyY m1CSZfXCPd3OU+c+2beiRVQd6RbtrWaYSHHjguZmIvn2jCHETuxXMQPacXgbKiFF GQ9sDD7DYloTZmJIUIQANvSWiCDw8aiYjqheJi1rLtE8lbP9T6Lemg9yMk58o7R8 RHIuuLYDCxMplu9mEKVq75UPpfA16ldKSoDRBD+v7AgCAdPfGpBxAcgVRZFX/OO/ frJWAer9L6ApsalGpMp2dCWP+yHfWlz+B3pSsU1PlaLWCdBT61FsDHHn+VF9xlIf cnGiYKn4Uvs4gJWdp4YduhSld0zmLYqo+Nw== ARC-Authentication-Results: i=1; mx5.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=fail (p=none,has-list-id=yes,d=none) header.from=osg.samsung.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-category=clean score=25 state=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=osg.samsung.com header.result=pass header_org.domain=samsung.com header_org.result=pass header_is_org_domain=no Authentication-Results: mx5.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=fail (p=none,has-list-id=yes,d=none) header.from=osg.samsung.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-category=clean score=25 state=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=osg.samsung.com header.result=pass header_org.domain=samsung.com header_org.result=pass header_is_org_domain=no Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964819AbeCGUmy (ORCPT ); Wed, 7 Mar 2018 15:42:54 -0500 Received: from osg.samsung.com ([64.30.133.232]:40207 "EHLO osg.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934750AbeCGUmv (ORCPT ); Wed, 7 Mar 2018 15:42:51 -0500 X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References" From: Shuah Khan To: valentina.manea.m@gmail.com, shuah@kernel.org, gregkh@linuxfoundation.org Cc: Shuah Khan , yuyang.du@intel.com, k.opasiak@samsung.com, nobuo.iwata@fujixerox.co.jp, julien.boibessot@armadeus.com, jdieter@lesbg.com, peter.senna@gmail.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] usbip: tools: change to use new error codes in server reply messages Date: Wed, 7 Mar 2018 13:42:26 -0700 Message-Id: <0c71a0f246feec53ef79b8ea827767a5c0f76097.1520455011.git.shuahkh@osg.samsung.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: References: In-Reply-To: References: Sender: linux-usb-owner@vger.kernel.org X-Mailing-List: linux-usb@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: Changed usbip_network, usbip_attach, usbip_list, and usbipd to use and propagate the new error codes in server reply messages. usbip_net_recv_op_common() is changed to take a pointer to status return the status returned in the op_common.status to callers. usbip_attach and usbip_list use the common interface to print error messages to indicate why the request failed. With this change the messages say why a request failed: - when a client requests a device that is already exported: usbip attach -r server_name -b 3-10.2 usbip: error: Attach Request for 3-10.2 failed - Device busy (exported) - when a client requests a device that isn't exportable, usbip attach -r server_name -b 3-10.4 usbip: error: Attach Request for 3-10.4 failed - Device not found Signed-off-by: Shuah Khan --- tools/usb/usbip/src/usbip_attach.c | 11 +++++------ tools/usb/usbip/src/usbip_list.c | 6 ++++-- tools/usb/usbip/src/usbip_network.c | 6 +++++- tools/usb/usbip/src/usbip_network.h | 2 +- tools/usb/usbip/src/usbipd.c | 18 +++++++++--------- 5 files changed, 24 insertions(+), 19 deletions(-) diff --git a/tools/usb/usbip/src/usbip_attach.c b/tools/usb/usbip/src/usbip_attach.c index f60738735398..ba88728483ff 100644 --- a/tools/usb/usbip/src/usbip_attach.c +++ b/tools/usb/usbip/src/usbip_attach.c @@ -135,6 +135,7 @@ static int query_import_device(int sockfd, char *busid) struct op_import_request request; struct op_import_reply reply; uint16_t code = OP_REP_IMPORT; + int status; memset(&request, 0, sizeof(request)); memset(&reply, 0, sizeof(reply)); @@ -157,9 +158,10 @@ static int query_import_device(int sockfd, char *busid) } /* receive a reply */ - rc = usbip_net_recv_op_common(sockfd, &code); + rc = usbip_net_recv_op_common(sockfd, &code, &status); if (rc < 0) { - err("recv op_common"); + err("Attach Request for %s failed - %s\n", + busid, usbip_op_common_status_string(status)); return -1; } @@ -194,11 +196,8 @@ static int attach_device(char *host, char *busid) } rhport = query_import_device(sockfd, busid); - if (rhport < 0) { - err("Attach request for Device %s. Is this device exported?", - busid); + if (rhport < 0) return -1; - } close(sockfd); diff --git a/tools/usb/usbip/src/usbip_list.c b/tools/usb/usbip/src/usbip_list.c index d65a9f444174..8d4ccf4b9480 100644 --- a/tools/usb/usbip/src/usbip_list.c +++ b/tools/usb/usbip/src/usbip_list.c @@ -62,6 +62,7 @@ static int get_exported_devices(char *host, int sockfd) struct usbip_usb_interface uintf; unsigned int i; int rc, j; + int status; rc = usbip_net_send_op_common(sockfd, OP_REQ_DEVLIST, 0); if (rc < 0) { @@ -69,9 +70,10 @@ static int get_exported_devices(char *host, int sockfd) return -1; } - rc = usbip_net_recv_op_common(sockfd, &code); + rc = usbip_net_recv_op_common(sockfd, &code, &status); if (rc < 0) { - dbg("usbip_net_recv_op_common failed"); + err("Exported Device List Request failed - %s\n", + usbip_op_common_status_string(status)); return -1; } diff --git a/tools/usb/usbip/src/usbip_network.c b/tools/usb/usbip/src/usbip_network.c index 90325fa8bc38..8ffcd47d9638 100644 --- a/tools/usb/usbip/src/usbip_network.c +++ b/tools/usb/usbip/src/usbip_network.c @@ -163,7 +163,7 @@ int usbip_net_send_op_common(int sockfd, uint32_t code, uint32_t status) return 0; } -int usbip_net_recv_op_common(int sockfd, uint16_t *code) +int usbip_net_recv_op_common(int sockfd, uint16_t *code, int *status) { struct op_common op_common; int rc; @@ -191,10 +191,14 @@ int usbip_net_recv_op_common(int sockfd, uint16_t *code) if (op_common.code != *code) { dbg("unexpected pdu %#0x for %#0x", op_common.code, *code); + /* return error status */ + *status = ST_ERROR; goto err; } } + *status = op_common.status; + if (op_common.status != ST_OK) { dbg("request failed at peer: %d", op_common.status); goto err; diff --git a/tools/usb/usbip/src/usbip_network.h b/tools/usb/usbip/src/usbip_network.h index b6a2f9be888c..555215eae43e 100644 --- a/tools/usb/usbip/src/usbip_network.h +++ b/tools/usb/usbip/src/usbip_network.h @@ -174,7 +174,7 @@ void usbip_net_pack_usb_interface(int pack, struct usbip_usb_interface *uinf); ssize_t usbip_net_recv(int sockfd, void *buff, size_t bufflen); ssize_t usbip_net_send(int sockfd, void *buff, size_t bufflen); int usbip_net_send_op_common(int sockfd, uint32_t code, uint32_t status); -int usbip_net_recv_op_common(int sockfd, uint16_t *code); +int usbip_net_recv_op_common(int sockfd, uint16_t *code, int *status); int usbip_net_set_reuseaddr(int sockfd); int usbip_net_set_nodelay(int sockfd); int usbip_net_set_keepalive(int sockfd); diff --git a/tools/usb/usbip/src/usbipd.c b/tools/usb/usbip/src/usbipd.c index c6dad2a13c80..f8ff735eb100 100644 --- a/tools/usb/usbip/src/usbipd.c +++ b/tools/usb/usbip/src/usbipd.c @@ -107,7 +107,7 @@ static int recv_request_import(int sockfd) struct usbip_usb_device pdu_udev; struct list_head *i; int found = 0; - int error = 0; + int status = ST_OK; int rc; memset(&req, 0, sizeof(req)); @@ -133,22 +133,21 @@ static int recv_request_import(int sockfd) usbip_net_set_nodelay(sockfd); /* export device needs a TCP/IP socket descriptor */ - rc = usbip_export_device(edev, sockfd); - if (rc < 0) - error = 1; + status = usbip_export_device(edev, sockfd); + if (status < 0) + status = ST_NA; } else { info("requested device not found: %s", req.busid); - error = 1; + status = ST_NODEV; } - rc = usbip_net_send_op_common(sockfd, OP_REP_IMPORT, - (!error ? ST_OK : ST_NA)); + rc = usbip_net_send_op_common(sockfd, OP_REP_IMPORT, status); if (rc < 0) { dbg("usbip_net_send_op_common failed: %#0x", OP_REP_IMPORT); return -1; } - if (error) { + if (status) { dbg("import request busid %s: failed", req.busid); return -1; } @@ -251,8 +250,9 @@ static int recv_pdu(int connfd) { uint16_t code = OP_UNSPEC; int ret; + int status; - ret = usbip_net_recv_op_common(connfd, &code); + ret = usbip_net_recv_op_common(connfd, &code, &status); if (ret < 0) { dbg("could not receive opcode: %#0x", code); return -1; -- 2.14.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [3/3] usbip: tools: change to use new error codes in server reply messages From: Shuah Khan Message-Id: <0c71a0f246feec53ef79b8ea827767a5c0f76097.1520455011.git.shuahkh@osg.samsung.com> Date: Wed, 7 Mar 2018 13:42:26 -0700 To: valentina.manea.m@gmail.com, shuah@kernel.org, gregkh@linuxfoundation.org Cc: Shuah Khan , yuyang.du@intel.com, k.opasiak@samsung.com, nobuo.iwata@fujixerox.co.jp, julien.boibessot@armadeus.com, jdieter@lesbg.com, peter.senna@gmail.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: Q2hhbmdlZCB1c2JpcF9uZXR3b3JrLCB1c2JpcF9hdHRhY2gsIHVzYmlwX2xpc3QsIGFuZCB1c2Jp cGQgdG8gdXNlCmFuZCBwcm9wYWdhdGUgdGhlIG5ldyBlcnJvciBjb2RlcyBpbiBzZXJ2ZXIgcmVw bHkgbWVzc2FnZXMuCgp1c2JpcF9uZXRfcmVjdl9vcF9jb21tb24oKSBpcyBjaGFuZ2VkIHRvIHRh a2UgYSBwb2ludGVyIHRvIHN0YXR1cwpyZXR1cm4gdGhlIHN0YXR1cyByZXR1cm5lZCBpbiB0aGUg b3BfY29tbW9uLnN0YXR1cyB0byBjYWxsZXJzLgoKdXNiaXBfYXR0YWNoIGFuZCB1c2JpcF9saXN0 IHVzZSB0aGUgY29tbW9uIGludGVyZmFjZSB0byBwcmludCBlcnJvcgptZXNzYWdlcyB0byBpbmRp Y2F0ZSB3aHkgdGhlIHJlcXVlc3QgZmFpbGVkLgoKV2l0aCB0aGlzIGNoYW5nZSB0aGUgbWVzc2Fn ZXMgc2F5IHdoeSBhIHJlcXVlc3QgZmFpbGVkOgoKLSB3aGVuIGEgY2xpZW50IHJlcXVlc3RzIGEg ZGV2aWNlIHRoYXQgaXMgYWxyZWFkeSBleHBvcnRlZDoKCnVzYmlwIGF0dGFjaCAtciBzZXJ2ZXJf bmFtZSAtYiAzLTEwLjIKdXNiaXA6IGVycm9yOiBBdHRhY2ggUmVxdWVzdCBmb3IgMy0xMC4yIGZh aWxlZCAtIERldmljZSBidXN5IChleHBvcnRlZCkKCi0gd2hlbiBhIGNsaWVudCByZXF1ZXN0cyBh IGRldmljZSB0aGF0IGlzbid0IGV4cG9ydGFibGUsCgp1c2JpcCBhdHRhY2ggLXIgc2VydmVyX25h bWUgLWIgMy0xMC40CnVzYmlwOiBlcnJvcjogQXR0YWNoIFJlcXVlc3QgZm9yIDMtMTAuNCBmYWls ZWQgLSBEZXZpY2Ugbm90IGZvdW5kCgpTaWduZWQtb2ZmLWJ5OiBTaHVhaCBLaGFuIDxzaHVhaGto QG9zZy5zYW1zdW5nLmNvbT4KLS0tCiB0b29scy91c2IvdXNiaXAvc3JjL3VzYmlwX2F0dGFjaC5j ICB8IDExICsrKysrLS0tLS0tCiB0b29scy91c2IvdXNiaXAvc3JjL3VzYmlwX2xpc3QuYyAgICB8 ICA2ICsrKystLQogdG9vbHMvdXNiL3VzYmlwL3NyYy91c2JpcF9uZXR3b3JrLmMgfCAgNiArKysr Ky0KIHRvb2xzL3VzYi91c2JpcC9zcmMvdXNiaXBfbmV0d29yay5oIHwgIDIgKy0KIHRvb2xzL3Vz Yi91c2JpcC9zcmMvdXNiaXBkLmMgICAgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCiA1IGZp bGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3Rvb2xzL3VzYi91c2JpcC9zcmMvdXNiaXBfYXR0YWNoLmMgYi90b29scy91c2IvdXNiaXAv c3JjL3VzYmlwX2F0dGFjaC5jCmluZGV4IGY2MDczODczNTM5OC4uYmE4ODcyODQ4M2ZmIDEwMDY0 NAotLS0gYS90b29scy91c2IvdXNiaXAvc3JjL3VzYmlwX2F0dGFjaC5jCisrKyBiL3Rvb2xzL3Vz Yi91c2JpcC9zcmMvdXNiaXBfYXR0YWNoLmMKQEAgLTEzNSw2ICsxMzUsNyBAQCBzdGF0aWMgaW50 IHF1ZXJ5X2ltcG9ydF9kZXZpY2UoaW50IHNvY2tmZCwgY2hhciAqYnVzaWQpCiAJc3RydWN0IG9w X2ltcG9ydF9yZXF1ZXN0IHJlcXVlc3Q7CiAJc3RydWN0IG9wX2ltcG9ydF9yZXBseSAgIHJlcGx5 OwogCXVpbnQxNl90IGNvZGUgPSBPUF9SRVBfSU1QT1JUOworCWludCBzdGF0dXM7CiAKIAltZW1z ZXQoJnJlcXVlc3QsIDAsIHNpemVvZihyZXF1ZXN0KSk7CiAJbWVtc2V0KCZyZXBseSwgMCwgc2l6 ZW9mKHJlcGx5KSk7CkBAIC0xNTcsOSArMTU4LDEwIEBAIHN0YXRpYyBpbnQgcXVlcnlfaW1wb3J0 X2RldmljZShpbnQgc29ja2ZkLCBjaGFyICpidXNpZCkKIAl9CiAKIAkvKiByZWNlaXZlIGEgcmVw bHkgKi8KLQlyYyA9IHVzYmlwX25ldF9yZWN2X29wX2NvbW1vbihzb2NrZmQsICZjb2RlKTsKKwly YyA9IHVzYmlwX25ldF9yZWN2X29wX2NvbW1vbihzb2NrZmQsICZjb2RlLCAmc3RhdHVzKTsKIAlp ZiAocmMgPCAwKSB7Ci0JCWVycigicmVjdiBvcF9jb21tb24iKTsKKwkJZXJyKCJBdHRhY2ggUmVx dWVzdCBmb3IgJXMgZmFpbGVkIC0gJXNcbiIsCisJCSAgICBidXNpZCwgdXNiaXBfb3BfY29tbW9u X3N0YXR1c19zdHJpbmcoc3RhdHVzKSk7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTE5NCwxMSAr MTk2LDggQEAgc3RhdGljIGludCBhdHRhY2hfZGV2aWNlKGNoYXIgKmhvc3QsIGNoYXIgKmJ1c2lk KQogCX0KIAogCXJocG9ydCA9IHF1ZXJ5X2ltcG9ydF9kZXZpY2Uoc29ja2ZkLCBidXNpZCk7Ci0J aWYgKHJocG9ydCA8IDApIHsKLQkJZXJyKCJBdHRhY2ggcmVxdWVzdCBmb3IgRGV2aWNlICVzLiBJ cyB0aGlzIGRldmljZSBleHBvcnRlZD8iLAotCQkgICAgYnVzaWQpOworCWlmIChyaHBvcnQgPCAw KQogCQlyZXR1cm4gLTE7Ci0JfQogCiAJY2xvc2Uoc29ja2ZkKTsKIApkaWZmIC0tZ2l0IGEvdG9v bHMvdXNiL3VzYmlwL3NyYy91c2JpcF9saXN0LmMgYi90b29scy91c2IvdXNiaXAvc3JjL3VzYmlw X2xpc3QuYwppbmRleCBkNjVhOWY0NDQxNzQuLjhkNGNjZjRiOTQ4MCAxMDA2NDQKLS0tIGEvdG9v bHMvdXNiL3VzYmlwL3NyYy91c2JpcF9saXN0LmMKKysrIGIvdG9vbHMvdXNiL3VzYmlwL3NyYy91 c2JpcF9saXN0LmMKQEAgLTYyLDYgKzYyLDcgQEAgc3RhdGljIGludCBnZXRfZXhwb3J0ZWRfZGV2 aWNlcyhjaGFyICpob3N0LCBpbnQgc29ja2ZkKQogCXN0cnVjdCB1c2JpcF91c2JfaW50ZXJmYWNl IHVpbnRmOwogCXVuc2lnbmVkIGludCBpOwogCWludCByYywgajsKKwlpbnQgc3RhdHVzOwogCiAJ cmMgPSB1c2JpcF9uZXRfc2VuZF9vcF9jb21tb24oc29ja2ZkLCBPUF9SRVFfREVWTElTVCwgMCk7 CiAJaWYgKHJjIDwgMCkgewpAQCAtNjksOSArNzAsMTAgQEAgc3RhdGljIGludCBnZXRfZXhwb3J0 ZWRfZGV2aWNlcyhjaGFyICpob3N0LCBpbnQgc29ja2ZkKQogCQlyZXR1cm4gLTE7CiAJfQogCi0J cmMgPSB1c2JpcF9uZXRfcmVjdl9vcF9jb21tb24oc29ja2ZkLCAmY29kZSk7CisJcmMgPSB1c2Jp cF9uZXRfcmVjdl9vcF9jb21tb24oc29ja2ZkLCAmY29kZSwgJnN0YXR1cyk7CiAJaWYgKHJjIDwg MCkgewotCQlkYmcoInVzYmlwX25ldF9yZWN2X29wX2NvbW1vbiBmYWlsZWQiKTsKKwkJZXJyKCJF eHBvcnRlZCBEZXZpY2UgTGlzdCBSZXF1ZXN0IGZhaWxlZCAtICVzXG4iLAorCQkgICAgdXNiaXBf b3BfY29tbW9uX3N0YXR1c19zdHJpbmcoc3RhdHVzKSk7CiAJCXJldHVybiAtMTsKIAl9CiAKZGlm ZiAtLWdpdCBhL3Rvb2xzL3VzYi91c2JpcC9zcmMvdXNiaXBfbmV0d29yay5jIGIvdG9vbHMvdXNi L3VzYmlwL3NyYy91c2JpcF9uZXR3b3JrLmMKaW5kZXggOTAzMjVmYThiYzM4Li44ZmZjZDQ3ZDk2 MzggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3VzYi91c2JpcC9zcmMvdXNiaXBfbmV0d29yay5jCisrKyBi L3Rvb2xzL3VzYi91c2JpcC9zcmMvdXNiaXBfbmV0d29yay5jCkBAIC0xNjMsNyArMTYzLDcgQEAg aW50IHVzYmlwX25ldF9zZW5kX29wX2NvbW1vbihpbnQgc29ja2ZkLCB1aW50MzJfdCBjb2RlLCB1 aW50MzJfdCBzdGF0dXMpCiAJcmV0dXJuIDA7CiB9CiAKLWludCB1c2JpcF9uZXRfcmVjdl9vcF9j b21tb24oaW50IHNvY2tmZCwgdWludDE2X3QgKmNvZGUpCitpbnQgdXNiaXBfbmV0X3JlY3Zfb3Bf Y29tbW9uKGludCBzb2NrZmQsIHVpbnQxNl90ICpjb2RlLCBpbnQgKnN0YXR1cykKIHsKIAlzdHJ1 Y3Qgb3BfY29tbW9uIG9wX2NvbW1vbjsKIAlpbnQgcmM7CkBAIC0xOTEsMTAgKzE5MSwxNCBAQCBp bnQgdXNiaXBfbmV0X3JlY3Zfb3BfY29tbW9uKGludCBzb2NrZmQsIHVpbnQxNl90ICpjb2RlKQog CQlpZiAob3BfY29tbW9uLmNvZGUgIT0gKmNvZGUpIHsKIAkJCWRiZygidW5leHBlY3RlZCBwZHUg JSMweCBmb3IgJSMweCIsIG9wX2NvbW1vbi5jb2RlLAogCQkJICAgICpjb2RlKTsKKwkJCS8qIHJl dHVybiBlcnJvciBzdGF0dXMgKi8KKwkJCSpzdGF0dXMgPSBTVF9FUlJPUjsKIAkJCWdvdG8gZXJy OwogCQl9CiAJfQogCisJKnN0YXR1cyA9IG9wX2NvbW1vbi5zdGF0dXM7CisKIAlpZiAob3BfY29t bW9uLnN0YXR1cyAhPSBTVF9PSykgewogCQlkYmcoInJlcXVlc3QgZmFpbGVkIGF0IHBlZXI6ICVk Iiwgb3BfY29tbW9uLnN0YXR1cyk7CiAJCWdvdG8gZXJyOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdXNi L3VzYmlwL3NyYy91c2JpcF9uZXR3b3JrLmggYi90b29scy91c2IvdXNiaXAvc3JjL3VzYmlwX25l dHdvcmsuaAppbmRleCBiNmEyZjliZTg4OGMuLjU1NTIxNWVhZTQzZSAxMDA2NDQKLS0tIGEvdG9v bHMvdXNiL3VzYmlwL3NyYy91c2JpcF9uZXR3b3JrLmgKKysrIGIvdG9vbHMvdXNiL3VzYmlwL3Ny Yy91c2JpcF9uZXR3b3JrLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIHVzYmlwX25ldF9wYWNr X3VzYl9pbnRlcmZhY2UoaW50IHBhY2ssIHN0cnVjdCB1c2JpcF91c2JfaW50ZXJmYWNlICp1aW5m KTsKIHNzaXplX3QgdXNiaXBfbmV0X3JlY3YoaW50IHNvY2tmZCwgdm9pZCAqYnVmZiwgc2l6ZV90 IGJ1ZmZsZW4pOwogc3NpemVfdCB1c2JpcF9uZXRfc2VuZChpbnQgc29ja2ZkLCB2b2lkICpidWZm LCBzaXplX3QgYnVmZmxlbik7CiBpbnQgdXNiaXBfbmV0X3NlbmRfb3BfY29tbW9uKGludCBzb2Nr ZmQsIHVpbnQzMl90IGNvZGUsIHVpbnQzMl90IHN0YXR1cyk7Ci1pbnQgdXNiaXBfbmV0X3JlY3Zf b3BfY29tbW9uKGludCBzb2NrZmQsIHVpbnQxNl90ICpjb2RlKTsKK2ludCB1c2JpcF9uZXRfcmVj dl9vcF9jb21tb24oaW50IHNvY2tmZCwgdWludDE2X3QgKmNvZGUsIGludCAqc3RhdHVzKTsKIGlu dCB1c2JpcF9uZXRfc2V0X3JldXNlYWRkcihpbnQgc29ja2ZkKTsKIGludCB1c2JpcF9uZXRfc2V0 X25vZGVsYXkoaW50IHNvY2tmZCk7CiBpbnQgdXNiaXBfbmV0X3NldF9rZWVwYWxpdmUoaW50IHNv Y2tmZCk7CmRpZmYgLS1naXQgYS90b29scy91c2IvdXNiaXAvc3JjL3VzYmlwZC5jIGIvdG9vbHMv dXNiL3VzYmlwL3NyYy91c2JpcGQuYwppbmRleCBjNmRhZDJhMTNjODAuLmY4ZmY3MzVlYjEwMCAx MDA2NDQKLS0tIGEvdG9vbHMvdXNiL3VzYmlwL3NyYy91c2JpcGQuYworKysgYi90b29scy91c2Iv dXNiaXAvc3JjL3VzYmlwZC5jCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIGludCByZWN2X3Jl cXVlc3RfaW1wb3J0KGludCBzb2NrZmQpCiAJc3RydWN0IHVzYmlwX3VzYl9kZXZpY2UgcGR1X3Vk ZXY7CiAJc3RydWN0IGxpc3RfaGVhZCAqaTsKIAlpbnQgZm91bmQgPSAwOwotCWludCBlcnJvciA9 IDA7CisJaW50IHN0YXR1cyA9IFNUX09LOwogCWludCByYzsKIAogCW1lbXNldCgmcmVxLCAwLCBz aXplb2YocmVxKSk7CkBAIC0xMzMsMjIgKzEzMywyMSBAQCBzdGF0aWMgaW50IHJlY3ZfcmVxdWVz dF9pbXBvcnQoaW50IHNvY2tmZCkKIAkJdXNiaXBfbmV0X3NldF9ub2RlbGF5KHNvY2tmZCk7CiAK IAkJLyogZXhwb3J0IGRldmljZSBuZWVkcyBhIFRDUC9JUCBzb2NrZXQgZGVzY3JpcHRvciAqLwot CQlyYyA9IHVzYmlwX2V4cG9ydF9kZXZpY2UoZWRldiwgc29ja2ZkKTsKLQkJaWYgKHJjIDwgMCkK LQkJCWVycm9yID0gMTsKKwkJc3RhdHVzID0gdXNiaXBfZXhwb3J0X2RldmljZShlZGV2LCBzb2Nr ZmQpOworCQlpZiAoc3RhdHVzIDwgMCkKKwkJCXN0YXR1cyA9IFNUX05BOwogCX0gZWxzZSB7CiAJ CWluZm8oInJlcXVlc3RlZCBkZXZpY2Ugbm90IGZvdW5kOiAlcyIsIHJlcS5idXNpZCk7Ci0JCWVy cm9yID0gMTsKKwkJc3RhdHVzID0gU1RfTk9ERVY7CiAJfQogCi0JcmMgPSB1c2JpcF9uZXRfc2Vu ZF9vcF9jb21tb24oc29ja2ZkLCBPUF9SRVBfSU1QT1JULAotCQkJCSAgICAgICghZXJyb3IgPyBT VF9PSyA6IFNUX05BKSk7CisJcmMgPSB1c2JpcF9uZXRfc2VuZF9vcF9jb21tb24oc29ja2ZkLCBP UF9SRVBfSU1QT1JULCBzdGF0dXMpOwogCWlmIChyYyA8IDApIHsKIAkJZGJnKCJ1c2JpcF9uZXRf c2VuZF9vcF9jb21tb24gZmFpbGVkOiAlIzB4IiwgT1BfUkVQX0lNUE9SVCk7CiAJCXJldHVybiAt MTsKIAl9CiAKLQlpZiAoZXJyb3IpIHsKKwlpZiAoc3RhdHVzKSB7CiAJCWRiZygiaW1wb3J0IHJl cXVlc3QgYnVzaWQgJXM6IGZhaWxlZCIsIHJlcS5idXNpZCk7CiAJCXJldHVybiAtMTsKIAl9CkBA IC0yNTEsOCArMjUwLDkgQEAgc3RhdGljIGludCByZWN2X3BkdShpbnQgY29ubmZkKQogewogCXVp bnQxNl90IGNvZGUgPSBPUF9VTlNQRUM7CiAJaW50IHJldDsKKwlpbnQgc3RhdHVzOwogCi0JcmV0 ID0gdXNiaXBfbmV0X3JlY3Zfb3BfY29tbW9uKGNvbm5mZCwgJmNvZGUpOworCXJldCA9IHVzYmlw X25ldF9yZWN2X29wX2NvbW1vbihjb25uZmQsICZjb2RlLCAmc3RhdHVzKTsKIAlpZiAocmV0IDwg MCkgewogCQlkYmcoImNvdWxkIG5vdCByZWNlaXZlIG9wY29kZTogJSMweCIsIGNvZGUpOwogCQly ZXR1cm4gLTE7Cg==