From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Tiezhu Yang" Subject: [PATCH] md: make the code more readable in the for-loop Date: Sun, 8 May 2016 20:56:55 +0800 (CST) Message-ID: <318e71b0.3d4e.1549071292b.Coremail.kernelpatch@126.com> Mime-Version: 1.0 Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 Return-path: Sender: linux-raid-owner@vger.kernel.org To: shli@kernel.org Cc: linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-raid.ids VGhpcyBwYXRjaCBtb2RpZmllcyByYWlkMS5jLCByYWlkMTAuYyBhbmQgcmFpZDUuYwp0byBtYWtl IHRoZSBjb2RlIG1vcmUgcmVhZGFibGUgaW4gdGhlIGZvci1sb29wCmFuZCBhbHNvIGZpeGVzIHRo ZSBzY3JpcHRzL2NoZWNrcGF0Y2gucGwgZXJyb3I6CkVSUk9SOiB0cmFpbGluZyBzdGF0ZW1lbnRz IHNob3VsZCBiZSBvbiBuZXh0IGxpbmUuCgpTaWduZWQtb2ZmLWJ5OiBUaWV6aHUgWWFuZyA8a2Vy bmVscGF0Y2hAMTI2LmNvbT4KLS0tCiBkcml2ZXJzL21kL3JhaWQxLmMgIHwgIDYgKysrLS0tCiBk cml2ZXJzL21kL3JhaWQxMC5jIHwgIDIgKy0KIGRyaXZlcnMvbWQvcmFpZDUuYyAgfCA1OSArKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxl cyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL21kL3JhaWQxLmMgYi9kcml2ZXJzL21kL3JhaWQxLmMKaW5kZXggYTdmMmI5Yy4u NzYwZGU1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9yYWlkMS5jCisrKyBiL2RyaXZlcnMvbWQv cmFpZDEuYwpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyB2b2lkICogcjFidWZfcG9vbF9hbGxv YyhnZnBfdCBnZnBfZmxhZ3MsIHZvaWQgKmRhdGEpCiAJLyoKIAkgKiBBbGxvY2F0ZSBiaW9zIDog MSBmb3IgcmVhZGluZywgbi0xIGZvciB3cml0aW5nCiAJICovCi0JZm9yIChqID0gcGktPnJhaWRf ZGlza3MgOyBqLS0gOyApIHsKKwlmb3IgKGogPSBwaS0+cmFpZF9kaXNrcyAtIDE7IGogPj0gMDsg ai0tKSB7CiAJCWJpbyA9IGJpb19rbWFsbG9jKGdmcF9mbGFncywgUkVTWU5DX1BBR0VTKTsKIAkJ aWYgKCFiaW8pCiAJCQlnb3RvIG91dF9mcmVlX2JpbzsKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0 aWMgdm9pZCByMWJ1Zl9wb29sX2ZyZWUodm9pZCAqX19yMV9iaW8sIHZvaWQgKmRhdGEpCiAJc3Ry dWN0IHIxYmlvICpyMWJpbyA9IF9fcjFfYmlvOwogCiAJZm9yIChpID0gMDsgaSA8IFJFU1lOQ19Q QUdFUzsgaSsrKQotCQlmb3IgKGogPSBwaS0+cmFpZF9kaXNrczsgai0tIDspIHsKKwkJZm9yIChq ID0gcGktPnJhaWRfZGlza3MgLSAxOyBqID49IDA7IGotLSkgewogCQkJaWYgKGogPT0gMCB8fAog CQkJICAgIHIxYmlvLT5iaW9zW2pdLT5iaV9pb192ZWNbaV0uYnZfcGFnZSAhPQogCQkJICAgIHIx YmlvLT5iaW9zWzBdLT5iaV9pb192ZWNbaV0uYnZfcGFnZSkKQEAgLTE5NzYsNyArMTk3Niw3IEBA IHN0YXRpYyB2b2lkIHByb2Nlc3NfY2hlY2tzKHN0cnVjdCByMWJpbyAqcjFfYmlvKQogCQlzYmlv LT5iaV9lcnJvciA9IDA7CiAKIAkJaWYgKCFlcnJvcikgewotCQkJZm9yIChqID0gdmNudDsgai0t IDsgKSB7CisJCQlmb3IgKGogPSB2Y250IC0gMTsgaiA+PSAwOyBqLS0pIHsKIAkJCQlzdHJ1Y3Qg cGFnZSAqcCwgKnM7CiAJCQkJcCA9IHBiaW8tPmJpX2lvX3ZlY1tqXS5idl9wYWdlOwogCQkJCXMg PSBzYmlvLT5iaV9pb192ZWNbal0uYnZfcGFnZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFp ZDEwLmMgYi9kcml2ZXJzL21kL3JhaWQxMC5jCmluZGV4IDg0ZTI0ZTYuLjUyZjFlMDcgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDEwLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkMTAuYwpAQCAt MTU3LDcgKzE1Nyw3IEBAIHN0YXRpYyB2b2lkICogcjEwYnVmX3Bvb2xfYWxsb2MoZ2ZwX3QgZ2Zw X2ZsYWdzLCB2b2lkICpkYXRhKQogCS8qCiAJICogQWxsb2NhdGUgYmlvcy4KIAkgKi8KLQlmb3Ig KGogPSBuYWxsb2MgOyBqLS0gOyApIHsKKwlmb3IgKGogPSBuYWxsb2MgLSAxOyBqID49IDA7IGot LSkgewogCQliaW8gPSBiaW9fa21hbGxvYyhnZnBfZmxhZ3MsIFJFU1lOQ19QQUdFUyk7CiAJCWlm ICghYmlvKQogCQkJZ290byBvdXRfZnJlZV9iaW87CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3Jh aWQ1LmMgYi9kcml2ZXJzL21kL3JhaWQ1LmMKaW5kZXggNGQzMWIyMy4uZGI5NzhhYiAxMDA2NDQK LS0tIGEvZHJpdmVycy9tZC9yYWlkNS5jCisrKyBiL2RyaXZlcnMvbWQvcmFpZDUuYwpAQCAtNTM2 LDcgKzUzNiw3IEBAIHJldHJ5OgogCXN0cmlwZV9zZXRfaWR4KHNlY3RvciwgY29uZiwgcHJldmlv dXMsIHNoKTsKIAlzaC0+c3RhdGUgPSAwOwogCi0JZm9yIChpID0gc2gtPmRpc2tzOyBpLS07ICkg eworCWZvciAoaSA9IHNoLT5kaXNrcyAtIDE7IGkgPj0gMDsgaS0tKSB7CiAJCXN0cnVjdCByNWRl diAqZGV2ID0gJnNoLT5kZXZbaV07CiAKIAkJaWYgKGRldi0+dG9yZWFkIHx8IGRldi0+cmVhZCB8 fCBkZXYtPnRvd3JpdGUgfHwgZGV2LT53cml0dGVuIHx8CkBAIC04OTAsNyArODkwLDcgQEAgc3Rh dGljIHZvaWQgb3BzX3J1bl9pbyhzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1Y3Qgc3RyaXBl X2hlYWRfc3RhdGUgKnMpCiAKIAlpZiAocjVsX3dyaXRlX3N0cmlwZShjb25mLT5sb2csIHNoKSA9 PSAwKQogCQlyZXR1cm47Ci0JZm9yIChpID0gZGlza3M7IGktLTsgKSB7CisJZm9yIChpID0gZGlz a3MgLSAxOyBpID49IDA7IGktLSkgewogCQlpbnQgcnc7CiAJCWludCByZXBsYWNlX29ubHkgPSAw OwogCQlzdHJ1Y3QgYmlvICpiaSwgKnJiaTsKQEAgLTExNzUsNyArMTE3NSw3IEBAIHN0YXRpYyB2 b2lkIG9wc19jb21wbGV0ZV9iaW9maWxsKHZvaWQgKnN0cmlwZV9oZWFkX3JlZikKIAkJKHVuc2ln bmVkIGxvbmcgbG9uZylzaC0+c2VjdG9yKTsKIAogCS8qIGNsZWFyIGNvbXBsZXRlZCBiaW9maWxs cyAqLwotCWZvciAoaSA9IHNoLT5kaXNrczsgaS0tOyApIHsKKwlmb3IgKGkgPSBzaC0+ZGlza3Mg LSAxOyBpID49IDA7IGktLSkgewogCQlzdHJ1Y3QgcjVkZXYgKmRldiA9ICZzaC0+ZGV2W2ldOwog CiAJCS8qIGFja25vd2xlZGdlIGNvbXBsZXRpb24gb2YgYSBiaW9maWxsIG9wZXJhdGlvbiAqLwpA QCAtMTIxNiw3ICsxMjE2LDcgQEAgc3RhdGljIHZvaWQgb3BzX3J1bl9iaW9maWxsKHN0cnVjdCBz dHJpcGVfaGVhZCAqc2gpCiAJcHJfZGVidWcoIiVzOiBzdHJpcGUgJWxsdVxuIiwgX19mdW5jX18s CiAJCSh1bnNpZ25lZCBsb25nIGxvbmcpc2gtPnNlY3Rvcik7CiAKLQlmb3IgKGkgPSBzaC0+ZGlz a3M7IGktLTsgKSB7CisJZm9yIChpID0gc2gtPmRpc2tzIC0gMTsgaSA+PSAwOyBpLS0pIHsKIAkJ c3RydWN0IHI1ZGV2ICpkZXYgPSAmc2gtPmRldltpXTsKIAkJaWYgKHRlc3RfYml0KFI1X1dhbnRm aWxsLCAmZGV2LT5mbGFncykpIHsKIAkJCXN0cnVjdCBiaW8gKnJiaTsKQEAgLTEzMDcsNyArMTMw Nyw3IEBAIG9wc19ydW5fY29tcHV0ZTUoc3RydWN0IHN0cmlwZV9oZWFkICpzaCwgc3RydWN0IHJh aWQ1X3BlcmNwdSAqcGVyY3B1KQogCQlfX2Z1bmNfXywgKHVuc2lnbmVkIGxvbmcgbG9uZylzaC0+ c2VjdG9yLCB0YXJnZXQpOwogCUJVR19PTighdGVzdF9iaXQoUjVfV2FudGNvbXB1dGUsICZ0Z3Qt PmZsYWdzKSk7CiAKLQlmb3IgKGkgPSBkaXNrczsgaS0tOyApCisJZm9yIChpID0gZGlza3MgLSAx OyBpID49IDA7IGktLSkKIAkJaWYgKGkgIT0gdGFyZ2V0KQogCQkJeG9yX3NyY3NbY291bnQrK10g PSBzaC0+ZGV2W2ldLnBhZ2U7CiAKQEAgLTE0MDcsNyArMTQwNyw3IEBAIG9wc19ydW5fY29tcHV0 ZTZfMShzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1Y3QgcmFpZDVfcGVyY3B1ICpwZXJjcHUp CiAJfSBlbHNlIHsKIAkJLyogQ29tcHV0ZSBhbnkgZGF0YS0gb3IgcC1kcml2ZSB1c2luZyBYT1Ig Ki8KIAkJY291bnQgPSAwOwotCQlmb3IgKGkgPSBkaXNrczsgaS0tIDsgKSB7CisJCWZvciAoaSA9 IGRpc2tzIC0gMTsgaSA+PSAwOyBpLS0pIHsKIAkJCWlmIChpID09IHRhcmdldCB8fCBpID09IHFk X2lkeCkKIAkJCQljb250aW51ZTsKIAkJCWJsb2Nrc1tjb3VudCsrXSA9IHNoLT5kZXZbaV0ucGFn ZTsKQEAgLTE0OTIsNyArMTQ5Miw3IEBAIG9wc19ydW5fY29tcHV0ZTZfMihzdHJ1Y3Qgc3RyaXBl X2hlYWQgKnNoLCBzdHJ1Y3QgcmFpZDVfcGVyY3B1ICpwZXJjcHUpCiAJCQkJZGF0YV90YXJnZXQg PSB0YXJnZXQ7CiAKIAkJCWNvdW50ID0gMDsKLQkJCWZvciAoaSA9IGRpc2tzOyBpLS0gOyApIHsK KwkJCWZvciAoaSA9IGRpc2tzIC0gMTsgaSA+PSAwOyBpLS0pIHsKIAkJCQlpZiAoaSA9PSBkYXRh X3RhcmdldCB8fCBpID09IHFkX2lkeCkKIAkJCQkJY29udGludWU7CiAJCQkJYmxvY2tzW2NvdW50 KytdID0gc2gtPmRldltpXS5wYWdlOwpAQCAtMTU1NCw3ICsxNTU0LDcgQEAgb3BzX3J1bl9wcmV4 b3I1KHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCByYWlkNV9wZXJjcHUgKnBlcmNwdSwK IAlwcl9kZWJ1ZygiJXM6IHN0cmlwZSAlbGx1XG4iLCBfX2Z1bmNfXywKIAkJKHVuc2lnbmVkIGxv bmcgbG9uZylzaC0+c2VjdG9yKTsKIAotCWZvciAoaSA9IGRpc2tzOyBpLS07ICkgeworCWZvciAo aSA9IGRpc2tzIC0gMTsgaSA+PSAwOyBpLS0pIHsKIAkJc3RydWN0IHI1ZGV2ICpkZXYgPSAmc2gt PmRldltpXTsKIAkJLyogT25seSBwcm9jZXNzIGJsb2NrcyB0aGF0IGFyZSBrbm93biB0byBiZSB1 cHRvZGF0ZSAqLwogCQlpZiAodGVzdF9iaXQoUjVfV2FudGRyYWluLCAmZGV2LT5mbGFncykpCkBA IC0xNTk4LDcgKzE1OTgsNyBAQCBvcHNfcnVuX2Jpb2RyYWluKHN0cnVjdCBzdHJpcGVfaGVhZCAq c2gsIHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqdHgpCiAJcHJfZGVidWcoIiVzOiBz dHJpcGUgJWxsdVxuIiwgX19mdW5jX18sCiAJCSh1bnNpZ25lZCBsb25nIGxvbmcpc2gtPnNlY3Rv cik7CiAKLQlmb3IgKGkgPSBkaXNrczsgaS0tOyApIHsKKwlmb3IgKGkgPSBkaXNrcyAtIDE7IGkg Pj0gMDsgaS0tKSB7CiAJCXN0cnVjdCByNWRldiAqZGV2OwogCQlzdHJ1Y3QgYmlvICpjaG9zZW47 CiAKQEAgLTE2NjMsMTMgKzE2NjMsMTMgQEAgc3RhdGljIHZvaWQgb3BzX2NvbXBsZXRlX3JlY29u c3RydWN0KHZvaWQgKnN0cmlwZV9oZWFkX3JlZikKIAlwcl9kZWJ1ZygiJXM6IHN0cmlwZSAlbGx1 XG4iLCBfX2Z1bmNfXywKIAkJKHVuc2lnbmVkIGxvbmcgbG9uZylzaC0+c2VjdG9yKTsKIAotCWZv ciAoaSA9IGRpc2tzOyBpLS07ICkgeworCWZvciAoaSA9IGRpc2tzIC0gMTsgaSA+PSAwOyBpLS0p IHsKIAkJZnVhIHw9IHRlc3RfYml0KFI1X1dhbnRGVUEsICZzaC0+ZGV2W2ldLmZsYWdzKTsKIAkJ c3luYyB8PSB0ZXN0X2JpdChSNV9TeW5jSU8sICZzaC0+ZGV2W2ldLmZsYWdzKTsKIAkJZGlzY2Fy ZCB8PSB0ZXN0X2JpdChSNV9EaXNjYXJkLCAmc2gtPmRldltpXS5mbGFncyk7CiAJfQogCi0JZm9y IChpID0gZGlza3M7IGktLTsgKSB7CisJZm9yIChpID0gZGlza3MgLSAxOyBpID49IDA7IGktLSkg ewogCQlzdHJ1Y3QgcjVkZXYgKmRldiA9ICZzaC0+ZGV2W2ldOwogCiAJCWlmIChkZXYtPndyaXR0 ZW4gfHwgaSA9PSBwZF9pZHggfHwgaSA9PSBxZF9pZHgpIHsKQEAgLTE3MzQsMTQgKzE3MzQsMTQg QEAgYWdhaW46CiAJaWYgKGhlYWRfc2gtPnJlY29uc3RydWN0X3N0YXRlID09IHJlY29uc3RydWN0 X3N0YXRlX3ByZXhvcl9kcmFpbl9ydW4pIHsKIAkJcHJleG9yID0gMTsKIAkJeG9yX2Rlc3QgPSB4 b3Jfc3Jjc1tjb3VudCsrXSA9IHNoLT5kZXZbcGRfaWR4XS5wYWdlOwotCQlmb3IgKGkgPSBkaXNr czsgaS0tOyApIHsKKwkJZm9yIChpID0gZGlza3MgLSAxOyBpID49IDA7IGktLSkgewogCQkJc3Ry dWN0IHI1ZGV2ICpkZXYgPSAmc2gtPmRldltpXTsKIAkJCWlmIChoZWFkX3NoLT5kZXZbaV0ud3Jp dHRlbikKIAkJCQl4b3Jfc3Jjc1tjb3VudCsrXSA9IGRldi0+cGFnZTsKIAkJfQogCX0gZWxzZSB7 CiAJCXhvcl9kZXN0ID0gc2gtPmRldltwZF9pZHhdLnBhZ2U7Ci0JCWZvciAoaSA9IGRpc2tzOyBp LS07ICkgeworCQlmb3IgKGkgPSBkaXNrcyAtIDE7IGkgPj0gMDsgaS0tKSB7CiAJCQlzdHJ1Y3Qg cjVkZXYgKmRldiA9ICZzaC0+ZGV2W2ldOwogCQkJaWYgKGkgIT0gcGRfaWR4KQogCQkJCXhvcl9z cmNzW2NvdW50KytdID0gZGV2LT5wYWdlOwpAQCAtMTg3Miw3ICsxODcyLDcgQEAgc3RhdGljIHZv aWQgb3BzX3J1bl9jaGVja19wKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCByYWlkNV9w ZXJjcHUgKnBlcmNwdSkKIAljb3VudCA9IDA7CiAJeG9yX2Rlc3QgPSBzaC0+ZGV2W3BkX2lkeF0u cGFnZTsKIAl4b3Jfc3Jjc1tjb3VudCsrXSA9IHhvcl9kZXN0OwotCWZvciAoaSA9IGRpc2tzOyBp LS07ICkgeworCWZvciAoaSA9IGRpc2tzIC0gMTsgaSA+PSAwOyBpLS0pIHsKIAkJaWYgKGkgPT0g cGRfaWR4IHx8IGkgPT0gcWRfaWR4KQogCQkJY29udGludWU7CiAJCXhvcl9zcmNzW2NvdW50Kytd ID0gc2gtPmRldltpXS5wYWdlOwpAQCAtMTk3MCw3ICsxOTcwLDcgQEAgc3RhdGljIHZvaWQgcmFp ZF9ydW5fb3BzKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHVuc2lnbmVkIGxvbmcgb3BzX3JlcXVl c3QpCiAJfQogCiAJaWYgKG92ZXJsYXBfY2xlYXIgJiYgIXNoLT5iYXRjaF9oZWFkKQotCQlmb3Ig KGkgPSBkaXNrczsgaS0tOyApIHsKKwkJZm9yIChpID0gZGlza3MgLSAxOyBpID49IDA7IGktLSkg ewogCQkJc3RydWN0IHI1ZGV2ICpkZXYgPSAmc2gtPmRldltpXTsKIAkJCWlmICh0ZXN0X2FuZF9j bGVhcl9iaXQoUjVfT3ZlcmxhcCwgJmRldi0+ZmxhZ3MpKQogCQkJCXdha2VfdXAoJnNoLT5yYWlk X2NvbmYtPndhaXRfZm9yX292ZXJsYXApOwpAQCAtMjg2MSw3ICsyODYxLDcgQEAgc2NoZWR1bGVf cmVjb25zdHJ1Y3Rpb24oc3RydWN0IHN0cmlwZV9oZWFkICpzaCwgc3RydWN0IHN0cmlwZV9oZWFk X3N0YXRlICpzLAogCiAJaWYgKHJjdykgewogCi0JCWZvciAoaSA9IGRpc2tzOyBpLS07ICkgewor CQlmb3IgKGkgPSBkaXNrcyAtIDE7IGkgPj0gMDsgaS0tKSB7CiAJCQlzdHJ1Y3QgcjVkZXYgKmRl diA9ICZzaC0+ZGV2W2ldOwogCiAJCQlpZiAoZGV2LT50b3dyaXRlKSB7CkBAIC0yODk3LDcgKzI4 OTcsNyBAQCBzY2hlZHVsZV9yZWNvbnN0cnVjdGlvbihzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBz dHJ1Y3Qgc3RyaXBlX2hlYWRfc3RhdGUgKnMsCiAJCQkoISh0ZXN0X2JpdChSNV9VUFRPREFURSwg JnNoLT5kZXZbcWRfaWR4XS5mbGFncykgfHwKIAkJCSAgIHRlc3RfYml0KFI1X1dhbnRjb21wdXRl LCAmc2gtPmRldltxZF9pZHhdLmZsYWdzKSkpKTsKIAotCQlmb3IgKGkgPSBkaXNrczsgaS0tOyAp IHsKKwkJZm9yIChpID0gZGlza3MgLSAxOyBpID49IDA7IGktLSkgewogCQkJc3RydWN0IHI1ZGV2 ICpkZXYgPSAmc2gtPmRldltpXTsKIAkJCWlmIChpID09IHBkX2lkeCB8fCBpID09IHFkX2lkeCkK IAkJCQljb250aW51ZTsKQEAgLTMwNzIsNyArMzA3Miw3IEBAIGhhbmRsZV9mYWlsZWRfc3RyaXBl KHN0cnVjdCByNWNvbmYgKmNvbmYsIHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsCiB7CiAJaW50IGk7 CiAJQlVHX09OKHNoLT5iYXRjaF9oZWFkKTsKLQlmb3IgKGkgPSBkaXNrczsgaS0tOyApIHsKKwlm b3IgKGkgPSBkaXNrcyAtIDE7IGkgPj0gMDsgaS0tKSB7CiAJCXN0cnVjdCBiaW8gKmJpOwogCQlp bnQgYml0bWFwX2VuZCA9IDA7CiAKQEAgLTMzODYsNyArMzM4Niw3IEBAIHN0YXRpYyBpbnQgZmV0 Y2hfYmxvY2soc3RydWN0IHN0cmlwZV9oZWFkICpzaCwgc3RydWN0IHN0cmlwZV9oZWFkX3N0YXRl ICpzLAogCQkJICogZG8gaXQgaWYgZmFpbGVkID49IDIKIAkJCSAqLwogCQkJaW50IG90aGVyOwot CQkJZm9yIChvdGhlciA9IGRpc2tzOyBvdGhlci0tOyApIHsKKwkJCWZvciAob3RoZXIgPSBkaXNr cyAtIDE7IG90aGVyID49IDA7IG90aGVyLS0pIHsKIAkJCQlpZiAob3RoZXIgPT0gZGlza19pZHgp CiAJCQkJCWNvbnRpbnVlOwogCQkJCWlmICghdGVzdF9iaXQoUjVfVVBUT0RBVEUsCkBAIC0zNDMz LDcgKzM0MzMsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfc3RyaXBlX2ZpbGwoc3RydWN0IHN0cmlw ZV9oZWFkICpzaCwKIAkgKi8KIAlpZiAoIXRlc3RfYml0KFNUUklQRV9DT01QVVRFX1JVTiwgJnNo LT5zdGF0ZSkgJiYgIXNoLT5jaGVja19zdGF0ZSAmJgogCSAgICAhc2gtPnJlY29uc3RydWN0X3N0 YXRlKQotCQlmb3IgKGkgPSBkaXNrczsgaS0tOyApCisJCWZvciAoaSA9IGRpc2tzIC0gMTsgaSA+ PSAwOyBpLS0pCiAJCQlpZiAoZmV0Y2hfYmxvY2soc2gsIHMsIGksIGRpc2tzKSkKIAkJCQlicmVh azsKIAlzZXRfYml0KFNUUklQRV9IQU5ETEUsICZzaC0+c3RhdGUpOwpAQCAtMzQ1NSw3ICszNDU1 LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX3N0cmlwZV9jbGVhbl9ldmVudChzdHJ1Y3QgcjVjb25m ICpjb25mLAogCXN0cnVjdCBzdHJpcGVfaGVhZCAqaGVhZF9zaCA9IHNoOwogCWJvb2wgZG9fZW5k aW8gPSBmYWxzZTsKIAotCWZvciAoaSA9IGRpc2tzOyBpLS07ICkKKwlmb3IgKGkgPSBkaXNrcyAt IDE7IGkgPj0gMDsgaS0tKQogCQlpZiAoc2gtPmRldltpXS53cml0dGVuKSB7CiAJCQlkZXYgPSAm c2gtPmRldltpXTsKIAkJCWlmICghdGVzdF9iaXQoUjVfTE9DS0VELCAmZGV2LT5mbGFncykgJiYK QEAgLTM1NzMsNyArMzU3Myw4IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9zdHJpcGVfZGlydHlpbmco c3RydWN0IHI1Y29uZiAqY29uZiwKIAkJcHJfZGVidWcoImZvcmNlIFJDVyBybXdfbGV2ZWw9JXUs IHJlY292ZXJ5X2NwPSVsbHUgc2gtPnNlY3Rvcj0lbGx1XG4iLAogCQkJIGNvbmYtPnJtd19sZXZl bCwgKHVuc2lnbmVkIGxvbmcgbG9uZylyZWNvdmVyeV9jcCwKIAkJCSAodW5zaWduZWQgbG9uZyBs b25nKXNoLT5zZWN0b3IpOwotCX0gZWxzZSBmb3IgKGkgPSBkaXNrczsgaS0tOyApIHsKKwl9IGVs c2UKKwlmb3IgKGkgPSBkaXNrcyAtIDE7IGkgPj0gMDsgaS0tKSB7CiAJCS8qIHdvdWxkIEkgaGF2 ZSB0byByZWFkIHRoaXMgYnVmZmVyIGZvciByZWFkX21vZGlmeV93cml0ZSAqLwogCQlzdHJ1Y3Qg cjVkZXYgKmRldiA9ICZzaC0+ZGV2W2ldOwogCQlpZiAoKGRldi0+dG93cml0ZSB8fCBpID09IHNo LT5wZF9pZHggfHwgaSA9PSBzaC0+cWRfaWR4KSAmJgpAQCAtMzYwNiw3ICszNjA3LDcgQEAgc3Rh dGljIHZvaWQgaGFuZGxlX3N0cmlwZV9kaXJ0eWluZyhzdHJ1Y3QgcjVjb25mICpjb25mLAogCQkJ YmxrX2FkZF90cmFjZV9tc2coY29uZi0+bWRkZXYtPnF1ZXVlLAogCQkJCQkgICJyYWlkNSBybXcg JWxsdSAlZCIsCiAJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZylzaC0+c2VjdG9yLCBybXcpOwot CQlmb3IgKGkgPSBkaXNrczsgaS0tOyApIHsKKwkJZm9yIChpID0gZGlza3MgLSAxOyBpID49IDA7 IGktLSkgewogCQkJc3RydWN0IHI1ZGV2ICpkZXYgPSAmc2gtPmRldltpXTsKIAkJCWlmICgoZGV2 LT50b3dyaXRlIHx8IGkgPT0gc2gtPnBkX2lkeCB8fCBpID09IHNoLT5xZF9pZHgpICYmCiAJCQkg ICAgIXRlc3RfYml0KFI1X0xPQ0tFRCwgJmRldi0+ZmxhZ3MpICYmCkBAIC0zNjMxLDcgKzM2MzIs NyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfc3RyaXBlX2RpcnR5aW5nKHN0cnVjdCByNWNvbmYgKmNv bmYsCiAJCS8qIHdhbnQgcmVjb25zdHJ1Y3Qgd3JpdGUsIGJ1dCBuZWVkIHRvIGdldCBzb21lIGRh dGEgKi8KIAkJaW50IHFyZWFkID0wOwogCQlyY3cgPSAwOwotCQlmb3IgKGkgPSBkaXNrczsgaS0t OyApIHsKKwkJZm9yIChpID0gZGlza3MgLSAxOyBpID49IDA7IGktLSkgewogCQkJc3RydWN0IHI1 ZGV2ICpkZXYgPSAmc2gtPmRldltpXTsKIAkJCWlmICghdGVzdF9iaXQoUjVfT1ZFUldSSVRFLCAm ZGV2LT5mbGFncykgJiYKIAkJCSAgICBpICE9IHNoLT5wZF9pZHggJiYgaSAhPSBzaC0+cWRfaWR4 ICYmCkBAIC00MDIxLDcgKzQwMjIsNyBAQCBzdGF0aWMgdm9pZCBhbmFseXNlX3N0cmlwZShzdHJ1 Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1Y3Qgc3RyaXBlX2hlYWRfc3RhdGUgKnMpCiAKIAkvKiBO b3cgdG8gbG9vayBhcm91bmQgYW5kIHNlZSB3aGF0IGNhbiBiZSBkb25lICovCiAJcmN1X3JlYWRf bG9jaygpOwotCWZvciAoaT1kaXNrczsgaS0tOyApIHsKKwlmb3IgKGkgPSBkaXNrcyAtIDE7IGkg Pj0gMDsgaS0tKSB7CiAJCXN0cnVjdCBtZF9yZGV2ICpyZGV2OwogCQlzZWN0b3JfdCBmaXJzdF9i YWQ7CiAJCWludCBiYWRfc2VjdG9yczsKQEAgLTQzOTEsNyArNDM5Miw3IEBAIHN0YXRpYyB2b2lk IGhhbmRsZV9zdHJpcGUoc3RydWN0IHN0cmlwZV9oZWFkICpzaCkKIAkJQlVHX09OKHNoLT5xZF9p ZHggPj0gMCAmJgogCQkgICAgICAgIXRlc3RfYml0KFI1X1VQVE9EQVRFLCAmc2gtPmRldltzaC0+ cWRfaWR4XS5mbGFncykgJiYKIAkJICAgICAgICF0ZXN0X2JpdChSNV9EaXNjYXJkLCAmc2gtPmRl dltzaC0+cWRfaWR4XS5mbGFncykpOwotCQlmb3IgKGkgPSBkaXNrczsgaS0tOyApIHsKKwkJZm9y IChpID0gZGlza3MgLSAxOyBpID49IDA7IGktLSkgewogCQkJc3RydWN0IHI1ZGV2ICpkZXYgPSAm c2gtPmRldltpXTsKIAkJCWlmICh0ZXN0X2JpdChSNV9MT0NLRUQsICZkZXYtPmZsYWdzKSAmJgog CQkJCShpID09IHNoLT5wZF9pZHggfHwgaSA9PSBzaC0+cWRfaWR4IHx8CkBAIC00NTM5LDcgKzQ1 NDAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfc3RyaXBlKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gp CiAKIAkJc2gtPnJlY29uc3RydWN0X3N0YXRlID0gcmVjb25zdHJ1Y3Rfc3RhdGVfaWRsZTsKIAkJ Y2xlYXJfYml0KFNUUklQRV9FWFBBTkRJTkcsICZzaC0+c3RhdGUpOwotCQlmb3IgKGkgPSBjb25m LT5yYWlkX2Rpc2tzOyBpLS07ICkgeworCQlmb3IgKGkgPSBjb25mLT5yYWlkX2Rpc2tzIC0gMTsg aSA+PSAwOyBpLS0pIHsKIAkJCXNldF9iaXQoUjVfV2FudHdyaXRlLCAmc2gtPmRldltpXS5mbGFn cyk7CiAJCQlzZXRfYml0KFI1X0xPQ0tFRCwgJnNoLT5kZXZbaV0uZmxhZ3MpOwogCQkJcy5sb2Nr ZWQrKzsKQEAgLTQ1NzksNyArNDU4MCw3IEBAIGZpbmlzaDoKIAl9CiAKIAlpZiAocy5oYW5kbGVf YmFkX2Jsb2NrcykKLQkJZm9yIChpID0gZGlza3M7IGktLTsgKSB7CisJCWZvciAoaSA9IGRpc2tz IC0gMTsgaSA+PSAwOyBpLS0pIHsKIAkJCXN0cnVjdCBtZF9yZGV2ICpyZGV2OwogCQkJc3RydWN0 IHI1ZGV2ICpkZXYgPSAmc2gtPmRldltpXTsKIAkJCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUjVf V3JpdGVFcnJvciwgJmRldi0+ZmxhZ3MpKSB7CkBAIC01NDg2LDcgKzU0ODcsNyBAQCBzdGF0aWMg c2VjdG9yX3QgcmVzaGFwZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90IHNl Y3Rvcl9uciwgaW50ICpzawogCQkvKiBJZiBhbnkgb2YgdGhpcyBzdHJpcGUgaXMgYmV5b25kIHRo ZSBlbmQgb2YgdGhlIG9sZAogCQkgKiBhcnJheSwgdGhlbiB3ZSBuZWVkIHRvIHplcm8gdGhvc2Ug YmxvY2tzCiAJCSAqLwotCQlmb3IgKGo9c2gtPmRpc2tzOyBqLS07KSB7CisJCWZvciAoaiA9IHNo LT5kaXNrcyAtIDE7IGogPj0gMDsgai0tKSB7CiAJCQlzZWN0b3JfdCBzOwogCQkJaWYgKGogPT0g c2gtPnBkX2lkeCkKIAkJCQljb250aW51ZTsKLS0gCjEuOC4zLjE=