Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757261AbYFZItv (ORCPT ); Thu, 26 Jun 2008 04:49:51 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753849AbYFZItm (ORCPT ); Thu, 26 Jun 2008 04:49:42 -0400 Received: from twinlark.arctic.org ([208.69.40.136]:33764 "EHLO twinlark.arctic.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752712AbYFZItk (ORCPT ); Thu, 26 Jun 2008 04:49:40 -0400 Message-ID: <48635823.2080002@kernel.org> Date: Thu, 26 Jun 2008 01:49:39 -0700 From: "Andrew G. Morgan" User-Agent: Thunderbird 2.0.0.14 (X11/20080421) MIME-Version: 1.0 To: Andrew Morton CC: David Howells , "Serge E. Hallyn" , lkml , Linux Security Modules List Subject: [PATCH 3/4] security: filesystem capabilities refactor kernel code X-Enigmail-Version: 0.95.6 Content-Type: multipart/mixed; boundary="------------070907060800020401070606" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 17620 Lines: 258 This is a multi-part message in MIME format. --------------070907060800020401070606 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 More optimal kernel locking for filesystem capability support. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iD8DBQFIY1gi+bHCR3gb8jsRAuqYAJ0c5Vw3WVHJFcSBZoHGhAEDR1RSDQCfUSgy m6bfMSlHRkEIulIxqp96t3E= =Xs/z -----END PGP SIGNATURE----- --------------070907060800020401070606 Content-Type: text/plain; name="0003-Refactor-filesystem-capability-support-in-main-kerne.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename*0="0003-Refactor-filesystem-capability-support-in-main-kerne.pa"; filename*1="tch" RnJvbSA3M2JiNWEwMzllOTViOWQxNTBjNzRmZWFmNTgyNGExZjc2MWZiNzE4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRy4gTW9yZ2FuIDxtb3JnYW5Aa2VybmVs Lm9yZz4KRGF0ZTogV2VkLCAyNSBKdW4gMjAwOCAyMzozMDo0NCAtMDcwMApTdWJqZWN0OiBb UEFUQ0hdIFJlZmFjdG9yIGZpbGVzeXN0ZW0gY2FwYWJpbGl0eSBzdXBwb3J0IGluIG1haW4g a2VybmVsLgoKVG8gZGF0ZSwgd2UndmUgdHJpZWQgaGFyZCB0byBjb25maW5lIGZpbGVzeXN0 ZW0gc3VwcG9ydCBmb3IgY2FwYWJpbGl0aWVzCnRvIHRoZSBzZWN1cml0eSBtb2R1bGVzLiBU aGlzIGhhcyBsZWZ0IGEgbG90IG9mIHRoZSBjb2RlIGluCmtlcm5lbC9jYXBhYmlsaXR5LmMg aW4gYSBzdGF0ZSB3aGVyZSBpdCBsb29rcyBsaWtlIGl0IHN1cHBvcnRzIHNvbWV0aGluZwp0 aGF0IGZpbGVzeXN0ZW0gc3VwcG9ydCBmb3IgY2FwYWJpbGl0aWVzIGFjdHVhbGx5IHN1cHBy ZXNzZXMgd2hlbiB0aGUKTFNNIHNlY3VyaXR5L2NvbW1tb25jYXAuYyBjb2RlIHJ1bnMuIFdo YXQgaXMgbGVmdCBpcyBhIGxvdCBvZiBjb2RlIHRoYXQKdXNlcyBzdWItb3B0aW1hbCBsb2Nr aW5nIGluIHRoZSBtYWluIGtlcm5lbC4gV2l0aCB0aGlzIGNoYW5nZSB3ZSByZWZhY3Rvcgp0 aGUgbWFpbiBrZXJuZWwgY29kZSBhbmQgbWFrZSBpdCBleHBsaWNpdCB3aGljaCBsb2NrcyBh cmUgbmVlZGVkIGFuZCB0aGF0CnRoZSBvbmx5IHJlbWFpbmluZyBrZXJuZWwgcmFjZXMgaW4g dGhpcyBhcmVhIGFyZSBhc3NvY2lhdGVkIHdpdGgKbm9uLWZpbGVzeXN0ZW0gY2FwYWJpbGl0 eSBjb2RlLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IEcuIE1vcmdhbiA8bW9yZ2FuQGtlcm5l bC5vcmc+Ci0tLQoga2VybmVsL2NhcGFiaWxpdHkuYyB8ICAzMzggKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGVzIGNoYW5nZWQs IDIyMSBpbnNlcnRpb25zKCspLCAxMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEva2Vy bmVsL2NhcGFiaWxpdHkuYyBiL2tlcm5lbC9jYXBhYmlsaXR5LmMKaW5kZXggOTAxZTBmZC4u MDEwMWU4NCAxMDA2NDQKLS0tIGEva2VybmVsL2NhcGFiaWxpdHkuYworKysgYi9rZXJuZWwv Y2FwYWJpbGl0eS5jCkBAIC0xMTUsMTEgKzExNSwyMDggQEAgc3RhdGljIGludCBjYXBfdmFs aWRhdGVfbWFnaWMoY2FwX3VzZXJfaGVhZGVyX3QgaGVhZGVyLCB1bnNpZ25lZCAqdG9jb3B5 KQogCXJldHVybiAwOwogfQogCisjaWZuZGVmIENPTkZJR19TRUNVUklUWV9GSUxFX0NBUEFC SUxJVElFUworCisvKgorICogV2l0aG91dCBmaWxlc3lzdGVtIGNhcGFiaWxpdHkgc3VwcG9y dCwgd2Ugbm9taW5hbGx5IHN1cHBvcnQgb25lIHByb2Nlc3MKKyAqIHNldHRpbmcgdGhlIGNh cGFiaWxpdGllcyBvZiBhbm90aGVyCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGNhcF9nZXRf dGFyZ2V0X3BpZChwaWRfdCBwaWQsIGtlcm5lbF9jYXBfdCAqcEVwLAorCQkJCSAgICAga2Vy bmVsX2NhcF90ICpwSXAsIGtlcm5lbF9jYXBfdCAqcFBwKQoreworCXN0cnVjdCB0YXNrX3N0 cnVjdCAqdGFyZ2V0OworCWludCByZXQ7CisKKwlzcGluX2xvY2soJnRhc2tfY2FwYWJpbGl0 eV9sb2NrKTsKKwlyZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOworCisJaWYgKHBpZCAmJiBw aWQgIT0gdGFza19waWRfdm5yKGN1cnJlbnQpKSB7CisJCXRhcmdldCA9IGZpbmRfdGFza19i eV92cGlkKHBpZCk7CisJCWlmICghdGFyZ2V0KSB7CisJCQlyZXQgPSAtRVNSQ0g7CisJCQln b3RvIG91dDsKKwkJfQorCX0gZWxzZQorCQl0YXJnZXQgPSBjdXJyZW50OworCisJcmV0ID0g c2VjdXJpdHlfY2FwZ2V0KHRhcmdldCwgcEVwLCBwSXAsIHBQcCk7CisKK291dDoKKwlyZWFk X3VubG9jaygmdGFza2xpc3RfbG9jayk7CisJc3Bpbl91bmxvY2soJnRhc2tfY2FwYWJpbGl0 eV9sb2NrKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBjYXBfc2V0X3BnIC0gc2V0 IGNhcGFiaWxpdGllcyBmb3IgYWxsIHByb2Nlc3NlcyBpbiBhIGdpdmVuIHByb2Nlc3MKKyAq IGdyb3VwLiAgV2UgY2FsbCB0aGlzIGhvbGRpbmcgdGFza19jYXBhYmlsaXR5X2xvY2sgYW5k IHRhc2tsaXN0X2xvY2suCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGNhcF9zZXRfcGcoaW50 IHBncnBfbnIsIGtlcm5lbF9jYXBfdCAqZWZmZWN0aXZlLAorCQkJICAgICBrZXJuZWxfY2Fw X3QgKmluaGVyaXRhYmxlLAorCQkJICAgICBrZXJuZWxfY2FwX3QgKnBlcm1pdHRlZCkKK3sK KwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKmcsICp0YXJnZXQ7CisJaW50IHJldCA9IC1FUEVSTTsK KwlpbnQgZm91bmQgPSAwOworCXN0cnVjdCBwaWQgKnBncnA7CisKKwlzcGluX2xvY2soJnRh c2tfY2FwYWJpbGl0eV9sb2NrKTsKKwlyZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOworCisJ cGdycCA9IGZpbmRfdnBpZChwZ3JwX25yKTsKKwlkb19lYWNoX3BpZF90YXNrKHBncnAsIFBJ RFRZUEVfUEdJRCwgZykgeworCQl0YXJnZXQgPSBnOworCQl3aGlsZV9lYWNoX3RocmVhZChn LCB0YXJnZXQpIHsKKwkJCWlmICghc2VjdXJpdHlfY2Fwc2V0X2NoZWNrKHRhcmdldCwgZWZm ZWN0aXZlLAorCQkJCQkJICAgaW5oZXJpdGFibGUsIHBlcm1pdHRlZCkpIHsKKwkJCQlzZWN1 cml0eV9jYXBzZXRfc2V0KHRhcmdldCwgZWZmZWN0aXZlLAorCQkJCQkJICAgIGluaGVyaXRh YmxlLCBwZXJtaXR0ZWQpOworCQkJCXJldCA9IDA7CisJCQl9CisJCQlmb3VuZCA9IDE7CisJ CX0KKwl9IHdoaWxlX2VhY2hfcGlkX3Rhc2socGdycCwgUElEVFlQRV9QR0lELCBnKTsKKwor CXJlYWRfdW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKKwlzcGluX3VubG9jaygmdGFza19jYXBh YmlsaXR5X2xvY2spOworCisJaWYgKCFmb3VuZCkKKwkJcmV0ID0gMDsKKwlyZXR1cm4gcmV0 OworfQorCiAvKgotICogRm9yIHN5c19nZXRwcm9jY2FwKCkgYW5kIHN5c19zZXRwcm9jY2Fw KCksIGFueSBvZiB0aGUgdGhyZWUKLSAqIGNhcGFiaWxpdHkgc2V0IHBvaW50ZXJzIG1heSBi ZSBOVUxMIC0tIGluZGljYXRpbmcgdGhhdCB0aGF0IHNldCBpcwotICogdW5pbnRlcmVzdGlu ZyBhbmQvb3Igbm90IHRvIGJlIGNoYW5nZWQuCisgKiBjYXBfc2V0X2FsbCAtIHNldCBjYXBh YmlsaXRpZXMgZm9yIGFsbCBwcm9jZXNzZXMgb3RoZXIgdGhhbiBpbml0CisgKiBhbmQgc2Vs Zi4gIFdlIGNhbGwgdGhpcyBob2xkaW5nIHRhc2tfY2FwYWJpbGl0eV9sb2NrIGFuZCB0YXNr bGlzdF9sb2NrLgogICovCitzdGF0aWMgaW5saW5lIGludCBjYXBfc2V0X2FsbChrZXJuZWxf Y2FwX3QgKmVmZmVjdGl2ZSwKKwkJCSAgICAgIGtlcm5lbF9jYXBfdCAqaW5oZXJpdGFibGUs CisJCQkgICAgICBrZXJuZWxfY2FwX3QgKnBlcm1pdHRlZCkKK3sKKwlzdHJ1Y3QgdGFza19z dHJ1Y3QgKmcsICp0YXJnZXQ7CisJaW50IHJldCA9IC1FUEVSTTsKKwlpbnQgZm91bmQgPSAw OworCisJc3Bpbl9sb2NrKCZ0YXNrX2NhcGFiaWxpdHlfbG9jayk7CisJcmVhZF9sb2NrKCZ0 YXNrbGlzdF9sb2NrKTsKKworCWRvX2VhY2hfdGhyZWFkKGcsIHRhcmdldCkgeworCQlpZiAo dGFyZ2V0ID09IGN1cnJlbnQKKwkJICAgIHx8IGlzX2NvbnRhaW5lcl9pbml0KHRhcmdldC0+ Z3JvdXBfbGVhZGVyKSkKKwkJCWNvbnRpbnVlOworCQlmb3VuZCA9IDE7CisJCWlmIChzZWN1 cml0eV9jYXBzZXRfY2hlY2sodGFyZ2V0LCBlZmZlY3RpdmUsIGluaGVyaXRhYmxlLAorCQkJ CQkgIHBlcm1pdHRlZCkpCisJCQljb250aW51ZTsKKwkJcmV0ID0gMDsKKwkJc2VjdXJpdHlf Y2Fwc2V0X3NldCh0YXJnZXQsIGVmZmVjdGl2ZSwgaW5oZXJpdGFibGUsIHBlcm1pdHRlZCk7 CisJfSB3aGlsZV9lYWNoX3RocmVhZChnLCB0YXJnZXQpOworCisJcmVhZF91bmxvY2soJnRh c2tsaXN0X2xvY2spOworCXNwaW5fdW5sb2NrKCZ0YXNrX2NhcGFiaWxpdHlfbG9jayk7CisK KwlpZiAoIWZvdW5kKQorCQlyZXQgPSAwOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAq IEdpdmVuIHRoZSB0YXJnZXQgcGlkIGRvZXMgbm90IHJlZmVyIHRvIHRoZSBjdXJyZW50IHBy b2Nlc3Mgd2UKKyAqIG5lZWQgbW9yZSBlbGFib3JhdGUgc3VwcG9ydC4uLiAoVGhpcyBzdXBw b3J0IGlzIG5vdCBwcmVzZW50IHdoZW4KKyAqIGZpbGVzeXN0ZW0gY2FwYWJpbGl0aWVzIGFy ZSBjb25maWd1cmVkLikKKyAqLworc3RhdGljIGlubGluZSBpbnQgZG9fc3lzX2NhcHNldF9v dGhlcl90YXNrcyhwaWRfdCBwaWQsIGtlcm5lbF9jYXBfdCAqZWZmZWN0aXZlLAorCQkJCQkg ICAga2VybmVsX2NhcF90ICppbmhlcml0YWJsZSwKKwkJCQkJICAgIGtlcm5lbF9jYXBfdCAq cGVybWl0dGVkKQoreworCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0OworCWludCByZXQ7 CisKKwlpZiAoIWNhcGFibGUoQ0FQX1NFVFBDQVApKQorCQlyZXR1cm4gLUVQRVJNOworCisJ aWYgKHBpZCA9PSAtMSkJICAgICAgICAgIC8qIGFsbCBwcm9jcyBvdGhlciB0aGFuIGN1cnJl bnQgYW5kIGluaXQgKi8KKwkJcmV0dXJuIGNhcF9zZXRfYWxsKGVmZmVjdGl2ZSwgaW5oZXJp dGFibGUsIHBlcm1pdHRlZCk7CisKKwllbHNlIGlmIChwaWQgPCAwKSAgICAgICAgICAgICAg ICAgICAgLyogYWxsIHByb2NzIGluIHByb2Nlc3MgZ3JvdXAgKi8KKwkJcmV0dXJuIGNhcF9z ZXRfcGcoLXBpZCwgZWZmZWN0aXZlLCBpbmhlcml0YWJsZSwgcGVybWl0dGVkKTsKKworCS8q IHRhcmdldCAhPSBjdXJyZW50ICovCisJc3Bpbl9sb2NrKCZ0YXNrX2NhcGFiaWxpdHlfbG9j ayk7CisJcmVhZF9sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKKworCXRhcmdldCA9IGZpbmRfdGFz a19ieV92cGlkKHBpZCk7CisJaWYgKCF0YXJnZXQpCisJCXJldCA9IC1FU1JDSDsKKwllbHNl IHsKKwkJcmV0ID0gc2VjdXJpdHlfY2Fwc2V0X2NoZWNrKHRhcmdldCwgZWZmZWN0aXZlLCBp bmhlcml0YWJsZSwKKwkJCQkJICAgIHBlcm1pdHRlZCk7CisKKwkJLyogaGF2aW5nIHZlcmlm aWVkIHRoYXQgdGhlIHByb3Bvc2VkIGNoYW5nZXMgYXJlIGxlZ2FsLAorCQkgICB3ZSBub3cg cHV0IHRoZW0gaW50byBlZmZlY3QuICovCisJCWlmICghcmV0KQorCQkJc2VjdXJpdHlfY2Fw c2V0X3NldCh0YXJnZXQsIGVmZmVjdGl2ZSwgaW5oZXJpdGFibGUsCisJCQkJCSAgICBwZXJt aXR0ZWQpOworCX0KKworCXJlYWRfdW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKKwlzcGluX3Vu bG9jaygmdGFza19jYXBhYmlsaXR5X2xvY2spOworCisJcmV0dXJuIHJldDsKK30KKworI2Vs c2UgLyogaWUuLCBkZWYgQ09ORklHX1NFQ1VSSVRZX0ZJTEVfQ0FQQUJJTElUSUVTICovCisK Ky8qCisgKiBJZiB3ZSBoYXZlIGNvbmZpZ3VyZWQgd2l0aCBmaWxlc3lzdGVtIGNhcGFiaWxp dHkgc3VwcG9ydCwgdGhlbiB0aGUKKyAqIG9ubHkgdGhpbmcgdGhhdCBjYW4gY2hhbmdlIHRo ZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcworICogaXMgdGhlIGN1cnJl bnQgcHJvY2Vzcy4gQXMgc3VjaCwgd2UgY2FuJ3QgYmUgaW4gdGhpcyBjb2RlIGF0IHRoZQor ICogc2FtZSB0aW1lIGFzIHdlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBzZXR0aW5nIGNhcGFi aWxpdGllcyBpbiB0aGlzCisgKiBwcm9jZXNzLiBUaGUgbmV0IHJlc3VsdCBpcyB0aGF0IHdl IGNhbiBsaW1pdCBvdXIgdXNlIG9mIGxvY2tzIHRvCisgKiB3aGVuIHdlIGFyZSByZWFkaW5n IHRoZSBjYXBzIG9mIGFub3RoZXIgcHJvY2Vzcy4KKyAqLworc3RhdGljIGlubGluZSBpbnQg Y2FwX2dldF90YXJnZXRfcGlkKHBpZF90IHBpZCwga2VybmVsX2NhcF90ICpwRXAsCisJCQkJ ICAgICBrZXJuZWxfY2FwX3QgKnBJcCwga2VybmVsX2NhcF90ICpwUHApCit7CisJaW50IHJl dDsKKworCWlmIChwaWQgJiYgKHBpZCAhPSB0YXNrX3BpZF92bnIoY3VycmVudCkpKSB7CisJ CXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0OworCisJCXNwaW5fbG9jaygmdGFza19jYXBh YmlsaXR5X2xvY2spOworCQlyZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOworCisJCXRhcmdl dCA9IGZpbmRfdGFza19ieV92cGlkKHBpZCk7CisJCWlmICghdGFyZ2V0KQorCQkJcmV0ID0g LUVTUkNIOworCQllbHNlCisJCQlyZXQgPSBzZWN1cml0eV9jYXBnZXQodGFyZ2V0LCBwRXAs IHBJcCwgcFBwKTsKKworCQlyZWFkX3VubG9jaygmdGFza2xpc3RfbG9jayk7CisJCXNwaW5f dW5sb2NrKCZ0YXNrX2NhcGFiaWxpdHlfbG9jayk7CisJfSBlbHNlCisJCXJldCA9IHNlY3Vy aXR5X2NhcGdldChjdXJyZW50LCBwRXAsIHBJcCwgcFBwKTsKKworCXJldHVybiByZXQ7Cit9 CisKKy8qCisgKiBXaXRoIGZpbGVzeXN0ZW0gY2FwYWJpbGl0eSBzdXBwb3J0IGNvbmZpZ3Vy ZWQsIHRoZSBrZXJuZWwgZG9lcyBub3QKKyAqIHBlcm1pdCB0aGUgY2hhbmdpbmcgb2YgY2Fw YWJpbGl0aWVzIGluIG9uZSBwcm9jZXNzIGJ5IGFub3RoZXIKKyAqIHByb2Nlc3MuIChDQVBf U0VUUENBUCBoYXMgbXVjaCBsZXNzIGJyb2FkIHNlbWFudGljcyB3aGVuIGNvbmZpZ3VyZWQK KyAqIHRoaXMgd2F5LikKKyAqLworc3RhdGljIGlubGluZSBpbnQgZG9fc3lzX2NhcHNldF9v dGhlcl90YXNrcyhwaWRfdCBwaWQsCisJCQkJCSAgICBrZXJuZWxfY2FwX3QgKmVmZmVjdGl2 ZSwKKwkJCQkJICAgIGtlcm5lbF9jYXBfdCAqaW5oZXJpdGFibGUsCisJCQkJCSAgICBrZXJu ZWxfY2FwX3QgKnBlcm1pdHRlZCkKK3sKKwlyZXR1cm4gLUVQRVJNOworfQorCisjZW5kaWYg LyogaWUuLCBuZGVmIENPTkZJR19TRUNVUklUWV9GSUxFX0NBUEFCSUxJVElFUyAqLwogCiAv KgogICogQXRvbWljYWxseSBtb2RpZnkgdGhlIGVmZmVjdGl2ZSBjYXBhYmlsaXRpZXMgcmV0 dXJuaW5nIHRoZSBvcmlnaW5hbApAQCAtMTU1LDcgKzM1Miw2IEBAIGFzbWxpbmthZ2UgbG9u ZyBzeXNfY2FwZ2V0KGNhcF91c2VyX2hlYWRlcl90IGhlYWRlciwgY2FwX3VzZXJfZGF0YV90 IGRhdGFwdHIpCiB7CiAJaW50IHJldCA9IDA7CiAJcGlkX3QgcGlkOwotCXN0cnVjdCB0YXNr X3N0cnVjdCAqdGFyZ2V0OwogCXVuc2lnbmVkIHRvY29weTsKIAlrZXJuZWxfY2FwX3QgcEUs IHBJLCBwUDsKIApAQCAtMTY5LDIzICszNjUsNyBAQCBhc21saW5rYWdlIGxvbmcgc3lzX2Nh cGdldChjYXBfdXNlcl9oZWFkZXJfdCBoZWFkZXIsIGNhcF91c2VyX2RhdGFfdCBkYXRhcHRy KQogCWlmIChwaWQgPCAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXNwaW5fbG9jaygmdGFz a19jYXBhYmlsaXR5X2xvY2spOwotCXJlYWRfbG9jaygmdGFza2xpc3RfbG9jayk7Ci0KLQlp ZiAocGlkICYmIHBpZCAhPSB0YXNrX3BpZF92bnIoY3VycmVudCkpIHsKLQkJdGFyZ2V0ID0g ZmluZF90YXNrX2J5X3ZwaWQocGlkKTsKLQkJaWYgKCF0YXJnZXQpIHsKLQkJCXJldCA9IC1F U1JDSDsKLQkJCWdvdG8gb3V0OwotCQl9Ci0JfSBlbHNlCi0JCXRhcmdldCA9IGN1cnJlbnQ7 Ci0KLQlyZXQgPSBzZWN1cml0eV9jYXBnZXQodGFyZ2V0LCAmcEUsICZwSSwgJnBQKTsKLQot b3V0OgotCXJlYWRfdW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKLQlzcGluX3VubG9jaygmdGFz a19jYXBhYmlsaXR5X2xvY2spOworCXJldCA9IGNhcF9nZXRfdGFyZ2V0X3BpZChwaWQsICZw RSwgJnBJLCAmcFApOwogCiAJaWYgKCFyZXQpIHsKIAkJc3RydWN0IF9fdXNlcl9jYXBfZGF0 YV9zdHJ1Y3Qga2RhdGFbX0tFUk5FTF9DQVBBQklMSVRZX1UzMlNdOwpAQCAtMjE2LDcgKzM5 Niw2IEBAIG91dDoKIAkJICogYmVmb3JlIG1vZGlmaWNhdGlvbiBpcyBhdHRlbXB0ZWQgYW5k IHRoZSBhcHBsaWNhdGlvbgogCQkgKiBmYWlscy4KIAkJICovCi0KIAkJaWYgKGNvcHlfdG9f dXNlcihkYXRhcHRyLCBrZGF0YSwgdG9jb3B5CiAJCQkJICogc2l6ZW9mKHN0cnVjdCBfX3Vz ZXJfY2FwX2RhdGFfc3RydWN0KSkpIHsKIAkJCXJldHVybiAtRUZBVUxUOwpAQCAtMjI2LDcw ICs0MDUsOCBAQCBvdXQ6CiAJcmV0dXJuIHJldDsKIH0KIAotLyoKLSAqIGNhcF9zZXRfcGcg LSBzZXQgY2FwYWJpbGl0aWVzIGZvciBhbGwgcHJvY2Vzc2VzIGluIGEgZ2l2ZW4gcHJvY2Vz cwotICogZ3JvdXAuICBXZSBjYWxsIHRoaXMgaG9sZGluZyB0YXNrX2NhcGFiaWxpdHlfbG9j ayBhbmQgdGFza2xpc3RfbG9jay4KLSAqLwotc3RhdGljIGlubGluZSBpbnQgY2FwX3NldF9w ZyhpbnQgcGdycF9uciwga2VybmVsX2NhcF90ICplZmZlY3RpdmUsCi0JCQkgICAgICBrZXJu ZWxfY2FwX3QgKmluaGVyaXRhYmxlLAotCQkJICAgICAga2VybmVsX2NhcF90ICpwZXJtaXR0 ZWQpCi17Ci0Jc3RydWN0IHRhc2tfc3RydWN0ICpnLCAqdGFyZ2V0OwotCWludCByZXQgPSAt RVBFUk07Ci0JaW50IGZvdW5kID0gMDsKLQlzdHJ1Y3QgcGlkICpwZ3JwOwotCi0JcGdycCA9 IGZpbmRfdnBpZChwZ3JwX25yKTsKLQlkb19lYWNoX3BpZF90YXNrKHBncnAsIFBJRFRZUEVf UEdJRCwgZykgewotCQl0YXJnZXQgPSBnOwotCQl3aGlsZV9lYWNoX3RocmVhZChnLCB0YXJn ZXQpIHsKLQkJCWlmICghc2VjdXJpdHlfY2Fwc2V0X2NoZWNrKHRhcmdldCwgZWZmZWN0aXZl LAotCQkJCQkJCWluaGVyaXRhYmxlLAotCQkJCQkJCXBlcm1pdHRlZCkpIHsKLQkJCQlzZWN1 cml0eV9jYXBzZXRfc2V0KHRhcmdldCwgZWZmZWN0aXZlLAotCQkJCQkJCWluaGVyaXRhYmxl LAotCQkJCQkJCXBlcm1pdHRlZCk7Ci0JCQkJcmV0ID0gMDsKLQkJCX0KLQkJCWZvdW5kID0g MTsKLQkJfQotCX0gd2hpbGVfZWFjaF9waWRfdGFzayhwZ3JwLCBQSURUWVBFX1BHSUQsIGcp OwotCi0JaWYgKCFmb3VuZCkKLQkJcmV0ID0gMDsKLQlyZXR1cm4gcmV0OwotfQotCi0vKgot ICogY2FwX3NldF9hbGwgLSBzZXQgY2FwYWJpbGl0aWVzIGZvciBhbGwgcHJvY2Vzc2VzIG90 aGVyIHRoYW4gaW5pdAotICogYW5kIHNlbGYuICBXZSBjYWxsIHRoaXMgaG9sZGluZyB0YXNr X2NhcGFiaWxpdHlfbG9jayBhbmQgdGFza2xpc3RfbG9jay4KLSAqLwotc3RhdGljIGlubGlu ZSBpbnQgY2FwX3NldF9hbGwoa2VybmVsX2NhcF90ICplZmZlY3RpdmUsCi0JCQkgICAgICAg a2VybmVsX2NhcF90ICppbmhlcml0YWJsZSwKLQkJCSAgICAgICBrZXJuZWxfY2FwX3QgKnBl cm1pdHRlZCkKLXsKLSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpnLCAqdGFyZ2V0OwotICAg ICBpbnQgcmV0ID0gLUVQRVJNOwotICAgICBpbnQgZm91bmQgPSAwOwotCi0gICAgIGRvX2Vh Y2hfdGhyZWFkKGcsIHRhcmdldCkgewotICAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gY3Vy cmVudCB8fCBpc19jb250YWluZXJfaW5pdCh0YXJnZXQtPmdyb3VwX2xlYWRlcikpCi0gICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICBmb3VuZCA9IDE7Ci0J ICAgICBpZiAoc2VjdXJpdHlfY2Fwc2V0X2NoZWNrKHRhcmdldCwgZWZmZWN0aXZlLCBpbmhl cml0YWJsZSwKLQkJCQkJCXBlcm1pdHRlZCkpCi0JCSAgICAgY29udGludWU7Ci0JICAgICBy ZXQgPSAwOwotCSAgICAgc2VjdXJpdHlfY2Fwc2V0X3NldCh0YXJnZXQsIGVmZmVjdGl2ZSwg aW5oZXJpdGFibGUsIHBlcm1pdHRlZCk7Ci0gICAgIH0gd2hpbGVfZWFjaF90aHJlYWQoZywg dGFyZ2V0KTsKLQotICAgICBpZiAoIWZvdW5kKQotCSAgICAgcmV0ID0gMDsKLSAgICAgcmV0 dXJuIHJldDsKLX0KLQogLyoqCi0gKiBzeXNfY2Fwc2V0IC0gc2V0IGNhcGFiaWxpdGllcyBm b3IgYSBwcm9jZXNzIG9yIGEgZ3JvdXAgb2YgcHJvY2Vzc2VzCisgKiBzeXNfY2Fwc2V0IC0g c2V0IGNhcGFiaWxpdGllcyBmb3IgYSBwcm9jZXNzIG9yICgqKSBhIGdyb3VwIG9mIHByb2Nl c3NlcwogICogQGhlYWRlcjogcG9pbnRlciB0byBzdHJ1Y3QgdGhhdCBjb250YWlucyBjYXBh YmlsaXR5IHZlcnNpb24gYW5kCiAgKgl0YXJnZXQgcGlkIGRhdGEKICAqIEBkYXRhOiBwb2lu dGVyIHRvIHN0cnVjdCB0aGF0IGNvbnRhaW5zIHRoZSBlZmZlY3RpdmUsIHBlcm1pdHRlZCwK QEAgLTMxMyw3ICs0MzAsNiBAQCBhc21saW5rYWdlIGxvbmcgc3lzX2NhcHNldChjYXBfdXNl cl9oZWFkZXJfdCBoZWFkZXIsIGNvbnN0IGNhcF91c2VyX2RhdGFfdCBkYXRhKQogCXN0cnVj dCBfX3VzZXJfY2FwX2RhdGFfc3RydWN0IGtkYXRhW19LRVJORUxfQ0FQQUJJTElUWV9VMzJT XTsKIAl1bnNpZ25lZCBpLCB0b2NvcHk7CiAJa2VybmVsX2NhcF90IGluaGVyaXRhYmxlLCBw ZXJtaXR0ZWQsIGVmZmVjdGl2ZTsKLQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhcmdldDsKIAlp bnQgcmV0OwogCXBpZF90IHBpZDsKIApAQCAtMzI0LDkgKzQ0MCw2IEBAIGFzbWxpbmthZ2Ug bG9uZyBzeXNfY2Fwc2V0KGNhcF91c2VyX2hlYWRlcl90IGhlYWRlciwgY29uc3QgY2FwX3Vz ZXJfZGF0YV90IGRhdGEpCiAJaWYgKGdldF91c2VyKHBpZCwgJmhlYWRlci0+cGlkKSkKIAkJ cmV0dXJuIC1FRkFVTFQ7CiAKLQlpZiAocGlkICYmIHBpZCAhPSB0YXNrX3BpZF92bnIoY3Vy cmVudCkgJiYgIWNhcGFibGUoQ0FQX1NFVFBDQVApKQotCQlyZXR1cm4gLUVQRVJNOwotCiAJ aWYgKGNvcHlfZnJvbV91c2VyKCZrZGF0YSwgZGF0YSwgdG9jb3B5CiAJCQkgICAqIHNpemVv ZihzdHJ1Y3QgX191c2VyX2NhcF9kYXRhX3N0cnVjdCkpKSB7CiAJCXJldHVybiAtRUZBVUxU OwpAQCAtMzQ0LDQwICs0NTcsMzEgQEAgYXNtbGlua2FnZSBsb25nIHN5c19jYXBzZXQoY2Fw X3VzZXJfaGVhZGVyX3QgaGVhZGVyLCBjb25zdCBjYXBfdXNlcl9kYXRhX3QgZGF0YSkKIAkJ aSsrOwogCX0KIAotCXNwaW5fbG9jaygmdGFza19jYXBhYmlsaXR5X2xvY2spOwotCXJlYWRf bG9jaygmdGFza2xpc3RfbG9jayk7Ci0KLQlpZiAocGlkID4gMCAmJiBwaWQgIT0gdGFza19w aWRfdm5yKGN1cnJlbnQpKSB7Ci0JCXRhcmdldCA9IGZpbmRfdGFza19ieV92cGlkKHBpZCk7 Ci0JCWlmICghdGFyZ2V0KSB7Ci0JCQlyZXQgPSAtRVNSQ0g7Ci0JCQlnb3RvIG91dDsKLQkJ fQotCX0gZWxzZQotCQl0YXJnZXQgPSBjdXJyZW50OwotCi0JcmV0ID0gMDsKLQotCS8qIGhh dmluZyB2ZXJpZmllZCB0aGF0IHRoZSBwcm9wb3NlZCBjaGFuZ2VzIGFyZSBsZWdhbCwKLQkg ICB3ZSBub3cgcHV0IHRoZW0gaW50byBlZmZlY3QuICovCi0JaWYgKHBpZCA8IDApIHsKLQkJ aWYgKHBpZCA9PSAtMSkJLyogYWxsIHByb2NzIG90aGVyIHRoYW4gY3VycmVudCBhbmQgaW5p dCAqLwotCQkJcmV0ID0gY2FwX3NldF9hbGwoJmVmZmVjdGl2ZSwgJmluaGVyaXRhYmxlLCAm cGVybWl0dGVkKTsKKwlpZiAocGlkICYmIChwaWQgIT0gdGFza19waWRfdm5yKGN1cnJlbnQp KSkKKwkJcmV0ID0gZG9fc3lzX2NhcHNldF9vdGhlcl90YXNrcyhwaWQsICZlZmZlY3RpdmUs ICZpbmhlcml0YWJsZSwKKwkJCQkJCSZwZXJtaXR0ZWQpOworCWVsc2UgeworCQkvKgorCQkg KiBUaGlzIGxvY2sgaXMgcmVxdWlyZWQgZXZlbiB3aGVuIGZpbGVzeXN0ZW0KKwkJICogY2Fw YWJpbGl0eSBzdXBwb3J0IGlzIGNvbmZpZ3VyZWQgLSBpdCBwcm90ZWN0cyB0aGUKKwkJICog c3lzX2NhcGdldCgpIGNhbGwgZnJvbSByZXR1cm5pbmcgaW5jb3JyZWN0IGRhdGEgaW4KKwkJ ICogdGhlIGNhc2UgdGhhdCB0aGUgdGFyZ2V0ZWQgcHJvY2VzcyBpcyBub3QgdGhlCisJCSAq IGN1cnJlbnQgb25lLgorCQkgKi8KKwkJc3Bpbl9sb2NrKCZ0YXNrX2NhcGFiaWxpdHlfbG9j ayk7CiAKLQkJZWxzZQkJLyogYWxsIHByb2NzIGluIHByb2Nlc3MgZ3JvdXAgKi8KLQkJCXJl dCA9IGNhcF9zZXRfcGcoLXBpZCwgJmVmZmVjdGl2ZSwgJmluaGVyaXRhYmxlLAotCQkJCQkg JnBlcm1pdHRlZCk7Ci0JfSBlbHNlIHsKLQkJcmV0ID0gc2VjdXJpdHlfY2Fwc2V0X2NoZWNr KHRhcmdldCwgJmVmZmVjdGl2ZSwgJmluaGVyaXRhYmxlLAorCQlyZXQgPSBzZWN1cml0eV9j YXBzZXRfY2hlY2soY3VycmVudCwgJmVmZmVjdGl2ZSwgJmluaGVyaXRhYmxlLAogCQkJCQkg ICAgJnBlcm1pdHRlZCk7CisJCS8qCisJCSAqIEhhdmluZyB2ZXJpZmllZCB0aGF0IHRoZSBw cm9wb3NlZCBjaGFuZ2VzIGFyZQorCQkgKiBsZWdhbCwgd2Ugbm93IHB1dCB0aGVtIGludG8g ZWZmZWN0LgorCQkgKi8KIAkJaWYgKCFyZXQpCi0JCQlzZWN1cml0eV9jYXBzZXRfc2V0KHRh cmdldCwgJmVmZmVjdGl2ZSwgJmluaGVyaXRhYmxlLAorCQkJc2VjdXJpdHlfY2Fwc2V0X3Nl dChjdXJyZW50LCAmZWZmZWN0aXZlLCAmaW5oZXJpdGFibGUsCiAJCQkJCSAgICAmcGVybWl0 dGVkKTsKKwkJc3Bpbl91bmxvY2soJnRhc2tfY2FwYWJpbGl0eV9sb2NrKTsKIAl9CiAKLW91 dDoKLQlyZWFkX3VubG9jaygmdGFza2xpc3RfbG9jayk7Ci0Jc3Bpbl91bmxvY2soJnRhc2tf Y2FwYWJpbGl0eV9sb2NrKTsKIAogCXJldHVybiByZXQ7CiB9Ci0tIAoxLjUuMy43Cgo= --------------070907060800020401070606-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/