[Call For Testers][VFS] Rename stuff.

Alexander Viro (viro@math.psu.edu)
Tue, 9 Feb 1999 10:57:41 -0500 (EST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-1804928587-918575861=:15410
Content-Type: TEXT/PLAIN; charset=US-ASCII

OK, folks. Preliminary version of rename patch is here. It's
against 2.2.2-pre2. Help in testing is extermely welcome - I don't have
access to many filesystems, so I can't test them myself. I'm very
suspicious about UMSDOS and HFS parts. I can (and will) test UMSDOS, but
HFS is out of reach for me. WARNING: CONFIG_NCPFS_STRONG ON SMBFS WILL NOT
WORK WITH rename() IN THIS VERSION. Everything else should (in theory)
work. Yup, it's my turn to get those brown paperbags. Please, test the
thing. Most likely it will break. More than in one place. Eating your
data, letting the magic smoke out of your harddisk, driving your dog mad
and causing global warming. You are warned. At least it compiles and
manages to boot (from ext2).
Anyway, in process I've caught quite a collection of bugs of varied
nastiness in nearly all *_rename() methods. At least something...
Patch is attached. Random stuff below being the list of changes /
comments. Ufff...
Al

include/linux/fs.h: added a semaphore to the end of struct super.
fs/super.c: added initialization of semaphore.
fs/namei.c: Divided vfs_rename into vfs_rename_dir and vfs_rename_other
Had put locking / checks into vfs_rename_dir().
Now, for filesystems:
adfs: no rename().
affs: wow. No rename/rename race prevention. OK, fixed the thing. BTW, where
does it flip '..'?
autofs: no rename().
coda: no rename/rename protection, no is_subdir. Mommy, server will do the
right thing, certainly it will not screw me up, why would it?
devpts: no rename().
ext2: Removed unneeded checks. BTW, if in case of directory move reading
the first block of source (for "..") failed it returned either
-EINVAL (if target was negative) or -EBUSY (if positive). Sheesh...
Changed to -EIO. Removed internal ext2 rename serialization (super.c,
ext2_fs_sb.h)
fat: Not a filesystem.
hfs: Hell knows how it works. No visible checks for *anything*. Oh well, did
minimal change (conditional d_move). HFS folks: you'ld better check
your stuff. Really. Sorry, I'm unable to read it. At least some
comments on *how* it works are in order, IMHO.
hpfs: no rename.
isofs: no rename.
lockd: not a filesystem.
minix: Way too rough serialization. Removed unneeded checks. I'm still not sure
that retries in {minix,sysv}_rename do not give a race. Later.
ncpfs: no checks at all. No serialization. Odd stuff with CONFIG_NCPFS_STRONG.
WARNING: support of NCPFS_STRONG is broken right now. FIXME!!!
nfs: no checks, no nothing. Fixed.
nfsd: not a filesystem.
nls: not a filesystem.
ntfs: no rename().
proc: no rename().
qnx4: no rename().
romfs: no rename().
smbfs: no checks at all. Fixed, except the POSIX breakage (target becoming
negative for a while).
sysv: Removed unneeded checks. Serialization was too rough.
ufs: same picture as with ext2.
vfat: Removed unneeded checks. Alas, not all of them went away. Darn aliases.
msdos: Fixed. Another change: now we don't flip inodes under dentry.
Finally. Sorry, but without that there was no way to fix umsdos
and remain even remotely sane.
umsdos: PERKELE! I have some opinion on the current state of this piece of
kernel, but it's completely unsuitable for family reading.
IOW: bloody mess. IMNSHO the *only* way to fix the thing goes through
support of layers on dcache level. Attempt to save on the number of
active dentries and fit two inodes into one leads to completely broken
code. To start with, it does a mind-boggling number of dcache lookups
and, what's worse, EMD lookups. What it will give in conjunction with
loop device or, heaven forbid, knfsd is, erm, unpleasant. Not to mention
the fact that the thing is hardly readable and does very odd things with
locking (deadlocks *are* there). Idea of symlinks having ->readpage()
is, to put it politely, unorthodoxal, but that's relatively minor
offence. Manipulations with struct file inside of the beast are very
interesting. Unfortunately they are very fragile too.
It's *not* a flame towards Matija - I'm amazed how one can
keep sanity working with such code. But dentry stuff in UMSDOS
really should be replaced by proper implementation of stackable
filesystem support in VFS. It would help in other places too, but
that's another story. I'll look whether it can be done without breaking
compatibility. I hope it is possible, at least for subset needed by
UMSDOS.

---559023410-1804928587-918575861=:15410
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=rename-patch-2
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.3.95.990209105741.15410B@weyl.math.psu.edu>
Content-Description:

ZGlmZiAtdXJOIGxpbnV4LTIuMi4yLXByZTIvZnMvYWZmcy9uYW1laS5jIGxp
bnV4LmJpcmQucmVuYW1lL2ZzL2FmZnMvbmFtZWkuYw0KLS0tIGxpbnV4LTIu
Mi4yLXByZTIvZnMvYWZmcy9uYW1laS5jCVR1ZSBGZWIgIDkgMTA6MTc6MTcg
MTk5OQ0KKysrIGxpbnV4LmJpcmQucmVuYW1lL2ZzL2FmZnMvbmFtZWkuYwlU
dWUgRmViICA5IDA5OjIzOjE5IDE5OTkNCkBAIC01NDgsMzIgKzU0OCwxNCBA
QA0KIAkJCSAgICJObyBpbm9kZSBmb3IgZW50cnkgZm91bmQgKGtleT0lbHUp
XG4iLG5ld19pbm8pOw0KIAkJZ290byBlbmRfcmVuYW1lOw0KIAl9DQotCWlm
IChuZXdfaW5vZGUgPT0gb2xkX2lub2RlKSB7DQotCQlpZiAob2xkX2lubyA9
PSBuZXdfaW5vKSB7CS8qIEZpbGVuYW1lIG1pZ2h0IGhhdmUgY2hhbmdlZCBj
YXNlCSovDQotCQkJcmV0dmFsID0gbmV3X2RlbnRyeS0+ZF9uYW1lLmxlbiA8
IDMxID8gbmV3X2RlbnRyeS0+ZF9uYW1lLmxlbiA6IDMwOw0KLQkJCXN0cm5j
cHkoRElSX0VORChvbGRfYmgtPmJfZGF0YSxvbGRfaW5vZGUpLT5kaXJfbmFt
ZSArIDEsDQotCQkJCW5ld19kZW50cnktPmRfbmFtZS5uYW1lLHJldHZhbCk7
DQotCQkJRElSX0VORChvbGRfYmgtPmJfZGF0YSxvbGRfaW5vZGUpLT5kaXJf
bmFtZVswXSA9IHJldHZhbDsNCi0JCQlnb3RvIG5ld19jaGVja3N1bTsNCi0J
CX0NCi0JCXJldHZhbCA9IDA7DQotCQlnb3RvIGVuZF9yZW5hbWU7DQotCX0N
CiAJaWYgKFNfSVNESVIob2xkX2lub2RlLT5pX21vZGUpKSB7DQotCQlyZXR2
YWwgPSAtRUlOVkFMOw0KLQkJaWYgKGlzX3N1YmRpcihuZXdfZGVudHJ5LCBv
bGRfZGVudHJ5KSkNCi0JCQlnb3RvIGVuZF9yZW5hbWU7DQogCQlpZiAobmV3
X2lub2RlKSB7DQotCQkJaWYgKG5ld19kZW50cnktPmRfY291bnQgPiAxKQ0K
LQkJCQlzaHJpbmtfZGNhY2hlX3BhcmVudChuZXdfZGVudHJ5KTsNCi0JCQly
ZXR2YWwgPSAtRUJVU1k7DQotCQkJaWYgKG5ld19kZW50cnktPmRfY291bnQg
PiAxKQ0KLQkJCQlnb3RvIGVuZF9yZW5hbWU7DQogCQkJcmV0dmFsID0gLUVO
T1RFTVBUWTsNCiAJCQlpZiAoIWVtcHR5X2RpcihuZXdfYmgsQUZGU19JMkhT
SVpFKG5ld19pbm9kZSkpKQ0KIAkJCQlnb3RvIGVuZF9yZW5hbWU7DQogCQl9
DQogDQorCQlyZXR2YWwgPSAtRU5PRU5UOw0KIAkJaWYgKGFmZnNfcGFyZW50
X2lubyhvbGRfaW5vZGUpICE9IG9sZF9kaXItPmlfaW5vKQ0KIAkJCWdvdG8g
ZW5kX3JlbmFtZTsNCiAJfQ0KQEAgLTU5Myw3ICs1NzUsNiBAQA0KIAlhZmZz
X2NvcHlfbmFtZShGSUxFX0VORChvbGRfYmgtPmJfZGF0YSxvbGRfaW5vZGUp
LT5maWxlX25hbWUsbmV3X2RlbnRyeS0+ZF9uYW1lLm5hbWUpOw0KIAlpZiAo
KHJldHZhbCA9IGFmZnNfaW5zZXJ0X2hhc2gobmV3X2Rpci0+aV9pbm8sb2xk
X2JoLG5ld19kaXIpKSkNCiAJCWdvdG8gZW5kX3JlbmFtZTsNCi1uZXdfY2hl
Y2tzdW06DQogCWFmZnNfZml4X2NoZWNrc3VtKEFGRlNfSTJCU0laRShuZXdf
ZGlyKSxvbGRfYmgtPmJfZGF0YSw1KTsNCiANCiAJbmV3X2Rpci0+aV9jdGlt
ZSAgID0gbmV3X2Rpci0+aV9tdGltZSA9IG9sZF9kaXItPmlfY3RpbWUNCkBA
IC02MDQsNyArNTg1LDggQEANCiAJbWFya19pbm9kZV9kaXJ0eShuZXdfZGly
KTsNCiAJbWFya19pbm9kZV9kaXJ0eShvbGRfZGlyKTsNCiAJbWFya19idWZm
ZXJfZGlydHkob2xkX2JoLDEpOw0KLQlkX21vdmUob2xkX2RlbnRyeSxuZXdf
ZGVudHJ5KTsNCisJaWYgKCFTX0lTRElSKG9sZF9pbm9kZS0+aV9tb2RlKSkN
CisJCWRfbW92ZShvbGRfZGVudHJ5LG5ld19kZW50cnkpOw0KIAkNCiBlbmRf
cmVuYW1lOg0KIAlhZmZzX2JyZWxzZShvbGRfYmgpOw0KZGlmZiAtdXJOIGxp
bnV4LTIuMi4yLXByZTIvZnMvY29kYS9kaXIuYyBsaW51eC5iaXJkLnJlbmFt
ZS9mcy9jb2RhL2Rpci5jDQotLS0gbGludXgtMi4yLjItcHJlMi9mcy9jb2Rh
L2Rpci5jCVR1ZSBGZWIgIDkgMTA6MTc6MTggMTk5OQ0KKysrIGxpbnV4LmJp
cmQucmVuYW1lL2ZzL2NvZGEvZGlyLmMJVHVlIEZlYiAgOSAwODo0MDoyMiAx
OTk5DQpAQCAtNTY1LDIxICs1NjUsNiBAQA0KIAkgICAgICAgb2xkX25hbWUs
IG9sZF9sZW5ndGgsIHN0cmxlbihvbGRfbmFtZSksIG5ld19uYW1lLCBuZXdf
bGVuZ3RoLCANCiAJICAgICAgIHN0cmxlbihuZXdfbmFtZSksb2xkX2RlbnRy
eS0+ZF9jb3VudCwgbmV3X2RlbnRyeS0+ZF9jb3VudCk7DQogDQotCWlmIChu
ZXdfaW5vZGUgPT0gb2xkX2lub2RlKQ0KLQkJcmV0dXJuIDA7DQotDQotCS8q
IG1ha2Ugc3VyZSB0YXJnZXQgaXMgbm90IGluIHVzZSAqLw0KLQlpZiAobmV3
X2lub2RlICYmIFNfSVNESVIobmV3X2lub2RlLT5pX21vZGUpKSB7IA0KLQkJ
LyoNCi0gICAgICAgICAgICAgICAgICogUHJ1bmUgYW55IGNoaWxkcmVuIGJl
Zm9yZSB0ZXN0aW5nIGZvciBidXN5Lg0KLSAgICAgICAgICAgICAgICAgKi8N
Ci0gICAgICAgICAgICAgICAgaWYgKG5ld19kZW50cnktPmRfY291bnQgPiAx
KQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNocmlua19kY2FjaGVfcGFy
ZW50KG5ld19kZW50cnkpOw0KLQ0KLSAgICAgICAgICAgICAgICBpZiAobmV3
X2RlbnRyeS0+ZF9jb3VudCA+IDEpDQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC1FQlVTWTsNCi0gICAgICAgIH0NCi0NCiAJLyogdGhlIEMg
bGlicmFyeSB3aWxsIGRvIHVubGluay9jcmVhdGUgZXRjICovDQogCWlmICgg
Y29kYV9jcm9zc3ZvbF9yZW5hbWUgPT0gMCAmJiANCiAJICAgICBvbGRfY25w
LT5jX2ZpZC5Wb2x1bWUgIT0gbmV3X2NucC0+Y19maWQuVm9sdW1lICkNCkBA
IC01OTksNyArNTg0LDggQEANCiAJY29kYV9mbGFnX2lub2RlKG5ld19kaXIs
IENfVkFUVFIpOw0KIA0KIAlDREVCVUcoRF9JTk9ERSwgInJlc3VsdCAlZFxu
IiwgZXJyb3IpOyANCi0JZF9tb3ZlKG9sZF9kZW50cnksIG5ld19kZW50cnkp
Ow0KKwlpZiAoIVNfSVNESVIob2xkX2lub2RlLT5pX21vZGUpKQ0KKwkJZF9t
b3ZlKG9sZF9kZW50cnksIG5ld19kZW50cnkpOw0KIA0KIAlFWElUOw0KIAly
ZXR1cm4gMDsNCmRpZmYgLXVyTiBsaW51eC0yLjIuMi1wcmUyL2ZzL2V4dDIv
bmFtZWkuYyBsaW51eC5iaXJkLnJlbmFtZS9mcy9leHQyL25hbWVpLmMNCi0t
LSBsaW51eC0yLjIuMi1wcmUyL2ZzL2V4dDIvbmFtZWkuYwlUdWUgRmViICA5
IDEwOjE3OjE1IDE5OTkNCisrKyBsaW51eC5iaXJkLnJlbmFtZS9mcy9leHQy
L25hbWVpLmMJVHVlIEZlYiAgOSAwODowMTowMiAxOTk5DQpAQCAtODUxLDE3
ICs4NTEsMTAgQEANCiAJbGUxNl90b19jcHUoKChzdHJ1Y3QgZXh0Ml9kaXJf
ZW50cnlfMiAqKSBidWZmZXIpLT5yZWNfbGVuKSkpLT5pbm9kZQ0KIA0KIC8q
DQotICogcmVuYW1lIHVzZXMgcmV0cnlpbmcgdG8gYXZvaWQgcmFjZS1jb25k
aXRpb25zOiBhdCBsZWFzdCB0aGV5IHNob3VsZCBiZQ0KLSAqIG1pbmltYWwu
DQotICogaXQgdHJpZXMgdG8gYWxsb2NhdGUgYWxsIHRoZSBibG9ja3MsIHRo
ZW4gc2FuaXR5LWNoZWNrcywgYW5kIGlmIHRoZSBzYW5pdHktDQotICogY2hl
Y2tzIGZhaWwsIGl0IHRyaWVzIHRvIHJlc3RhcnQgaXRzZWxmIGFnYWluLiBW
ZXJ5IHByYWN0aWNhbCAtIG5vIGNoYW5nZXMNCi0gKiBhcmUgZG9uZSB1bnRp
bCB3ZSBrbm93IGV2ZXJ5dGhpbmcgd29ya3Mgb2suLiBhbmQgdGhlbiBhbGwg
dGhlIGNoYW5nZXMgY2FuIGJlDQotICogZG9uZSBpbiBvbmUgZmVsbCBzd29v
cCB3aGVuIHdlIGhhdmUgY2xhaW1lZCBhbGwgdGhlIGJ1ZmZlcnMgbmVlZGVk
Lg0KLSAqDQogICogQW55Ym9keSBjYW4gcmVuYW1lIGFueXRoaW5nIHdpdGgg
dGhpczogdGhlIHBlcm1pc3Npb24gY2hlY2tzIGFyZSBsZWZ0IHRvIHRoZQ0K
ICAqIGhpZ2hlci1sZXZlbCByb3V0aW5lcy4NCiAgKi8NCi1zdGF0aWMgaW50
IGRvX2V4dDJfcmVuYW1lIChzdHJ1Y3QgaW5vZGUgKiBvbGRfZGlyLCBzdHJ1
Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LA0KK2ludCBleHQyX3JlbmFtZSAoc3Ry
dWN0IGlub2RlICogb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRy
eSwNCiAJCQkgICBzdHJ1Y3QgaW5vZGUgKiBuZXdfZGlyLHN0cnVjdCBkZW50
cnkgKm5ld19kZW50cnkpDQogew0KIAlzdHJ1Y3QgaW5vZGUgKiBvbGRfaW5v
ZGUsICogbmV3X2lub2RlOw0KQEAgLTg5NywyNCArODkwLDEzIEBADQogCQkJ
RFFVT1RfSU5JVChuZXdfaW5vZGUpOw0KIAkJfQ0KIAl9DQotCXJldHZhbCA9
IDA7DQotCWlmIChuZXdfaW5vZGUgPT0gb2xkX2lub2RlKQ0KLQkJZ290byBl
bmRfcmVuYW1lOw0KIAlpZiAoU19JU0RJUihvbGRfaW5vZGUtPmlfbW9kZSkp
IHsNCi0JCXJldHZhbCA9IC1FSU5WQUw7DQotCQlpZiAoaXNfc3ViZGlyKG5l
d19kZW50cnksIG9sZF9kZW50cnkpKQ0KLQkJCWdvdG8gZW5kX3JlbmFtZTsN
CiAJCWlmIChuZXdfaW5vZGUpIHsNCi0JCQkvKiBQcnVuZSBhbnkgY2hpbGRy
ZW4gYmVmb3JlIHRlc3RpbmcgZm9yIGJ1c3kgKi8NCi0JCQlpZiAobmV3X2Rl
bnRyeS0+ZF9jb3VudCA+IDEpDQotCQkJCXNocmlua19kY2FjaGVfcGFyZW50
KG5ld19kZW50cnkpOw0KLQkJCXJldHZhbCA9IC1FQlVTWTsNCi0JCQlpZiAo
bmV3X2RlbnRyeS0+ZF9jb3VudCA+IDEpDQotCQkJCWdvdG8gZW5kX3JlbmFt
ZTsNCiAJCQlyZXR2YWwgPSAtRU5PVEVNUFRZOw0KIAkJCWlmICghZW1wdHlf
ZGlyIChuZXdfaW5vZGUpKQ0KIAkJCQlnb3RvIGVuZF9yZW5hbWU7DQogCQl9
DQorCQlyZXR2YWwgPSAtRUlPOw0KIAkJZGlyX2JoID0gZXh0Ml9icmVhZCAo
b2xkX2lub2RlLCAwLCAwLCAmcmV0dmFsKTsNCiAJCWlmICghZGlyX2JoKQ0K
IAkJCWdvdG8gZW5kX3JlbmFtZTsNCkBAIC05NzgsNyArOTYwLDggQEANCiAJ
fQ0KIA0KIAkvKiBVcGRhdGUgdGhlIGRjYWNoZSAqLw0KLQlkX21vdmUob2xk
X2RlbnRyeSwgbmV3X2RlbnRyeSk7DQorCWlmICghU19JU0RJUihvbGRfaW5v
ZGUtPmlfbW9kZSkpDQorCQlkX21vdmUob2xkX2RlbnRyeSwgbmV3X2RlbnRy
eSk7DQogCXJldHZhbCA9IDA7DQogDQogZW5kX3JlbmFtZToNCkBAIC05ODYs
MzEgKzk2OSw0IEBADQogCWJyZWxzZSAob2xkX2JoKTsNCiAJYnJlbHNlIChu
ZXdfYmgpOw0KIAlyZXR1cm4gcmV0dmFsOw0KLX0NCi0NCi0vKg0KLSAqIE9r
LCByZW5hbWUgYWxzbyBsb2NrcyBvdXQgb3RoZXIgcmVuYW1lcywgYXMgdGhl
eSBjYW4gY2hhbmdlIHRoZSBwYXJlbnQgb2YNCi0gKiBhIGRpcmVjdG9yeSwg
YW5kIHdlIGRvbid0IHdhbnQgYW55IHJhY2VzLiBPdGhlciByYWNlcyBhcmUg
Y2hlY2tlZCBmb3IgYnkNCi0gKiAiZG9fcmVuYW1lKCkiLCB3aGljaCByZXN0
YXJ0cyBpZiB0aGVyZSBhcmUgaW5jb25zaXN0ZW5jaWVzLg0KLSAqDQotICog
Tm90ZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgYmV0d2VlbiBkaWZmZXJlbnQg
ZmlsZXN5c3RlbXM6IGl0J3Mgb25seSB3aXRoaW4NCi0gKiB0aGUgc2FtZSBk
ZXZpY2UgdGhhdCByYWNlcyBvY2N1cjogbWFueSByZW5hbWVzIGNhbiBoYXBw
ZW4gYXQgb25jZSwgYXMgbG9uZw0KLSAqIGFzIHRoZXkgYXJlIG9uIGRpZmZl
cmVudCBwYXJ0aXRpb25zLg0KLSAqDQotICogSW4gdGhlIHNlY29uZCBleHRl
bmRlZCBmaWxlIHN5c3RlbSwgd2UgdXNlIGEgbG9jayBmbGFnIHN0b3JlZCBp
biB0aGUgbWVtb3J5DQotICogc3VwZXItYmxvY2suICBUaGlzIHdheSwgd2Ug
cmVhbGx5IGxvY2sgb3RoZXIgcmVuYW1lcyBvbmx5IGlmIHRoZXkgb2NjdXIN
Ci0gKiBvbiB0aGUgc2FtZSBmaWxlIHN5c3RlbQ0KLSAqLw0KLWludCBleHQy
X3JlbmFtZSAoc3RydWN0IGlub2RlICogb2xkX2Rpciwgc3RydWN0IGRlbnRy
eSAqb2xkX2RlbnRyeSwNCi0JCSBzdHJ1Y3QgaW5vZGUgKiBuZXdfZGlyLCBz
dHJ1Y3QgZGVudHJ5ICpuZXdfZGVudHJ5KQ0KLXsNCi0JaW50IHJlc3VsdDsN
Ci0NCi0Jd2hpbGUgKG9sZF9kaXItPmlfc2ItPnUuZXh0Ml9zYi5zX3JlbmFt
ZV9sb2NrKQ0KLQkJc2xlZXBfb24gKCZvbGRfZGlyLT5pX3NiLT51LmV4dDJf
c2Iuc19yZW5hbWVfd2FpdCk7DQotCW9sZF9kaXItPmlfc2ItPnUuZXh0Ml9z
Yi5zX3JlbmFtZV9sb2NrID0gMTsNCi0JcmVzdWx0ID0gZG9fZXh0Ml9yZW5h
bWUgKG9sZF9kaXIsIG9sZF9kZW50cnksIG5ld19kaXIsIG5ld19kZW50cnkp
Ow0KLQlvbGRfZGlyLT5pX3NiLT51LmV4dDJfc2Iuc19yZW5hbWVfbG9jayA9
IDA7DQotCXdha2VfdXAgKCZvbGRfZGlyLT5pX3NiLT51LmV4dDJfc2Iuc19y
ZW5hbWVfd2FpdCk7DQotCXJldHVybiByZXN1bHQ7DQogfQ0KZGlmZiAtdXJO
IGxpbnV4LTIuMi4yLXByZTIvZnMvZXh0Mi9zdXBlci5jIGxpbnV4LmJpcmQu
cmVuYW1lL2ZzL2V4dDIvc3VwZXIuYw0KLS0tIGxpbnV4LTIuMi4yLXByZTIv
ZnMvZXh0Mi9zdXBlci5jCVR1ZSBGZWIgIDkgMTA6MTc6MTUgMTk5OQ0KKysr
IGxpbnV4LmJpcmQucmVuYW1lL2ZzL2V4dDIvc3VwZXIuYwlTdW4gRmViICA3
IDAwOjAwOjQ3IDE5OTkNCkBAIC01NDMsOCArNTQzLDYgQEANCiAJZWxzZQ0K
IAkJc2ItPnUuZXh0Ml9zYi5zX3Jlc2dpZCA9IGxlMTZfdG9fY3B1KGVzLT5z
X2RlZl9yZXNnaWQpOw0KIAlzYi0+dS5leHQyX3NiLnNfbW91bnRfc3RhdGUg
PSBsZTE2X3RvX2NwdShlcy0+c19zdGF0ZSk7DQotCXNiLT51LmV4dDJfc2Iu
c19yZW5hbWVfbG9jayA9IDA7DQotCXNiLT51LmV4dDJfc2Iuc19yZW5hbWVf
d2FpdCA9IE5VTEw7DQogCXNiLT51LmV4dDJfc2Iuc19hZGRyX3Blcl9ibG9j
a19iaXRzID0NCiAJCWxvZzIgKEVYVDJfQUREUl9QRVJfQkxPQ0soc2IpKTsN
CiAJc2ItPnUuZXh0Ml9zYi5zX2Rlc2NfcGVyX2Jsb2NrX2JpdHMgPQ0KZGlm
ZiAtdXJOIGxpbnV4LTIuMi4yLXByZTIvZnMvaGZzL2Rpci5jIGxpbnV4LmJp
cmQucmVuYW1lL2ZzL2hmcy9kaXIuYw0KLS0tIGxpbnV4LTIuMi4yLXByZTIv
ZnMvaGZzL2Rpci5jCVR1ZSBGZWIgIDkgMTA6MTc6MTkgMTk5OQ0KKysrIGxp
bnV4LmJpcmQucmVuYW1lL2ZzL2hmcy9kaXIuYwlNb24gRmViICA4IDIzOjMz
OjI1IDE5OTkNCkBAIC00MzEsNyArNDMxLDggQEANCiAJCX0NCiAJDQogCQkv
KiB1cGRhdGUgZGNhY2hlICovDQotCQlkX21vdmUob2xkX2RlbnRyeSwgbmV3
X2RlbnRyeSk7DQorCQlpZiAoIWlzX2RpcikNCisJCQlkX21vdmUob2xkX2Rl
bnRyeSwgbmV3X2RlbnRyeSk7DQogCX0NCiANCiBoZnNfcmVuYW1lX3B1dDoN
CmRpZmYgLXVyTiBsaW51eC0yLjIuMi1wcmUyL2ZzL21pbml4L25hbWVpLmMg
bGludXguYmlyZC5yZW5hbWUvZnMvbWluaXgvbmFtZWkuYw0KLS0tIGxpbnV4
LTIuMi4yLXByZTIvZnMvbWluaXgvbmFtZWkuYwlUdWUgRmViICA5IDEwOjE3
OjE1IDE5OTkNCisrKyBsaW51eC5iaXJkLnJlbmFtZS9mcy9taW5peC9uYW1l
aS5jCVR1ZSBGZWIgIDkgMDg6NDM6MzIgMTk5OQ0KQEAgLTYwNCw3ICs2MDQs
NyBAQA0KICAqIEFueWJvZHkgY2FuIHJlbmFtZSBhbnl0aGluZyB3aXRoIHRo
aXM6IHRoZSBwZXJtaXNzaW9uIGNoZWNrcyBhcmUgbGVmdCB0byB0aGUNCiAg
KiBoaWdoZXItbGV2ZWwgcm91dGluZXMuDQogICovDQotc3RhdGljIGludCBk
b19taW5peF9yZW5hbWUoc3RydWN0IGlub2RlICogb2xkX2Rpciwgc3RydWN0
IGRlbnRyeSAqb2xkX2RlbnRyeSwNCitpbnQgbWluaXhfcmVuYW1lKHN0cnVj
dCBpbm9kZSAqIG9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnks
DQogCQkJICAgc3RydWN0IGlub2RlICogbmV3X2Rpciwgc3RydWN0IGRlbnRy
eSAqbmV3X2RlbnRyeSkNCiB7DQogCXN0cnVjdCBpbm9kZSAqIG9sZF9pbm9k
ZSwgKiBuZXdfaW5vZGU7DQpAQCAtNjQwLDI0ICs2NDAsMTEgQEANCiAJCQlu
ZXdfYmggPSBOVUxMOw0KIAkJfQ0KIAl9DQotCWlmIChuZXdfaW5vZGUgPT0g
b2xkX2lub2RlKSB7DQotCQlyZXR2YWwgPSAwOw0KLQkJZ290byBlbmRfcmVu
YW1lOw0KLQl9DQogCWlmIChTX0lTRElSKG9sZF9pbm9kZS0+aV9tb2RlKSkg
ew0KLQkJcmV0dmFsID0gLUVJTlZBTDsNCi0JCWlmIChpc19zdWJkaXIobmV3
X2RlbnRyeSwgb2xkX2RlbnRyeSkpDQotCQkJZ290byBlbmRfcmVuYW1lOw0K
IAkJaWYgKG5ld19pbm9kZSkgew0KLQkJCS8qIFBydW5lIGFueSBjaGlsZHJl
biBiZWZvcmUgdGVzdGluZyBmb3IgYnVzeSAqLw0KLQkJCWlmIChuZXdfZGVu
dHJ5LT5kX2NvdW50ID4gMSkNCi0JCQkJc2hyaW5rX2RjYWNoZV9wYXJlbnQo
bmV3X2RlbnRyeSk7DQotCQkJcmV0dmFsID0gLUVCVVNZOw0KLQkJCWlmIChu
ZXdfZGVudHJ5LT5kX2NvdW50ID4gMSkNCiAJCQlyZXR2YWwgPSAtRU5PVEVN
UFRZOw0KIAkJCWlmICghZW1wdHlfZGlyKG5ld19pbm9kZSkpDQogCQkJCWdv
dG8gZW5kX3JlbmFtZTsNCi0JCQlyZXR2YWwgPSAtRUJVU1k7DQogCQl9DQog
CQlyZXR2YWwgPSAtRUlPOw0KIAkJZGlyX2JoID0gbWluaXhfYnJlYWQob2xk
X2lub2RlLDAsMCk7DQpAQCAtNzE0LDM3ICs3MDEsMTIgQEANCiAJCX0NCiAJ
fQ0KIAkvKiBVcGRhdGUgdGhlIGRjYWNoZSAqLw0KLQlkX21vdmUob2xkX2Rl
bnRyeSwgbmV3X2RlbnRyeSk7DQorCWlmICghU19JU0RJUihvbGRfaW5vZGUt
PmlfbW9kZSkpDQorCQlkX21vdmUob2xkX2RlbnRyeSwgbmV3X2RlbnRyeSk7
DQogCXJldHZhbCA9IDA7DQogZW5kX3JlbmFtZToNCiAJYnJlbHNlKGRpcl9i
aCk7DQogCWJyZWxzZShvbGRfYmgpOw0KIAlicmVsc2UobmV3X2JoKTsNCiAJ
cmV0dXJuIHJldHZhbDsNCi19DQotDQotLyoNCi0gKiBPaywgcmVuYW1lIGFs
c28gbG9ja3Mgb3V0IG90aGVyIHJlbmFtZXMsIGFzIHRoZXkgY2FuIGNoYW5n
ZSB0aGUgcGFyZW50IG9mDQotICogYSBkaXJlY3RvcnksIGFuZCB3ZSBkb24n
dCB3YW50IGFueSByYWNlcy4gT3RoZXIgcmFjZXMgYXJlIGNoZWNrZWQgZm9y
IGJ5DQotICogImRvX3JlbmFtZSgpIiwgd2hpY2ggcmVzdGFydHMgaWYgdGhl
cmUgYXJlIGluY29uc2lzdGVuY2llcy4NCi0gKg0KLSAqIE5vdGUgdGhhdCB0
aGVyZSBpcyBubyByYWNlIGJldHdlZW4gZGlmZmVyZW50IGZpbGVzeXN0ZW1z
OiBpdCdzIG9ubHkgd2l0aGluDQotICogdGhlIHNhbWUgZGV2aWNlIHRoYXQg
cmFjZXMgb2NjdXI6IG1hbnkgcmVuYW1lcyBjYW4gaGFwcGVuIGF0IG9uY2Us
IGFzIGxvbmcNCi0gKiBhcyB0aGV5IGFyZSBvbiBkaWZmZXJlbnQgcGFydGl0
aW9ucy4NCi0gKi8NCi1pbnQgbWluaXhfcmVuYW1lKHN0cnVjdCBpbm9kZSAq
IG9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksDQotCQkgc3Ry
dWN0IGlub2RlICogbmV3X2Rpciwgc3RydWN0IGRlbnRyeSAqbmV3X2RlbnRy
eSkNCi17DQotCXN0YXRpYyBzdHJ1Y3Qgd2FpdF9xdWV1ZSAqIHdhaXQgPSBO
VUxMOw0KLQlzdGF0aWMgaW50IGxvY2sgPSAwOw0KLQlpbnQgcmVzdWx0Ow0K
LQ0KLQl3aGlsZSAobG9jaykNCi0JCXNsZWVwX29uKCZ3YWl0KTsNCi0JbG9j
ayA9IDE7DQotCXJlc3VsdCA9IGRvX21pbml4X3JlbmFtZShvbGRfZGlyLCBv
bGRfZGVudHJ5LA0KLQkJCQkgbmV3X2RpciwgbmV3X2RlbnRyeSk7DQotCWxv
Y2sgPSAwOw0KLQl3YWtlX3VwKCZ3YWl0KTsNCi0JcmV0dXJuIHJlc3VsdDsN
CiB9DQpkaWZmIC11ck4gbGludXgtMi4yLjItcHJlMi9mcy9tc2Rvcy9uYW1l
aS5jIGxpbnV4LmJpcmQucmVuYW1lL2ZzL21zZG9zL25hbWVpLmMNCi0tLSBs
aW51eC0yLjIuMi1wcmUyL2ZzL21zZG9zL25hbWVpLmMJVHVlIEZlYiAgOSAx
MDoxNzoxNSAxOTk5DQorKysgbGludXguYmlyZC5yZW5hbWUvZnMvbXNkb3Mv
bmFtZWkuYwlUdWUgRmViICA5IDA2OjQyOjA3IDE5OTkNCkBAIC0zMjcsNiAr
MzI3LDcgQEANCiAJZmF0X2RhdGVfdW5peDJkb3MoZGlyLT5pX210aW1lLCZk
ZS0+dGltZSwmZGUtPmRhdGUpOw0KIAlkZS0+c2l6ZSA9IDA7DQogCWZhdF9t
YXJrX2J1ZmZlcl9kaXJ0eShzYiwgYmgsIDEpOw0KKw0KIAlpZiAoKCpyZXN1
bHQgPSBpZ2V0KGRpci0+aV9zYixpbm8pKSAhPSBOVUxMKQ0KIAkJbXNkb3Nf
cmVhZF9pbm9kZSgqcmVzdWx0KTsNCiAJZmF0X2JyZWxzZShzYiwgYmgpOw0K
QEAgLTQwNSwyMyArNDA2LDIyIEBADQogCXN0cnVjdCBtc2Rvc19kaXJfZW50
cnkgKmRlOw0KIAlpbnQgcmVzdWx0ID0gMDsNCiANCi0JaWYgKE1TRE9TX0ko
ZGlyKS0+aV9zdGFydCkgeyAvKiBtYXkgYmUgemVybyBpbiBta2RpciAqLw0K
LQkJcG9zID0gMDsNCi0JCWJoID0gTlVMTDsNCi0JCXdoaWxlIChmYXRfZ2V0
X2VudHJ5KGRpciwmcG9zLCZiaCwmZGUpID4gLTEpIHsNCi0JCQkvKiBJZ25v
cmUgdmZhdCBsb25nbmFtZSBlbnRyaWVzICovDQotCQkJaWYgKGRlLT5hdHRy
ID09IEFUVFJfRVhUKQ0KLQkJCQljb250aW51ZTsNCi0JCQlpZiAoIUlTX0ZS
RUUoZGUtPm5hbWUpICYmIA0KLQkJCSAgICBzdHJuY21wKGRlLT5uYW1lLE1T
RE9TX0RPVCAgICwgTVNET1NfTkFNRSkgJiYNCi0JCQkgICAgc3RybmNtcChk
ZS0+bmFtZSxNU0RPU19ET1RET1QsIE1TRE9TX05BTUUpKSB7DQotCQkJCXJl
c3VsdCA9IC1FTk9URU1QVFk7DQotCQkJCWJyZWFrOw0KLQkJCX0NCisJcG9z
ID0gMDsNCisJYmggPSBOVUxMOw0KKwl3aGlsZSAoZmF0X2dldF9lbnRyeShk
aXIsJnBvcywmYmgsJmRlKSA+IC0xKSB7DQorCQkvKiBJZ25vcmUgdmZhdCBs
b25nbmFtZSBlbnRyaWVzICovDQorCQlpZiAoZGUtPmF0dHIgPT0gQVRUUl9F
WFQpDQorCQkJY29udGludWU7DQorCQlpZiAoIUlTX0ZSRUUoZGUtPm5hbWUp
ICYmIA0KKwkJICAgIHN0cm5jbXAoZGUtPm5hbWUsTVNET1NfRE9UICAgLCBN
U0RPU19OQU1FKSAmJg0KKwkJICAgIHN0cm5jbXAoZGUtPm5hbWUsTVNET1Nf
RE9URE9ULCBNU0RPU19OQU1FKSkgew0KKwkJCXJlc3VsdCA9IC1FTk9URU1Q
VFk7DQorCQkJYnJlYWs7DQogCQl9DQotCQlpZiAoYmgpDQotCQkJZmF0X2Jy
ZWxzZShkaXItPmlfc2IsIGJoKTsNCiAJfQ0KKwlpZiAoYmgpDQorCQlmYXRf
YnJlbHNlKGRpci0+aV9zYiwgYmgpOw0KKw0KIAlyZXR1cm4gcmVzdWx0Ow0K
IH0NCiANCkBAIC00NDQsMTMgKzQ0NCw4IEBADQogCSAqIHdoZXRoZXIgaXQg
aXMgZW1wdHkuDQogCSAqLw0KIAlyZXMgPSAtRUJVU1k7DQotCWlmICghbGlz
dF9lbXB0eSgmZGVudHJ5LT5kX2hhc2gpKSB7DQotI2lmZGVmIE1TRE9TX0RF
QlVHDQotcHJpbnRrKCJtc2Rvc19ybWRpcjogJXMvJXMgYnVzeSwgZF9jb3Vu
dD0lZFxuIiwNCi1kZW50cnktPmRfcGFyZW50LT5kX25hbWUubmFtZSwgZGVu
dHJ5LT5kX25hbWUubmFtZSwgZGVudHJ5LT5kX2NvdW50KTsNCi0jZW5kaWYN
CisJaWYgKCFsaXN0X2VtcHR5KCZkZW50cnktPmRfaGFzaCkpDQogCQlnb3Rv
IHJtZGlyX2RvbmU7DQotCX0NCiAJcmVzID0gbXNkb3NfZW1wdHkoaW5vZGUp
Ow0KIAlpZiAocmVzKQ0KIAkJZ290byBybWRpcl9kb25lOw0KQEAgLTUwMywx
NCArNDk4LDYgQEANCiAJZGlyLT5pX25saW5rKys7DQogCWlub2RlLT5pX25s
aW5rID0gMjsgLyogbm8gbmVlZCB0byBtYXJrIHRoZW0gZGlydHkgKi8NCiAN
Ci0jaWZkZWYgd2hhdGZvcg0KLQkvKg0KLQkgKiBIZSdzIGRlYWQsIEppbS4g
V2UgZG9uJ3QgZF9pbnN0YW50aWF0ZSBhbnltb3JlLiBTaG91bGQgZG8gaXQN
Ci0JICogZnJvbSB0aGUgdmVyeSBiZWdpbm5pbmcsIGFjdHVhbGx5Lg0KLQkg
Ki8NCi0JTVNET1NfSShpbm9kZSktPmlfYnVzeSA9IDE7IC8qIHByZXZlbnQg
bG9va3VwcyAqLw0KLSNlbmRpZg0KLQ0KIAlpZiAoKHJlcyA9IGZhdF9hZGRf
Y2x1c3Rlcihpbm9kZSkpIDwgMCkNCiAJCWdvdG8gbWtkaXJfZXJyb3I7DQog
CWlmICgocmVzID0gbXNkb3NfY3JlYXRlX2VudHJ5KGlub2RlLE1TRE9TX0RP
VCwxLDAsJmRvdCkpIDwgMCkNCkBAIC01MjksOSArNTE2LDYgQEANCiAJTVNE
T1NfSShkb3QpLT5pX2xvZ3N0YXJ0ID0gTVNET1NfSShkaXIpLT5pX2xvZ3N0
YXJ0Ow0KIAlkb3QtPmlfbmxpbmsgPSBkaXItPmlfbmxpbms7DQogCW1hcmtf
aW5vZGVfZGlydHkoZG90KTsNCi0jaWZkZWYgd2hhdGZvcg0KLQlNU0RPU19J
KGlub2RlKS0+aV9idXN5ID0gMDsNCi0jZW5kaWYNCiAJaXB1dChkb3QpOw0K
IAlkX2luc3RhbnRpYXRlKGRlbnRyeSwgaW5vZGUpOw0KIAlyZXMgPSAwOw0K
QEAgLTY0MCw0NyArNjI0LDIwIEBADQogCQkJZF9kcm9wKG5ld19kZW50cnkp
Ow0KIAkJCWdvdG8gb3V0X2Vycm9yOw0KIAkJfQ0KLQkJZXJyb3IgPSBTX0lT
RElSKG5ld19pbm9kZS0+aV9tb2RlKQ0KLQkJCT8gKG9sZF9kZS0+YXR0ciAm
IEFUVFJfRElSKQ0KLQkJCQk/IG1zZG9zX2VtcHR5KG5ld19pbm9kZSkNCi0J
CQkJOiAtRVBFUk0NCi0JCQk6IChvbGRfZGUtPmF0dHIgJiBBVFRSX0RJUikN
Ci0JCQkJPyAtRVBFUk0NCi0JCQkJOiAwOw0KLQkJaWYgKGVycm9yKQ0KLQkJ
CWdvdG8gb3V0X2Vycm9yOw0KIAkJZXJyb3IgPSAtRVBFUk07DQogCQlpZiAo
KG9sZF9kZS0+YXR0ciAmIEFUVFJfU1lTKSkNCiAJCQlnb3RvIG91dF9lcnJv
cjsNCiANCiAJCWlmIChTX0lTRElSKG5ld19pbm9kZS0+aV9tb2RlKSkgew0K
LQkJCS8qIG1ha2Ugc3VyZSBpdCdzIGVtcHR5ICovDQogCQkJZXJyb3IgPSBt
c2Rvc19lbXB0eShuZXdfaW5vZGUpOw0KIAkJCWlmIChlcnJvcikNCiAJCQkJ
Z290byBvdXRfZXJyb3I7DQotI2lmZGVmIE1TRE9TX0NIRUNLX0JVU1kNCi0J
CQkvKiBjaGVjayBmb3IgYSBidXN5IGRlbnRyeSAqLw0KLQkJCWVycm9yID0g
LUVCVVNZOw0KLQkJCXNocmlua19kY2FjaGVfcGFyZW50KG5ld19kZW50cnkp
Ow0KLQkJCWlmIChuZXdfZGVudHJ5LT5kX2NvdW50ID4gMSkgew0KLXByaW50
aygibXNkb3NfcmVuYW1lX3NhbWU6ICVzLyVzIGJ1c3ksIGNvdW50PSVkXG4i
LA0KLW5ld19kZW50cnktPmRfcGFyZW50LT5kX25hbWUubmFtZSwgbmV3X2Rl
bnRyeS0+ZF9uYW1lLm5hbWUsDQotbmV3X2RlbnRyeS0+ZF9jb3VudCk7DQot
CQkJCWdvdG8gb3V0X2Vycm9yOw0KLQkJCX0NCi0jZW5kaWYNCiAJCQluZXdf
ZGlyLT5pX25saW5rLS07DQogCQkJbWFya19pbm9kZV9kaXJ0eShuZXdfZGly
KTsNCiAJCX0NCiAJCW5ld19pbm9kZS0+aV9ubGluayA9IDA7DQogCQlNU0RP
U19JKG5ld19pbm9kZSktPmlfYnVzeSA9IDE7DQogCQltYXJrX2lub2RlX2Rp
cnR5KG5ld19pbm9kZSk7DQotCQkvKg0KLQkJICogTWFrZSBpdCBuZWdhdGl2
ZSBpZiBpdCdzIG5vdCBidXN5Ow0KLQkJICogb3RoZXJ3aXNlIGxldCBkX21v
dmUoKSBkcm9wIGl0Lg0KLQkJICovDQotCQlpZiAobmV3X2RlbnRyeS0+ZF9j
b3VudCA9PSAxKQ0KLQkJCWRfZGVsZXRlKG5ld19kZW50cnkpOw0KIA0KIAkJ
bmV3X2RlLT5uYW1lWzBdID0gREVMRVRFRF9GTEFHOw0KIAkJZmF0X21hcmtf
YnVmZmVyX2RpcnR5KHNiLCBuZXdfYmgsIDEpOw0KQEAgLTY4OCw3ICs2NDUs
OCBAQA0KIAl9DQogCW1lbWNweShvbGRfZGUtPm5hbWUsIG5ld19uYW1lLCBN
U0RPU19OQU1FKTsNCiAJLyogVXBkYXRlIHRoZSBkY2FjaGUgKi8NCi0JZF9t
b3ZlKG9sZF9kZW50cnksIG5ld19kZW50cnkpOw0KKwlpZiAoIVNfSVNESVIo
b2xkX2RlbnRyeS0+ZF9pbm9kZS0+aV9tb2RlKSkNCisJCWRfbW92ZShvbGRf
ZGVudHJ5LCBuZXdfZGVudHJ5KTsNCiBzZXRfaGlkOg0KIAlvbGRfZGUtPmF0
dHIgPSBpc19oaWQNCiAJCT8gKG9sZF9kZS0+YXR0ciB8IEFUVFJfSElEREVO
KQ0KQEAgLTcwOCw2ICs2NjYsNyBAQA0KIAlnb3RvIG91dDsNCiB9DQogDQor
LyogTm93IHdlIGNvdWxkIG1lcmdlIGl0IHdpdGggbXNkb3NfcmVuYW1lX3Nh
bWUuIExhdGVyICovDQogLyoqKioqIFJlbmFtZSBhY3Jvc3MgZGlyZWN0b3Jp
ZXMgLSBhIG5vbnBoeXNpY2FsIG1vdmUgKi8NCiBzdGF0aWMgaW50IG1zZG9z
X3JlbmFtZV9kaWZmKHN0cnVjdCBpbm9kZSAqb2xkX2RpciwgY2hhciAqb2xk
X25hbWUsDQogICAgIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksDQpAQCAt
NzE4LDE2ICs2NzcsMTMgQEANCiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9
IG9sZF9kaXItPmlfc2I7DQogCXN0cnVjdCBidWZmZXJfaGVhZCAqbmV3X2Jo
LCpmcmVlX2JoLCpkb3Rkb3RfYmg7DQogCXN0cnVjdCBtc2Rvc19kaXJfZW50
cnkgKm5ld19kZSwqZnJlZV9kZSwqZG90ZG90X2RlOw0KLQlzdHJ1Y3QgaW5v
ZGUgKm9sZF9pbm9kZSwqbmV3X2lub2RlLCpmcmVlX2lub2RlLCpkb3Rkb3Rf
aW5vZGU7DQorCXN0cnVjdCBpbm9kZSAqb2xkX2lub2RlLCpuZXdfaW5vZGUs
KmRvdGRvdF9pbm9kZTsNCiAJaW50IG5ld19pbm8sZnJlZV9pbm8sZG90ZG90
X2lubzsNCiAJaW50IGVycm9yLCBleGlzdHM7DQogDQogCWVycm9yID0gLUVJ
TlZBTDsNCiAJaWYgKG9sZF9pbm8gPT0gbmV3X2Rpci0+aV9pbm8pDQogCQln
b3RvIG91dDsNCi0JLyogcHJldmVudCBtb3ZpbmcgZGlyZWN0b3J5IGJlbG93
IGl0c2VsZiAqLw0KLQlpZiAoaXNfc3ViZGlyKG5ld19kZW50cnksIG9sZF9k
ZW50cnkpKQ0KLQkJZ290byBvdXQ7DQogDQogCWVycm9yID0gLUVOT0VOVDsN
CiAJaWYgKCoodW5zaWduZWQgY2hhciAqKSBvbGRfZGUtPm5hbWUgPT0gREVM
RVRFRF9GTEFHKQ0KQEAgLTc1NiwzNCArNzEyLDExIEBADQogCQkJZF9kcm9w
KG5ld19kZW50cnkpOw0KIAkJCWdvdG8gb3V0X25ldzsNCiAJCX0NCi0JCWVy
cm9yID0gU19JU0RJUihuZXdfaW5vZGUtPmlfbW9kZSkNCi0JCQk/IChvbGRf
ZGUtPmF0dHIgJiBBVFRSX0RJUikNCi0JCQkJPyBtc2Rvc19lbXB0eShuZXdf
aW5vZGUpDQotCQkJCTogLUVQRVJNDQotCQkJOiAob2xkX2RlLT5hdHRyICYg
QVRUUl9ESVIpDQotCQkJCT8gLUVQRVJNDQotCQkJCTogMDsNCi0JCWlmIChl
cnJvcikNCi0JCQlnb3RvIG91dF9uZXc7DQogIAkJZXJyb3IgPSAtRVBFUk07
DQogCQlpZiAoKG9sZF9kZS0+YXR0ciAmIEFUVFJfU1lTKSkNCiAJCQlnb3Rv
IG91dF9uZXc7DQogDQotI2lmZGVmIE1TRE9TX0NIRUNLX0JVU1kNCi0JCS8q
IGNoZWNrIGZvciBhIGJ1c3kgZGVudHJ5ICovDQotCQllcnJvciA9IC1FQlVT
WTsNCi0JCWlmIChuZXdfZGVudHJ5LT5kX2NvdW50ID4gMSkgew0KLQkJCXNo
cmlua19kY2FjaGVfcGFyZW50KG5ld19kZW50cnkpOw0KLQkJCWlmIChuZXdf
ZGVudHJ5LT5kX2NvdW50ID4gMSkgew0KLXByaW50aygibXNkb3NfcmVuYW1l
X2RpZmY6IHRhcmdldCAlcy8lcyBidXN5LCBjb3VudD0lZFxuIiwNCi1uZXdf
ZGVudHJ5LT5kX3BhcmVudC0+ZF9uYW1lLm5hbWUsIG5ld19kZW50cnktPmRf
bmFtZS5uYW1lLA0KLW5ld19kZW50cnktPmRfY291bnQpOw0KLQkJCQlnb3Rv
IG91dF9uZXc7DQotCQkJfQ0KLQkJfQ0KLSNlbmRpZg0KIAkJaWYgKFNfSVNE
SVIobmV3X2lub2RlLT5pX21vZGUpKSB7DQotCQkJLyogbWFrZSBzdXJlIGl0
J3MgZW1wdHkgKi8NCiAJCQllcnJvciA9IG1zZG9zX2VtcHR5KG5ld19pbm9k
ZSk7DQogCQkJaWYgKGVycm9yKQ0KIAkJCQlnb3RvIG91dF9uZXc7DQpAQCAt
NzkzLDEyICs3MjYsNyBAQA0KIAkJbmV3X2lub2RlLT5pX25saW5rID0gMDsN
CiAJCU1TRE9TX0kobmV3X2lub2RlKS0+aV9idXN5ID0gMTsNCiAJCW1hcmtf
aW5vZGVfZGlydHkobmV3X2lub2RlKTsNCi0JCS8qDQotCQkgKiBNYWtlIGl0
IG5lZ2F0aXZlIGlmIGl0J3Mgbm90IGJ1c3k7DQotCQkgKiBvdGhlcndpc2Ug
bGV0IGRfbW92ZSgpIGRyb3AgaXQuDQotCQkgKi8NCi0JCWlmIChuZXdfZGVu
dHJ5LT5kX2NvdW50ID09IDEpDQotCQkJZF9kZWxldGUobmV3X2RlbnRyeSk7
DQorDQogCQluZXdfZGUtPm5hbWVbMF0gPSBERUxFVEVEX0ZMQUc7DQogCQlm
YXRfbWFya19idWZmZXJfZGlydHkoc2IsIG5ld19iaCwgMSk7DQogCQlmYXRf
YnJlbHNlKHNiLCBuZXdfYmgpOw0KQEAgLTgyNCw3MyArNzUyLDM3IEBADQog
CQkJZ290byBvdXRfZG90ZG90Ow0KIAl9DQogDQotCS8qIGdldCBhbiBpbm9k
ZSBmb3IgdGhlIG5ldyBuYW1lICovDQorCS8qDQorCSAqIFBvdGVudGlhbCBy
YWNlIGhlcmUuIEl0IHdpbGwgZ28gYXdheSB3aGVuIHdlJ2xsIHN3aXRjaCB0
bw0KKwkgKiBzYW5lIGludW1iZXJzIChhbG9uZyB3aXRoIGEgZnJpZ2dpbmcg
bG90IG9mIG90aGVyIHJhY2VzKS4NCisJICovDQorDQorCS8qIHNldCBuZXcg
ZW50cnkgKi8NCiAJbWVtY3B5KGZyZWVfZGUsIG9sZF9kZSwgc2l6ZW9mKHN0
cnVjdCBtc2Rvc19kaXJfZW50cnkpKTsNCiAJbWVtY3B5KGZyZWVfZGUtPm5h
bWUsIG5ld19uYW1lLCBNU0RPU19OQU1FKTsNCiAJZnJlZV9kZS0+YXR0ciA9
IGlzX2hpZA0KIAkJPyAoZnJlZV9kZS0+YXR0cnxBVFRSX0hJRERFTikNCiAJ
CTogKGZyZWVfZGUtPmF0dHImfkFUVFJfSElEREVOKTsNCiANCi0JZXJyb3Ig
PSAtRUlPOw0KLQlmcmVlX2lub2RlID0gaWdldChzYiwgZnJlZV9pbm8pOw0K
LQlpZiAoIWZyZWVfaW5vZGUpDQotCQlnb3RvIG91dF9pcHV0Ow0KLQkvKiBt
YWtlIHN1cmUgaXQncyBub3QgYnVzeSEgKi8NCi0JaWYgKE1TRE9TX0koZnJl
ZV9pbm9kZSktPmlfYnVzeSkNCi0JCXByaW50ayhLRVJOX0VSUiAibXNkb3Nf
cmVuYW1lX2RpZmY6IG5ldyBpbm9kZSAlbGQgYnVzeSFcbiIsDQotCQkJKGlu
b190KSBmcmVlX2lubyk7DQotCWlmICghbGlzdF9lbXB0eSgmZnJlZV9pbm9k
ZS0+aV9kZW50cnkpKQ0KLQkJcHJpbnRrKCJtc2Rvc19yZW5hbWVfZGlmZjog
ZnJlZSBpbm9kZSBoYXMgYWxpYXNlcz8/XG4iKTsNCi0JbXNkb3NfcmVhZF9p
bm9kZShmcmVlX2lub2RlKTsNCi0NCiAJLyoNCi0JICogTWFrZSBzdXJlIHRo
ZSBvbGQgZGVudHJ5IGlzbid0IGJ1c3ksDQotCSAqIGFzIHdlIG5lZWQgdG8g
Y2hhbmdlIGlub2RlcyAuLi4NCisJICogTm93IHRoZSB0cmlja3kgcGFydC4g
V2UgbmVlZCB0byBjaGFuZ2UgaV9pbm8uIGljYWNoZSBpZ25vcmVzDQorCSAq
IGlfaW5vIGZvciB1bmhhc2hlZCBpbm9kZXMsIHNvIHdlJ2xsIHJlbW92ZSBp
bm9kZSBmcm9tIGhhc2gsDQorCSAqIGNoYW5nZSB3aGF0IHdlIHdhbnQgdG8g
Y2hhbmdlIGFuZCByZWluc2VydCBpdCBiYWNrLiBOQjogd2UNCisJICogZG9u
J3QgaGF2ZSB0byBpbnZhbGlkYXRlIEZBVCBjYWNoZSBoZXJlIC0gYWxsIHdl
IG5lZWQgaXMgdG8NCisJICogZmxpcCBpX2lubyBpbiByZWxldmFudCBjYWNo
ZSBlbnRyaWVzLiBMYXRlci4NCiAJICovDQotCWVycm9yID0gLUVCVVNZOw0K
LQlpZiAob2xkX2RlbnRyeS0+ZF9jb3VudCA+IDEpIHsNCi0JCXNocmlua19k
Y2FjaGVfcGFyZW50KG9sZF9kZW50cnkpOw0KLQkJaWYgKG9sZF9kZW50cnkt
PmRfY291bnQgPiAxKSB7DQotcHJpbnRrKCJtc2Rvc19yZW5hbWVfZGlmZjog
c291cmNlICVzLyVzIGJ1c3ksIGNvdW50PSVkXG4iLA0KLW9sZF9kZW50cnkt
PmRfcGFyZW50LT5kX25hbWUubmFtZSwgb2xkX2RlbnRyeS0+ZF9uYW1lLm5h
bWUsDQotb2xkX2RlbnRyeS0+ZF9jb3VudCk7DQotCQkJZ290byBvdXRfaXB1
dDsNCi0JCX0NCi0JfQ0KLQ0KLQkvKiBrZWVwIHRoZSBpbm9kZSBmb3IgYSBi
aXQgLi4uICovDQotCW9sZF9pbm9kZS0+aV9jb3VudCsrOw0KLQlkX2RlbGV0
ZShvbGRfZGVudHJ5KTsNCi0NCi0JZnJlZV9pbm9kZS0+aV9tb2RlICAgPSBv
bGRfaW5vZGUtPmlfbW9kZTsNCi0JZnJlZV9pbm9kZS0+aV9ubGluayAgPSBv
bGRfaW5vZGUtPmlfbmxpbms7DQotCWZyZWVfaW5vZGUtPmlfc2l6ZSAgID0g
b2xkX2lub2RlLT5pX3NpemU7DQotCWZyZWVfaW5vZGUtPmlfYmxvY2tzID0g
b2xkX2lub2RlLT5pX2Jsb2NrczsNCi0JZnJlZV9pbm9kZS0+aV9tdGltZSAg
PSBvbGRfaW5vZGUtPmlfbXRpbWU7DQotCWZyZWVfaW5vZGUtPmlfYXRpbWUg
ID0gb2xkX2lub2RlLT5pX2F0aW1lOw0KLQlmcmVlX2lub2RlLT5pX2N0aW1l
ICA9IG9sZF9pbm9kZS0+aV9jdGltZTsNCi0JTVNET1NfSShmcmVlX2lub2Rl
KS0+aV9jdGltZV9tcyA9IE1TRE9TX0kob2xkX2lub2RlKS0+aV9jdGltZV9t
czsNCi0NCi0JTVNET1NfSShmcmVlX2lub2RlKS0+aV9zdGFydCA9IE1TRE9T
X0kob2xkX2lub2RlKS0+aV9zdGFydDsNCi0JTVNET1NfSShmcmVlX2lub2Rl
KS0+aV9sb2dzdGFydCA9IE1TRE9TX0kob2xkX2lub2RlKS0+aV9sb2dzdGFy
dDsNCi0JTVNET1NfSShmcmVlX2lub2RlKS0+aV9hdHRycyA9IE1TRE9TX0ko
b2xkX2lub2RlKS0+aV9hdHRyczsNCi0NCi0JLyogcmVsZWFzZSB0aGUgb2xk
IGlub2RlJ3MgcmVzb3VyY2VzICovDQotCU1TRE9TX0kob2xkX2lub2RlKS0+
aV9zdGFydCA9IDA7DQotCU1TRE9TX0kob2xkX2lub2RlKS0+aV9sb2dzdGFy
dCA9IDA7DQotCW9sZF9pbm9kZS0+aV9ubGluayA9IDA7DQorCXJlbW92ZV9p
bm9kZV9oYXNoKG9sZF9pbm9kZSk7DQogDQotCS8qDQotCSAqIEluc3RhbGwg
dGhlIG5ldyBpbm9kZSAuLi4NCi0JICovDQotCWRfaW5zdGFudGlhdGUob2xk
X2RlbnRyeSwgZnJlZV9pbm9kZSk7DQotDQotCWZhdF9tYXJrX2J1ZmZlcl9k
aXJ0eShzYiwgZnJlZV9iaCwgMSk7DQogCWZhdF9jYWNoZV9pbnZhbF9pbm9k
ZShvbGRfaW5vZGUpOw0KLQltYXJrX2lub2RlX2RpcnR5KG9sZF9pbm9kZSk7
DQorCW9sZF9pbm9kZS0+aV92ZXJzaW9uID0gKytldmVudDsNCisJTVNET1Nf
SShvbGRfaW5vZGUpLT5pX2JpbmFyeSA9DQorCQlpc19iaW5hcnkoTVNET1Nf
U0Ioc2IpLT5vcHRpb25zLmNvbnZlcnNpb24sIGZyZWVfZGUtPmV4dCk7DQor
CW9sZF9pbm9kZS0+aV9pbm8gPSBmcmVlX2lubzsNCisJZmF0X21hcmtfYnVm
ZmVyX2RpcnR5KHNiLCBmcmVlX2JoLCAxKTsNCiAJb2xkX2RlLT5uYW1lWzBd
ID0gREVMRVRFRF9GTEFHOw0KIAlmYXRfbWFya19idWZmZXJfZGlydHkoc2Is
IG9sZF9iaCwgMSk7DQotCWlwdXQob2xkX2lub2RlKTsNCisNCisJaW5zZXJ0
X2lub2RlX2hhc2gob2xkX2lub2RlKTsNCiANCiAJLyogYSBkaXJlY3Rvcnk/
ICovDQogCWlmIChkb3Rkb3RfYmgpIHsNCkBAIC05MDksNyArODAxLDggQEAN
CiAJfQ0KIA0KIAkvKiBVcGRhdGUgdGhlIGRjYWNoZSAqLw0KLQlkX21vdmUo
b2xkX2RlbnRyeSwgbmV3X2RlbnRyeSk7DQorCWlmICghU19JU0RJUihvbGRf
aW5vZGUtPmlfbW9kZSkpDQorCQlkX21vdmUob2xkX2RlbnRyeSwgbmV3X2Rl
bnRyeSk7DQogCWVycm9yID0gMDsNCiANCiByZW5hbWVfZG9uZToNCkBAIC05
MTcsMTQgKzgxMCw2IEBADQogb3V0Og0KIAlyZXR1cm4gZXJyb3I7DQogDQot
b3V0X2lwdXQ6DQotCWZyZWVfZGUtPm5hbWVbMF0gPSBERUxFVEVEX0ZMQUc7
DQotCS8qDQotCSAqIERvbid0IG1hcmsgZnJlZV9iaCBhcyBkaXJ0eS4gQm90
aCBzdGF0ZXMgDQotCSAqIGFyZSBzdXBwb3NlZCB0byBiZSBlcXVpdmFsZW50
Lg0KLQkgKi8NCi0JaXB1dChmcmVlX2lub2RlKTsgLyogbWF5IGJlIE5VTEwg
Ki8NCi0JaXB1dChkb3Rkb3RfaW5vZGUpOw0KIG91dF9kb3Rkb3Q6DQogCWZh
dF9icmVsc2Uoc2IsIGRvdGRvdF9iaCk7DQogCWdvdG8gcmVuYW1lX2RvbmU7
DQpAQCAtOTQ0LDkgKzgyOSw2IEBADQogCWludCBpc19oaWQsb2xkX2hpZDsg
LyogaWYgbmV3IGZpbGUgYW5kIG9sZCBmaWxlIGFyZSBoaWRkZW4gKi8NCiAJ
Y2hhciBvbGRfbXNkb3NfbmFtZVtNU0RPU19OQU1FXSwgbmV3X21zZG9zX25h
bWVbTVNET1NfTkFNRV07DQogDQotCWVycm9yID0gLUVJTlZBTDsNCi0JaWYg
KHNiICE9IG5ld19kaXItPmlfc2IpDQotCQlnb3RvIHJlbmFtZV9kb25lOw0K
IAllcnJvciA9IG1zZG9zX2Zvcm1hdF9uYW1lKE1TRE9TX1NCKHNiKS0+b3B0
aW9ucy5uYW1lX2NoZWNrLA0KIAkJCQlvbGRfZGVudHJ5LT5kX25hbWUubmFt
ZSwgb2xkX2RlbnRyeS0+ZF9uYW1lLmxlbiwNCiAJCQkJb2xkX21zZG9zX25h
bWUsIDEsTVNET1NfU0Ioc2IpLT5vcHRpb25zLmRvdHNPSyk7DQpkaWZmIC11
ck4gbGludXgtMi4yLjItcHJlMi9mcy9uYW1laS5jIGxpbnV4LmJpcmQucmVu
YW1lL2ZzL25hbWVpLmMNCi0tLSBsaW51eC0yLjIuMi1wcmUyL2ZzL25hbWVp
LmMJVHVlIEZlYiAgOSAxMDoxNzoxNSAxOTk5DQorKysgbGludXguYmlyZC5y
ZW5hbWUvZnMvbmFtZWkuYwlUdWUgRmViICA5IDA4OjEwOjUwIDE5OTkNCkBA
IC0xMjMxLDcgKzEyMzEsNTUgQEANCiAJcmV0dXJuIGVycm9yOw0KIH0NCiAN
Ci1pbnQgdmZzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVj
dCBkZW50cnkgKm9sZF9kZW50cnksDQoraW50IHZmc19yZW5hbWVfZGlyKHN0
cnVjdCBpbm9kZSAqb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRy
eSwNCisJICAgICAgIHN0cnVjdCBpbm9kZSAqbmV3X2Rpciwgc3RydWN0IGRl
bnRyeSAqbmV3X2RlbnRyeSkNCit7DQorCWludCBlcnJvcjsNCisJaW50IG5l
ZWRfcmVoYXNoID0gMDsNCisNCisJZXJyb3IgPSBtYXlfZGVsZXRlKG9sZF9k
aXIsIG9sZF9kZW50cnksIDEpOyAvKiBYWFggKi8NCisJaWYgKGVycm9yKQ0K
KwkJcmV0dXJuIGVycm9yOw0KKw0KKwlpZiAobmV3X2Rpci0+aV9kZXYgIT0g
b2xkX2Rpci0+aV9kZXYpDQorCQlyZXR1cm4gLUVYREVWOw0KKw0KKwlpZiAo
IW5ld19kZW50cnktPmRfaW5vZGUpDQorCQllcnJvciA9IG1heV9jcmVhdGUo
bmV3X2RpciwgbmV3X2RlbnRyeSk7DQorCWVsc2UNCisJCWVycm9yID0gbWF5
X2RlbGV0ZShuZXdfZGlyLCBuZXdfZGVudHJ5LCAxKTsNCisJaWYgKGVycm9y
KQ0KKwkJcmV0dXJuIGVycm9yOw0KKw0KKwlpZiAoIW9sZF9kaXItPmlfb3Ag
fHwgIW9sZF9kaXItPmlfb3AtPnJlbmFtZSkNCisJCXJldHVybiAtRVBFUk07
DQorDQorCWlmIChvbGRfZGVudHJ5LT5kX2lub2RlID09IG5ld19kZW50cnkt
PmRfaW5vZGUpDQorCQlyZXR1cm4gMDsNCisNCisJRFFVT1RfSU5JVChvbGRf
ZGlyKTsNCisJRFFVT1RfSU5JVChuZXdfZGlyKTsNCisJZG93bigmb2xkX2Rp
ci0+aV9zYi0+c192ZnNfcmVuYW1lX3NlbSk7DQorCWVycm9yID0gLUVJTlZB
TDsNCisJaWYgKGlzX3N1YmRpcihuZXdfZGVudHJ5LCBvbGRfZGVudHJ5KSkN
CisJCWdvdG8gb3V0X3VubG9jazsNCisJaWYgKG5ld19kZW50cnktPmRfaW5v
ZGUpIHsNCisJCWVycm9yID0gLUVCVVNZOw0KKwkJaWYgKGRfaW52YWxpZGF0
ZShuZXdfZGVudHJ5KTwwKQ0KKwkJCWdvdG8gb3V0X3VubG9jazsNCisJCW5l
ZWRfcmVoYXNoID0gMTsNCisJfQ0KKwllcnJvciA9IG9sZF9kaXItPmlfb3At
PnJlbmFtZShvbGRfZGlyLCBvbGRfZGVudHJ5LCBuZXdfZGlyLCBuZXdfZGVu
dHJ5KTsNCisJaWYgKG5lZWRfcmVoYXNoKQ0KKwkJZF9yZWhhc2gobmV3X2Rl
bnRyeSk7DQorCWlmICghZXJyb3IpDQorCQlkX21vdmUob2xkX2RlbnRyeSxu
ZXdfZGVudHJ5KTsNCitvdXRfdW5sb2NrOg0KKwl1cCgmb2xkX2Rpci0+aV9z
Yi0+c192ZnNfcmVuYW1lX3NlbSk7DQorCXJldHVybiBlcnJvcjsNCit9DQor
DQoraW50IHZmc19yZW5hbWVfb3RoZXIoc3RydWN0IGlub2RlICpvbGRfZGly
LCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LA0KIAkgICAgICAgc3RydWN0
IGlub2RlICpuZXdfZGlyLCBzdHJ1Y3QgZGVudHJ5ICpuZXdfZGVudHJ5KQ0K
IHsNCiAJaW50IGVycm9yOw0KQEAgLTEyMzksNyArMTI4Nyw3IEBADQogDQog
CWlzZGlyID0gU19JU0RJUihvbGRfZGVudHJ5LT5kX2lub2RlLT5pX21vZGUp
Ow0KIA0KLQllcnJvciA9IG1heV9kZWxldGUob2xkX2Rpciwgb2xkX2RlbnRy
eSwgaXNkaXIpOyAvKiBYWFggKi8NCisJZXJyb3IgPSBtYXlfZGVsZXRlKG9s
ZF9kaXIsIG9sZF9kZW50cnksIDApOw0KIAlpZiAoZXJyb3IpDQogCQlyZXR1
cm4gZXJyb3I7DQogDQpAQCAtMTI0OSwxOCArMTI5NywzMCBAQA0KIAlpZiAo
IW5ld19kZW50cnktPmRfaW5vZGUpDQogCQllcnJvciA9IG1heV9jcmVhdGUo
bmV3X2RpciwgbmV3X2RlbnRyeSk7DQogCWVsc2UNCi0JCWVycm9yID0gbWF5
X2RlbGV0ZShuZXdfZGlyLCBuZXdfZGVudHJ5LCBpc2Rpcik7DQorCQllcnJv
ciA9IG1heV9kZWxldGUobmV3X2RpciwgbmV3X2RlbnRyeSwgMCk7DQogCWlm
IChlcnJvcikNCiAJCXJldHVybiBlcnJvcjsNCiANCiAJaWYgKCFvbGRfZGly
LT5pX29wIHx8ICFvbGRfZGlyLT5pX29wLT5yZW5hbWUpDQogCQlyZXR1cm4g
LUVQRVJNOw0KIA0KKwlpZiAob2xkX2RlbnRyeS0+ZF9pbm9kZSA9PSBuZXdf
ZGVudHJ5LT5kX2lub2RlKQ0KKwkJcmV0dXJuIDA7DQorDQogCURRVU9UX0lO
SVQob2xkX2Rpcik7DQogCURRVU9UX0lOSVQobmV3X2Rpcik7DQogCWVycm9y
ID0gb2xkX2Rpci0+aV9vcC0+cmVuYW1lKG9sZF9kaXIsIG9sZF9kZW50cnks
IG5ld19kaXIsIG5ld19kZW50cnkpOw0KIA0KIAlyZXR1cm4gZXJyb3I7DQor
fQ0KKw0KK2ludCB2ZnNfcmVuYW1lKHN0cnVjdCBpbm9kZSAqb2xkX2Rpciwg
c3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwNCisJICAgICAgIHN0cnVjdCBp
bm9kZSAqbmV3X2Rpciwgc3RydWN0IGRlbnRyeSAqbmV3X2RlbnRyeSkNCit7
DQorCWlmIChTX0lTRElSKG9sZF9kZW50cnktPmRfaW5vZGUtPmlfbW9kZSkp
DQorCQlyZXR1cm4gdmZzX3JlbmFtZV9kaXIob2xkX2RpcixvbGRfZGVudHJ5
LG5ld19kaXIsbmV3X2RlbnRyeSk7DQorCWVsc2UNCisJCXJldHVybiB2ZnNf
cmVuYW1lX290aGVyKG9sZF9kaXIsb2xkX2RlbnRyeSxuZXdfZGlyLG5ld19k
ZW50cnkpOw0KIH0NCiANCiBzdGF0aWMgaW5saW5lIGludCBkb19yZW5hbWUo
Y29uc3QgY2hhciAqIG9sZG5hbWUsIGNvbnN0IGNoYXIgKiBuZXduYW1lKQ0K
ZGlmZiAtdXJOIGxpbnV4LTIuMi4yLXByZTIvZnMvbmNwZnMvZGlyLmMgbGlu
dXguYmlyZC5yZW5hbWUvZnMvbmNwZnMvZGlyLmMNCi0tLSBsaW51eC0yLjIu
Mi1wcmUyL2ZzL25jcGZzL2Rpci5jCVR1ZSBGZWIgIDkgMTA6MTc6MTYgMTk5
OQ0KKysrIGxpbnV4LmJpcmQucmVuYW1lL2ZzL25jcGZzL2Rpci5jCVR1ZSBG
ZWIgIDkgMDk6MTI6MjQgMTk5OQ0KQEAgLTExMjUsNyArMTEyNSw4IEBADQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGVudHJ5LT5k
X25hbWUubmFtZSxuZXdfZGVudHJ5LT5kX25hbWUubmFtZSk7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgbmNwX2ludmFsaWRfZGlyX2NhY2hlKG9sZF9k
aXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgIG5jcF9pbnZhbGlkX2Rp
cl9jYWNoZShuZXdfZGlyKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICBk
X21vdmUob2xkX2RlbnRyeSxuZXdfZGVudHJ5KTsNCisJCQlpZiAoIVNfSVNE
SVIob2xkX2RlbnRyeS0+ZF9pbm9kZS0+aV9tb2RlKSkNCisJCQkJZF9tb3Zl
KG9sZF9kZW50cnksbmV3X2RlbnRyeSk7DQogICAgICAgICAgICAgICAgIH0N
CiAJfSBlbHNlIHsNCiAJCWlmIChlcnJvciA9PSAweDlFKQ0KZGlmZiAtdXJO
IGxpbnV4LTIuMi4yLXByZTIvZnMvbmZzL2Rpci5jIGxpbnV4LmJpcmQucmVu
YW1lL2ZzL25mcy9kaXIuYw0KLS0tIGxpbnV4LTIuMi4yLXByZTIvZnMvbmZz
L2Rpci5jCVR1ZSBGZWIgIDkgMTA6MTc6MTUgMTk5OQ0KKysrIGxpbnV4LmJp
cmQucmVuYW1lL2ZzL25mcy9kaXIuYwlUdWUgRmViICA5IDA4OjU1OjI5IDE5
OTkNCkBAIC0xMTEyLDI4ICsxMTEyLDI0IEBADQogCSAqIHNpbGx5LXJlbmFt
ZS4gSWYgdGhlIHNpbGx5LXJlbmFtZSBzdWNjZWVkcywgdGhlDQogCSAqIGNv
cGllZCBkZW50cnkgaXMgaGFzaGVkIGFuZCBiZWNvbWVzIHRoZSBuZXcgdGFy
Z2V0Lg0KIAkgKg0KLQkgKiBGb3IgZGlyZWN0b3JpZXMsIHBydW5lIGFueSB1
bnVzZWQgY2hpbGRyZW4uDQorCSAqIFdpdGggZGlyZWN0b3JpZXMgY2hlY2sg
aXMgZG9uZSBpbiBWRlMuDQogCSAqLw0KIAllcnJvciA9IC1FQlVTWTsNCiAJ
aWYgKG5ld19kZW50cnktPmRfY291bnQgPiAxICYmIG5ld19pbm9kZSkgew0K
LQkJaWYgKFNfSVNSRUcobmV3X2lub2RlLT5pX21vZGUpKSB7DQotCQkJaW50
IGVycjsNCi0JCQkvKiBjb3B5IHRoZSB0YXJnZXQgZGVudHJ5J3MgbmFtZSAq
Lw0KLQkJCWRlbnRyeSA9IGRfYWxsb2MobmV3X2RlbnRyeS0+ZF9wYXJlbnQs
DQotCQkJCQkgJm5ld19kZW50cnktPmRfbmFtZSk7DQotCQkJaWYgKCFkZW50
cnkpDQotCQkJCWdvdG8gb3V0Ow0KLQ0KLQkJCS8qIHNpbGx5LXJlbmFtZSB0
aGUgZXhpc3RpbmcgdGFyZ2V0IC4uLiAqLw0KLQkJCWVyciA9IG5mc19zaWxs
eXJlbmFtZShuZXdfZGlyLCBuZXdfZGVudHJ5KTsNCi0JCQlpZiAoIWVycikg
ew0KLQkJCQluZXdfZGVudHJ5ID0gZGVudHJ5Ow0KLQkJCQluZXdfaW5vZGUg
PSBOVUxMOw0KLQkJCQkvKiBoYXNoIHRoZSByZXBsYWNlbWVudCB0YXJnZXQg
Ki8NCi0JCQkJZF9hZGQobmV3X2RlbnRyeSwgTlVMTCk7DQotCQkJfQ0KLQkJ
fSBlbHNlIGlmICghbGlzdF9lbXB0eSgmbmV3X2RlbnRyeS0+ZF9zdWJkaXJz
KSkgew0KLQkJCXNocmlua19kY2FjaGVfcGFyZW50KG5ld19kZW50cnkpOw0K
KwkJaW50IGVycjsNCisJCS8qIGNvcHkgdGhlIHRhcmdldCBkZW50cnkncyBu
YW1lICovDQorCQlkZW50cnkgPSBkX2FsbG9jKG5ld19kZW50cnktPmRfcGFy
ZW50LA0KKwkJCQkgJm5ld19kZW50cnktPmRfbmFtZSk7DQorCQlpZiAoIWRl
bnRyeSkNCisJCQlnb3RvIG91dDsNCisNCisJCS8qIHNpbGx5LXJlbmFtZSB0
aGUgZXhpc3RpbmcgdGFyZ2V0IC4uLiAqLw0KKwkJZXJyID0gbmZzX3NpbGx5
cmVuYW1lKG5ld19kaXIsIG5ld19kZW50cnkpOw0KKwkJaWYgKCFlcnIpIHsN
CisJCQluZXdfZGVudHJ5ID0gZGVudHJ5Ow0KKwkJCW5ld19pbm9kZSA9IE5V
TEw7DQorCQkJLyogaGFzaCB0aGUgcmVwbGFjZW1lbnQgdGFyZ2V0ICovDQor
CQkJZF9hZGQobmV3X2RlbnRyeSwgTlVMTCk7DQogCQl9DQogDQogCQkvKiBk
ZW50cnkgc3RpbGwgYnVzeT8gKi8NCkBAIC0xMjA4LDcgKzEyMDQsNyBAQA0K
IAllcnJvciA9IG5mc19wcm9jX3JlbmFtZShORlNfRFNFUlZFUihvbGRfZGVu
dHJ5KSwNCiAJCQlORlNfRkgob2xkX2RlbnRyeS0+ZF9wYXJlbnQpLCBvbGRf
ZGVudHJ5LT5kX25hbWUubmFtZSwNCiAJCQlORlNfRkgobmV3X2RlbnRyeS0+
ZF9wYXJlbnQpLCBuZXdfZGVudHJ5LT5kX25hbWUubmFtZSk7DQotCWlmICgh
ZXJyb3IpIHsNCisJaWYgKCFlcnJvciAmJiAhU19JU0RJUihvbGRfaW5vZGUt
PmlfbW9kZSkpIHsNCiAJCS8qIFVwZGF0ZSB0aGUgZGNhY2hlIGlmIG5lZWRl
ZCAqLw0KIAkJaWYgKHJlaGFzaCkNCiAJCQlkX2FkZChuZXdfZGVudHJ5LCBO
VUxMKTsNCmRpZmYgLXVyTiBsaW51eC0yLjIuMi1wcmUyL2ZzL3NtYmZzL2Rp
ci5jIGxpbnV4LmJpcmQucmVuYW1lL2ZzL3NtYmZzL2Rpci5jDQotLS0gbGlu
dXgtMi4yLjItcHJlMi9mcy9zbWJmcy9kaXIuYwlUdWUgRmViICA5IDEwOjE3
OjE2IDE5OTkNCisrKyBsaW51eC5iaXJkLnJlbmFtZS9mcy9zbWJmcy9kaXIu
YwlUdWUgRmViICA5IDA5OjA5OjQyIDE5OTkNCkBAIC01MzcsNiArNTM3LDcg
QEANCiAjZW5kaWYNCiAJCQlnb3RvIG91dDsNCiAJCX0NCisJCS8qIEZJWE1F
ICovDQogCQlkX2RlbGV0ZShuZXdfZGVudHJ5KTsNCiAJfQ0KIA0KQEAgLTU0
Nyw3ICs1NDgsOCBAQA0KIAl7DQogCQlzbWJfcmVuZXdfdGltZXMob2xkX2Rl
bnRyeSk7DQogCQlzbWJfcmVuZXdfdGltZXMobmV3X2RlbnRyeSk7DQotCQlk
X21vdmUob2xkX2RlbnRyeSwgbmV3X2RlbnRyeSk7DQorCQlpZiAoIVNfSVNE
SVIob2xkX2RlbnRyeS0+ZF9pbm9kZS0+aV9tb2RlKSkNCisJCQlkX21vdmUo
b2xkX2RlbnRyeSwgbmV3X2RlbnRyeSk7DQogCX0NCiBvdXQ6DQogCXJldHVy
biBlcnJvcjsNCmRpZmYgLXVyTiBsaW51eC0yLjIuMi1wcmUyL2ZzL3N1cGVy
LmMgbGludXguYmlyZC5yZW5hbWUvZnMvc3VwZXIuYw0KLS0tIGxpbnV4LTIu
Mi4yLXByZTIvZnMvc3VwZXIuYwlUdWUgRmViICA5IDEwOjE3OjE1IDE5OTkN
CisrKyBsaW51eC5iaXJkLnJlbmFtZS9mcy9zdXBlci5jCVR1ZSBGZWIgIDkg
MDg6MDc6MDIgMTk5OQ0KQEAgLTU1OSw2ICs1NTksNyBAQA0KIAlzLT5zX2Rl
diA9IGRldjsNCiAJcy0+c19mbGFncyA9IGZsYWdzOw0KIAlzLT5zX2RpcnQg
PSAwOw0KKwlzZW1hX2luaXQoJnMtPnNfdmZzX3JlbmFtZV9zZW0sMSk7DQog
CS8qIE4uQi4gU2hvdWxkIGxvY2sgc3VwZXJibG9jayBub3cgLi4uICovDQog
CWlmICghdHlwZS0+cmVhZF9zdXBlcihzLCBkYXRhLCBzaWxlbnQpKQ0KIAkJ
Z290byBvdXRfZmFpbDsNCmRpZmYgLXVyTiBsaW51eC0yLjIuMi1wcmUyL2Zz
L3N5c3YvbmFtZWkuYyBsaW51eC5iaXJkLnJlbmFtZS9mcy9zeXN2L25hbWVp
LmMNCi0tLSBsaW51eC0yLjIuMi1wcmUyL2ZzL3N5c3YvbmFtZWkuYwlUdWUg
RmViICA5IDEwOjE3OjE2IDE5OTkNCisrKyBsaW51eC5iaXJkLnJlbmFtZS9m
cy9zeXN2L25hbWVpLmMJVHVlIEZlYiAgOSAwOTowNjowMSAxOTk5DQpAQCAt
NTkzLDggKzU5Myw4IEBADQogICogQW55Ym9keSBjYW4gcmVuYW1lIGFueXRo
aW5nIHdpdGggdGhpczogdGhlIHBlcm1pc3Npb24gY2hlY2tzIGFyZSBsZWZ0
IHRvIHRoZQ0KICAqIGhpZ2hlci1sZXZlbCByb3V0aW5lcy4NCiAgKi8NCi1z
dGF0aWMgaW50IGRvX3N5c3ZfcmVuYW1lKHN0cnVjdCBpbm9kZSAqIG9sZF9k
aXIsIHN0cnVjdCBkZW50cnkgKiBvbGRfZGVudHJ5LA0KLQkJCSAgc3RydWN0
IGlub2RlICogbmV3X2Rpciwgc3RydWN0IGRlbnRyeSAqIG5ld19kZW50cnkp
DQoraW50IHN5c3ZfcmVuYW1lKHN0cnVjdCBpbm9kZSAqIG9sZF9kaXIsIHN0
cnVjdCBkZW50cnkgKiBvbGRfZGVudHJ5LA0KKwkJICBzdHJ1Y3QgaW5vZGUg
KiBuZXdfZGlyLCBzdHJ1Y3QgZGVudHJ5ICogbmV3X2RlbnRyeSkNCiB7DQog
CXN0cnVjdCBpbm9kZSAqIG9sZF9pbm9kZSwgKiBuZXdfaW5vZGU7DQogCXN0
cnVjdCBidWZmZXJfaGVhZCAqIG9sZF9iaCwgKiBuZXdfYmgsICogZGlyX2Jo
Ow0KQEAgLTYyNywyMCArNjI3LDggQEANCiAJCQluZXdfYmggPSBOVUxMOw0K
IAkJfQ0KIAl9DQotCWlmIChuZXdfaW5vZGUgPT0gb2xkX2lub2RlKSB7DQot
CQlyZXR2YWwgPSAwOw0KLQkJZ290byBlbmRfcmVuYW1lOw0KLQl9DQogCWlm
IChTX0lTRElSKG9sZF9pbm9kZS0+aV9tb2RlKSkgew0KLQkJcmV0dmFsID0g
LUVJTlZBTDsNCi0JCWlmIChpc19zdWJkaXIobmV3X2RlbnRyeSwgb2xkX2Rl
bnRyeSkpDQotCQkJZ290byBlbmRfcmVuYW1lOw0KIAkJaWYgKG5ld19pbm9k
ZSkgew0KLQkJCWlmIChuZXdfZGVudHJ5LT5kX2NvdW50ID4gMSkNCi0JCQkJ
c2hyaW5rX2RjYWNoZV9wYXJlbnQobmV3X2RlbnRyeSk7DQotCQkJcmV0dmFs
ID0gLUVCVVNZOw0KLQkJCWlmIChuZXdfZGVudHJ5LT5kX2NvdW50ID4gMSkN
Ci0JCQkJZ290byBlbmRfcmVuYW1lOw0KIAkJCXJldHZhbCA9IC1FTk9URU1Q
VFk7DQogCQkJaWYgKCFlbXB0eV9kaXIobmV3X2lub2RlKSkNCiAJCQkJZ290
byBlbmRfcmVuYW1lOw0KQEAgLTY5NSwzNyArNjgzLDEyIEBADQogCQkJbWFy
a19pbm9kZV9kaXJ0eShuZXdfZGlyKTsNCiAJCX0NCiAJfQ0KLQlkX21vdmUo
b2xkX2RlbnRyeSwgbmV3X2RlbnRyeSk7DQorCWlmICghU19JU0RJUihvbGRf
aW5vZGUtPmlfbW9kZSkpDQorCQlkX21vdmUob2xkX2RlbnRyeSwgbmV3X2Rl
bnRyeSk7DQogCXJldHZhbCA9IDA7DQogZW5kX3JlbmFtZToNCiAJYnJlbHNl
KGRpcl9iaCk7DQogCWJyZWxzZShvbGRfYmgpOw0KIAlicmVsc2UobmV3X2Jo
KTsNCiAJcmV0dXJuIHJldHZhbDsNCi19DQotDQotLyoNCi0gKiBPaywgcmVu
YW1lIGFsc28gbG9ja3Mgb3V0IG90aGVyIHJlbmFtZXMsIGFzIHRoZXkgY2Fu
IGNoYW5nZSB0aGUgcGFyZW50IG9mDQotICogYSBkaXJlY3RvcnksIGFuZCB3
ZSBkb24ndCB3YW50IGFueSByYWNlcy4gT3RoZXIgcmFjZXMgYXJlIGNoZWNr
ZWQgZm9yIGJ5DQotICogImRvX3JlbmFtZSgpIiwgd2hpY2ggcmVzdGFydHMg
aWYgdGhlcmUgYXJlIGluY29uc2lzdGVuY2llcy4NCi0gKg0KLSAqIE5vdGUg
dGhhdCB0aGVyZSBpcyBubyByYWNlIGJldHdlZW4gZGlmZmVyZW50IGZpbGVz
eXN0ZW1zOiBpdCdzIG9ubHkgd2l0aGluDQotICogdGhlIHNhbWUgZGV2aWNl
IHRoYXQgcmFjZXMgb2NjdXI6IG1hbnkgcmVuYW1lcyBjYW4gaGFwcGVuIGF0
IG9uY2UsIGFzIGxvbmcNCi0gKiBhcyB0aGV5IGFyZSBvbiBkaWZmZXJlbnQg
cGFydGl0aW9ucy4NCi0gKi8NCi1pbnQgc3lzdl9yZW5hbWUoc3RydWN0IGlu
b2RlICogb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqIG9sZF9kZW50cnksDQot
CQlzdHJ1Y3QgaW5vZGUgKiBuZXdfZGlyLCBzdHJ1Y3QgZGVudHJ5ICogbmV3
X2RlbnRyeSkNCi17DQotCXN0YXRpYyBzdHJ1Y3Qgd2FpdF9xdWV1ZSAqIHdh
aXQgPSBOVUxMOw0KLQlzdGF0aWMgaW50IGxvY2sgPSAwOw0KLQlpbnQgcmVz
dWx0Ow0KLQ0KLQl3aGlsZSAobG9jaykNCi0JCXNsZWVwX29uKCZ3YWl0KTsN
Ci0JbG9jayA9IDE7DQotCXJlc3VsdCA9IGRvX3N5c3ZfcmVuYW1lKG9sZF9k
aXIsIG9sZF9kZW50cnksDQotCQkJCW5ld19kaXIsIG5ld19kZW50cnkpOw0K
LQlsb2NrID0gMDsNCi0Jd2FrZV91cCgmd2FpdCk7DQotCXJldHVybiByZXN1
bHQ7DQogfQ0KZGlmZiAtdXJOIGxpbnV4LTIuMi4yLXByZTIvZnMvdWZzL25h
bWVpLmMgbGludXguYmlyZC5yZW5hbWUvZnMvdWZzL25hbWVpLmMNCi0tLSBs
aW51eC0yLjIuMi1wcmUyL2ZzL3Vmcy9uYW1laS5jCVR1ZSBGZWIgIDkgMTA6
MTc6MTcgMTk5OQ0KKysrIGxpbnV4LmJpcmQucmVuYW1lL2ZzL3Vmcy9uYW1l
aS5jCVR1ZSBGZWIgIDkgMDk6MDY6MzcgMTk5OQ0KQEAgLTkxMiwxNyArOTEy
LDEwIEBADQogCSgoc3RydWN0IHVmc19kaXJfZW50cnkgKikgKChjaGFyICop
IGJ1ZmZlciArIFwNCiAJU1dBQjE2KCgoc3RydWN0IHVmc19kaXJfZW50cnkg
KikgYnVmZmVyKS0+ZF9yZWNsZW4pKSktPmRfaW5vDQogLyoNCi0gKiByZW5h
bWUgdXNlcyByZXRyeWluZyB0byBhdm9pZCByYWNlLWNvbmRpdGlvbnM6IGF0
IGxlYXN0IHRoZXkgc2hvdWxkIGJlDQotICogbWluaW1hbC4NCi0gKiBpdCB0
cmllcyB0byBhbGxvY2F0ZSBhbGwgdGhlIGJsb2NrcywgdGhlbiBzYW5pdHkt
Y2hlY2tzLCBhbmQgaWYgdGhlIHNhbml0eS0NCi0gKiBjaGVja3MgZmFpbCwg
aXQgdHJpZXMgdG8gcmVzdGFydCBpdHNlbGYgYWdhaW4uIFZlcnkgcHJhY3Rp
Y2FsIC0gbm8gY2hhbmdlcw0KLSAqIGFyZSBkb25lIHVudGlsIHdlIGtub3cg
ZXZlcnl0aGluZyB3b3JrcyBvay4uIGFuZCB0aGVuIGFsbCB0aGUgY2hhbmdl
cyBjYW4gYmUNCi0gKiBkb25lIGluIG9uZSBmZWxsIHN3b29wIHdoZW4gd2Ug
aGF2ZSBjbGFpbWVkIGFsbCB0aGUgYnVmZmVycyBuZWVkZWQuDQotICoNCiAg
KiBBbnlib2R5IGNhbiByZW5hbWUgYW55dGhpbmcgd2l0aCB0aGlzOiB0aGUg
cGVybWlzc2lvbiBjaGVja3MgYXJlIGxlZnQgdG8gdGhlDQogICogaGlnaGVy
LWxldmVsIHJvdXRpbmVzLg0KICAqLw0KLXN0YXRpYyBpbnQgZG9fdWZzX3Jl
bmFtZSAoc3RydWN0IGlub2RlICogb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAq
IG9sZF9kZW50cnksDQoraW50IHVmc19yZW5hbWUgKHN0cnVjdCBpbm9kZSAq
IG9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKiBvbGRfZGVudHJ5LA0KIAlzdHJ1
Y3QgaW5vZGUgKiBuZXdfZGlyLAlzdHJ1Y3QgZGVudHJ5ICogbmV3X2RlbnRy
eSApDQogew0KIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYjsNCkBAIC05Njcs
MjUgKzk2MCwxNCBAQA0KIAkJCURRVU9UX0lOSVQobmV3X2lub2RlKTsNCiAJ
CX0NCiAJfQ0KLQlyZXR2YWwgPSAwOw0KLQlpZiAobmV3X2lub2RlID09IG9s
ZF9pbm9kZSkNCi0JCWdvdG8gZW5kX3JlbmFtZTsNCiAJaWYgKFNfSVNESVIo
b2xkX2lub2RlLT5pX21vZGUpKSB7DQotCQlyZXR2YWwgPSAtRUlOVkFMOw0K
LQkJaWYgKGlzX3N1YmRpcihuZXdfZGVudHJ5LCBvbGRfZGVudHJ5KSkNCi0J
CQlnb3RvIGVuZF9yZW5hbWU7DQogCQlpZiAobmV3X2lub2RlKSB7DQotCQkJ
LyogUHJ1bmUgYW55IGNoaWxkcmVuIGJlZm9yZSB0ZXN0aW5nIGZvciBidXN5
ICovDQotCQkJaWYgKG5ld19kZW50cnktPmRfY291bnQgPiAxKQ0KLQkJCQlz
aHJpbmtfZGNhY2hlX3BhcmVudChuZXdfZGVudHJ5KTsNCi0JCQlyZXR2YWwg
PSAtRUJVU1k7DQotCQkJaWYgKG5ld19kZW50cnktPmRfY291bnQgPiAxKQ0K
LQkJCQlnb3RvIGVuZF9yZW5hbWU7DQogCQkJcmV0dmFsID0gLUVOT1RFTVBU
WTsNCiAJCQlpZiAoIXVmc19lbXB0eV9kaXIgKG5ld19pbm9kZSkpDQogCQkJ
CWdvdG8gZW5kX3JlbmFtZTsNCiAJCX0NCiANCisJCXJldHZhbCA9IC1FSU87
DQogCQlkaXJfYmggPSB1ZnNfYnJlYWQgKG9sZF9pbm9kZSwgMCwgMCwgJnJl
dHZhbCk7DQogCQlpZiAoIWRpcl9iaCkNCiAJCQlnb3RvIGVuZF9yZW5hbWU7
DQpAQCAtMTA0Myw3ICsxMDI1LDggQEANCiAJfQ0KIA0KIAkvKiBVcGRhdGUg
dGhlIGRjYWNoZSAqLw0KLQlkX21vdmUob2xkX2RlbnRyeSwgbmV3X2RlbnRy
eSk7DQorCWlmICghU19JU0RJUihvbGRfaW5vZGUtPmlfbW9kZSkpDQorCQlk
X21vdmUob2xkX2RlbnRyeSwgbmV3X2RlbnRyeSk7DQogCXJldHZhbCA9IDA7
DQogZW5kX3JlbmFtZToNCiAJYnJlbHNlIChkaXJfYmgpOw0KQEAgLTEwNTQs
MzYgKzEwMzcsMyBAQA0KIAkNCiAJcmV0dXJuIHJldHZhbDsNCiB9DQotDQot
LyoNCi0gKiBPaywgcmVuYW1lIGFsc28gbG9ja3Mgb3V0IG90aGVyIHJlbmFt
ZXMsIGFzIHRoZXkgY2FuIGNoYW5nZSB0aGUgcGFyZW50IG9mDQotICogYSBk
aXJlY3RvcnksIGFuZCB3ZSBkb24ndCB3YW50IGFueSByYWNlcy4gT3RoZXIg
cmFjZXMgYXJlIGNoZWNrZWQgZm9yIGJ5DQotICogImRvX3JlbmFtZSgpIiwg
d2hpY2ggcmVzdGFydHMgaWYgdGhlcmUgYXJlIGluY29uc2lzdGVuY2llcy4N
Ci0gKg0KLSAqIE5vdGUgdGhhdCB0aGVyZSBpcyBubyByYWNlIGJldHdlZW4g
ZGlmZmVyZW50IGZpbGVzeXN0ZW1zOiBpdCdzIG9ubHkgd2l0aGluDQotICog
dGhlIHNhbWUgZGV2aWNlIHRoYXQgcmFjZXMgb2NjdXI6IG1hbnkgcmVuYW1l
cyBjYW4gaGFwcGVuIGF0IG9uY2UsIGFzIGxvbmcNCi0gKiBhcyB0aGV5IGFy
ZSBvbiBkaWZmZXJlbnQgcGFydGl0aW9ucy4NCi0gKg0KLSAqIEluIHRoZSBz
ZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0sIHdlIHVzZSBhIGxvY2sgZmxh
ZyBzdG9yZWQgaW4gdGhlIG1lbW9yeQ0KLSAqIHN1cGVyLWJsb2NrLiAgVGhp
cyB3YXksIHdlIHJlYWxseSBsb2NrIG90aGVyIHJlbmFtZXMgb25seSBpZiB0
aGV5IG9jY3VyDQotICogb24gdGhlIHNhbWUgZmlsZSBzeXN0ZW0NCi0gKi8N
Ci1pbnQgdWZzX3JlbmFtZSAoc3RydWN0IGlub2RlICogb2xkX2Rpciwgc3Ry
dWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwNCi0Jc3RydWN0IGlub2RlICogbmV3
X2RpciwJc3RydWN0IGRlbnRyeSAqbmV3X2RlbnRyeSApDQotew0KLQlpbnQg
cmVzdWx0Ow0KLQ0KLQlVRlNEKCgiRU5URVJcbiIpKQ0KLQkNCi0Jd2hpbGUg
KG9sZF9kaXItPmlfc2ItPnUudWZzX3NiLnNfcmVuYW1lX2xvY2spDQotCQlz
bGVlcF9vbiAoJm9sZF9kaXItPmlfc2ItPnUudWZzX3NiLnNfcmVuYW1lX3dh
aXQpOw0KLQlvbGRfZGlyLT5pX3NiLT51LnVmc19zYi5zX3JlbmFtZV9sb2Nr
ID0gMTsNCi0JcmVzdWx0ID0gZG9fdWZzX3JlbmFtZSAob2xkX2Rpciwgb2xk
X2RlbnRyeSwgbmV3X2RpciwgbmV3X2RlbnRyeSk7DQotCW9sZF9kaXItPmlf
c2ItPnUudWZzX3NiLnNfcmVuYW1lX2xvY2sgPSAwOw0KLQl3YWtlX3VwICgm
b2xkX2Rpci0+aV9zYi0+dS51ZnNfc2Iuc19yZW5hbWVfd2FpdCk7DQotCQ0K
LQlVRlNEKCgiRVhJVFxuIikpDQotCQ0KLQlyZXR1cm4gcmVzdWx0Ow0KLX0N
Ci0gDQpkaWZmIC11ck4gbGludXgtMi4yLjItcHJlMi9mcy91ZnMvc3VwZXIu
YyBsaW51eC5iaXJkLnJlbmFtZS9mcy91ZnMvc3VwZXIuYw0KLS0tIGxpbnV4
LTIuMi4yLXByZTIvZnMvdWZzL3N1cGVyLmMJVHVlIEZlYiAgOSAxMDoxNzox
NyAxOTk5DQorKysgbGludXguYmlyZC5yZW5hbWUvZnMvdWZzL3N1cGVyLmMJ
VHVlIEZlYiAgOSAwOToxODowNyAxOTk5DQpAQCAtNzM0LDggKzczNCw2IEBA
DQogCQ0KIAlzYi0+dS51ZnNfc2Iuc19mbGFncyA9IGZsYWdzOw0KIAlzYi0+
dS51ZnNfc2Iuc19zd2FiID0gc3dhYjsNCi0Jc2ItPnUudWZzX3NiLnNfcmVu
YW1lX2xvY2sgPSAwOw0KLQlzYi0+dS51ZnNfc2Iuc19yZW5hbWVfd2FpdCA9
IE5VTEw7DQogCSAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIA0KIAlzYi0+c19yb290ID0gZF9h
bGxvY19yb290KGlnZXQoc2IsIFVGU19ST09USU5PKSwgTlVMTCk7DQogDQpk
aWZmIC11ck4gbGludXgtMi4yLjItcHJlMi9mcy91bXNkb3MvbmFtZWkuYyBs
aW51eC5iaXJkLnJlbmFtZS9mcy91bXNkb3MvbmFtZWkuYw0KLS0tIGxpbnV4
LTIuMi4yLXByZTIvZnMvdW1zZG9zL25hbWVpLmMJVHVlIEZlYiAgOSAxMDox
NzoxNSAxOTk5DQorKysgbGludXguYmlyZC5yZW5hbWUvZnMvdW1zZG9zL25h
bWVpLmMJVHVlIEZlYiAgOSAwOTowMjoyNCAxOTk5DQpAQCAtNiw2ICs2LDEw
IEBADQogICoNCiAgKiBNYWludGFpbiBhbmQgYWNjZXNzIHRoZSAtLWxpbnV4
IGFsdGVybmF0ZSBkaXJlY3RvcnkgZmlsZS4NCiAgKi8NCisgLyoNCisgICog
WW91IGFyZSBpbiB0aGUgbWF6ZSBvZiB0d2lzdGVkIGZ1bmN0aW9ucyAtIGhh
bGYgb2YgdGhlbSBzaG91bGRuJ3QNCisgICogYmUgaGVyZS4uLg0KKyAgKi8N
CiANCiAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4NCiAjaW5jbHVkZSA8bGlu
dXgva2VybmVsLmg+DQpAQCAtMzk0LDI2ICszOTgsMTIgQEANCiAJCWdvdG8g
b3V0X3VubG9jazsNCiAJfQ0KIA0KLQkvKiBjaGVjayBzdGlja3kgYml0IG9u
IG9sZF9kaXIgKi8NCi0JcmV0ID0gLUVQRVJNOw0KLQlpZiAoaXNfc3RpY2t5
KG9sZF9kaXIsIG9sZF9pbmZvLmVudHJ5LnVpZCkpIHsNCi1wcmludGsoInVt
c2Rvc19yZW5hbWVfZjogJXMvJXMgb2xkIHN0aWNreSBiaXQsIGZzdWlkPSVk
LCB1aWQ9JWQsIGRpcj0lZFxuIiwNCi1vbGRfZGVudHJ5LT5kX3BhcmVudC0+
ZF9uYW1lLm5hbWUsIG9sZF9pbmZvLmVudHJ5Lm5hbWUsDQotY3VycmVudC0+
ZnN1aWQsIG9sZF9pbmZvLmVudHJ5LnVpZCwgb2xkX2Rpci0+aV91aWQpOw0K
LQkJZ290byBvdXRfdW5sb2NrOw0KLQl9DQotDQogCS8qDQogCSAqIENoZWNr
IHdoZXRoZXIgdGhlIG5ld19uYW1lIGFscmVhZHkgZXhpc3RzLCBhbmQNCiAJ
ICogaWYgc28gd2hldGhlciB3ZSdyZSBhbGxvd2VkIHRvIHJlcGxhY2UgaXQu
DQogCSAqLw0KIAllcnIgPSB1bXNkb3NfZmluZGVudHJ5KG5ld19kZW50cnkt
PmRfcGFyZW50LCAmbmV3X2luZm8sIDApOw0KIAlpZiAoZXJyID09IDApIHsN
Ci0JIAkvKiBBcmUgd2UgYWxsb3dlZCB0byByZXBsYWNlIGl0PyAqLw0KLQkJ
aWYgKGlzX3N0aWNreShuZXdfZGlyLCBuZXdfaW5mby5lbnRyeS51aWQpKSB7
DQotUHJpbnRrICgoInN0aWNreSBzZXQgb24gbmV3ICIpKTsNCi0JCQlnb3Rv
IG91dF91bmxvY2s7DQotCQl9DQogCQkvKiBjaGVjayB3aGV0aGVyIGl0IF9y
ZWFsbHlfIGV4aXN0cyAuLi4gKi8NCiAJCXJldCA9IC1FRVhJU1Q7DQogCQlp
ZiAobmV3X2RlbnRyeS0+ZF9pbm9kZSkNCkBAIC00NjgsMjggKzQ1OCw2IEBA
DQogCQlyZXQgPSAtRU5PRU5UOw0KIAkJaWYgKG9sZC0+ZF9pbm9kZSAhPSBv
bGRfaW5vZGUpDQogCQkJZ290byBvdXRfZHB1dDsNCi0JCS8qDQotCQkgKiBB
IGNyb3NzLWRpcmVjdG9yeSBtb3ZlIHdpdGggZGlmZmVyZW50IHNob3J0IGFu
ZCBsb25nDQotCQkgKiBuYW1lcyBoYXMgbmFzdHkgY29tcGxpY2F0aW9uczog
bXNkb3MtZnMgd2lsbCBuZWVkIHRvDQotCQkgKiBjaGFuZ2UgaW5vZGVzLCBz
byB3ZSBtdXN0IGNoZWNrIHdoZXRoZXIgdGhlIG9yaWdpbmFsDQotCQkgKiBk
ZW50cnkgaXMgYnVzeSwgYW5kIGlmIHRoZSByZW5hbWUgc3VjY2VlZHMgdGhl
IHNob3J0DQotCQkgKiBkZW50cnkgd2lsbCBjb21lIGJhY2sgd2l0aCBhIGRp
ZmZlcmVudCBpbm9kZS4NCi0JCSAqDQotCQkgKiBUbyBoYW5kbGUgdGhpcywg
d2UgZHJvcCB0aGUgZGVudHJ5IGFuZCBmcmVlIHRoZSBpbm9kZSwNCi0JCSAq
IGFuZCB0aGVuIHBpY2sgdXAgdGhlIG5ldyBpbm9kZSBhZnRlciB0aGUgcmVu
YW1lLg0KLQkJICovDQotCQlpZiAob2xkX2RpciAhPSBuZXdfZGlyKSB7DQot
CQkJcmV0ID0gLUVCVVNZOw0KLQkJCWlmIChvbGRfZGVudHJ5LT5kX2NvdW50
ID4gMSkgew0KLXByaW50aygidW1zZG9zX3JlbmFtZV9mOiBvbGQgZGVudHJ5
ICVzLyVzIGJ1c3ksIGRfY291bnQ9JWRcbiIsDQotb2xkX2RlbnRyeS0+ZF9w
YXJlbnQtPmRfbmFtZS5uYW1lLCBvbGRfZGVudHJ5LT5kX25hbWUubmFtZSxv
bGRfZGVudHJ5LT5kX2NvdW50KTsNCi0JCQkJZ290byBvdXRfZHB1dDsNCi0J
CQl9DQotCQkJZF9kcm9wKG9sZF9kZW50cnkpOw0KLQkJCWRfZGVsZXRlKG9s
ZF9kZW50cnkpOw0KLXByaW50aygidW1zZG9zX3JlbmFtZV9mOiBjcm9zcy1k
aXIgbW92ZSwgJXMvJXMgZHJvcHBlZFxuIiwNCi1vbGRfZGVudHJ5LT5kX3Bh
cmVudC0+ZF9uYW1lLm5hbWUsIG9sZF9kZW50cnktPmRfbmFtZS5uYW1lKTsN
Ci0JCX0NCiAJfQ0KIA0KIAluZXcgPSB1bXNkb3NfbG9va3VwX2RlbnRyeShu
ZXdfZGVudHJ5LT5kX3BhcmVudCwgbmV3X2luZm8uZmFrZS5mbmFtZSwgDQpA
QCAtNTk2LDYgKzU2NCwxMzUgQEANCiAJUHJpbnRrICgoIiBfcmV0PSVkXG4i
LCByZXQpKTsNCiAJcmV0dXJuIHJldDsNCiB9DQorIA0KK3N0YXRpYyBpbnQg
dW1zZG9zX3JlbmFtZV9kIChzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVj
dCBkZW50cnkgKm9sZF9kZW50cnksDQorCQkJICAgIHN0cnVjdCBpbm9kZSAq
bmV3X2Rpciwgc3RydWN0IGRlbnRyeSAqbmV3X2RlbnRyeSwNCisJCQkgICAg
aW50IGZsYWdzKQ0KK3sNCisJc3RydWN0IGlub2RlICpvbGRfaW5vZGUgPSBv
bGRfZGVudHJ5LT5kX2lub2RlOw0KKwlzdHJ1Y3QgZGVudHJ5ICpvbGQsICpu
ZXcsICpvbGRfZW1kLCAqZGVtZDsNCisJaW50IGVyciwgcmV0Ow0KKwlzdHJ1
Y3QgdW1zZG9zX2luZm8gb2xkX2luZm87DQorCXN0cnVjdCB1bXNkb3NfaW5m
byBuZXdfaW5mbzsNCisNCisgCXJldCA9IC1FUEVSTTsNCisJZXJyID0gdW1z
ZG9zX3BhcnNlIChvbGRfZGVudHJ5LT5kX25hbWUubmFtZSwNCisJCQkJb2xk
X2RlbnRyeS0+ZF9uYW1lLmxlbiwgJm9sZF9pbmZvKTsNCisJaWYgKGVycikN
CisJCWdvdG8gb3V0Ow0KKwllcnIgPSB1bXNkb3NfcGFyc2UgKG5ld19kZW50
cnktPmRfbmFtZS5uYW1lLA0KKwkJCQluZXdfZGVudHJ5LT5kX25hbWUubGVu
LCAmbmV3X2luZm8pOw0KKwlpZiAoZXJyKQ0KKwkJZ290byBvdXQ7DQorDQor
CS8qIEdldCB0aGUgRU1EIGRlbnRyeSBmb3IgdGhlIG9sZCBwYXJlbnQgKi8N
CisJb2xkX2VtZCA9IHVtc2Rvc19nZXRfZW1kX2RlbnRyeShvbGRfZGVudHJ5
LT5kX3BhcmVudCk7DQorCXJldCA9IFBUUl9FUlIob2xkX2VtZCk7DQorCWlm
IChJU19FUlIob2xkX2VtZCkpDQorCQlnb3RvIG91dDsNCisNCisJdW1zZG9z
X2xvY2tjcmVhdGUyIChvbGRfZGlyLCBuZXdfZGlyKTsNCisNCisJcmV0ID0g
dW1zZG9zX2ZpbmRlbnRyeShvbGRfZW1kLT5kX3BhcmVudCwgJm9sZF9pbmZv
LCAwKTsNCisJaWYgKHJldCkNCisJCWdvdG8gb3V0X3VubG9jazsNCisNCisJ
ZXJyID0gdW1zZG9zX2ZpbmRlbnRyeShuZXdfZGVudHJ5LT5kX3BhcmVudCwg
Jm5ld19pbmZvLCAwKTsNCisJaWYgKGVyciA9PSAwKSB7DQorCQkvKiBib2d1
cyBsb29rdXA/IGNvbXBsYWluIGFuZCBmaXggdXAgdGhlIEVNRCAuLi4gKi8N
CisJCXByaW50ayhLRVJOX1dBUk5JTkcNCisJCQkidW1zZG9zX3JlbmFtZV9m
OiBlbnRyeSAlcy8lcyBleGlzdHMsIGlub2RlIE5VTEw/P1xuIiwNCisJCQlu
ZXdfZGVudHJ5LT5kX3BhcmVudC0+ZF9uYW1lLm5hbWUsIG5ld19pbmZvLmVu
dHJ5Lm5hbWUpOw0KKwkJZXJyID0gdW1zZG9zX2RlbGVudHJ5KG5ld19kZW50
cnktPmRfcGFyZW50LCAmbmV3X2luZm8sIDEpOw0KKwl9DQorDQorCXVtc2Rv
c19yZW5faW5pdCAoJm5ld19pbmZvLCAmb2xkX2luZm8pOw0KKwlpZiAoZmxh
Z3MpDQorCQluZXdfaW5mby5lbnRyeS5mbGFncyA9IGZsYWdzOw0KKwlyZXQg
PSB1bXNkb3NfbmV3ZW50cnkgKG5ld19kZW50cnktPmRfcGFyZW50LCAmbmV3
X2luZm8pOw0KKwlpZiAocmV0KQ0KKwkJZ290byBvdXRfdW5sb2NrOw0KKw0K
KwlvbGQgPSB1bXNkb3NfbG9va3VwX2RlbnRyeShvbGRfZGVudHJ5LT5kX3Bh
cmVudCwgb2xkX2luZm8uZmFrZS5mbmFtZSwgDQorCQkJCQlvbGRfaW5mby5m
YWtlLmxlbiwgMSk7DQorCXJldCA9IFBUUl9FUlIob2xkKTsNCisJaWYgKElT
X0VSUihvbGQpKQ0KKwkJZ290byBvdXRfdW5sb2NrOw0KKwkvKiBzaG9ydCBh
bmQgbG9uZyBuYW1lIGRlbnRyaWVzIG1hdGNoPyAqLw0KKwlpZiAob2xkID09
IG9sZF9kZW50cnkpDQorCQlkcHV0KG9sZCk7DQorCWVsc2Ugew0KKwkJLyog
bWFrZSBzdXJlIGl0J3MgdGhlIHNhbWUgaW5vZGUhICovDQorCQlyZXQgPSAt
RU5PRU5UOw0KKwkJaWYgKG9sZC0+ZF9pbm9kZSAhPSBvbGRfaW5vZGUpDQor
CQkJZ290byBvdXRfZHB1dDsNCisJfQ0KKw0KKwluZXcgPSB1bXNkb3NfbG9v
a3VwX2RlbnRyeShuZXdfZGVudHJ5LT5kX3BhcmVudCwgbmV3X2luZm8uZmFr
ZS5mbmFtZSwgDQorCQkJCQluZXdfaW5mby5mYWtlLmxlbiwgMSk7DQorCXJl
dCA9IFBUUl9FUlIobmV3KTsNCisJaWYgKElTX0VSUihuZXcpKQ0KKwkJZ290
byBvdXRfZHB1dDsNCisJaWYgKG5ldyA9PSBuZXdfZGVudHJ5KQ0KKwkJZHB1
dChuZXcpOw0KKwllbHNlDQorCQlkX2Ryb3AobmV3KTsNCisNCisJLyogRG8g
dGhlIG1zZG9zLWxldmVsIHJlbmFtZSAqLw0KKwlyZXQgPSBtc2Rvc19yZW5h
bWUgKG9sZF9kaXIsIG9sZCwgbmV3X2RpciwgbmV3KTsNCisNCisJaWYgKG5l
dyAhPSBuZXdfZGVudHJ5KQ0KKwkJZHB1dChuZXcpOw0KKw0KKwkvKiBJZiB0
aGUgcmVuYW1lIGZhaWxlZCwgcmVtb3ZlIHRoZSBuZXcgRU1EIGVudHJ5ICov
DQorCWlmIChyZXQgIT0gMCkgew0KKwkJdW1zZG9zX2RlbGVudHJ5IChuZXdf
ZGVudHJ5LT5kX3BhcmVudCwgJm5ld19pbmZvLDEpOw0KKwkJZ290byBvdXRf
ZHB1dDsNCisJfQ0KKw0KKwkvKg0KKwkgKiBSZW5hbWUgc3VjY2Vzc2Z1bCAu
Li4gcmVtb3ZlIHRoZSBvbGQgbmFtZSBmcm9tIHRoZSBFTUQuDQorCSAqIE5v
dGUgdGhhdCB3ZSB1c2UgdGhlIEVNRCBwYXJlbnQgaGVyZSwgYXMgdGhlIG9s
ZCBkZW50cnkNCisJICogbWF5IGhhdmUgbW92ZWQgdG8gYSBuZXcgcGFyZW50
IC4uLg0KKwkgKi8NCisJZXJyID0gdW1zZG9zX2RlbGVudHJ5IChvbGRfZW1k
LT5kX3BhcmVudCwgJm9sZF9pbmZvLCAxKTsNCisJaWYgKGVycikgew0KKwkJ
LyogRmFpbGVkPyBDb21wbGFpbiBhIGJpdCwgYnV0IGRvbid0IGZhaWwgdGhl
IG9wZXJhdGlvbiAqLw0KKwkJcHJpbnRrKEtFUk5fV0FSTklORyANCisJCQki
dW1zZG9zX3JlbmFtZV9mOiBkZWxlbnRyeSAlcy8lcyBmYWlsZWQsIGVycm9y
PSVkXG4iLA0KKwkJCW9sZF9lbWQtPmRfcGFyZW50LT5kX25hbWUubmFtZSwg
b2xkX2luZm8uZW50cnkubmFtZSwNCisJCQllcnIpOw0KKwl9DQorDQorCS8q
DQorCSAqIFVwZGF0ZSBmX3BvcyBzbyBub3RpZnlfY2hhbmdlIHdpbGwgc3Vj
Y2VlZA0KKwkgKiBpZiB0aGUgZmlsZSB3YXMgYWxyZWFkeSBpbiB1c2UuDQor
CSAqLw0KKw0KKwlvbGRfaW5vZGUtPnUudW1zZG9zX2kuaV9lbWRfb3duZXIg
PSAwOw0KKwlvbGRfaW5vZGUtPnUudW1zZG9zX2kucG9zID0gbmV3X2luZm8u
Zl9wb3M7DQorDQorCS8qIG5vdyBjaGVjayB0aGUgRU1EIGZpbGUgKi8NCisJ
ZGVtZCA9IHVtc2Rvc19nZXRfZW1kX2RlbnRyeShuZXdfZGVudHJ5LT5kX3Bh
cmVudCk7DQorCWlmICghSVNfRVJSKGRlbWQpKSB7DQorCQlpZiAoZGVtZC0+
ZF9pbm9kZSkNCisJCQlvbGRfaW5vZGUtPnUudW1zZG9zX2kuaV9lbWRfb3du
ZXIgPSBkZW1kLT5kX2lub2RlLT5pX2lubzsNCisJCWRwdXQoZGVtZCk7DQor
CX0NCisNCisJLyogZHB1dCgpIHRoZSBkZW50cnkgaWYgd2UgaGF2ZW4ndCBh
bHJlYWR5ICovDQorb3V0X2RwdXQ6DQorCWlmIChvbGRfZGVudHJ5ICE9IG9s
ZCkNCisJCWRwdXQob2xkKTsNCisNCitvdXRfdW5sb2NrOg0KKwlkcHV0KG9s
ZF9lbWQpOw0KKwl1bXNkb3NfdW5sb2NrY3JlYXRlIChvbGRfZGlyKTsNCisJ
dW1zZG9zX3VubG9ja2NyZWF0ZSAobmV3X2Rpcik7DQorDQorb3V0Og0KKwly
ZXR1cm4gcmV0Ow0KK30NCiANCiAvKg0KICAqIFNldHVwIGEgU3ltYm9saWMg
bGluayBvciBhIChwc2V1ZG8pIGhhcmQgbGluaw0KQEAgLTEyNjgsMTggKzEz
NjUsMjggQEANCiAJaWYgKHJldCkNCiAJCWdvdG8gb3V0Ow0KIA0KLQkvKg0K
LQkgKiBJZiB0aGUgdGFyZ2V0IGFscmVhZHkgZXhpc3RzLCBkZWxldGUgaXQg
Zmlyc3QuDQotCSAqLw0KLQlpZiAobmV3X2RlbnRyeS0+ZF9pbm9kZSkgew0K
LQkJaWYgKFNfSVNESVIobmV3X2RlbnRyeS0+ZF9pbm9kZS0+aV9tb2RlKSkN
CisJaWYgKFNfSVNESVIob2xkX2RlbnRyeS0+ZF9pbm9kZS0+aV9tb2RlKSkg
ew0KKwkJLyoNCisJCSAqIElmIHRoZSB0YXJnZXQgYWxyZWFkeSBleGlzdHMs
IGRlbGV0ZSBpdCBmaXJzdC4NCisJCSAqLw0KKwkJaWYgKG5ld19kZW50cnkt
PmRfaW5vZGUpIHsNCisJCQluZXdfZGVudHJ5LT5kX2NvdW50Kys7DQogCQkJ
cmV0ID0gVU1TRE9TX3JtZGlyIChuZXdfZGlyLCBuZXdfZGVudHJ5KTsNCi0J
CWVsc2UNCi0JCQlyZXQgPSBVTVNET1NfdW5saW5rIChuZXdfZGlyLCBuZXdf
ZGVudHJ5KTsNCisJCQlkcHV0KG5ld19kZW50cnkpOw0KKwkJCWlmIChyZXQp
DQorCQkJCXJldHVybiByZXQ7DQorCQl9DQorCQlkX2RlbGV0ZShuZXdfZGVu
dHJ5KTsNCisJCXJldCA9IHVtc2Rvc19yZW5hbWVfZChvbGRfZGlyLCBvbGRf
ZGVudHJ5LCBuZXdfZGlyLCBuZXdfZGVudHJ5LCAwKTsNCisJCXJldHVybiBy
ZXQ7DQorCX0gDQorDQorDQorCWlmIChuZXdfZGVudHJ5LT5kX2lub2RlKSB7
DQorCQlyZXQgPSBVTVNET1NfdW5saW5rIChuZXdfZGlyLCBuZXdfZGVudHJ5
KTsNCiAJCWlmIChyZXQpDQogCQkJZ290byBvdXQ7DQogCX0NCi0NCiAJLyoN
CiAJICogSWYgd2UgZGlkbid0IGdldCBhIG5lZ2F0aXZlIGRlbnRyeSwgbWFr
ZSBhIGNvcHkgYW5kIGhhc2ggaXQuDQogCSAqLw0KZGlmZiAtdXJOIGxpbnV4
LTIuMi4yLXByZTIvZnMvdmZhdC9uYW1laS5jIGxpbnV4LmJpcmQucmVuYW1l
L2ZzL3ZmYXQvbmFtZWkuYw0KLS0tIGxpbnV4LTIuMi4yLXByZTIvZnMvdmZh
dC9uYW1laS5jCVR1ZSBGZWIgIDkgMTA6MTc6MTYgMTk5OQ0KKysrIGxpbnV4
LmJpcmQucmVuYW1lL2ZzL3ZmYXQvbmFtZWkuYwlUdWUgRmViICA5IDAwOjU4
OjU1IDE5OTkNCkBAIC0xNTcwLDE0ICsxNTcwLDYgQEANCiAJCSBvbGRfZGVu
dHJ5LCBvbGRfZGVudHJ5LT5kX2lub2RlLCBvbGRfZGVudHJ5LT5kX2lub2Rl
LT5pX2lubywNCiAJCSBuZXdfZGVudHJ5LCBuZXdfZGVudHJ5LT5kX2lub2Rl
LA0KIAkJIG5ld19kZW50cnktPmRfaW5vZGUgPyBuZXdfZGVudHJ5LT5kX2lu
b2RlLT5pX2lubyA6IDApKTsNCi0JLyoNCi0JICogUE9TSVggaXMgYnJhaW5k
ZWFkIChzdXJwcmlzZSwgc3VycHJpc2UpLiBJdCByZXF1aXJlcyB0aGF0IHJl
bmFtZSgpDQotCSAqIHNob3VsZCByZXR1cm4gMCBhbmQgZG8gbm90aGluZyBp
ZiB0aGUgdGFyZ2V0IGhhcyB0aGUgc2FtZSBpbm9kZSBhcw0KLQkgKiB0aGUg
c291cmNlLiBTb21lYm9keSwgZ2V0IGEgdGltZSBtYWNoaW5lLCByZXR1cm4g
dG8gJzg5IGFuZCB0ZWxsDQotCSAqIFJNUyAmIENvICpub3QqIHRvIGRvIHRo
YXQgaWRpb2N5LCBGQVNUIQ0KLQkgKi8NCi0JaWYgKG9sZF9kZW50cnktPmRf
aW5vZGUgPT0gbmV3X2RlbnRyeS0+ZF9pbm9kZSkNCi0JCXJldHVybiAwOw0K
IA0KIAlvbGRfYmggPSBuZXdfYmggPSBOVUxMOw0KIAlvbGRfaW5vZGUgPSBu
ZXdfaW5vZGUgPSBOVUxMOw0KQEAgLTE1OTcsMTYgKzE1ODksOCBAQA0KIAlv
bGRfaW5vZGUgPSBvbGRfZGVudHJ5LT5kX2lub2RlOw0KIAlpc19kaXIgPSBT
X0lTRElSKG9sZF9pbm9kZS0+aV9tb2RlKTsNCiANCi0JLyoNCi0JICogUmFj
ZTogd2UgY2FuIGJlIGhpdCBieSBhbm90aGVyIHJlbmFtZSBhZnRlciB0aGlz
IGNoZWNrLg0KLQkgKiBGb3IgdGhlIHRpbWUgYmVpbmcgdXNlIGZhdF9sb2Nr
X2NyZWF0aW9uKCksIGJ1dCBpdCdzDQotCSAqIHVnbHkuIEZJWE1FLg0KLQkg
Ki8NCi0NCi0JZmF0X2xvY2tfY3JlYXRpb24oKTsgbG9ja2VkID0gMTsNCi0N
CiAJaWYgKGlzX2Rpcikgew0KLQkJLyogV2UgY2FuJ3QgdXNlIGRfc3ViZGly
KCkgaGVyZS4gQXJyZ2guICovDQorCQkvKiBXZSBjYW4ndCB1c2UgaXNfc3Vi
ZGlyKCkgaGVyZS4gRXZlbiBub3cuIEFycmdoLiAqLw0KIAkJZm9yICh3YWxr
PW5ld19kZW50cnk7d2FsayE9d2Fsay0+ZF9wYXJlbnQ7d2Fsaz13YWxrLT5k
X3BhcmVudCkgew0KIAkJCWlmICh3YWxrLT5kX2lub2RlICE9IG9sZF9kZW50
cnktPmRfaW5vZGUpDQogCQkJCWNvbnRpbnVlOw0KQEAgLTE2MTUsNiArMTU5
OSw4IEBADQogCQl9DQogCX0NCiANCisJZmF0X2xvY2tfY3JlYXRpb24oKTsg
bG9ja2VkID0gMTsNCisNCiAJaWYgKG5ld19kZW50cnktPmRfaW5vZGUpIHsN
CiAJCS8qDQogCQkgKiBPSywgd2UgaGF2ZSB0byByZW1vdmUgdGhlIHRhcmdl
dC4gV2Ugc2hvdWxkIGRvIGl0IHNvDQpAQCAtMTYzOSw4ICsxNjI1LDYgQEAN
CiAJCQkgKiBiZSB0b2xlcmF0ZWQuDQogCQkJICovDQogCQkJcmVzID0gLUVC
VVNZOw0KLQkJCWlmIChkX2ludmFsaWRhdGUobmV3X2RlbnRyeSkgPCAwKQ0K
LQkJCQlnb3RvIHJlbmFtZV9kb25lOw0KIAkJCS8qDQogCQkJICogT0ssIGxl
dCdzIHRyeSB0byBnZXQgcmlkIG9mIG90aGVyIGRlbnRyaWVzLg0KIAkJCSAq
IE5vIG5lZWQgdG8gZG8gaXQgaWYgaV9jb3VudCBpcyAxLg0KQEAgLTE3Mjcs
OSArMTcxMSw5IEBADQogCX0NCiANCiAJaWYgKHJlcyA+PSAwKSB7DQotCQlp
ZiAobmV3X2lub2RlICYmIGlzX2RpcikNCi0JCQlkX3JlaGFzaChuZXdfZGVu
dHJ5KTsNCi0JCWRfbW92ZShvbGRfZGVudHJ5LCBuZXdfZGVudHJ5KTsNCisJ
CWlmICghaXNfZGlyKSB7DQorCQkJZF9tb3ZlKG9sZF9kZW50cnksIG5ld19k
ZW50cnkpOw0KKwkJfQ0KIAkJcmVzID0gMDsNCiAJfQ0KIA0KZGlmZiAtdXJO
IGxpbnV4LTIuMi4yLXByZTIvaW5jbHVkZS9saW51eC9leHQyX2ZzX3NiLmgg
bGludXguYmlyZC5yZW5hbWUvaW5jbHVkZS9saW51eC9leHQyX2ZzX3NiLmgN
Ci0tLSBsaW51eC0yLjIuMi1wcmUyL2luY2x1ZGUvbGludXgvZXh0Ml9mc19z
Yi5oCVR1ZSBGZWIgIDkgMTA6MTc6MjMgMTk5OQ0KKysrIGxpbnV4LmJpcmQu
cmVuYW1lL2luY2x1ZGUvbGludXgvZXh0Ml9mc19zYi5oCVR1ZSBGZWIgIDkg
MDc6NDc6MTQgMTk5OQ0KQEAgLTQ5LDggKzQ5LDYgQEANCiAJc3RydWN0IGJ1
ZmZlcl9oZWFkICogc19pbm9kZV9iaXRtYXBbRVhUMl9NQVhfR1JPVVBfTE9B
REVEXTsNCiAJdW5zaWduZWQgbG9uZyBzX2Jsb2NrX2JpdG1hcF9udW1iZXJb
RVhUMl9NQVhfR1JPVVBfTE9BREVEXTsNCiAJc3RydWN0IGJ1ZmZlcl9oZWFk
ICogc19ibG9ja19iaXRtYXBbRVhUMl9NQVhfR1JPVVBfTE9BREVEXTsNCi0J
aW50IHNfcmVuYW1lX2xvY2s7DQotCXN0cnVjdCB3YWl0X3F1ZXVlICogc19y
ZW5hbWVfd2FpdDsNCiAJdW5zaWduZWQgbG9uZyAgc19tb3VudF9vcHQ7DQog
CXVuc2lnbmVkIHNob3J0IHNfcmVzdWlkOw0KIAl1bnNpZ25lZCBzaG9ydCBz
X3Jlc2dpZDsNCmRpZmYgLXVyTiBsaW51eC0yLjIuMi1wcmUyL2luY2x1ZGUv
bGludXgvZnMuaCBsaW51eC5iaXJkLnJlbmFtZS9pbmNsdWRlL2xpbnV4L2Zz
LmgNCi0tLSBsaW51eC0yLjIuMi1wcmUyL2luY2x1ZGUvbGludXgvZnMuaAlU
dWUgRmViICA5IDEwOjE3OjIyIDE5OTkNCisrKyBsaW51eC5iaXJkLnJlbmFt
ZS9pbmNsdWRlL2xpbnV4L2ZzLmgJVHVlIEZlYiAgOSAwNzo0NzoxNCAxOTk5
DQpAQCAtNTU2LDYgKzU1NiwxMSBAQA0KIAkJc3RydWN0IHFueDRfc2JfaW5m
bwlxbng0X3NiOwkgICANCiAJCXZvaWQJCQkqZ2VuZXJpY19zYnA7DQogCX0g
dTsNCisJLyoNCisJICogVGhlIG5leHQgZmllbGQgaXMgZm9yIFZGUyAqb25s
eSouIE5vIGZpbGVzeXN0ZW1zIGhhdmUgYW55IGJ1c2luZXNzDQorCSAqIGV2
ZW4gbG9va2luZyBhdCBpdC4gWW91IGhhZCBiZWVuIHdhcm5lZC4NCisJICov
DQorCXN0cnVjdCBzZW1hcGhvcmUgc192ZnNfcmVuYW1lX3NlbTsJLyogS2x1
ZGdlICovDQogfTsNCiANCiAvKg0KZGlmZiAtdXJOIGxpbnV4LTIuMi4yLXBy
ZTIvaW5jbHVkZS9saW51eC91ZnNfZnMuaCBsaW51eC5iaXJkLnJlbmFtZS9p
bmNsdWRlL2xpbnV4L3Vmc19mcy5oDQotLS0gbGludXgtMi4yLjItcHJlMi9p
bmNsdWRlL2xpbnV4L3Vmc19mcy5oCVR1ZSBGZWIgIDkgMTA6MTc6MjMgMTk5
OQ0KKysrIGxpbnV4LmJpcmQucmVuYW1lL2luY2x1ZGUvbGludXgvdWZzX2Zz
LmgJVHVlIEZlYiAgOSAwNzo0NzoxNCAxOTk5DQpAQCAtMjAzLDcgKzIwMyw3
IEBADQogI2RlZmluZQlVRlNfTUFYTkFNTEVOIDI1NQ0KICNkZWZpbmUgVUZT
X01BWE1OVExFTiA1MTINCiAjZGVmaW5lIFVGU19NQVhDU0JVRlMgMzENCi0j
ZGVmaW5lIFVGU19MSU5LX01BWCBFWFQyX0xJTktfTUFYDQorI2RlZmluZSBV
RlNfTElOS19NQVggMzIwMDANCiANCiAvKg0KICAqIFVGU19ESVJfUEFEIGRl
ZmluZXMgdGhlIGRpcmVjdG9yeSBlbnRyaWVzIGJvdW5kYXJpZXMNCmRpZmYg
LXVyTiBsaW51eC0yLjIuMi1wcmUyL2luY2x1ZGUvbGludXgvdWZzX2ZzX3Ni
LmggbGludXguYmlyZC5yZW5hbWUvaW5jbHVkZS9saW51eC91ZnNfZnNfc2Iu
aA0KLS0tIGxpbnV4LTIuMi4yLXByZTIvaW5jbHVkZS9saW51eC91ZnNfZnNf
c2IuaAlUdWUgRmViICA5IDEwOjE3OjIzIDE5OTkNCisrKyBsaW51eC5iaXJk
LnJlbmFtZS9pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oCVR1ZSBGZWIgIDkg
MDc6NDc6MTQgMTk5OQ0KQEAgLTExNiw4ICsxMTYsNiBAQA0KIHN0cnVjdCB1
ZnNfc2JfaW5mbyB7DQogCXN0cnVjdCB1ZnNfc2JfcHJpdmF0ZV9pbmZvICog
c191c3BpOwkNCiAJc3RydWN0IHVmc19jc3VtCSogc19jc3BbVUZTX01BWENT
QlVGU107DQotCWludCBzX3JlbmFtZV9sb2NrOw0KLQlzdHJ1Y3Qgd2FpdF9x
dWV1ZSAqIHNfcmVuYW1lX3dhaXQ7DQogCXVuc2lnbmVkIHNfc3dhYjsNCiAJ
dW5zaWduZWQgc19mbGFnczsNCiAJc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNf
dWNnOw0K
---559023410-1804928587-918575861=:15410--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/