Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261416AbVALUT4 (ORCPT ); Wed, 12 Jan 2005 15:19:56 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S261415AbVALUTD (ORCPT ); Wed, 12 Jan 2005 15:19:03 -0500 Received: from mailer.campus.mipt.ru ([194.85.82.4]:26277 "EHLO mailer.campus.mipt.ru") by vger.kernel.org with ESMTP id S261391AbVALUME (ORCPT ); Wed, 12 Jan 2005 15:12:04 -0500 Date: Wed, 12 Jan 2005 23:33:45 +0300 From: Evgeniy Polyakov To: Greg KH Cc: linux-kernel@vger.kernel.org Subject: Re: Kernel conector. Reincarnation #1. Message-ID: <20050112233345.6de409d0@zanzibar.2ka.mipt.ru> In-Reply-To: <20050112190319.GA10885@kroah.com> References: <1101286481.18807.66.camel@uganda> <1101287606.18807.75.camel@uganda> <20041124222857.GG3584@kroah.com> <1102504677.3363.55.camel@uganda> <20041221204101.GA9831@kroah.com> <1103707272.3432.6.camel@uganda> <20050112190319.GA10885@kroah.com> Reply-To: johnpol@2ka.mipt.ru Organization: MIPT X-Mailer: Sylpheed-Claws 0.9.12b (GTK+ 1.2.10; i386-pc-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Wed__12_Jan_2005_23_33_45_+0300_.saSz3Lcean_ZrfU" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 33445 Lines: 485 This is a multi-part message in MIME format. --Multipart=_Wed__12_Jan_2005_23_33_45_+0300_.saSz3Lcean_ZrfU Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Wed, 12 Jan 2005 11:03:19 -0800 Greg KH wrote: > On Wed, Dec 22, 2004 at 12:21:12PM +0300, Evgeniy Polyakov wrote: > > Hello, Greg, developers. > > > > This is first public resending of connector patch after several private > > discussions. > > Noone objected before, so if there are no complaints, Greg, please > > apply. > > one minor issue: > > > +#include "../connector/connector.h" > > Shouldn't connector.h go into include/linux so that everyone can use it > within the kernel? If so, then it's dependancy on cn_queue.h needs to > be fixed up too (why not just merge them both together)? > > > +#include "../connector/cn_queue.h" > > This can just be: > #include "cn_queue.h" > if you end up still needing it. Yep, I've fixed that. Now it has only one header connector.h in linux/ include directory. > > Sorry for taking so long to get back to this, was on vacation. Do not mention, hope they were cool. > thanks, > > greg k-h Evgeniy Polyakov Only failure makes us experts. -- Theo de Raadt --Multipart=_Wed__12_Jan_2005_23_33_45_+0300_.saSz3Lcean_ZrfU Content-Type: application/octet-stream; name="connector.patch" Content-Disposition: attachment; filename="connector.patch" Content-Transfer-Encoding: base64 ZGlmZiAtTnJ1IC90bXAvZW1wdHkvS2NvbmZpZyBsaW51eC0yLjYuOS9kcml2ZXJzL2Nvbm5lY3Rv ci9LY29uZmlnCi0tLSAvdG1wL2VtcHR5L0tjb25maWcJMTk3MC0wMS0wMSAwMzowMDowMC4wMDAw MDAwMDAgKzAzMDAKKysrIGxpbnV4LTIuNi45L2RyaXZlcnMvY29ubmVjdG9yL0tjb25maWcJMjAw NS0wMS0xMiAyMzoyODoyNS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSwxMyBAQAorbWVudSAi Q29ubmVjdG9yIC0gdW5pZmllZCB1c2Vyc3BhY2UgPC0+IGtlcm5lbHNwYWNlIGxpbmtlciIKKwor Y29uZmlnIENPTk5FQ1RPUgorCXRyaXN0YXRlICJDb25uZWN0b3IgLSB1bmlmaWVkIHVzZXJzcGFj ZSA8LT4ga2VybmVsc3BhY2UgbGlua2VyIgorCWRlcGVuZHMgb24gTkVUCisJLS0taGVscC0tLQor CSAgVGhpcyBpcyB1bmlmaWVkIHVzZXJzcGFjZSA8LT4ga2VybmVsc3BhY2UgY29ubmVjdG9yIHdv cmtpbmcgb24gdG9wCisJICBvZiB0aGUgbmV0bGluayBzb2NrZXQgcHJvdG9jb2wuCisKKwkgIENv bm5lY3RvciBzdXBwb3J0IGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRo ZSBtb2R1bGUKKwkgIHdpbGwgYmUgY2FsbGVkIGNuLmtvLgorCitlbmRtZW51CmRpZmYgLU5ydSAv dG1wL2VtcHR5L01ha2VmaWxlIGxpbnV4LTIuNi45L2RyaXZlcnMvY29ubmVjdG9yL01ha2VmaWxl Ci0tLSAvdG1wL2VtcHR5L01ha2VmaWxlCTE5NzAtMDEtMDEgMDM6MDA6MDAuMDAwMDAwMDAwICsw MzAwCisrKyBsaW51eC0yLjYuOS9kcml2ZXJzL2Nvbm5lY3Rvci9NYWtlZmlsZQkyMDA1LTAxLTEy IDIzOjI2OjM2LjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDIgQEAKK29iai0kKENPTkZJR19D T05ORUNUT1IpCQkrPSBjbi5vCitjbi1vYmpzCQk6PSBjbl9xdWV1ZS5vIGNvbm5lY3Rvci5vCmRp ZmYgLU5ydSAvdG1wL2VtcHR5L2NuX3F1ZXVlLmMgbGludXgtMi42LjkvZHJpdmVycy9jb25uZWN0 b3IvY25fcXVldWUuYwotLS0gL3RtcC9lbXB0eS9jbl9xdWV1ZS5jCTE5NzAtMDEtMDEgMDM6MDA6 MDAuMDAwMDAwMDAwICswMzAwCisrKyBsaW51eC0yLjYuOS9kcml2ZXJzL2Nvbm5lY3Rvci9jbl9x dWV1ZS5jCTIwMDUtMDEtMTIgMjM6MjM6NDUuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMjI0 IEBACisvKgorICogCWNuX3F1ZXVlLmMKKyAqIAorICogMjAwNCBDb3B5cmlnaHQgKGMpIEV2Z2Vu aXkgUG9seWFrb3YgPGpvaG5wb2xAMmthLm1pcHQucnU+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVk LgorICogCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKgorICov CisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K KyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+Cisj aW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5j bHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvc3VzcGVuZC5oPgorI2luY2x1 ZGUgPGxpbnV4L2Nvbm5lY3Rvci5oPgorCitzdGF0aWMgdm9pZCBjbl9xdWV1ZV93cmFwcGVyKHZv aWQgKmRhdGEpCit7CisJc3RydWN0IGNuX2NhbGxiYWNrX2VudHJ5ICpjYnEgPSAoc3RydWN0IGNu X2NhbGxiYWNrX2VudHJ5ICopZGF0YTsKKworCWF0b21pY19pbmMoJmNicS0+Y2ItPnJlZmNudCk7 CisJY2JxLT5jYi0+Y2FsbGJhY2soY2JxLT5jYi0+cHJpdik7CisJYXRvbWljX2RlYygmY2JxLT5j Yi0+cmVmY250KTsKKworCWNicS0+ZGVzdHJ1Y3RfZGF0YShjYnEtPmRkYXRhKTsKK30KKworc3Rh dGljIHN0cnVjdCBjbl9jYWxsYmFja19lbnRyeSAqY25fcXVldWVfYWxsb2NfY2FsbGJhY2tfZW50 cnkoc3RydWN0CisJCQkJCQkJICAgICAgIGNuX2NhbGxiYWNrICpjYikKK3sKKwlzdHJ1Y3QgY25f Y2FsbGJhY2tfZW50cnkgKmNicTsKKworCWNicSA9IGttYWxsb2Moc2l6ZW9mKCpjYnEpLCBHRlBf S0VSTkVMKTsKKwlpZiAoIWNicSkgeworCQlwcmludGsoS0VSTl9FUlIgIkZhaWxlZCB0byBjcmVh dGUgbmV3IGNhbGxiYWNrIHF1ZXVlLlxuIik7CisJCXJldHVybiBOVUxMOworCX0KKworCW1lbXNl dChjYnEsIDAsIHNpemVvZigqY2JxKSk7CisKKwljYnEtPmNiID0gY2I7CisKKwlJTklUX1dPUkso JmNicS0+d29yaywgJmNuX3F1ZXVlX3dyYXBwZXIsIGNicSk7CisKKwlyZXR1cm4gY2JxOworfQor CitzdGF0aWMgdm9pZCBjbl9xdWV1ZV9mcmVlX2NhbGxiYWNrKHN0cnVjdCBjbl9jYWxsYmFja19l bnRyeSAqY2JxKQoreworCWNhbmNlbF9kZWxheWVkX3dvcmsoJmNicS0+d29yayk7CisKKwl3aGls ZSAoYXRvbWljX3JlYWQoJmNicS0+Y2ItPnJlZmNudCkpIHsKKwkJcHJpbnRrKEtFUk5fSU5GTyAi V2FpdGluZyBmb3IgJXMgdG8gYmVjb21lIGZyZWU6IHJlZmNudD0lZC5cbiIsCisJCSAgICAgICBj YnEtPnBkZXYtPm5hbWUsIGF0b21pY19yZWFkKCZjYnEtPmNiLT5yZWZjbnQpKTsKKwkJc2V0X2N1 cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTsKKwkJc2NoZWR1bGVfdGltZW91dChIWik7 CisKKwkJaWYgKGN1cnJlbnQtPmZsYWdzICYgUEZfRlJFRVpFKQorCQkJcmVmcmlnZXJhdG9yKFBG X0ZSRUVaRSk7CisKKwkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQorCQkJZmx1c2hfc2ln bmFscyhjdXJyZW50KTsKKwl9CisKKwlrZnJlZShjYnEpOworfQorCitpbnQgY25fY2JfZXF1YWwo c3RydWN0IGNiX2lkICppMSwgc3RydWN0IGNiX2lkICppMikKK3sKKyNpZiAwCisJcHJpbnRrKEtF Uk5fSU5GTyAiJXM6IGNvbXBhcmluZyAlMDR4LiUwNHggYW5kICUwNHguJTA0eFxuIiwKKwkJCV9f ZnVuY19fLAorCQkJaTEtPmlkeCwgaTEtPnZhbCwKKwkJCWkyLT5pZHgsIGkyLT52YWwpOworI2Vu ZGlmCisJcmV0dXJuICgoaTEtPmlkeCA9PSBpMi0+aWR4KSAmJiAoaTEtPnZhbCA9PSBpMi0+dmFs KSk7Cit9CisKK2ludCBjbl9xdWV1ZV9hZGRfY2FsbGJhY2soc3RydWN0IGNuX3F1ZXVlX2RldiAq ZGV2LCBzdHJ1Y3QgY25fY2FsbGJhY2sgKmNiKQoreworCXN0cnVjdCBjbl9jYWxsYmFja19lbnRy eSAqY2JxLCAqbiwgKl9fY2JxOworCWludCBmb3VuZCA9IDA7CisKKwljYnEgPSBjbl9xdWV1ZV9h bGxvY19jYWxsYmFja19lbnRyeShjYik7CisJaWYgKCFjYnEpCisJCXJldHVybiAtRU5PTUVNOwor CisJYXRvbWljX2luYygmZGV2LT5yZWZjbnQpOworCWNicS0+cGRldiA9IGRldjsKKworCXNwaW5f bG9jaygmZGV2LT5xdWV1ZV9sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoX19jYnEs IG4sICZkZXYtPnF1ZXVlX2xpc3QsIGNhbGxiYWNrX2VudHJ5KSB7CisJCWlmIChjbl9jYl9lcXVh bCgmX19jYnEtPmNiLT5pZCwgJmNiLT5pZCkpIHsKKwkJCWZvdW5kID0gMTsKKwkJCWJyZWFrOwor CQl9CisJfQorCWlmICghZm91bmQpIHsKKwkJYXRvbWljX3NldCgmY2JxLT5jYi0+cmVmY250LCAx KTsKKwkJbGlzdF9hZGRfdGFpbCgmY2JxLT5jYWxsYmFja19lbnRyeSwgJmRldi0+cXVldWVfbGlz dCk7CisJfQorCXNwaW5fdW5sb2NrKCZkZXYtPnF1ZXVlX2xvY2spOworCisJaWYgKGZvdW5kKSB7 CisJCWF0b21pY19kZWMoJmRldi0+cmVmY250KTsKKwkJYXRvbWljX3NldCgmY2JxLT5jYi0+cmVm Y250LCAwKTsKKwkJY25fcXVldWVfZnJlZV9jYWxsYmFjayhjYnEpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwljYnEtPm5scyA9IGRldi0+bmxzOworCWNicS0+c2VxID0gMDsKKwkvL2NicS0+ Z3JvdXAgPSArK2Rldi0+bmV0bGlua19ncm91cHM7CisJY2JxLT5ncm91cCA9IGNicS0+Y2ItPmlk LmlkeDsKKworCXJldHVybiAwOworfQorCit2b2lkIGNuX3F1ZXVlX2RlbF9jYWxsYmFjayhzdHJ1 Y3QgY25fcXVldWVfZGV2ICpkZXYsIHN0cnVjdCBjbl9jYWxsYmFjayAqY2IpCit7CisJc3RydWN0 IGNuX2NhbGxiYWNrX2VudHJ5ICpjYnEgPSBOVUxMLCAqbjsKKwlpbnQgZm91bmQgPSAwOworCisJ c3Bpbl9sb2NrKCZkZXYtPnF1ZXVlX2xvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShj YnEsIG4sICZkZXYtPnF1ZXVlX2xpc3QsIGNhbGxiYWNrX2VudHJ5KSB7CisJCWlmIChjbl9jYl9l cXVhbCgmY2JxLT5jYi0+aWQsICZjYi0+aWQpKSB7CisJCQlsaXN0X2RlbCgmY2JxLT5jYWxsYmFj a19lbnRyeSk7CisJCQlmb3VuZCA9IDE7CisJCQlicmVhazsKKwkJfQorCX0KKwlzcGluX3VubG9j aygmZGV2LT5xdWV1ZV9sb2NrKTsKKworCWlmIChmb3VuZCkgeworCQlhdG9taWNfZGVjKCZjYnEt PmNiLT5yZWZjbnQpOworCQljbl9xdWV1ZV9mcmVlX2NhbGxiYWNrKGNicSk7CisJCWF0b21pY19k ZWMoJmRldi0+cmVmY250KTsKKwl9Cit9CisKK3N0cnVjdCBjbl9xdWV1ZV9kZXYgKmNuX3F1ZXVl X2FsbG9jX2RldihjaGFyICpuYW1lLCBzdHJ1Y3Qgc29jayAqbmxzKQoreworCXN0cnVjdCBjbl9x dWV1ZV9kZXYgKmRldjsKKworCWRldiA9IGttYWxsb2Moc2l6ZW9mKCpkZXYpLCBHRlBfS0VSTkVM KTsKKwlpZiAoIWRldikgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBGYWlsZWQgdG8gYWxsb2N0 ZSBuZXcgc3RydWN0IGNuX3F1ZXVlX2Rldi5cbiIsCisJCSAgICAgICBuYW1lKTsKKwkJcmV0dXJu IE5VTEw7CisJfQorCisJbWVtc2V0KGRldiwgMCwgc2l6ZW9mKCpkZXYpKTsKKworCXNucHJpbnRm KGRldi0+bmFtZSwgc2l6ZW9mKGRldi0+bmFtZSksICIlcyIsIG5hbWUpOworCisJYXRvbWljX3Nl dCgmZGV2LT5yZWZjbnQsIDApOworCUlOSVRfTElTVF9IRUFEKCZkZXYtPnF1ZXVlX2xpc3QpOwor CXNwaW5fbG9ja19pbml0KCZkZXYtPnF1ZXVlX2xvY2spOworCisJZGV2LT5ubHMgPSBubHM7CisJ ZGV2LT5uZXRsaW5rX2dyb3VwcyA9IDA7CisKKwlkZXYtPmNuX3F1ZXVlID0gY3JlYXRlX3dvcmtx dWV1ZShkZXYtPm5hbWUpOworCWlmICghZGV2LT5jbl9xdWV1ZSkgeworCQlwcmludGsoS0VSTl9F UlIgIkZhaWxlZCB0byBjcmVhdGUgJXMgcXVldWUuXG4iLCBkZXYtPm5hbWUpOworCQlrZnJlZShk ZXYpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlyZXR1cm4gZGV2OworfQorCit2b2lkIGNuX3F1 ZXVlX2ZyZWVfZGV2KHN0cnVjdCBjbl9xdWV1ZV9kZXYgKmRldikKK3sKKwlzdHJ1Y3QgY25fY2Fs bGJhY2tfZW50cnkgKmNicSwgKm47CisKKwlmbHVzaF93b3JrcXVldWUoZGV2LT5jbl9xdWV1ZSk7 CisJZGVzdHJveV93b3JrcXVldWUoZGV2LT5jbl9xdWV1ZSk7CisKKwlzcGluX2xvY2soJmRldi0+ cXVldWVfbG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGNicSwgbiwgJmRldi0+cXVl dWVfbGlzdCwgY2FsbGJhY2tfZW50cnkpIHsKKwkJbGlzdF9kZWwoJmNicS0+Y2FsbGJhY2tfZW50 cnkpOworCQlhdG9taWNfZGVjKCZjYnEtPmNiLT5yZWZjbnQpOworCX0KKwlzcGluX3VubG9jaygm ZGV2LT5xdWV1ZV9sb2NrKTsKKworCXdoaWxlIChhdG9taWNfcmVhZCgmZGV2LT5yZWZjbnQpKSB7 CisJCXByaW50ayhLRVJOX0lORk8gIldhaXRpbmcgZm9yICVzIHRvIGJlY29tZSBmcmVlOiByZWZj bnQ9JWQuXG4iLAorCQkgICAgICAgZGV2LT5uYW1lLCBhdG9taWNfcmVhZCgmZGV2LT5yZWZjbnQp KTsKKwkJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTsKKwkJc2NoZWR1bGVf dGltZW91dChIWik7CisKKwkJaWYgKGN1cnJlbnQtPmZsYWdzICYgUEZfRlJFRVpFKQorCQkJcmVm cmlnZXJhdG9yKFBGX0ZSRUVaRSk7CisKKwkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQor CQkJZmx1c2hfc2lnbmFscyhjdXJyZW50KTsKKwl9CisKKwltZW1zZXQoZGV2LCAwLCBzaXplb2Yo KmRldikpOworCWtmcmVlKGRldik7CisJZGV2ID0gTlVMTDsKK30KKworRVhQT1JUX1NZTUJPTChj bl9xdWV1ZV9hZGRfY2FsbGJhY2spOworRVhQT1JUX1NZTUJPTChjbl9xdWV1ZV9kZWxfY2FsbGJh Y2spOworRVhQT1JUX1NZTUJPTChjbl9xdWV1ZV9hbGxvY19kZXYpOworRVhQT1JUX1NZTUJPTChj bl9xdWV1ZV9mcmVlX2Rldik7CmRpZmYgLU5ydSAvdG1wL2VtcHR5L2Nvbm5lY3Rvci5jIGxpbnV4 LTIuNi45L2RyaXZlcnMvY29ubmVjdG9yL2Nvbm5lY3Rvci5jCi0tLSAvdG1wL2VtcHR5L2Nvbm5l Y3Rvci5jCTE5NzAtMDEtMDEgMDM6MDA6MDAuMDAwMDAwMDAwICswMzAwCisrKyBsaW51eC0yLjYu OS9kcml2ZXJzL2Nvbm5lY3Rvci9jb25uZWN0b3IuYwkyMDA1LTAxLTEyIDIzOjIzOjQ1LjAwMDAw MDAwMCArMDMwMApAQCAtMCwwICsxLDQ5NiBAQAorLyoKKyAqIAljb25uZWN0b3IuYworICogCisg KiAyMDA0IENvcHlyaWdodCAoYykgRXZnZW5peSBQb2x5YWtvdiA8am9obnBvbEAya2EubWlwdC5y dT4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAq IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B ICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUg PGxpbnV4L3NrYnVmZi5oPgorI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KKyNpbmNsdWRlIDxs aW51eC9tb2R1bGVwYXJhbS5oPgorI2luY2x1ZGUgPGxpbnV4L2Nvbm5lY3Rvci5oPgorCisjaW5j bHVkZSA8bmV0L3NvY2suaD4KKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FVVEhP UigiRXZnZW5peSBQb2x5YWtvdiA8am9obnBvbEAya2EubWlwdC5ydT4iKTsKK01PRFVMRV9ERVND UklQVElPTigiR2VuZXJpYyB1c2Vyc3BhY2UgPC0+IGtlcm5lbHNwYWNlIGNvbm5lY3Rvci4iKTsK Kworc3RhdGljIGludCB1bml0ID0gTkVUTElOS19ORkxPRzsKK3N0YXRpYyB1MzIgY25faWR4ID0g LTE7CitzdGF0aWMgdTMyIGNuX3ZhbCA9IC0xOworCittb2R1bGVfcGFyYW0odW5pdCwgaW50LCAw KTsKK21vZHVsZV9wYXJhbShjbl9pZHgsIHVpbnQsIDApOworbW9kdWxlX3BhcmFtKGNuX3ZhbCwg dWludCwgMCk7CisKK3NwaW5sb2NrX3Qgbm90aWZ5X2xvY2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7 CitzdGF0aWMgTElTVF9IRUFEKG5vdGlmeV9saXN0KTsKKworc3RhdGljIHN0cnVjdCBjbl9kZXYg Y2RldjsKKworLyoKKyAqIG1zZy0+c2VxIGFuZCBtc2ctPmFjayBhcmUgdXNlZCB0byBkZXRlcm1p bmUgbWVzc2FnZSBnZW5lYWxvZ3kuCisgKiBXaGVuIHNvbWVvbmUgc2VuZHMgbWVzc2FnZSBpdCBw dXRzIHRoZXJlIGxvY2FsbHkgdW5pcXVlIHNlcXVlbmNlIAorICogYW5kIHJhbmRvbSBhY2tub3ds ZWRnZSBudW1iZXJzLgorICogU2VxdWVuY2UgbnVtYmVyIG1heSBiZSBjb3BpZWQgaW50byBubG1z Z2hkci0+bmxtc2dfc2VxIHRvby4KKyAqCisgKiBTZXF1ZW5jZSBudW1iZXIgaXMgaW5jcmVtZW50 ZWQgd2l0aCBlYWNoIG1lc3NhZ2UgdG8gYmUgc2VudC4KKyAqCisgKiBJZiB3ZSBleHBlY3QgcmVw bHkgdG8gb3VyIG1lc3NhZ2UsIAorICogdGhlbiBzZXF1ZW5jZSBudW1iZXIgaW4gcmVjZWl2ZWQg bWVzc2FnZSBNVVNUIGJlIHRoZSBzYW1lIGFzIGluIG9yaWdpbmFsIG1lc3NhZ2UsCisgKiBhbmQg YWNrbm93bGVkZ2UgbnVtYmVyIE1VU1QgYmUgdGhlIHNhbWUgKyAxLgorICoKKyAqIElmIHdlIHJl Y2VpdmUgbWVzc2FnZSBhbmQgaXQncyBzZXF1ZW5jZSBudW1iZXIgaXMgbm90IGVxdWFsIHRvIG9u ZSB3ZSBhcmUgZXhwZWN0aW5nLCAKKyAqIHRoZW4gaXQgaXMgbmV3IG1lc3NhZ2UuCisgKiBJZiB3 ZSByZWNlaXZlIG1lc3NhZ2UgYW5kIGl0J3Mgc2VxdWVuY2UgbnVtYmVyIGlzIHRoZSBzYW1lIGFz IG9uZSB3ZSBhcmUgZXhwZWN0aW5nLAorICogYnV0IGl0J3MgYWNrbm93bGVkZ2UgaXMgbm90IGVx dWFsIGFja25vd2xlZGdlIG51bWJlciBpbiBvcmlnaW5hbCBtZXNzYWdlICsgMSwKKyAqIHRoZW4g aXQgaXMgbmV3IG1lc3NhZ2UuCisgKgorICovCit2b2lkIGNuX25ldGxpbmtfc2VuZChzdHJ1Y3Qg Y25fbXNnICptc2csIHUzMiBfX2dyb3VwcykKK3sKKwlzdHJ1Y3QgY25fY2FsbGJhY2tfZW50cnkg Km4sICpfX2NicTsKKwl1bnNpZ25lZCBpbnQgc2l6ZTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwor CXN0cnVjdCBubG1zZ2hkciAqbmxoOworCXN0cnVjdCBjbl9tc2cgKmRhdGE7CisJc3RydWN0IGNu X2RldiAqZGV2ID0gJmNkZXY7CisJdTMyIGdyb3VwcyA9IDA7CisJaW50IGZvdW5kID0gMDsKKwor CWlmICghX19ncm91cHMpCisJeworCQlzcGluX2xvY2soJmRldi0+Y2JkZXYtPnF1ZXVlX2xvY2sp OworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoX19jYnEsIG4sICZkZXYtPmNiZGV2LT5xdWV1 ZV9saXN0LCBjYWxsYmFja19lbnRyeSkgeworCQkJaWYgKGNuX2NiX2VxdWFsKCZfX2NicS0+Y2It PmlkLCAmbXNnLT5pZCkpIHsKKwkJCQlmb3VuZCA9IDE7CisJCQkJZ3JvdXBzID0gX19jYnEtPmdy b3VwOworCQkJfQorCQl9CisJCXNwaW5fdW5sb2NrKCZkZXYtPmNiZGV2LT5xdWV1ZV9sb2NrKTsK KworCQlpZiAoIWZvdW5kKSB7CisJCQlwcmludGsoS0VSTl9FUlIgIkZhaWxlZCB0byBmaW5kIG11 bHRpY2FzdCBuZXRsaW5rIGdyb3VwIGZvciBjYWxsYmFja1sweCV4LjB4JXhdLiBzZXE9JXVcbiIs CisJCQkgICAgICAgbXNnLT5pZC5pZHgsIG1zZy0+aWQudmFsLCBtc2ctPnNlcSk7CisJCQlyZXR1 cm47CisJCX0KKwl9CisJZWxzZQorCQlncm91cHMgPSBfX2dyb3VwczsKKworCXNpemUgPSBOTE1T R19TUEFDRShzaXplb2YoKm1zZykgKyBtc2ctPmxlbik7CisKKwlza2IgPSBhbGxvY19za2Ioc2l6 ZSwgR0ZQX0FUT01JQyk7CisJaWYgKCFza2IpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJGYWlsZWQg dG8gYWxsb2NhdGUgbmV3IHNrYiB3aXRoIHNpemU9JXUuXG4iLCBzaXplKTsKKwkJcmV0dXJuOwor CX0KKworCW5saCA9IE5MTVNHX1BVVChza2IsIDAsIG1zZy0+c2VxLCBOTE1TR19ET05FLCBzaXpl IC0gc2l6ZW9mKCpubGgpKTsKKworCWRhdGEgPSAoc3RydWN0IGNuX21zZyAqKU5MTVNHX0RBVEEo bmxoKTsKKworCW1lbWNweShkYXRhLCBtc2csIHNpemVvZigqZGF0YSkgKyBtc2ctPmxlbik7Cisj aWYgMAorCXByaW50aygiJXM6IGxlbj0ldSwgc2VxPSV1LCBhY2s9JXUsIGdyb3VwPSV1LlxuIiwK KwkgICAgICAgX19mdW5jX18sIG1zZy0+bGVuLCBtc2ctPnNlcSwgbXNnLT5hY2ssIGdyb3Vwcyk7 CisjZW5kaWYKKwlORVRMSU5LX0NCKHNrYikuZHN0X2dyb3VwcyA9IGdyb3VwczsKKwluZXRsaW5r X2Jyb2FkY2FzdChkZXYtPm5scywgc2tiLCAwLCBncm91cHMsIEdGUF9BVE9NSUMpOworCisJcmV0 dXJuOworCisgICAgICBubG1zZ19mYWlsdXJlOgorCXByaW50ayhLRVJOX0VSUiAiRmFpbGVkIHRv IHNlbmQgJXUuJXVcbiIsIG1zZy0+c2VxLCBtc2ctPmFjayk7CisJa2ZyZWVfc2tiKHNrYik7CisJ cmV0dXJuOworfQorCitzdGF0aWMgaW50IGNuX2NhbGxfY2FsbGJhY2soc3RydWN0IGNuX21zZyAq bXNnLCB2b2lkICgqZGVzdHJ1Y3RfZGF0YSkgKHZvaWQgKiksIHZvaWQgKmRhdGEpCit7CisJc3Ry dWN0IGNuX2NhbGxiYWNrX2VudHJ5ICpuLCAqX19jYnE7CisJc3RydWN0IGNuX2RldiAqZGV2ID0g JmNkZXY7CisJaW50IGZvdW5kID0gMDsKKworCXNwaW5fbG9jaygmZGV2LT5jYmRldi0+cXVldWVf bG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKF9fY2JxLCBuLCAmZGV2LT5jYmRldi0+ cXVldWVfbGlzdCwgY2FsbGJhY2tfZW50cnkpIHsKKwkJaWYgKGNuX2NiX2VxdWFsKCZfX2NicS0+ Y2ItPmlkLCAmbXNnLT5pZCkpIHsKKwkJCV9fY2JxLT5jYi0+cHJpdiA9IG1zZzsKKworCQkJX19j YnEtPmRkYXRhID0gZGF0YTsKKwkJCV9fY2JxLT5kZXN0cnVjdF9kYXRhID0gZGVzdHJ1Y3RfZGF0 YTsKKworCQkJcXVldWVfd29yayhkZXYtPmNiZGV2LT5jbl9xdWV1ZSwgJl9fY2JxLT53b3JrKTsK KwkJCWZvdW5kID0gMTsKKwkJCWJyZWFrOworCQl9CisJfQorCXNwaW5fdW5sb2NrKCZkZXYtPmNi ZGV2LT5xdWV1ZV9sb2NrKTsKKworCXJldHVybiBmb3VuZDsKK30KKworc3RhdGljIGludCBfX2Nu X3J4X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCkKK3sKKwl1 MzIgcGlkLCB1aWQsIHNlcSwgZ3JvdXA7CisJc3RydWN0IGNuX21zZyAqbXNnOworCisJcGlkID0g TkVUTElOS19DUkVEUyhza2IpLT5waWQ7CisJdWlkID0gTkVUTElOS19DUkVEUyhza2IpLT51aWQ7 CisJc2VxID0gbmxoLT5ubG1zZ19zZXE7CisJZ3JvdXAgPSBORVRMSU5LX0NCKChza2IpKS5ncm91 cHM7CisJbXNnID0gKHN0cnVjdCBjbl9tc2cgKilOTE1TR19EQVRBKG5saCk7CisKKwlpZiAobXNn LT5sZW4gIT0gbmxoLT5ubG1zZ19sZW4gLSBzaXplb2YoKm1zZykgLSBzaXplb2YoKm5saCkpIHsK KwkJcHJpbnRrKEtFUk5fRVJSICJza2IgZG9lcyBub3QgaGF2ZSBlbm91Z2ggbGVuZ3RoOiAiCisJ CQkJInJlcXVlc3RlZCBtc2ctPmxlbj0ldVsldV0sIG5saC0+bmxtc2dfbGVuPSV1WyV1XSwgc2ti LT5sZW49JXVbbXVzdCBiZSAldV0uXG4iLCAKKwkJCQltc2ctPmxlbiwgTkxNU0dfU1BBQ0UobXNn LT5sZW4pLCAKKwkJCQlubGgtPm5sbXNnX2xlbiwgbmxoLT5ubG1zZ19sZW4gLSBzaXplb2YoKm5s aCksCisJCQkJc2tiLT5sZW4sIG1zZy0+bGVuICsgc2l6ZW9mKCptc2cpKTsKKwkJcmV0dXJuIC1F SU5WQUw7CisJfQorI2lmIDAKKwlwcmludGsoS0VSTl9JTkZPICJwaWQ9JXUsIHVpZD0ldSwgc2Vx PSV1LCBncm91cD0ldS5cbiIsCisJICAgICAgIHBpZCwgdWlkLCBzZXEsIGdyb3VwKTsKKyNlbmRp ZgorCXJldHVybiBjbl9jYWxsX2NhbGxiYWNrKG1zZywgKHZvaWQgKCopKHZvaWQgKikpa2ZyZWVf c2tiLCBza2IpOworfQorCitzdGF0aWMgdm9pZCBjbl9yeF9za2Ioc3RydWN0IHNrX2J1ZmYgKl9f c2tiKQoreworCXN0cnVjdCBubG1zZ2hkciAqbmxoOworCXUzMiBsZW47CisJaW50IGVycjsKKwlz dHJ1Y3Qgc2tfYnVmZiAqc2tiOworCisJc2tiID0gc2tiX2dldChfX3NrYik7CisJaWYgKCFza2Ip IHsKKwkJcHJpbnRrKEtFUk5fRVJSICJGYWlsZWQgdG8gcmVmZXJlbmNlIGFuIHNrYi5cbiIpOwor CQlyZXR1cm47CisJfQorI2lmIDAKKwlwcmludGsoS0VSTl9JTkZPCisJICAgICAgICJza2I6IGxl bj0ldSwgZGF0YV9sZW49JXUsIHRydWVzaXplPSV1LCBwcm90bz0ldSwgY2xvbmVkPSVkLCBzaGFy ZWQ9JWQuXG4iLAorCSAgICAgICBza2ItPmxlbiwgc2tiLT5kYXRhX2xlbiwgc2tiLT50cnVlc2l6 ZSwgc2tiLT5wcm90b2NvbCwKKwkgICAgICAgc2tiX2Nsb25lZChza2IpLCBza2Jfc2hhcmVkKHNr YikpOworI2VuZGlmCisJd2hpbGUgKHNrYi0+bGVuID49IE5MTVNHX1NQQUNFKDApKSB7CisJCW5s aCA9IChzdHJ1Y3Qgbmxtc2doZHIgKilza2ItPmRhdGE7CisJCWlmIChubGgtPm5sbXNnX2xlbiA8 IHNpemVvZihzdHJ1Y3QgY25fbXNnKSB8fAorCQkgICAgc2tiLT5sZW4gPCBubGgtPm5sbXNnX2xl biB8fAorCQkgICAgbmxoLT5ubG1zZ19sZW4gPiBDT05ORUNUT1JfTUFYX01TR19TSVpFKSB7CisJ CQlwcmludGsoS0VSTl9JTkZPICJubG1zZ19sZW49JXUsIHNpemVvZigqbmxoKT0ldVxuIiwKKwkJ CSAgICAgICBubGgtPm5sbXNnX2xlbiwgc2l6ZW9mKCpubGgpKTsKKwkJCWJyZWFrOworCQl9CisK KwkJbGVuID0gTkxNU0dfQUxJR04obmxoLT5ubG1zZ19sZW4pOworCQlpZiAobGVuID4gc2tiLT5s ZW4pCisJCQlsZW4gPSBza2ItPmxlbjsKKworCQllcnIgPSBfX2NuX3J4X3NrYihza2IsIG5saCk7 CisJCWlmIChlcnIpIHsKKyNpZiAwCisJCQlpZiAoZXJyIDwgMCAmJiAobmxoLT5ubG1zZ19mbGFn cyAmIE5MTV9GX0FDSykpCisJCQkJbmV0bGlua19hY2soc2tiLCBubGgsIC1lcnIpOworI2VuZGlm CisJCQlrZnJlZV9za2Ioc2tiKTsKKwkJCWJyZWFrOworCQl9IGVsc2UgeworI2lmIDAKKwkJCWlm IChubGgtPm5sbXNnX2ZsYWdzICYgTkxNX0ZfQUNLKQorCQkJCW5ldGxpbmtfYWNrKHNrYiwgbmxo LCAwKTsKKyNlbmRpZgorCQkJa2ZyZWVfc2tiKHNrYik7CisJCQlicmVhazsKKwkJfQorCQlza2Jf cHVsbChza2IsIGxlbik7CisJfQorfQorCitzdGF0aWMgdm9pZCBjbl9pbnB1dChzdHJ1Y3Qgc29j ayAqc2ssIGludCBsZW4pCit7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKworCXdoaWxlICgoc2ti ID0gc2tiX2RlcXVldWUoJnNrLT5za19yZWNlaXZlX3F1ZXVlKSkgIT0gTlVMTCkKKwkJY25fcnhf c2tiKHNrYik7Cit9CisKK3N0YXRpYyB2b2lkIGNuX25vdGlmeShzdHJ1Y3QgY2JfaWQgKmlkLCB1 MzIgbm90aWZ5X2V2ZW50KQoreworCXN0cnVjdCBjbl9jdGxfZW50cnkgKmVudDsKKworCXNwaW5f bG9jaygmbm90aWZ5X2xvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnkoZW50LCAmbm90aWZ5X2xp c3QsIG5vdGlmeV9lbnRyeSkgeworCQlpbnQgaTsKKwkJc3RydWN0IGNuX25vdGlmeV9yZXEgKnJl cTsKKwkJc3RydWN0IGNuX2N0bF9tc2cgKmN0bCA9IGVudC0+bXNnOworCQlpbnQgYSwgYjsKKwor CQlhID0gYiA9IDA7CisJCQorCQlyZXEgPSAoc3RydWN0IGNuX25vdGlmeV9yZXEgKiljdGwtPmRh dGE7CisJCWZvciAoaT0wOyBpPGN0bC0+aWR4X25vdGlmeV9udW07ICsraSwgKytyZXEpIHsKKwkJ CWlmIChpZC0+aWR4ID49IHJlcS0+Zmlyc3QgJiYgaWQtPmlkeCA8IHJlcS0+Zmlyc3QgKyByZXEt PnJhbmdlKSB7CisJCQkJYSA9IDE7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJCisJCWZvciAo aT0wOyBpPGN0bC0+dmFsX25vdGlmeV9udW07ICsraSwgKytyZXEpIHsKKwkJCWlmIChpZC0+dmFs ID49IHJlcS0+Zmlyc3QgJiYgaWQtPnZhbCA8IHJlcS0+Zmlyc3QgKyByZXEtPnJhbmdlKSB7CisJ CQkJYiA9IDE7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoYSAmJiBiKSB7CisJCQlz dHJ1Y3QgY25fbXNnIG07CisJCQkKKwkJCXByaW50ayhLRVJOX0lORk8gIk5vdGlmeWluZyBncm91 cCAleCB3aXRoIGV2ZW50ICV1IGFib3V0ICV4LiV4LlxuIiwgCisJCQkJCWN0bC0+Z3JvdXAsIG5v dGlmeV9ldmVudCwgCisJCQkJCWlkLT5pZHgsIGlkLT52YWwpOworCisJCQltZW1zZXQoJm0sIDAs IHNpemVvZihtKSk7CisJCQltLmFjayA9IG5vdGlmeV9ldmVudDsKKworCQkJbWVtY3B5KCZtLmlk LCBpZCwgc2l6ZW9mKG0uaWQpKTsKKwkJCWNuX25ldGxpbmtfc2VuZCgmbSwgY3RsLT5ncm91cCk7 CisJCX0KKwl9CisJc3Bpbl91bmxvY2soJm5vdGlmeV9sb2NrKTsKK30KKworaW50IGNuX2FkZF9j YWxsYmFjayhzdHJ1Y3QgY2JfaWQgKmlkLCBjaGFyICpuYW1lLCB2b2lkICgqY2FsbGJhY2spICh2 b2lkICopKQoreworCWludCBlcnI7CisJc3RydWN0IGNuX2RldiAqZGV2ID0gJmNkZXY7CisJc3Ry dWN0IGNuX2NhbGxiYWNrICpjYjsKKworCWNiID0ga21hbGxvYyhzaXplb2YoKmNiKSwgR0ZQX0tF Uk5FTCk7CisJaWYgKCFjYikgeworCQlwcmludGsoS0VSTl9JTkZPICIlczogRmFpbGVkIHRvIGFs bG9jYXRlIG5ldyBzdHJ1Y3QgY25fY2FsbGJhY2suXG4iLAorCQkgICAgICAgZGV2LT5jYmRldi0+ bmFtZSk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCW1lbXNldChjYiwgMCwgc2l6ZW9mKCpj YikpOworCisJc25wcmludGYoY2ItPm5hbWUsIHNpemVvZihjYi0+bmFtZSksICIlcyIsIG5hbWUp OworCisJbWVtY3B5KCZjYi0+aWQsIGlkLCBzaXplb2YoY2ItPmlkKSk7CisJY2ItPmNhbGxiYWNr ID0gY2FsbGJhY2s7CisKKwlhdG9taWNfc2V0KCZjYi0+cmVmY250LCAwKTsKKworCWVyciA9IGNu X3F1ZXVlX2FkZF9jYWxsYmFjayhkZXYtPmNiZGV2LCBjYik7CisJaWYgKGVycikgeworCQlrZnJl ZShjYik7CisJCXJldHVybiBlcnI7CisJfQorCQkJCisJY25fbm90aWZ5KGlkLCAwKTsKKworCXJl dHVybiAwOworfQorCit2b2lkIGNuX2RlbF9jYWxsYmFjayhzdHJ1Y3QgY2JfaWQgKmlkKQorewor CXN0cnVjdCBjbl9kZXYgKmRldiA9ICZjZGV2OworCXN0cnVjdCBjbl9jYWxsYmFja19lbnRyeSAq biwgKl9fY2JxOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKF9fY2JxLCBuLCAmZGV2LT5j YmRldi0+cXVldWVfbGlzdCwgY2FsbGJhY2tfZW50cnkpIHsKKwkJaWYgKGNuX2NiX2VxdWFsKCZf X2NicS0+Y2ItPmlkLCBpZCkpIHsKKwkJCWNuX3F1ZXVlX2RlbF9jYWxsYmFjayhkZXYtPmNiZGV2 LCBfX2NicS0+Y2IpOworCQkJY25fbm90aWZ5KGlkLCAxKTsKKwkJCWJyZWFrOworCQl9CisJfQor fQorCitzdGF0aWMgaW50IGNuX2N0bF9tc2dfZXF1YWxzKHN0cnVjdCBjbl9jdGxfbXNnICptMSwg c3RydWN0IGNuX2N0bF9tc2cgKm0yKQoreworCWludCBpOworCXN0cnVjdCBjbl9ub3RpZnlfcmVx ICpyZXExLCAqcmVxMjsKKworCWlmIChtMS0+aWR4X25vdGlmeV9udW0gIT0gbTItPmlkeF9ub3Rp ZnlfbnVtKQorCQlyZXR1cm4gMDsKKwkKKwlpZiAobTEtPnZhbF9ub3RpZnlfbnVtICE9IG0yLT52 YWxfbm90aWZ5X251bSkKKwkJcmV0dXJuIDA7CisJCisJaWYgKG0xLT5sZW4gIT0gbTItPmxlbikK KwkJcmV0dXJuIDA7CisKKwlpZiAoKG0xLT5pZHhfbm90aWZ5X251bSArIG0xLT52YWxfbm90aWZ5 X251bSkqc2l6ZW9mKCpyZXExKSAhPSBtMS0+bGVuKSB7CisJCXByaW50ayhLRVJOX0VSUiAiTm90 aWZ5IGVudHJ5W2lkeF9udW09JXgsIHZhbF9udW09JXgsIGxlbj0ldV0gY29udGFpbnMgZ2FyYmFn ZS4gUmVtb3ZpbmcuXG4iLCAKKwkJCQltMS0+aWR4X25vdGlmeV9udW0sIG0xLT52YWxfbm90aWZ5 X251bSwgbTEtPmxlbik7CisJCXJldHVybiAxOworCX0KKworCXJlcTEgPSAoc3RydWN0IGNuX25v dGlmeV9yZXEgKiltMS0+ZGF0YTsKKwlyZXEyID0gKHN0cnVjdCBjbl9ub3RpZnlfcmVxICopbTIt PmRhdGE7CisJCisJZm9yIChpPTA7IGk8bTEtPmlkeF9ub3RpZnlfbnVtOyArK2kpIHsKKwkJaWYg KG1lbWNtcChyZXExLCByZXEyLCBzaXplb2YoKnJlcTEpKSkKKwkJCXJldHVybiAwOworCisJCXJl cTErKzsKKwkJcmVxMisrOworCX0KKworCWZvciAoaT0wOyBpPG0xLT52YWxfbm90aWZ5X251bTsg KytpKSB7CisJCWlmIChtZW1jbXAocmVxMSwgcmVxMiwgc2l6ZW9mKCpyZXExKSkpCisJCQlyZXR1 cm4gMDsKKworCQlyZXExKys7CisJCXJlcTIrKzsKKwl9CisKKwlyZXR1cm4gMTsKK30KKworc3Rh dGljIHZvaWQgY25fY2FsbGJhY2sodm9pZCAqIGRhdGEpCit7CisJc3RydWN0IGNuX21zZyAqbXNn ID0gKHN0cnVjdCBjbl9tc2cgKilkYXRhOworCXN0cnVjdCBjbl9jdGxfbXNnICpjdGw7CisJc3Ry dWN0IGNuX2N0bF9lbnRyeSAqZW50OworCXUzMiBzaXplOworIAorCWlmIChtc2ctPmxlbiA8IHNp emVvZigqY3RsKSkgeworCQlwcmludGsoS0VSTl9FUlIgIldyb25nIGNvbm5lY3RvciByZXF1ZXN0 IHNpemUgJXUsIG11c3QgYmUgPj0gJXUuXG4iLCAKKwkJCQltc2ctPmxlbiwgc2l6ZW9mKCpjdGwp KTsKKwkJcmV0dXJuOworCX0KKwkKKwljdGwgPSAoc3RydWN0IGNuX2N0bF9tc2cgKiltc2ctPmRh dGE7CisKKwlzaXplID0gc2l6ZW9mKCpjdGwpICsgKGN0bC0+aWR4X25vdGlmeV9udW0gKyBjdGwt PnZhbF9ub3RpZnlfbnVtKSpzaXplb2Yoc3RydWN0IGNuX25vdGlmeV9yZXEpOworCisJaWYgKG1z Zy0+bGVuICE9IHNpemUpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJXcm9uZyBjb25uZWN0b3IgcmVx dWVzdCBzaXplICV1LCBtdXN0IGJlID09ICV1LlxuIiwgCisJCQkJbXNnLT5sZW4sIHNpemUpOwor CQlyZXR1cm47CisJfQorCisJaWYgKGN0bC0+bGVuICsgc2l6ZW9mKCpjdGwpICE9IG1zZy0+bGVu KSB7CisJCXByaW50ayhLRVJOX0VSUiAiV3JvbmcgbWVzc2FnZTogbXNnLT5sZW49JXUgbXVzdCBi ZSBlcXVhbCB0byBpbm5lcl9sZW49JXUgWysldV0uXG4iLCAKKwkJCQltc2ctPmxlbiwgY3RsLT5s ZW4sIHNpemVvZigqY3RsKSk7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIFJlbW92ZSBub3Rp ZmljYXRpb24uCisJICovCisJaWYgKGN0bC0+Z3JvdXAgPT0gMCkgeworCQlzdHJ1Y3QgY25fY3Rs X2VudHJ5ICpuOworCQkKKwkJc3Bpbl9sb2NrKCZub3RpZnlfbG9jayk7CisJCWxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShlbnQsIG4sICZub3RpZnlfbGlzdCwgbm90aWZ5X2VudHJ5KSB7CisJCQlp ZiAoY25fY3RsX21zZ19lcXVhbHMoZW50LT5tc2csIGN0bCkpIHsKKwkJCQlsaXN0X2RlbCgmZW50 LT5ub3RpZnlfZW50cnkpOworCQkJCWtmcmVlKGVudCk7CisJCQl9CisJCX0KKwkJc3Bpbl91bmxv Y2soJm5vdGlmeV9sb2NrKTsKKworCQlyZXR1cm47CisJfQorCisJc2l6ZSArPSBzaXplb2YoKmVu dCk7CisKKwllbnQgPSBrbWFsbG9jKHNpemUsIEdGUF9BVE9NSUMpOworCWlmICghZW50KSB7CisJ CXByaW50ayhLRVJOX0VSUiAiRmFpbGVkIHRvIGFsbG9jYXRlICVkIGJ5dGVzIGZvciBuZXcgbm90 aWZ5IGVudHJ5LlxuIiwgc2l6ZSk7CisJCXJldHVybjsKKwl9CisKKwltZW1zZXQoZW50LCAwLCBz aXplKTsKKworCWVudC0+bXNnID0gKHN0cnVjdCBjbl9jdGxfbXNnICopKGVudCArIDEpOworCisJ bWVtY3B5KGVudC0+bXNnLCBjdGwsIHNpemUgLSBzaXplb2YoKmVudCkpOworCisJc3Bpbl9sb2Nr KCZub3RpZnlfbG9jayk7CisJbGlzdF9hZGQoJmVudC0+bm90aWZ5X2VudHJ5LCAmbm90aWZ5X2xp c3QpOworCXNwaW5fdW5sb2NrKCZub3RpZnlfbG9jayk7CisKKwl7CisJCWludCBpOworCQlzdHJ1 Y3QgY25fbm90aWZ5X3JlcSAqcmVxOworCQorCQlwcmludGsoIk5vdGlmeSBncm91cCAleCBmb3Ig aWR4OiAiLCBjdGwtPmdyb3VwKTsKKworCQlyZXEgPSAoc3RydWN0IGNuX25vdGlmeV9yZXEgKilj dGwtPmRhdGE7CisJCWZvciAoaT0wOyBpPGN0bC0+aWR4X25vdGlmeV9udW07ICsraSwgKytyZXEp IHsKKwkJCXByaW50aygiJXUtJXUgIiwgcmVxLT5maXJzdCwgcmVxLT5maXJzdCtyZXEtPnJhbmdl LTEpOworCQl9CisJCQorCQlwcmludGsoIlxuTm90aWZ5IGdyb3VwICV4IGZvciB2YWw6ICIsIGN0 bC0+Z3JvdXApOworCisJCWZvciAoaT0wOyBpPGN0bC0+dmFsX25vdGlmeV9udW07ICsraSwgKyty ZXEpIHsKKwkJCXByaW50aygiJXUtJXUgIiwgcmVxLT5maXJzdCwgcmVxLT5maXJzdCtyZXEtPnJh bmdlLTEpOworCQl9CisJCXByaW50aygiXG4iKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgY25faW5p dCh2b2lkKQoreworCXN0cnVjdCBjbl9kZXYgKmRldiA9ICZjZGV2OworCisJZGV2LT5pbnB1dCA9 IGNuX2lucHV0OworCWRldi0+aWQuaWR4ID0gY25faWR4OworCWRldi0+aWQudmFsID0gY25fdmFs OworCisJZGV2LT5ubHMgPSBuZXRsaW5rX2tlcm5lbF9jcmVhdGUodW5pdCwgZGV2LT5pbnB1dCk7 CisJaWYgKCFkZXYtPm5scykgeworCQlwcmludGsoS0VSTl9FUlIgIkZhaWxlZCB0byBjcmVhdGUg bmV3IG5ldGxpbmsgc29ja2V0KCV1KS5cbiIsCisJCSAgICAgICB1bml0KTsKKwkJcmV0dXJuIC1F SU87CisJfQorCisJZGV2LT5jYmRldiA9IGNuX3F1ZXVlX2FsbG9jX2RldigiY3F1ZXVlIiwgZGV2 LT5ubHMpOworCWlmICghZGV2LT5jYmRldikgeworCQlpZiAoZGV2LT5ubHMtPnNrX3NvY2tldCkK KwkJCXNvY2tfcmVsZWFzZShkZXYtPm5scy0+c2tfc29ja2V0KTsKKwkJcmV0dXJuIC1FSU5WQUw7 CisJfQorCisJcmV0dXJuIGNuX2FkZF9jYWxsYmFjaygmZGV2LT5pZCwgImNvbm5lY3RvciIsICZj bl9jYWxsYmFjayk7Cit9CisKK3N0YXRpYyB2b2lkIGNuX2Zpbmkodm9pZCkKK3sKKwlzdHJ1Y3Qg Y25fZGV2ICpkZXYgPSAmY2RldjsKKworCWNuX2RlbF9jYWxsYmFjaygmZGV2LT5pZCk7CisJY25f cXVldWVfZnJlZV9kZXYoZGV2LT5jYmRldik7CisJaWYgKGRldi0+bmxzLT5za19zb2NrZXQpCisJ CXNvY2tfcmVsZWFzZShkZXYtPm5scy0+c2tfc29ja2V0KTsKK30KKworbW9kdWxlX2luaXQoY25f aW5pdCk7Cittb2R1bGVfZXhpdChjbl9maW5pKTsKKworRVhQT1JUX1NZTUJPTChjbl9hZGRfY2Fs bGJhY2spOworRVhQT1JUX1NZTUJPTChjbl9kZWxfY2FsbGJhY2spOworRVhQT1JUX1NZTUJPTChj bl9uZXRsaW5rX3NlbmQpOwotLS0gL2Rldi9udWxsCTIwMDQtMDktMTcgMTQ6NTg6MDYuMDAwMDAw MDAwICswNDAwCisrKyBsaW51eC0yLjYuOS9pbmNsdWRlL2xpbnV4L2Nvbm5lY3Rvci5oCTIwMDUt MDEtMTIgMjM6MjM6NTUuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICog CWNvbm5lY3Rvci5oCisgKiAKKyAqIDIwMDQgQ29weXJpZ2h0IChjKSBFdmdlbml5IFBvbHlha292 IDxqb2hucG9sQDJrYS5taXB0LnJ1PgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpZm5kZWYgX19D T05ORUNUT1JfSAorI2RlZmluZSBfX0NPTk5FQ1RPUl9ICisKKyNpbmNsdWRlIDxhc20vdHlwZXMu aD4KKworI2RlZmluZSBDT05ORUNUT1JfTUFYX01TR19TSVpFIAkxMDI0CisKK3N0cnVjdCBjYl9p ZAoreworCV9fdTMyCQkJaWR4OworCV9fdTMyCQkJdmFsOworfTsKKworc3RydWN0IGNuX21zZwor eworCXN0cnVjdCBjYl9pZCAJCWlkOworCisJX191MzIJCQlzZXE7CisJX191MzIJCQlhY2s7CisK KwlfX3UzMgkJCWxlbjsJCS8qIExlbmd0aCBvZiB0aGUgZm9sbG93aW5nIGRhdGEgKi8KKwlfX3U4 CQkJZGF0YVswXTsKK307CisKK3N0cnVjdCBjbl9ub3RpZnlfcmVxCit7CisJX191MzIJCQlmaXJz dDsKKwlfX3UzMgkJCXJhbmdlOworfTsKKworc3RydWN0IGNuX2N0bF9tc2cKK3sKKwlfX3UzMgkJ CWlkeF9ub3RpZnlfbnVtOworCV9fdTMyCQkJdmFsX25vdGlmeV9udW07CisJX191MzIJCQlncm91 cDsKKwlfX3UzMgkJCWxlbjsKKwlfX3U4CQkJZGF0YVswXTsKK307CisKKworI2lmZGVmIF9fS0VS TkVMX18KKworI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KKworI2luY2x1ZGUgPGxpbnV4L2xpc3Qu aD4KKyNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4KKworI2luY2x1ZGUgPG5ldC9zb2NrLmg+ CisKKyNkZWZpbmUgQ05fQ0JRX05BTUVMRU4JCTMyCisKK3N0cnVjdCBjbl9xdWV1ZV9kZXYKK3sK KwlhdG9taWNfdAkJcmVmY250OworCXVuc2lnbmVkIGNoYXIJCW5hbWVbQ05fQ0JRX05BTUVMRU5d OworCisJc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QJKmNuX3F1ZXVlOworCQorCXN0cnVjdCBsaXN0 X2hlYWQgCXF1ZXVlX2xpc3Q7CisJc3BpbmxvY2tfdCAJCXF1ZXVlX2xvY2s7CisKKwlpbnQJCQlu ZXRsaW5rX2dyb3VwczsKKwlzdHJ1Y3Qgc29jawkJKm5sczsKK307CisKK3N0cnVjdCBjbl9jYWxs YmFjaworeworCXVuc2lnbmVkIGNoYXIJCW5hbWVbQ05fQ0JRX05BTUVMRU5dOworCQorCXN0cnVj dCBjYl9pZAkJaWQ7CisJdm9pZAkJCSgqIGNhbGxiYWNrKSh2b2lkICopOworCXZvaWQJCQkqcHJp djsKKwkKKwlhdG9taWNfdAkJcmVmY250OworfTsKKworc3RydWN0IGNuX2NhbGxiYWNrX2VudHJ5 Cit7CisJc3RydWN0IGxpc3RfaGVhZAljYWxsYmFja19lbnRyeTsKKwlzdHJ1Y3QgY25fY2FsbGJh Y2sJKmNiOworCXN0cnVjdCB3b3JrX3N0cnVjdAl3b3JrOworCXN0cnVjdCBjbl9xdWV1ZV9kZXYJ KnBkZXY7CisJCisJdm9pZAkJCSgqIGRlc3RydWN0X2RhdGEpKHZvaWQgKik7CisJdm9pZAkJCSpk ZGF0YTsKKworCWludAkJCXNlcSwgZ3JvdXA7CisJc3RydWN0IHNvY2sJCSpubHM7Cit9OworCitz dHJ1Y3QgY25fY3RsX2VudHJ5Cit7CisJc3RydWN0IGxpc3RfaGVhZAlub3RpZnlfZW50cnk7CisJ c3RydWN0IGNuX2N0bF9tc2cJKm1zZzsKK307CisKK3N0cnVjdCBjbl9kZXYKK3sKKwlzdHJ1Y3Qg Y2JfaWQgCQlpZDsKKworCXUzMgkJCXNlcSwgZ3JvdXBzOworCXN0cnVjdCBzb2NrIAkJKm5sczsK Kwl2b2lkIAkJCSgqaW5wdXQpKHN0cnVjdCBzb2NrICpzaywgaW50IGxlbik7CisKKwlzdHJ1Y3Qg Y25fcXVldWVfZGV2CSpjYmRldjsKK307CisKK2ludCBjbl9hZGRfY2FsbGJhY2soc3RydWN0IGNi X2lkICosIGNoYXIgKiwgdm9pZCAoKiBjYWxsYmFjaykodm9pZCAqKSk7Cit2b2lkIGNuX2RlbF9j YWxsYmFjayhzdHJ1Y3QgY2JfaWQgKik7Cit2b2lkIGNuX25ldGxpbmtfc2VuZChzdHJ1Y3QgY25f bXNnICosIHUzMik7CisKK2ludCBjbl9xdWV1ZV9hZGRfY2FsbGJhY2soc3RydWN0IGNuX3F1ZXVl X2RldiAqZGV2LCBzdHJ1Y3QgY25fY2FsbGJhY2sgKmNiKTsKK3ZvaWQgY25fcXVldWVfZGVsX2Nh bGxiYWNrKHN0cnVjdCBjbl9xdWV1ZV9kZXYgKmRldiwgc3RydWN0IGNuX2NhbGxiYWNrICpjYik7 CisKK3N0cnVjdCBjbl9xdWV1ZV9kZXYgKmNuX3F1ZXVlX2FsbG9jX2RldihjaGFyICpuYW1lLCBz dHJ1Y3Qgc29jayAqKTsKK3ZvaWQgY25fcXVldWVfZnJlZV9kZXYoc3RydWN0IGNuX3F1ZXVlX2Rl diAqZGV2KTsKKworaW50IGNuX2NiX2VxdWFsKHN0cnVjdCBjYl9pZCAqLCBzdHJ1Y3QgY2JfaWQg Kik7CisKKyNlbmRpZiAvKiBfX0tFUk5FTF9fICovCisjZW5kaWYgLyogX19DT05ORUNUT1JfSCAq Lwo= --Multipart=_Wed__12_Jan_2005_23_33_45_+0300_.saSz3Lcean_ZrfU Content-Type: application/octet-stream; name="connector.patch.drivers_Kconfig" Content-Disposition: attachment; filename="connector.patch.drivers_Kconfig" Content-Transfer-Encoding: base64 LS0tIGxpbnV4LTIuNi45L2RyaXZlcnMvS2NvbmZpZy5vcmlnCTIwMDUtMDEtMDggMTc6MjI6NTMu MDAwMDAwMDAwICswMzAwCisrKyBsaW51eC0yLjYuOS9kcml2ZXJzL0tjb25maWcJMjAwNS0wMS0x MiAyMzoyNTo0OS4wMDAwMDAwMDAgKzAzMDAKQEAgLTQsNiArNCw4IEBACiAKIHNvdXJjZSAiZHJp dmVycy9iYXNlL0tjb25maWciCiAKK3NvdXJjZSAiZHJpdmVycy9jb25uZWN0b3IvS2NvbmZpZyIK Kwogc291cmNlICJkcml2ZXJzL210ZC9LY29uZmlnIgogCiBzb3VyY2UgImRyaXZlcnMvcGFycG9y dC9LY29uZmlnIgo= --Multipart=_Wed__12_Jan_2005_23_33_45_+0300_.saSz3Lcean_ZrfU Content-Type: application/octet-stream; name="connector.patch.drivers_Makefile" Content-Disposition: attachment; filename="connector.patch.drivers_Makefile" Content-Transfer-Encoding: base64 LS0tIGxpbnV4LTIuNi45L2RyaXZlcnMvTWFrZWZpbGUub3JpZwkyMDA1LTAxLTA4IDE3OjIyOjQ0 LjAwMDAwMDAwMCArMDMwMAorKysgbGludXgtMi42LjkvZHJpdmVycy9NYWtlZmlsZQkyMDA1LTAx LTEyIDIzOjI1OjI4LjAwMDAwMDAwMCArMDMwMApAQCAtMTcsNiArMTcsOCBAQAogIyBkZWZhdWx0 Lgogb2JqLXkJCQkJKz0gY2hhci8KIAorb2JqLSQoQ09ORklHX0NPTk5FQ1RFUikJCSs9IGNvbm5l Y3Rlci8KKwogIyBpODEwZmIgYW5kIGludGVsZmIgZGVwZW5kIG9uIGNoYXIvYWdwLwogb2JqLSQo Q09ORklHX0ZCX0k4MTApICAgICAgICAgICArPSB2aWRlby9pODEwLwogb2JqLSQoQ09ORklHX0ZC X0lOVEVMKSAgICAgICAgICArPSB2aWRlby9pbnRlbGZiLwo= --Multipart=_Wed__12_Jan_2005_23_33_45_+0300_.saSz3Lcean_ZrfU-- - 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/