2013-03-13 16:47:36

by Bodo Stroesser

[permalink] [raw]
Subject: Re: sunrpc/cache.c: races while updating cache entries

T24gMTMgTWFyIDIwMTMgMDc6NTU6MDAgKzAxMDAgTmVpbEJyb3duIDxuZWlsYkBzdXNlLmRl
PiB3cm90ZToKCj4gT24gMTEgTWFyIDIwMTMgMTc6MTM6NDEgKzAxMDAgQm9kbyBTdHJvZXNz
ZXIgPGJzdHJvZXNzZXJAdHMuZnVqaXRzdS5jb20+Cj4gd3JvdGU6Cj4gCj4gPiBIaSwKPiA+
IAo+ID4gQUZBSUNTLCB0aGVyZSBpcyBvbmUgbW9yZSByYWNlIGluIFJQQyBjYWNoZS4KPiA+
IAo+ID4gVGhlIHByb2JsZW0gc2hvd2VkIHVwIGZvciB0aGUgImF1dGgudW5peC5pcCIgY2Fj
aGUsIHRoYXQKPiA+IGhhcyBhIHJlYWRlci4KPiA+IAo+ID4gSWYgYSBzZXJ2ZXIgdGhyZWFk
IHRyaWVzIHRvIGZpbmQgYSBjYWNoZSBlbnRyeSwgaXQgZmlyc3QKPiA+IGRvZXMgYSBsb29r
dXAgKG9yIGNhbGxzIGlwX21hcF9jYWNoZWRfZ2V0KCkgaW4gdGhpcyBzcGVjaWZpYwo+ID4g
Y2FzZSkuIFRoZW4sIGl0IGNhbGxzIGNhY2hlX2NoZWNrKCkgZm9yIHRoaXMgZW50cnkuCj4g
PiAKPiA+IElmIHRoZSByZWFkZXIgdXBkYXRlcyB0aGUgY2FjaGUgZW50cnkganVzdCBiZXR3
ZWVuIHRoZQo+ID4gdGhyZWFkJ3MgbG9va3VwIGFuZCBjYWNoZV9jaGVjaygpIGV4ZWN1dGlv
biwgY2FjaGVfY2hlY2soKQo+ID4gd2lsbCBkbyBhbiB1cGNhbGwgZm9yIHRoaXMgY2FjaGUg
ZW50cnkuIFRoaXMgaXMsIGJlY2F1c2UKPiA+IHN1bnJwY19jYWNoZV91cGRhdGUoKSBjYWxs
cyBjYWNoZV9mcmVzaF9sb2NrZWQob2xkLCAwKSwKPiA+IHdoaWNoIHNldHMgZXhwaXJ5X3Rp
bWUgdG8gMC4KPiA+IAo+ID4gVW5mb3J0dW5hdGVseSwgdGhlIHJlcGx5IHRvIHRoZSB1cGNh
bGwgd2lsbCBub3QgZGVxdWV1ZQo+ID4gdGhlIHF1ZXVlZCBjYWNoZV9yZXF1ZXN0LCBhcyB0
aGUgcmVwbHkgd2lsbCBiZSBhc3NpZ25lZCB0bwo+ID4gdGhlIGNhY2hlIGVudHJ5IG5ld2x5
IGNyZWF0ZWQgYnkgdGhlIGFib3ZlIGNhY2hlIHVwZGF0ZS4KPiA+IAo+ID4gVGhlIHJlc3Vs
dCBpcyBhIGdyb3dpbmcgcXVldWUgb2Ygb3JwaGFuZWQgY2FjaGVfcmVxdWVzdAo+ID4gc3Ry
dWN0dXJlcyAtLT4gbWVtb3J5IGxlYWsuCj4gPiAKPiA+IEkgZm91bmQgdGhpcyBvbiBhIFNM
RVMxMSBTUDEgd2l0aCBhIGJhY2twb3J0IG9mIHRoZSBsYXRlc3QKPiA+IHBhdGNoZXMgdGhh
dCBmaXggdGhlIG90aGVyIFJQQyByYWNlcy4gT24gdGhpcyBvbGQga2VybmVsLAo+ID4gdGhl
IHByb2JsZW0gYWxzbyBsZWFkcyB0byBzdmNfZHJvcCgpIGJlaW5nIGNhbGxlZCBmb3IgdGhl
Cj4gPiBhZmZlY3RlZCBSUEMgcmVxdWVzdCAoYWZ0ZXIgc3ZjX2RlZmVyKCkpLgo+ID4gCj4g
PiBCZXN0IFJlZ2FyZHMKPiA+IEJvZG8KPiAKPiBJIGRvbid0IHRoaW5rIHRoaXMgaXMgYSBy
ZWFsIHByb2JsZW0uCj4gVGhlIHBlcmlvZGljIGNhbGwgdG8gImNhY2hlX2NsZWFuIiBzaG91
bGQgZmluZCB0aGVzZSBvcnBoYW5lZCByZXF1ZXN0cyBhbmQKPiBwdXJnZSB0aGVtLiAgU28g
eW91IGNvdWxkIGdldCBhIHNob3J0IHRlcm0gbWVtb3J5IGxlYWssIGJ1dCBpdCBzaG91bGQK
PiBjb3JyZWN0IGl0c2VsZi4KPiBEbyB5b3UgYWdyZWU/Cj4gCj4gVGhhbmtzLAo+IE5laWxC
cm93bgoKSSBhZ3JlZSB0aGF0IGl0IF9zaG91bGRfIGNvcnJlY3QgaXRzZWxmLiBJIHJlYWQg
dGhlIHNvdXJjZSBhZ2FpbgphbmQgSSBub3cgc2VlIHRoYXQgY2FjaGVfY2xlYW4gc2hvdWxk
IGRvIHRoZSB3b3JrIGZpbmUuCgpPVE9ILCBvbiBteSBTTEVTMTEgU1AxLCB0aGVyZSAqaXMq
IGEgbWVtb3J5IGxlYWsgYW5kIGFsc28gUlBDCnJlcXVlc3RzIGFyZSBkcm9wcGVkICh3aGlj
aCBjYW4ndCBoYXBwZW4gb24gbWFpbmxpbmUsIGJ1dCB0aGF0Cm1hZGUgbWUgbG9vayBpbnRv
IGl0KS4KUGxlYXNlIHNlZSB0aGUgb3V0cHV0IGZyb20gY3Jhc2ggb24gdGhlIGxpZmUgc3lz
dGVtIGJlbG93LiBUaGF0Cm91dHB1dCBpcyBmcm9tIGEgdGltZSBmYXIgYWZ0ZXIgYWxsIE5G
UyBhY3Rpdml0eSB3YXMgc3RvcHBlZCBhbmQKdGhlIG5leHQgY3ljbGUgb2YgY2FjaGVfY2xl
YW4oKSBoYWQgcnVuIChpcF9tYXBfY2FjaGUubmV4dGNoZWNrCmhhcyBjaGFuZ2VkIHNldmVy
YWwgdGltZXMgZnJvbSAzMTczIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIDEwMzczKS4KCkF0
IHRoZSBlbmQgb2YgdGhlIGNyYXNoIG91dHB1dCB5b3UnbGwgZmluZCB0d28gZXhhbXBsZXMg
b2Ygd2hhdApjYWNoZV9yZXF1ZXN0Lml0ZW0gcG9pbnRzIHRvLiBJJ3ZlIGxvb2tlZCBpbnRv
IHNvbWUgbW9yZSBvZiB0aGVtLgpUaGV5IGFsbCBoYXZlIG5leHQgPT0gMCBhbmQgcmVmY291
bnQuY291bnRlciA+PSAxIChUaGUgbWF4IGNvdW50ZXIKSSBzYXcgd2FzIDMpLgoKU28sIHRo
ZSBjYWNoZV9oZWFkIGl0ZW1zIGFsbCBhcmUgYWxyZWFkeSB1bmhhc2hlZCwgYnV0IHRoZQpj
YWNoZV9yZXF1ZXN0cyBzdGlsbCBhcmUgcXVldWVkLCByaWdodD8KCkkgaGF2ZSBubyBpZGVh
LCBob3cgdGhpcyBjb3VsZCBoYXBwZW4uIE1heWJlIG15IHBhdGNoZXMgZm9yIFNMRVMxMQpT
UDEgYXJlIG5vdCBvay4KClNvLCBiZWhpbmQgdGhlIGNyYXNoIG91dHB1dCwgSSBhbHNvIGFk
ZGVkIG15IHBhdGNoZXMuIE1heWJlIHlvdQpjb3VsZCBoYXZlIGEgbG9vayBvbnRvIGl0PwoK
VGhlcmUgaXMgb25lIG1vcmUgc21hbGwgcG9pbnQsIHRoYXQgaXNuJ3QgY2xlYXIgdG8gbWU6
IHdoZW4gdGhlCiJvbGQiIHJhY2VzIGluIGF1dGgudW5peC5naWQgY2F1c2VkIGEgTkZTIHJl
cXVlc3QgdG8gYmUgZHJvcHBlZCwKdGhlIFRDUCBjb25uZWN0aW9uIGFmdGVyIGEgZmV3IG1p
bnV0ZXMgd2FzIG1hcmtlZCBieQpzdmNfYWdlX3RlbXBfeHBydHMoKSB0byBiZSBjbG9zZWQu
CldoZW4gYSByZXF1ZXN0IGlzIGRyb3BwZWQgYmVjYXVzZSBvZiB0aGUgcmFjZSBpbiBhdXRo
LnVuaXguaXAsCnN2Y19hZ2VfdGVtcF94cHJ0cygpIGRvZXMgbm90IG1hcmsgaXQgdG8gYmUg
Y2xvc2VkLiBXaHkgZG9lcyBpdApiZWhhdmUgc28gZGlmZmVyZW50bHk/CgpUaGFuayB5b3Ug
YW5kIGJlc3QgcmVnYXJkcwpCb2RvCgpQUzoKSSBhbHNvIGhhdmUgb25lIGZ1cnRoZXIgcGF0
Y2gsIHRoYXQgZml4ZXMgdGhlIHByb2JsZW0gYnkgcmV0ZXN0aW5nCnRoZSBjYWNoZSBlbnRy
eSdzIHN0YXRlIGFmdGVyIGhhdmluZyBzZXQgQ0FDSEVfUEVORElORyBpbgpjYWNoZV9jaGVj
aygpIGFuZCBieSBleGFtaW5pbmcgZXhwaXJ5X3RpbWUgb25seSBpZiBpdCBpcyBub3QgMC4K
CgpjcmFzaD4gcHJpbnQgJmlwX21hcF9jYWNoZS5xdWV1ZQokNDMgPSAoc3RydWN0IGxpc3Rf
aGVhZCAqKSAweGZmZmZmZmZmYTA0YTE0NzgKY3Jhc2g+IGxpc3QgMCAtSCAweGZmZmZmZmZm
YTA0YTE0NzggLXMgY2FjaGVfcmVxdWVzdApmZmZmODgwMGJiZjgwMTgwCnN0cnVjdCBjYWNo
ZV9yZXF1ZXN0IHsKICBxID0gewogICAgbGlzdCA9IHsKICAgICAgbmV4dCA9IDB4ZmZmZjg4
MDBiYTI4ZTk0MCwKICAgICAgcHJldiA9IDB4ZmZmZmZmZmZhMDRhMTQ3OAogICAgfSwKICAg
IHJlYWRlciA9IDAKICB9LAogIGl0ZW0gPSAweGZmZmY4ODAwYmI4MjJjNDAsCiAgYnVmID0g
MHhmZmZmODgwMGJhYWRmMDAwICJuZnNkIDE5Mi4xNjguMTAuMlxuIiwKICBsZW4gPSAxOCwK
ICByZWFkZXJzID0gMAp9CmZmZmY4ODAwYmEyOGU5NDAKc3RydWN0IGNhY2hlX3JlcXVlc3Qg
ewogIHEgPSB7CiAgICBsaXN0ID0gewogICAgICBuZXh0ID0gMHhmZmZmODgwMGJiNWQ5Yzgw
LAogICAgICBwcmV2ID0gMHhmZmZmODgwMGJiZjgwMTgwCiAgICB9LAogICAgcmVhZGVyID0g
MAogIH0sCiAgaXRlbSA9IDB4ZmZmZjg4MDBiYmQ4ODU0MCwKICBidWYgPSAweGZmZmY4ODAw
YmVkY2IwMDAgIm5mc2QgMTkyLjE2OC4xMS4yXG4iLAogIGxlbiA9IDE4LAogIHJlYWRlcnMg
PSAwCn0KZmZmZjg4MDBiYjVkOWM4MApzdHJ1Y3QgY2FjaGVfcmVxdWVzdCB7CiAgcSA9IHsK
ICAgIGxpc3QgPSB7CiAgICAgIG5leHQgPSAweGZmZmY4ODAwYmJkMWI4MDAsCiAgICAgIHBy
ZXYgPSAweGZmZmY4ODAwYmEyOGU5NDAKICAgIH0sCiAgICByZWFkZXIgPSAwCiAgfSwKICBp
dGVtID0gMHhmZmZmODgwMjA0YjFiMzQwLAogIGJ1ZiA9IDB4ZmZmZjg4MDBiYjIxYzAwMCAi
bmZzZCAxOTIuMTY4LjEwLjJcbiIsCiAgbGVuID0gMTgsCiAgcmVhZGVycyA9IDAKfQpmZmZm
ODgwMGJiZDFiODAwCnN0cnVjdCBjYWNoZV9yZXF1ZXN0IHsKICBxID0gewogICAgbGlzdCA9
IHsKICAgICAgbmV4dCA9IDB4ZmZmZjg4MDBiNTQ0NGQwMCwKICAgICAgcHJldiA9IDB4ZmZm
Zjg4MDBiYjVkOWM4MAogICAgfSwKICAgIHJlYWRlciA9IDAKICB9LAogIGl0ZW0gPSAweGZm
ZmY4ODAwYmI5OTE5NDAsCiAgYnVmID0gMHhmZmZmODgwMGIyOGY5MDAwICJuZnNkIDE5Mi4x
NjguMTEuMlxuIiwKICBsZW4gPSAxOCwKICByZWFkZXJzID0gMAp9CmZmZmY4ODAwYjU0NDRk
MDAKc3RydWN0IGNhY2hlX3JlcXVlc3QgewogIHEgPSB7CiAgICBsaXN0ID0gewogICAgICBu
ZXh0ID0gMHhmZmZmODgwMGJmMjFjYzgwLAogICAgICBwcmV2ID0gMHhmZmZmODgwMGJiZDFi
ODAwCiAgICB9LAogICAgcmVhZGVyID0gMAogIH0sCiAgaXRlbSA9IDB4ZmZmZjg4MDIwYTM4
ODVjMCwKICBidWYgPSAweGZmZmY4ODAwYjI4ODAwMDAgIm5mc2QgMTkyLjE2OC4xMC4yXG4i
LAogIGxlbiA9IDE4LAogIHJlYWRlcnMgPSAwCn0KZmZmZjg4MDBiZjIxY2M4MApzdHJ1Y3Qg
Y2FjaGVfcmVxdWVzdCB7CiAgcSA9IHsKICAgIGxpc3QgPSB7CiAgICAgIG5leHQgPSAweGZm
ZmY4ODAwYmVkOWNiODAsCiAgICAgIHByZXYgPSAweGZmZmY4ODAwYjU0NDRkMDAKICAgIH0s
CiAgICByZWFkZXIgPSAwCiAgfSwKICBpdGVtID0gMHhmZmZmODgwMjA0MzcxZWMwLAogIGJ1
ZiA9IDB4ZmZmZjg4MDBiMTA5MzAwMCAibmZzZCAxOTIuMTY4LjExLjJcbiIsCiAgbGVuID0g
MTgsCiAgcmVhZGVycyA9IDAKfQpmZmZmODgwMGJlZDljYjgwCnN0cnVjdCBjYWNoZV9yZXF1
ZXN0IHsKICBxID0gewogICAgbGlzdCA9IHsKICAgICAgbmV4dCA9IDB4ZmZmZjg4MDBiYWMy
N2M0MCwKICAgICAgcHJldiA9IDB4ZmZmZjg4MDBiZjIxY2M4MAogICAgfSwKICAgIHJlYWRl
ciA9IDAKICB9LAogIGl0ZW0gPSAweGZmZmY4ODAyMzU5NzQxYzAsCiAgYnVmID0gMHhmZmZm
ODgwMGJiNTRjMDAwICJuZnNkIDE5Mi4xNjguMTEuMlxuIiwKICBsZW4gPSAxOCwKICByZWFk
ZXJzID0gMAp9CmZmZmY4ODAwYmFjMjdjNDAKc3RydWN0IGNhY2hlX3JlcXVlc3QgewogIHEg
PSB7CiAgICBsaXN0ID0gewogICAgICBuZXh0ID0gMHhmZmZmODgwMGJlZjFkNDgwLAogICAg
ICBwcmV2ID0gMHhmZmZmODgwMGJlZDljYjgwCiAgICB9LAogICAgcmVhZGVyID0gMAogIH0s
CiAgaXRlbSA9IDB4ZmZmZjg4MDBiYmQzYzE0MCwKICBidWYgPSAweGZmZmY4ODAwYmI4YWUw
MDAgIm5mc2QgMTkyLjE2OC4xMC4yXG4iLAogIGxlbiA9IDE4LAogIHJlYWRlcnMgPSAwCn0K
ZmZmZjg4MDBiZWYxZDQ4MApzdHJ1Y3QgY2FjaGVfcmVxdWVzdCB7CiAgcSA9IHsKICAgIGxp
c3QgPSB7CiAgICAgIG5leHQgPSAweGZmZmY4ODAwYmFhZTVmODAsCiAgICAgIHByZXYgPSAw
eGZmZmY4ODAwYmFjMjdjNDAKICAgIH0sCiAgICByZWFkZXIgPSAwCiAgfSwKICBpdGVtID0g
MHhmZmZmODgwMGJiZmQ2MmMwLAogIGJ1ZiA9IDB4ZmZmZjg4MDBiOWVjZDAwMCAibmZzZCAx
OTIuMTY4LjEwLjJcbiIsCiAgbGVuID0gMTgsCiAgcmVhZGVycyA9IDAKfQpmZmZmODgwMGJh
YWU1ZjgwCnN0cnVjdCBjYWNoZV9yZXF1ZXN0IHsKICBxID0gewogICAgbGlzdCA9IHsKICAg
ICAgbmV4dCA9IDB4ZmZmZjg4MDBiZjBjZDY4MCwKICAgICAgcHJldiA9IDB4ZmZmZjg4MDBi
ZWYxZDQ4MAogICAgfSwKICAgIHJlYWRlciA9IDAKICB9LAogIGl0ZW0gPSAweGZmZmY4ODAw
YmI4MjI0YzAsCiAgYnVmID0gMHhmZmZmODgwMGJmMjQ5MDAwICJuZnNkIDE5Mi4xNjguMTEu
MlxuIiwKICBsZW4gPSAxOCwKICByZWFkZXJzID0gMAp9CmZmZmY4ODAwYmYwY2Q2ODAKc3Ry
dWN0IGNhY2hlX3JlcXVlc3QgewogIHEgPSB7CiAgICBsaXN0ID0gewogICAgICBuZXh0ID0g
MHhmZmZmODgwMGJiOTFhNTAwLAogICAgICBwcmV2ID0gMHhmZmZmODgwMGJhYWU1ZjgwCiAg
ICB9LAogICAgcmVhZGVyID0gMAogIH0sCiAgaXRlbSA9IDB4ZmZmZjg4MDBiZjE4NjVjMCwK
ICBidWYgPSAweGZmZmY4ODAwYmIxYzgwMDAgIm5mc2QgMTkyLjE2OC4xMC4yXG4iLAogIGxl
biA9IDE4LAogIHJlYWRlcnMgPSAwCn0KZmZmZjg4MDBiYjkxYTUwMApzdHJ1Y3QgY2FjaGVf
cmVxdWVzdCB7CiAgcSA9IHsKICAgIGxpc3QgPSB7CiAgICAgIG5leHQgPSAweGZmZmY4ODAw
YjEyZjMyMDAsCiAgICAgIHByZXYgPSAweGZmZmY4ODAwYmYwY2Q2ODAKICAgIH0sCiAgICBy
ZWFkZXIgPSAwCiAgfSwKICBpdGVtID0gMHhmZmZmODgwMGJlYzdiOTQwLAogIGJ1ZiA9IDB4
ZmZmZjg4MDBiMjZiODAwMCAibmZzZCAxOTIuMTY4LjEwLjJcbiIsCiAgbGVuID0gMTgsCiAg
cmVhZGVycyA9IDAKfQpmZmZmODgwMGIxMmYzMjAwCnN0cnVjdCBjYWNoZV9yZXF1ZXN0IHsK
ICBxID0gewogICAgbGlzdCA9IHsKICAgICAgbmV4dCA9IDB4ZmZmZjg4MDIzNGM5Nzg0MCwK
ICAgICAgcHJldiA9IDB4ZmZmZjg4MDBiYjkxYTUwMAogICAgfSwKICAgIHJlYWRlciA9IDAK
ICB9LAogIGl0ZW0gPSAweGZmZmY4ODAwYjY1MTY0NDAsCiAgYnVmID0gMHhmZmZmODgwMGJi
OTMzMDAwICJuZnNkIDE5Mi4xNjguMTAuMlxuIiwKICBsZW4gPSAxOCwKICByZWFkZXJzID0g
MAp9CmZmZmY4ODAyMzRjOTc4NDAKc3RydWN0IGNhY2hlX3JlcXVlc3QgewogIHEgPSB7CiAg
ICBsaXN0ID0gewogICAgICBuZXh0ID0gMHhmZmZmZmZmZmEwNGExNDc4LAogICAgICBwcmV2
ID0gMHhmZmZmODgwMGIxMmYzMjAwCiAgICB9LAogICAgcmVhZGVyID0gMQogIH0sCiAgaXRl
bSA9IDB4MCwKICBidWYgPSAweDMxM2EzMzNhMzAzYTM4IDxBZGRyZXNzIDB4MzEzYTMzM2Ez
MDNhMzggb3V0IG9mIGJvdW5kcz4sCiAgbGVuID0gMCwKICByZWFkZXJzID0gMAp9CmNyYXNo
PiBwcmludCAqKHN0cnVjdCBjYWNoZV9oZWFkICopMHhmZmZmODgwMGI2NTE2NDQwCiQ0NCA9
IHsKICBuZXh0ID0gMHgwLAogIGV4cGlyeV90aW1lID0gMCwKICBsYXN0X3JlZnJlc2ggPSAx
MTQwLAogIHJlZiA9IHsKICAgIHJlZmNvdW50ID0gewogICAgICBjb3VudGVyID0gMQogICAg
fQogIH0sCiAgZmxhZ3MgPSA1Cn0KY3Jhc2g+IHByaW50ICooc3RydWN0IGNhY2hlX2hlYWQg
KikweGZmZmY4ODAwYmVjN2I5NDAKJDQ1ID0gewogIG5leHQgPSAweDAsCiAgZXhwaXJ5X3Rp
bWUgPSAwLAogIGxhc3RfcmVmcmVzaCA9IDExMzgsCiAgcmVmID0gewogICAgcmVmY291bnQg
PSB7CiAgICAgIGNvdW50ZXIgPSAyCiAgICB9CiAgfSwKICBmbGFncyA9IDUKfQpjcmFzaD4K
CgoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCgotLS0gYS9uZXQvc3VucnBjL2Nh
Y2hlLmMJMjAxMy0wMy0wNSAxMjo1NToyOC4wMDAwMDAwMDAgKzAxMDAKKysrIGIvbmV0L3N1
bnJwYy9jYWNoZS5jCTIwMTMtMDMtMDUgMTI6NTQ6NDIuMDAwMDAwMDAwICswMTAwCkBAIC05
NjIsMjMgKzk2MiwzMyBAQCBzdGF0aWMgaW50IGNhY2hlX3JlbGVhc2Uoc3RydWN0IGlub2Rl
ICppCiAKIHN0YXRpYyB2b2lkIGNhY2hlX2RlcXVldWUoc3RydWN0IGNhY2hlX2RldGFpbCAq
ZGV0YWlsLCBzdHJ1Y3QgY2FjaGVfaGVhZCAqY2gpCiB7Ci0Jc3RydWN0IGNhY2hlX3F1ZXVl
ICpjcTsKKwlzdHJ1Y3QgY2FjaGVfcXVldWUgKmNxLCAqdG1wOworCXN0cnVjdCBjYWNoZV9y
ZXF1ZXN0ICpjcjsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGRlcXVldWVkOworCisJSU5JVF9MSVNU
X0hFQUQoJmRlcXVldWVkKTsKIAlzcGluX2xvY2soJnF1ZXVlX2xvY2spOwotCWxpc3RfZm9y
X2VhY2hfZW50cnkoY3EsICZkZXRhaWwtPnF1ZXVlLCBsaXN0KQorCWxpc3RfZm9yX2VhY2hf
ZW50cnlfc2FmZShjcSwgdG1wLCAmZGV0YWlsLT5xdWV1ZSwgbGlzdCkKIAkJaWYgKCFjcS0+
cmVhZGVyKSB7Ci0JCQlzdHJ1Y3QgY2FjaGVfcmVxdWVzdCAqY3IgPSBjb250YWluZXJfb2Yo
Y3EsIHN0cnVjdCBjYWNoZV9yZXF1ZXN0LCBxKTsKKwkJCWNyID0gY29udGFpbmVyX29mKGNx
LCBzdHJ1Y3QgY2FjaGVfcmVxdWVzdCwgcSk7CiAJCQlpZiAoY3ItPml0ZW0gIT0gY2gpCiAJ
CQkJY29udGludWU7CisJCQlpZiAodGVzdF9iaXQoQ0FDSEVfUEVORElORywgJmNoLT5mbGFn
cykpCisJCQkJLyogTG9zdCBhIHJhY2UgYW5kIGl0IGlzIHBlbmRpbmcgYWdhaW4gKi8KKwkJ
CQlicmVhazsKIAkJCWlmIChjci0+cmVhZGVycyAhPSAwKQogCQkJCWNvbnRpbnVlOwotCQkJ
bGlzdF9kZWwoJmNyLT5xLmxpc3QpOwotCQkJc3Bpbl91bmxvY2soJnF1ZXVlX2xvY2spOwot
CQkJY2FjaGVfcHV0KGNyLT5pdGVtLCBkZXRhaWwpOwotCQkJa2ZyZWUoY3ItPmJ1Zik7Ci0J
CQlrZnJlZShjcik7Ci0JCQlyZXR1cm47CisJCQlsaXN0X21vdmUoJmNyLT5xLmxpc3QsICZk
ZXF1ZXVlZCk7CiAJCX0KIAlzcGluX3VubG9jaygmcXVldWVfbG9jayk7CisKKwl3aGlsZSAo
IWxpc3RfZW1wdHkoJmRlcXVldWVkKSkgeworCQljciA9IGxpc3RfZW50cnkoZGVxdWV1ZWQu
bmV4dCwgc3RydWN0IGNhY2hlX3JlcXVlc3QsIHEubGlzdCk7CisJCWxpc3RfZGVsKCZjci0+
cS5saXN0KTsKKwkJY2FjaGVfcHV0KGNyLT5pdGVtLCBkZXRhaWwpOworCQlrZnJlZShjci0+
YnVmKTsKKwkJa2ZyZWUoY3IpOworCX0KIH0KIAogLyoKQEAgLTEwODEsNiArMTA5MSw3IEBA
IGludCBzdW5ycGNfY2FjaGVfcGlwZV91cGNhbGwoc3RydWN0IGNhY2gKIAlzdHJ1Y3QgY2Fj
aGVfcmVxdWVzdCAqY3JxOwogCWNoYXIgKmJwOwogCWludCBsZW47CisJaW50IHJldCA9IDA7
CiAKIAlpZiAoYXRvbWljX3JlYWQoJmRldGFpbC0+cmVhZGVycykgPT0gMCAmJgogCSAgICBk
ZXRhaWwtPmxhc3RfY2xvc2UgPCBnZXRfc2Vjb25kcygpIC0gMzApIHsKQEAgLTExMTMsMTAg
KzExMjQsMTggQEAgaW50IHN1bnJwY19jYWNoZV9waXBlX3VwY2FsbChzdHJ1Y3QgY2FjaAog
CWNycS0+bGVuID0gUEFHRV9TSVpFIC0gbGVuOwogCWNycS0+cmVhZGVycyA9IDA7CiAJc3Bp
bl9sb2NrKCZxdWV1ZV9sb2NrKTsKLQlsaXN0X2FkZF90YWlsKCZjcnEtPnEubGlzdCwgJmRl
dGFpbC0+cXVldWUpOworCWlmICh0ZXN0X2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3Mp
KQorCQlsaXN0X2FkZF90YWlsKCZjcnEtPnEubGlzdCwgJmRldGFpbC0+cXVldWUpOworCWVs
c2UKKwkJLyogTG9zdCBhIHJhY2UsIG5vIGxvbmdlciBQRU5ESU5HLCBzbyBkb24ndCBlbnF1
ZXVlICovCisJCXJldCA9IC1FQUdBSU47CiAJc3Bpbl91bmxvY2soJnF1ZXVlX2xvY2spOwog
CXdha2VfdXAoJnF1ZXVlX3dhaXQpOwotCXJldHVybiAwOworCWlmIChyZXQgPT0gLUVBR0FJ
TikgeworCQlrZnJlZShidWYpOworCQlrZnJlZShjcnEpOworCX0KKwlyZXR1cm4gcmV0Owog
fQogRVhQT1JUX1NZTUJPTF9HUEwoc3VucnBjX2NhY2hlX3BpcGVfdXBjYWxsKTsKIAojIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgotLS0gYS9uZXQvc3VucnBjL2NhY2hlLmMJMjAx
My0wMy0wNSAxMzoxMDo1OC4wMDAwMDAwMDAgKzAxMDAKKysrIGIvbmV0L3N1bnJwYy9jYWNo
ZS5jCTIwMTMtMDMtMDUgMTI6NTQ6NDIuMDAwMDAwMDAwICswMTAwCkBAIC0yMzMsMTkgKzIz
MywxNiBAQCBpbnQgY2FjaGVfY2hlY2soc3RydWN0IGNhY2hlX2RldGFpbCAqZGV0CiAJCWlm
ICghdGVzdF9hbmRfc2V0X2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3MpKSB7CiAJCQlz
d2l0Y2ggKGNhY2hlX21ha2VfdXBjYWxsKGRldGFpbCwgaCkpIHsKIAkJCWNhc2UgLUVJTlZB
TDoKLQkJCQljbGVhcl9iaXQoQ0FDSEVfUEVORElORywgJmgtPmZsYWdzKTsKLQkJCQljYWNo
ZV9yZXZpc2l0X3JlcXVlc3QoaCk7Ci0JCQkJaWYgKHJ2ID09IC1FQUdBSU4pIHsKKwkJCQl3
cml0ZV9sb2NrKCZkZXRhaWwtPmhhc2hfbG9jayk7CisJCQkJaWYgKHJ2KSB7CiAJCQkJCXNl
dF9iaXQoQ0FDSEVfTkVHQVRJVkUsICZoLT5mbGFncyk7CiAJCQkJCWNhY2hlX2ZyZXNoX2xv
Y2tlZChoLCBtb25vdG9uaWNfc2Vjb25kcygpK0NBQ0hFX05FV19FWFBJUlkpOwotCQkJCQlj
YWNoZV9mcmVzaF91bmxvY2tlZChoLCBkZXRhaWwpOwogCQkJCQlydiA9IC1FTk9FTlQ7CiAJ
CQkJfQotCQkJCWJyZWFrOwotCisJCQkJd3JpdGVfdW5sb2NrKCZkZXRhaWwtPmhhc2hfbG9j
ayk7CisJCQkJLyogRkFMTFRIUk9VR0ggKi8KIAkJCWNhc2UgLUVBR0FJTjoKLQkJCQljbGVh
cl9iaXQoQ0FDSEVfUEVORElORywgJmgtPmZsYWdzKTsKLQkJCQljYWNoZV9yZXZpc2l0X3Jl
cXVlc3QoaCk7CisJCQkJY2FjaGVfZnJlc2hfdW5sb2NrZWQoaCwgZGV0YWlsKTsKIAkJCQli
cmVhazsKIAkJCX0KIAkJfQpAQCAtNDA1LDE3ICs0MDIsMTIgQEAgc3RhdGljIGludCBjYWNo
ZV9jbGVhbih2b2lkKQogCQkJICAgICYmIGNoLT5sYXN0X3JlZnJlc2ggPj0gY3VycmVudF9k
ZXRhaWwtPmZsdXNoX3RpbWUKIAkJCQkpCiAJCQkJY29udGludWU7Ci0JCQlpZiAodGVzdF9h
bmRfY2xlYXJfYml0KENBQ0hFX1BFTkRJTkcsICZjaC0+ZmxhZ3MpKQotCQkJCWNhY2hlX2Rl
cXVldWUoY3VycmVudF9kZXRhaWwsIGNoKTsKIAotCQkJaWYgKGF0b21pY19yZWFkKCZjaC0+
cmVmLnJlZmNvdW50KSA9PSAxKQotCQkJCWJyZWFrOwotCQl9Ci0JCWlmIChjaCkgewogCQkJ
KmNwID0gY2gtPm5leHQ7CiAJCQljaC0+bmV4dCA9IE5VTEw7CiAJCQljdXJyZW50X2RldGFp
bC0+ZW50cmllcy0tOwogCQkJcnYgPSAxOworCQkJYnJlYWs7CiAJCX0KIAkJd3JpdGVfdW5s
b2NrKCZjdXJyZW50X2RldGFpbC0+aGFzaF9sb2NrKTsKIAkJZCA9IGN1cnJlbnRfZGV0YWls
OwpAQCAtNDIzLDcgKzQxNSw3IEBAIHN0YXRpYyBpbnQgY2FjaGVfY2xlYW4odm9pZCkKIAkJ
CWN1cnJlbnRfaW5kZXggKys7CiAJCXNwaW5fdW5sb2NrKCZjYWNoZV9saXN0X2xvY2spOwog
CQlpZiAoY2gpIHsKLQkJCWNhY2hlX3JldmlzaXRfcmVxdWVzdChjaCk7CisJCQljYWNoZV9m
cmVzaF91bmxvY2tlZChjaCwgZCk7CiAJCQljYWNoZV9wdXQoY2gsIGQpOwogCQl9CiAJfSBl
bHNlCg==