From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751244AbWGKM2w (ORCPT ); Tue, 11 Jul 2006 08:28:52 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751246AbWGKM2w (ORCPT ); Tue, 11 Jul 2006 08:28:52 -0400 Received: from ug-out-1314.google.com ([66.249.92.169]:59445 "EHLO ug-out-1314.google.com") by vger.kernel.org with ESMTP id S1751244AbWGKM2v (ORCPT ); Tue, 11 Jul 2006 08:28:51 -0400 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=GKQGngMpYS6PAm48OD7WJ4cIkJp8vByWl4+5QpQ0G/cOT3hsCgvxmoNFtAHr8gmLekJr3Eb3h38Ra2+E1vwO0HYbcxIPi8Sb9kH7XVRV01J3LJnuRaO7rTOKg+eax44Z4O4U8BoM5gav8jDcyA/NuNqxgteRi+Hn9gVgl3JrS/E= Message-ID: <9e4733910607110528t73d5d7dai73efd59caddb9d25@mail.gmail.com> Date: Tue, 11 Jul 2006 08:28:49 -0400 From: "Jon Smirl" To: "Alan Cox" Subject: Re: tty's use of file_list_lock and file_move Cc: "Theodore Tso" , lkml In-Reply-To: <1152612752.18028.3.camel@localhost.localdomain> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_13360_19600121.1152620929153" References: <9e4733910607100810r6e02f69g9a3f6d3d1400b397@mail.gmail.com> <9e4733910607101027g5f3386feq5fc54f7593214139@mail.gmail.com> <1152554708.27368.202.camel@localhost.localdomain> <9e4733910607101535i7f395686p7450dc524d9b82ae@mail.gmail.com> <1152573312.27368.212.camel@localhost.localdomain> <9e4733910607101604j16c54ef0r966f72f3501cfd2b@mail.gmail.com> <9e4733910607101649m21579ae2p9372cced67283615@mail.gmail.com> <20060711012904.GD30332@thunk.org> <9e4733910607101916y4638c097ie26ae63a9949bc3e@mail.gmail.com> <1152612752.18028.3.camel@localhost.localdomain> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org ------=_Part_13360_19600121.1152620929153 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 7/11/06, Alan Cox wrote: > Ar Llu, 2006-07-10 am 22:16 -0400, ysgrifennodd Jon Smirl: > > I'm not looking for performance gains, I'm looking more to isolate the > > tty code down to a minimal set of interactions with the rest of the > > kernel. RIght now it is all intertwined. > > That might be tricky given that hangup and SAK have to directly interact > with the VFS locking. I haven't got a working patch yet but I think there are a couple of functions that should live over in the kernel code and have tty call them. For example, make the walk every thread loop into a kernel function named revoke (hopefully it will get fully fleshed out at some point) and move it over to /kernel. The code that manipulates job control belongs in /kernel too with tty calling it. Right now the job control code is spread over three directories. It could be collected into a single file which would make it more understandable. The general idea is that the current tty code is not really a device driver, it has some kernel functions smeared into it. I'm looking at extracting those kernel functions and making an API for them. Doing that should make the locking needs more obvious and understandable. Of course I am going to need help decoding all of the current locking. Every time one of those global locks is taken I have worry about spooky quantum interaction at a distance. Have either of you looked at the refcount patch I posted earlier? I'll attach it again so you don't need to search. -- Jon Smirl jonsmirl@gmail.com ------=_Part_13360_19600121.1152620929153 Content-Type: text/x-patch; name=tty-refcount.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_epi8jz8r Content-Disposition: attachment; filename="tty-refcount.patch" ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci90dHlfaW8uYyBiL2RyaXZlcnMvY2hhci90dHlfaW8u YwppbmRleCBiZmRiOTAyLi41YzY3M2UwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvdHR5X2lv LmMKKysrIGIvZHJpdmVycy9jaGFyL3R0eV9pby5jCkBAIC0xMjYsOSArMTI2LDggQEAgRVhQT1JU X1NZTUJPTCh0dHlfc3RkX3Rlcm1pb3MpOwogICAgCiBMSVNUX0hFQUQodHR5X2RyaXZlcnMpOwkJ CS8qIGxpbmtlZCBsaXN0IG9mIHR0eSBkcml2ZXJzICovCiAKLS8qIFNlbWFwaG9yZSB0byBwcm90 ZWN0IGNyZWF0aW5nIGFuZCByZWxlYXNpbmcgYSB0dHkuIFRoaXMgaXMgc2hhcmVkIHdpdGgKLSAg IHZ0LmMgZm9yIGRlZXBseSBkaXNndXN0aW5nIGhhY2sgcmVhc29ucyAqLwotREVGSU5FX01VVEVY KHR0eV9tdXRleCk7CisvKiBTcGlubG9jayB0byBwcm90ZWN0IGNyZWF0aW5nIGFuZCByZWxlYXNp bmcgYSB0dHkuICovCitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHR0eV9sb2NrKTsKIAogI2lmZGVm IENPTkZJR19VTklYOThfUFRZUwogZXh0ZXJuIHN0cnVjdCB0dHlfZHJpdmVyICpwdG1fZHJpdmVy OwkvKiBVbml4OTggcHR5IG1hc3RlcnM7IGZvciAvZGV2L3B0bXggKi8KQEAgLTE1OCwyMSArMTU3 LDIxIEBAIHN0YXRpYyBzdHJ1Y3QgdHR5X3N0cnVjdCAqYWxsb2NfdHR5X3N0cnUKIHsKIAlzdHJ1 Y3QgdHR5X3N0cnVjdCAqdHR5OwogCi0JdHR5ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHR0eV9z dHJ1Y3QpLCBHRlBfS0VSTkVMKTsKLQlpZiAodHR5KQotCQltZW1zZXQodHR5LCAwLCBzaXplb2Yo c3RydWN0IHR0eV9zdHJ1Y3QpKTsKKwl0dHkgPSBrbWFsbG9jKHNpemVvZigqdHR5KSwgR0ZQX0tF Uk5FTCk7CiAJcmV0dXJuIHR0eTsKIH0KIAogc3RhdGljIHZvaWQgdHR5X2J1ZmZlcl9mcmVlX2Fs bChzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKIAotc3RhdGljIGlubGluZSB2b2lkIGZyZWVfdHR5X3N0 cnVjdChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KQordm9pZCBmcmVlX3R0eV9zdHJ1Y3Qoc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSkKIHsKIAlrZnJlZSh0dHktPndyaXRlX2J1Zik7CiAJdHR5X2J1ZmZl cl9mcmVlX2FsbCh0dHkpOwogCWtmcmVlKHR0eSk7CiB9CiAKK0VYUE9SVF9TWU1CT0woZnJlZV90 dHlfc3RydWN0KTsKKwogI2RlZmluZSBUVFlfTlVNQkVSKHR0eSkgKCh0dHkpLT5pbmRleCArICh0 dHkpLT5kcml2ZXItPm5hbWVfYmFzZSkKIAogY2hhciAqdHR5X25hbWUoc3RydWN0IHR0eV9zdHJ1 Y3QgKnR0eSwgY2hhciAqYnVmKQpAQCAtMTA5MCw3ICsxMDg5LDcgQEAgc3RhdGljIHZvaWQgZG9f dHR5X2hhbmd1cCh2b2lkICpkYXRhKQogCWlmICh0dHktPnNlc3Npb24gPiAwKSB7CiAJCWRvX2Vh Y2hfdGFza19waWQodHR5LT5zZXNzaW9uLCBQSURUWVBFX1NJRCwgcCkgewogCQkJaWYgKHAtPnNp Z25hbC0+dHR5ID09IHR0eSkKLQkJCQlwLT5zaWduYWwtPnR0eSA9IE5VTEw7CisJCQkJdHR5X3B1 dCgmcC0+c2lnbmFsLT50dHksIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAJCQlpZiAoIXAtPnNp Z25hbC0+bGVhZGVyKQogCQkJCWNvbnRpbnVlOwogCQkJZ3JvdXBfc2VuZF9zaWdfaW5mbyhTSUdI VVAsIFNFTkRfU0lHX1BSSVYsIHApOwpAQCAtMTE4NCwxMSArMTE4Myw5IEBAIHZvaWQgZGlzYXNz b2NpYXRlX2N0dHkoaW50IG9uX2V4aXQpCiAKIAlsb2NrX2tlcm5lbCgpOwogCi0JbXV0ZXhfbG9j aygmdHR5X211dGV4KTsKIAl0dHkgPSBjdXJyZW50LT5zaWduYWwtPnR0eTsKIAlpZiAodHR5KSB7 CiAJCXR0eV9wZ3JwID0gdHR5LT5wZ3JwOwotCQltdXRleF91bmxvY2soJnR0eV9tdXRleCk7CiAJ CWlmIChvbl9leGl0ICYmIHR0eS0+ZHJpdmVyLT50eXBlICE9IFRUWV9EUklWRVJfVFlQRV9QVFkp CiAJCQl0dHlfdmhhbmd1cCh0dHkpOwogCX0gZWxzZSB7CkBAIC0xMTk2LDcgKzExOTMsNiBAQCB2 b2lkIGRpc2Fzc29jaWF0ZV9jdHR5KGludCBvbl9leGl0KQogCQkJa2lsbF9wZyhjdXJyZW50LT5z aWduYWwtPnR0eV9vbGRfcGdycCwgU0lHSFVQLCBvbl9leGl0KTsKIAkJCWtpbGxfcGcoY3VycmVu dC0+c2lnbmFsLT50dHlfb2xkX3BncnAsIFNJR0NPTlQsIG9uX2V4aXQpOwogCQl9Ci0JCW11dGV4 X3VubG9jaygmdHR5X211dGV4KTsKIAkJdW5sb2NrX2tlcm5lbCgpOwkKIAkJcmV0dXJuOwogCX0K QEAgLTEyMDYsOCArMTIwMiw2IEBAIHZvaWQgZGlzYXNzb2NpYXRlX2N0dHkoaW50IG9uX2V4aXQp CiAJCQlraWxsX3BnKHR0eV9wZ3JwLCBTSUdDT05ULCBvbl9leGl0KTsKIAl9CiAKLQkvKiBNdXN0 IGxvY2sgY2hhbmdlcyB0byB0dHlfb2xkX3BncnAgKi8KLQltdXRleF9sb2NrKCZ0dHlfbXV0ZXgp OwogCWN1cnJlbnQtPnNpZ25hbC0+dHR5X29sZF9wZ3JwID0gMDsKIAl0dHktPnNlc3Npb24gPSAw OwogCXR0eS0+cGdycCA9IC0xOwpAQCAtMTIxNSwxMCArMTIwOSw5IEBAIHZvaWQgZGlzYXNzb2Np YXRlX2N0dHkoaW50IG9uX2V4aXQpCiAJLyogTm93IGNsZWFyIHNpZ25hbC0+dHR5IHVuZGVyIHRo ZSBsb2NrICovCiAJcmVhZF9sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKIAlkb19lYWNoX3Rhc2tfcGlk KGN1cnJlbnQtPnNpZ25hbC0+c2Vzc2lvbiwgUElEVFlQRV9TSUQsIHApIHsKLQkJcC0+c2lnbmFs LT50dHkgPSBOVUxMOworCQl0dHlfcHV0KCZwLT5zaWduYWwtPnR0eSwgMCwgX19GSUxFX18sIF9f TElORV9fKTsKIAl9IHdoaWxlX2VhY2hfdGFza19waWQoY3VycmVudC0+c2lnbmFsLT5zZXNzaW9u LCBQSURUWVBFX1NJRCwgcCk7CiAJcmVhZF91bmxvY2soJnRhc2tsaXN0X2xvY2spOwotCW11dGV4 X3VubG9jaygmdHR5X211dGV4KTsKIAl1bmxvY2tfa2VybmVsKCk7CiB9CiAKQEAgLTE1NDYsNyAr MTUzOSw4IEBAIHN0YXRpYyBpbnQgaW5pdF9kZXYoc3RydWN0IHR0eV9kcml2ZXIgKmQKIAkJICog RXZlcnl0aGluZyBhbGxvY2F0ZWQgLi4uIHNldCB1cCB0aGUgb190dHkgc3RydWN0dXJlLgogCQkg Ki8KIAkJaWYgKCEoZHJpdmVyLT5vdGhlci0+ZmxhZ3MgJiBUVFlfRFJJVkVSX0RFVlBUU19NRU0p KSB7Ci0JCQlkcml2ZXItPm90aGVyLT50dHlzW2lkeF0gPSBvX3R0eTsKKwkJCWRyaXZlci0+b3Ro ZXItPnR0eXNbaWR4XSA9IHR0eV9nZXQob190dHksIAorCQkJCQkJCV9fRklMRV9fLCBfX0xJTkVf Xyk7CiAJCX0KIAkJaWYgKCEqb190cF9sb2MpCiAJCQkqb190cF9sb2MgPSBvX3RwOwpAQCAtMTU1 OSw4ICsxNTUzLDggQEAgc3RhdGljIGludCBpbml0X2RldihzdHJ1Y3QgdHR5X2RyaXZlciAqZAog CQkJb190dHktPmNvdW50Kys7CiAKIAkJLyogRXN0YWJsaXNoIHRoZSBsaW5rcyBpbiBib3RoIGRp cmVjdGlvbnMgKi8KLQkJdHR5LT5saW5rICAgPSBvX3R0eTsKLQkJb190dHktPmxpbmsgPSB0dHk7 CisJCXR0eS0+bGluayAgID0gdHR5X2dldChvX3R0eSwgX19GSUxFX18sIF9fTElORV9fKTsKKwkJ b190dHktPmxpbmsgPSB0dHlfZ2V0KHR0eSwgX19GSUxFX18sIF9fTElORV9fKTsKIAl9CiAKIAkv KiAKQEAgLTE1NjksNyArMTU2Myw3IEBAIHN0YXRpYyBpbnQgaW5pdF9kZXYoc3RydWN0IHR0eV9k cml2ZXIgKmQKIAkgKiB0aGVyZSdzIG5vIG5lZWQgdG8gbnVsbCBvdXQgdGhlIGxvY2FsIHBvaW50 ZXJzLgogCSAqLwogCWlmICghKGRyaXZlci0+ZmxhZ3MgJiBUVFlfRFJJVkVSX0RFVlBUU19NRU0p KSB7Ci0JCWRyaXZlci0+dHR5c1tpZHhdID0gdHR5OworCQlkcml2ZXItPnR0eXNbaWR4XSA9IHR0 eV9nZXQodHR5LCBfX0ZJTEVfXywgX19MSU5FX18pOwogCX0KIAkKIAlpZiAoISp0cF9sb2MpCkBA IC0xNjM2LDcgKzE2MzAsNiBAQCBmYXN0X3RyYWNrOgogc3VjY2VzczoKIAkqcmV0X3R0eSA9IHR0 eTsKIAkKLQkvKiBBbGwgcGF0aHMgY29tZSB0aHJvdWdoIGhlcmUgdG8gcmVsZWFzZSB0aGUgbXV0 ZXggKi8KIGVuZF9pbml0OgogCXJldHVybiByZXR2YWw7CiAKQEAgLTE2NDQsMTAgKzE2MzcsMTAg QEAgZW5kX2luaXQ6CiBmcmVlX21lbV9vdXQ6CiAJa2ZyZWUob190cCk7CiAJaWYgKG9fdHR5KQot CQlmcmVlX3R0eV9zdHJ1Y3Qob190dHkpOworCQl0dHlfcHV0KCZvX3R0eSwgMSwgX19GSUxFX18s IF9fTElORV9fKTsKIAlrZnJlZShsdHApOwogCWtmcmVlKHRwKTsKLQlmcmVlX3R0eV9zdHJ1Y3Qo dHR5KTsKKwl0dHlfcHV0KCZ0dHksIDEsIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAKIGZhaWxfbm9f bWVtOgogCW1vZHVsZV9wdXQoZHJpdmVyLT5vd25lcik7CkBAIC0xNjc0LDcgKzE2NjcsOCBAQCBz dGF0aWMgdm9pZCByZWxlYXNlX21lbShzdHJ1Y3QgdHR5X3N0cnVjCiAKIAlpZiAoKG9fdHR5ID0g dHR5LT5saW5rKSAhPSBOVUxMKSB7CiAJCWlmICghZGV2cHRzKQotCQkJb190dHktPmRyaXZlci0+ dHR5c1tpZHhdID0gTlVMTDsKKwkJCXR0eV9wdXQoJm9fdHR5LT5kcml2ZXItPnR0eXNbaWR4XSwg MCwgCisJCQkJCQlfX0ZJTEVfXywgX19MSU5FX18pOwogCQlpZiAob190dHktPmRyaXZlci0+Zmxh Z3MgJiBUVFlfRFJJVkVSX1JFU0VUX1RFUk1JT1MpIHsKIAkJCXRwID0gb190dHktPnRlcm1pb3M7 CiAJCQlpZiAoIWRldnB0cykKQEAgLTE2OTEsMTEgKzE2ODUsMTQgQEAgc3RhdGljIHZvaWQgcmVs ZWFzZV9tZW0oc3RydWN0IHR0eV9zdHJ1YwogCQlmaWxlX2xpc3RfbG9jaygpOwogCQlsaXN0X2Rl bF9pbml0KCZvX3R0eS0+dHR5X2ZpbGVzKTsKIAkJZmlsZV9saXN0X3VubG9jaygpOwotCQlmcmVl X3R0eV9zdHJ1Y3Qob190dHkpOworCQl0dHlfcHV0KCZvX3R0eS0+bGluaywgMCwgX19GSUxFX18s IF9fTElORV9fKTsKKwkJdHR5X3B1dCgmdHR5LT5saW5rLCAwLCBfX0ZJTEVfXywgX19MSU5FX18p OworCQl0dHlfcHV0KCZvX3R0eSwgMSwgX19GSUxFX18sIF9fTElORV9fKTsKIAl9CiAKIAlpZiAo IWRldnB0cykKLQkJdHR5LT5kcml2ZXItPnR0eXNbaWR4XSA9IE5VTEw7CisJCXR0eV9wdXQoJnR0 eS0+ZHJpdmVyLT50dHlzW2lkeF0sIDAsCisJCQkJCSBfX0ZJTEVfXywgX19MSU5FX18pOwogCWlm ICh0dHktPmRyaXZlci0+ZmxhZ3MgJiBUVFlfRFJJVkVSX1JFU0VUX1RFUk1JT1MpIHsKIAkJdHAg PSB0dHktPnRlcm1pb3M7CiAJCWlmICghZGV2cHRzKQpAQCAtMTcxNCw3ICsxNzExLDcgQEAgc3Rh dGljIHZvaWQgcmVsZWFzZV9tZW0oc3RydWN0IHR0eV9zdHJ1YwogCWxpc3RfZGVsX2luaXQoJnR0 eS0+dHR5X2ZpbGVzKTsKIAlmaWxlX2xpc3RfdW5sb2NrKCk7CiAJbW9kdWxlX3B1dCh0dHktPmRy aXZlci0+b3duZXIpOwotCWZyZWVfdHR5X3N0cnVjdCh0dHkpOworCXR0eV9wdXQoJnR0eSwgMSwg X19GSUxFX18sIF9fTElORV9fKTsKIH0KIAogLyoKQEAgLTE4MzIsNyArMTgyOSw3IEBAICNlbmRp ZgogCQkvKiBHdWFyZCBhZ2FpbnN0IHJhY2VzIHdpdGggdHR5LT5jb3VudCBjaGFuZ2VzIGVsc2V3 aGVyZSBhbmQKIAkJICAgb3BlbnMgb24gL2Rldi90dHkgKi8KIAkJICAgCi0JCW11dGV4X2xvY2so JnR0eV9tdXRleCk7CisJCXNwaW5fbG9jaygmdHR5X2xvY2spOwogCQl0dHlfY2xvc2luZyA9IHR0 eS0+Y291bnQgPD0gMTsKIAkJb190dHlfY2xvc2luZyA9IG9fdHR5ICYmCiAJCQkob190dHktPmNv dW50IDw9IChwdHlfbWFzdGVyID8gMSA6IDApKTsKQEAgLTE4NjEsOSArMTg1OCw5IEBAICNlbmRp ZgogCQlpZiAoIWRvX3NsZWVwKQogCQkJYnJlYWs7CiAKKwkJc3Bpbl91bmxvY2soJnR0eV9sb2Nr KTsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAicmVsZWFzZV9kZXY6ICVzOiByZWFkL3dyaXRlIHdh aXQgcXVldWUgIgogCQkJCSAgICAiYWN0aXZlIVxuIiwgdHR5X25hbWUodHR5LCBidWYpKTsKLQkJ bXV0ZXhfdW5sb2NrKCZ0dHlfbXV0ZXgpOwogCQlzY2hlZHVsZSgpOwogCX0JCiAKQEAgLTE4OTYs NyArMTg5Myw4IEBAICNlbmRpZgogCSAqICAgIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGhh bmRsZWQgZm9yIGhhbmd1cHMuCiAJICovCiAJZmlsZV9raWxsKGZpbHApOwotCWZpbHAtPnByaXZh dGVfZGF0YSA9IE5VTEw7CisJdHR5X3B1dCgoc3RydWN0IHR0eV9zdHJ1Y3QgKiopKCZmaWxwLT5w cml2YXRlX2RhdGEpLAorCQkJCQkwLCBfX0ZJTEVfXywgX19MSU5FX18pOwogCiAJLyoKIAkgKiBQ ZXJmb3JtIHNvbWUgaG91c2VrZWVwaW5nIGJlZm9yZSBkZWNpZGluZyB3aGV0aGVyIHRvIHJldHVy bi4KQEAgLTE5MjAsMTYgKzE5MTgsMTYgQEAgI2VuZGlmCiAKIAkJcmVhZF9sb2NrKCZ0YXNrbGlz dF9sb2NrKTsKIAkJZG9fZWFjaF90YXNrX3BpZCh0dHktPnNlc3Npb24sIFBJRFRZUEVfU0lELCBw KSB7Ci0JCQlwLT5zaWduYWwtPnR0eSA9IE5VTEw7CisJCQl0dHlfcHV0KCZwLT5zaWduYWwtPnR0 eSwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKIAkJfSB3aGlsZV9lYWNoX3Rhc2tfcGlkKHR0eS0+ c2Vzc2lvbiwgUElEVFlQRV9TSUQsIHApOwogCQlpZiAob190dHkpCiAJCQlkb19lYWNoX3Rhc2tf cGlkKG9fdHR5LT5zZXNzaW9uLCBQSURUWVBFX1NJRCwgcCkgewotCQkJCXAtPnNpZ25hbC0+dHR5 ID0gTlVMTDsKKwkJCQl0dHlfcHV0KCZwLT5zaWduYWwtPnR0eSwgMCwgX19GSUxFX18sIF9fTElO RV9fKTsKIAkJCX0gd2hpbGVfZWFjaF90YXNrX3BpZChvX3R0eS0+c2Vzc2lvbiwgUElEVFlQRV9T SUQsIHApOwogCQlyZWFkX3VubG9jaygmdGFza2xpc3RfbG9jayk7CiAJfQogCi0JbXV0ZXhfdW5s b2NrKCZ0dHlfbXV0ZXgpOworCXNwaW5fdW5sb2NrKCZ0dHlfbG9jayk7CiAKIAkvKiBjaGVjayB3 aGV0aGVyIGJvdGggc2lkZXMgYXJlIGNsb3NpbmcgLi4uICovCiAJaWYgKCF0dHlfY2xvc2luZyB8 fCAob190dHkgJiYgIW9fdHR5X2Nsb3NpbmcpKQpAQCAtMjAzNCwxMSArMjAzMiwxMSBAQCByZXRy eV9vcGVuOgogCWluZGV4ICA9IC0xOwogCXJldHZhbCA9IDA7CiAJCi0JbXV0ZXhfbG9jaygmdHR5 X211dGV4KTsKLQorCXNwaW5fbG9jaygmdHR5X2xvY2spOworCQogCWlmIChkZXZpY2UgPT0gTUtE RVYoVFRZQVVYX01BSk9SLDApKSB7CiAJCWlmICghY3VycmVudC0+c2lnbmFsLT50dHkpIHsKLQkJ CW11dGV4X3VubG9jaygmdHR5X211dGV4KTsKKwkJCXNwaW5fdW5sb2NrKCZ0dHlfbG9jayk7CiAJ CQlyZXR1cm4gLUVOWElPOwogCQl9CiAJCWRyaXZlciA9IGN1cnJlbnQtPnNpZ25hbC0+dHR5LT5k cml2ZXI7CkBAIC0yMDY0LDIyICsyMDYyLDIyIEBAICNlbmRpZgogCQkJbm9jdHR5ID0gMTsKIAkJ CWdvdG8gZ290X2RyaXZlcjsKIAkJfQotCQltdXRleF91bmxvY2soJnR0eV9tdXRleCk7CisJCXNw aW5fdW5sb2NrKCZ0dHlfbG9jayk7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIAogCWRyaXZlciA9 IGdldF90dHlfZHJpdmVyKGRldmljZSwgJmluZGV4KTsKIAlpZiAoIWRyaXZlcikgewotCQltdXRl eF91bmxvY2soJnR0eV9tdXRleCk7CisJCXNwaW5fdW5sb2NrKCZ0dHlfbG9jayk7CiAJCXJldHVy biAtRU5PREVWOwogCX0KIGdvdF9kcml2ZXI6CiAJcmV0dmFsID0gaW5pdF9kZXYoZHJpdmVyLCBp bmRleCwgJnR0eSk7Ci0JbXV0ZXhfdW5sb2NrKCZ0dHlfbXV0ZXgpOworCXNwaW5fdW5sb2NrKCZ0 dHlfbG9jayk7CiAJaWYgKHJldHZhbCkKIAkJcmV0dXJuIHJldHZhbDsKIAotCWZpbHAtPnByaXZh dGVfZGF0YSA9IHR0eTsKKwlmaWxwLT5wcml2YXRlX2RhdGEgPSB0dHlfZ2V0KHR0eSwgX19GSUxF X18sIF9fTElORV9fKTsKIAlmaWxlX21vdmUoZmlscCwgJnR0eS0+dHR5X2ZpbGVzKTsKIAljaGVj a190dHlfY291bnQodHR5LCAidHR5X29wZW4iKTsKIAlpZiAodHR5LT5kcml2ZXItPnR5cGUgPT0g VFRZX0RSSVZFUl9UWVBFX1BUWSAmJgpAQCAtMjEyMiw3ICsyMTIwLDcgQEAgI2VuZGlmCiAJICAg ICFjdXJyZW50LT5zaWduYWwtPnR0eSAmJgogCSAgICB0dHktPnNlc3Npb24gPT0gMCkgewogCSAg ICAJdGFza19sb2NrKGN1cnJlbnQpOwotCQljdXJyZW50LT5zaWduYWwtPnR0eSA9IHR0eTsKKwkJ Y3VycmVudC0+c2lnbmFsLT50dHkgPSB0dHlfZ2V0KHR0eSwgX19GSUxFX18sIF9fTElORV9fKTsK IAkJdGFza191bmxvY2soY3VycmVudCk7CiAJCWN1cnJlbnQtPnNpZ25hbC0+dHR5X29sZF9wZ3Jw ID0gMDsKIAkJdHR5LT5zZXNzaW9uID0gY3VycmVudC0+c2lnbmFsLT5zZXNzaW9uOwpAQCAtMjE2 MSwxNSArMjE1OSwxNSBAQCBzdGF0aWMgaW50IHB0bXhfb3BlbihzdHJ1Y3QgaW5vZGUgKiBpbm9k CiAJfQogCXVwKCZhbGxvY2F0ZWRfcHR5c19sb2NrKTsKIAotCW11dGV4X2xvY2soJnR0eV9tdXRl eCk7CisJc3Bpbl9sb2NrKCZ0dHlfbG9jayk7CiAJcmV0dmFsID0gaW5pdF9kZXYocHRtX2RyaXZl ciwgaW5kZXgsICZ0dHkpOwotCW11dGV4X3VubG9jaygmdHR5X211dGV4KTsKKwlzcGluX3VubG9j aygmdHR5X2xvY2spOwogCQogCWlmIChyZXR2YWwpCiAJCWdvdG8gb3V0OwogCiAJc2V0X2JpdChU VFlfUFRZX0xPQ0ssICZ0dHktPmZsYWdzKTsgLyogTE9DSyBUSEUgU0xBVkUgKi8KLQlmaWxwLT5w cml2YXRlX2RhdGEgPSB0dHk7CisJZmlscC0+cHJpdmF0ZV9kYXRhID0gdHR5X2dldCh0dHksIF9f RklMRV9fLCBfX0xJTkVfXyk7CiAJZmlsZV9tb3ZlKGZpbHAsICZ0dHktPnR0eV9maWxlcyk7CiAK IAlyZXR2YWwgPSAtRU5PTUVNOwpAQCAtMjM1OSwxNCArMjM1NywxNCBAQCBzdGF0aWMgaW50IHRp b2NzY3R0eShzdHJ1Y3QgdHR5X3N0cnVjdCAqCiAKIAkJCXJlYWRfbG9jaygmdGFza2xpc3RfbG9j ayk7CiAJCQlkb19lYWNoX3Rhc2tfcGlkKHR0eS0+c2Vzc2lvbiwgUElEVFlQRV9TSUQsIHApIHsK LQkJCQlwLT5zaWduYWwtPnR0eSA9IE5VTEw7CisJCQkJdHR5X3B1dCgmcC0+c2lnbmFsLT50dHks IDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAJCQl9IHdoaWxlX2VhY2hfdGFza19waWQodHR5LT5z ZXNzaW9uLCBQSURUWVBFX1NJRCwgcCk7CiAJCQlyZWFkX3VubG9jaygmdGFza2xpc3RfbG9jayk7 CiAJCX0gZWxzZQogCQkJcmV0dXJuIC1FUEVSTTsKIAl9CiAJdGFza19sb2NrKGN1cnJlbnQpOwot CWN1cnJlbnQtPnNpZ25hbC0+dHR5ID0gdHR5OworCWN1cnJlbnQtPnNpZ25hbC0+dHR5ID0gdHR5 X2dldCh0dHksIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAJdGFza191bmxvY2soY3VycmVudCk7CiAJ Y3VycmVudC0+c2lnbmFsLT50dHlfb2xkX3BncnAgPSAwOwogCXR0eS0+c2Vzc2lvbiA9IGN1cnJl bnQtPnNpZ25hbC0+c2Vzc2lvbjsKQEAgLTI1NzgsNyArMjU3Niw3IEBAIGludCB0dHlfaW9jdGwo c3RydWN0IGlub2RlICogaW5vZGUsIHN0cnUKIAkJCWlmIChjdXJyZW50LT5zaWduYWwtPmxlYWRl cikKIAkJCQlkaXNhc3NvY2lhdGVfY3R0eSgwKTsKIAkJCXRhc2tfbG9jayhjdXJyZW50KTsKLQkJ CWN1cnJlbnQtPnNpZ25hbC0+dHR5ID0gTlVMTDsKKwkJCXR0eV9wdXQoJmN1cnJlbnQtPnNpZ25h bC0+dHR5LCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOwogCQkJdGFza191bmxvY2soY3VycmVudCk7 CiAJCQlyZXR1cm4gMDsKIAkJY2FzZSBUSU9DU0NUVFk6CkBAIC0yNjcwLDcgKzI2NjgsNyBAQCAj aWZkZWYgVFRZX1NPRlRfU0FLCiAjZWxzZQogCXN0cnVjdCB0dHlfc3RydWN0ICp0dHkgPSBhcmc7 CiAJc3RydWN0IHRhc2tfc3RydWN0ICpnLCAqcDsKLQlpbnQgc2Vzc2lvbjsKKwlwaWRfdCBzZXNz aW9uOwogCWludAkJaTsKIAlzdHJ1Y3QgZmlsZQkqZmlscDsKIAlzdHJ1Y3QgdHR5X2xkaXNjICpk aXNjOwpAQCAtMjkxNCw2ICsyOTEyLDExIEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVfdHR5X3N0 cnVjdChzdHJ1Y3QKIHsKIAltZW1zZXQodHR5LCAwLCBzaXplb2Yoc3RydWN0IHR0eV9zdHJ1Y3Qp KTsKIAl0dHktPm1hZ2ljID0gVFRZX01BR0lDOworCWF0b21pY19zZXQoJnR0eS0+cmVmX2NvdW50 LCAxKTsKKyNpZmRlZiBERUJVR19UVFlfUkVGQ09VTlQKKyAgICAgICAgcHJpbnRrKCJUVFkgcmVm IGNvdW50IGFsbG9jOiAlcCBjb3VudCAlZFxuIiwKKyAgICAgICAgCQl0dHksIGF0b21pY19yZWFk KCZ0dHktPnJlZl9jb3VudCkpOworI2VuZGlmCQkKIAl0dHlfbGRpc2NfYXNzaWduKHR0eSwgdHR5 X2xkaXNjX2dldChOX1RUWSkpOwogCXR0eS0+cGdycCA9IC0xOwogCXR0eS0+b3ZlcnJ1bl90aW1l ID0gamlmZmllczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci92Y19zY3JlZW4uYyBiL2RyaXZl cnMvY2hhci92Y19zY3JlZW4uYwppbmRleCBhOTI0N2I1Li45N2MzNmZjIDEwMDY0NAotLS0gYS9k cml2ZXJzL2NoYXIvdmNfc2NyZWVuLmMKKysrIGIvZHJpdmVycy9jaGFyL3ZjX3NjcmVlbi5jCkBA IC00NzQsMTQgKzQ3NCwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB2 Y3NfCiAKIHN0YXRpYyBzdHJ1Y3QgY2xhc3MgKnZjX2NsYXNzOwogCi12b2lkIHZjc19tYWtlX2Rl dmZzKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpCit2b2lkIHZjc19tYWtlX3N5c2ZzKHN0cnVjdCB0 dHlfc3RydWN0ICp0dHkpCiB7CiAJY2xhc3NfZGV2aWNlX2NyZWF0ZSh2Y19jbGFzcywgTlVMTCwg TUtERVYoVkNTX01BSk9SLCB0dHktPmluZGV4ICsgMSksCiAJCQlOVUxMLCAidmNzJXUiLCB0dHkt PmluZGV4ICsgMSk7CiAJY2xhc3NfZGV2aWNlX2NyZWF0ZSh2Y19jbGFzcywgTlVMTCwgTUtERVYo VkNTX01BSk9SLCB0dHktPmluZGV4ICsgMTI5KSwKIAkJCU5VTEwsICJ2Y3NhJXUiLCB0dHktPmlu ZGV4ICsgMSk7CiB9Ci12b2lkIHZjc19yZW1vdmVfZGV2ZnMoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0 eSkKK3ZvaWQgdmNzX3JlbW92ZV9zeXNmcyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KQogewogCWNs YXNzX2RldmljZV9kZXN0cm95KHZjX2NsYXNzLCBNS0RFVihWQ1NfTUFKT1IsIHR0eS0+aW5kZXgg KyAxKSk7CiAJY2xhc3NfZGV2aWNlX2Rlc3Ryb3kodmNfY2xhc3MsIE1LREVWKFZDU19NQUpPUiwg dHR5LT5pbmRleCArIDEyOSkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3Z0LmMgYi9kcml2 ZXJzL2NoYXIvdnQuYwppbmRleCBkYTdlNjZhLi5kZDM5MDIwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2NoYXIvdnQuYworKysgYi9kcml2ZXJzL2NoYXIvdnQuYwpAQCAtMTI4LDggKzEyOCw4IEBAICNk ZWZpbmUgQ1RSTF9BTFdBWVMgMHgwODAwZjUwMQkvKiBDYW5ub3QKICNkZWZpbmUgREVGQVVMVF9C RUxMX1BJVENICTc1MAogI2RlZmluZSBERUZBVUxUX0JFTExfRFVSQVRJT04JKEhaLzgpCiAKLWV4 dGVybiB2b2lkIHZjc19tYWtlX2RldmZzKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwotZXh0ZXJu IHZvaWQgdmNzX3JlbW92ZV9kZXZmcyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKK2V4dGVybiB2 b2lkIHZjc19tYWtlX3N5c2ZzKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOworZXh0ZXJuIHZvaWQg dmNzX3JlbW92ZV9zeXNmcyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKIAogZXh0ZXJuIHZvaWQg Y29uc29sZV9tYXBfaW5pdCh2b2lkKTsKICNpZmRlZiBDT05GSUdfUFJPTV9DT05TT0xFCkBAIC0y NDkxLDE0ICsyNDkxLDE0IEBAIHN0YXRpYyBpbnQgY29uX29wZW4oc3RydWN0IHR0eV9zdHJ1Y3Qg KnQKIAkJaWYgKHJldCA9PSAwKSB7CiAJCQlzdHJ1Y3QgdmNfZGF0YSAqdmMgPSB2Y19jb25zW2N1 cnJjb25zXS5kOwogCQkJdHR5LT5kcml2ZXJfZGF0YSA9IHZjOwotCQkJdmMtPnZjX3R0eSA9IHR0 eTsKKwkJCXZjLT52Y190dHkgPSB0dHlfZ2V0KHR0eSwgX19GSUxFX18sIF9fTElORV9fKTsKIAog CQkJaWYgKCF0dHktPndpbnNpemUud3Nfcm93ICYmICF0dHktPndpbnNpemUud3NfY29sKSB7CiAJ CQkJdHR5LT53aW5zaXplLndzX3JvdyA9IHZjX2NvbnNbY3VycmNvbnNdLmQtPnZjX3Jvd3M7CiAJ CQkJdHR5LT53aW5zaXplLndzX2NvbCA9IHZjX2NvbnNbY3VycmNvbnNdLmQtPnZjX2NvbHM7CiAJ CQl9CiAJCQlyZWxlYXNlX2NvbnNvbGVfc2VtKCk7Ci0JCQl2Y3NfbWFrZV9kZXZmcyh0dHkpOwor CQkJdmNzX21ha2Vfc3lzZnModHR5KTsKIAkJCXJldHVybiByZXQ7CiAJCX0KIAl9CkBAIC0yNTEw LDMwICsyNTEwLDI1IEBAIHN0YXRpYyBpbnQgY29uX29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgKnQK ICAqIFdlIHRha2UgdHR5X211dGV4IGluIGhlcmUgdG8gcHJldmVudCBhbm90aGVyIHRocmVhZCBm cm9tIGNvbWluZyBpbiB2aWEgaW5pdF9kZXYKICAqIGFuZCB0YWtpbmcgYSByZWYgYWdhaW5zdCB0 aGUgdHR5IHdoaWxlIHdlJ3JlIGluIHRoZSBwcm9jZXNzIG9mIGZvcmdldHRpbmcKICAqIGFib3V0 IGl0IGFuZCBjbGVhbmluZyB0aGluZ3MgdXAuCi0gKgotICogVGhpcyBpcyBiZWNhdXNlIHZjc19y ZW1vdmVfZGV2ZnMoKSBjYW4gc2xlZXAgYW5kIHdpbGwgZHJvcCB0aGUgQktMLgogICovCiBzdGF0 aWMgdm9pZCBjb25fY2xvc2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZp bHApCiB7Ci0JbXV0ZXhfbG9jaygmdHR5X211dGV4KTsKIAlhY3F1aXJlX2NvbnNvbGVfc2VtKCk7 Ci0JaWYgKHR0eSAmJiB0dHktPmNvdW50ID09IDEpIHsKKwlpZiAodHR5ICYmICh0dHktPmNvdW50 ID09IDEpKSB7CiAJCXN0cnVjdCB2Y19kYXRhICp2YyA9IHR0eS0+ZHJpdmVyX2RhdGE7CiAKIAkJ aWYgKHZjKQotCQkJdmMtPnZjX3R0eSA9IE5VTEw7CisJCQl0dHlfcHV0KCZ2Yy0+dmNfdHR5LCAw LCBfX0ZJTEVfXywgX19MSU5FX18pOwogCQl0dHktPmRyaXZlcl9kYXRhID0gTlVMTDsKIAkJcmVs ZWFzZV9jb25zb2xlX3NlbSgpOwotCQl2Y3NfcmVtb3ZlX2RldmZzKHR0eSk7Ci0JCW11dGV4X3Vu bG9jaygmdHR5X211dGV4KTsKKwkJdmNzX3JlbW92ZV9zeXNmcyh0dHkpOwogCQkvKgotCQkgKiB0 dHlfbXV0ZXggaXMgcmVsZWFzZWQsIGJ1dCB3ZSBzdGlsbCBob2xkIEJLTCwgc28gdGhlcmUgaXMK KwkJICogV2Ugc3RpbGwgaG9sZCBCS0wsIHNvIHRoZXJlIGlzCiAJCSAqIHN0aWxsIGV4Y2x1c2lv biBhZ2FpbnN0IGluaXRfZGV2KCkKIAkJICovCiAJCXJldHVybjsKIAl9CiAJcmVsZWFzZV9jb25z b2xlX3NlbSgpOwotCW11dGV4X3VubG9jaygmdHR5X211dGV4KTsKIH0KIAogc3RhdGljIHZvaWQg dmNfaW5pdChzdHJ1Y3QgdmNfZGF0YSAqdmMsIHVuc2lnbmVkIGludCByb3dzLApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvcHBwX2FzeW5jLmMgYi9kcml2ZXJzL25ldC9wcHBfYXN5bmMuYwppbmRl eCAyMzY1OWZkLi5kMGU4MDRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHBfYXN5bmMuYwor KysgYi9kcml2ZXJzL25ldC9wcHBfYXN5bmMuYwpAQCAtMTY1LDcgKzE2NSw3IEBAIHBwcF9hc3lu Y3R0eV9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkKIAogCS8qIGluaXRpYWxpemUgdGhlIGFz eW5jcHBwIHN0cnVjdHVyZSAqLwogCW1lbXNldChhcCwgMCwgc2l6ZW9mKCphcCkpOwotCWFwLT50 dHkgPSB0dHk7CisJYXAtPnR0eSA9IHR0eV9nZXQodHR5LCBfX0ZJTEVfXywgX19MSU5FX18pOwog CWFwLT5tcnUgPSBQUFBfTVJVOwogCXNwaW5fbG9ja19pbml0KCZhcC0+eG1pdF9sb2NrKTsKIAlz cGluX2xvY2tfaW5pdCgmYXAtPnJlY3ZfbG9jayk7CkBAIC0yMTgsNiArMjE4LDcgQEAgcHBwX2Fz eW5jdHR5X2Nsb3NlKHN0cnVjdCB0dHlfc3RydWN0ICp0dAogCXdyaXRlX3VubG9ja19pcnEoJmRp c2NfZGF0YV9sb2NrKTsKIAlpZiAoYXAgPT0gMCkKIAkJcmV0dXJuOworCXR0eV9wdXQoJmFwLT50 dHksIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAKIAkvKgogCSAqIFdlIGhhdmUgbm93IGVuc3Vy ZWQgdGhhdCBub2JvZHkgY2FuIHN0YXJ0IHVzaW5nIGFwIGZyb20gbm93CmRpZmYgLS1naXQgYS9k cml2ZXJzL3NlcmlhbC9zZXJpYWxfY29yZS5jIGIvZHJpdmVycy9zZXJpYWwvc2VyaWFsX2NvcmUu YwppbmRleCBkNWY2MzZmLi4wYjZlNGU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9zZXJp YWxfY29yZS5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9jb3JlLmMKQEAgLTEyNzksNyAr MTI3OSw3IEBAIHN0YXRpYyB2b2lkIHVhcnRfY2xvc2Uoc3RydWN0IHR0eV9zdHJ1Y3QKIAl0dHlf bGRpc2NfZmx1c2godHR5KTsJCiAJCiAJdHR5LT5jbG9zaW5nID0gMDsKLQlzdGF0ZS0+aW5mby0+ dHR5ID0gTlVMTDsKKwl0dHlfcHV0KCZzdGF0ZS0+aW5mby0+dHR5LCAwLCBfX0ZJTEVfXywgX19M SU5FX18pOwogCiAJaWYgKHN0YXRlLT5pbmZvLT5ibG9ja2VkX29wZW4pIHsKIAkJaWYgKHN0YXRl LT5jbG9zZV9kZWxheSkKQEAgLTEzNzUsNiArMTM3NSw3IEBAIHN0YXRpYyB2b2lkIHVhcnRfaGFu Z3VwKHN0cnVjdCB0dHlfc3RydWMKIAkJdWFydF9zaHV0ZG93bihzdGF0ZSk7CiAJCXN0YXRlLT5j b3VudCA9IDA7CiAJCXN0YXRlLT5pbmZvLT5mbGFncyAmPSB+VUlGX05PUk1BTF9BQ1RJVkU7CisJ CXR0eV9wdXQoJnN0YXRlLT5pbmZvLT50dHksIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAJCXN0 YXRlLT5pbmZvLT50dHkgPSBOVUxMOwogCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJnN0YXRlLT5p bmZvLT5vcGVuX3dhaXQpOwogCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJnN0YXRlLT5pbmZvLT5k ZWx0YV9tc3Jfd2FpdCk7CkBAIC0xNTk4LDcgKzE1OTksNyBAQCBzdGF0aWMgaW50IHVhcnRfb3Bl bihzdHJ1Y3QgdHR5X3N0cnVjdCAqCiAJdHR5LT5kcml2ZXJfZGF0YSA9IHN0YXRlOwogCXR0eS0+ bG93X2xhdGVuY3kgPSAoc3RhdGUtPnBvcnQtPmZsYWdzICYgVVBGX0xPV19MQVRFTkNZKSA/IDEg OiAwOwogCXR0eS0+YWx0X3NwZWVkID0gMDsKLQlzdGF0ZS0+aW5mby0+dHR5ID0gdHR5OworCXN0 YXRlLT5pbmZvLT50dHkgPSB0dHlfZ2V0KHR0eSwgX19GSUxFX18sIF9fTElORV9fKTsKIAogCS8q CiAJICogSWYgdGhlIHBvcnQgaXMgaW4gdGhlIG1pZGRsZSBvZiBjbG9zaW5nLCBiYWlsIG91dCBu b3cuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmMgYi9kcml2ZXJzL3Vz Yi9jbGFzcy9jZGMtYWNtLmMKaW5kZXggMzY3MGQ3Ny4uMDZlOTZkZiAxMDA2NDQKLS0tIGEvZHJp dmVycy91c2IvY2xhc3MvY2RjLWFjbS5jCisrKyBiL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20u YwpAQCAtNDUxLDcgKzQ1MSw3IEBAIHN0YXRpYyBpbnQgYWNtX3R0eV9vcGVuKHN0cnVjdCB0dHlf c3RydWMKIAkJcnYgPSAwOwogCiAJdHR5LT5kcml2ZXJfZGF0YSA9IGFjbTsKLQlhY20tPnR0eSA9 IHR0eTsKKwlhY20tPnR0eSA9IHR0eV9nZXQodHR5LCBfX0ZJTEVfXywgX19MSU5FX18pOwogCiAJ LyogZm9yY2UgbG93X2xhdGVuY3kgb24gc28gdGhhdCBvdXIgdHR5X3B1c2ggYWN0dWFsbHkgZm9y Y2VzIHRoZSBkYXRhIHRocm91Z2gsCiAJICAgb3RoZXJ3aXNlIGl0IGlzIHNjaGVkdWxlZCwgYW5k IHdpdGggaGlnaCBkYXRhIHJhdGVzIGRhdGEgY2FuIGdldCBsb3N0LiAqLwpAQCAtNTE5LDYgKzUx OSw3IEBAIHN0YXRpYyB2b2lkIGFjbV90dHlfY2xvc2Uoc3RydWN0IHR0eV9zdHIKIAkJcmV0dXJu OwogCiAJbnIgPSBhY20tPnJ4X2J1ZmxpbWl0OworCXR0eV9wdXQoJmFjbS0+dHR5LCAwLCBfX0ZJ TEVfXywgX19MSU5FX18pOwogCW11dGV4X2xvY2soJm9wZW5fbXV0ZXgpOwogCWlmICghLS1hY20t PnVzZWQpIHsKIAkJaWYgKGFjbS0+ZGV2KSB7CmRpZmYgLS1naXQgYS9mcy9kZXZwdHMvaW5vZGUu YyBiL2ZzL2RldnB0cy9pbm9kZS5jCmluZGV4IGY3YWVmNWIuLjc0ZWI5ZGUgMTAwNjQ0Ci0tLSBh L2ZzL2RldnB0cy9pbm9kZS5jCisrKyBiL2ZzL2RldnB0cy9pbm9kZS5jCkBAIC0xNzcsNyArMTc3 LDcgQEAgaW50IGRldnB0c19wdHlfbmV3KHN0cnVjdCB0dHlfc3RydWN0ICp0dAogCWlub2RlLT5p X2dpZCA9IGNvbmZpZy5zZXRnaWQgPyBjb25maWcuZ2lkIDogY3VycmVudC0+ZnNnaWQ7CiAJaW5v ZGUtPmlfbXRpbWUgPSBpbm9kZS0+aV9hdGltZSA9IGlub2RlLT5pX2N0aW1lID0gQ1VSUkVOVF9U SU1FOwogCWluaXRfc3BlY2lhbF9pbm9kZShpbm9kZSwgU19JRkNIUnxjb25maWcubW9kZSwgZGV2 aWNlKTsKLQlpbm9kZS0+dS5nZW5lcmljX2lwID0gdHR5OworCWlub2RlLT51LmdlbmVyaWNfaXAg PSB0dHlfZ2V0KHR0eSwgX19GSUxFX18sIF9fTElORV9fKTsKIAogCWRlbnRyeSA9IGdldF9ub2Rl KG51bWJlcik7CiAJaWYgKCFJU19FUlIoZGVudHJ5KSAmJiAhZGVudHJ5LT5kX2lub2RlKQpAQCAt MjEyLDYgKzIxMiw4IEBAIHZvaWQgZGV2cHRzX3B0eV9raWxsKGludCBudW1iZXIpCiAJaWYgKCFJ U19FUlIoZGVudHJ5KSkgewogCQlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVudHJ5LT5kX2lub2Rl OwogCQlpZiAoaW5vZGUpIHsKKwkJCXR0eV9wdXQoKHN0cnVjdCB0dHlfc3RydWN0ICoqKSgmaW5v ZGUtPnUuZ2VuZXJpY19pcCksCisJCQkJCQkgMCwgX19GSUxFX18sIF9fTElORV9fKTsKIAkJCWlu b2RlLT5pX25saW5rLS07CiAJCQlkX2RlbGV0ZShkZW50cnkpOwogCQkJZHB1dChkZW50cnkpOwpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90dHkuaCBiL2luY2x1ZGUvbGludXgvdHR5LmgKaW5k ZXggYjNiODA3ZS4uZjE1OWExMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC90dHkuaAorKysg Yi9pbmNsdWRlL2xpbnV4L3R0eS5oCkBAIC0xODEsMTQgKzE4MSwxNSBAQCBzdHJ1Y3QgZGV2aWNl OwogICovCiBzdHJ1Y3QgdHR5X3N0cnVjdCB7CiAJaW50CW1hZ2ljOworCWF0b21pY190IHJlZl9j b3VudDsKIAlzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyOwogCWludCBpbmRleDsKIAlzdHJ1Y3Qg dHR5X2xkaXNjIGxkaXNjOwogCXN0cnVjdCBzZW1hcGhvcmUgdGVybWlvc19zZW07CiAJc3RydWN0 IHRlcm1pb3MgKnRlcm1pb3MsICp0ZXJtaW9zX2xvY2tlZDsKIAljaGFyIG5hbWVbNjRdOwotCWlu dCBwZ3JwOwotCWludCBzZXNzaW9uOworCXBpZF90IHBncnA7CisJcGlkX3Qgc2Vzc2lvbjsKIAl1 bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBjb3VudDsKIAlzdHJ1Y3Qgd2luc2l6ZSB3aW5zaXpl OwpAQCAtMjY3LDYgKzI2OCw0NCBAQCAjZGVmaW5lIFRUWV9IVVBQRUQgCQkxOAkvKiBQb3N0IGRy aXZlci0+CiAKICNkZWZpbmUgVFRZX1dSSVRFX0ZMVVNIKHR0eSkgdHR5X3dyaXRlX2ZsdXNoKCh0 dHkpKQogCisjdW5kZWYgREVCVUdfVFRZX1JFRkNPVU5UCitzdGF0aWMgaW5saW5lIHN0cnVjdCB0 dHlfc3RydWN0ICogCit0dHlfZ2V0KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBjaGFyICpmaWxl LCBpbnQgbGluZSkKK3sKKyAgICAgICAgaWYgKHR0eSkgeworICAgICAgICAgICAgICAgIFdBUk5f T04oIWF0b21pY19yZWFkKCZ0dHktPnJlZl9jb3VudCkpOworICAgICAgICAgICAgICAgIGF0b21p Y19pbmMoJnR0eS0+cmVmX2NvdW50KTsKKyNpZmRlZiBERUJVR19UVFlfUkVGQ09VTlQKKwkJcHJp bnRrKCJUVFkgcmVmIGNvdW50IGdldDogJXM6JWQgJXMgJXAgY291bnQgJWRcbiIsIGZpbGUsCisJ CQlsaW5lLCB0dHktPm5hbWUsIHR0eSwgYXRvbWljX3JlYWQoJnR0eS0+cmVmX2NvdW50KSk7Cisj ZW5kaWYKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHR5OworfQorCitleHRlcm4gdm9pZCBm cmVlX3R0eV9zdHJ1Y3Qoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CitzdGF0aWMgaW5saW5lIHZv aWQgCit0dHlfcHV0KHN0cnVjdCB0dHlfc3RydWN0ICoqIHR0eSwgaW50IGZyZWVfbWUsIGNoYXIg KmZpbGUsIGludCBsaW5lKQoreworCWludCBjb3VudDsKKwkKKyAgICAgICAgaWYgKCp0dHkpIHsK KyAgICAgICAgCWNvdW50ID0gYXRvbWljX2RlY19yZXR1cm4oJigqdHR5KS0+cmVmX2NvdW50KTsK KyAgICAgICAgCWlmIChjb3VudCA9PSAwKSB7CisgICAgICAgICAgICAgICAgCVdBUk5fT04oIWZy ZWVfbWUpOworCSAgICAgICAgICAgICAgICBmcmVlX3R0eV9zdHJ1Y3QoKnR0eSk7CisjaWZkZWYg REVCVUdfVFRZX1JFRkNPVU5UCisJCQlwcmludGsoIlRUWSByZWYgY291bnQgcHV0IGZyZWVkOiAl czolZCAlcyAlcFxuIiwKKwkJCQlmaWxlLCBsaW5lLCAoKnR0eSktPm5hbWUsICp0dHkpOworCSAg ICAgICAgfSBlbHNlIHsKKwkJCXByaW50aygiVFRZIHJlZiBjb3VudCBwdXQ6ICVzOiVkICVzICVw IGNvdW50ICVkXG4iLAorCQkJCWZpbGUsIGxpbmUsICgqdHR5KS0+bmFtZSwgKnR0eSwgY291bnQp OworI2VuZGlmCisgICAgICAgIAl9CisgICAgICAgIAkqdHR5ID0gTlVMTDsKKyAgICAgICAgfQor fQorCiBleHRlcm4gdm9pZCB0dHlfd3JpdGVfZmx1c2goc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAK IGV4dGVybiBzdHJ1Y3QgdGVybWlvcyB0dHlfc3RkX3Rlcm1pb3M7CkBAIC0zMTksOCArMzU4LDYg QEAgZXh0ZXJuIHZvaWQgdHR5X2xkaXNjX3B1dChpbnQpOwogZXh0ZXJuIHZvaWQgdHR5X3dha2V1 cChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKIGV4dGVybiB2b2lkIHR0eV9sZGlzY19mbHVzaChz dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKIAotZXh0ZXJuIHN0cnVjdCBtdXRleCB0dHlfbXV0ZXg7 Ci0KIC8qIG5fdHR5LmMgKi8KIGV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIHR0eV9sZGlzY19OX1RU WTsKIApkaWZmIC0tZ2l0IGEva2VybmVsL2V4aXQuYyBiL2tlcm5lbC9leGl0LmMKaW5kZXggNjY2 NGMwOC4uYTZjYzc1NSAxMDA2NDQKLS0tIGEva2VybmVsL2V4aXQuYworKysgYi9rZXJuZWwvZXhp dC5jCkBAIC0xMDgsNiArMTA4LDcgQEAgc3RhdGljIHZvaWQgX19leGl0X3NpZ25hbChzdHJ1Y3Qg dGFza19zdAogCQlzaWctPm52Y3N3ICs9IHRzay0+bnZjc3c7CiAJCXNpZy0+bml2Y3N3ICs9IHRz ay0+bml2Y3N3OwogCQlzaWctPnNjaGVkX3RpbWUgKz0gdHNrLT5zY2hlZF90aW1lOworCQl0dHlf cHV0KCZzaWctPnR0eSwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKIAkJc2lnID0gTlVMTDsgLyog TWFya2VyIGZvciBiZWxvdy4gKi8KIAl9CiAKQEAgLTM5MSw5ICszOTIsNyBAQCB2b2lkIGRhZW1v bml6ZShjb25zdCBjaGFyICpuYW1lLCAuLi4pCiAJZXhpdF9tbShjdXJyZW50KTsKIAogCXNldF9z cGVjaWFsX3BpZHMoMSwgMSk7Ci0JbXV0ZXhfbG9jaygmdHR5X211dGV4KTsKLQljdXJyZW50LT5z aWduYWwtPnR0eSA9IE5VTEw7Ci0JbXV0ZXhfdW5sb2NrKCZ0dHlfbXV0ZXgpOworCXR0eV9wdXQo JmN1cnJlbnQtPnNpZ25hbC0+dHR5LCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOwogCiAJLyogQmxv Y2sgYW5kIGZsdXNoIGFsbCBzaWduYWxzICovCiAJc2lnZmlsbHNldCgmYmxvY2tlZCk7CmRpZmYg LS1naXQgYS9rZXJuZWwvZm9yay5jIGIva2VybmVsL2ZvcmsuYwppbmRleCA1NmU0ZTA3Li45MGNj NGUzIDEwMDY0NAotLS0gYS9rZXJuZWwvZm9yay5jCisrKyBiL2tlcm5lbC9mb3JrLmMKQEAgLTQz LDYgKzQzLDcgQEAgI2luY2x1ZGUgPGxpbnV4L3Byb2ZpbGUuaD4KICNpbmNsdWRlIDxsaW51eC9y bWFwLmg+CiAjaW5jbHVkZSA8bGludXgvYWNjdC5oPgogI2luY2x1ZGUgPGxpbnV4L2NuX3Byb2Mu aD4KKyNpbmNsdWRlIDxsaW51eC90dHkuaD4KIAogI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+CiAj aW5jbHVkZSA8YXNtL3BnYWxsb2MuaD4KQEAgLTg1Niw2ICs4NTcsNyBAQCBzdGF0aWMgaW5saW5l IGludCBjb3B5X3NpZ25hbCh1bnNpZ25lZCBsCiAKIAlzaWctPmxlYWRlciA9IDA7CS8qIHNlc3Np b24gbGVhZGVyc2hpcCBkb2Vzbid0IGluaGVyaXQgKi8KIAlzaWctPnR0eV9vbGRfcGdycCA9IDA7 CisJc2lnLT50dHkgPSBOVUxMOwogCiAJc2lnLT51dGltZSA9IHNpZy0+c3RpbWUgPSBzaWctPmN1 dGltZSA9IHNpZy0+Y3N0aW1lID0gY3B1dGltZV96ZXJvOwogCXNpZy0+bnZjc3cgPSBzaWctPm5p dmNzdyA9IHNpZy0+Y252Y3N3ID0gc2lnLT5jbml2Y3N3ID0gMDsKQEAgLTg4NSw2ICs4ODcsNyBA QCBzdGF0aWMgaW5saW5lIGludCBjb3B5X3NpZ25hbCh1bnNpZ25lZCBsCiB2b2lkIF9fY2xlYW51 cF9zaWduYWwoc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZykKIHsKIAlleGl0X3RocmVhZF9ncm91 cF9rZXlzKHNpZyk7CisJdHR5X3B1dCgmc2lnLT50dHksIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7 CiAJa21lbV9jYWNoZV9mcmVlKHNpZ25hbF9jYWNoZXAsIHNpZyk7CiB9CiAKQEAgLTEyMjcsNyAr MTIzMCw4IEBAICNlbmRpZgogCQkJX19wdHJhY2VfbGluayhwLCBjdXJyZW50LT5wYXJlbnQpOwog CiAJCWlmICh0aHJlYWRfZ3JvdXBfbGVhZGVyKHApKSB7Ci0JCQlwLT5zaWduYWwtPnR0eSA9IGN1 cnJlbnQtPnNpZ25hbC0+dHR5OworCQkJcC0+c2lnbmFsLT50dHkgPSB0dHlfZ2V0KGN1cnJlbnQt PnNpZ25hbC0+dHR5LAorCQkJCQkJX19GSUxFX18sIF9fTElORV9fKTsKIAkJCXAtPnNpZ25hbC0+ cGdycCA9IHByb2Nlc3NfZ3JvdXAoY3VycmVudCk7CiAJCQlwLT5zaWduYWwtPnNlc3Npb24gPSBj dXJyZW50LT5zaWduYWwtPnNlc3Npb247CiAJCQlhdHRhY2hfcGlkKHAsIFBJRFRZUEVfUEdJRCwg cHJvY2Vzc19ncm91cChwKSk7CmRpZmYgLS1naXQgYS9rZXJuZWwvc3lzLmMgYi9rZXJuZWwvc3lz LmMKaW5kZXggZGJiM2I5Yy4uMzFmNDg2YSAxMDA2NDQKLS0tIGEva2VybmVsL3N5cy5jCisrKyBi L2tlcm5lbC9zeXMuYwpAQCAtMTM3OSw3ICsxMzc5LDYgQEAgYXNtbGlua2FnZSBsb25nIHN5c19z ZXRzaWQodm9pZCkKIAlwaWRfdCBzZXNzaW9uOwogCWludCBlcnIgPSAtRVBFUk07CiAKLQltdXRl eF9sb2NrKCZ0dHlfbXV0ZXgpOwogCXdyaXRlX2xvY2tfaXJxKCZ0YXNrbGlzdF9sb2NrKTsKIAog CS8qIEZhaWwgaWYgSSBhbSBhbHJlYWR5IGEgc2Vzc2lvbiBsZWFkZXIgKi8KQEAgLTEzOTksMTIg KzEzOTgsMTEgQEAgYXNtbGlua2FnZSBsb25nIHN5c19zZXRzaWQodm9pZCkKIAogCWdyb3VwX2xl YWRlci0+c2lnbmFsLT5sZWFkZXIgPSAxOwogCV9fc2V0X3NwZWNpYWxfcGlkcyhzZXNzaW9uLCBz ZXNzaW9uKTsKLQlncm91cF9sZWFkZXItPnNpZ25hbC0+dHR5ID0gTlVMTDsKKwl0dHlfcHV0KCZn cm91cF9sZWFkZXItPnNpZ25hbC0+dHR5LCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOwogCWdyb3Vw X2xlYWRlci0+c2lnbmFsLT50dHlfb2xkX3BncnAgPSAwOwogCWVyciA9IHByb2Nlc3NfZ3JvdXAo Z3JvdXBfbGVhZGVyKTsKIG91dDoKIAl3cml0ZV91bmxvY2tfaXJxKCZ0YXNrbGlzdF9sb2NrKTsK LQltdXRleF91bmxvY2soJnR0eV9tdXRleCk7CiAJcmV0dXJuIGVycjsKIH0KIApkaWZmIC0tZ2l0 IGEvc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jIGIvc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jCmlu ZGV4IDI0Y2FhZWUuLmRiNTNjNGUgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L3NlbGludXgvaG9va3Mu YworKysgYi9zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMKQEAgLTE2MzgsNyArMTYzOCw4IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF91bmF1dGhvcml6ZWRfZmkKIAkJCWlmIChpbm9kZV9oYXNf cGVybShjdXJyZW50LCBpbm9kZSwKIAkJCQkJICAgRklMRV9fUkVBRCB8IEZJTEVfX1dSSVRFLCBO VUxMKSkgewogCQkJCS8qIFJlc2V0IGNvbnRyb2xsaW5nIHR0eS4gKi8KLQkJCQljdXJyZW50LT5z aWduYWwtPnR0eSA9IE5VTEw7CisJCQkJdHR5X3B1dCgmY3VycmVudC0+c2lnbmFsLT50dHksIDAs CisJCQkJCQlfX0ZJTEVfXywgX19MSU5FX18pOwogCQkJCWN1cnJlbnQtPnNpZ25hbC0+dHR5X29s ZF9wZ3JwID0gMDsKIAkJCX0KIAkJfQo= ------=_Part_13360_19600121.1152620929153--