From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3EA4FC77B61 for ; Fri, 28 Apr 2023 12:46:53 +0000 (UTC) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id B342A3CBA83 for ; Fri, 28 Apr 2023 14:46:50 +0200 (CEST) Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [IPv6:2001:4b78:1:20::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id DE5C53CAD68 for ; Fri, 28 Apr 2023 14:46:40 +0200 (CEST) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-7.smtp.seeweb.it (Postfix) with ESMTPS id 04CA12000B9 for ; Fri, 28 Apr 2023 14:46:38 +0200 (CEST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 5446921F03; Fri, 28 Apr 2023 12:46:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1682685998; h=from:from:reply-to:reply-to:date:date:message-id:message-id:to:to: cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VWyfJifaaz7F40gpp9cBCYhWQN8KLN2MrRgmsHe3IsI=; b=Dip0/xeF/jLvTwknGzsnwAr0a80Q/bKCX1Mlki+rJc3Xte1qnTp9nLMbYK1hQxoe7I2N35 AWchORizpQeRoPSoTnUB5eXI5eJOHefy0OJO0nGnT52s/ueUf8TLJlIyDLXMKBD+OQGK+M AjDrGM7ekiwxd+AT+juDVrwRa40xAcA= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1682685998; h=from:from:reply-to:reply-to:date:date:message-id:message-id:to:to: cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VWyfJifaaz7F40gpp9cBCYhWQN8KLN2MrRgmsHe3IsI=; b=eVGeA9D8mRWslzC34wVWNzuCcqDDOS0QQtDuNkupZRfjiuBnJTnGnGq6qvz6Jxr6FdR6oa S4cEW77HgPFm+rDQ== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 3783A1390E; Fri, 28 Apr 2023 12:46:38 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id dxtQDC7AS2SCBQAAMHmgww (envelope-from ); Fri, 28 Apr 2023 12:46:38 +0000 Date: Fri, 28 Apr 2023 14:46:48 +0200 From: Petr Vorel To: Wei Gao Message-ID: <20230428124648.GA3209331@pevik> References: <20230329133828.24835-1-wegao@suse.com> <20230424103056.6017-1-wegao@suse.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20230424103056.6017-1-wegao@suse.com> X-Virus-Scanned: clamav-milter 0.102.4 at in-7.smtp.seeweb.it X-Virus-Status: Clean Subject: Re: [LTP] [PATCH v2] recvmsg01: Refactor using new LTP API X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Petr Vorel Cc: ltp@lists.linux.it Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ltp-bounces+ltp=archiver.kernel.org@lists.linux.it Sender: "ltp" SGkgV2VpLAoKRmlyc3QsIGZvciBzb21lIHJlYXNvbiwgd2l0aCBoaWdoZXIgbnVtYmVyIG9mIHJ1 biAiYmFkIGZpbGUgZGVzY3JpcHRvciIgd2lsbApmYWlsLCByZXR1cm5pbmcgMCBpbnN0ZWFkIG9m IC0xLgpJdCBzdGFydHMgdG8gZmFpbCBmcm9tIDIwMHRoOgokIC4vcmVjdm1zZzAxIC1pIDIwMAoK Li4uCnJlY3Ztc2cwMS5jOjI4MzogVFBBU1M6IGludmFsaWQgaW92ZWMgY291bnQgc3VjY2Vzc2Z1 bApyZWN2bXNnMDEuYzoyODM6IFRQQVNTOiByaWdodHMgcmVjZXB0aW9uIHN1Y2Nlc3NmdWwKcmVj dm1zZzAxLmM6MjgzOiBUUEFTUzogaW52YWxpZCBNU0dfT09CIGZsYWcgc2V0IHN1Y2Nlc3NmdWwK cmVjdm1zZzAxLmM6MjgzOiBUUEFTUzogaW52YWxpZCBNU0dfRVJSUVVFVUUgZmxhZyBzZXQgc3Vj Y2Vzc2Z1bApyZWN2bXNnMDEuYzoyODM6IFRQQVNTOiBsYXJnZSBjbWVzZyBsZW5ndGggc3VjY2Vz c2Z1bApyZWN2bXNnMDEuYzoyNzY6IFRGQUlMOiBiYWQgZmlsZSBkZXNjcmlwdG9yIDsgcmV0dXJu ZWQgMCAoZXhwZWN0ZWQgLTEpLCBlcnJubyAwIChleHBlY3RlZCA5KTogU1VDQ0VTUyAoMCkKClN1 bW1hcnk6CnBhc3NlZCAgIDE5OTkKZmFpbGVkICAgMQpicm9rZW4gICAwCnNraXBwZWQgIDAKd2Fy bmluZ3MgMAoKSSBhbHNvIGRpZCBzb21lIHJldmlldywgYnV0IEkgZGlkbid0IGhhdmUgdGltZSB0 byBjaGVjayBwcm9wZXJseSB3aGV0aGVyIHN1YmplY3QKb2YgdGVzdGluZyBpcyB2YWxpZCAocXVp dGUgY29tcGxleCB0ZXN0KS4KCj4gIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcmVjdm1zZy9y ZWN2bXNnMDEuYyB8IDczNCArKysrKysrKystLS0tLS0tLS0KLi4uCj4gKyAqIENvcHlyaWdodCAo YykgMjAwMSBXYXluZSBCb3llciBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCm5pdDog bWF5YmUKKiBDb3B5cmlnaHQgKGMpIDIwMDEgV2F5bmUgQm95ZXIsIEludGVybmF0aW9uYWwgQnVz aW5lc3MgTWFjaGluZXMgQ29ycC4KCj4gKyAqIENvcHlyaWdodCAoYykgTGludXggVGVzdCBQcm9q ZWN0LCAyMDAyLTIwMjIKPiArICogQ29weXJpZ2h0IChjKSAyMDIzIFdlaSBHYW8gPHdlZ2FvQHN1 c2UuY29tPgo+ICAgKi8KCj4gLS8qCj4gLSAqIFRlc3QgTmFtZTogcmVjdm1zZzAxCj4gLSAqCj4g LSAqIFRlc3QgRGVzY3JpcHRpb246Cj4gLSAqICBWZXJpZnkgdGhhdCByZWN2bXNnKCkgcmV0dXJu cyB0aGUgcHJvcGVyIGVycm5vIGZvciB2YXJpb3VzIGZhaWx1cmUgY2FzZXMKPiAtICoKPiAtICog VXNhZ2U6ICA8Zm9yIGNvbW1hbmQtbGluZT4KPiAtICogIHJlY3Ztc2cwMSBbLWMgbl0gWy1lXSBb LWkgbl0gWy1JIHhdIFstUCB4XSBbLXRdCj4gLSAqICAgICB3aGVyZSwgIC1jIG4gOiBSdW4gbiBj b3BpZXMgY29uY3VycmVudGx5Lgo+IC0gKiAgICAgICAgICAgICAtZSAgIDogVHVybiBvbiBlcnJu byBsb2dnaW5nLgo+IC0gKgkgICAgICAgLWkgbiA6IEV4ZWN1dGUgdGVzdCBuIHRpbWVzLgo+IC0g KgkgICAgICAgLUkgeCA6IEV4ZWN1dGUgdGVzdCBmb3IgeCBzZWNvbmRzLgo+IC0gKgkgICAgICAg LVAgeCA6IFBhdXNlIGZvciB4IHNlY29uZHMgYmV0d2VlbiBpdGVyYXRpb25zLgo+IC0gKgkgICAg ICAgLXQgICA6IFR1cm4gb24gc3lzY2FsbCB0aW1pbmcuCj4gKy8qXAo+ICsgKiBbRGVzY3JpcHRp b25dCj4gICAqCj4gLSAqIEhJU1RPUlkKPiAtICoJMDcvMjAwMSBQb3J0ZWQgYnkgV2F5bmUgQm95 ZXIKPiAtICoKPiAtICogUkVTVFJJQ1RJT05TOgo+IC0gKiAgTm9uZS4KPiArICogVmVyaWZ5IHRo YXQgcmVjdm1zZygpIHJldHVybnMgdGhlIHByb3BlciBlcnJubyBmb3IgdmFyaW91cyBmYWlsdXJl IGNhc2VzCm5pdDogbWlzc2luZyBkb3QgYXQgdGhlIGVuZC4KPiAgICoKbml0OiBQbGVhc2UgcmVt b3ZlIHRoaXMgYmxhbmsgbGluZS4KPiAgICovCgo+ICtzdGF0aWMgcGlkX3QgcGlkOwo+ICtzdGF0 aWMgY2hhciB0bXBzdW5wYXRoW0JVRl9TSVpFXTsKPiArCj4gK3N0YXRpYyB2b2lkIHNldHVwKHZv aWQpOwo+ICtzdGF0aWMgdm9pZCBzZXR1cF9pbnZhbGlkX3NvY2soaW50KTsKPiArc3RhdGljIHZv aWQgc2V0dXBfdmFsaWRfc29jayhpbnQpOwo+ICtzdGF0aWMgdm9pZCBzZXR1cF92YWxpZF9tc2df Y29udHJvbChpbnQpOwo+ICtzdGF0aWMgdm9pZCBzZXR1cF9sYXJnZV9tc2dfY29udHJvbChpbnQp Owo+ICtzdGF0aWMgdm9pZCBjbGVhbnVwKHZvaWQpOwo+ICtzdGF0aWMgdm9pZCBjbGVhbnVwX3Jl c2V0X3NvY2sodm9pZCk7Cj4gK3N0YXRpYyB2b2lkIGNsZWFudXBfY2xvc2Vfc29jayh2b2lkKTsK PiArc3RhdGljIHZvaWQgY2xlYW51cF9yZXNldF9hbGwodm9pZCk7Cj4gK3N0YXRpYyB2b2lkIGRv X2NoaWxkKHZvaWQpOwo+ICtzdGF0aWMgcGlkX3Qgc3RhcnRfc2VydmVyKHN0cnVjdCBzb2NrYWRk cl9pbiAqLCBzdHJ1Y3Qgc29ja2FkZHJfdW4gKik7Cm5pdDogSSdkIHBlcnNvbmFsbHkgbW92ZSBz dHJ1Y3QgdGNhc2UgYmVsb3cgdG8gZ2V0IHJpZCBvZiB0aGVzZSBmdW5jdGlvbgpwcm90b3R5cGVz LCBidXQgZmVlbCBmcmVlIHRvIGlnbm9yZS4KCj4gKwo+ICtzdGF0aWMgc3RydWN0IHRjYXNlIHsK PiArCWludCBkb21haW47Cj4gKwlpbnQgdHlwZTsKPiArCWludCBwcm90b2NvbDsKPiAgCXN0cnVj dCBpb3ZlYyAqaW92Owo+ICAJaW50IGlvdmNudDsKPiAtCXZvaWQgKmJ1ZjsJCS8qIHJlY3YgZGF0 YSBidWZmZXIgKi8KPiAtCWludCBidWZsZW47CQkvKiByZWN2IGJ1ZmZlciBsZW5ndGggKi8KPiAr CXZvaWQgKnJlY3ZfYnVmOwo+ICsJaW50IGJ1ZmxlbjsKPiAgCXN0cnVjdCBtc2doZHIgKm1zZzsK PiAtCXVuc2lnbmVkIGZsYWdzOwo+IC0Jc3RydWN0IHNvY2thZGRyICpmcm9tOwkvKiBmcm9tIGFk ZHJlc3MgKi8KPiAtCWludCBmcm9tbGVuOwkJLyogZnJvbSBhZGRyZXNzIHZhbHVlL3Jlc3VsdCBi dWZmZXIgbGVuZ3RoICovCj4gLQlpbnQgcmV0dmFsOwkJLyogc3lzY2FsbCByZXR1cm4gdmFsdWUg Ki8KPiAtCWludCBleHBlcnJubzsJCS8qIGV4cGVjdGVkIGVycm5vICovCj4gLQl2b2lkICgqc2V0 dXApICh2b2lkKTsKPiAtCXZvaWQgKCpjbGVhbnVwKSAodm9pZCk7Cj4gKwl1bnNpZ25lZCBpbnQg ZmxhZ3M7Cj4gKwlzdHJ1Y3Qgc29ja2FkZHIgKmZyb207Cj4gKwlpbnQgZnJvbWxlbjsKPiArCWlu dCByZXQ7Cj4gKwlpbnQgZXhwX2Vycm5vOwo+ICsJdm9pZCAoKnNldHVwKShpbnQgbik7Cj4gKwl2 b2lkICgqY2xlYW51cCkodm9pZCk7Cj4gIAljaGFyICpkZXNjOwo+IC19IHRkYXRbXSA9IHsKPiAt LyogMSAqLwo+ICt9IHRjYXNlc1tdID0gewo+ICAJewo+IC0JUEZfSU5FVCwgU09DS19TVFJFQU0s IDAsIGlvdiwgMSwgYnVmLCBzaXplb2YoYnVmKSwgJm1zZ2RhdCwgMCwKPiAtCQkgICAgKHN0cnVj dCBzb2NrYWRkciAqKSZmcm9tLCBzaXplb2YoZnJvbSksCj4gLQkJICAgIC0xLCBFQkFERiwgc2V0 dXAwLCBjbGVhbnVwMCwgImJhZCBmaWxlIGRlc2NyaXB0b3IifQo+IC0JLAo+IC0vKiAyICovCj4g KwkJLmRvbWFpbiA9IFBGX0lORVQsCj4gKwkJLnR5cGUgPSBTT0NLX1NUUkVBTSwKPiArCQkucHJv dG9jb2wgPSAwLApZb3UgY2FuIG9taXQgdmFsdWVzIHdpdGggMC4KCj4gKwkJLmlvdiA9IGlvdiwK PiArCQkuaW92Y250ID0gMSwKPiArCQkucmVjdl9idWYgPSByZWN2X2J1ZiwKPiArCQkuYnVmbGVu ID0gc2l6ZW9mKHJlY3ZfYnVmKSwKPiArCQkubXNnID0gJm1zZ2RhdCwKPiArCQkuZmxhZ3MgPSAw LApIZXJlIGFzIHdlbGwgKGFuZCBvbiBtYW55IHBsYWNlcykKCj4gKwkJLmZyb20gPSAoc3RydWN0 IHNvY2thZGRyICopJmZyb20sCj4gKwkJLmZyb21sZW4gPSBzaXplb2YoZnJvbSksCj4gKwkJLnJl dCA9IC0xLAo+ICsJCS5leHBfZXJybm8gPSBFQkFERiwKPiArCQkuc2V0dXAgPSBzZXR1cF9pbnZh bGlkX3NvY2ssCj4gKwkJLmNsZWFudXAgPSBjbGVhbnVwX3Jlc2V0X3NvY2ssCj4gKwkJLmRlc2Mg PSAiYmFkIGZpbGUgZGVzY3JpcHRvciIsCj4gKwl9LAouLi4KCj4gK3N0YXRpYyB2b2lkIHJ1bih1 bnNpZ25lZCBpbnQgbikKPiAgewo+IC0JaW50IGxjOwo+IC0KPiAtCXRzdF9wYXJzZV9vcHRzKGFy Z2MsIGFyZ3YsIE5VTEwsIE5VTEwpOwo+IC0jaWZkZWYgVUNMSU5VWAo+IC0JYXJndjAgPSBhcmd2 WzBdOwo+IC0JbWF5YmVfcnVuX2NoaWxkKCZkb19jaGlsZCwgImRkIiwgJnNmZCwgJnVmZCk7Cj4g LSNlbmRpZgo+IC0KPiAgCXNldHVwKCk7Cm5pdDogT25lIHdvdWxkIHRoaW5rIHRoaXMgaXMgTFRQ IEFQSSBzZXR1cCwgYnV0IGl0J3MgbmVlZGVkIGZvciBhbGwgdGVzdHMKKCsgdGhlIHNhbWUgYXBw bGllcyB0byBjbGVhbnVwKCkpLiAgc2V0dXBfYWxsKCkgd291bGQgbWFkZSBpdCBjbGVhcmVyIHRo YXQgaXMKdXNlZCBmb3IgZWFjaCB0ZXN0LCBidXQgaXQgbm90IGltcG9ydGFudC4KCj4gKwlzdHJ1 Y3QgdGNhc2UgKnRjID0gJnRjYXNlc1tuXTsKCj4gLQkJCXRkYXRbdGVzdG5vXS5zZXR1cCgpOwo+ IC0KPiAtCQkJLyogc2V0dXAgY29tbW9uIHRvIGFsbCB0ZXN0cyAqLwo+IC0JCQlpb3ZbMF0uaW92 X2Jhc2UgPSB0ZGF0W3Rlc3Rub10uYnVmOwo+IC0JCQlpb3ZbMF0uaW92X2xlbiA9IHRkYXRbdGVz dG5vXS5idWZsZW47Cj4gLQkJCW1zZ2RhdC5tc2dfbmFtZSA9IHRkYXRbdGVzdG5vXS5mcm9tOwo+ IC0JCQltc2dkYXQubXNnX25hbWVsZW4gPSB0ZGF0W3Rlc3Rub10uZnJvbWxlbjsKPiAtCQkJbXNn ZGF0Lm1zZ19pb3YgPSB0ZGF0W3Rlc3Rub10uaW92Owo+IC0JCQltc2dkYXQubXNnX2lvdmxlbiA9 IHRkYXRbdGVzdG5vXS5pb3ZjbnQ7Cj4gLQkJCW1zZ2RhdC5tc2dfY29udHJvbCA9IGNvbnRyb2w7 Cj4gLQkJCW1zZ2RhdC5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47Cj4gLQkJCW1zZ2RhdC5t c2dfZmxhZ3MgPSAwOwo+IC0KPiAtCQkJVEVTVChyZWN2bXNnKHMsIHRkYXRbdGVzdG5vXS5tc2cs IHRkYXRbdGVzdG5vXS5mbGFncykpOwo+IC0JCQlpZiAoVEVTVF9SRVRVUk4gPj0gMCkKPiAtCQkJ CVRFU1RfUkVUVVJOID0gMDsJLyogYWxsIG5vbnplcm8gZXF1YWwgaGVyZSAqLwo+IC0JCQlpZiAo VEVTVF9SRVRVUk4gIT0gdGRhdFt0ZXN0bm9dLnJldHZhbCB8fAo+IC0JCQkgICAgKFRFU1RfUkVU VVJOIDwgMCAmJgo+IC0JCQkgICAgIFRFU1RfRVJSTk8gIT0gdGRhdFt0ZXN0bm9dLmV4cGVycm5v KSkgewo+IC0JCQkJdHN0X3Jlc20oVEZBSUwsICIlcyA7IHJldHVybmVkIgo+IC0JCQkJCSAiICVs ZCAoZXhwZWN0ZWQgJWQpLCBlcnJubyAlZCAoZXhwZWN0ZWQiCj4gLQkJCQkJICIgJWQpIiwgdGRh dFt0ZXN0bm9dLmRlc2MsCj4gLQkJCQkJIFRFU1RfUkVUVVJOLCB0ZGF0W3Rlc3Rub10ucmV0dmFs LAo+IC0JCQkJCSBURVNUX0VSUk5PLCB0ZGF0W3Rlc3Rub10uZXhwZXJybm8pOwo+IC0JCQl9IGVs c2Ugewo+IC0JCQkJdHN0X3Jlc20oVFBBU1MsICIlcyBzdWNjZXNzZnVsIiwKPiAtCQkJCQkgdGRh dFt0ZXN0bm9dLmRlc2MpOwo+IC0JCQl9Cj4gLQkJCXRkYXRbdGVzdG5vXS5jbGVhbnVwKCk7Cj4g LQkJfQo+ICsJaWYgKCh0c3Rfa3ZlcmNtcCgzLCAxNywgMCkgPCAwKQo+ICsJCQkmJiAodGMtPmZs YWdzICYgTVNHX0VSUlFVRVVFKQo+ICsJCQkmJiAodGMtPnR5cGUgJiBTT0NLX1NUUkVBTSkpIHsK PiArCQl0c3RfcmVzKFRDT05GLCAic2tpcCBNU0dfRVJSUVVFVUUgdGVzdCwgIgo+ICsJCQkJIml0 J3Mgc3VwcG9ydGVkIGZyb20gMy4xNyIpOwo+ICAJfQoKCWlmICh0c3Rfa3ZlcmNtcCgzLCAxNywg MCkgPCAwCgkJCSYmIHRjLT5mbGFncyAmIE1TR19FUlJRVUVVRQoJCQkmJiB0Yy0+dHlwZSAmIFNP Q0tfU1RSRUFNKSB7CgkJdHN0X3JlcyhUQ09ORiwgIk1TR19FUlJRVUVVRSByZXF1aXJlcyBrZXJu ZWwgPj0gMy4xNyIpOwoJfQoKPiAtCWNsZWFudXAoKTsKCj4gLQl0c3RfZXhpdCgpOwo+ICsJdGMt PnNldHVwKG4pOwo+ICsKPiArCWlvdlswXS5pb3ZfYmFzZSA9IHRjLT5yZWN2X2J1ZjsKPiArCWlv dlswXS5pb3ZfbGVuID0gdGMtPmJ1ZmxlbjsKPiArCW1zZ2RhdC5tc2dfbmFtZSA9IHRjLT5mcm9t Owo+ICsJbXNnZGF0Lm1zZ19uYW1lbGVuID0gdGMtPmZyb21sZW47Cj4gKwltc2dkYXQubXNnX2lv diA9IHRjLT5pb3Y7Cj4gKwltc2dkYXQubXNnX2lvdmxlbiA9IHRjLT5pb3ZjbnQ7Cj4gKwltc2dk YXQubXNnX2NvbnRyb2wgPSBjb250cm9sOwo+ICsJbXNnZGF0Lm1zZ19jb250cm9sbGVuID0gY29u dHJvbGxlbjsKPiArCW1zZ2RhdC5tc2dfZmxhZ3MgPSAwOwo+ICsKPiArCVRFU1QocmVjdm1zZyhz b2NrLCB0Yy0+bXNnLCB0Yy0+ZmxhZ3MpKTsKPiArCWlmIChUU1RfUkVUID49IDApCj4gKwkJVFNU X1JFVCA9IDA7Cj4gKwo+ICsJaWYgKFRTVF9SRVQgIT0gdGMtPnJldCB8fAo+ICsJCQkoVFNUX0VS UiAhPSB0Yy0+ZXhwX2Vycm5vKSkgewoJaWYgKFRTVF9SRVQgIT0gdGMtPnJldCB8fCBUU1RfRVJS ICE9IHRjLT5leHBfZXJybm8pIHsKCj4gKwkJdHN0X3JlcyhURkFJTCB8IFRURVJSTk8sCj4gKwkJ CQkiJXMgOyByZXR1cm5lZCIKPiArCQkJCSIgJWxkIChleHBlY3RlZCAlZCksIGVycm5vICVkIChl eHBlY3RlZCIKPiArCQkJCSIgJWQpIiwgdGMtPmRlc2MsCj4gKwkJCQlUU1RfUkVULCB0Yy0+cmV0 LAo+ICsJCQkJVFNUX0VSUiwgdGMtPmV4cF9lcnJubyk7Cj4gKwl9IGVsc2Ugewo+ICsJCXRzdF9y ZXMoVFBBU1MsICIlcyBzdWNjZXNzZnVsIiwKPiArCQkJCXRjLT5kZXNjKTsKPiArCX0KCgpNYXli ZSBzcGxpdCByZXR1cm4gYW5kIGVycm5vICh3aWxsIGJlIGVhc2llciB0byBxdWlja2x5IHNlZSB3 aGljaCBvbmUgaXMgd3JvbmcpLgoKCVRFU1QocmVjdm1zZyhzb2NrLCB0Yy0+bXNnLCB0Yy0+Zmxh Z3MpKTsKCWlmIChUU1RfUkVUID49IDApCgkJVFNUX1JFVCA9IDA7CgoJaWYgKFRTVF9SRVQgIT0g dGMtPnJldCkgewoJCXRzdF9yZXMoVEZBSUwgfCBUVEVSUk5PLCAiJXM6IGV4cGVjdGVkICVkLCBy ZXR1cm5lZCAlbGQiLAoJCQl0Yy0+ZGVzYywgdGMtPnJldCwgVFNUX1JFVCk7Cgl9IGVsc2UgaWYg KFRTVF9FUlIgIT0gdGMtPmV4cF9lcnJubykgewoJCXRzdF9yZXMoVEZBSUwgfCBUVEVSUk5PLAoJ CQkiJXM6IGV4cGVjdGVkICVzIiwKCQkJdGMtPmRlc2MsIHRzdF9zdHJlcnJubyh0Yy0+ZXhwX2Vy cm5vKSk7Cgl9IGVsc2UgewoJCXRzdF9yZXMoVFBBU1MsICIlcyBwYXNzZWQiLCB0Yy0+ZGVzYyk7 Cgl9CgoJdGMtPmNsZWFudXAoKTsKCWNsZWFudXAoKTsKCj4gKwl0Yy0+Y2xlYW51cCgpOwo+ICsK PiArCWNsZWFudXAoKTsKPiAgfQoKLi4uCgo+ICtzdGF0aWMgdm9pZCBzZXR1cF92YWxpZF9zb2Nr KGludCBuKQo+ICB7Cj4gIAlmZF9zZXQgcmRmZHM7Cj4gIAlzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0 Owo+IC0JaW50IG47Cgo+IC0JcyA9IFNBRkVfU09DS0VUKGNsZWFudXAsIHRkYXRbdGVzdG5vXS5k b21haW4sIHRkYXRbdGVzdG5vXS50eXBlLAo+IC0JCQl0ZGF0W3Rlc3Rub10ucHJvdG8pOwo+IC0J aWYgKHRkYXRbdGVzdG5vXS50eXBlID09IFNPQ0tfU1RSRUFNKSB7Cj4gLQkJaWYgKHRkYXRbdGVz dG5vXS5kb21haW4gPT0gUEZfSU5FVCkgewo+IC0JCQlTQUZFX0NPTk5FQ1QoY2xlYW51cCwgcywg KHN0cnVjdCBzb2NrYWRkciAqKSZzaW4xLAo+ICsJc29jayA9IFNBRkVfU09DS0VUKHRjYXNlc1tu XS5kb21haW4sIHRjYXNlc1tuXS50eXBlLAo+ICsJCQl0Y2FzZXNbbl0ucHJvdG9jb2wpOwo+ICsJ aWYgKHRjYXNlc1tuXS50eXBlID09IFNPQ0tfU1RSRUFNKSB7Cj4gKwkJaWYgKHRjYXNlc1tuXS5k b21haW4gPT0gUEZfSU5FVCkgewo+ICsJCQlTQUZFX0NPTk5FQ1Qoc29jaywgKHN0cnVjdCBzb2Nr YWRkciAqKSZzaW4xLAo+ICAJCQkJICAgICBzaXplb2Yoc2luMSkpOwo+ICAJCQkvKiBXYWl0IGZv ciBzb21ldGhpbmcgdG8gYmUgcmVhZGFibGUsIGVsc2Ugd2Ugd29uJ3QgZGV0ZWN0IEVGQVVMVCBv biByZWN2ICovCj4gIAkJCUZEX1pFUk8oJnJkZmRzKTsKPiAtCQkJRkRfU0VUKHMsICZyZGZkcyk7 Cj4gKwkJCUZEX1NFVChzb2NrLCAmcmRmZHMpOwo+ICAJCQl0aW1lb3V0LnR2X3NlYyA9IDI7Cj4g IAkJCXRpbWVvdXQudHZfdXNlYyA9IDA7Cj4gLQkJCW4gPSBzZWxlY3QocyArIDEsICZyZGZkcywg MCwgMCwgJnRpbWVvdXQpOwo+IC0JCQlpZiAobiAhPSAxIHx8ICFGRF9JU1NFVChzLCAmcmRmZHMp KQo+IC0JCQkJdHN0X2Jya20oVEJST0ssIGNsZWFudXAsCj4gLQkJCQkJICJjbGllbnQgc2V0dXAx IGZhaWxlZCAtIG5vIG1lc3NhZ2UgcmVhZHkgaW4gMiBzZWMiKTsKPiAtCQl9IGVsc2UgaWYgKHRk YXRbdGVzdG5vXS5kb21haW4gPT0gUEZfVU5JWCkgewo+IC0JCQlTQUZFX0NPTk5FQ1QoY2xlYW51 cCwgcywgKHN0cnVjdCBzb2NrYWRkciAqKSZzdW4xLAo+ICsJCQluID0gc2VsZWN0KHNvY2sgKyAx LCAmcmRmZHMsIDAsIDAsICZ0aW1lb3V0KTsKPiArCQkJaWYgKG4gIT0gMSB8fCAhRkRfSVNTRVQo c29jaywgJnJkZmRzKSkKPiArCQkJCXRzdF9icmsoVEJST0ssICJjbGllbnQgc2V0dXBfdmFsaWRf c29jayBmYWlsZWQgLSBubyBtZXNzYWdlIHJlYWR5IGluIDIgc2VjIik7CgptYWtlIGNoZWNrLXJl Y3Ztc2cwMQpyZWN2bXNnMDEuYzozNDg6IFdBUk5JTkc6IFByZWZlciB1c2luZyAnIiVzLi4uIiwg X19mdW5jX18nIHRvIHVzaW5nICdzZXR1cF92YWxpZF9zb2NrJywgdGhpcyBmdW5jdGlvbidzIG5h bWUsIGluIGEgc3RyaW5nCgpCdXQgSSdkIGp1c3QgcHV0Ogp0c3RfYnJrKFRCUk9LLCAibm8gbWVz c2FnZSByZWFkeSBpbiAyIHNlYyIpOwpiZWNhdXNlIHRzdF9icmsoKSBzaG93cyBhZmZlY3RlZCBs aW5lLgoKCj4gK3N0YXRpYyB2b2lkIHNldHVwX2xhcmdlX21zZ19jb250cm9sKGludCBuKQo+ICB7 Cj4gLQlzZXR1cDIoKTsKPiAtCWNvbnRyb2xsZW4gPSBzaXplb2Yoc3RydWN0IGNtc2doZHIpIC0g MTsKPiArCXNldHVwX3ZhbGlkX21zZ19jb250cm9sKG4pOwo+ICsJY29udHJvbGxlbiA9IDEyOCAq IEJVRl9TSVpFOwpBbnkgaWRlYSB3aHkgMTI4PyBXaGF0IGlzIHRoaXMgbnVtYmVyIGZvcj8KPiAg fQoKPiAtdm9pZCBzZXR1cDQodm9pZCkKPiArc3RhdGljIHZvaWQgY2xlYW51cF9jbG9zZV9zb2Nr KHZvaWQpCj4gIHsKPiAtCXNldHVwMigpOwo+IC0JY29udHJvbGxlbiA9IDEyOCAqIDEwMjQ7Cj4g KwlTQUZFX0NMT1NFKHNvY2spOwo+ICsJc29jayA9IC0xOwpUaGlzIHNvY2sgPSAtMTsgaXMgcmVk dW5kYW50LCBiZWNhdXNlIFNBRkVfQ0xPU0UoKSBzZXQgaXQuCj4gIH0KCj4gK3N0YXRpYyB2b2lk IGNsZWFudXBfcmVzZXRfYWxsKHZvaWQpCj4gIHsKPiAtCSh2b2lkKWNsb3NlKHMpOwo+IC0JY2xv c2UodWZkKTsKPiAtCWNsb3NlKHNmZCk7Cj4gLQlzID0gLTE7Cj4gLX0KPiArCVNBRkVfQ0xPU0Uo c29jayk7Cj4gKwlzb2NrID0gLTE7CkFuZCBoZXJlIGFzIHdlbGwuCgouLi4KCnBpZF90IHN0YXJ0 X3NlcnZlcihzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNzaW4sIHN0cnVjdCBzb2NrYWRkcl91biAqc3N1 bikKewoJcGlkX3QgcGlkOwoJc29ja2xlbl90IHNsZW4gPSBzaXplb2YoKnNzaW4pOwoKLi4uCglT QUZFX0NMT1NFKHNmZCk7CglTQUZFX0NMT1NFKHVmZCk7CgoJcmV0dXJuIHBpZDsKCWV4aXQoMSk7 Cj0+IElNSE8gdGhpcyBleGl0IDEgaXMgcmVkdW5kYW50IGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4K fQoKPiAtdm9pZCBkb19jaGlsZCh2b2lkKQo+ICsvKiBzcGVjaWFsIGZvciByaWdodHMtcGFzc2lu ZyB0ZXN0ICovCj4gK3N0YXRpYyB2b2lkIHNlbmRlcihpbnQgZmQpCj4gK3sKPiArCXN0cnVjdCBt c2doZHIgbWg7ClNldCBzdHJ1Y3Qgd2l0aCB7fQoKCXN0cnVjdCBtc2doZHIgbWggPSB7fTsKCj4g KwlzdHJ1Y3QgY21zZ2hkciAqY29udHJvbDsKPiArCWNoYXIgdG1wZm5bQlVGX1NJWkVdLCBzbmRf Y2J1ZltCVUZfU0laRV07Cj4gKwlpbnQgdGZkOwo+ICsKPiArCSh2b2lkKXN0cmNweSh0bXBmbiwg InNtdFhYWFhYWCIpOwo+ICsJdGZkID0gbWtzdGVtcCh0bXBmbik7Cj4gKwlpZiAodGZkIDwgMCkK PiArCQlyZXR1cm47Cj4gKwo+ICsJbWVtc2V0KCZtaCwgMHgwMCwgc2l6ZW9mKG1oKSk7Ci4uLiB3 aWxsIGFsbG93IHRvIHNraXAgbWVtc2V0IGhlcmUuCgpBbHNvIHRoaXMgbWVtc2V0IHdpbGwgbm90 IGJlIG5lZWRlZDoKbWVtc2V0KGNvbnRyb2wsIDB4MDAsIHNpemVvZihzdHJ1Y3QgY21zZ2hkcikp OwoKPiArc3RhdGljIHZvaWQgZG9fY2hpbGQodm9pZCkKPiAgewo+ICAJc3RydWN0IHNvY2thZGRy X2luIGZzaW47Cj4gIAlzdHJ1Y3Qgc29ja2FkZHJfdW4gZnN1bjsKPiAgCWZkX3NldCBhZmRzLCBy ZmRzOwo+IC0JaW50IG5mZHMsIGNjLCBmZDsKPiArCWludCBuZmRzLCBmZDsKCj4gIAlGRF9aRVJP KCZhZmRzKTsKPiAgCUZEX1NFVChzZmQsICZhZmRzKTsKPiBAQCAtNDU1LDE5ICs0ODQsMTkgQEAg dm9pZCBkb19jaGlsZCh2b2lkKQo+ICAJCQlpbnQgbmV3ZmQ7Cgo+ICAJCQlmcm9tbGVuID0gc2l6 ZW9mKGZzaW4pOwo+IC0JCQluZXdmZCA9IGFjY2VwdChzZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikm ZnNpbiwgJmZyb21sZW4pOwo+ICsJCQluZXdmZCA9IFNBRkVfQUNDRVBUKHNmZCwgKHN0cnVjdCBz b2NrYWRkciAqKSZmc2luLCAmZnJvbWxlbik7Cj4gIAkJCWlmIChuZXdmZCA+PSAwKSB7Cj4gIAkJ CQlGRF9TRVQobmV3ZmQsICZhZmRzKTsKPiAgCQkJCW5mZHMgPSBNQVgobmZkcywgbmV3ZmQgKyAx KTsKPiAgCQkJCS8qIHNlbmQgc29tZXRoaW5nIGJhY2sgKi8KPiAtCQkJCSh2b2lkKXdyaXRlKG5l d2ZkLCAiaG9zZXJcbiIsIDYpOwo+ICsJCQkJU0FGRV9TRU5EKDEsIG5ld2ZkLCAiaGkiLCAyLCAw KTsKPiAgCQkJfQo+ICAJCX0KPiAgCQlpZiAoRkRfSVNTRVQodWZkLCAmcmZkcykpIHsKPiAgCQkJ aW50IG5ld2ZkOwoKPiAgCQkJZnJvbWxlbiA9IHNpemVvZihmc3VuKTsKPiAtCQkJbmV3ZmQgPSBh Y2NlcHQodWZkLCAoc3RydWN0IHNvY2thZGRyICopJmZzdW4sICZmcm9tbGVuKTsKPiArCQkJbmV3 ZmQgPSBTQUZFX0FDQ0VQVCh1ZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmZnN1biwgJmZyb21sZW4p Owo+ICAJCQlpZiAobmV3ZmQgPj0gMCkgewo+ICAJCQkJRkRfU0VUKG5ld2ZkLCAmYWZkcyk7Cj4g IAkJCQluZmRzID0gTUFYKG5mZHMsIG5ld2ZkICsgMSk7Cj4gQEAgLTQ3NSw1NSArNTA0LDIyIEBA IHZvaWQgZG9fY2hpbGQodm9pZCkKPiAgCQl9Cj4gIAkJZm9yIChmZCA9IDA7IGZkIDwgbmZkczsg KytmZCkKPiAgCQkJaWYgKGZkICE9IHNmZCAmJiBmZCAhPSB1ZmQgJiYgRkRfSVNTRVQoZmQsICZy ZmRzKSkgewo+IC0JCQkJY2hhciByYnVmWzEwMjRdOwo+ICsJCQkJY2hhciByYnVmW0JVRl9TSVpF XTsKCj4gLQkJCQljYyA9IHJlYWQoZmQsIHJidWYsIHNpemVvZihyYnVmKSk7Cj4gLQkJCQlpZiAo Y2MgJiYgcmJ1ZlswXSA9PSAnUicpCj4gKwkJCQlURVNUKHJlYWQoZmQsIHJidWYsIHNpemVvZihy YnVmKSkpOwo+ICsJCQkJaWYgKFRTVF9SRVQgPiAwICYmIHJidWZbMF0gPT0gJ1InKQo+ICAJCQkJ CXNlbmRlcihmZCk7Cj4gLQkJCQlpZiAoY2MgPT0gMCB8fCAoY2MgPCAwICYmIGVycm5vICE9IEVJ TlRSKSkgewo+IC0JCQkJCSh2b2lkKWNsb3NlKGZkKTsKPiArCQkJCWlmIChUU1RfUkVUID09IDAg fHwgKFRTVF9SRVQgPCAwICYmIFRTVF9FUlIgIT0gRUlOVFIpKSB7Cj4gKwkJCQkJU0FGRV9DTE9T RShmZCk7ClBsZWFzZSB1c2Ugc2ltcGxlIGNsb3NlKCkgaGVyZToKCQkJCQkvKiBIZXJlIGNhbm5v dCBiZSBTQUZFX0NMT1NFKCkgd2hpY2ggc2V0cyBmZCB0byAtMSwKCQkJCQkgKiBvdGhlcndpc2Ug Z2xpYmMgY29tcGxhaW5zOgoJCQkJCSAqICoqKiBiaXQgb3V0IG9mIHJhbmdlIDAgLSBGRF9TRVRT SVpFIG9uIGZkX3NldCAqKio6IHRlcm1pbmF0ZWQKCQkJCQkgKi8KCQkJCQljbG9zZShmZCk7CgpX aXRoIGhpZ2hlciBudW1iZXJzIG9mIC1pIHlvdSBnZXQgZXJyb3IgbWVzc2FnZSBmcm9tOgpnbGli YyA+PSAyLjM2IFsxXToKCiQgLi9yZWN2bXNnMDEgLWkgNTAwCi4uLgpyZWN2bXNnMDEuYzoyODM6 IFRQQVNTOiBpbnZhbGlkIHNvY2tldCBsZW5ndGggc3VjY2Vzc2Z1bAoqKiogYml0IG91dCBvZiBy YW5nZSAwIC0gRkRfU0VUU0laRSBvbiBmZF9zZXQgKioqOiB0ZXJtaW5hdGVkCnJlY3Ztc2cwMS5j OjI4MzogVFBBU1M6IGludmFsaWQgcmVjdiBidWZmZXIgc3VjY2Vzc2Z1bAoKRllJIFRoZSBwcm9i bGVtIGlzIHNvbWVob3cgcmVsYXRlZCB0byBtYXggRkRfU0VUU0laRSwgc2VlIG1hbiAyIHNlbGVj dCBbMl06CgogICAgICAgV0FSTklORzogc2VsZWN0KCkgY2FuIG1vbml0b3Igb25seSBmaWxlIGRl c2NyaXB0b3JzIG51bWJlcnMgdGhhdAogICAgICAgYXJlIGxlc3MgdGhhbiBGRF9TRVRTSVpFICgx MDI0KeKAlGFuIHVucmVhc29uYWJseSBsb3cgbGltaXQgZm9yCiAgICAgICBtYW55IG1vZGVybiBh cHBsaWNhdGlvbnPigJRhbmQgdGhpcyBsaW1pdGF0aW9uIHdpbGwgbm90IGNoYW5nZS4KICAgICAg IEFsbCBtb2Rlcm4gYXBwbGljYXRpb25zIHNob3VsZCBpbnN0ZWFkIHVzZSBwb2xsKDIpIG9yIGVw b2xsKDcpLAogICAgICAgd2hpY2ggZG8gbm90IHN1ZmZlciB0aGlzIGxpbWl0YXRpb24uCgpCdXQg aW4gb3VyIGNhc2UgSSBzdXBwb3NlIGl0J3MgcmVhbGx5IHNldHRpbmcgdGhlIGZpbGUgZGVzY3Jp cHRvciB0byAtMS4KQXQgbGVhc3QgdGhlIHdhcm5pbmcgZGlzYXBwZWFycyB3aGVuIHVzaW5nIGp1 c3QgY2xvc2UoZmQpLgoKS2luZCByZWdhcmRzLApQZXRyCgpbMV0gaHR0cHM6Ly9zb3VyY2V3YXJl Lm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9YmxvYjtmPWRlYnVnL2ZkZWx0X2Noay5jO2g9ZDFkM2Ex OTQ2MGZiOTkyMTJmOTFmM2M5ZTVhNWQxN2U1OTM1MzBjYTtoYj1IRUFEI2wyNgpbMl0gaHR0cHM6 Ly9tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMi9zZWxlY3QuMi5odG1sCgotLSAKTWFpbGlu ZyBsaXN0IGluZm86IGh0dHBzOi8vbGlzdHMubGludXguaXQvbGlzdGluZm8vbHRwCg==