From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Romanick Subject: Re: [PATCH 1/4] intel: Unconditionally clear ioctl structs Date: Wed, 11 Feb 2015 11:09:35 -0800 Message-ID: <54DBA8EF.2090601@freedesktop.org> References: <1423654968-10553-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1423654968-10553-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , Intel Graphics Development , DRI Development Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBpcwoKUmV2aWV3ZWQtYnk6IElhbiBSb21hbmljayA8aWFuLmQucm9tYW5pY2tA aW50ZWwuY29tPgoKT24gMDIvMTEvMjAxNSAwMzo0MiBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToK PiBXZSByZWFsbHkgaGF2ZSB0byBkbyB0aGlzIHRvIGF2b2lkIHN1cnByaXNlcyB3aGVuIGV4dGVu ZGluZyB0aGUgQUJJCj4gbGF0ZXIgb24uIEVzcGVjaWFsbHkgd2hlbiBncm93aW5nIHRoZSBzdHJ1 Y3R1cmVzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJA aW50ZWwuY29tPgo+IC0tLQo+ICBpbnRlbC9pbnRlbF9idWZtZ3JfZ2VtLmMgfCA2OCArKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5n ZWQsIDM0IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9p bnRlbC9pbnRlbF9idWZtZ3JfZ2VtLmMgYi9pbnRlbC9pbnRlbF9idWZtZ3JfZ2VtLmMKPiBpbmRl eCBjZjg1YmI4YWUwYmYuLjc4ODc1ZmQzMjlmMiAxMDA2NDQKPiAtLS0gYS9pbnRlbC9pbnRlbF9i dWZtZ3JfZ2VtLmMKPiArKysgYi9pbnRlbC9pbnRlbF9idWZtZ3JfZ2VtLmMKPiBAQCAtNzQsNyAr NzQsNyBAQAo+ICAjZGVmaW5lIFZHKHgpCj4gICNlbmRpZgo+ICAKPiAtI2RlZmluZSBWR19DTEVB UihzKSBWRyhtZW1zZXQoJnMsIDAsIHNpemVvZihzKSkpCj4gKyNkZWZpbmUgbWVtY2xlYXIocykg bWVtc2V0KCZzLCAwLCBzaXplb2YocykpCj4gIAo+ICAjZGVmaW5lIERCRyguLi4pIGRvIHsJCQkJ CVwKPiAgCWlmIChidWZtZ3JfZ2VtLT5idWZtZ3IuZGVidWcpCQkJXAo+IEBAIC01OTMsNyArNTkz LDcgQEAgZHJtX2ludGVsX2dlbV9ib19idXN5KGRybV9pbnRlbF9ibyAqYm8pCj4gIAlpZiAoYm9f Z2VtLT5yZXVzYWJsZSAmJiBib19nZW0tPmlkbGUpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAt CVZHX0NMRUFSKGJ1c3kpOwo+ICsJbWVtY2xlYXIoYnVzeSk7Cj4gIAlidXN5LmhhbmRsZSA9IGJv X2dlbS0+Z2VtX2hhbmRsZTsKPiAgCj4gIAlyZXQgPSBkcm1Jb2N0bChidWZtZ3JfZ2VtLT5mZCwg RFJNX0lPQ1RMX0k5MTVfR0VNX0JVU1ksICZidXN5KTsKPiBAQCAtNjEyLDcgKzYxMiw3IEBAIGRy bV9pbnRlbF9nZW1fYm9fbWFkdmlzZV9pbnRlcm5hbChkcm1faW50ZWxfYnVmbWdyX2dlbSAqYnVm bWdyX2dlbSwKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9tYWR2aXNlIG1hZHY7Cj4gIAo+ IC0JVkdfQ0xFQVIobWFkdik7Cj4gKwltZW1jbGVhcihtYWR2KTsKPiAgCW1hZHYuaGFuZGxlID0g Ym9fZ2VtLT5nZW1faGFuZGxlOwo+ICAJbWFkdi5tYWR2ID0gc3RhdGU7Cj4gIAltYWR2LnJldGFp bmVkID0gMTsKPiBAQCAtNzQxLDcgKzc0MSw3IEBAIHJldHJ5Ogo+ICAKPiAgCQlib19nZW0tPmJv LnNpemUgPSBib19zaXplOwo+ICAKPiAtCQlWR19DTEVBUihjcmVhdGUpOwo+ICsJCW1lbWNsZWFy KGNyZWF0ZSk7Cj4gIAkJY3JlYXRlLnNpemUgPSBib19zaXplOwo+ICAKPiAgCQlyZXQgPSBkcm1J b2N0bChidWZtZ3JfZ2VtLT5mZCwKPiBAQCAtODg4LDcgKzg4OCw3IEBAIGRybV9pbnRlbF9nZW1f Ym9fYWxsb2NfdXNlcnB0cihkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCj4gIAo+ICAJYm9fZ2Vt LT5iby5zaXplID0gc2l6ZTsKPiAgCj4gLQlWR19DTEVBUih1c2VycHRyKTsKPiArCW1lbWNsZWFy KHVzZXJwdHIpOwo+ICAJdXNlcnB0ci51c2VyX3B0ciA9IChfX3U2NCkoKHVuc2lnbmVkIGxvbmcp YWRkcik7Cj4gIAl1c2VycHRyLnVzZXJfc2l6ZSA9IHNpemU7Cj4gIAl1c2VycHRyLmZsYWdzID0g ZmxhZ3M7Cj4gQEAgLTk3Miw3ICs5NzIsNyBAQCBkcm1faW50ZWxfYm9fZ2VtX2NyZWF0ZV9mcm9t X25hbWUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAo+ICAJCX0KPiAgCX0KPiAgCj4gLQlWR19D TEVBUihvcGVuX2FyZyk7Cj4gKwltZW1jbGVhcihvcGVuX2FyZyk7Cj4gIAlvcGVuX2FyZy5uYW1l ID0gaGFuZGxlOwo+ICAJcmV0ID0gZHJtSW9jdGwoYnVmbWdyX2dlbS0+ZmQsCj4gIAkJICAgICAg IERSTV9JT0NUTF9HRU1fT1BFTiwKPiBAQCAtMTAxNyw3ICsxMDE3LDcgQEAgZHJtX2ludGVsX2Jv X2dlbV9jcmVhdGVfZnJvbV9uYW1lKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKPiAgCWJvX2dl bS0+Z2xvYmFsX25hbWUgPSBoYW5kbGU7Cj4gIAlib19nZW0tPnJldXNhYmxlID0gZmFsc2U7Cj4g IAo+IC0JVkdfQ0xFQVIoZ2V0X3RpbGluZyk7Cj4gKwltZW1jbGVhcihnZXRfdGlsaW5nKTsKPiAg CWdldF90aWxpbmcuaGFuZGxlID0gYm9fZ2VtLT5nZW1faGFuZGxlOwo+ICAJcmV0ID0gZHJtSW9j dGwoYnVmbWdyX2dlbS0+ZmQsCj4gIAkJICAgICAgIERSTV9JT0NUTF9JOTE1X0dFTV9HRVRfVElM SU5HLAo+IEBAIC0xMDYwLDcgKzEwNjAsNyBAQCBkcm1faW50ZWxfZ2VtX2JvX2ZyZWUoZHJtX2lu dGVsX2JvICpibykKPiAgCX0KPiAgCj4gIAkvKiBDbG9zZSB0aGlzIG9iamVjdCAqLwo+IC0JVkdf Q0xFQVIoY2xvc2UpOwo+ICsJbWVtY2xlYXIoY2xvc2UpOwo+ICAJY2xvc2UuaGFuZGxlID0gYm9f Z2VtLT5nZW1faGFuZGxlOwo+ICAJcmV0ID0gZHJtSW9jdGwoYnVmbWdyX2dlbS0+ZmQsIERSTV9J T0NUTF9HRU1fQ0xPU0UsICZjbG9zZSk7Cj4gIAlpZiAocmV0ICE9IDApIHsKPiBAQCAtMTI5Miw5 ICsxMjkyLDggQEAgc3RhdGljIGludCBkcm1faW50ZWxfZ2VtX2JvX21hcChkcm1faW50ZWxfYm8g KmJvLCBpbnQgd3JpdGVfZW5hYmxlKQo+ICAJCURCRygiYm9fbWFwOiAlZCAoJXMpLCBtYXBfY291 bnQ9JWRcbiIsCj4gIAkJICAgIGJvX2dlbS0+Z2VtX2hhbmRsZSwgYm9fZ2VtLT5uYW1lLCBib19n ZW0tPm1hcF9jb3VudCk7Cj4gIAo+IC0JCVZHX0NMRUFSKG1tYXBfYXJnKTsKPiArCQltZW1jbGVh cihtbWFwX2FyZyk7Cj4gIAkJbW1hcF9hcmcuaGFuZGxlID0gYm9fZ2VtLT5nZW1faGFuZGxlOwo+ IC0JCW1tYXBfYXJnLm9mZnNldCA9IDA7Cj4gIAkJbW1hcF9hcmcuc2l6ZSA9IGJvLT5zaXplOwo+ ICAJCXJldCA9IGRybUlvY3RsKGJ1Zm1ncl9nZW0tPmZkLAo+ICAJCQkgICAgICAgRFJNX0lPQ1RM X0k5MTVfR0VNX01NQVAsCj4gQEAgLTEzMTYsNyArMTMxNSw3IEBAIHN0YXRpYyBpbnQgZHJtX2lu dGVsX2dlbV9ib19tYXAoZHJtX2ludGVsX2JvICpibywgaW50IHdyaXRlX2VuYWJsZSkKPiAgCSAg ICBib19nZW0tPm1lbV92aXJ0dWFsKTsKPiAgCWJvLT52aXJ0dWFsID0gYm9fZ2VtLT5tZW1fdmly dHVhbDsKPiAgCj4gLQlWR19DTEVBUihzZXRfZG9tYWluKTsKPiArCW1lbWNsZWFyKHNldF9kb21h aW4pOwo+ICAJc2V0X2RvbWFpbi5oYW5kbGUgPSBib19nZW0tPmdlbV9oYW5kbGU7Cj4gIAlzZXRf ZG9tYWluLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DUFU7Cj4gIAlpZiAod3JpdGVf ZW5hYmxlKQo+IEBAIC0xMzYyLDcgKzEzNjEsNyBAQCBtYXBfZ3R0KGRybV9pbnRlbF9ibyAqYm8p Cj4gIAkJREJHKCJib19tYXBfZ3R0OiBtbWFwICVkICglcyksIG1hcF9jb3VudD0lZFxuIiwKPiAg CQkgICAgYm9fZ2VtLT5nZW1faGFuZGxlLCBib19nZW0tPm5hbWUsIGJvX2dlbS0+bWFwX2NvdW50 KTsKPiAgCj4gLQkJVkdfQ0xFQVIobW1hcF9hcmcpOwo+ICsJCW1lbWNsZWFyKG1tYXBfYXJnKTsK PiAgCQltbWFwX2FyZy5oYW5kbGUgPSBib19nZW0tPmdlbV9oYW5kbGU7Cj4gIAo+ICAJCS8qIEdl dCB0aGUgZmFrZSBvZmZzZXQgYmFjay4uLiAqLwo+IEBAIC0xNDMwLDcgKzE0MjksNyBAQCBkcm1f aW50ZWxfZ2VtX2JvX21hcF9ndHQoZHJtX2ludGVsX2JvICpibykKPiAgCSAqIHRlbGwgaXQgd2hl biB3ZSdyZSBhYm91dCB0byB1c2UgdGhpbmdzIGlmIHdlIGhhZCBkb25lCj4gIAkgKiByZW5kZXJp bmcgYW5kIGl0IHN0aWxsIGhhcHBlbnMgdG8gYmUgYm91bmQgdG8gdGhlIEdUVC4KPiAgCSAqLwo+ IC0JVkdfQ0xFQVIoc2V0X2RvbWFpbik7Cj4gKwltZW1jbGVhcihzZXRfZG9tYWluKTsKPiAgCXNl dF9kb21haW4uaGFuZGxlID0gYm9fZ2VtLT5nZW1faGFuZGxlOwo+ICAJc2V0X2RvbWFpbi5yZWFk X2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fR1RUOwo+ICAJc2V0X2RvbWFpbi53cml0ZV9kb21h aW4gPSBJOTE1X0dFTV9ET01BSU5fR1RUOwo+IEBAIC0xNTI5LDcgKzE1MjgsNyBAQCBzdGF0aWMg aW50IGRybV9pbnRlbF9nZW1fYm9fdW5tYXAoZHJtX2ludGVsX2JvICpibykKPiAgCQkgKiBVbmxp a2UgR1RUIHNldCBkb21haW5zLCB0aGlzIG9ubHkgZG9lcyB3b3JrIGlmIHRoZQo+ICAJCSAqIGJ1 ZmZlciBzaG91bGQgYmUgc2Nhbm91dC1yZWxhdGVkLgo+ICAJCSAqLwo+IC0JCVZHX0NMRUFSKHN3 X2ZpbmlzaCk7Cj4gKwkJbWVtY2xlYXIoc3dfZmluaXNoKTsKPiAgCQlzd19maW5pc2guaGFuZGxl ID0gYm9fZ2VtLT5nZW1faGFuZGxlOwo+ICAJCXJldCA9IGRybUlvY3RsKGJ1Zm1ncl9nZW0tPmZk LAo+ICAJCQkgICAgICAgRFJNX0lPQ1RMX0k5MTVfR0VNX1NXX0ZJTklTSCwKPiBAQCAtMTU3MSw3 ICsxNTcwLDcgQEAgZHJtX2ludGVsX2dlbV9ib19zdWJkYXRhKGRybV9pbnRlbF9ibyAqYm8sIHVu c2lnbmVkIGxvbmcgb2Zmc2V0LAo+ICAJaWYgKGJvX2dlbS0+aXNfdXNlcnB0cikKPiAgCQlyZXR1 cm4gLUVJTlZBTDsKPiAgCj4gLQlWR19DTEVBUihwd3JpdGUpOwo+ICsJbWVtY2xlYXIocHdyaXRl KTsKPiAgCXB3cml0ZS5oYW5kbGUgPSBib19nZW0tPmdlbV9oYW5kbGU7Cj4gIAlwd3JpdGUub2Zm c2V0ID0gb2Zmc2V0Owo+ICAJcHdyaXRlLnNpemUgPSBzaXplOwo+IEBAIC0xNTk2LDcgKzE1OTUs NyBAQCBkcm1faW50ZWxfZ2VtX2dldF9waXBlX2Zyb21fY3J0Y19pZChkcm1faW50ZWxfYnVmbWdy ICpidWZtZ3IsIGludCBjcnRjX2lkKQo+ICAJc3RydWN0IGRybV9pOTE1X2dldF9waXBlX2Zyb21f Y3J0Y19pZCBnZXRfcGlwZV9mcm9tX2NydGNfaWQ7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCVZHX0NM RUFSKGdldF9waXBlX2Zyb21fY3J0Y19pZCk7Cj4gKwltZW1jbGVhcihnZXRfcGlwZV9mcm9tX2Ny dGNfaWQpOwo+ICAJZ2V0X3BpcGVfZnJvbV9jcnRjX2lkLmNydGNfaWQgPSBjcnRjX2lkOwo+ICAJ cmV0ID0gZHJtSW9jdGwoYnVmbWdyX2dlbS0+ZmQsCj4gIAkJICAgICAgIERSTV9JT0NUTF9JOTE1 X0dFVF9QSVBFX0ZST01fQ1JUQ19JRCwKPiBAQCAtMTYyNiw3ICsxNjI1LDcgQEAgZHJtX2ludGVs X2dlbV9ib19nZXRfc3ViZGF0YShkcm1faW50ZWxfYm8gKmJvLCB1bnNpZ25lZCBsb25nIG9mZnNl dCwKPiAgCWlmIChib19nZW0tPmlzX3VzZXJwdHIpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ IC0JVkdfQ0xFQVIocHJlYWQpOwo+ICsJbWVtY2xlYXIocHJlYWQpOwo+ICAJcHJlYWQuaGFuZGxl ID0gYm9fZ2VtLT5nZW1faGFuZGxlOwo+ICAJcHJlYWQub2Zmc2V0ID0gb2Zmc2V0Owo+ICAJcHJl YWQuc2l6ZSA9IHNpemU7Cj4gQEAgLTE2OTQsOSArMTY5Myw5IEBAIGRybV9pbnRlbF9nZW1fYm9f d2FpdChkcm1faW50ZWxfYm8gKmJvLCBpbnQ2NF90IHRpbWVvdXRfbnMpCj4gIAkJfQo+ICAJfQo+ ICAKPiArCW1lbWNsZWFyKHdhaXQpOwo+ICAJd2FpdC5ib19oYW5kbGUgPSBib19nZW0tPmdlbV9o YW5kbGU7Cj4gIAl3YWl0LnRpbWVvdXRfbnMgPSB0aW1lb3V0X25zOwo+IC0Jd2FpdC5mbGFncyA9 IDA7Cj4gIAlyZXQgPSBkcm1Jb2N0bChidWZtZ3JfZ2VtLT5mZCwgRFJNX0lPQ1RMX0k5MTVfR0VN X1dBSVQsICZ3YWl0KTsKPiAgCWlmIChyZXQgPT0gLTEpCj4gIAkJcmV0dXJuIC1lcnJubzsKPiBA QCAtMTcxOSw3ICsxNzE4LDcgQEAgZHJtX2ludGVsX2dlbV9ib19zdGFydF9ndHRfYWNjZXNzKGRy bV9pbnRlbF9ibyAqYm8sIGludCB3cml0ZV9lbmFibGUpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3NldF9kb21haW4gc2V0X2RvbWFpbjsKPiAgCWludCByZXQ7Cj4gIAo+IC0JVkdfQ0xFQVIoc2V0 X2RvbWFpbik7Cj4gKwltZW1jbGVhcihzZXRfZG9tYWluKTsKPiAgCXNldF9kb21haW4uaGFuZGxl ID0gYm9fZ2VtLT5nZW1faGFuZGxlOwo+ICAJc2V0X2RvbWFpbi5yZWFkX2RvbWFpbnMgPSBJOTE1 X0dFTV9ET01BSU5fR1RUOwo+ICAJc2V0X2RvbWFpbi53cml0ZV9kb21haW4gPSB3cml0ZV9lbmFi bGUgPyBJOTE1X0dFTV9ET01BSU5fR1RUIDogMDsKPiBAQCAtMjMzOSw3ICsyMzM4LDcgQEAgZHJt X2ludGVsX2dlbV9ib19leGVjKGRybV9pbnRlbF9ibyAqYm8sIGludCB1c2VkLAo+ICAJICovCj4g IAlkcm1faW50ZWxfYWRkX3ZhbGlkYXRlX2J1ZmZlcihibyk7Cj4gIAo+IC0JVkdfQ0xFQVIoZXhl Y2J1Zik7Cj4gKwltZW1jbGVhcihleGVjYnVmKTsKPiAgCWV4ZWNidWYuYnVmZmVyc19wdHIgPSAo dWludHB0cl90KSBidWZtZ3JfZ2VtLT5leGVjX29iamVjdHM7Cj4gIAlleGVjYnVmLmJ1ZmZlcl9j b3VudCA9IGJ1Zm1ncl9nZW0tPmV4ZWNfY291bnQ7Cj4gIAlleGVjYnVmLmJhdGNoX3N0YXJ0X29m ZnNldCA9IDA7Cj4gQEAgLTI0MjYsNyArMjQyNSw3IEBAIGRvX2V4ZWMyKGRybV9pbnRlbF9ibyAq Ym8sIGludCB1c2VkLCBkcm1faW50ZWxfY29udGV4dCAqY3R4LAo+ICAJICovCj4gIAlkcm1faW50 ZWxfYWRkX3ZhbGlkYXRlX2J1ZmZlcjIoYm8sIDApOwo+ICAKPiAtCVZHX0NMRUFSKGV4ZWNidWYp Owo+ICsJbWVtY2xlYXIoZXhlY2J1Zik7Cj4gIAlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gKHVpbnRw dHJfdClidWZtZ3JfZ2VtLT5leGVjMl9vYmplY3RzOwo+ICAJZXhlY2J1Zi5idWZmZXJfY291bnQg PSBidWZtZ3JfZ2VtLT5leGVjX2NvdW50Owo+ICAJZXhlY2J1Zi5iYXRjaF9zdGFydF9vZmZzZXQg PSAwOwo+IEBAIC0yNTE3LDcgKzI1MTYsNyBAQCBkcm1faW50ZWxfZ2VtX2JvX3Bpbihkcm1faW50 ZWxfYm8gKmJvLCB1aW50MzJfdCBhbGlnbm1lbnQpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Bp biBwaW47Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCVZHX0NMRUFSKHBpbik7Cj4gKwltZW1jbGVhcihw aW4pOwo+ICAJcGluLmhhbmRsZSA9IGJvX2dlbS0+Z2VtX2hhbmRsZTsKPiAgCXBpbi5hbGlnbm1l bnQgPSBhbGlnbm1lbnQ7Cj4gIAo+IEBAIC0yNTQwLDcgKzI1MzksNyBAQCBkcm1faW50ZWxfZ2Vt X2JvX3VucGluKGRybV9pbnRlbF9ibyAqYm8pCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3VucGlu IHVucGluOwo+ICAJaW50IHJldDsKPiAgCj4gLQlWR19DTEVBUih1bnBpbik7Cj4gKwltZW1jbGVh cih1bnBpbik7Cj4gIAl1bnBpbi5oYW5kbGUgPSBib19nZW0tPmdlbV9oYW5kbGU7Cj4gIAo+ICAJ cmV0ID0gZHJtSW9jdGwoYnVmbWdyX2dlbS0+ZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9VTlBJTiwg JnVucGluKTsKPiBAQCAtMjY5Niw3ICsyNjk1LDcgQEAgZHJtX2ludGVsX2JvX2dlbV9jcmVhdGVf ZnJvbV9wcmltZShkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGludCBwcmltZV9mZCwgaW50IHMK PiAgCURSTUxJU1RBRERUQUlMKCZib19nZW0tPm5hbWVfbGlzdCwgJmJ1Zm1ncl9nZW0tPm5hbWVk KTsKPiAgCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZidWZtZ3JfZ2VtLT5sb2NrKTsKPiAgCj4gLQlW R19DTEVBUihnZXRfdGlsaW5nKTsKPiArCW1lbWNsZWFyKGdldF90aWxpbmcpOwo+ICAJZ2V0X3Rp bGluZy5oYW5kbGUgPSBib19nZW0tPmdlbV9oYW5kbGU7Cj4gIAlyZXQgPSBkcm1Jb2N0bChidWZt Z3JfZ2VtLT5mZCwKPiAgCQkgICAgICAgRFJNX0lPQ1RMX0k5MTVfR0VNX0dFVF9USUxJTkcsCj4g QEAgLTI3NDMsNyArMjc0Miw3IEBAIGRybV9pbnRlbF9nZW1fYm9fZmxpbmsoZHJtX2ludGVsX2Jv ICpibywgdWludDMyX3QgKiBuYW1lKQo+ICAJaWYgKCFib19nZW0tPmdsb2JhbF9uYW1lKSB7Cj4g IAkJc3RydWN0IGRybV9nZW1fZmxpbmsgZmxpbms7Cj4gIAo+IC0JCVZHX0NMRUFSKGZsaW5rKTsK PiArCQltZW1jbGVhcihmbGluayk7Cj4gIAkJZmxpbmsuaGFuZGxlID0gYm9fZ2VtLT5nZW1faGFu ZGxlOwo+ICAKPiAgCQlwdGhyZWFkX211dGV4X2xvY2soJmJ1Zm1ncl9nZW0tPmxvY2spOwo+IEBA IC0zMDc4LDcgKzMwNzcsNyBAQCBzdGF0aWMgaW50Cj4gIGdldF9wY2lfZGV2aWNlX2lkKGRybV9p bnRlbF9idWZtZ3JfZ2VtICpidWZtZ3JfZ2VtKQo+ICB7Cj4gIAljaGFyICpkZXZpZF9vdmVycmlk ZTsKPiAtCWludCBkZXZpZDsKPiArCWludCBkZXZpZCA9IDA7Cj4gIAlpbnQgcmV0Owo+ICAJZHJt X2k5MTVfZ2V0cGFyYW1fdCBncDsKPiAgCj4gQEAgLTMwOTAsOCArMzA4OSw3IEBAIGdldF9wY2lf ZGV2aWNlX2lkKGRybV9pbnRlbF9idWZtZ3JfZ2VtICpidWZtZ3JfZ2VtKQo+ICAJCX0KPiAgCX0K PiAgCj4gLQlWR19DTEVBUihkZXZpZCk7Cj4gLQlWR19DTEVBUihncCk7Cj4gKwltZW1jbGVhcihn cCk7Cj4gIAlncC5wYXJhbSA9IEk5MTVfUEFSQU1fQ0hJUFNFVF9JRDsKPiAgCWdwLnZhbHVlID0g JmRldmlkOwo+ICAJcmV0ID0gZHJtSW9jdGwoYnVmbWdyX2dlbS0+ZmQsIERSTV9JT0NUTF9JOTE1 X0dFVFBBUkFNLCAmZ3ApOwo+IEBAIC0zMjA0LDcgKzMyMDIsNyBAQCBkcm1faW50ZWxfZ2VtX2Nv bnRleHRfY3JlYXRlKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncikKPiAgCWlmICghY29udGV4dCkK PiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4gLQlWR19DTEVBUihjcmVhdGUpOwo+ICsJbWVtY2xlYXIo Y3JlYXRlKTsKPiAgCXJldCA9IGRybUlvY3RsKGJ1Zm1ncl9nZW0tPmZkLCBEUk1fSU9DVExfSTkx NV9HRU1fQ09OVEVYVF9DUkVBVEUsICZjcmVhdGUpOwo+ICAJaWYgKHJldCAhPSAwKSB7Cj4gIAkJ REJHKCJEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUgZmFpbGVkOiAlc1xuIiwKPiBA QCAtMzIyOSw3ICszMjI3LDcgQEAgZHJtX2ludGVsX2dlbV9jb250ZXh0X2Rlc3Ryb3koZHJtX2lu dGVsX2NvbnRleHQgKmN0eCkKPiAgCWlmIChjdHggPT0gTlVMTCkKPiAgCQlyZXR1cm47Cj4gIAo+ IC0JVkdfQ0xFQVIoZGVzdHJveSk7Cj4gKwltZW1jbGVhcihkZXN0cm95KTsKPiAgCj4gIAlidWZt Z3JfZ2VtID0gKGRybV9pbnRlbF9idWZtZ3JfZ2VtICopY3R4LT5idWZtZ3I7Cj4gIAlkZXN0cm95 LmN0eF9pZCA9IGN0eC0+Y3R4X2lkOwo+IEBAIC0zMjU1LDcgKzMyNTMsNyBAQCBkcm1faW50ZWxf Z2V0X3Jlc2V0X3N0YXRzKGRybV9pbnRlbF9jb250ZXh0ICpjdHgsCj4gIAlpZiAoY3R4ID09IE5V TEwpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0JbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9m KHN0YXRzKSk7Cj4gKwltZW1jbGVhcihzdGF0cyk7Cj4gIAo+ICAJYnVmbWdyX2dlbSA9IChkcm1f aW50ZWxfYnVmbWdyX2dlbSAqKWN0eC0+YnVmbWdyOwo+ICAJc3RhdHMuY3R4X2lkID0gY3R4LT5j dHhfaWQ7Cj4gQEAgLTMyODUsNyArMzI4Myw3IEBAIGRybV9pbnRlbF9yZWdfcmVhZChkcm1faW50 ZWxfYnVmbWdyICpidWZtZ3IsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcmVnX3JlYWQgcmVnX3JlYWQ7 Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCVZHX0NMRUFSKHJlZ19yZWFkKTsKPiArCW1lbWNsZWFyKHJl Z19yZWFkKTsKPiAgCXJlZ19yZWFkLm9mZnNldCA9IG9mZnNldDsKPiAgCj4gIAlyZXQgPSBkcm1J b2N0bChidWZtZ3JfZ2VtLT5mZCwgRFJNX0lPQ1RMX0k5MTVfUkVHX1JFQUQsICZyZWdfcmVhZCk7 Cj4gQEAgLTMzOTAsNyArMzM4OCw3IEBAIGhhc191c2VycHRyKGRybV9pbnRlbF9idWZtZ3JfZ2Vt ICpidWZtZ3JfZ2VtKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCX0KPiAgCj4gLQltZW1zZXQoJnVz ZXJwdHIsIDAsIHNpemVvZih1c2VycHRyKSk7Cj4gKwltZW1jbGVhcih1c2VycHRyKTsKPiAgCXVz ZXJwdHIudXNlcl9wdHIgPSAoX191NjQpKHVuc2lnbmVkIGxvbmcpcHRyOwo+ICAJdXNlcnB0ci51 c2VyX3NpemUgPSBwZ3N6Owo+ICAKPiBAQCAtMzQwNSw2ICszNDAzLDcgQEAgcmV0cnk6Cj4gIAkJ cmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiArCW1lbWNsZWFyKGNsb3NlX2JvKTsKPiAgCWNsb3Nl X2JvLmhhbmRsZSA9IHVzZXJwdHIuaGFuZGxlOwo+ICAJcmV0ID0gZHJtSW9jdGwoYnVmbWdyX2dl bS0+ZmQsIERSTV9JT0NUTF9HRU1fQ0xPU0UsICZjbG9zZV9ibyk7Cj4gIAlmcmVlKHB0cik7Cj4g QEAgLTM0NTEsNiArMzQ1MCw3IEBAIGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoaW50IGZkLCBp bnQgYmF0Y2hfc2l6ZSkKPiAgCQlnb3RvIGV4aXQ7Cj4gIAl9Cj4gIAo+ICsJbWVtY2xlYXIoYXBl cnR1cmUpOwo+ICAJcmV0ID0gZHJtSW9jdGwoYnVmbWdyX2dlbS0+ZmQsCj4gIAkJICAgICAgIERS TV9JT0NUTF9JOTE1X0dFTV9HRVRfQVBFUlRVUkUsCj4gIAkJICAgICAgICZhcGVydHVyZSk7Cj4g QEAgLTM1MDAsNyArMzUwMCw3IEBAIGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoaW50IGZkLCBp bnQgYmF0Y2hfc2l6ZSkKPiAgCQlidWZtZ3JfZ2VtLT5ndHRfc2l6ZSAtPSAyNTYqMTAyNCoxMDI0 Owo+ICAJfQo+ICAKPiAtCVZHX0NMRUFSKGdwKTsKPiArCW1lbWNsZWFyKGdwKTsKPiAgCWdwLnZh bHVlID0gJnRtcDsKPiAgCj4gIAlncC5wYXJhbSA9IEk5MTVfUEFSQU1fSEFTX0VYRUNCVUYyOwo+ IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK