NFS Lockd Kernel Patch Proposal

Juan Gomez (juang@us.ibm.com)
Mon, 26 Aug 2002 12:04:41 -0600


--0__=08BBE6B2DFF135088f9e8a93df938690918c08BBE6B2DFF13508
Content-type: text/plain; charset=US-ASCII

The following file includes patch to export set/reset capabilityes of the
grace period to user-level via the proc filesystem.
Traces of the need for this feature were included in the code but the code
was not actually included so this should not be
big news to the previous writers of the lockd code.

I will appreciate this to be considered for inclusion in the kernel
distribution. This feature is an enabler for HA-NFS.

(See attached file: svc.c)

Regards, Juan Gomez
--0__=08BBE6B2DFF135088f9e8a93df938690918c08BBE6B2DFF13508
Content-type: application/octet-stream;
name="svc.c"
Content-Disposition: attachment; filename="svc.c"
Content-transfer-encoding: base64

LyoNCiAqIGxpbnV4L2ZzL2xvY2tkL3N2Yy5jDQogKg0KICogVGhpcyBpcyB0aGUgY2VudHJhbCBs
b2NrZCBzZXJ2aWNlLg0KICoNCiAqIEZJWE1FOiBTZXBhcmF0ZSB0aGUgbG9ja2QgTkZTIHNlcnZl
ciBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIGxvY2tkIE5GUw0KICogCSAgY2xpZW50IGZ1bmN0aW9u
YWxpdHkuIE9oIHdoeSBkaWRuJ3QgU3VuIGNyZWF0ZSB0d28gc2VwYXJhdGUNCiAqCSAgc2Vydmlj
ZXMgaW4gdGhlIGZpcnN0IHBsYWNlPw0KICoNCiAqIEF1dGhvcnM6CU9sYWYgS2lyY2ggKG9raXJA
bW9uYWQuc3diLmRlKQ0KICoNCiAqIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiBPbGFmIEtpcmNo
IDxva2lyQG1vbmFkLnN3Yi5kZT4NCiAqLw0KDQojZGVmaW5lIF9fS0VSTkVMX1NZU0NBTExTX18N
CiNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4NCiNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCiNp
bmNsdWRlIDxsaW51eC9pbml0Lmg+DQoNCiNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KI2luY2x1
ZGUgPGxpbnV4L2Vycm5vLmg+DQojaW5jbHVkZSA8bGludXgvaW4uaD4NCiNpbmNsdWRlIDxsaW51
eC91aW8uaD4NCiNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+DQojaW5jbHVkZSA8bGludXgvdW5p
c3RkLmg+DQojaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KI2luY2x1ZGUgPGxpbnV4L3NtcC5oPg0K
I2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+DQoNCiNpbmNsdWRlIDxsaW51eC9zdW5ycGMvdHlw
ZXMuaD4NCiNpbmNsdWRlIDxsaW51eC9zdW5ycGMvc3RhdHMuaD4NCiNpbmNsdWRlIDxsaW51eC9z
dW5ycGMvY2xudC5oPg0KI2luY2x1ZGUgPGxpbnV4L3N1bnJwYy9zdmMuaD4NCiNpbmNsdWRlIDxs
aW51eC9zdW5ycGMvc3Zjc29jay5oPg0KI2luY2x1ZGUgPGxpbnV4L2xvY2tkL2xvY2tkLmg+DQoj
aW5jbHVkZSA8bGludXgvbmZzLmg+DQoNCiNkZWZpbmUgTkxNX1BST0NfRlMgICAgIC8qIEVuYWJs
ZSBhIHByb2MgZmlsZXN5c3RlbSB0byBzZXQgTkxNIHZhcmliYWxlcyAqLw0KDQojaWZkZWYgTkxN
X1BST0NfRlMNCg0KI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4NCg0KI2VuZGlmICAgICAgICAg
ICAgICAgICAgLyogI2lmZGVmIE5MTV9QUk9DX0ZTICovDQoNCiNkZWZpbmUgTkxNREJHX0ZBQ0lM
SVRZCQlOTE1EQkdfU1ZDDQojZGVmaW5lIExPQ0tEX0JVRlNJWkUJCSgxMDI0ICsgTkxNU1NWQ19Y
RFJTSVpFKQ0KI2RlZmluZSBBTExPV0VEX1NJR1MJCShzaWdtYXNrKFNJR0tJTEwpKQ0KDQpleHRl
cm4gc3RydWN0IHN2Y19wcm9ncmFtCW5sbXN2Y19wcm9ncmFtOw0Kc3RydWN0IG5sbXN2Y19iaW5k
aW5nICoJCW5sbXN2Y19vcHM7DQpzdGF0aWMgREVDTEFSRV9NVVRFWChubG1zdmNfc2VtYSk7DQpz
dGF0aWMgdW5zaWduZWQgaW50CQlubG1zdmNfdXNlcnM7DQpzdGF0aWMgcGlkX3QJCQlubG1zdmNf
cGlkOw0KaW50CQkJCW5sbXN2Y19ncmFjZV9wZXJpb2Q7DQp1bnNpZ25lZCBsb25nCQkJbmxtc3Zj
X3RpbWVvdXQ7DQoNCnN0YXRpYyBERUNMQVJFX01VVEVYX0xPQ0tFRChsb2NrZF9zdGFydCk7DQpz
dGF0aWMgREVDTEFSRV9XQUlUX1FVRVVFX0hFQUQobG9ja2RfZXhpdCk7DQoNCi8qDQogKiBDdXJy
ZW50bHkgdGhlIGZvbGxvd2luZyBjYW4gYmUgc2V0IG9ubHkgYXQgaW5zbW9kIHRpbWUuDQogKiBJ
ZGVhbGx5LCB0aGV5IHdvdWxkIGJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgc3lzY3RsIGludGVy
ZmFjZS4NCiAqLw0KdW5zaWduZWQgbG9uZwkJCW5sbV9ncmFjZV9wZXJpb2Q7DQp1bnNpZ25lZCBs
b25nCQkJbmxtX3RpbWVvdXQgPSBMT0NLRF9ERkxUX1RJTUVPOw0KdW5zaWduZWQgbG9uZwkJCW5s
bV91ZHBwb3J0LCBubG1fdGNwcG9ydDsNCg0Kc3RhdGljIHVuc2lnbmVkIGxvbmcgc2V0X2dyYWNl
X3BlcmlvZCh2b2lkKQ0Kew0KCXVuc2lnbmVkIGxvbmcgZ3JhY2VfcGVyaW9kOw0KDQoJLyogTm90
ZTogbmxtX3RpbWVvdXQgc2hvdWxkIGFsd2F5cyBiZSBub256ZXJvICovDQoJaWYgKG5sbV9ncmFj
ZV9wZXJpb2QpDQoJCWdyYWNlX3BlcmlvZCA9ICgobmxtX2dyYWNlX3BlcmlvZCArIG5sbV90aW1l
b3V0IC0gMSkNCgkJCQkvIG5sbV90aW1lb3V0KSAqIG5sbV90aW1lb3V0ICogSFo7DQoJZWxzZQ0K
CQlncmFjZV9wZXJpb2QgPSBubG1fdGltZW91dCAqIDUgKiBIWjsNCglubG1zdmNfZ3JhY2VfcGVy
aW9kID0gMTsNCglyZXR1cm4gZ3JhY2VfcGVyaW9kICsgamlmZmllczsNCn0NCg0Kc3RhdGljIGlu
bGluZSB2b2lkIGNsZWFyX2dyYWNlX3BlcmlvZCh2b2lkKQ0Kew0KCW5sbXN2Y19ncmFjZV9wZXJp
b2QgPSAwOw0KfQ0KDQoNCiNpZmRlZiAgTkxNX1BST0NfRlMNCg0KLyoNCiAqIFRoaXMgY29kZSBl
bmFibGUgdXNlci1sZXZlbCBjb250cm9sIG9mIHRoZSBncmFjZSBwZXJpb2Qgc3RhdGUgb2YgdGhl
IGxvY2tkDQogKiBkYWVtb24uDQogKi8NCg0KDQovKiAxOiBubG1fcHJvY19mcyBub3QgaW50aWFs
aXplZCwgMDogaW5pdGlhbGl6ZWQgKi8NCnN0YXRpYyBpbnQgbmxtX3Byb2NfZnNfaW5pdF9mbGFn
ID0gMTsNCg0Kc3RhdGljIHVuc2lnbmVkIGxvbmcgZ3JhY2VfcGVyaW9kX2V4cGlyZTsNCg0KDQoN
Cg0KLyogRnVuY3Rpb24gdXNlZCB0byByZWFkIGdyYWNlIHBlcmlvZCBzdGF0dXMgb2YgbG9ja2Qg
Ki8NCg0Kc3RhdGljIHNzaXplX3QNCm5sbXN2Y19ncmFjZV9wZXJpb2RfcmVhZChjaGFyICpwYWdl
LCANCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqc3RhcnQsIA0KICAgICAgICAgICAg
ICAgICAgICAgICAgIG9mZl90IG9mZiwNCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291
bnQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZW9mLCANCiAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpkYXRhKQ0Kew0KICAgIGNoYXIgICAgICAgICpzID0gbmxtc3ZjX2dy
YWNlX3BlcmlvZCA/ICIxIiA6ICIwIjsNCiAgICBpbnQgICAgICAgICBsZW4gPSBzdHJsZW4ocyk7
DQoNCiAgICAqZW9mID0gMDsNCiAgICAqc3RhcnQgPSBwYWdlOw0KDQogICAgaWYgKG9mZiA8IDAp
DQogICAgICAgIHJldHVybiAtRUlOVkFMOw0KDQogICAgaWYgKG9mZiA+PSBsZW4pew0KICAgICAg
KmVvZiA9IDE7DQogICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBpZiAobGVuIDwgKG9mZiAr
IGNvdW50KSkgew0KDQogICAgICAqZW9mID0gMTsNCiAgICAgIGNvdW50ID0gbGVuIC0gb2ZmOw0K
DQogICAgfSBlbHNlIHsNCg0KICAgICAgY291bnQgPSBsZW47DQoNCiAgICB9DQoNCiAgICBtZW1j
cHkocGFnZSwgcyArIG9mZiwgY291bnQpOw0KDQogICAgcmV0dXJuIGNvdW50Ow0KDQp9Lyogc3Rh
dGljIHNzaXplX3Qgbmxtc3ZjX2dyYWNlX3BlcmlvZF9yZWFkKCkgKi8NCg0KDQovKg0KICogU2V0
IHN0YXR1cyBvZiBlbnRyeS9iaW5mbXRfbWlzYzoNCiAqICcxJyBlbmFibGVzLCAnMCcgZGlzYWJs
ZXMgYW5kICctMScgY2xlYXJzIGVudHJ5L2JpbmZtdF9taXNjDQogKi8NCnN0YXRpYyBpbnQgcGFy
c2VfY29tbWFuZChjb25zdCBjaGFyICpidWZmZXIsIHNpemVfdCBjb3VudCkNCnsNCgljaGFyIHNb
NF07DQoNCglpZiAoIWNvdW50KQ0KCQlyZXR1cm4gMDsNCg0KCWlmIChjb3VudCA+IDMpDQoJCXJl
dHVybiAtRUlOVkFMOw0KDQoJbWVtY3B5KHMsIGJ1ZmZlciwgY291bnQpOw0KDQoJaWYgKHNbY291
bnQtMV0gPT0gJ1xuJykNCgkJY291bnQtLTsNCg0KCWlmIChjb3VudCA9PSAxICYmIHNbMF0gPT0g
JzAnKQ0KCQlyZXR1cm4gMTsNCg0KCWlmIChjb3VudCA9PSAxICYmIHNbMF0gPT0gJzEnKQ0KCQly
ZXR1cm4gMjsNCg0KCXJldHVybiAtRUlOVkFMOw0KDQp9DQoNCi8qIEZ1bmN0aW9uIHVzZWQgdG8g
c2V0L3Jlc2V0IGdyYWNlIHBlcmlvZCBzdGF0dXMgb2YgbG9ja2QgKi8NCg0Kc3RhdGljIHNzaXpl
X3Qgbmxtc3ZjX2dyYWNlX3BlcmlvZF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZmZlciwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3Vu
dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSkN
CnsNCiAgICBpbnQgcmVzID0gcGFyc2VfY29tbWFuZChidWZmZXIsIGNvdW50KTsNCiAgICBzdHJ1
Y3QgZGVudHJ5ICpyb290Ow0KICAgIA0KICAgIHN3aXRjaCAocmVzKSB7DQogICAgY2FzZSAxOiAN
CiAgICAgICAgY2xlYXJfZ3JhY2VfcGVyaW9kKCk7DQogICAgICAgIGJyZWFrOw0KICAgIGNhc2Ug
MjogDQogICAgICAgIGdyYWNlX3BlcmlvZF9leHBpcmUgPSBzZXRfZ3JhY2VfcGVyaW9kKCk7DQog
ICAgICAgIGJyZWFrOw0KICAgIGRlZmF1bHQ6IA0KICAgICAgICByZXR1cm4gcmVzOw0KICAgIH0N
CiAgICByZXR1cm4gY291bnQ7DQoNCn0vKiBzdGF0aWMgc3NpemVfdCBubG1zdmNfZ3JhY2VfcGVy
aW9kX3dyaXRlKCkgKi8NCg0KDQoNCg0KDQpzdGF0aWMgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpi
YXNlOw0KDQoNCnN0YXRpYyB2b2lkIG5sbV9wcm9jX2ZzX2luaXQoKQ0Kew0KICBzdHJ1Y3QgcHJv
Y19kaXJfZW50cnkgKnA7DQoNCiAgaWYgKG5sbV9wcm9jX2ZzX2luaXRfZmxhZyl7DQogICAgDQog
ICAgaWYgKCEoYmFzZSA9IHByb2NfbWtkaXIoIm5sbSIsIHByb2Nfcm9vdF9mcykpKQ0KICAgICAg
cmV0dXJuOw0KICAgIA0KICAgIG5sbV9wcm9jX2ZzX2luaXRfZmxhZyA9IDA7DQoNCiAgICBpZiAo
KHAgPSBjcmVhdGVfcHJvY19lbnRyeSgibmxtc3ZjX2dyYWNlX3BlcmlvZCIsIDAsIGJhc2UpKSkg
ew0KDQogICAgICBwLT5yZWFkX3Byb2MgPSBubG1zdmNfZ3JhY2VfcGVyaW9kX3JlYWQ7DQogICAg
ICBwLT53cml0ZV9wcm9jID0gbmxtc3ZjX2dyYWNlX3BlcmlvZF93cml0ZTsNCg0KICAgIH0NCiAg
ICANCiAgfQ0KDQp9Lyogc3RhdGljIGludCBubG1fcHJvY19mc19pbml0KCkgKi8NCg0KDQoNCg0K
c3RhdGljIHZvaWQgbmxtX3Byb2NfZnNfZXhpdCgpDQp7DQoNCiAgICBpZiAoIW5sbV9wcm9jX2Zz
X2luaXRfZmxhZyAmJiBiYXNlKXsNCiAgICAgICAgDQogICAgICByZW1vdmVfcHJvY19lbnRyeSgi
bmxtc3ZjX2dyYWNlX3BlcmlvZCIsIGJhc2UpOw0KICAgICAgcmVtb3ZlX3Byb2NfZW50cnkoIm5s
bSIsIHByb2Nfcm9vdF9mcyk7DQoNCiAgICB9DQoNCn0vKiBzdGF0aWMgdm9pZCBubG1fcHJvY19m
c19leGl0KCkgKi8NCg0KI2VuZGlmICAvKiAjaWZkZWYgIE5MTV9QUk9DX0ZTICovDQoNCg0KLyoN
CiAqIFRoaXMgaXMgdGhlIGxvY2tkIGtlcm5lbCB0aHJlYWQNCiAqLw0Kc3RhdGljIHZvaWQNCmxv
Y2tkKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHApDQp7DQoJc3RydWN0IHN2Y19zZXJ2CSpzZXJ2ID0g
cnFzdHAtPnJxX3NlcnZlcjsNCglpbnQJCWVyciA9IDA7DQojaWZuZGVmIE5MTV9QUk9DX0ZTDQog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZ3JhY2VfcGVyaW9kX2V4cGlyZTsNCiNlbmRpZg0KDQoJLyog
TG9jayBtb2R1bGUgYW5kIHNldCB1cCBrZXJuZWwgdGhyZWFkICovDQoJTU9EX0lOQ19VU0VfQ09V
TlQ7DQoJbG9ja19rZXJuZWwoKTsNCg0KCS8qDQoJICogTGV0IG91ciBtYWtlciBrbm93IHdlJ3Jl
IHJ1bm5pbmcuDQoJICovDQoJbmxtc3ZjX3BpZCA9IGN1cnJlbnQtPnBpZDsNCgl1cCgmbG9ja2Rf
c3RhcnQpOw0KDQoJZGFlbW9uaXplKCk7DQoJcmVwYXJlbnRfdG9faW5pdCgpOw0KCXNwcmludGYo
Y3VycmVudC0+Y29tbSwgImxvY2tkIik7DQoNCgkvKiBQcm9jZXNzIHJlcXVlc3Qgd2l0aCBzaWdu
YWxzIGJsb2NrZWQuICAqLw0KCXNwaW5fbG9ja19pcnEoJmN1cnJlbnQtPnNpZ21hc2tfbG9jayk7
DQoJc2lnaW5pdHNldGludigmY3VycmVudC0+YmxvY2tlZCwgc2lnbWFzayhTSUdLSUxMKSk7DQoJ
cmVjYWxjX3NpZ3BlbmRpbmcoY3VycmVudCk7DQoJc3Bpbl91bmxvY2tfaXJxKCZjdXJyZW50LT5z
aWdtYXNrX2xvY2spOw0KDQoJLyoga2ljayBycGNpb2QgKi8NCglycGNpb2RfdXAoKTsNCg0KCWRw
cmludGsoIk5GUyBsb2NraW5nIHNlcnZpY2Ugc3RhcnRlZCAodmVyICIgTE9DS0RfVkVSU0lPTiAi
KS5cbiIpOw0KDQoJaWYgKCFubG1fdGltZW91dCkNCgkJbmxtX3RpbWVvdXQgPSBMT0NLRF9ERkxU
X1RJTUVPOw0KCW5sbXN2Y190aW1lb3V0ID0gbmxtX3RpbWVvdXQgKiBIWjsNCg0KCWdyYWNlX3Bl
cmlvZF9leHBpcmUgPSBzZXRfZ3JhY2VfcGVyaW9kKCk7DQoNCgkvKg0KCSAqIFRoZSBtYWluIHJl
cXVlc3QgbG9vcC4gV2UgZG9uJ3QgdGVybWluYXRlIHVudGlsIHRoZSBsYXN0DQoJICogTkZTIG1v
dW50IG9yIE5GUyBkYWVtb24gaGFzIGdvbmUgYXdheSwgYW5kIHdlJ3ZlIGJlZW4gc2VudCBhDQoJ
ICogc2lnbmFsLCBvciBlbHNlIGFub3RoZXIgcHJvY2VzcyBoYXMgdGFrZW4gb3ZlciBvdXIgam9i
Lg0KCSAqLw0KCXdoaWxlICgobmxtc3ZjX3VzZXJzIHx8ICFzaWduYWxsZWQoKSkgJiYgbmxtc3Zj
X3BpZCA9PSBjdXJyZW50LT5waWQpDQoJew0KCQlsb25nIHRpbWVvdXQgPSBNQVhfU0NIRURVTEVf
VElNRU9VVDsNCgkJaWYgKHNpZ25hbGxlZCgpKSB7DQoJCQlzcGluX2xvY2tfaXJxKCZjdXJyZW50
LT5zaWdtYXNrX2xvY2spOw0KCQkJZmx1c2hfc2lnbmFscyhjdXJyZW50KTsNCgkJCXNwaW5fdW5s
b2NrX2lycSgmY3VycmVudC0+c2lnbWFza19sb2NrKTsNCgkJCWlmIChubG1zdmNfb3BzKSB7DQoJ
CQkJbmxtc3ZjX29wcy0+ZGV0YWNoKCk7DQoJCQkJZ3JhY2VfcGVyaW9kX2V4cGlyZSA9IHNldF9n
cmFjZV9wZXJpb2QoKTsNCgkJCX0NCgkJfQ0KDQoJCS8qDQoJCSAqIFJldHJ5IGFueSBibG9ja2Vk
IGxvY2tzIHRoYXQgaGF2ZSBiZWVuIG5vdGlmaWVkIGJ5DQoJCSAqIHRoZSBWRlMuIERvbid0IGRv
IHRoaXMgZHVyaW5nIGdyYWNlIHBlcmlvZC4NCgkJICogKFRoZW9yZXRpY2FsbHksIHRoZXJlIHNo
b3VsZG4ndCBldmVuIGJlIGJsb2NrZWQgbG9ja3MNCgkJICogZHVyaW5nIGdyYWNlIHBlcmlvZCku
DQoJCSAqLw0KCQlpZiAoIW5sbXN2Y19ncmFjZV9wZXJpb2QpIHsNCgkJCXRpbWVvdXQgPSBubG1z
dmNfcmV0cnlfYmxvY2tlZCgpOw0KCQl9IGVsc2UgaWYgKHRpbWVfYmVmb3JlKGdyYWNlX3Blcmlv
ZF9leHBpcmUsIGppZmZpZXMpKQ0KCQkJY2xlYXJfZ3JhY2VfcGVyaW9kKCk7DQoNCgkJLyoNCgkJ
ICogRmluZCBhIHNvY2tldCB3aXRoIGRhdGEgYXZhaWxhYmxlIGFuZCBjYWxsIGl0cw0KCQkgKiBy
ZWN2ZnJvbSByb3V0aW5lLg0KCQkgKi8NCgkJZXJyID0gc3ZjX3JlY3Yoc2VydiwgcnFzdHAsIHRp
bWVvdXQpOw0KCQlpZiAoZXJyID09IC1FQUdBSU4gfHwgZXJyID09IC1FSU5UUikNCgkJCWNvbnRp
bnVlOw0KCQlpZiAoZXJyIDwgMCkgew0KCQkJcHJpbnRrKEtFUk5fV0FSTklORw0KCQkJICAgICAg
ICJsb2NrZDogdGVybWluYXRpbmcgb24gZXJyb3IgJWRcbiIsDQoJCQkgICAgICAgLWVycik7DQoJ
CQlicmVhazsNCgkJfQ0KDQoJCWRwcmludGsoImxvY2tkOiByZXF1ZXN0IGZyb20gJTA4eFxuIiwN
CgkJCSh1bnNpZ25lZCludG9obChycXN0cC0+cnFfYWRkci5zaW5fYWRkci5zX2FkZHIpKTsNCg0K
CQkvKg0KCQkgKiBMb29rIHVwIHRoZSBORlMgY2xpZW50IGhhbmRsZS4gVGhlIGhhbmRsZSBpcyBu
ZWVkZWQgZm9yDQoJCSAqIGFsbCBidXQgdGhlIEdSQU5URUQgY2FsbGJhY2sgUlBDcy4NCgkJICov
DQoJCXJxc3RwLT5ycV9jbGllbnQgPSBOVUxMOw0KCQlpZiAobmxtc3ZjX29wcykgew0KCQkJbmxt
c3ZjX29wcy0+ZXhwX3JlYWRsb2NrKCk7DQoJCQlycXN0cC0+cnFfY2xpZW50ID0NCgkJCQlubG1z
dmNfb3BzLT5leHBfZ2V0Y2xpZW50KCZycXN0cC0+cnFfYWRkcik7DQoJCX0NCg0KCQlzdmNfcHJv
Y2VzcyhzZXJ2LCBycXN0cCk7DQoNCgkJLyogVW5sb2NrIGV4cG9ydCBoYXNoIHRhYmxlcyAqLw0K
CQlpZiAobmxtc3ZjX29wcykNCgkJCW5sbXN2Y19vcHMtPmV4cF91bmxvY2soKTsNCgl9DQoNCgkv
Kg0KCSAqIENoZWNrIHdoZXRoZXIgdGhlcmUncyBhIG5ldyBsb2NrZCBwcm9jZXNzIGJlZm9yZQ0K
CSAqIHNodXR0aW5nIGRvd24gdGhlIGhvc3RzIGFuZCBjbGVhcmluZyB0aGUgc2xvdC4NCgkgKi8N
CglpZiAoIW5sbXN2Y19waWQgfHwgY3VycmVudC0+cGlkID09IG5sbXN2Y19waWQpIHsNCgkJaWYg
KG5sbXN2Y19vcHMpDQoJCQlubG1zdmNfb3BzLT5kZXRhY2goKTsNCgkJbmxtX3NodXRkb3duX2hv
c3RzKCk7DQoJCW5sbXN2Y19waWQgPSAwOw0KCX0gZWxzZQ0KCQlwcmludGsoS0VSTl9ERUJVRw0K
CQkJImxvY2tkOiBuZXcgcHJvY2Vzcywgc2tpcHBpbmcgaG9zdCBzaHV0ZG93blxuIik7DQoJd2Fr
ZV91cCgmbG9ja2RfZXhpdCk7DQoJCQ0KCS8qIEV4aXQgdGhlIFJQQyB0aHJlYWQgKi8NCglzdmNf
ZXhpdF90aHJlYWQocnFzdHApOw0KDQoJLyogcmVsZWFzZSBycGNpb2QgKi8NCglycGNpb2RfZG93
bigpOw0KDQoJLyogUmVsZWFzZSBtb2R1bGUgKi8NCglNT0RfREVDX1VTRV9DT1VOVDsNCn0NCg0K
DQovKg0KICogQnJpbmcgdXAgdGhlIGxvY2tkIHByb2Nlc3MgaWYgaXQncyBub3QgYWxyZWFkeSB1
cC4NCiAqLw0KaW50DQpsb2NrZF91cCh2b2lkKQ0Kew0KCXN0YXRpYyBpbnQJCXdhcm5lZCA9IDA7
IA0KCXN0cnVjdCBzdmNfc2VydiAqCXNlcnY7DQoJaW50CQkJZXJyb3IgPSAwOw0KDQoJZG93bigm
bmxtc3ZjX3NlbWEpOw0KDQoNCgkvKg0KCSAqIFVuY29uZGl0aW9uYWxseSBpbmNyZW1lbnQgdGhl
IHVzZXIgY291bnQgLi4uIHRoaXMgaXMNCgkgKiB0aGUgbnVtYmVyIG9mIGNsaWVudHMgd2hvIF93
YW50XyBhIGxvY2tkIHByb2Nlc3MuDQoJICovDQoJbmxtc3ZjX3VzZXJzKys7IA0KCS8qDQoJICog
Q2hlY2sgd2hldGhlciB3ZSdyZSBhbHJlYWR5IHVwIGFuZCBydW5uaW5nLg0KCSAqLw0KCWlmIChu
bG1zdmNfcGlkKQ0KCQlnb3RvIG91dDsNCg0KI2lmZGVmIE5MTV9QUk9DX0ZTICAgICAgDQogICAg
ICAgIG5sbV9wcm9jX2ZzX2luaXQoKTsNCiNlbmRpZg0KCS8qDQoJICogU2FuaXR5IGNoZWNrOiBp
ZiB0aGVyZSdzIG5vIHBpZCwNCgkgKiB3ZSBzaG91bGQgYmUgdGhlIGZpcnN0IHVzZXIgLi4uDQoJ
ICovDQoJaWYgKG5sbXN2Y191c2VycyA+IDEpDQoJCXByaW50ayhLRVJOX1dBUk5JTkcNCgkJCSJs
b2NrZF91cDogbm8gcGlkLCAlZCB1c2Vycz8/XG4iLCBubG1zdmNfdXNlcnMpOw0KDQoJZXJyb3Ig
PSAtRU5PTUVNOw0KCXNlcnYgPSBzdmNfY3JlYXRlKCZubG1zdmNfcHJvZ3JhbSwgMCwgTkxNU1ZD
X1hEUlNJWkUpOw0KCWlmICghc2Vydikgew0KCQlwcmludGsoS0VSTl9XQVJOSU5HICJsb2NrZF91
cDogY3JlYXRlIHNlcnZpY2UgZmFpbGVkXG4iKTsNCgkJZ290byBvdXQ7DQoJfQ0KDQoJaWYgKChl
cnJvciA9IHN2Y19tYWtlc29jayhzZXJ2LCBJUFBST1RPX1VEUCwgbmxtX3VkcHBvcnQpKSA8IDAg
DQojaWZkZWYgQ09ORklHX05GU0RfVENQDQoJIHx8IChlcnJvciA9IHN2Y19tYWtlc29jayhzZXJ2
LCBJUFBST1RPX1RDUCwgbmxtX3RjcHBvcnQpKSA8IDANCiNlbmRpZg0KCQkpIHsNCgkJaWYgKHdh
cm5lZCsrID09IDApIA0KCQkJcHJpbnRrKEtFUk5fV0FSTklORw0KCQkJCSJsb2NrZF91cDogbWFr
ZXNvY2sgZmFpbGVkLCBlcnJvcj0lZFxuIiwgZXJyb3IpOw0KCQlnb3RvIGRlc3Ryb3lfYW5kX291
dDsNCgl9IA0KCXdhcm5lZCA9IDA7DQoNCgkvKg0KCSAqIENyZWF0ZSB0aGUga2VybmVsIHRocmVh
ZCBhbmQgd2FpdCBmb3IgaXQgdG8gc3RhcnQuDQoJICovDQoJZXJyb3IgPSBzdmNfY3JlYXRlX3Ro
cmVhZChsb2NrZCwgc2Vydik7DQoJaWYgKGVycm9yKSB7DQoJCXByaW50ayhLRVJOX1dBUk5JTkcN
CgkJCSJsb2NrZF91cDogY3JlYXRlIHRocmVhZCBmYWlsZWQsIGVycm9yPSVkXG4iLCBlcnJvcik7
DQoJCWdvdG8gZGVzdHJveV9hbmRfb3V0Ow0KCX0NCglkb3duKCZsb2NrZF9zdGFydCk7DQoNCgkv
Kg0KCSAqIE5vdGU6IHN2Y19zZXJ2IHN0cnVjdHVyZXMgaGF2ZSBhbiBpbml0aWFsIHVzZSBjb3Vu
dCBvZiAxLA0KCSAqIHNvIHdlIGV4aXQgdGhyb3VnaCBoZXJlIG9uIGJvdGggc3VjY2VzcyBhbmQg
ZmFpbHVyZS4NCgkgKi8NCmRlc3Ryb3lfYW5kX291dDoNCglzdmNfZGVzdHJveShzZXJ2KTsNCm91
dDoNCgl1cCgmbmxtc3ZjX3NlbWEpOw0KCXJldHVybiBlcnJvcjsNCn0NCg0KLyoNCiAqIERlY3Jl
bWVudCB0aGUgdXNlciBjb3VudCBhbmQgYnJpbmcgZG93biBsb2NrZCBpZiB3ZSdyZSB0aGUgbGFz
dC4NCiAqLw0Kdm9pZA0KbG9ja2RfZG93bih2b2lkKQ0Kew0KCXN0YXRpYyBpbnQgd2FybmVkID0g
MDsgDQoNCglkb3duKCZubG1zdmNfc2VtYSk7DQoNCglpZiAobmxtc3ZjX3VzZXJzKSB7DQoJCWlm
ICgtLW5sbXN2Y191c2VycykNCgkJCWdvdG8gb3V0Ow0KCX0gZWxzZQ0KCQlwcmludGsoS0VSTl9X
QVJOSU5HICJsb2NrZF9kb3duOiBubyB1c2VycyEgcGlkPSVkXG4iLCBubG1zdmNfcGlkKTsNCg0K
I2lmZGVmIE5MTV9QUk9DX0ZTICAgICAgDQogICAgICAgIG5sbV9wcm9jX2ZzX2V4aXQoKTsNCiNl
bmRpZg0KDQoJaWYgKCFubG1zdmNfcGlkKSB7DQoJCWlmICh3YXJuZWQrKyA9PSAwKQ0KCQkJcHJp
bnRrKEtFUk5fV0FSTklORyAibG9ja2RfZG93bjogbm8gbG9ja2QgcnVubmluZy5cbiIpOyANCgkJ
Z290byBvdXQ7DQoJfQ0KCXdhcm5lZCA9IDA7DQoNCglraWxsX3Byb2Mobmxtc3ZjX3BpZCwgU0lH
S0lMTCwgMSk7DQoJLyoNCgkgKiBXYWl0IGZvciB0aGUgbG9ja2QgcHJvY2VzcyB0byBleGl0LCBi
dXQgc2luY2Ugd2UncmUgaG9sZGluZw0KCSAqIHRoZSBsb2NrZCBzZW1hcGhvcmUsIHdlIGNhbid0
IHdhaXQgYXJvdW5kIGZvcmV2ZXIgLi4uDQoJICovDQoJY3VycmVudC0+c2lncGVuZGluZyA9IDA7
DQoJaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1lb3V0KCZsb2NrZF9leGl0LCBIWik7DQoJaWYg
KG5sbXN2Y19waWQpIHsNCgkJcHJpbnRrKEtFUk5fV0FSTklORyANCgkJCSJsb2NrZF9kb3duOiBs
b2NrZCBmYWlsZWQgdG8gZXhpdCwgY2xlYXJpbmcgcGlkXG4iKTsNCgkJbmxtc3ZjX3BpZCA9IDA7
DQoJfQ0KCXNwaW5fbG9ja19pcnEoJmN1cnJlbnQtPnNpZ21hc2tfbG9jayk7DQoJcmVjYWxjX3Np
Z3BlbmRpbmcoY3VycmVudCk7DQoJc3Bpbl91bmxvY2tfaXJxKCZjdXJyZW50LT5zaWdtYXNrX2xv
Y2spOw0Kb3V0Og0KCXVwKCZubG1zdmNfc2VtYSk7DQp9DQoNCiNpZmRlZiBNT0RVTEUNCi8qIE5l
dyBtb2R1bGUgc3VwcG9ydCBpbiAyLjEuMTggKi8NCg0KTU9EVUxFX0FVVEhPUigiT2xhZiBLaXJj
aCA8b2tpckBtb25hZC5zd2IuZGU+Iik7DQpNT0RVTEVfREVTQ1JJUFRJT04oIk5GUyBmaWxlIGxv
Y2tpbmcgc2VydmljZSB2ZXJzaW9uICIgTE9DS0RfVkVSU0lPTiAiLiIpOw0KTU9EVUxFX0xJQ0VO
U0UoIkdQTCIpOw0KTU9EVUxFX1BBUk0obmxtX2dyYWNlX3BlcmlvZCwgIjEwLTI0MGwiKTsNCk1P
RFVMRV9QQVJNKG5sbV90aW1lb3V0LCAiMy0yMGwiKTsNCk1PRFVMRV9QQVJNKG5sbV91ZHBwb3J0
LCAiMC02NTUzNWwiKTsNCk1PRFVMRV9QQVJNKG5sbV90Y3Bwb3J0LCAiMC02NTUzNWwiKTsNCg0K
aW50DQppbml0X21vZHVsZSh2b2lkKQ0Kew0KCS8qIEluaXQgdGhlIHN0YXRpYyB2YXJpYWJsZXMg
Ki8NCglpbml0X01VVEVYKCZubG1zdmNfc2VtYSk7DQoJbmxtc3ZjX3VzZXJzID0gMDsNCglubG1z
dmNfcGlkID0gMDsNCglyZXR1cm4gMDsNCn0NCg0Kdm9pZA0KY2xlYW51cF9tb2R1bGUodm9pZCkN
CnsNCgkvKiBGSVhNRTogZGVsZXRlIGFsbCBOTE0gY2xpZW50cyAqLw0KCW5sbV9zaHV0ZG93bl9o
b3N0cygpOw0KfQ0KI2Vsc2UNCi8qIG5vdCBhIG1vZHVsZSwgc28gcHJvY2VzcyBib290YXJncw0K
ICogbG9ja2QudWRwcG9ydCBhbmQgbG9ja2QudGNwcG9ydA0KICovDQoNCnN0YXRpYyBpbnQgX19p
bml0IHVkcHBvcnRfc2V0KGNoYXIgKnN0cikNCnsNCglubG1fdWRwcG9ydCA9IHNpbXBsZV9zdHJ0
b3VsKHN0ciwgTlVMTCwgMCk7DQoJcmV0dXJuIDE7DQp9DQpzdGF0aWMgaW50IF9faW5pdCB0Y3Bw
b3J0X3NldChjaGFyICpzdHIpDQp7DQoJbmxtX3RjcHBvcnQgPSBzaW1wbGVfc3RydG91bChzdHIs
IE5VTEwsIDApOw0KCXJldHVybiAxOw0KfQ0KX19zZXR1cCgibG9ja2QudWRwcG9ydD0iLCB1ZHBw
b3J0X3NldCk7DQpfX3NldHVwKCJsb2NrZC50Y3Bwb3J0PSIsIHRjcHBvcnRfc2V0KTsNCg0KI2Vu
ZGlmDQoNCi8qDQogKiBEZWZpbmUgTkxNIHByb2dyYW0gYW5kIHByb2NlZHVyZXMNCiAqLw0Kc3Rh
dGljIHN0cnVjdCBzdmNfdmVyc2lvbglubG1zdmNfdmVyc2lvbjEgPSB7DQoJMSwgMTcsIG5sbXN2
Y19wcm9jZWR1cmVzLCBOVUxMDQp9Ow0Kc3RhdGljIHN0cnVjdCBzdmNfdmVyc2lvbglubG1zdmNf
dmVyc2lvbjMgPSB7DQoJMywgMjQsIG5sbXN2Y19wcm9jZWR1cmVzLCBOVUxMDQp9Ow0KI2lmZGVm
IENPTkZJR19MT0NLRF9WNA0Kc3RhdGljIHN0cnVjdCBzdmNfdmVyc2lvbglubG1zdmNfdmVyc2lv
bjQgPSB7DQoJNCwgMjQsIG5sbXN2Y19wcm9jZWR1cmVzNCwgTlVMTA0KfTsNCiNlbmRpZg0Kc3Rh
dGljIHN0cnVjdCBzdmNfdmVyc2lvbiAqCW5sbXN2Y192ZXJzaW9uW10gPSB7DQoJTlVMTCwNCgkm
bmxtc3ZjX3ZlcnNpb24xLA0KCU5VTEwsDQoJJm5sbXN2Y192ZXJzaW9uMywNCiNpZmRlZiBDT05G
SUdfTE9DS0RfVjQNCgkmbmxtc3ZjX3ZlcnNpb240LA0KI2VuZGlmDQp9Ow0KDQpzdGF0aWMgc3Ry
dWN0IHN2Y19zdGF0CQlubG1zdmNfc3RhdHM7DQoNCiNkZWZpbmUgTkxNX05SVkVSUwkoc2l6ZW9m
KG5sbXN2Y192ZXJzaW9uKS9zaXplb2Yobmxtc3ZjX3ZlcnNpb25bMF0pKQ0Kc3RydWN0IHN2Y19w
cm9ncmFtCQlubG1zdmNfcHJvZ3JhbSA9IHsNCglOTE1fUFJPR1JBTSwJCS8qIHByb2dyYW0gbnVt
YmVyICovDQoJMSwgTkxNX05SVkVSUy0xLAkvKiB2ZXJzaW9uIHJhbmdlICovDQoJTkxNX05SVkVS
UywJCS8qIG51bWJlciBvZiBlbnRyaWVzIGluIG5sbXN2Y192ZXJzaW9uICovDQoJbmxtc3ZjX3Zl
cnNpb24sCQkvKiB2ZXJzaW9uIHRhYmxlICovDQoJImxvY2tkIiwJCS8qIHNlcnZpY2UgbmFtZSAq
Lw0KCSZubG1zdmNfc3RhdHMsCQkvKiBzdGF0cyB0YWJsZSAqLw0KfTsNCg==

--0__=08BBE6B2DFF135088f9e8a93df938690918c08BBE6B2DFF13508--

-
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/