Thread (28 messages) 28 messages, 3 authors, 2018-03-02
STALE3033d
Revisions (3)
  1. v2 [diff vs current]
  2. v3 [diff vs current]
  3. v4 current

[PATCH 06/15] lightnvm: normalize geometry nomenclature

From: Javier González <hidden>
Date: 2018-02-28 17:11:48
Also in: linux-nvme, lkml
Subsystem: nvm express driver, the rest · Maintainers: Keith Busch, Jens Axboe, Christoph Hellwig, Sagi Grimberg, Linus Torvalds

Tm9ybWFsaXplIG5vbWVuY2xhdHVyZSBmb3IgbmFtaW5nIGNoYW5uZWxzLCBsdW5zLCBjaHVua3Ms
IHBsYW5lcyBhbmQKc2VjdG9ycyBhcyB3ZWxsIGFzIGRlcml2YXRpb25zIGluIG9yZGVyIHRvIGlt
cHJvdmUgcmVhZGFiaWxpdHkuCgpTaWduZWQtb2ZmLWJ5OiBKYXZpZXIgR29uesOhbGV6IDxqYXZp
ZXJAY25leGxhYnMuY29tPgotLS0KIGRyaXZlcnMvbGlnaHRudm0vY29yZS5jICAgICAgIHwgODkg
KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9saWdo
dG52bS9wYmxrLWNvcmUuYyAgfCAgNCArLQogZHJpdmVycy9saWdodG52bS9wYmxrLWluaXQuYyAg
fCAzMCArKysrKysrLS0tLS0tLS0KIGRyaXZlcnMvbGlnaHRudm0vcGJsay1zeXNmcy5jIHwgIDQg
Ky0KIGRyaXZlcnMvbGlnaHRudm0vcGJsay5oICAgICAgIHwgMjAgKysrKystLS0tLQogZHJpdmVy
cy9udm1lL2hvc3QvbGlnaHRudm0uYyAgfCA1NCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQog
aW5jbHVkZS9saW51eC9saWdodG52bS5oICAgICAgfCAxNiArKysrLS0tLQogNyBmaWxlcyBjaGFu
Z2VkLCAxMDggaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry
aXZlcnMvbGlnaHRudm0vY29yZS5jIGIvZHJpdmVycy9saWdodG52bS9jb3JlLmMKaW5kZXggYzRm
NzJmYmFkMmJmLi5iODY5ZTMwNTEyNjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGlnaHRudm0vY29y
ZS5jCisrKyBiL2RyaXZlcnMvbGlnaHRudm0vY29yZS5jCkBAIC0zNiwxMyArMzYsMTMgQEAgc3Rh
dGljIERFQ0xBUkVfUldTRU0obnZtX2xvY2spOwogLyogTWFwIGJldHdlZW4gdmlydHVhbCBhbmQg
cGh5c2ljYWwgY2hhbm5lbCBhbmQgbHVuICovCiBzdHJ1Y3QgbnZtX2NoX21hcCB7CiAJaW50IGNo
X29mZjsKLQlpbnQgbnJfbHVuczsKKwlpbnQgbnVtX2x1bjsKIAlpbnQgKmx1bl9vZmZzOwogfTsK
IAogc3RydWN0IG52bV9kZXZfbWFwIHsKIAlzdHJ1Y3QgbnZtX2NoX21hcCAqY2hubHM7Ci0JaW50
IG5yX2NobmxzOworCWludCBudW1fY2g7CiB9OwogCiBzdGF0aWMgc3RydWN0IG52bV90YXJnZXQg
Km52bV9maW5kX3RhcmdldChzdHJ1Y3QgbnZtX2RldiAqZGV2LCBjb25zdCBjaGFyICpuYW1lKQpA
QCAtMTE0LDE1ICsxMTQsMTUgQEAgc3RhdGljIHZvaWQgbnZtX3JlbW92ZV90Z3RfZGV2KHN0cnVj
dCBudm1fdGd0X2RldiAqdGd0X2RldiwgaW50IGNsZWFyKQogCXN0cnVjdCBudm1fZGV2X21hcCAq
ZGV2X21hcCA9IHRndF9kZXYtPm1hcDsKIAlpbnQgaSwgajsKIAotCWZvciAoaSA9IDA7IGkgPCBk
ZXZfbWFwLT5ucl9jaG5sczsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IGRldl9tYXAtPm51bV9j
aDsgaSsrKSB7CiAJCXN0cnVjdCBudm1fY2hfbWFwICpjaF9tYXAgPSAmZGV2X21hcC0+Y2hubHNb
aV07CiAJCWludCAqbHVuX29mZnMgPSBjaF9tYXAtPmx1bl9vZmZzOwogCQlpbnQgY2ggPSBpICsg
Y2hfbWFwLT5jaF9vZmY7CiAKIAkJaWYgKGNsZWFyKSB7Ci0JCQlmb3IgKGogPSAwOyBqIDwgY2hf
bWFwLT5ucl9sdW5zOyBqKyspIHsKKwkJCWZvciAoaiA9IDA7IGogPCBjaF9tYXAtPm51bV9sdW47
IGorKykgewogCQkJCWludCBsdW4gPSBqICsgbHVuX29mZnNbal07Ci0JCQkJaW50IGx1bmlkID0g
KGNoICogZGV2LT5nZW8ubnJfbHVucykgKyBsdW47CisJCQkJaW50IGx1bmlkID0gKGNoICogZGV2
LT5nZW8ubnVtX2x1bikgKyBsdW47CiAKIAkJCQlXQVJOX09OKCF0ZXN0X2FuZF9jbGVhcl9iaXQo
bHVuaWQsCiAJCQkJCQkJZGV2LT5sdW5fbWFwKSk7CkBAIC0xNDcsNDcgKzE0Nyw0NiBAQCBzdGF0
aWMgc3RydWN0IG52bV90Z3RfZGV2ICpudm1fY3JlYXRlX3RndF9kZXYoc3RydWN0IG52bV9kZXYg
KmRldiwKIAlzdHJ1Y3QgbnZtX2Rldl9tYXAgKmRldl9ybWFwID0gZGV2LT5ybWFwOwogCXN0cnVj
dCBudm1fZGV2X21hcCAqZGV2X21hcDsKIAlzdHJ1Y3QgcHBhX2FkZHIgKmx1bnM7Ci0JaW50IG5y
X2x1bnMgPSBsdW5fZW5kIC0gbHVuX2JlZ2luICsgMTsKLQlpbnQgbHVuc19sZWZ0ID0gbnJfbHVu
czsKLQlpbnQgbnJfY2hubHMgPSBucl9sdW5zIC8gZGV2LT5nZW8ubnJfbHVuczsKLQlpbnQgbnJf
Y2hubHNfbW9kID0gbnJfbHVucyAlIGRldi0+Z2VvLm5yX2x1bnM7Ci0JaW50IGJjaCA9IGx1bl9i
ZWdpbiAvIGRldi0+Z2VvLm5yX2x1bnM7Ci0JaW50IGJsdW4gPSBsdW5fYmVnaW4gJSBkZXYtPmdl
by5ucl9sdW5zOworCWludCBudW1fbHVuID0gbHVuX2VuZCAtIGx1bl9iZWdpbiArIDE7CisJaW50
IGx1bnNfbGVmdCA9IG51bV9sdW47CisJaW50IG51bV9jaCA9IG51bV9sdW4gLyBkZXYtPmdlby5u
dW1fbHVuOworCWludCBudW1fY2hfbW9kID0gbnVtX2x1biAlIGRldi0+Z2VvLm51bV9sdW47CisJ
aW50IGJjaCA9IGx1bl9iZWdpbiAvIGRldi0+Z2VvLm51bV9sdW47CisJaW50IGJsdW4gPSBsdW5f
YmVnaW4gJSBkZXYtPmdlby5udW1fbHVuOwogCWludCBsdW5pZCA9IDA7CiAJaW50IGx1bl9iYWxh
bmNlZCA9IDE7Ci0JaW50IHNlY19wZXJfbHVuLCBwcmV2X25yX2x1bnM7CisJaW50IHNlY19wZXJf
bHVuLCBwcmV2X251bV9sdW47CiAJaW50IGksIGo7CiAKLQlucl9jaG5scyA9IChucl9jaG5sc19t
b2QgPT0gMCkgPyBucl9jaG5scyA6IG5yX2NobmxzICsgMTsKKwludW1fY2ggPSAobnVtX2NoX21v
ZCA9PSAwKSA/IG51bV9jaCA6IG51bV9jaCArIDE7CiAKIAlkZXZfbWFwID0ga21hbGxvYyhzaXpl
b2Yoc3RydWN0IG52bV9kZXZfbWFwKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFkZXZfbWFwKQogCQln
b3RvIGVycl9kZXY7CiAKLQlkZXZfbWFwLT5jaG5scyA9IGtjYWxsb2MobnJfY2hubHMsIHNpemVv
ZihzdHJ1Y3QgbnZtX2NoX21hcCksCi0JCQkJCQkJCUdGUF9LRVJORUwpOworCWRldl9tYXAtPmNo
bmxzID0ga2NhbGxvYyhudW1fY2gsIHNpemVvZihzdHJ1Y3QgbnZtX2NoX21hcCksIEdGUF9LRVJO
RUwpOwogCWlmICghZGV2X21hcC0+Y2hubHMpCiAJCWdvdG8gZXJyX2NobmxzOwogCi0JbHVucyA9
IGtjYWxsb2MobnJfbHVucywgc2l6ZW9mKHN0cnVjdCBwcGFfYWRkciksIEdGUF9LRVJORUwpOwor
CWx1bnMgPSBrY2FsbG9jKG51bV9sdW4sIHNpemVvZihzdHJ1Y3QgcHBhX2FkZHIpLCBHRlBfS0VS
TkVMKTsKIAlpZiAoIWx1bnMpCiAJCWdvdG8gZXJyX2x1bnM7CiAKLQlwcmV2X25yX2x1bnMgPSAo
bHVuc19sZWZ0ID4gZGV2LT5nZW8ubnJfbHVucykgPwotCQkJCQlkZXYtPmdlby5ucl9sdW5zIDog
bHVuc19sZWZ0OwotCWZvciAoaSA9IDA7IGkgPCBucl9jaG5sczsgaSsrKSB7CisJcHJldl9udW1f
bHVuID0gKGx1bnNfbGVmdCA+IGRldi0+Z2VvLm51bV9sdW4pID8KKwkJCQkJZGV2LT5nZW8ubnVt
X2x1biA6IGx1bnNfbGVmdDsKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2NoOyBpKyspIHsKIAkJc3Ry
dWN0IG52bV9jaF9tYXAgKmNoX3JtYXAgPSAmZGV2X3JtYXAtPmNobmxzW2kgKyBiY2hdOwogCQlp
bnQgKmx1bl9yb2ZmcyA9IGNoX3JtYXAtPmx1bl9vZmZzOwogCQlzdHJ1Y3QgbnZtX2NoX21hcCAq
Y2hfbWFwID0gJmRldl9tYXAtPmNobmxzW2ldOwogCQlpbnQgKmx1bl9vZmZzOwotCQlpbnQgbHVu
c19pbl9jaG5sID0gKGx1bnNfbGVmdCA+IGRldi0+Z2VvLm5yX2x1bnMpID8KLQkJCQkJZGV2LT5n
ZW8ubnJfbHVucyA6IGx1bnNfbGVmdDsKKwkJaW50IGx1bnNfaW5fY2hubCA9IChsdW5zX2xlZnQg
PiBkZXYtPmdlby5udW1fbHVuKSA/CisJCQkJCWRldi0+Z2VvLm51bV9sdW4gOiBsdW5zX2xlZnQ7
CiAKLQkJaWYgKGx1bl9iYWxhbmNlZCAmJiBwcmV2X25yX2x1bnMgIT0gbHVuc19pbl9jaG5sKQor
CQlpZiAobHVuX2JhbGFuY2VkICYmIHByZXZfbnVtX2x1biAhPSBsdW5zX2luX2NobmwpCiAJCQls
dW5fYmFsYW5jZWQgPSAwOwogCiAJCWNoX21hcC0+Y2hfb2ZmID0gY2hfcm1hcC0+Y2hfb2ZmID0g
YmNoOwotCQljaF9tYXAtPm5yX2x1bnMgPSBsdW5zX2luX2Nobmw7CisJCWNoX21hcC0+bnVtX2x1
biA9IGx1bnNfaW5fY2hubDsKIAogCQlsdW5fb2ZmcyA9IGtjYWxsb2MobHVuc19pbl9jaG5sLCBz
aXplb2YoaW50KSwgR0ZQX0tFUk5FTCk7CiAJCWlmICghbHVuX29mZnMpCkBAIC0yMDksNyArMjA4
LDcgQEAgc3RhdGljIHN0cnVjdCBudm1fdGd0X2RldiAqbnZtX2NyZWF0ZV90Z3RfZGV2KHN0cnVj
dCBudm1fZGV2ICpkZXYsCiAJCWx1bnNfbGVmdCAtPSBsdW5zX2luX2Nobmw7CiAJfQogCi0JZGV2
X21hcC0+bnJfY2hubHMgPSBucl9jaG5sczsKKwlkZXZfbWFwLT5udW1fY2ggPSBudW1fY2g7CiAK
IAl0Z3RfZGV2ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IG52bV90Z3RfZGV2KSwgR0ZQX0tFUk5F
TCk7CiAJaWYgKCF0Z3RfZGV2KQpAQCAtMjE5LDE1ICsyMTgsMTUgQEAgc3RhdGljIHN0cnVjdCBu
dm1fdGd0X2RldiAqbnZtX2NyZWF0ZV90Z3RfZGV2KHN0cnVjdCBudm1fZGV2ICpkZXYsCiAJbWVt
Y3B5KCZ0Z3RfZGV2LT5nZW8sICZkZXYtPmdlbywgc2l6ZW9mKHN0cnVjdCBudm1fZ2VvKSk7CiAK
IAkvKiBUYXJnZXQgZGV2aWNlIG9ubHkgb3ducyBhIHBvcnRpb24gb2YgdGhlIHBoeXNpY2FsIGRl
dmljZSAqLwotCXRndF9kZXYtPmdlby5ucl9jaG5scyA9IG5yX2NobmxzOwotCXRndF9kZXYtPmdl
by5ucl9sdW5zID0gKGx1bl9iYWxhbmNlZCkgPyBwcmV2X25yX2x1bnMgOiAtMTsKLQl0Z3RfZGV2
LT5nZW8uYWxsX2x1bnMgPSBucl9sdW5zOwotCXRndF9kZXYtPmdlby5hbGxfY2h1bmtzID0gbnJf
bHVucyAqIGRldi0+Z2VvLm5yX2Noa3M7CisJdGd0X2Rldi0+Z2VvLm51bV9jaCA9IG51bV9jaDsK
Kwl0Z3RfZGV2LT5nZW8ubnVtX2x1biA9IChsdW5fYmFsYW5jZWQpID8gcHJldl9udW1fbHVuIDog
LTE7CisJdGd0X2Rldi0+Z2VvLmFsbF9sdW5zID0gbnVtX2x1bjsKKwl0Z3RfZGV2LT5nZW8uYWxs
X2NodW5rcyA9IG51bV9sdW4gKiBkZXYtPmdlby5udW1fY2hrOwogCiAJdGd0X2Rldi0+Z2VvLm9w
ID0gb3A7CiAKLQlzZWNfcGVyX2x1biA9IGRldi0+Z2VvLmNsYmEgKiBkZXYtPmdlby5ucl9jaGtz
OwotCXRndF9kZXYtPmdlby50b3RhbF9zZWNzID0gbnJfbHVucyAqIHNlY19wZXJfbHVuOworCXNl
Y19wZXJfbHVuID0gZGV2LT5nZW8uY2xiYSAqIGRldi0+Z2VvLm51bV9jaGs7CisJdGd0X2Rldi0+
Z2VvLnRvdGFsX3NlY3MgPSBudW1fbHVuICogc2VjX3Blcl9sdW47CiAKIAl0Z3RfZGV2LT5xID0g
ZGV2LT5xOwogCXRndF9kZXYtPm1hcCA9IGRldl9tYXA7CkBAIC01MDUsMjAgKzUwNCwyMCBAQCBz
dGF0aWMgaW50IG52bV9yZWdpc3Rlcl9tYXAoc3RydWN0IG52bV9kZXYgKmRldikKIAlpZiAoIXJt
YXApCiAJCWdvdG8gZXJyX3JtYXA7CiAKLQlybWFwLT5jaG5scyA9IGtjYWxsb2MoZGV2LT5nZW8u
bnJfY2hubHMsIHNpemVvZihzdHJ1Y3QgbnZtX2NoX21hcCksCisJcm1hcC0+Y2hubHMgPSBrY2Fs
bG9jKGRldi0+Z2VvLm51bV9jaCwgc2l6ZW9mKHN0cnVjdCBudm1fY2hfbWFwKSwKIAkJCQkJCQkJ
R0ZQX0tFUk5FTCk7CiAJaWYgKCFybWFwLT5jaG5scykKIAkJZ290byBlcnJfY2hubHM7CiAKLQlm
b3IgKGkgPSAwOyBpIDwgZGV2LT5nZW8ubnJfY2hubHM7IGkrKykgeworCWZvciAoaSA9IDA7IGkg
PCBkZXYtPmdlby5udW1fY2g7IGkrKykgewogCQlzdHJ1Y3QgbnZtX2NoX21hcCAqY2hfcm1hcDsK
IAkJaW50ICpsdW5fcm9mZnM7Ci0JCWludCBsdW5zX2luX2NobmwgPSBkZXYtPmdlby5ucl9sdW5z
OworCQlpbnQgbHVuc19pbl9jaG5sID0gZGV2LT5nZW8ubnVtX2x1bjsKIAogCQljaF9ybWFwID0g
JnJtYXAtPmNobmxzW2ldOwogCiAJCWNoX3JtYXAtPmNoX29mZiA9IC0xOwotCQljaF9ybWFwLT5u
cl9sdW5zID0gbHVuc19pbl9jaG5sOworCQljaF9ybWFwLT5udW1fbHVuID0gbHVuc19pbl9jaG5s
OwogCiAJCWx1bl9yb2ZmcyA9IGtjYWxsb2MobHVuc19pbl9jaG5sLCBzaXplb2YoaW50KSwgR0ZQ
X0tFUk5FTCk7CiAJCWlmICghbHVuX3JvZmZzKQpAQCAtNTQ3LDcgKzU0Niw3IEBAIHN0YXRpYyB2
b2lkIG52bV91bnJlZ2lzdGVyX21hcChzdHJ1Y3QgbnZtX2RldiAqZGV2KQogCXN0cnVjdCBudm1f
ZGV2X21hcCAqcm1hcCA9IGRldi0+cm1hcDsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgPCBk
ZXYtPmdlby5ucl9jaG5sczsgaSsrKQorCWZvciAoaSA9IDA7IGkgPCBkZXYtPmdlby5udW1fY2g7
IGkrKykKIAkJa2ZyZWUocm1hcC0+Y2hubHNbaV0ubHVuX29mZnMpOwogCiAJa2ZyZWUocm1hcC0+
Y2hubHMpOwpAQCAtNjc2LDcgKzY3NSw3IEBAIHN0YXRpYyBpbnQgbnZtX3NldF9ycWRfcHBhbGlz
dChzdHJ1Y3QgbnZtX3RndF9kZXYgKnRndF9kZXYsIHN0cnVjdCBudm1fcnEgKnJxZCwKIAlpbnQg
aSwgcGxhbmVfY250LCBwbF9pZHg7CiAJc3RydWN0IHBwYV9hZGRyIHBwYTsKIAotCWlmIChnZW8t
PnBsYW5lX21vZGUgPT0gTlZNX1BMQU5FX1NJTkdMRSAmJiBucl9wcGFzID09IDEpIHsKKwlpZiAo
Z2VvLT5wbG5fbW9kZSA9PSBOVk1fUExBTkVfU0lOR0xFICYmIG5yX3BwYXMgPT0gMSkgewogCQly
cWQtPm5yX3BwYXMgPSBucl9wcGFzOwogCQlycWQtPnBwYV9hZGRyID0gcHBhc1swXTsKIApAQCAt
NjkwLDcgKzY4OSw3IEBAIHN0YXRpYyBpbnQgbnZtX3NldF9ycWRfcHBhbGlzdChzdHJ1Y3QgbnZt
X3RndF9kZXYgKnRndF9kZXYsIHN0cnVjdCBudm1fcnEgKnJxZCwKIAkJcmV0dXJuIC1FTk9NRU07
CiAJfQogCi0JcGxhbmVfY250ID0gZ2VvLT5wbGFuZV9tb2RlOworCXBsYW5lX2NudCA9IGdlby0+
cGxuX21vZGU7CiAJcnFkLT5ucl9wcGFzICo9IHBsYW5lX2NudDsKIAogCWZvciAoaSA9IDA7IGkg
PCBucl9wcGFzOyBpKyspIHsKQEAgLTgwOCwxNSArODA3LDE1IEBAIGludCBudm1fYmJfdGJsX2Zv
bGQoc3RydWN0IG52bV9kZXYgKmRldiwgdTggKmJsa3MsIGludCBucl9ibGtzKQogCXN0cnVjdCBu
dm1fZ2VvICpnZW8gPSAmZGV2LT5nZW87CiAJaW50IGJsaywgb2Zmc2V0LCBwbCwgYmxrdHlwZTsK
IAotCWlmIChucl9ibGtzICE9IGdlby0+bnJfY2hrcyAqIGdlby0+cGxhbmVfbW9kZSkKKwlpZiAo
bnJfYmxrcyAhPSBnZW8tPm51bV9jaGsgKiBnZW8tPnBsbl9tb2RlKQogCQlyZXR1cm4gLUVJTlZB
TDsKIAotCWZvciAoYmxrID0gMDsgYmxrIDwgZ2VvLT5ucl9jaGtzOyBibGsrKykgewotCQlvZmZz
ZXQgPSBibGsgKiBnZW8tPnBsYW5lX21vZGU7CisJZm9yIChibGsgPSAwOyBibGsgPCBnZW8tPm51
bV9jaGs7IGJsaysrKSB7CisJCW9mZnNldCA9IGJsayAqIGdlby0+cGxuX21vZGU7CiAJCWJsa3R5
cGUgPSBibGtzW29mZnNldF07CiAKIAkJLyogQmFkIGJsb2NrcyBvbiBhbnkgcGxhbmVzIHRha2Ug
cHJlY2VkZW5jZSBvdmVyIG90aGVyIHR5cGVzICovCi0JCWZvciAocGwgPSAwOyBwbCA8IGdlby0+
cGxhbmVfbW9kZTsgcGwrKykgeworCQlmb3IgKHBsID0gMDsgcGwgPCBnZW8tPnBsbl9tb2RlOyBw
bCsrKSB7CiAJCQlpZiAoYmxrc1tvZmZzZXQgKyBwbF0gJgogCQkJCQkoTlZNX0JMS19UX0JBRHxO
Vk1fQkxLX1RfR1JXTl9CQUQpKSB7CiAJCQkJYmxrdHlwZSA9IGJsa3Nbb2Zmc2V0ICsgcGxdOwpA
QCAtODI3LDcgKzgyNiw3IEBAIGludCBudm1fYmJfdGJsX2ZvbGQoc3RydWN0IG52bV9kZXYgKmRl
diwgdTggKmJsa3MsIGludCBucl9ibGtzKQogCQlibGtzW2Jsa10gPSBibGt0eXBlOwogCX0KIAot
CXJldHVybiBnZW8tPm5yX2Noa3M7CisJcmV0dXJuIGdlby0+bnVtX2NoazsKIH0KIEVYUE9SVF9T
WU1CT0wobnZtX2JiX3RibF9mb2xkKTsKIApAQCAtOTAxLDkgKzkwMCw5IEBAIHN0YXRpYyBpbnQg
bnZtX2luaXQoc3RydWN0IG52bV9kZXYgKmRldikKIAl9CiAKIAlwcl9pbmZvKCJudm06IHJlZ2lz
dGVyZWQgJXMgWyV1LyV1LyV1LyV1LyV1XVxuIiwKLQkJCWRldi0+bmFtZSwgZ2VvLT53c19taW4s
IGdlby0+d3Nfb3B0LAotCQkJZ2VvLT5ucl9jaGtzLCBnZW8tPmFsbF9sdW5zLAotCQkJZ2VvLT5u
cl9jaG5scyk7CisJCQlkZXYtPm5hbWUsIGRldi0+Z2VvLndzX21pbiwgZGV2LT5nZW8ud3Nfb3B0
LAorCQkJZGV2LT5nZW8ubnVtX2NoaywgZGV2LT5nZW8uYWxsX2x1bnMsCisJCQlkZXYtPmdlby5u
dW1fY2gpOwogCXJldHVybiAwOwogZXJyOgogCXByX2VycigibnZtOiBmYWlsZWQgdG8gaW5pdGlh
bGl6ZSBudm1cbiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9saWdodG52bS9wYmxrLWNvcmUuYyBi
L2RyaXZlcnMvbGlnaHRudm0vcGJsay1jb3JlLmMKaW5kZXggMTY5NTg5ZGRkNDU3Li43ZDBiZDMz
ZjExZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGlnaHRudm0vcGJsay1jb3JlLmMKKysrIGIvZHJp
dmVycy9saWdodG52bS9wYmxrLWNvcmUuYwpAQCAtMTc0NSwxMCArMTc0NSwxMCBAQCB2b2lkIHBi
bGtfdXBfcnEoc3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwcGFfYWRkciAqcHBhX2xpc3QsIGlu
dCBucl9wcGFzLAogCXN0cnVjdCBudm1fdGd0X2RldiAqZGV2ID0gcGJsay0+ZGV2OwogCXN0cnVj
dCBudm1fZ2VvICpnZW8gPSAmZGV2LT5nZW87CiAJc3RydWN0IHBibGtfbHVuICpybHVuOwotCWlu
dCBucl9sdW5zID0gZ2VvLT5hbGxfbHVuczsKKwlpbnQgbnVtX2x1biA9IGdlby0+YWxsX2x1bnM7
CiAJaW50IGJpdCA9IC0xOwogCi0Jd2hpbGUgKChiaXQgPSBmaW5kX25leHRfYml0KGx1bl9iaXRt
YXAsIG5yX2x1bnMsIGJpdCArIDEpKSA8IG5yX2x1bnMpIHsKKwl3aGlsZSAoKGJpdCA9IGZpbmRf
bmV4dF9iaXQobHVuX2JpdG1hcCwgbnVtX2x1biwgYml0ICsgMSkpIDwgbnVtX2x1bikgewogCQly
bHVuID0gJnBibGstPmx1bnNbYml0XTsKIAkJdXAoJnJsdW4tPndyX3NlbSk7CiAJfQpkaWZmIC0t
Z2l0IGEvZHJpdmVycy9saWdodG52bS9wYmxrLWluaXQuYyBiL2RyaXZlcnMvbGlnaHRudm0vcGJs
ay1pbml0LmMKaW5kZXggOWI1ZWUwNWMzMDI4Li4xMTQyNGJlYjIxNGMgMTAwNjQ0Ci0tLSBhL2Ry
aXZlcnMvbGlnaHRudm0vcGJsay1pbml0LmMKKysrIGIvZHJpdmVycy9saWdodG52bS9wYmxrLWlu
aXQuYwpAQCAtMTYyLDE1ICsxNjIsMTUgQEAgc3RhdGljIGludCBwYmxrX3NldF9hZGRyZl8xMihz
dHJ1Y3QgbnZtX2dlbyAqZ2VvLAogCWludCBwb3dlcl9sZW47CiAKIAkvKiBSZS1jYWxjdWxhdGUg
Y2hhbm5lbCBhbmQgbHVuIGZvcm1hdCB0byBhZGFwdCB0byBjb25maWd1cmF0aW9uICovCi0JcG93
ZXJfbGVuID0gZ2V0X2NvdW50X29yZGVyKGdlby0+bnJfY2hubHMpOwotCWlmICgxIDw8IHBvd2Vy
X2xlbiAhPSBnZW8tPm5yX2NobmxzKSB7CisJcG93ZXJfbGVuID0gZ2V0X2NvdW50X29yZGVyKGdl
by0+bnVtX2NoKTsKKwlpZiAoMSA8PCBwb3dlcl9sZW4gIT0gZ2VvLT5udW1fY2gpIHsKIAkJcHJf
ZXJyKCJwYmxrOiBzdXBwb3J0cyBvbmx5IHBvd2VyLW9mLXR3byBjaGFubmVsIGNvbmZpZy5cbiIp
OwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAJZHN0LT5jaF9sZW4gPSBwb3dlcl9sZW47CiAKLQlw
b3dlcl9sZW4gPSBnZXRfY291bnRfb3JkZXIoZ2VvLT5ucl9sdW5zKTsKLQlpZiAoMSA8PCBwb3dl
cl9sZW4gIT0gZ2VvLT5ucl9sdW5zKSB7CisJcG93ZXJfbGVuID0gZ2V0X2NvdW50X29yZGVyKGdl
by0+bnVtX2x1bik7CisJaWYgKDEgPDwgcG93ZXJfbGVuICE9IGdlby0+bnVtX2x1bikgewogCQlw
cl9lcnIoInBibGs6IHN1cHBvcnRzIG9ubHkgcG93ZXItb2YtdHdvIExVTiBjb25maWcuXG4iKTsK
IAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMTc5LDE2ICsxNzksMTYgQEAgc3RhdGljIGludCBw
YmxrX3NldF9hZGRyZl8xMihzdHJ1Y3QgbnZtX2dlbyAqZ2VvLAogCWRzdC0+YmxrX2xlbiA9IHNy
Yy0+YmxrX2xlbjsKIAlkc3QtPnBnX2xlbiA9IHNyYy0+cGdfbGVuOwogCWRzdC0+cGxuX2xlbiA9
IHNyYy0+cGxuX2xlbjsKLQlkc3QtPnNlY3RfbGVuID0gc3JjLT5zZWN0X2xlbjsKKwlkc3QtPnNl
Y19sZW4gPSBzcmMtPnNlY19sZW47CiAKLQlkc3QtPnNlY3Rfb2Zmc2V0ID0gMDsKLQlkc3QtPnBs
bl9vZmZzZXQgPSBkc3QtPnNlY3RfbGVuOworCWRzdC0+c2VjX29mZnNldCA9IDA7CisJZHN0LT5w
bG5fb2Zmc2V0ID0gZHN0LT5zZWNfbGVuOwogCWRzdC0+Y2hfb2Zmc2V0ID0gZHN0LT5wbG5fb2Zm
c2V0ICsgZHN0LT5wbG5fbGVuOwogCWRzdC0+bHVuX29mZnNldCA9IGRzdC0+Y2hfb2Zmc2V0ICsg
ZHN0LT5jaF9sZW47CiAJZHN0LT5wZ19vZmZzZXQgPSBkc3QtPmx1bl9vZmZzZXQgKyBkc3QtPmx1
bl9sZW47CiAJZHN0LT5ibGtfb2Zmc2V0ID0gZHN0LT5wZ19vZmZzZXQgKyBkc3QtPnBnX2xlbjsK
IAotCWRzdC0+c2VjX21hc2sgPSAoKDFVTEwgPDwgZHN0LT5zZWN0X2xlbikgLSAxKSA8PCBkc3Qt
PnNlY3Rfb2Zmc2V0OworCWRzdC0+c2VjX21hc2sgPSAoKDFVTEwgPDwgZHN0LT5zZWNfbGVuKSAt
IDEpIDw8IGRzdC0+c2VjX29mZnNldDsKIAlkc3QtPnBsbl9tYXNrID0gKCgxVUxMIDw8IGRzdC0+
cGxuX2xlbikgLSAxKSA8PCBkc3QtPnBsbl9vZmZzZXQ7CiAJZHN0LT5jaF9tYXNrID0gKCgxVUxM
IDw8IGRzdC0+Y2hfbGVuKSAtIDEpIDw8IGRzdC0+Y2hfb2Zmc2V0OwogCWRzdC0+bHVuX21hc2sg
PSAoKDFVTEwgPDwgZHN0LT5sdW5fbGVuKSAtIDEpIDw8IGRzdC0+bHVuX29mZnNldDsKQEAgLTQ0
OCw3ICs0NDgsNyBAQCBzdGF0aWMgdm9pZCAqcGJsa19iYl9nZXRfbG9nKHN0cnVjdCBwYmxrICpw
YmxrKQogCWludCBpLCBucl9ibGtzLCBibGtfcGVyX2x1bjsKIAlpbnQgcmV0OwogCi0JYmxrX3Bl
cl9sdW4gPSBnZW8tPm5yX2Noa3MgKiBnZW8tPnBsYW5lX21vZGU7CisJYmxrX3Blcl9sdW4gPSBn
ZW8tPm51bV9jaGsgKiBnZW8tPnBsbl9tb2RlOwogCW5yX2Jsa3MgPSBibGtfcGVyX2x1biAqIGdl
by0+YWxsX2x1bnM7CiAKIAlsb2cgPSBrbWFsbG9jKG5yX2Jsa3MsIEdGUF9LRVJORUwpOwpAQCAt
NDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBpbnQgcGJsa19iYl9saW5lKHN0cnVjdCBwYmxrICpwYmxr
LCBzdHJ1Y3QgcGJsa19saW5lICpsaW5lLAogCXN0cnVjdCBudm1fdGd0X2RldiAqZGV2ID0gcGJs
ay0+ZGV2OwogCXN0cnVjdCBudm1fZ2VvICpnZW8gPSAmZGV2LT5nZW87CiAJaW50IGksIGJiX2Nu
dCA9IDA7Ci0JaW50IGJsa19wZXJfbHVuID0gZ2VvLT5ucl9jaGtzICogZ2VvLT5wbGFuZV9tb2Rl
OworCWludCBibGtfcGVyX2x1biA9IGdlby0+bnVtX2NoayAqIGdlby0+cGxuX21vZGU7CiAKIAlm
b3IgKGkgPSAwOyBpIDwgYmxrX3Blcl9saW5lOyBpKyspIHsKIAkJc3RydWN0IHBibGtfbHVuICpy
bHVuID0gJnBibGstPmx1bnNbaV07CkBAIC00OTksNyArNDk5LDcgQEAgc3RhdGljIGludCBwYmxr
X2x1bnNfaW5pdChzdHJ1Y3QgcGJsayAqcGJsaywgc3RydWN0IHBwYV9hZGRyICpsdW5zKQogCWlu
dCBpOwogCiAJLyogVE9ETzogSW1wbGVtZW50IHVuYmFsYW5jZWQgTFVOIHN1cHBvcnQgKi8KLQlp
ZiAoZ2VvLT5ucl9sdW5zIDwgMCkgeworCWlmIChnZW8tPm51bV9sdW4gPCAwKSB7CiAJCXByX2Vy
cigicGJsazogdW5iYWxhbmNlZCBMVU4gY29uZmlnLlxuIik7CiAJCXJldHVybiAtRUlOVkFMOwog
CX0KQEAgLTUxMSw5ICs1MTEsOSBAQCBzdGF0aWMgaW50IHBibGtfbHVuc19pbml0KHN0cnVjdCBw
YmxrICpwYmxrLCBzdHJ1Y3QgcHBhX2FkZHIgKmx1bnMpCiAKIAlmb3IgKGkgPSAwOyBpIDwgZ2Vv
LT5hbGxfbHVuczsgaSsrKSB7CiAJCS8qIFN0cmlwZSBhY3Jvc3MgY2hhbm5lbHMgKi8KLQkJaW50
IGNoID0gaSAlIGdlby0+bnJfY2hubHM7Ci0JCWludCBsdW5fcmF3ID0gaSAvIGdlby0+bnJfY2hu
bHM7Ci0JCWludCBsdW5pZCA9IGx1bl9yYXcgKyBjaCAqIGdlby0+bnJfbHVuczsKKwkJaW50IGNo
ID0gaSAlIGdlby0+bnVtX2NoOworCQlpbnQgbHVuX3JhdyA9IGkgLyBnZW8tPm51bV9jaDsKKwkJ
aW50IGx1bmlkID0gbHVuX3JhdyArIGNoICogZ2VvLT5udW1fbHVuOwogCiAJCXJsdW4gPSAmcGJs
ay0+bHVuc1tpXTsKIAkJcmx1bi0+YnBwYSA9IGx1bnNbbHVuaWRdOwpAQCAtNzQwLDcgKzc0MCw3
IEBAIHN0YXRpYyBpbnQgcGJsa19saW5lc19pbml0KHN0cnVjdCBwYmxrICpwYmxrKQogCQlyZXR1
cm4gLUVJTlZBTDsKIAl9CiAKLQlsX21nLT5ucl9saW5lcyA9IGdlby0+bnJfY2hrczsKKwlsX21n
LT5ucl9saW5lcyA9IGdlby0+bnVtX2NoazsKIAlsX21nLT5sb2dfbGluZSA9IGxfbWctPmRhdGFf
bGluZSA9IE5VTEw7CiAJbF9tZy0+bF9zZXFfbnIgPSBsX21nLT5kX3NlcV9uciA9IDA7CiAJbF9t
Zy0+bnJfZnJlZV9saW5lcyA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2xpZ2h0bnZtL3BibGst
c3lzZnMuYyBiL2RyaXZlcnMvbGlnaHRudm0vcGJsay1zeXNmcy5jCmluZGV4IDMzMTk5YzZhZjI2
Ny4uNDYyYTc4Nzg5M2Q1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2xpZ2h0bnZtL3BibGstc3lzZnMu
YworKysgYi9kcml2ZXJzL2xpZ2h0bnZtL3BibGstc3lzZnMuYwpAQCAtMTI4LDcgKzEyOCw3IEBA
IHN0YXRpYyBzc2l6ZV90IHBibGtfc3lzZnNfcHBhZihzdHJ1Y3QgcGJsayAqcGJsaywgY2hhciAq
cGFnZSkKIAkJCXBwYWYtPmJsa19vZmZzZXQsIHBwYWYtPmJsa19sZW4sCiAJCQlwcGFmLT5wZ19v
ZmZzZXQsIHBwYWYtPnBnX2xlbiwKIAkJCXBwYWYtPnBsbl9vZmZzZXQsIHBwYWYtPnBsbl9sZW4s
Ci0JCQlwcGFmLT5zZWN0X29mZnNldCwgcHBhZi0+c2VjdF9sZW4pOworCQkJcHBhZi0+c2VjX29m
ZnNldCwgcHBhZi0+c2VjX2xlbik7CiAKIAlzeiArPSBzbnByaW50ZihwYWdlICsgc3osIFBBR0Vf
U0laRSAtIHN6LAogCQkiZGV2aWNlOmNoOiVkLyVkLGx1bjolZC8lZCxibGs6JWQvJWQscGc6JWQv
JWQscGw6JWQvJWQsc2VjOiVkLyVkXG4iLApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBzc2l6
ZV90IHBibGtfc3lzZnNfcHBhZihzdHJ1Y3QgcGJsayAqcGJsaywgY2hhciAqcGFnZSkKIAkJCWdl
b19wcGFmLT5ibGtfb2Zmc2V0LCBnZW9fcHBhZi0+YmxrX2xlbiwKIAkJCWdlb19wcGFmLT5wZ19v
ZmZzZXQsIGdlb19wcGFmLT5wZ19sZW4sCiAJCQlnZW9fcHBhZi0+cGxuX29mZnNldCwgZ2VvX3Bw
YWYtPnBsbl9sZW4sCi0JCQlnZW9fcHBhZi0+c2VjdF9vZmZzZXQsIGdlb19wcGFmLT5zZWN0X2xl
bik7CisJCQlnZW9fcHBhZi0+c2VjX29mZnNldCwgZ2VvX3BwYWYtPnNlY19sZW4pOwogCiAJcmV0
dXJuIHN6OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9saWdodG52bS9wYmxrLmggYi9kcml2ZXJz
L2xpZ2h0bnZtL3BibGsuaAppbmRleCBiMjljMWU2Njk4YWEuLmJhZTJjYzc1OGRlOCAxMDA2NDQK
LS0tIGEvZHJpdmVycy9saWdodG52bS9wYmxrLmgKKysrIGIvZHJpdmVycy9saWdodG52bS9wYmxr
LmgKQEAgLTk0MSw3ICs5NDEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBwYmxrX3BwYV90b19saW5l
KHN0cnVjdCBwcGFfYWRkciBwKQogCiBzdGF0aWMgaW5saW5lIGludCBwYmxrX3BwYV90b19wb3Mo
c3RydWN0IG52bV9nZW8gKmdlbywgc3RydWN0IHBwYV9hZGRyIHApCiB7Ci0JcmV0dXJuIHAuZy5s
dW4gKiBnZW8tPm5yX2NobmxzICsgcC5nLmNoOworCXJldHVybiBwLmcubHVuICogZ2VvLT5udW1f
Y2ggKyBwLmcuY2g7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBwYV9hZGRyIGFkZHJfdG9f
Z2VuX3BwYShzdHJ1Y3QgcGJsayAqcGJsaywgdTY0IHBhZGRyLApAQCAtOTU3LDcgKzk1Nyw3IEBA
IHN0YXRpYyBpbmxpbmUgc3RydWN0IHBwYV9hZGRyIGFkZHJfdG9fZ2VuX3BwYShzdHJ1Y3QgcGJs
ayAqcGJsaywgdTY0IHBhZGRyLAogCXBwYS5nLmx1biA9IChwYWRkciAmIHBwYWYtPmx1bl9tYXNr
KSA+PiBwcGFmLT5sdW5fb2Zmc2V0OwogCXBwYS5nLmNoID0gKHBhZGRyICYgcHBhZi0+Y2hfbWFz
aykgPj4gcHBhZi0+Y2hfb2Zmc2V0OwogCXBwYS5nLnBsID0gKHBhZGRyICYgcHBhZi0+cGxuX21h
c2spID4+IHBwYWYtPnBsbl9vZmZzZXQ7Ci0JcHBhLmcuc2VjID0gKHBhZGRyICYgcHBhZi0+c2Vj
X21hc2spID4+IHBwYWYtPnNlY3Rfb2Zmc2V0OworCXBwYS5nLnNlYyA9IChwYWRkciAmIHBwYWYt
PnNlY19tYXNrKSA+PiBwcGFmLT5zZWNfb2Zmc2V0OwogCiAJcmV0dXJuIHBwYTsKIH0KQEAgLTk3
Myw3ICs5NzMsNyBAQCBzdGF0aWMgaW5saW5lIHU2NCBwYmxrX2Rldl9wcGFfdG9fbGluZV9hZGRy
KHN0cnVjdCBwYmxrICpwYmxrLAogCXBhZGRyIHw9ICh1NjQpcC5nLmx1biA8PCBwcGFmLT5sdW5f
b2Zmc2V0OwogCXBhZGRyIHw9ICh1NjQpcC5nLnBnIDw8IHBwYWYtPnBnX29mZnNldDsKIAlwYWRk
ciB8PSAodTY0KXAuZy5wbCA8PCBwcGFmLT5wbG5fb2Zmc2V0OwotCXBhZGRyIHw9ICh1NjQpcC5n
LnNlYyA8PCBwcGFmLT5zZWN0X29mZnNldDsKKwlwYWRkciB8PSAodTY0KXAuZy5zZWMgPDwgcHBh
Zi0+c2VjX29mZnNldDsKIAogCXJldHVybiBwYWRkcjsKIH0KQEAgLTk5OCw3ICs5OTgsNyBAQCBz
dGF0aWMgaW5saW5lIHN0cnVjdCBwcGFfYWRkciBwYmxrX3BwYTMyX3RvX3BwYTY0KHN0cnVjdCBw
YmxrICpwYmxrLCB1MzIgcHBhMzIpCiAJCXBwYTY0LmcuYmxrID0gKHBwYTMyICYgcHBhZi0+Ymxr
X21hc2spID4+IHBwYWYtPmJsa19vZmZzZXQ7CiAJCXBwYTY0LmcucGcgPSAocHBhMzIgJiBwcGFm
LT5wZ19tYXNrKSA+PiBwcGFmLT5wZ19vZmZzZXQ7CiAJCXBwYTY0LmcucGwgPSAocHBhMzIgJiBw
cGFmLT5wbG5fbWFzaykgPj4gcHBhZi0+cGxuX29mZnNldDsKLQkJcHBhNjQuZy5zZWMgPSAocHBh
MzIgJiBwcGFmLT5zZWNfbWFzaykgPj4gcHBhZi0+c2VjdF9vZmZzZXQ7CisJCXBwYTY0Lmcuc2Vj
ID0gKHBwYTMyICYgcHBhZi0+c2VjX21hc2spID4+IHBwYWYtPnNlY19vZmZzZXQ7CiAJfQogCiAJ
cmV0dXJuIHBwYTY0OwpAQCAtMTAyMiw3ICsxMDIyLDcgQEAgc3RhdGljIGlubGluZSB1MzIgcGJs
a19wcGE2NF90b19wcGEzMihzdHJ1Y3QgcGJsayAqcGJsaywgc3RydWN0IHBwYV9hZGRyIHBwYTY0
KQogCQlwcGEzMiB8PSBwcGE2NC5nLmJsayA8PCBwcGFmLT5ibGtfb2Zmc2V0OwogCQlwcGEzMiB8
PSBwcGE2NC5nLnBnIDw8IHBwYWYtPnBnX29mZnNldDsKIAkJcHBhMzIgfD0gcHBhNjQuZy5wbCA8
PCBwcGFmLT5wbG5fb2Zmc2V0OwotCQlwcGEzMiB8PSBwcGE2NC5nLnNlYyA8PCBwcGFmLT5zZWN0
X29mZnNldDsKKwkJcHBhMzIgfD0gcHBhNjQuZy5zZWMgPDwgcHBhZi0+c2VjX29mZnNldDsKIAl9
CiAKIAlyZXR1cm4gcHBhMzI7CkBAIC0xMTQwLDcgKzExNDAsNyBAQCBzdGF0aWMgaW5saW5lIGlu
dCBwYmxrX3NldF9wcm9ncl9tb2RlKHN0cnVjdCBwYmxrICpwYmxrLCBpbnQgdHlwZSkKIAlzdHJ1
Y3QgbnZtX2dlbyAqZ2VvID0gJmRldi0+Z2VvOwogCWludCBmbGFnczsKIAotCWZsYWdzID0gZ2Vv
LT5wbGFuZV9tb2RlID4+IDE7CisJZmxhZ3MgPSBnZW8tPnBsbl9tb2RlID4+IDE7CiAKIAlpZiAo
dHlwZSA9PSBQQkxLX1dSSVRFKQogCQlmbGFncyB8PSBOVk1fSU9fU0NSQU1CTEVfRU5BQkxFOwpA
QCAtMTE2MSw3ICsxMTYxLDcgQEAgc3RhdGljIGlubGluZSBpbnQgcGJsa19zZXRfcmVhZF9tb2Rl
KHN0cnVjdCBwYmxrICpwYmxrLCBpbnQgdHlwZSkKIAogCWZsYWdzID0gTlZNX0lPX1NVU1BFTkQg
fCBOVk1fSU9fU0NSQU1CTEVfRU5BQkxFOwogCWlmICh0eXBlID09IFBCTEtfUkVBRF9TRVFVRU5U
SUFMKQotCQlmbGFncyB8PSBnZW8tPnBsYW5lX21vZGUgPj4gMTsKKwkJZmxhZ3MgfD0gZ2VvLT5w
bG5fbW9kZSA+PiAxOwogCiAJcmV0dXJuIGZsYWdzOwogfQpAQCAtMTIxNCwxMCArMTIxNCwxMCBA
QCBzdGF0aWMgaW5saW5lIGludCBwYmxrX2JvdW5kYXJ5X3BwYV9jaGVja3Moc3RydWN0IG52bV90
Z3RfZGV2ICp0Z3RfZGV2LAogCQlwcGEgPSAmcHBhc1tpXTsKIAogCQlpZiAoIXBwYS0+Yy5pc19j
YWNoZWQgJiYKLQkJCQlwcGEtPmcuY2ggPCBnZW8tPm5yX2NobmxzICYmCi0JCQkJcHBhLT5nLmx1
biA8IGdlby0+bnJfbHVucyAmJgorCQkJCXBwYS0+Zy5jaCA8IGdlby0+bnVtX2NoICYmCisJCQkJ
cHBhLT5nLmx1biA8IGdlby0+bnVtX2x1biAmJgogCQkJCXBwYS0+Zy5wbCA8IGdlby0+bnVtX3Bs
biAmJgotCQkJCXBwYS0+Zy5ibGsgPCBnZW8tPm5yX2Noa3MgJiYKKwkJCQlwcGEtPmcuYmxrIDwg
Z2VvLT5udW1fY2hrICYmCiAJCQkJcHBhLT5nLnBnIDwgZ2VvLT5udW1fcGcgJiYKIAkJCQlwcGEt
Pmcuc2VjIDwgZ2VvLT53c19taW4pCiAJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv
bnZtZS9ob3N0L2xpZ2h0bnZtLmMgYi9kcml2ZXJzL252bWUvaG9zdC9saWdodG52bS5jCmluZGV4
IGFmYjVmODgzZjhjOC4uZjcxMzU2NTlmOTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWUvaG9z
dC9saWdodG52bS5jCisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L2xpZ2h0bnZtLmMKQEAgLTI2Miwy
MSArMjYyLDIxIEBAIHN0YXRpYyB2b2lkIG52bWVfbnZtX3NldF9hZGRyXzEyKHN0cnVjdCBudm1f
YWRkcl9mb3JtYXRfMTIgKmRzdCwKIAlkc3QtPmJsa19sZW4gPSBzcmMtPmJsa19sZW47CiAJZHN0
LT5wZ19sZW4gPSBzcmMtPnBnX2xlbjsKIAlkc3QtPnBsbl9sZW4gPSBzcmMtPnBsbl9sZW47Ci0J
ZHN0LT5zZWN0X2xlbiA9IHNyYy0+c2VjX2xlbjsKKwlkc3QtPnNlY19sZW4gPSBzcmMtPnNlY19s
ZW47CiAKIAlkc3QtPmNoX29mZnNldCA9IHNyYy0+Y2hfb2Zmc2V0OwogCWRzdC0+bHVuX29mZnNl
dCA9IHNyYy0+bHVuX29mZnNldDsKIAlkc3QtPmJsa19vZmZzZXQgPSBzcmMtPmJsa19vZmZzZXQ7
CiAJZHN0LT5wZ19vZmZzZXQgPSBzcmMtPnBnX29mZnNldDsKIAlkc3QtPnBsbl9vZmZzZXQgPSBz
cmMtPnBsbl9vZmZzZXQ7Ci0JZHN0LT5zZWN0X29mZnNldCA9IHNyYy0+c2VjX29mZnNldDsKKwlk
c3QtPnNlY19vZmZzZXQgPSBzcmMtPnNlY19vZmZzZXQ7CiAKIAlkc3QtPmNoX21hc2sgPSAoKDFV
TEwgPDwgZHN0LT5jaF9sZW4pIC0gMSkgPDwgZHN0LT5jaF9vZmZzZXQ7CiAJZHN0LT5sdW5fbWFz
ayA9ICgoMVVMTCA8PCBkc3QtPmx1bl9sZW4pIC0gMSkgPDwgZHN0LT5sdW5fb2Zmc2V0OwogCWRz
dC0+YmxrX21hc2sgPSAoKDFVTEwgPDwgZHN0LT5ibGtfbGVuKSAtIDEpIDw8IGRzdC0+YmxrX29m
ZnNldDsKIAlkc3QtPnBnX21hc2sgPSAoKDFVTEwgPDwgZHN0LT5wZ19sZW4pIC0gMSkgPDwgZHN0
LT5wZ19vZmZzZXQ7CiAJZHN0LT5wbG5fbWFzayA9ICgoMVVMTCA8PCBkc3QtPnBsbl9sZW4pIC0g
MSkgPDwgZHN0LT5wbG5fb2Zmc2V0OwotCWRzdC0+c2VjX21hc2sgPSAoKDFVTEwgPDwgZHN0LT5z
ZWN0X2xlbikgLSAxKSA8PCBkc3QtPnNlY3Rfb2Zmc2V0OworCWRzdC0+c2VjX21hc2sgPSAoKDFV
TEwgPDwgZHN0LT5zZWNfbGVuKSAtIDEpIDw8IGRzdC0+c2VjX29mZnNldDsKIH0KIAogc3RhdGlj
IGludCBudm1lX252bV9zZXR1cF8xMihzdHJ1Y3QgbnZtZV9udm1faWQxMiAqaWQsCkBAIC0zMDIs
MTEgKzMwMiwxMSBAQCBzdGF0aWMgaW50IG52bWVfbnZtX3NldHVwXzEyKHN0cnVjdCBudm1lX252
bV9pZDEyICppZCwKIAkvKiBTZXQgY29tcGFjdGVkIHZlcnNpb24gZm9yIHVwcGVyIGxheWVycyAq
LwogCWdlby0+dmVyc2lvbiA9IE5WTV9PQ1NTRF9TUEVDXzEyOwogCi0JZ2VvLT5ucl9jaG5scyA9
IHNyYy0+bnVtX2NoOwotCWdlby0+bnJfbHVucyA9IHNyYy0+bnVtX2x1bjsKLQlnZW8tPmFsbF9s
dW5zID0gZ2VvLT5ucl9jaG5scyAqIGdlby0+bnJfbHVuczsKKwlnZW8tPm51bV9jaCA9IHNyYy0+
bnVtX2NoOworCWdlby0+bnVtX2x1biA9IHNyYy0+bnVtX2x1bjsKKwlnZW8tPmFsbF9sdW5zID0g
Z2VvLT5udW1fY2ggKiBnZW8tPm51bV9sdW47CiAKLQlnZW8tPm5yX2Noa3MgPSBsZTE2X3RvX2Nw
dShzcmMtPm51bV9jaGspOworCWdlby0+bnVtX2NoayA9IGxlMTZfdG9fY3B1KHNyYy0+bnVtX2No
ayk7CiAKIAlnZW8tPmNzZWNzID0gbGUxNl90b19jcHUoc3JjLT5jc2Vjcyk7CiAJZ2VvLT5zb3Mg
PSBsZTE2X3RvX2NwdShzcmMtPnNvcyk7CkBAIC0zMTYsNyArMzE2LDcgQEAgc3RhdGljIGludCBu
dm1lX252bV9zZXR1cF8xMihzdHJ1Y3QgbnZtZV9udm1faWQxMiAqaWQsCiAJc2VjX3Blcl9wbCA9
IHNlY19wZXJfcGcgKiBzcmMtPm51bV9wbG47CiAJZ2VvLT5jbGJhID0gc2VjX3Blcl9wbCAqIHBn
X3Blcl9ibGs7CiAKLQlnZW8tPmFsbF9jaHVua3MgPSBnZW8tPmFsbF9sdW5zICogZ2VvLT5ucl9j
aGtzOworCWdlby0+YWxsX2NodW5rcyA9IGdlby0+YWxsX2x1bnMgKiBnZW8tPm51bV9jaGs7CiAJ
Z2VvLT50b3RhbF9zZWNzID0gZ2VvLT5jbGJhICogZ2VvLT5hbGxfY2h1bmtzOwogCiAJZ2VvLT53
c19taW4gPSBzZWNfcGVyX3BnOwpAQCAtMzI3LDggKzMyNyw4IEBAIHN0YXRpYyBpbnQgbnZtZV9u
dm1fc2V0dXBfMTIoc3RydWN0IG52bWVfbnZtX2lkMTIgKmlkLAogCSAqIHVuc3BlY2lmaWVkIGlu
IDEuMi4gVXNlcnMgb2YgMS4yIG11c3QgYmUgYXdhcmUgb2YgdGhpcyBhbmQgZXZlbnR1YWxseQog
CSAqIHNwZWNpZnkgdGhlc2UgdmFsdWVzIHRocm91Z2ggYSBxdWlyayBpZiByZXN0cmljdGlvbnMg
YXBwbHkuCiAJICovCi0JZ2VvLT5tYXhvYyA9IGdlby0+YWxsX2x1bnMgKiBnZW8tPm5yX2Noa3M7
Ci0JZ2VvLT5tYXhvY3B1ID0gZ2VvLT5ucl9jaGtzOworCWdlby0+bWF4b2MgPSBnZW8tPmFsbF9s
dW5zICogZ2VvLT5udW1fY2hrOworCWdlby0+bWF4b2NwdSA9IGdlby0+bnVtX2NoazsKIAogCWdl
by0+Y2FwID0gbGUzMl90b19jcHUoc3JjLT5tY2NhcCk7CiAKQEAgLTM1MCwxMyArMzUwLDEzIEBA
IHN0YXRpYyBpbnQgbnZtZV9udm1fc2V0dXBfMTIoc3RydWN0IG52bWVfbnZtX2lkMTIgKmlkLAog
CWdlby0+Y3BhciA9IGxlMTZfdG9fY3B1KHNyYy0+Y3Bhcik7CiAJZ2VvLT5tcG9zID0gbGUzMl90
b19jcHUoc3JjLT5tcG9zKTsKIAotCWdlby0+cGxhbmVfbW9kZSA9IE5WTV9QTEFORV9TSU5HTEU7
CisJZ2VvLT5wbG5fbW9kZSA9IE5WTV9QTEFORV9TSU5HTEU7CiAKIAlpZiAoZ2VvLT5tcG9zICYg
MHgwMjAyMDIpIHsKLQkJZ2VvLT5wbGFuZV9tb2RlID0gTlZNX1BMQU5FX0RPVUJMRTsKKwkJZ2Vv
LT5wbG5fbW9kZSA9IE5WTV9QTEFORV9ET1VCTEU7CiAJCWdlby0+d3Nfb3B0IDw8PSAxOwogCX0g
ZWxzZSBpZiAoZ2VvLT5tcG9zICYgMHgwNDA0MDQpIHsKLQkJZ2VvLT5wbGFuZV9tb2RlID0gTlZN
X1BMQU5FX1FVQUQ7CisJCWdlby0+cGxuX21vZGUgPSBOVk1fUExBTkVfUVVBRDsKIAkJZ2VvLT53
c19vcHQgPDw9IDI7CiAJfQogCkBAIC00MDQsMTQgKzQwNCwxNCBAQCBzdGF0aWMgaW50IG52bWVf
bnZtX3NldHVwXzIwKHN0cnVjdCBudm1lX252bV9pZDIwICppZCwKIAkJcmV0dXJuIC1FSU5WQUw7
CiAJfQogCi0JZ2VvLT5ucl9jaG5scyA9IGxlMTZfdG9fY3B1KGlkLT5udW1fZ3JwKTsKLQlnZW8t
Pm5yX2x1bnMgPSBsZTE2X3RvX2NwdShpZC0+bnVtX3B1KTsKLQlnZW8tPmFsbF9sdW5zID0gZ2Vv
LT5ucl9jaG5scyAqIGdlby0+bnJfbHVuczsKKwlnZW8tPm51bV9jaCA9IGxlMTZfdG9fY3B1KGlk
LT5udW1fZ3JwKTsKKwlnZW8tPm51bV9sdW4gPSBsZTE2X3RvX2NwdShpZC0+bnVtX3B1KTsKKwln
ZW8tPmFsbF9sdW5zID0gZ2VvLT5udW1fY2ggKiBnZW8tPm51bV9sdW47CiAKLQlnZW8tPm5yX2No
a3MgPSBsZTMyX3RvX2NwdShpZC0+bnVtX2Noayk7CisJZ2VvLT5udW1fY2hrID0gbGUzMl90b19j
cHUoaWQtPm51bV9jaGspOwogCWdlby0+Y2xiYSA9IGxlMzJfdG9fY3B1KGlkLT5jbGJhKTsKIAot
CWdlby0+YWxsX2NodW5rcyA9IGdlby0+YWxsX2x1bnMgKiBnZW8tPm5yX2Noa3M7CisJZ2VvLT5h
bGxfY2h1bmtzID0gZ2VvLT5hbGxfbHVucyAqIGdlby0+bnVtX2NoazsKIAlnZW8tPnRvdGFsX3Nl
Y3MgPSBnZW8tPmNsYmEgKiBnZW8tPmFsbF9jaHVua3M7CiAKIAlnZW8tPndzX21pbiA9IGxlMzJf
dG9fY3B1KGlkLT53c19taW4pOwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyBpbnQgbnZtZV9u
dm1fZ2V0X2JiX3RibChzdHJ1Y3QgbnZtX2RldiAqbnZtZGV2LCBzdHJ1Y3QgcHBhX2FkZHIgcHBh
LAogCXN0cnVjdCBudm1lX2N0cmwgKmN0cmwgPSBucy0+Y3RybDsKIAlzdHJ1Y3QgbnZtZV9udm1f
Y29tbWFuZCBjID0ge307CiAJc3RydWN0IG52bWVfbnZtX2JiX3RibCAqYmJfdGJsOwotCWludCBu
cl9ibGtzID0gZ2VvLT5ucl9jaGtzICogZ2VvLT5udW1fcGxuOworCWludCBucl9ibGtzID0gZ2Vv
LT5udW1fY2hrICogZ2VvLT5udW1fcGxuOwogCWludCB0YmxzeiA9IHNpemVvZihzdHJ1Y3QgbnZt
ZV9udm1fYmJfdGJsKSArIG5yX2Jsa3M7CiAJaW50IHJldCA9IDA7CiAKQEAgLTUyOCw3ICs1Mjgs
NyBAQCBzdGF0aWMgaW50IG52bWVfbnZtX2dldF9iYl90Ymwoc3RydWN0IG52bV9kZXYgKm52bWRl
diwgc3RydWN0IHBwYV9hZGRyIHBwYSwKIAkJZ290byBvdXQ7CiAJfQogCi0JbWVtY3B5KGJsa3Ms
IGJiX3RibC0+YmxrLCBnZW8tPm5yX2Noa3MgKiBnZW8tPm51bV9wbG4pOworCW1lbWNweShibGtz
LCBiYl90YmwtPmJsaywgZ2VvLT5udW1fY2hrICogZ2VvLT5udW1fcGxuKTsKIG91dDoKIAlrZnJl
ZShiYl90YmwpOwogCXJldHVybiByZXQ7CkBAIC05NzIsNyArOTcyLDcgQEAgc3RhdGljIHNzaXpl
X3QgbnZtX2Rldl9hdHRyX3Nob3dfcHBhZihzdHJ1Y3QgbnZtX2FkZHJfZm9ybWF0XzEyICpwcGFm
LAogCQkJCXBwYWYtPnBsbl9vZmZzZXQsIHBwYWYtPnBsbl9sZW4sCiAJCQkJcHBhZi0+YmxrX29m
ZnNldCwgcHBhZi0+YmxrX2xlbiwKIAkJCQlwcGFmLT5wZ19vZmZzZXQsIHBwYWYtPnBnX2xlbiwK
LQkJCQlwcGFmLT5zZWN0X29mZnNldCwgcHBhZi0+c2VjdF9sZW4pOworCQkJCXBwYWYtPnNlY19v
ZmZzZXQsIHBwYWYtPnNlY19sZW4pOwogfQogCiBzdGF0aWMgc3NpemVfdCBudm1fZGV2X2F0dHJf
c2hvd18xMihzdHJ1Y3QgZGV2aWNlICpkZXYsCkBAIC0xMDAyLDEzICsxMDAyLDEzIEBAIHN0YXRp
YyBzc2l6ZV90IG52bV9kZXZfYXR0cl9zaG93XzEyKHN0cnVjdCBkZXZpY2UgKmRldiwKIAl9IGVs
c2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAiZmxhc2hfbWVkaWFfdHlwZSIpID09IDApIHsKIAkJ
cmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZ2VvLT5mbXR5cGUpOwog
CX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJudW1fY2hhbm5lbHMiKSA9PSAwKSB7Ci0J
CXJldHVybiBzY25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGdlby0+bnJfY2hubHMp
OworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBnZW8tPm51bV9j
aCk7CiAJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgIm51bV9sdW5zIikgPT0gMCkgewot
CQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBnZW8tPm5yX2x1bnMp
OworCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBnZW8tPm51bV9s
dW4pOwogCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJudW1fcGxhbmVzIikgPT0gMCkg
ewogCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBnZW8tPm51bV9w
bG4pOwogCX0gZWxzZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJudW1fYmxvY2tzIikgPT0gMCkg
ewkvKiB1MTYgKi8KLQkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwg
Z2VvLT5ucl9jaGtzKTsKKwkJcmV0dXJuIHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxu
IiwgZ2VvLT5udW1fY2hrKTsKIAl9IGVsc2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAibnVtX3Bh
Z2VzIikgPT0gMCkgewogCQlyZXR1cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4i
LCBnZW8tPm51bV9wZyk7CiAJfSBlbHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgInBhZ2Vfc2l6
ZSIpID09IDApIHsKQEAgLTEwNTIsMTEgKzEwNTIsMTEgQEAgc3RhdGljIHNzaXplX3QgbnZtX2Rl
dl9hdHRyX3Nob3dfMjAoc3RydWN0IGRldmljZSAqZGV2LAogCWF0dHIgPSAmZGF0dHItPmF0dHI7
CiAKIAlpZiAoc3RyY21wKGF0dHItPm5hbWUsICJncm91cHMiKSA9PSAwKSB7Ci0JCXJldHVybiBz
Y25wcmludGYocGFnZSwgUEFHRV9TSVpFLCAiJXVcbiIsIGdlby0+bnJfY2hubHMpOworCQlyZXR1
cm4gc2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBnZW8tPm51bV9jaCk7CiAJfSBl
bHNlIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgInB1bml0cyIpID09IDApIHsKLQkJcmV0dXJuIHNj
bnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZ2VvLT5ucl9sdW5zKTsKKwkJcmV0dXJu
IHNjbnByaW50ZihwYWdlLCBQQUdFX1NJWkUsICIldVxuIiwgZ2VvLT5udW1fbHVuKTsKIAl9IGVs
c2UgaWYgKHN0cmNtcChhdHRyLT5uYW1lLCAiY2h1bmtzIikgPT0gMCkgewotCQlyZXR1cm4gc2Nu
cHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBnZW8tPm5yX2Noa3MpOworCQlyZXR1cm4g
c2NucHJpbnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBnZW8tPm51bV9jaGspOwogCX0gZWxz
ZSBpZiAoc3RyY21wKGF0dHItPm5hbWUsICJjbGJhIikgPT0gMCkgewogCQlyZXR1cm4gc2NucHJp
bnRmKHBhZ2UsIFBBR0VfU0laRSwgIiV1XG4iLCBnZW8tPmNsYmEpOwogCX0gZWxzZSBpZiAoc3Ry
Y21wKGF0dHItPm5hbWUsICJ3c19taW4iKSA9PSAwKSB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xp
bnV4L2xpZ2h0bnZtLmggYi9pbmNsdWRlL2xpbnV4L2xpZ2h0bnZtLmgKaW5kZXggMjEwMmIwOTJj
N2ViLi40Zjg4ZTNkYzRkOGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbGlnaHRudm0uaAor
KysgYi9pbmNsdWRlL2xpbnV4L2xpZ2h0bnZtLmgKQEAgLTE2MywxNCArMTYzLDE0IEBAIHN0cnVj
dCBudm1fYWRkcl9mb3JtYXRfMTIgewogCXU4CWJsa19sZW47CiAJdTgJcGdfbGVuOwogCXU4CXBs
bl9sZW47Ci0JdTgJc2VjdF9sZW47CisJdTgJc2VjX2xlbjsKIAogCXU4CWNoX29mZnNldDsKIAl1
OAlsdW5fb2Zmc2V0OwogCXU4CWJsa19vZmZzZXQ7CiAJdTgJcGdfb2Zmc2V0OwogCXU4CXBsbl9v
ZmZzZXQ7Ci0JdTgJc2VjdF9vZmZzZXQ7CisJdTgJc2VjX29mZnNldDsKIAogCXU2NAljaF9tYXNr
OwogCXU2NAlsdW5fbWFzazsKQEAgLTI3NSw4ICsyNzUsOCBAQCBzdHJ1Y3QgbnZtX2dlbyB7CiAJ
dTgJdmVyc2lvbjsKIAogCS8qIGluc3RhbmNlIHNwZWNpZmljIGdlb21ldHJ5ICovCi0JaW50IG5y
X2NobmxzOwotCWludCBucl9sdW5zOwkJLyogcGVyIGNoYW5uZWwgKi8KKwlpbnQgbnVtX2NoOwor
CWludCBudW1fbHVuOwkJLyogcGVyIGNoYW5uZWwgKi8KIAogCS8qIGNhbGN1bGF0ZWQgdmFsdWVz
ICovCiAJaW50IGFsbF9sdW5zOwkJLyogYWNyb3NzIGNoYW5uZWxzICovCkBAIC0yODcsNyArMjg3
LDcgQEAgc3RydWN0IG52bV9nZW8gewogCXNlY3Rvcl90IHRvdGFsX3NlY3M7CS8qIGFjcm9zcyBj
aGFubmVscyAqLwogCiAJLyogY2h1bmsgZ2VvbWV0cnkgKi8KLQl1MzIJbnJfY2hrczsJLyogY2h1
bmtzIHBlciBsdW4gKi8KKwl1MzIJbnVtX2NoazsJLyogY2h1bmtzIHBlciBsdW4gKi8KIAl1MzIJ
Y2xiYTsJCS8qIHNlY3RvcnMgcGVyIGNodW5rICovCiAJdTE2CWNzZWNzOwkJLyogc2VjdG9yIHNp
emUgKi8KIAl1MTYJc29zOwkJLyogb3V0LW9mLWJhbmQgYXJlYSBzaXplICovCkBAIC0zMjcsNyAr
MzI3LDcgQEAgc3RydWN0IG52bV9nZW8gewogCXUzMgltcG9zOwogCiAJdTgJbnVtX3BsbjsKLQl1
OAlwbGFuZV9tb2RlOworCXU4CXBsbl9tb2RlOwogCXUxNgludW1fcGc7CiAJdTE2CWZwZ19zejsK
IH07CkBAIC0zODUsNyArMzg1LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcHBhX2FkZHIgZ2Vu
ZXJpY190b19kZXZfYWRkcihzdHJ1Y3QgbnZtX3RndF9kZXYgKnRndF9kZXYsCiAJbC5wcGEgfD0g
KCh1NjQpci5nLmJsaykgPDwgcHBhZi0+YmxrX29mZnNldDsKIAlsLnBwYSB8PSAoKHU2NClyLmcu
cGcpIDw8IHBwYWYtPnBnX29mZnNldDsKIAlsLnBwYSB8PSAoKHU2NClyLmcucGwpIDw8IHBwYWYt
PnBsbl9vZmZzZXQ7Ci0JbC5wcGEgfD0gKCh1NjQpci5nLnNlYykgPDwgcHBhZi0+c2VjdF9vZmZz
ZXQ7CisJbC5wcGEgfD0gKCh1NjQpci5nLnNlYykgPDwgcHBhZi0+c2VjX29mZnNldDsKIAogCXJl
dHVybiBsOwogfQpAQCAtNDA1LDcgKzQwNSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBwYV9h
ZGRyIGRldl90b19nZW5lcmljX2FkZHIoc3RydWN0IG52bV90Z3RfZGV2ICp0Z3RfZGV2LAogCWwu
Zy5ibGsgPSAoci5wcGEgJiBwcGFmLT5ibGtfbWFzaykgPj4gcHBhZi0+YmxrX29mZnNldDsKIAls
LmcucGcgPSAoci5wcGEgJiBwcGFmLT5wZ19tYXNrKSA+PiBwcGFmLT5wZ19vZmZzZXQ7CiAJbC5n
LnBsID0gKHIucHBhICYgcHBhZi0+cGxuX21hc2spID4+IHBwYWYtPnBsbl9vZmZzZXQ7Ci0JbC5n
LnNlYyA9IChyLnBwYSAmIHBwYWYtPnNlY19tYXNrKSA+PiBwcGFmLT5zZWN0X29mZnNldDsKKwls
Lmcuc2VjID0gKHIucHBhICYgcHBhZi0+c2VjX21hc2spID4+IHBwYWYtPnNlY19vZmZzZXQ7CiAK
IAlyZXR1cm4gbDsKIH0KLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTGludXgtbnZtZSBtYWlsaW5nIGxpc3QKTGludXgtbnZtZUBsaXN0
cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu
Zm8vbGludXgtbnZtZQo=
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help