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 13/15] lightnvm: pblk: implement get log report chunk

From: Javier González <hidden>
Date: 2018-02-28 17:08:31
Also in: linux-nvme, lkml
Subsystem: the rest · Maintainer: Linus Torvalds

SW4gcHJlcGFyYXRpb24gb2YgcGJsayBzdXBwb3J0aW5nIDIuMCwgaW1wbGVtZW50IHRoZSBnZXQg
bG9nIHJlcG9ydApjaHVuayBpbiBwYmxrLiBBbHNvLCBkZWZpbmUgdGhlIGNodW5rIHN0YXRlcyBh
cyBnaXZlbiBpbiB0aGUgMi4wIHNwZWMuCgpTaWduZWQtb2ZmLWJ5OiBKYXZpZXIgR29uesOhbGV6
IDxqYXZpZXJAY25leGxhYnMuY29tPgotLS0KIGRyaXZlcnMvbGlnaHRudm0vcGJsay1jb3JlLmMg
fCAxMzkgKysrKysrKysrKysrKysrKysrKysrKystLS0tCiBkcml2ZXJzL2xpZ2h0bnZtL3BibGst
aW5pdC5jIHwgMjIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0K
IGRyaXZlcnMvbGlnaHRudm0vcGJsay5oICAgICAgfCAgIDcgKysKIGluY2x1ZGUvbGludXgvbGln
aHRudm0uaCAgICAgfCAgMTMgKysrCiA0IGZpbGVzIGNoYW5nZWQsIDMwMSBpbnNlcnRpb25zKCsp
LCA4MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2xpZ2h0bnZtL3BibGstY29y
ZS5jIGIvZHJpdmVycy9saWdodG52bS9wYmxrLWNvcmUuYwppbmRleCAyZTEwYjE4YjYxZTMuLmNk
NjYzODU1ZWU4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9saWdodG52bS9wYmxrLWNvcmUuYworKysg
Yi9kcml2ZXJzL2xpZ2h0bnZtL3BibGstY29yZS5jCkBAIC00NCwxMSArNDQsMTIgQEAgc3RhdGlj
IHZvaWQgcGJsa19saW5lX21hcmtfYmIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogfQogCiBz
dGF0aWMgdm9pZCBwYmxrX21hcmtfYmIoc3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxrX2xp
bmUgKmxpbmUsCi0JCQkgc3RydWN0IHBwYV9hZGRyICpwcGEpCisJCQkgc3RydWN0IHBwYV9hZGRy
IHBwYV9hZGRyKQogewogCXN0cnVjdCBudm1fdGd0X2RldiAqZGV2ID0gcGJsay0+ZGV2OwogCXN0
cnVjdCBudm1fZ2VvICpnZW8gPSAmZGV2LT5nZW87Ci0JaW50IHBvcyA9IHBibGtfcHBhX3RvX3Bv
cyhnZW8sICpwcGEpOworCXN0cnVjdCBwcGFfYWRkciAqcHBhOworCWludCBwb3MgPSBwYmxrX3Bw
YV90b19wb3MoZ2VvLCBwcGFfYWRkcik7CiAKIAlwcl9kZWJ1ZygicGJsazogZXJhc2UgZmFpbGVk
OiBsaW5lOiVkLCBwb3M6JWRcbiIsIGxpbmUtPmlkLCBwb3MpOwogCWF0b21pY19sb25nX2luYygm
cGJsay0+ZXJhc2VfZmFpbGVkKTsKQEAgLTU4LDI2ICs1OSwzOCBAQCBzdGF0aWMgdm9pZCBwYmxr
X21hcmtfYmIoc3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxrX2xpbmUgKmxpbmUsCiAJCXBy
X2VycigicGJsazogYXR0ZW1wdGVkIHRvIGVyYXNlIGJiOiBsaW5lOiVkLCBwb3M6JWRcbiIsCiAJ
CQkJCQkJbGluZS0+aWQsIHBvcyk7CiAKKwkvKiBOb3QgbmVjZXNzYXJ5IHRvIG1hcmsgYmFkIGJs
b2NrcyBvbiAyLjAgc3BlYy4gKi8KKwlpZiAoZ2VvLT52ZXJzaW9uID09IE5WTV9PQ1NTRF9TUEVD
XzIwKQorCQlyZXR1cm47CisKKwlwcGEgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgcHBhX2FkZHIp
LCBHRlBfQVRPTUlDKTsKKwlpZiAoIXBwYSkKKwkJcmV0dXJuOworCisJKnBwYSA9IHBwYV9hZGRy
OwogCXBibGtfZ2VuX3J1bl93cyhwYmxrLCBOVUxMLCBwcGEsIHBibGtfbGluZV9tYXJrX2JiLAog
CQkJCQkJR0ZQX0FUT01JQywgcGJsay0+YmJfd3EpOwogfQogCiBzdGF0aWMgdm9pZCBfX3BibGtf
ZW5kX2lvX2VyYXNlKHN0cnVjdCBwYmxrICpwYmxrLCBzdHJ1Y3QgbnZtX3JxICpycWQpCiB7CisJ
c3RydWN0IG52bV90Z3RfZGV2ICpkZXYgPSBwYmxrLT5kZXY7CisJc3RydWN0IG52bV9nZW8gKmdl
byA9ICZkZXYtPmdlbzsKKwlzdHJ1Y3QgbnZtX2Noa19tZXRhICpjaHVuazsKIAlzdHJ1Y3QgcGJs
a19saW5lICpsaW5lOworCWludCBwb3M7CiAKIAlsaW5lID0gJnBibGstPmxpbmVzW3BibGtfcHBh
X3RvX2xpbmUocnFkLT5wcGFfYWRkcildOworCXBvcyA9IHBibGtfcHBhX3RvX3BvcyhnZW8sIHJx
ZC0+cHBhX2FkZHIpOworCWNodW5rID0gJmxpbmUtPmNoa3NbcG9zXTsKKwogCWF0b21pY19kZWMo
JmxpbmUtPmxlZnRfc2VibGtzKTsKIAogCWlmIChycWQtPmVycm9yKSB7Ci0JCXN0cnVjdCBwcGFf
YWRkciAqcHBhOwotCi0JCXBwYSA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBwcGFfYWRkciksIEdG
UF9BVE9NSUMpOwotCQlpZiAoIXBwYSkKLQkJCXJldHVybjsKLQotCQkqcHBhID0gcnFkLT5wcGFf
YWRkcjsKLQkJcGJsa19tYXJrX2JiKHBibGssIGxpbmUsIHBwYSk7CisJCWNodW5rLT5zdGF0ZSA9
IE5WTV9DSEtfU1RfT0ZGTElORTsKKwkJcGJsa19tYXJrX2JiKHBibGssIGxpbmUsIHJxZC0+cHBh
X2FkZHIpOworCX0gZWxzZSB7CisJCWNodW5rLT5zdGF0ZSA9IE5WTV9DSEtfU1RfRlJFRTsKIAl9
CiAKIAlhdG9taWNfZGVjKCZwYmxrLT5pbmZsaWdodF9pbyk7CkBAIC05Miw2ICsxMDUsNTAgQEAg
c3RhdGljIHZvaWQgcGJsa19lbmRfaW9fZXJhc2Uoc3RydWN0IG52bV9ycSAqcnFkKQogCW1lbXBv
b2xfZnJlZShycWQsIHBibGstPmVfcnFfcG9vbCk7CiB9CiAKKy8qCisgKiBHZXQgaW5mb3JtYXRp
b24gZm9yIGFsbCBjaHVua3MgZnJvbSB0aGUgZGV2aWNlLgorICoKKyAqIFRoZSBjYWxsZXIgaXMg
cmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlIHJldHVybmVkIHN0cnVjdHVyZQorICovCitzdHJ1
Y3QgbnZtX2Noa19tZXRhICpwYmxrX2NodW5rX2dldF9pbmZvKHN0cnVjdCBwYmxrICpwYmxrKQor
eworCXN0cnVjdCBudm1fdGd0X2RldiAqZGV2ID0gcGJsay0+ZGV2OworCXN0cnVjdCBudm1fZ2Vv
ICpnZW8gPSAmZGV2LT5nZW87CisJc3RydWN0IG52bV9jaGtfbWV0YSAqbWV0YTsKKwlzdHJ1Y3Qg
cHBhX2FkZHIgcHBhOworCXVuc2lnbmVkIGxvbmcgbGVuOworCWludCByZXQ7CisKKwlwcGEucHBh
ID0gMDsKKworCWxlbiA9IGdlby0+YWxsX2NodW5rcyAqIHNpemVvZigqbWV0YSk7CisJbWV0YSA9
IGt6YWxsb2MobGVuLCBHRlBfS0VSTkVMKTsKKwlpZiAoIW1ldGEpCisJCXJldHVybiBFUlJfUFRS
KC1FTk9NRU0pOworCisJcmV0ID0gbnZtX2dldF9jaHVua19tZXRhKGRldiwgbWV0YSwgcHBhLCBn
ZW8tPmFsbF9jaHVua3MpOworCWlmIChyZXQpIHsKKwkJcHJfZXJyKCJwYmxrOiBjb3VsZCBub3Qg
Z2V0IGNodW5rIG1ldGFkYXRhICglZClcbiIsIHJldCk7CisJCWtmcmVlKG1ldGEpOworCQlyZXR1
cm4gRVJSX1BUUigtRUlPKTsKKwl9CisKKwlyZXR1cm4gbWV0YTsKK30KKworc3RydWN0IG52bV9j
aGtfbWV0YSAqcGJsa19jaHVua19nZXRfb2ZmKHN0cnVjdCBwYmxrICpwYmxrLAorCQkJCQkgICAg
ICBzdHJ1Y3QgbnZtX2Noa19tZXRhICptZXRhLAorCQkJCQkgICAgICBzdHJ1Y3QgcHBhX2FkZHIg
cHBhKQoreworCXN0cnVjdCBudm1fdGd0X2RldiAqZGV2ID0gcGJsay0+ZGV2OworCXN0cnVjdCBu
dm1fZ2VvICpnZW8gPSAmZGV2LT5nZW87CisJaW50IGNoX29mZiA9IHBwYS5tLmdycCAqIGdlby0+
bnVtX2NoayAqIGdlby0+bnVtX2x1bjsKKwlpbnQgbHVuX29mZiA9IHBwYS5tLnB1ICogZ2VvLT5u
dW1fY2hrOworCWludCBjaGtfb2ZmID0gcHBhLm0uY2hrOworCisJcmV0dXJuIG1ldGEgKyBjaF9v
ZmYgKyBsdW5fb2ZmICsgY2hrX29mZjsKK30KKwogdm9pZCBfX3BibGtfbWFwX2ludmFsaWRhdGUo
c3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxrX2xpbmUgKmxpbmUsCiAJCQkgICB1NjQgcGFk
ZHIpCiB7CkBAIC0xMDk0LDEwICsxMTUxLDM0IEBAIHN0YXRpYyBpbnQgcGJsa19saW5lX2luaXRf
YmIoc3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxrX2xpbmUgKmxpbmUsCiAJcmV0dXJuIDE7
CiB9CiAKK3N0YXRpYyBpbnQgcGJsa19wcmVwYXJlX25ld19saW5lKHN0cnVjdCBwYmxrICpwYmxr
LCBzdHJ1Y3QgcGJsa19saW5lICpsaW5lKQoreworCXN0cnVjdCBwYmxrX2xpbmVfbWV0YSAqbG0g
PSAmcGJsay0+bG07CisJc3RydWN0IG52bV90Z3RfZGV2ICpkZXYgPSBwYmxrLT5kZXY7CisJc3Ry
dWN0IG52bV9nZW8gKmdlbyA9ICZkZXYtPmdlbzsKKwlpbnQgYmxrX3RvX2VyYXNlID0gYXRvbWlj
X3JlYWQoJmxpbmUtPmJsa19pbl9saW5lKTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBs
bS0+YmxrX3Blcl9saW5lOyBpKyspIHsKKwkJc3RydWN0IHBibGtfbHVuICpybHVuID0gJnBibGst
Pmx1bnNbaV07CisJCWludCBwb3MgPSBwYmxrX3BwYV90b19wb3MoZ2VvLCBybHVuLT5icHBhKTsK
KwkJaW50IHN0YXRlID0gbGluZS0+Y2hrc1twb3NdLnN0YXRlOworCisJCS8qIEZyZWUgY2h1bmtz
IHNob3VsZCBub3QgYmUgZXJhc2VkICovCisJCWlmIChzdGF0ZSAmIE5WTV9DSEtfU1RfRlJFRSkg
eworCQkJc2V0X2JpdChwYmxrX3BwYV90b19wb3MoZ2VvLCBybHVuLT5icHBhKSwKKwkJCQkJCQls
aW5lLT5lcmFzZV9iaXRtYXApOworCQkJYmxrX3RvX2VyYXNlLS07CisJCX0KKwl9CisKKwlyZXR1
cm4gYmxrX3RvX2VyYXNlOworfQorCiBzdGF0aWMgaW50IHBibGtfbGluZV9wcmVwYXJlKHN0cnVj
dCBwYmxrICpwYmxrLCBzdHJ1Y3QgcGJsa19saW5lICpsaW5lKQogewogCXN0cnVjdCBwYmxrX2xp
bmVfbWV0YSAqbG0gPSAmcGJsay0+bG07Ci0JaW50IGJsa19pbl9saW5lID0gYXRvbWljX3JlYWQo
JmxpbmUtPmJsa19pbl9saW5lKTsKKwlpbnQgYmxrX3RvX2VyYXNlOwogCiAJbGluZS0+bWFwX2Jp
dG1hcCA9IGt6YWxsb2MobG0tPnNlY19iaXRtYXBfbGVuLCBHRlBfQVRPTUlDKTsKIAlpZiAoIWxp
bmUtPm1hcF9iaXRtYXApCkBAIC0xMTEwLDcgKzExOTEsMjEgQEAgc3RhdGljIGludCBwYmxrX2xp
bmVfcHJlcGFyZShzdHJ1Y3QgcGJsayAqcGJsaywgc3RydWN0IHBibGtfbGluZSAqbGluZSkKIAkJ
cmV0dXJuIC1FTk9NRU07CiAJfQogCisJLyogQmFkIGJsb2NrcyBkbyBub3QgbmVlZCB0byBiZSBl
cmFzZWQgKi8KKwliaXRtYXBfY29weShsaW5lLT5lcmFzZV9iaXRtYXAsIGxpbmUtPmJsa19iaXRt
YXAsIGxtLT5ibGtfcGVyX2xpbmUpOworCiAJc3Bpbl9sb2NrKCZsaW5lLT5sb2NrKTsKKworCS8q
IElmIHdlIGhhdmUgbm90IHdyaXR0ZW4gdG8gdGhpcyBsaW5lLCB3ZSBuZWVkIHRvIG1hcmsgdXAg
ZnJlZSBjaHVua3MKKwkgKiBhcyBhbHJlYWR5IGVyYXNlZAorCSAqLworCWlmIChsaW5lLT5zdGF0
ZSA9PSBQQkxLX0xJTkVTVEFURV9ORVcpIHsKKwkJYmxrX3RvX2VyYXNlID0gcGJsa19wcmVwYXJl
X25ld19saW5lKHBibGssIGxpbmUpOworCQlsaW5lLT5zdGF0ZSA9IFBCTEtfTElORVNUQVRFX0ZS
RUU7CisJfSBlbHNlIHsKKwkJYmxrX3RvX2VyYXNlID0gYXRvbWljX3JlYWQoJmxpbmUtPmJsa19p
bl9saW5lKTsKKwl9CisKIAlpZiAobGluZS0+c3RhdGUgIT0gUEJMS19MSU5FU1RBVEVfRlJFRSkg
ewogCQlrZnJlZShsaW5lLT5tYXBfYml0bWFwKTsKIAkJa2ZyZWUobGluZS0+aW52YWxpZF9iaXRt
YXApOwpAQCAtMTEyMiwxNSArMTIxNywxMiBAQCBzdGF0aWMgaW50IHBibGtfbGluZV9wcmVwYXJl
KHN0cnVjdCBwYmxrICpwYmxrLCBzdHJ1Y3QgcGJsa19saW5lICpsaW5lKQogCiAJbGluZS0+c3Rh
dGUgPSBQQkxLX0xJTkVTVEFURV9PUEVOOwogCi0JYXRvbWljX3NldCgmbGluZS0+bGVmdF9lYmxr
cywgYmxrX2luX2xpbmUpOwotCWF0b21pY19zZXQoJmxpbmUtPmxlZnRfc2VibGtzLCBibGtfaW5f
bGluZSk7CisJYXRvbWljX3NldCgmbGluZS0+bGVmdF9lYmxrcywgYmxrX3RvX2VyYXNlKTsKKwlh
dG9taWNfc2V0KCZsaW5lLT5sZWZ0X3NlYmxrcywgYmxrX3RvX2VyYXNlKTsKIAogCWxpbmUtPm1l
dGFfZGlzdGFuY2UgPSBsbS0+bWV0YV9kaXN0YW5jZTsKIAlzcGluX3VubG9jaygmbGluZS0+bG9j
ayk7CiAKLQkvKiBCYWQgYmxvY2tzIGRvIG5vdCBuZWVkIHRvIGJlIGVyYXNlZCAqLwotCWJpdG1h
cF9jb3B5KGxpbmUtPmVyYXNlX2JpdG1hcCwgbGluZS0+YmxrX2JpdG1hcCwgbG0tPmJsa19wZXJf
bGluZSk7Ci0KIAlrcmVmX2luaXQoJmxpbmUtPnJlZik7CiAKIAlyZXR1cm4gMDsKQEAgLTE1ODYs
MTIgKzE2NzgsMTQgQEAgc3RhdGljIHZvaWQgcGJsa19saW5lX3Nob3VsZF9zeW5jX21ldGEoc3Ry
dWN0IHBibGsgKnBibGspCiAKIHZvaWQgcGJsa19saW5lX2Nsb3NlKHN0cnVjdCBwYmxrICpwYmxr
LCBzdHJ1Y3QgcGJsa19saW5lICpsaW5lKQogeworCXN0cnVjdCBudm1fdGd0X2RldiAqZGV2ID0g
cGJsay0+ZGV2OworCXN0cnVjdCBudm1fZ2VvICpnZW8gPSAmZGV2LT5nZW87CisJc3RydWN0IHBi
bGtfbGluZV9tZXRhICpsbSA9ICZwYmxrLT5sbTsKIAlzdHJ1Y3QgcGJsa19saW5lX21nbXQgKmxf
bWcgPSAmcGJsay0+bF9tZzsKIAlzdHJ1Y3QgbGlzdF9oZWFkICptb3ZlX2xpc3Q7CisJaW50IGk7
CiAKICNpZmRlZiBDT05GSUdfTlZNX0RFQlVHCi0Jc3RydWN0IHBibGtfbGluZV9tZXRhICpsbSA9
ICZwYmxrLT5sbTsKLQogCVdBUk4oIWJpdG1hcF9mdWxsKGxpbmUtPm1hcF9iaXRtYXAsIGxtLT5z
ZWNfcGVyX2xpbmUpLAogCQkJCSJwYmxrOiBjb3JydXB0IGNsb3NlZCBsaW5lICVkXG4iLCBsaW5l
LT5pZCk7CiAjZW5kaWYKQEAgLTE2MTMsNiArMTcwNywxNSBAQCB2b2lkIHBibGtfbGluZV9jbG9z
ZShzdHJ1Y3QgcGJsayAqcGJsaywgc3RydWN0IHBibGtfbGluZSAqbGluZSkKIAlsaW5lLT5zbWV0
YSA9IE5VTEw7CiAJbGluZS0+ZW1ldGEgPSBOVUxMOwogCisJZm9yIChpID0gMDsgaSA8IGxtLT5i
bGtfcGVyX2xpbmU7IGkrKykgeworCQlzdHJ1Y3QgcGJsa19sdW4gKnJsdW4gPSAmcGJsay0+bHVu
c1tpXTsKKwkJaW50IHBvcyA9IHBibGtfcHBhX3RvX3BvcyhnZW8sIHJsdW4tPmJwcGEpOworCQlp
bnQgc3RhdGUgPSBsaW5lLT5jaGtzW3Bvc10uc3RhdGU7CisKKwkJaWYgKCEoc3RhdGUgJiBOVk1f
Q0hLX1NUX09GRkxJTkUpKQorCQkJc3RhdGUgPSBOVk1fQ0hLX1NUX0NMT1NFRDsKKwl9CisKIAlz
cGluX3VubG9jaygmbGluZS0+bG9jayk7CiAJc3Bpbl91bmxvY2soJmxfbWctPmdjX2xvY2spOwog
fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9saWdodG52bS9wYmxrLWluaXQuYyBiL2RyaXZlcnMvbGln
aHRudm0vcGJsay1pbml0LmMKaW5kZXggNzNiMjIxYzY5Y2ZkLi5iZDI1OTJmYzMzNzggMTAwNjQ0
Ci0tLSBhL2RyaXZlcnMvbGlnaHRudm0vcGJsay1pbml0LmMKKysrIGIvZHJpdmVycy9saWdodG52
bS9wYmxrLWluaXQuYwpAQCAtNDAxLDYgKzQwMSw3IEBAIHN0YXRpYyB2b2lkIHBibGtfbGluZV9t
ZXRhX2ZyZWUoc3RydWN0IHBibGtfbGluZSAqbGluZSkKIHsKIAlrZnJlZShsaW5lLT5ibGtfYml0
bWFwKTsKIAlrZnJlZShsaW5lLT5lcmFzZV9iaXRtYXApOworCWtmcmVlKGxpbmUtPmNoa3MpOwog
fQogCiBzdGF0aWMgdm9pZCBwYmxrX2xpbmVzX2ZyZWUoc3RydWN0IHBibGsgKnBibGspCkBAIC00
NDAsNTUgKzQ0MSw0NCBAQCBzdGF0aWMgaW50IHBibGtfYmJfZ2V0X3RibChzdHJ1Y3QgbnZtX3Rn
dF9kZXYgKmRldiwgc3RydWN0IHBibGtfbHVuICpybHVuLAogCXJldHVybiAwOwogfQogCi1zdGF0
aWMgdm9pZCAqcGJsa19iYl9nZXRfbG9nKHN0cnVjdCBwYmxrICpwYmxrKQorc3RhdGljIHZvaWQg
KnBibGtfYmJfZ2V0X21ldGEoc3RydWN0IHBibGsgKnBibGspCiB7CiAJc3RydWN0IG52bV90Z3Rf
ZGV2ICpkZXYgPSBwYmxrLT5kZXY7CiAJc3RydWN0IG52bV9nZW8gKmdlbyA9ICZkZXYtPmdlbzsK
LQl1OCAqbG9nOworCXU4ICptZXRhOwogCWludCBpLCBucl9ibGtzLCBibGtfcGVyX2x1bjsKIAlp
bnQgcmV0OwogCiAJYmxrX3Blcl9sdW4gPSBnZW8tPm51bV9jaGsgKiBnZW8tPnBsbl9tb2RlOwog
CW5yX2Jsa3MgPSBibGtfcGVyX2x1biAqIGdlby0+YWxsX2x1bnM7CiAKLQlsb2cgPSBrbWFsbG9j
KG5yX2Jsa3MsIEdGUF9LRVJORUwpOwotCWlmICghbG9nKQorCW1ldGEgPSBrbWFsbG9jKG5yX2Js
a3MsIEdGUF9LRVJORUwpOworCWlmICghbWV0YSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7
CiAKIAlmb3IgKGkgPSAwOyBpIDwgZ2VvLT5hbGxfbHVuczsgaSsrKSB7CiAJCXN0cnVjdCBwYmxr
X2x1biAqcmx1biA9ICZwYmxrLT5sdW5zW2ldOwotCQl1OCAqbG9nX3BvcyA9IGxvZyArIGkgKiBi
bGtfcGVyX2x1bjsKKwkJdTggKm1ldGFfcG9zID0gbWV0YSArIGkgKiBibGtfcGVyX2x1bjsKIAot
CQlyZXQgPSBwYmxrX2JiX2dldF90YmwoZGV2LCBybHVuLCBsb2dfcG9zLCBibGtfcGVyX2x1bik7
CisJCXJldCA9IHBibGtfYmJfZ2V0X3RibChkZXYsIHJsdW4sIG1ldGFfcG9zLCBibGtfcGVyX2x1
bik7CiAJCWlmIChyZXQpIHsKLQkJCWtmcmVlKGxvZyk7CisJCQlrZnJlZShtZXRhKTsKIAkJCXJl
dHVybiBFUlJfUFRSKC1FSU8pOwogCQl9CiAJfQogCi0JcmV0dXJuIGxvZzsKKwlyZXR1cm4gbWV0
YTsKIH0KIAotc3RhdGljIGludCBwYmxrX2JiX2xpbmUoc3RydWN0IHBibGsgKnBibGssIHN0cnVj
dCBwYmxrX2xpbmUgKmxpbmUsCi0JCQl1OCAqYmJfbG9nLCBpbnQgYmxrX3Blcl9saW5lKQorc3Rh
dGljIHZvaWQgKnBibGtfY2h1bmtfZ2V0X21ldGEoc3RydWN0IHBibGsgKnBibGspCiB7CiAJc3Ry
dWN0IG52bV90Z3RfZGV2ICpkZXYgPSBwYmxrLT5kZXY7CiAJc3RydWN0IG52bV9nZW8gKmdlbyA9
ICZkZXYtPmdlbzsKLQlpbnQgaSwgYmJfY250ID0gMDsKLQlpbnQgYmxrX3Blcl9sdW4gPSBnZW8t
Pm51bV9jaGsgKiBnZW8tPnBsbl9tb2RlOwogCi0JZm9yIChpID0gMDsgaSA8IGJsa19wZXJfbGlu
ZTsgaSsrKSB7Ci0JCXN0cnVjdCBwYmxrX2x1biAqcmx1biA9ICZwYmxrLT5sdW5zW2ldOwotCQl1
OCAqbHVuX2JiX2xvZyA9IGJiX2xvZyArIGkgKiBibGtfcGVyX2x1bjsKLQotCQlpZiAobHVuX2Ji
X2xvZ1tsaW5lLT5pZF0gPT0gTlZNX0JMS19UX0ZSRUUpCi0JCQljb250aW51ZTsKLQotCQlzZXRf
Yml0KHBibGtfcHBhX3RvX3BvcyhnZW8sIHJsdW4tPmJwcGEpLCBsaW5lLT5ibGtfYml0bWFwKTsK
LQkJYmJfY250Kys7Ci0JfQotCi0JcmV0dXJuIGJiX2NudDsKKwlpZiAoZ2VvLT52ZXJzaW9uID09
IE5WTV9PQ1NTRF9TUEVDXzEyKQorCQlyZXR1cm4gcGJsa19iYl9nZXRfbWV0YShwYmxrKTsKKwll
bHNlCisJCXJldHVybiBwYmxrX2NodW5rX2dldF9pbmZvKHBibGspOwogfQogCiBzdGF0aWMgaW50
IHBibGtfbHVuc19pbml0KHN0cnVjdCBwYmxrICpwYmxrLCBzdHJ1Y3QgcHBhX2FkZHIgKmx1bnMp
CkBAIC02OTYsOCArNjg2LDEzMSBAQCBzdGF0aWMgaW50IHBibGtfbGluZXNfYWxsb2NfbWV0YWRh
dGEoc3RydWN0IHBibGsgKnBibGspCiAJcmV0dXJuIC1FTk9NRU07CiB9CiAKLXN0YXRpYyBpbnQg
cGJsa19zZXR1cF9saW5lX21ldGEoc3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxrX2xpbmUg
KmxpbmUsCi0JCQkJdm9pZCAqY2h1bmtfbG9nLCBsb25nICpucl9iYWRfYmxrcykKK3N0YXRpYyBp
bnQgcGJsa19zZXR1cF9saW5lX21ldGFfMTIoc3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxr
X2xpbmUgKmxpbmUsCisJCQkJICAgdm9pZCAqY2h1bmtfbWV0YSkKK3sKKwlzdHJ1Y3QgbnZtX3Rn
dF9kZXYgKmRldiA9IHBibGstPmRldjsKKwlzdHJ1Y3QgbnZtX2dlbyAqZ2VvID0gJmRldi0+Z2Vv
OworCXN0cnVjdCBwYmxrX2xpbmVfbWV0YSAqbG0gPSAmcGJsay0+bG07CisJaW50IGksIGNoa19w
ZXJfbHVuLCBucl9iYWRfY2hrcyA9IDA7CisKKwljaGtfcGVyX2x1biA9IGdlby0+bnVtX2NoayAq
IGdlby0+cGxuX21vZGU7CisKKwlmb3IgKGkgPSAwOyBpIDwgbG0tPmJsa19wZXJfbGluZTsgaSsr
KSB7CisJCXN0cnVjdCBwYmxrX2x1biAqcmx1biA9ICZwYmxrLT5sdW5zW2ldOworCQlzdHJ1Y3Qg
bnZtX2Noa19tZXRhICpjaHVuazsKKwkJaW50IHBvcyA9IHBibGtfcHBhX3RvX3BvcyhnZW8sIHJs
dW4tPmJwcGEpOworCQl1OCAqbHVuX2JiX21ldGEgPSBjaHVua19tZXRhICsgcG9zICogY2hrX3Bl
cl9sdW47CisKKwkJY2h1bmsgPSAmbGluZS0+Y2hrc1twb3NdOworCisJCS8qCisJCSAqIEluIDEu
MiBzcGVjLiBjaHVuayBzdGF0ZSBpcyBub3QgcGVyc2lzdGVkIGJ5IHRoZSBkZXZpY2UuIFRodXMK
KwkJICogc29tZSBvZiB0aGUgdmFsdWVzIGFyZSByZXNldCBlYWNoIHRpbWUgcGJsayBpcyBpbnN0
YW50aWF0ZWQuCisJCSAqLworCQlpZiAobHVuX2JiX21ldGFbbGluZS0+aWRdID09IE5WTV9CTEtf
VF9GUkVFKQorCQkJY2h1bmstPnN0YXRlID0gIE5WTV9DSEtfU1RfRlJFRTsKKwkJZWxzZQorCQkJ
Y2h1bmstPnN0YXRlID0gTlZNX0NIS19TVF9PRkZMSU5FOworCisJCWNodW5rLT50eXBlID0gTlZN
X0NIS19UUF9XX1NFUTsKKwkJY2h1bmstPndpID0gMDsKKwkJY2h1bmstPnNsYmEgPSAtMTsKKwkJ
Y2h1bmstPmNubGIgPSBnZW8tPmNsYmE7CisJCWNodW5rLT53cCA9IDA7CisKKwkJaWYgKCEoY2h1
bmstPnN0YXRlICYgTlZNX0NIS19TVF9PRkZMSU5FKSkKKwkJCWNvbnRpbnVlOworCisJCXNldF9i
aXQocG9zLCBsaW5lLT5ibGtfYml0bWFwKTsKKwkJbnJfYmFkX2Noa3MrKzsKKwl9CisKKwlyZXR1
cm4gbnJfYmFkX2Noa3M7Cit9CisKK3N0YXRpYyBpbnQgcGJsa19zZXR1cF9saW5lX21ldGFfMjAo
c3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxrX2xpbmUgKmxpbmUsCisJCQkJICAgc3RydWN0
IG52bV9jaGtfbWV0YSAqbWV0YSkKK3sKKwlzdHJ1Y3QgbnZtX3RndF9kZXYgKmRldiA9IHBibGst
PmRldjsKKwlzdHJ1Y3QgbnZtX2dlbyAqZ2VvID0gJmRldi0+Z2VvOworCXN0cnVjdCBwYmxrX2xp
bmVfbWV0YSAqbG0gPSAmcGJsay0+bG07CisJaW50IGksIG5yX2JhZF9jaGtzID0gMDsKKworCWZv
ciAoaSA9IDA7IGkgPCBsbS0+YmxrX3Blcl9saW5lOyBpKyspIHsKKwkJc3RydWN0IHBibGtfbHVu
ICpybHVuID0gJnBibGstPmx1bnNbaV07CisJCXN0cnVjdCBudm1fY2hrX21ldGEgKmNodW5rOwor
CQlzdHJ1Y3QgbnZtX2Noa19tZXRhICpjaHVua19tZXRhOworCQlzdHJ1Y3QgcHBhX2FkZHIgcHBh
OworCQlpbnQgcG9zOworCisJCXBwYSA9IHJsdW4tPmJwcGE7CisJCXBvcyA9IHBibGtfcHBhX3Rv
X3BvcyhnZW8sIHBwYSk7CisJCWNodW5rID0gJmxpbmUtPmNoa3NbcG9zXTsKKworCQlwcGEubS5j
aGsgPSBsaW5lLT5pZDsKKwkJY2h1bmtfbWV0YSA9IHBibGtfY2h1bmtfZ2V0X29mZihwYmxrLCBt
ZXRhLCBwcGEpOworCisJCWNodW5rLT5zdGF0ZSA9IGNodW5rX21ldGEtPnN0YXRlOworCQljaHVu
ay0+dHlwZSA9IGNodW5rX21ldGEtPnR5cGU7CisJCWNodW5rLT53aSA9IGNodW5rX21ldGEtPndp
OworCQljaHVuay0+c2xiYSA9IGNodW5rX21ldGEtPnNsYmE7CisJCWNodW5rLT5jbmxiID0gY2h1
bmtfbWV0YS0+Y25sYjsKKwkJY2h1bmstPndwID0gY2h1bmtfbWV0YS0+d3A7CisKKwkJaWYgKCEo
Y2h1bmstPnN0YXRlICYgTlZNX0NIS19TVF9PRkZMSU5FKSkKKwkJCWNvbnRpbnVlOworCisJCWlm
IChjaHVuay0+dHlwZSAmIE5WTV9DSEtfVFBfU1pfU1BFQykgeworCQkJV0FSTl9PTkNFKDEsICJw
YmxrOiBjdXN0b20tc2l6ZWQgY2h1bmtzIHVuc3VwcG9ydGVkXG4iKTsKKwkJCWNvbnRpbnVlOwor
CQl9CisKKwkJc2V0X2JpdChwb3MsIGxpbmUtPmJsa19iaXRtYXApOworCQlucl9iYWRfY2hrcysr
OworCX0KKworCXJldHVybiBucl9iYWRfY2hrczsKK30KKworc3RhdGljIGxvbmcgcGJsa19zZXR1
cF9saW5lX21ldGEoc3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBwYmxrX2xpbmUgKmxpbmUsCisJ
CQkJIHZvaWQgKmNodW5rX21ldGEsIGludCBsaW5lX2lkKQoreworCXN0cnVjdCBudm1fdGd0X2Rl
diAqZGV2ID0gcGJsay0+ZGV2OworCXN0cnVjdCBudm1fZ2VvICpnZW8gPSAmZGV2LT5nZW87CisJ
c3RydWN0IHBibGtfbGluZV9tZ210ICpsX21nID0gJnBibGstPmxfbWc7CisJc3RydWN0IHBibGtf
bGluZV9tZXRhICpsbSA9ICZwYmxrLT5sbTsKKwlsb25nIG5yX2JhZF9jaGtzLCBjaGtfaW5fbGlu
ZTsKKworCWxpbmUtPnBibGsgPSBwYmxrOworCWxpbmUtPmlkID0gbGluZV9pZDsKKwlsaW5lLT50
eXBlID0gUEJMS19MSU5FVFlQRV9GUkVFOworCWxpbmUtPnN0YXRlID0gUEJMS19MSU5FU1RBVEVf
TkVXOworCWxpbmUtPmdjX2dyb3VwID0gUEJMS19MSU5FR0NfTk9ORTsKKwlsaW5lLT52c2MgPSAm
bF9tZy0+dnNjX2xpc3RbbGluZV9pZF07CisJc3Bpbl9sb2NrX2luaXQoJmxpbmUtPmxvY2spOwor
CisJaWYgKGdlby0+dmVyc2lvbiA9PSBOVk1fT0NTU0RfU1BFQ18xMikKKwkJbnJfYmFkX2Noa3Mg
PSBwYmxrX3NldHVwX2xpbmVfbWV0YV8xMihwYmxrLCBsaW5lLCBjaHVua19tZXRhKTsKKwllbHNl
CisJCW5yX2JhZF9jaGtzID0gcGJsa19zZXR1cF9saW5lX21ldGFfMjAocGJsaywgbGluZSwgY2h1
bmtfbWV0YSk7CisKKwljaGtfaW5fbGluZSA9IGxtLT5ibGtfcGVyX2xpbmUgLSBucl9iYWRfY2hr
czsKKwlpZiAobnJfYmFkX2Noa3MgPCAwIHx8IG5yX2JhZF9jaGtzID4gbG0tPmJsa19wZXJfbGlu
ZSB8fAorCQkJCQljaGtfaW5fbGluZSA8IGxtLT5taW5fYmxrX2xpbmUpIHsKKwkJbGluZS0+c3Rh
dGUgPSBQQkxLX0xJTkVTVEFURV9CQUQ7CisJCWxpc3RfYWRkX3RhaWwoJmxpbmUtPmxpc3QsICZs
X21nLT5iYWRfbGlzdCk7CisJCXJldHVybiAwOworCX0KKworCWF0b21pY19zZXQoJmxpbmUtPmJs
a19pbl9saW5lLCBjaGtfaW5fbGluZSk7CisJbGlzdF9hZGRfdGFpbCgmbGluZS0+bGlzdCwgJmxf
bWctPmZyZWVfbGlzdCk7CisJbF9tZy0+bnJfZnJlZV9saW5lcysrOworCisJcmV0dXJuIGNoa19p
bl9saW5lOworfQorCitzdGF0aWMgaW50IHBibGtfYWxsb2NfbGluZV9tZXRhKHN0cnVjdCBwYmxr
ICpwYmxrLCBzdHJ1Y3QgcGJsa19saW5lICpsaW5lKQogewogCXN0cnVjdCBwYmxrX2xpbmVfbWV0
YSAqbG0gPSAmcGJsay0+bG07CiAKQEAgLTcxMSw3ICs4MjQsMTMgQEAgc3RhdGljIGludCBwYmxr
X3NldHVwX2xpbmVfbWV0YShzdHJ1Y3QgcGJsayAqcGJsaywgc3RydWN0IHBibGtfbGluZSAqbGlu
ZSwKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCi0JKm5yX2JhZF9ibGtzID0gcGJsa19iYl9saW5l
KHBibGssIGxpbmUsIGNodW5rX2xvZywgbG0tPmJsa19wZXJfbGluZSk7CisJbGluZS0+Y2hrcyA9
IGttYWxsb2MobG0tPmJsa19wZXJfbGluZSAqIHNpemVvZihzdHJ1Y3QgbnZtX2Noa19tZXRhKSwK
KwkJCQkJCQkJR0ZQX0tFUk5FTCk7CisJaWYgKCFsaW5lLT5jaGtzKSB7CisJCWtmcmVlKGxpbmUt
PmVyYXNlX2JpdG1hcCk7CisJCWtmcmVlKGxpbmUtPmJsa19iaXRtYXApOworCQlyZXR1cm4gLUVO
T01FTTsKKwl9CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTcyMyw5ICs4NDIsOSBAQCBzdGF0aWMgaW50
IHBibGtfbGluZXNfaW5pdChzdHJ1Y3QgcGJsayAqcGJsaykKIAlzdHJ1Y3QgcGJsa19saW5lX21n
bXQgKmxfbWcgPSAmcGJsay0+bF9tZzsKIAlzdHJ1Y3QgcGJsa19saW5lX21ldGEgKmxtID0gJnBi
bGstPmxtOwogCXN0cnVjdCBwYmxrX2xpbmUgKmxpbmU7Ci0Jdm9pZCAqY2h1bmtfbG9nOworCXZv
aWQgKmNodW5rX21ldGE7CiAJdW5zaWduZWQgaW50IHNtZXRhX2xlbiwgZW1ldGFfbGVuOwotCWxv
bmcgbnJfYmFkX2Jsa3MgPSAwLCBucl9mcmVlX2Jsa3MgPSAwOworCWxvbmcgbnJfZnJlZV9jaGtz
ID0gMDsKIAlpbnQgYmJfZGlzdGFuY2UsIG1heF93cml0ZV9wcGFzOwogCWludCBpLCByZXQ7CiAK
QEAgLTg0Miw1MyArOTYxLDMxIEBAIHN0YXRpYyBpbnQgcGJsa19saW5lc19pbml0KHN0cnVjdCBw
YmxrICpwYmxrKQogCQlnb3RvIGZhaWxfZnJlZV9iYl9hdXg7CiAJfQogCi0JY2h1bmtfbG9nID0g
cGJsa19iYl9nZXRfbG9nKHBibGspOwotCWlmIChJU19FUlIoY2h1bmtfbG9nKSkgewotCQlwcl9l
cnIoInBibGs6IGNvdWxkIG5vdCBnZXQgYmFkIGJsb2NrIGxvZyAoJWx1KVxuIiwKLQkJCQkJCQlQ
VFJfRVJSKGNodW5rX2xvZykpOwotCQlyZXQgPSBQVFJfRVJSKGNodW5rX2xvZyk7CisJY2h1bmtf
bWV0YSA9IHBibGtfY2h1bmtfZ2V0X21ldGEocGJsayk7CisJaWYgKElTX0VSUihjaHVua19tZXRh
KSkgeworCQlwcl9lcnIoInBibGs6IGNvdWxkIG5vdCBnZXQgY2h1bmsgbG9nICglbHUpXG4iLAor
CQkJCQkJCVBUUl9FUlIoY2h1bmtfbWV0YSkpOworCQlyZXQgPSBQVFJfRVJSKGNodW5rX21ldGEp
OwogCQlnb3RvIGZhaWxfZnJlZV9saW5lczsKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgbF9tZy0+
bnJfbGluZXM7IGkrKykgewotCQlpbnQgY2hrX2luX2xpbmU7Ci0KIAkJbGluZSA9ICZwYmxrLT5s
aW5lc1tpXTsKIAotCQlsaW5lLT5wYmxrID0gcGJsazsKLQkJbGluZS0+aWQgPSBpOwotCQlsaW5l
LT50eXBlID0gUEJMS19MSU5FVFlQRV9GUkVFOwotCQlsaW5lLT5zdGF0ZSA9IFBCTEtfTElORVNU
QVRFX0ZSRUU7Ci0JCWxpbmUtPmdjX2dyb3VwID0gUEJMS19MSU5FR0NfTk9ORTsKLQkJbGluZS0+
dnNjID0gJmxfbWctPnZzY19saXN0W2ldOwotCQlzcGluX2xvY2tfaW5pdCgmbGluZS0+bG9jayk7
Ci0KLQkJcmV0ID0gcGJsa19zZXR1cF9saW5lX21ldGEocGJsaywgbGluZSwgY2h1bmtfbG9nLCAm
bnJfYmFkX2Jsa3MpOworCQlyZXQgPSBwYmxrX2FsbG9jX2xpbmVfbWV0YShwYmxrLCBsaW5lKTsK
IAkJaWYgKHJldCkKLQkJCWdvdG8gZmFpbF9mcmVlX2NodW5rX2xvZzsKKwkJCWdvdG8gZmFpbF9m
cmVlX2NodW5rX21ldGE7CiAKLQkJY2hrX2luX2xpbmUgPSBsbS0+YmxrX3Blcl9saW5lIC0gbnJf
YmFkX2Jsa3M7Ci0JCWlmIChucl9iYWRfYmxrcyA8IDAgfHwgbnJfYmFkX2Jsa3MgPiBsbS0+Ymxr
X3Blcl9saW5lIHx8Ci0JCQkJCWNoa19pbl9saW5lIDwgbG0tPm1pbl9ibGtfbGluZSkgewotCQkJ
bGluZS0+c3RhdGUgPSBQQkxLX0xJTkVTVEFURV9CQUQ7Ci0JCQlsaXN0X2FkZF90YWlsKCZsaW5l
LT5saXN0LCAmbF9tZy0+YmFkX2xpc3QpOwotCQkJY29udGludWU7Ci0JCX0KLQotCQlucl9mcmVl
X2Jsa3MgKz0gY2hrX2luX2xpbmU7Ci0JCWF0b21pY19zZXQoJmxpbmUtPmJsa19pbl9saW5lLCBj
aGtfaW5fbGluZSk7Ci0KLQkJbF9tZy0+bnJfZnJlZV9saW5lcysrOwotCQlsaXN0X2FkZF90YWls
KCZsaW5lLT5saXN0LCAmbF9tZy0+ZnJlZV9saXN0KTsKKwkJbnJfZnJlZV9jaGtzICs9IHBibGtf
c2V0dXBfbGluZV9tZXRhKHBibGssIGxpbmUsIGNodW5rX21ldGEsIGkpOwogCX0KIAotCXBibGtf
c2V0X3Byb3Zpc2lvbihwYmxrLCBucl9mcmVlX2Jsa3MpOworCXBibGtfc2V0X3Byb3Zpc2lvbihw
YmxrLCBucl9mcmVlX2Noa3MpOwogCi0Ja2ZyZWUoY2h1bmtfbG9nKTsKKwlrZnJlZShjaHVua19t
ZXRhKTsKIAlyZXR1cm4gMDsKIAotZmFpbF9mcmVlX2NodW5rX2xvZzoKLQlrZnJlZShjaHVua19s
b2cpOworZmFpbF9mcmVlX2NodW5rX21ldGE6CisJa2ZyZWUoY2h1bmtfbWV0YSk7CiAJd2hpbGUg
KC0taSA+PSAwKQogCQlwYmxrX2xpbmVfbWV0YV9mcmVlKCZwYmxrLT5saW5lc1tpXSk7CiBmYWls
X2ZyZWVfbGluZXM6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2xpZ2h0bnZtL3BibGsuaCBiL2RyaXZl
cnMvbGlnaHRudm0vcGJsay5oCmluZGV4IDZhYzY0ZDllYjU3ZS4uZWUxNDk3NjZiN2EwIDEwMDY0
NAotLS0gYS9kcml2ZXJzL2xpZ2h0bnZtL3BibGsuaAorKysgYi9kcml2ZXJzL2xpZ2h0bnZtL3Bi
bGsuaApAQCAtMjk3LDYgKzI5Nyw3IEBAIGVudW0gewogCVBCTEtfTElORVRZUEVfREFUQSA9IDIs
CiAKIAkvKiBMaW5lIHN0YXRlICovCisJUEJMS19MSU5FU1RBVEVfTkVXID0gOSwKIAlQQkxLX0xJ
TkVTVEFURV9GUkVFID0gMTAsCiAJUEJMS19MSU5FU1RBVEVfT1BFTiA9IDExLAogCVBCTEtfTElO
RVNUQVRFX0NMT1NFRCA9IDEyLApAQCAtNDI2LDYgKzQyNyw4IEBAIHN0cnVjdCBwYmxrX2xpbmUg
ewogCiAJdW5zaWduZWQgbG9uZyAqbHVuX2JpdG1hcDsJLyogQml0bWFwIGZvciBMVU5zIG1hcHBl
ZCBpbiBsaW5lICovCiAKKwlzdHJ1Y3QgbnZtX2Noa19tZXRhICpjaGtzOwkvKiBDaHVua3MgZm9y
bWluZyBsaW5lICovCisKIAlzdHJ1Y3QgcGJsa19zbWV0YSAqc21ldGE7CS8qIFN0YXJ0IG1ldGFk
YXRhICovCiAJc3RydWN0IHBibGtfZW1ldGEgKmVtZXRhOwkvKiBFbmQgbWVkYXRhZGEgKi8KIApA
QCAtNzI5LDYgKzczMiwxMCBAQCB2b2lkIHBibGtfc2V0X3NlY19wZXJfd3JpdGUoc3RydWN0IHBi
bGsgKnBibGssIGludCBzZWNfcGVyX3dyaXRlKTsKIGludCBwYmxrX3NldHVwX3dfcmVjX3JxKHN0
cnVjdCBwYmxrICpwYmxrLCBzdHJ1Y3QgbnZtX3JxICpycWQsCiAJCQlzdHJ1Y3QgcGJsa19jX2N0
eCAqY19jdHgpOwogdm9pZCBwYmxrX2Rpc2NhcmQoc3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBi
aW8gKmJpbyk7CitzdHJ1Y3QgbnZtX2Noa19tZXRhICpwYmxrX2NodW5rX2dldF9pbmZvKHN0cnVj
dCBwYmxrICpwYmxrKTsKK3N0cnVjdCBudm1fY2hrX21ldGEgKnBibGtfY2h1bmtfZ2V0X29mZihz
dHJ1Y3QgcGJsayAqcGJsaywKKwkJCQkJICAgICAgc3RydWN0IG52bV9jaGtfbWV0YSAqbHAsCisJ
CQkJCSAgICAgIHN0cnVjdCBwcGFfYWRkciBwcGEpOwogdm9pZCBwYmxrX2xvZ193cml0ZV9lcnIo
c3RydWN0IHBibGsgKnBibGssIHN0cnVjdCBudm1fcnEgKnJxZCk7CiB2b2lkIHBibGtfbG9nX3Jl
YWRfZXJyKHN0cnVjdCBwYmxrICpwYmxrLCBzdHJ1Y3QgbnZtX3JxICpycWQpOwogaW50IHBibGtf
c3VibWl0X2lvKHN0cnVjdCBwYmxrICpwYmxrLCBzdHJ1Y3QgbnZtX3JxICpycWQpOwpkaWZmIC0t
Z2l0IGEvaW5jbHVkZS9saW51eC9saWdodG52bS5oIGIvaW5jbHVkZS9saW51eC9saWdodG52bS5o
CmluZGV4IDlmZTM3ZjdlODE4NS4uYzEyMGIyMjQzNzU4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xp
bnV4L2xpZ2h0bnZtLmgKKysrIGIvaW5jbHVkZS9saW51eC9saWdodG52bS5oCkBAIC0yMzIsNiAr
MjMyLDE5IEBAIHN0cnVjdCBudm1fYWRkcl9mb3JtYXQgewogCXU2NAlyc3ZfbWFza1syXTsKIH07
CiAKK2VudW0geworCS8qIENodW5rIHN0YXRlcyAqLworCU5WTV9DSEtfU1RfRlJFRSA9CTEgPDwg
MCwKKwlOVk1fQ0hLX1NUX0NMT1NFRCA9CTEgPDwgMSwKKwlOVk1fQ0hLX1NUX09QRU4gPQkxIDw8
IDIsCisJTlZNX0NIS19TVF9PRkZMSU5FID0JMSA8PCAzLAorCisJLyogQ2h1bmsgdHlwZXMgKi8K
KwlOVk1fQ0hLX1RQX1dfU0VRID0JMSA8PCAwLAorCU5WTV9DSEtfVFBfV19SQU4gPQkxIDw8IDEs
CisJTlZNX0NIS19UUF9TWl9TUEVDID0JMSA8PCA0LAorfTsKKwogLyoKICAqIE5vdGU6IFRoZSBz
dHJ1Y3R1cmUgc2l6ZSBpcyBsaW5rZWQgdG8gbnZtZV9udm1fY2hrX21ldGEgc3VjaCB0aGF0IHRo
ZSBzYW1lCiAgKiBidWZmZXIgY2FuIGJlIHVzZWQgd2hlbiBjb252ZXJ0aW5nIGZyb20gbGl0dGxl
IGVuZGlhbiB0byBjcHUgYWRkcmVzc2luZy4KLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtbnZtZSBtYWlsaW5nIGxpc3QKTGlu
dXgtbnZtZUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h
aWxtYW4vbGlzdGluZm8vbGludXgtbnZtZQo=
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help