From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Bottomley Subject: Re: [PATCH] cxgb3i: ref count cdev access to prevent modification while in use (v3) Date: Thu, 11 Aug 2011 18:36:10 +0000 Message-ID: <1313087766.4166.27.camel@mulgrave> References: <1313086002-23653-1-git-send-email-nhorman@tuxdriver.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx2.parallels.com ([64.131.90.16]:38072 "EHLO mx2.parallels.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750741Ab1HKSgN (ORCPT ); Thu, 11 Aug 2011 14:36:13 -0400 In-Reply-To: <1313086002-23653-1-git-send-email-nhorman@tuxdriver.com> Content-Language: en-US Content-ID: <9A3025DCF5C4AC4097E07DF3D4D9E981@sw.swsoft.com> Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: Neil Horman Cc: "linux-scsi@vger.kernel.org" , Divy Le Ray , Steve Wise , Karen Xie , Mike Christie , "stable-commits@vger.kernel.org" T24gVGh1LCAyMDExLTA4LTExIGF0IDE0OjA2IC0wNDAwLCBOZWlsIEhvcm1hbiB3cm90ZToNCj4g VGhpcyBvb3BzIHdhcyByZXBvcnRlZCByZWNlbnRseToNCj4gZDptb24+IGUNCj4gY3B1IDB4ZDog VmVjdG9yOiAzMDAgKERhdGEgQWNjZXNzKSBhdCBbYzAwMDAwMDBmZDRjNzEyMF0NCj4gICAgIHBj OiBkMDAwMDAwMDAwNzZmMTk0OiAudDNfbDJ0X2dldCsweDQ0LzB4NTI0IFtjeGdiM10NCj4gICAg IGxyOiBkMDAwMDAwMDAwYjAyMTA4OiAuaW5pdF9hY3Rfb3BlbisweDE1MC8weDNkNCBbY3hnYjNp XQ0KPiAgICAgc3A6IGMwMDAwMDAwZmQ0YzczYTANCj4gICAgbXNyOiA4MDAwMDAwMDAwMDA5MDMy DQo+ICAgIGRhcjogMA0KPiAgZHNpc3I6IDQwMDAwMDAwDQo+ICAgY3VycmVudCA9IDB4YzAwMDAw MDBmZDY0MGQ0MA0KPiAgIHBhY2EgICAgPSAweGMwMDAwMDAwMDA1NGZmODANCj4gICAgIHBpZCAg ID0gNTA4NSwgY29tbSA9IGlzY3NpZA0KPiBkOm1vbj4gdA0KPiBbYzAwMDAwMDBmZDRjNzQ1MF0g ZDAwMDAwMDAwMGIwMjEwOCAuaW5pdF9hY3Rfb3BlbisweDE1MC8weDNkNCBbY3hnYjNpXQ0KPiBb YzAwMDAwMDBmZDRjNzUwMF0gZDAwMDAwMDAwMGU0NTM3OCAuY3hnYmlfZXBfY29ubmVjdCsweDc4 NC8weDhlOCBbbGliY3hnYmldDQo+IFtjMDAwMDAwMGZkNGM3NjUwXSBkMDAwMDAwMDAwZGIzM2Yw IC5pc2NzaV9pZl9yeCsweDcxYy8weGIxOA0KPiBbc2NzaV90cmFuc3BvcnRfaXNjc2kyXQ0KPiBb YzAwMDAwMDBmZDRjNzc0MF0gYzAwMDAwMDAwMDM3MGM5YyAubmV0bGlua19kYXRhX3JlYWR5KzB4 NDAvMHhhNA0KPiBbYzAwMDAwMDBmZDRjNzdjMF0gYzAwMDAwMDAwMDM2ZjAxMCAubmV0bGlua19z ZW5kc2tiKzB4NGMvMHg5Yw0KPiBbYzAwMDAwMDBmZDRjNzg1MF0gYzAwMDAwMDAwMDM3MGMxOCAu bmV0bGlua19zZW5kbXNnKzB4MzU4LzB4MzljDQo+IFtjMDAwMDAwMGZkNGM3OTUwXSBjMDAwMDAw MDAwMzNiZTI0IC5zb2NrX3NlbmRtc2crMHgxMTQvMHgxYjgNCj4gW2MwMDAwMDAwZmQ0YzdiNTBd IGMwMDAwMDAwMDAzM2QyMDggLnN5c19zZW5kbXNnKzB4MjE4LzB4MmFjDQo+IFtjMDAwMDAwMGZk NGM3ZDcwXSBjMDAwMDAwMDAwMzNmNTVjIC5zeXNfc29ja2V0Y2FsbCsweDIyOC8weDI3Yw0KPiBb YzAwMDAwMDBmZDRjN2UzMF0gYzAwMDAwMDAwMDAwODZhNCBzeXNjYWxsX2V4aXQrMHgwLzB4NDAN Cj4gLS0tIEV4Y2VwdGlvbjogYzAxIChTeXN0ZW0gQ2FsbCkgYXQgMDAwMDAwODBkYTU2MGNmYw0K PiANCj4gVGhlIHJvb3QgY2F1c2Ugd2FzIGFuIEVFSCBlcnJvciwgd2hpY2ggc2VudCB1cyBkb3du IHRoZSBvZmZsb2FkX2Nsb3NlIHBhdGggaW4NCj4gdGhlIGN4Z2IzIGRyaXZlciwgd2hpY2ggaW4g dHVybiBzZXRzIGNkZXYtPmxsZGV2IHRvIE5VTEwsIHdpdGhvdXQgcmVnYXJkIGZvcg0KPiB1cHBl ciBsYXllciBkcml2ZXIgKGxpa2UgdGhlIGN4Z2JpIGRyaXZlcnMpIHdoaWNoIG1pZ2h0IGhhdmUg ZXhlY3V0aW9uIGNvbnRleHRzDQo+IGluIHRoZSBtaWRkbGUgb2YgaXRzIHVzZS4gVGhlIHJlc3Vs dCBpcyB0aGUgb29wcyBhYm92ZSwgd2hlbiB0M19sMnRfZ2V0IGF0dGVtcHRzDQo+IHRvIGRlcmVm ZXJlbmNlIGNkZXYtPmxsZGV2IHJpZ2h0IGFmdGVyIHRoZSBFRUggZXJyb3IgaGFuZGxlciBzZXRz IGl0IHRvIE5VTEwuDQo+IA0KPiBUaGUgZml4IGlzIHRvIHJlZmVyZW5jZSBjb3VudCB0aGUgY2Rl diBzdHJ1Y3R1cmUuICBXaGVuIGFuIEVFSCBlcnJvciBvY2N1cnMsIHRoZQ0KPiBzaHV0ZG93biBw YXRoOg0KPiB0M19hZGFwdGVyX2Vycm9yLT5vZmZsb2FkX2Nsb3NlLT5jeGdiM2lfcmVtb3ZlX2Ns aWVudHMtPmN4Z2IzaV9kZXZfY2xvc2UNCj4gd2lsbCBub3cgYmxvY2sgdW50aWwgc3VjaCB0aW1l IGFzIHRoZSBjZGV2IHBvaW50ZXIgaGFzIGEgdXNlIGNvdW50IG9mIHplcm8uDQo+IFRoaXMgY291 cGxlZCB3aXRoIHRoZSBmYWN0IHRoYXQgbG9va3VwcyB3aWxsIG5vdyBza2lwIGZpbmRpbmcgYW55 IHJlZ2lzdGVyZWQNCj4gY2RldidzIGluIGN4Z2JpX2RldmljZV9maW5kX2J5X1tsbGRldnxuZXRk ZXZdIHdpdGggdGhlIENYR0JJX0ZMQUdfQURBUFRFUl9SRVNFVA0KPiBiaXQgc2V0IGVuc3VyZXMg dGhhdCBvbiBhbiBFRUgsIHRoZSBzZXR0aW5nIG9mIGxsZGV2IHRvIE5VTEwgaW4gb2ZmbG9hZF9j bG9zZQ0KPiB3aWxsIG9ubHkgaGFwcGVuIGFmdGVyIHRoZXJlIGFyZSBubyBsb25nZXIgYW55IGFj dGl2ZSB1c2VycyBvZiB0aGUgZGF0YQ0KPiBzdHJ1Y3R1cmUuDQo+IA0KPiBUaGlzIGhhcyBiZWVu IHRlc3RlZCBieSB0aGUgcmVwb3J0ZXIgYW5kIHNob3duIHRvIGZpeCB0aGUgcmVwcm90ZWQgb29w cw0KPiANCj4gQ2hhbmdlIG5vdGVzOg0KPiANCj4gdjIpIFJlc2VudCBiZWNhdXNlIG9mIHNvbWUg YnVpbGQgd2FybmluZ3Mgd2l0aCB0aGUgZmlyc3QgdmVyc2lvbiBvbiByZXF1ZXN0IG9mDQo+IEpC b3R0b21sZXkNCj4gDQo+IHYzKSBNb2RpZmllZCB0byB1c2Uga3JlZiByZWZjb3VudGluZyBhcGku IEl0IGRvZXNuJ3QgZG8gbXVjaCBmb3IgdGhpcyBjb2RlLA0KPiBzaW5jZSB0aGUgcHVycG9zZSBv ZiByZWZjb3VudGluZyBpcyBwcmltYXJpbHkgdG8gc2VyaWFsaXplIHRoZSBjbGVhcmluZyBvZiBh DQo+IHBvaW50ZXIgaW4gYW5vdGhlciBkYXRhIHN0cnVjdHVyZSBpbiBhIGRpZmZlcmVudCBtb2R1 bGUsIGJ1dCBJIHRoaW5rIGl0IGRvZXMNCj4gbG9vayBhIGJpdCBjbGVhbmVyLiAgSSd2ZSBidWls dCB0aGlzIGNvZGUsIGJ1dCBub3QgaGFkIHRoZSBjaGFuY2UgdG8gdGVzdCBpdA0KPiB5ZXQsIGdp dmVuIHRoYXQgSSdtIGFib3V0IHRvIGxlYXZlIG9uIHZhY2F0aW9uLiAgSSB3YW50ZWQgdG8gZ2V0 IGl0IHBvc3RlZCBmb3INCj4gcmV2aWV3IGJlZm9yZSBJIGxlZnQuIEl0IHNob3VsZCB3b3JrIGZp bmUsIHNpbmNlIGl0cyBlZmZlY3RpdmVseSBhIHJlcGxhY2VtZW50DQo+IG9mIHRoZSByYXcgYXRv bWljIHdpdGggc3RydWN0IGtyZWZzLiAgS2FyZW4sIGlmIHlvdSBjb3VsZCBydW4gdGhpcyBvbiBz b21lDQo+IGN4Z2IzaSBlcXVpcG1lbnQgdG8gbWFrZSBzdXJlIEkgZGlkbid0IGluYWR2ZXJ0ZW50 bHkgZG8gYW55dGhpbmcgc3R1cGlkLCBJJ2QNCj4gYXBycGVjaWF0ZSBpdC4gIFRoYW5rcyENCg0K V2l0aCBhbnkgb2YgdGhlc2UgdXBkYXRlcywgZG9lc24ndCBjeGdiNGkgYWxzbyBuZWVkIHVwZGF0 aW5nPw0KDQo+IFNpZ25lZC1vZmYtYnk6IE5laWwgSG9ybWFuIDxuaG9ybWFuQHR1eGRyaXZlci5j b20+DQo+IENDOiBEaXZ5IExlIFJheSA8ZGl2eUBjaGVsc2lvLmNvbT4NCj4gQ0M6IFN0ZXZlIFdp c2UgPHN3aXNlQGNoZWxzaW8uY29tPg0KPiBDQzogS2FyZW4gWGllIDxreGllQGNoZWxzaW8uY29t Pg0KPiBDQzogTWlrZSBDaHJpc3RpZSA8bWljaGFlbGNAY3Mud2lzYy5lZHU+DQo+IENDOiAiSmFt ZXMgRS5KLiBCb3R0b21sZXkiIDxKQm90dG9tbGV5QHBhcmFsbGVscy5jb20+DQo+IENDOiBzdGFi bGUtY29tbWl0c0B2Z2VyLmtlcm5lbC5vcmcNCj4gLS0tDQo+ICBkcml2ZXJzL3Njc2kvY3hnYmkv Y3hnYjNpL2N4Z2IzaS5jIHwgICAgOCArKysrKysrLQ0KPiAgZHJpdmVycy9zY3NpL2N4Z2JpL2xp YmN4Z2JpLmMgICAgICB8ICAgMjEgKysrKysrKysrKysrKysrKystLS0tDQo+ICBkcml2ZXJzL3Nj c2kvY3hnYmkvbGliY3hnYmkuaCAgICAgIHwgICAgNSArKysrKw0KPiAgMyBmaWxlcyBjaGFuZ2Vk LCAyOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvc2NzaS9jeGdiaS9jeGdiM2kvY3hnYjNpLmMgYi9kcml2ZXJzL3Njc2kvY3hnYmkvY3hn YjNpL2N4Z2IzaS5jDQo+IGluZGV4IGJkMjIwNDEuLjg1NWVlMjMgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvc2NzaS9jeGdiaS9jeGdiM2kvY3hnYjNpLmMNCj4gKysrIGIvZHJpdmVycy9zY3NpL2N4 Z2JpL2N4Z2IzaS9jeGdiM2kuYw0KPiBAQCAtMTMwMyw5ICsxMzAzLDEzIEBAIHN0YXRpYyB2b2lk IGN4Z2IzaV9kZXZfY2xvc2Uoc3RydWN0IHQzY2RldiAqdDNkZXYpDQo+ICANCj4gIAlpZiAoIWNk ZXYgfHwgY2Rldi0+ZmxhZ3MgJiBDWEdCSV9GTEFHX0FEQVBURVJfUkVTRVQpIHsNCj4gIAkJcHJf aW5mbygiMHglcCBjbG9zZSwgZiAweCV4LlxuIiwgY2RldiwgY2RldiA/IGNkZXYtPmZsYWdzIDog MCk7DQo+ICsJCWlmIChjZGV2KQ0KPiArCQkJY2Rldl9wdXQoY2Rldik7DQo+ICsJCXdoaWxlIChj ZGV2ICYmIGF0b21pY19yZWFkKCZjZGV2LT51c2VfY291bnQucmVmY291bnQpID4gMSkNCj4gKwkJ CW1zbGVlcCgxKTsNCg0KT0ssIHNvIHRoaXMgd2FzIHdoYXQgbGVhcHQgb3V0IHRoZSBsYXN0IHRp bWUgYXMgYSBiaWcgbm8tbm8uICBGaXJzdGx5LA0KZG8geW91IHJlYWxseSBoYXZlIHRvIHdhaXQg Zm9yIGRlc3RydWN0aW9uPyAgSWYgc28sIHVzZSBhIGNvbXBsZXRpb24uDQoNCj4gIAkJcmV0dXJu Ow0KPiAgCX0NCj4gLQ0KPiArCWNkZXZfcHV0KGNkZXYpOw0KPiAgCWN4Z2JpX2RldmljZV91bnJl Z2lzdGVyKGNkZXYpOw0KPiAgfQ0KPiAgDQo+IEBAIC0xMzIwLDYgKzEzMjQsNyBAQCBzdGF0aWMg dm9pZCBjeGdiM2lfZGV2X29wZW4oc3RydWN0IHQzY2RldiAqdDNkZXYpDQo+ICAJaW50IGksIGVy cjsNCj4gIA0KPiAgCWlmIChjZGV2KSB7DQo+ICsJCWNkZXZfcHV0KGNkZXYpOw0KPiAgCQlwcl9p bmZvKCIweCVwLCB1cGRhdGluZy5cbiIsIGNkZXYpOw0KDQpPdGhlciB3YXkgYXJvdW5kLCBvdGhl cndpc2UgaXQncyB1c2UgYWZ0ZXIgZnJlZS4NCg0KPiAgCQlyZXR1cm47DQo+ICAJfQ0KPiBAQCAt MTM5Miw2ICsxMzk3LDcgQEAgc3RhdGljIHZvaWQgY3hnYjNpX2Rldl9ldmVudF9oYW5kbGVyKHN0 cnVjdCB0M2NkZXYgKnQzZGV2LCB1MzIgZXZlbnQsIHUzMiBwb3J0KQ0KPiAgCQljZGV2LT5mbGFn cyAmPSB+Q1hHQklfRkxBR19BREFQVEVSX1JFU0VUOw0KPiAgCQlicmVhazsNCj4gIAl9DQo+ICsJ Y2Rldl9wdXQoY2Rldik7DQo+ICB9DQo+ICANCj4gIC8qKg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zY3NpL2N4Z2JpL2xpYmN4Z2JpLmMgYi9kcml2ZXJzL3Njc2kvY3hnYmkvbGliY3hnYmkuYw0K PiBpbmRleCA3N2FjMjE3Li4yOTdlZmFhIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3Njc2kvY3hn YmkvbGliY3hnYmkuYw0KPiArKysgYi9kcml2ZXJzL3Njc2kvY3hnYmkvbGliY3hnYmkuYw0KPiBA QCAtOTUsOCArOTUsMTAgQEAgdm9pZCBjeGdiaV9kZXZpY2VfcG9ydG1hcF9jbGVhbnVwKHN0cnVj dCBjeGdiaV9kZXZpY2UgKmNkZXYpDQo+ICB9DQo+ICBFWFBPUlRfU1lNQk9MX0dQTChjeGdiaV9k ZXZpY2VfcG9ydG1hcF9jbGVhbnVwKTsNCj4gIA0KPiAtc3RhdGljIGlubGluZSB2b2lkIGN4Z2Jp X2RldmljZV9kZXN0cm95KHN0cnVjdCBjeGdiaV9kZXZpY2UgKmNkZXYpDQo+ICt2b2lkIGN4Z2Jp X2RldmljZV9kZXN0cm95KHN0cnVjdCBrcmVmICprcikNCj4gIHsNCj4gKwlzdHJ1Y3QgY3hnYmlf ZGV2aWNlICpjZGV2ID0gY29udGFpbmVyX29mKGtyLCBzdHJ1Y3QgY3hnYmlfZGV2aWNlLCB1c2Vf Y291bnQpOw0KPiArDQo+ICAJbG9nX2RlYnVnKDEgPDwgQ1hHQklfREJHX0RFViwNCj4gIAkJImNk ZXYgMHglcCwgcCMgJXUuXG4iLCBjZGV2LCBjZGV2LT5ucG9ydHMpOw0KPiAgCWN4Z2JpX2hiYXNf cmVtb3ZlKGNkZXYpOw0KPiBAQCAtMTExLDYgKzExMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBj eGdiaV9kZXZpY2VfZGVzdHJveShzdHJ1Y3QgY3hnYmlfZGV2aWNlICpjZGV2KQ0KPiAgCQljeGdi aV9mcmVlX2JpZ19tZW0oY2Rldi0+cG1hcC5wb3J0X2Nzayk7DQo+ICAJa2ZyZWUoY2Rldik7DQo+ ICB9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTChjeGdiaV9kZXZpY2VfZGVzdHJveSk7DQoNClRoZXJl J3Mgbm8gY3Jvc3MgbW9kdWxlIHVzZSwgaXMgdGhlcmU/IHNvIG5vIG5lZWQgb2YgYW4gZXhwb3J0 Lg0KDQo+ICBzdHJ1Y3QgY3hnYmlfZGV2aWNlICpjeGdiaV9kZXZpY2VfcmVnaXN0ZXIodW5zaWdu ZWQgaW50IGV4dHJhLA0KPiAgCQkJCQkgICB1bnNpZ25lZCBpbnQgbnBvcnRzKQ0KPiBAQCAtMTI1 LDYgKzEyOCw3IEBAIHN0cnVjdCBjeGdiaV9kZXZpY2UgKmN4Z2JpX2RldmljZV9yZWdpc3Rlcih1 bnNpZ25lZCBpbnQgZXh0cmEsDQo+ICAJCXByX3dhcm4oIm5wb3J0ICVkLCBPT00uXG4iLCBucG9y dHMpOw0KPiAgCQlyZXR1cm4gTlVMTDsNCj4gIAl9DQo+ICsJa3JlZl9pbml0KCZjZGV2LT51c2Vf Y291bnQpOw0KPiAgCWNkZXYtPnBvcnRzID0gKHN0cnVjdCBuZXRfZGV2aWNlICoqKShjZGV2ICsg MSk7DQo+ICAJY2Rldi0+aGJhcyA9IChzdHJ1Y3QgY3hnYmlfaGJhICoqKSgoKGNoYXIqKWNkZXYt PnBvcnRzKSArIG5wb3J0cyAqDQo+ICAJCQkJCQlzaXplb2Yoc3RydWN0IG5ldF9kZXZpY2UgKikp Ow0KPiBAQCAtMTUxLDcgKzE1NSw3IEBAIHZvaWQgY3hnYmlfZGV2aWNlX3VucmVnaXN0ZXIoc3Ry dWN0IGN4Z2JpX2RldmljZSAqY2RldikNCj4gIAltdXRleF9sb2NrKCZjZGV2X211dGV4KTsNCj4g IAlsaXN0X2RlbCgmY2Rldi0+bGlzdF9oZWFkKTsNCj4gIAltdXRleF91bmxvY2soJmNkZXZfbXV0 ZXgpOw0KPiAtCWN4Z2JpX2RldmljZV9kZXN0cm95KGNkZXYpOw0KPiArCWNkZXZfcHV0KGNkZXYp Ow0KPiAgfQ0KPiAgRVhQT1JUX1NZTUJPTF9HUEwoY3hnYmlfZGV2aWNlX3VucmVnaXN0ZXIpOw0K PiAgDQo+IEBAIC0xNjcsNyArMTcxLDcgQEAgdm9pZCBjeGdiaV9kZXZpY2VfdW5yZWdpc3Rlcl9h bGwodW5zaWduZWQgaW50IGZsYWcpDQo+ICAJCQkJY2RldiwgY2Rldi0+bnBvcnRzLCBjZGV2LT5u cG9ydHMgPw0KPiAgCQkJCSBjZGV2LT5wb3J0c1swXS0+bmFtZSA6ICIiKTsNCj4gIAkJCWxpc3Rf ZGVsKCZjZGV2LT5saXN0X2hlYWQpOw0KPiAtCQkJY3hnYmlfZGV2aWNlX2Rlc3Ryb3koY2Rldik7 DQo+ICsJCQljZGV2X3B1dChjZGV2KTsNCj4gIAkJfQ0KPiAgCX0NCj4gIAltdXRleF91bmxvY2so JmNkZXZfbXV0ZXgpOw0KPiBAQCAtMTgxLDYgKzE4NSw5IEBAIHN0cnVjdCBjeGdiaV9kZXZpY2Ug KmN4Z2JpX2RldmljZV9maW5kX2J5X2xsZGV2KHZvaWQgKmxsZGV2KQ0KPiAgCW11dGV4X2xvY2so JmNkZXZfbXV0ZXgpOw0KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjZGV2LCB0bXAsICZj ZGV2X2xpc3QsIGxpc3RfaGVhZCkgew0KPiAgCQlpZiAoY2Rldi0+bGxkZXYgPT0gbGxkZXYpIHsN Cj4gKwkJCWlmIChjZGV2LT5mbGFncyAmIENYR0JJX0ZMQUdfQURBUFRFUl9SRVNFVCkNCj4gKwkJ CQljb250aW51ZTsNCj4gKwkJCWNkZXZfaG9sZChjZGV2KTsNCj4gIAkJCW11dGV4X3VubG9jaygm Y2Rldl9tdXRleCk7DQo+ICAJCQlyZXR1cm4gY2RldjsNCj4gIAkJfQ0KPiBAQCAtMjEwLDcgKzIx NywxMCBAQCBzdGF0aWMgc3RydWN0IGN4Z2JpX2RldmljZSAqY3hnYmlfZGV2aWNlX2ZpbmRfYnlf bmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LA0KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShjZGV2LCB0bXAsICZjZGV2X2xpc3QsIGxpc3RfaGVhZCkgew0KPiAgCQlmb3IgKGkgPSAw OyBpIDwgY2Rldi0+bnBvcnRzOyBpKyspIHsNCj4gIAkJCWlmIChuZGV2ID09IGNkZXYtPnBvcnRz W2ldKSB7DQo+ICsJCQkJaWYgKGNkZXYtPmZsYWdzICYgQ1hHQklfRkxBR19BREFQVEVSX1JFU0VU KQ0KPiArCQkJCQljb250aW51ZTsNCj4gIAkJCQljZGV2LT5oYmFzW2ldLT52ZGV2ID0gdmRldjsN Cj4gKwkJCQljZGV2X2hvbGQoY2Rldik7DQo+ICAJCQkJbXV0ZXhfdW5sb2NrKCZjZGV2X211dGV4 KTsNCj4gIAkJCQlpZiAocG9ydCkNCj4gIAkJCQkJKnBvcnQgPSBpOw0KPiBAQCAtNDY5LDcgKzQ3 OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3hnYmlfc29jayAqY3hnYmlfY2hlY2tfcm91dGUoc3RydWN0 IHNvY2thZGRyICpkc3RfYWRkcikNCj4gIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gKmRhZGRyID0gKHN0 cnVjdCBzb2NrYWRkcl9pbiAqKWRzdF9hZGRyOw0KPiAgCXN0cnVjdCBkc3RfZW50cnkgKmRzdDsN Cj4gIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsNCj4gLQlzdHJ1Y3QgY3hnYmlfZGV2aWNlICpj ZGV2Ow0KPiArCXN0cnVjdCBjeGdiaV9kZXZpY2UgKmNkZXYgPSBOVUxMOw0KPiAgCXN0cnVjdCBy dGFibGUgKnJ0ID0gTlVMTDsNCj4gIAlzdHJ1Y3QgZmxvd2k0IGZsNDsNCj4gIAlzdHJ1Y3QgY3hn Ymlfc29jayAqY3NrID0gTlVMTDsNCj4gQEAgLTU0Miw2ICs1NTIsOCBAQCByZWxfcnQ6DQo+ICAJ aWYgKGNzaykNCj4gIAkJY3hnYmlfc29ja19jbG9zZWQoY3NrKTsNCj4gIGVycl9vdXQ6DQo+ICsJ aWYgKGNkZXYpDQo+ICsJCWNkZXZfcHV0KGNkZXYpOw0KPiAgCXJldHVybiBFUlJfUFRSKGVycik7 DQo+ICB9DQo+ICANCj4gQEAgLTI0OTEsNiArMjUwMyw3IEBAIHN0cnVjdCBpc2NzaV9lbmRwb2lu dCAqY3hnYmlfZXBfY29ubmVjdChzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCwNCj4gIAlyZXR1cm4g ZXA7DQo+ICANCj4gIHJlbGVhc2VfY29ubjoNCj4gKwljZGV2X3B1dChjc2stPmNkZXYpOw0KDQpU aGlzIGlzbid0IHJpZ2h0LiAgYW4gZW1iZWRkZWQgZGV2aWNlIHJlZmVyZW5jZSBzaG91bGQgYmUg cmVsZWFzZWQgaW4NCnRoZSBjc2sgcmVsZWFzZSBmdW5jdGlvbiAoY3hnYmlfc29ja19mcmVlKS4N Cg0KPiAgCWN4Z2JpX3NvY2tfcHV0KGNzayk7DQo+ICAJY3hnYmlfc29ja19jbG9zZWQoY3NrKTsN Cj4gIGVycl9vdXQ6DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvY3hnYmkvbGliY3hnYmku aCBiL2RyaXZlcnMvc2NzaS9jeGdiaS9saWJjeGdiaS5oDQo+IGluZGV4IDkyNjc4NDQuLjA4Nzg4 YWMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvc2NzaS9jeGdiaS9saWJjeGdiaS5oDQo+ICsrKyBi L2RyaXZlcnMvc2NzaS9jeGdiaS9saWJjeGdiaS5oDQo+IEBAIC0yNCw2ICsyNCw3IEBADQo+ICAj aW5jbHVkZSA8bGludXgvc2NhdHRlcmxpc3QuaD4NCj4gICNpbmNsdWRlIDxsaW51eC9za2J1ZmYu aD4NCj4gICNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+DQo+ICsjaW5jbHVkZSA8bGludXgva3Jl Zi5oPg0KPiAgI2luY2x1ZGUgPHNjc2kvc2NzaV9kZXZpY2UuaD4NCj4gICNpbmNsdWRlIDxzY3Np L2xpYmlzY3NpX3RjcC5oPg0KPiAgDQo+IEBAIC01MTQsNiArNTE1LDcgQEAgc3RydWN0IGN4Z2Jp X2RldmljZSB7DQo+ICAJdW5zaWduZWQgaW50IGZsYWdzOw0KPiAgCXN0cnVjdCBuZXRfZGV2aWNl ICoqcG9ydHM7DQo+ICAJdm9pZCAqbGxkZXY7DQo+ICsJc3RydWN0IGtyZWYgdXNlX2NvdW50Ow0K PiAgCXN0cnVjdCBjeGdiaV9oYmEgKipoYmFzOw0KPiAgCWNvbnN0IHVuc2lnbmVkIHNob3J0ICpt dHVzOw0KPiAgCXVuc2lnbmVkIGNoYXIgbm10dXM7DQo+IEBAIC01NTcsNiArNTU5LDggQEAgc3Ry dWN0IGN4Z2JpX2RldmljZSB7DQo+ICAJdm9pZCAqZGRfZGF0YTsNCj4gIH07DQo+ICAjZGVmaW5l IGN4Z2JpX2NkZXZfcHJpdihjZGV2KQkoKGNkZXYpLT5kZF9kYXRhKQ0KPiArI2RlZmluZSBjZGV2 X2hvbGQoeCkgZG8ge2tyZWZfZ2V0KCYoeCktPnVzZV9jb3VudCk7fSB3aGlsZSgwKQ0KDQpob2xk IGlzIG5vbiBzdGFuZGFyZCwgdXNlIHB1dCBpbnN0ZWFkLg0KDQo+ICsjZGVmaW5lIGNkZXZfcHV0 KHgpIGRvIHtrcmVmX3B1dCgmKHgpLT51c2VfY291bnQsIGN4Z2JpX2RldmljZV9kZXN0cm95KTt9 IHdoaWxlKDApDQo+ICANCj4gIHN0cnVjdCBjeGdiaV9jb25uIHsNCj4gIAlzdHJ1Y3QgY3hnYmlf ZW5kcG9pbnQgKmNlcDsNCj4gQEAgLTY5MSw2ICs2OTUsNyBAQCBzdGF0aWMgaW5saW5lIF9fYmUz MiBjeGdiaV9nZXRfaXNjc2lfaXB2NChzdHJ1Y3QgY3hnYmlfaGJhICpjaGJhKQ0KPiAgc3RydWN0 IGN4Z2JpX2RldmljZSAqY3hnYmlfZGV2aWNlX3JlZ2lzdGVyKHVuc2lnbmVkIGludCwgdW5zaWdu ZWQgaW50KTsNCj4gIHZvaWQgY3hnYmlfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGN4Z2JpX2Rl dmljZSAqKTsNCj4gIHZvaWQgY3hnYmlfZGV2aWNlX3VucmVnaXN0ZXJfYWxsKHVuc2lnbmVkIGlu dCBmbGFnKTsNCj4gK3ZvaWQgY3hnYmlfZGV2aWNlX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyKTsN Cj4gIHN0cnVjdCBjeGdiaV9kZXZpY2UgKmN4Z2JpX2RldmljZV9maW5kX2J5X2xsZGV2KHZvaWQg Kik7DQo+ICBpbnQgY3hnYmlfaGJhc19hZGQoc3RydWN0IGN4Z2JpX2RldmljZSAqLCB1bnNpZ25l ZCBpbnQsIHVuc2lnbmVkIGludCwNCj4gIAkJCXN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgKiwN Cg0K