From mboxrd@z Thu Jan 1 00:00:00 1970 From: Grant Grundler Subject: Re: [PATCH 02/10] ide-tape: use single continuous buffer Date: Wed, 25 Mar 2009 09:04:04 -0700 Message-ID: References: <1237990673-8358-1-git-send-email-tj@kernel.org> <1237990673-8358-3-git-send-email-tj@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1237990673-8358-3-git-send-email-tj@kernel.org> Sender: linux-kernel-owner@vger.kernel.org To: Tejun Heo Cc: bzolnier@gmail.com, linux-kernel@vger.kernel.org, axboe@kernel.dk, linux-ide@vger.kernel.org List-Id: linux-ide@vger.kernel.org T24gV2VkLCBNYXIgMjUsIDIwMDkgYXQgNzoxNyBBTSwgVGVqdW4gSGVvIDx0akBrZXJuZWwub3Jn PiB3cm90ZToKPiBJbXBhY3Q6IHNpbXBsZXIgYnVmZmVyIGFsbG9jYXRpb24gYW5kIGhhbmRsaW5n LCBmaXggRE1BIHRyYW5zZmVycwouLi4KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGF0b21pY19z ZXQoJmJoLT5iX2NvdW50LCBiY291bnQpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGF0 b21pY19yZWFkKCZiaC0+Yl9jb3VudCkgPT0gYmgtPmJfc2l6ZSkKLi4uCgpJJ20gZmFpbGluZyB0 byBzZWUgd2h5IGJoLT5iX2NvdW50IGlzIGFuIGF0b21pY190LgpJIGFsd2F5cyBhc3N1bWVkIHRh cGVzIHdlcmUgZXhjbHVzaXZlIGFjY2VzcyBkZXZpY2VzCmFuZCB3b3VsZCBiZSBzZXJpYWxpemVk IGF0IGEgaGlnaGVyIGxldmVsLgoKCgo+IMKgLyoKPiAtICogVGhlIGZ1bmN0aW9uIGJlbG93IHVz ZXMgX19nZXRfZnJlZV9wYWdlcyB0byBhbGxvY2F0ZSBhIGRhdGEgYnVmZmVyIG9mIHNpemUKPiAt ICogdGFwZS0+YnVmZmVyX3NpemUgKG9yIGEgYml0IG1vcmUpLiBXZSBhdHRlbXB0IHRvIGNvbWJp bmUgc2VxdWVudGlhbCBwYWdlcyBhcwo+IC0gKiBtdWNoIGFzIHBvc3NpYmxlLgo+IC0gKgo+IC0g KiBJdCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlciwgb3Ig TlVMTCBpbiBjYXNlIG9mCj4gLSAqIGZhaWx1cmUuCj4gKyAqIEl0IHJldHVybnMgYSBwb2ludGVy IHRvIHRoZSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyLCBvciBOVUxMIGluIGNhc2UKPiArICogb2Yg ZmFpbHVyZS4KPiDCoCovCj4gwqBzdGF0aWMgc3RydWN0IGlkZXRhcGVfYmggKmlkZV90YXBlX2tt YWxsb2NfYnVmZmVyKGlkZXRhcGVfdGFwZV90ICp0YXBlLAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50 IGZ1bGwsIGludCBjbGVhcikKPiAtewouLi4KPiAtYWJvcnQ6Cj4gLSDCoCDCoCDCoCBpZGVfdGFw ZV9rZnJlZV9idWZmZXIodGFwZSk7Cj4gLSDCoCDCoCDCoCByZXR1cm4gTlVMTDsKPiArIMKgIMKg IMKgIGJoLT5iX3NpemUgPSB0YXBlLT5idWZmZXJfc2l6ZTsKPiArIMKgIMKgIMKgIGF0b21pY19z ZXQoJmJoLT5iX2NvdW50LCBmdWxsID8gYmgtPmJfc2l6ZSA6IDApOwoKTm8gb25lIGVsc2UgY291 bGQgcG9zc2libHkgYmUgcmVmZXJlbmNpbmcgYmgtPmNvdW50IGF0IHRoaXMKcG9pbnQuLi5JIGxp a2UgdGhhdCBpdCdzIGNvbnNpc3RlbnQgdGhvdWdoLgoKVGhlIHVzZSBvZiBhdG9taWMgd29uJ3Qg aHVydCBjb3JyZWN0bmVzcyBhbmQgdGhpcyBwYXRjaCBsb29rcyBmaW5lIHRvIG1lLgpQbGVhc2Ug YWRkICJSZXZpZXdlZC1ieTogR3JhbnQgR3J1bmRsZXIgPGdydW5kbGVyQGdvb2dsZS5jb20+IgoK dGhhbmtzLApncmFudAoKLi4uCj4gQEAgLTk3NywzMCArODcyLDIwIEBAIHN0YXRpYyBpbnQgaWRl dGFwZV9jb3B5X3N0YWdlX3RvX3VzZXIoaWRldGFwZV90YXBlX3QgKnRhcGUsIGNoYXIgX191c2Vy ICpidWYsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBpbnQgbikKPiDCoHsKPiDCoCDCoCDCoCDCoHN0cnVjdCBpZGV0YXBlX2JoICpiaCA9 IHRhcGUtPmJoOwo+IC0gwqAgwqAgwqAgaW50IGNvdW50Owo+IMKgIMKgIMKgIMKgaW50IHJldCA9 IDA7Cj4KPiAtIMKgIMKgIMKgIHdoaWxlIChuKSB7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBp ZiAoYmggPT0gTlVMTCkgewo+ICsgwqAgwqAgwqAgaWYgKG4pIHsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGlmIChiaCA9PSBOVUxMIHx8IG4gPiB0YXBlLT5iX2NvdW50KSB7Cj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBwcmludGsoS0VSTl9FUlIgImlkZS10YXBlOiBiaCA9 PSBOVUxMIGluICVzXG4iLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgX19mdW5jX18pOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgcmV0dXJuIDE7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gLSDCoCDC oCDCoCDCoCDCoCDCoCDCoCBjb3VudCA9IG1pbih0YXBlLT5iX2NvdW50LCBuKTsKPiAtIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGlmIMKgKGNvcHlfdG9fdXNlcihidWYsIHRhcGUtPmJfZGF0YSwgY291 bnQpKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGNvcHlfdG9fdXNlcihidWYsIHRhcGUt PmJfZGF0YSwgbikpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXQgPSAx Owo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgbiAtPSBjb3VudDsKPiAtIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHRhcGUtPmJfZGF0YSArPSBjb3VudDsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRh cGUtPmJfY291bnQgLT0gY291bnQ7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBidWYgKz0gY291 bnQ7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoIXRhcGUtPmJfY291bnQpIHsKPiAtIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJoID0gYmgtPmJfcmVxbmV4dDsKPiAtIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRhcGUtPmJoID0gYmg7Cj4gLSDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoYmgpIHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRhcGUtPmJfZGF0YSA9IGJoLT5iX2RhdGE7Cj4g LSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0YXBlLT5iX2Nv dW50ID0gYXRvbWljX3JlYWQoJmJoLT5iX2NvdW50KTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIH0KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHRhcGUtPmJfZGF0YSArPSBuOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGFw ZS0+Yl9jb3VudCAtPSBuOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCF0YXBlLT5iX2Nv dW50KQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGFwZS0+YmggPSBOVUxM Owo+IMKgIMKgIMKgIMKgfQo+IMKgIMKgIMKgIMKgcmV0dXJuIHJldDsKPiDCoH0KPiBAQCAtMTI1 Miw3ICsxMTM3LDcgQEAgc3RhdGljIGludCBpZGV0YXBlX2FkZF9jaHJkZXZfd3JpdGVfcmVxdWVz dChpZGVfZHJpdmVfdCAqZHJpdmUsIGludCBibG9ja3MpCj4gwqBzdGF0aWMgdm9pZCBpZGVfdGFw ZV9mbHVzaF9tZXJnZV9idWZmZXIoaWRlX2RyaXZlX3QgKmRyaXZlKQo+IMKgewo+IMKgIMKgIMKg IMKgaWRldGFwZV90YXBlX3QgKnRhcGUgPSBkcml2ZS0+ZHJpdmVyX2RhdGE7Cj4gLSDCoCDCoCDC oCBpbnQgYmxvY2tzLCBtaW47Cj4gKyDCoCDCoCDCoCBpbnQgYmxvY2tzOwo+IMKgIMKgIMKgIMKg c3RydWN0IGlkZXRhcGVfYmggKmJoOwo+Cj4gwqAgwqAgwqAgwqBpZiAodGFwZS0+Y2hyZGV2X2Rp ciAhPSBJREVUQVBFX0RJUl9XUklURSkgewo+IEBAIC0xMjY3LDMxICsxMTUyLDE2IEBAIHN0YXRp YyB2b2lkIGlkZV90YXBlX2ZsdXNoX21lcmdlX2J1ZmZlcihpZGVfZHJpdmVfdCAqZHJpdmUpCj4g wqAgwqAgwqAgwqBpZiAodGFwZS0+bWVyZ2VfYmhfc2l6ZSkgewo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgYmxvY2tzID0gdGFwZS0+bWVyZ2VfYmhfc2l6ZSAvIHRhcGUtPmJsa19zaXplOwo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKHRhcGUtPm1lcmdlX2JoX3NpemUgJSB0YXBlLT5ibGtf c2l6ZSkgewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdW5zaWduZWQgaW50 IGk7Cj4gLQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdW5zaWduZWQgaW50 IGkgPSB0YXBlLT5ibGtfc2l6ZSAtCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCB0YXBlLT5tZXJnZV9iaF9zaXplICUgdGFwZS0+YmxrX3NpemU7Cj4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBibG9ja3MrKzsKPiAtIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGkgPSB0YXBlLT5ibGtfc2l6ZSAtIHRhcGUtPm1lcmdlX2Jo X3NpemUgJQo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg dGFwZS0+YmxrX3NpemU7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBiaCA9 IHRhcGUtPmJoLT5iX3JlcW5leHQ7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCB3aGlsZSAoYmgpIHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGF0b21pY19zZXQoJmJoLT5iX2NvdW50LCAwKTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJoID0gYmgtPmJfcmVxbmV4dDsKPiAtIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoGJoID0gdGFwZS0+Ymg7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCB3aGlsZSAoaSkgewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgaWYgKGJoID09IE5VTEwpIHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaW50ayhLRVJOX0lORk8gImlkZS10YXBl OiBidWcsIgo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAiIGJoIE5VTExcbiIpOwo+IC0g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg YnJlYWs7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9 Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtaW4gPSBt aW4oaSwgKHVuc2lnbmVkIGludCkoYmgtPmJfc2l6ZSAtCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhdG9taWNf cmVhZCgmYmgtPmJfY291bnQpKSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBpZiAoYmgpIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoG1lbXNldChiaC0+Yl9kYXRhICsgYXRvbWljX3JlYWQoJmJoLT5iX2NvdW50KSwKPiAtIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIDAsIG1pbik7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBhdG9taWNfYWRkKG1pbiwgJmJoLT5iX2NvdW50KTsKPiAtIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGkgLT0gbWluOwo+IC0gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYmggPSBiaC0+Yl9yZXFuZXh0Owo+ IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAwLCBpKTsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGF0b21pY19hZGQoaSwgJmJo LT5iX2NvdW50KTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZQo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnRrKEtF Uk5fSU5GTyAiaWRlLXRhcGU6IGJ1ZywgYmggTlVMTFxuIik7Cj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqB9Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAodm9pZCkgaWRldGFwZV9hZGRfY2hyZGV2 X3dyaXRlX3JlcXVlc3QoZHJpdmUsIGJsb2Nrcyk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0 YXBlLT5tZXJnZV9iaF9zaXplID0gMDsKPiBAQCAtMTMxOSw3ICsxMTg5LDcgQEAgc3RhdGljIGlu dCBpZGV0YXBlX2luaXRfcmVhZChpZGVfZHJpdmVfdCAqZHJpdmUpCj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgIiAwIG5vd1xuIik7 Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0YXBlLT5tZXJnZV9iaF9zaXpl ID0gMDsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHRhcGUtPm1lcmdlX2JoID0gaWRlX3RhcGVfa21hbGxvY19idWZmZXIodGFwZSwgMCwgMCk7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0YXBlLT5tZXJnZV9iaCA9IGlkZV90YXBlX2ttYWxsb2Nf YnVmZmVyKHRhcGUsIDApOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCF0YXBlLT5tZXJn ZV9iaCkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJldHVybiAtRU5PTUVN Owo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdGFwZS0+Y2hyZGV2X2RpciA9IElERVRBUEVfRElS X1JFQUQ7Cj4gQEAgLTEzNjYsMjMgKzEyMzYsMTggQEAgc3RhdGljIGludCBpZGV0YXBlX2FkZF9j aHJkZXZfcmVhZF9yZXF1ZXN0KGlkZV9kcml2ZV90ICpkcml2ZSwgaW50IGJsb2NrcykKPiDCoHN0 YXRpYyB2b2lkIGlkZXRhcGVfcGFkX3plcm9zKGlkZV9kcml2ZV90ICpkcml2ZSwgaW50IGJjb3Vu dCkKPiDCoHsKPiDCoCDCoCDCoCDCoGlkZXRhcGVfdGFwZV90ICp0YXBlID0gZHJpdmUtPmRyaXZl cl9kYXRhOwo+IC0gwqAgwqAgwqAgc3RydWN0IGlkZXRhcGVfYmggKmJoOwo+ICsgwqAgwqAgwqAg c3RydWN0IGlkZXRhcGVfYmggKmJoID0gdGFwZS0+bWVyZ2VfYmg7Cj4gwqAgwqAgwqAgwqBpbnQg YmxvY2tzOwo+Cj4gwqAgwqAgwqAgwqB3aGlsZSAoYmNvdW50KSB7Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqB1bnNpZ25lZCBpbnQgY291bnQ7Cj4KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJo ID0gdGFwZS0+bWVyZ2VfYmg7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjb3VudCA9IG1pbih0 YXBlLT5idWZmZXJfc2l6ZSwgYmNvdW50KTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGJjb3Vu dCAtPSBjb3VudDsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGJsb2NrcyA9IGNvdW50IC8gdGFw ZS0+YmxrX3NpemU7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCB3aGlsZSAoY291bnQpIHsKPiAt IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGF0b21pY19zZXQoJmJoLT5iX2NvdW50 LAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBt aW4oY291bnQsICh1bnNpZ25lZCBpbnQpYmgtPmJfc2l6ZSkpOwo+IC0gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgbWVtc2V0KGJoLT5iX2RhdGEsIDAsIGF0b21pY19yZWFkKCZiaC0+ Yl9jb3VudCkpOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY291bnQgLT0g YXRvbWljX3JlYWQoJmJoLT5iX2NvdW50KTsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGJoID0gYmgtPmJfcmVxbmV4dDsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGF0b21pY19zZXQoJmJoLT5iX2NvdW50LCBjb3VudCk7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtZW1zZXQoYmgtPmJfZGF0YSwgMCwgYXRvbWljX3JlYWQo JmJoLT5iX2NvdW50KSk7Cj4gKwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWRldGFwZV9xdWV1 ZV9yd190YWlsKGRyaXZlLCBSRVFfSURFVEFQRV9XUklURSwgYmxvY2tzLAo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdGFwZS0+bWVyZ2Vf YmgpOwo+IMKgIMKgIMKgIMKgfQo+IEBAIC0xNTk0LDcgKzE0NTksNyBAQCBzdGF0aWMgc3NpemVf dCBpZGV0YXBlX2NocmRldl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3Vz ZXIgKmJ1ZiwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCJzaG91bGQgYmUgMCBub3dcbiIpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgdGFwZS0+bWVyZ2VfYmhfc2l6ZSA9IDA7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4g LSDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0YXBlLT5tZXJnZV9iaCA9IGlkZV90YXBlX2ttYWxsb2Nf YnVmZmVyKHRhcGUsIDAsIDApOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGFwZS0+bWVyZ2Vf YmggPSBpZGVfdGFwZV9rbWFsbG9jX2J1ZmZlcih0YXBlLCAwKTsKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGlmICghdGFwZS0+bWVyZ2VfYmgpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqByZXR1cm4gLUVOT01FTTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRhcGUtPmNo cmRldl9kaXIgPSBJREVUQVBFX0RJUl9XUklURTsKPiBAQCAtMTk2OCw3ICsxODMzLDcgQEAgc3Rh dGljIHZvaWQgaWRldGFwZV93cml0ZV9yZWxlYXNlKGlkZV9kcml2ZV90ICpkcml2ZSwgdW5zaWdu ZWQgaW50IG1pbm9yKQo+IMKgIMKgIMKgIMKgaWRldGFwZV90YXBlX3QgKnRhcGUgPSBkcml2ZS0+ ZHJpdmVyX2RhdGE7Cj4KPiDCoCDCoCDCoCDCoGlkZV90YXBlX2ZsdXNoX21lcmdlX2J1ZmZlcihk cml2ZSk7Cj4gLSDCoCDCoCDCoCB0YXBlLT5tZXJnZV9iaCA9IGlkZV90YXBlX2ttYWxsb2NfYnVm ZmVyKHRhcGUsIDEsIDApOwo+ICsgwqAgwqAgwqAgdGFwZS0+bWVyZ2VfYmggPSBpZGVfdGFwZV9r bWFsbG9jX2J1ZmZlcih0YXBlLCAxKTsKPiDCoCDCoCDCoCDCoGlmICh0YXBlLT5tZXJnZV9iaCAh PSBOVUxMKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZGV0YXBlX3BhZF96ZXJvcyhkcml2 ZSwgdGFwZS0+YmxrX3NpemUgKgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgKHRhcGUtPnVzZXJfYnNfZmFjdG9yIC0gMSkpOwo+IEBAIC0yMTk5LDExICsy MDY0LDYgQEAgc3RhdGljIHZvaWQgaWRldGFwZV9zZXR1cChpZGVfZHJpdmVfdCAqZHJpdmUsIGlk ZXRhcGVfdGFwZV90ICp0YXBlLCBpbnQgbWlub3IpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0 YXBlLT5idWZmZXJfc2l6ZSA9ICpjdGwgKiB0YXBlLT5ibGtfc2l6ZTsKPiDCoCDCoCDCoCDCoH0K PiDCoCDCoCDCoCDCoGJ1ZmZlcl9zaXplID0gdGFwZS0+YnVmZmVyX3NpemU7Cj4gLSDCoCDCoCDC oCB0YXBlLT5wYWdlc19wZXJfYnVmZmVyID0gYnVmZmVyX3NpemUgLyBQQUdFX1NJWkU7Cj4gLSDC oCDCoCDCoCBpZiAoYnVmZmVyX3NpemUgJSBQQUdFX1NJWkUpIHsKPiAtIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHRhcGUtPnBhZ2VzX3Blcl9idWZmZXIrKzsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHRhcGUtPmV4Y2Vzc19iaF9zaXplID0gUEFHRV9TSVpFIC0gYnVmZmVyX3NpemUgJSBQQUdFX1NJ WkU7Cj4gLSDCoCDCoCDCoCB9Cj4KPiDCoCDCoCDCoCDCoC8qIHNlbGVjdCB0aGUgImJlc3QiIERT QyByZWFkL3dyaXRlIHBvbGxpbmcgZnJlcSAqLwo+IMKgIMKgIMKgIMKgc3BlZWQgPSBtYXgoKih1 MTYgKikmdGFwZS0+Y2Fwc1sxNF0sICoodTE2ICopJnRhcGUtPmNhcHNbOF0pOwo+IC0tCj4gMS42 LjAuMgo+Cj4gLS0KPiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGlu ZSAidW5zdWJzY3JpYmUgbGludXgtaWRlIiBpbgo+IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBt YWpvcmRvbW9Admdlci5rZXJuZWwub3JnCj4gTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCDCoGh0dHA6 Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAo+Cg==