[patch] pagecache-2.3.9-E8, fixes against pre3-2.3.9

Ingo Molnar (mingo@chiara.csoma.elte.hu)
Fri, 25 Jun 1999 18:23:50 +0200 (CEST)


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.

---1247997369-1920079519-930327660=:29126
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.3.96.990625182129.29126D@chiara.csoma.elte.hu>

Linus,

the attached patch fixes all known pagecache/buffer cache related bugs in
pre3-2.3.9. It contains:

- David's Sparc DMA bugfix and page-uptodate bugfix. [i've modified his
bugfix slightly so that partial reads on 1k filesystems work correctly
too] These fixed the last, nasty 'beyond end of device' bugs.

- i reworked end_buffer_io_async() and mark_buffer_uptodate(), they were
rather redundant. mark_buffer_uptodate() does no more set the page
uptodate - this also speeds up lots of other places. Eg. what
mark_buffer_uptodate() does when called from filesystem drivers is
mostly unnecessery, metadata block's update bits is combined with
unrelated blocks, so setting the page uptodate makes no sense.

this is also a nice performance optimization, mark_buffer_uptodate() is
now nicely inlined into various filesystems - since the 'uptodate'
parameter is almost always constant.

[David also removed the reuse_list (noticed by V Ganesh), and i removed
BH_protected logic, these two were obsolete concepts.]

- to clean up some of the recent ext2fs changes and the ugly interfaces
that resulted, i changed the inode_operations API to have two bmap()
variants:

+ /*
+ * 'reading' variant of bmap. It provides a (supposedly) quick
+ * lookup of already existing blocks within an inode, 0 means
+ * a 'filesystem hole'.
+ */
+ long (*bmap) (struct inode *, long);
+ /*
+ * allocating variant of bmap. Compatible with bmap but doesnt
+ * preserve holes and is usually slower. Can signal out-of-space
+ * or other non-fatal exceptions.
+ */
+ long (*bmap_create) (struct inode *, long, int *, int *);
+

the 'normal', read-side bmap() is fast and can be heavily inlined, a good
example is ext2_bmap().

bmap_create() is a (conceptually) much heavier function, has to deal with
lots of side-effects and thus typically is not inlined and is slower as
well. It also includes fields for error code and 'new block' return codes.
The 'new block' information can be used by the generic block layer to
optimize certain things. [i'll send a separate patch that optimizes the
memset() in block_write_partial_page() and combines it with the
memcpy_from_user()]

this removed the very ugly 'create' parameter of get_fs_block(), and also
decreased the size of the call-chain within the write path and reduced the
number of parameters. block_write_partial|full_page() now depends on
bmap_create() purely - things are visibly nicer now, and the 'internal'
allocation-function-pointer passing is gone, it's now a 'public'
interface.

unfortunately this change broke 'other' filesystems again, so only the
core kernel file objects, swapping, ext2, procfs and NFSfs work. [all
tested]

- to not let yesterday's triple-indirection ext2fs bug happen again, i
cleaned up much of ext2_bmap_create() [formerly ext2_get_block], so it's
now i think much more maintainable. I have tested it with big files and
various workloads. Again i got rid of a couple of unnecessery parameters
and ugly parameter passing.

i've tested these changes and everything is fine now - first time in 4
weeks that i cannot crash my box or corrupt files :)

-- mingo

---1247997369-1920079519-930327660=:29126
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="pagecache-2.3.9-E8"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.990625182059.29126B@chiara.csoma.elte.hu>
Content-Description:

LS0tIGxpbnV4L2ZzL3Byb2MvYXJyYXkuYy5vcmlnCUZyaSBKdW4gMjUgMTY6
MDQ6MTMgMTk5OQ0KKysrIGxpbnV4L2ZzL3Byb2MvYXJyYXkuYwlGcmkgSnVu
IDI1IDE2OjQ4OjM0IDE5OTkNCkBAIC0xNTIwLDYgKzE1MjAsNyBAQA0KIAlO
VUxMLAkJCS8qIHJlYWRsaW5rICovDQogCU5VTEwsCQkJLyogZm9sbG93X2xp
bmsgKi8NCiAJTlVMTCwJCQkvKiBibWFwICovDQorCU5VTEwsCQkJLyogYm1h
cF9jcmVhdGUgKi8NCiAJTlVMTCwJCQkvKiByZWFkcGFnZSAqLw0KIAlOVUxM
LAkJCS8qIHdyaXRlcGFnZSAqLw0KIAlOVUxMLAkJCS8qIGZsdXNocGFnZSAq
Lw0KQEAgLTE1NzEsNiArMTU3Miw3IEBADQogCU5VTEwsCQkJLyogcmVhZGxp
bmsgKi8NCiAJTlVMTCwJCQkvKiBmb2xsb3dfbGluayAqLw0KIAlOVUxMLAkJ
CS8qIGJtYXAgKi8NCisJTlVMTCwJCQkvKiBibWFwX2NyZWF0ZSAqLw0KIAlO
VUxMLAkJCS8qIHJlYWRwYWdlICovDQogCU5VTEwsCQkJLyogd3JpdGVwYWdl
ICovDQogCU5VTEwsCQkJLyogZmx1c2hwYWdlICovDQotLS0gbGludXgvZnMv
cHJvYy9yb290LmMub3JpZwlGcmkgSnVuIDI1IDE2OjA1OjAxIDE5OTkNCisr
KyBsaW51eC9mcy9wcm9jL3Jvb3QuYwlGcmkgSnVuIDI1IDE2OjQ4OjM0IDE5
OTkNCkBAIC03Miw2ICs3Miw3IEBADQogCU5VTEwsCQkJLyogcmVhZGxpbmsg
Ki8NCiAJTlVMTCwJCQkvKiBmb2xsb3dfbGluayAqLw0KIAlOVUxMLAkJCS8q
IGJtYXAgKi8NCisJTlVMTCwJCQkvKiBibWFwX2NyZWF0ZSAqLw0KIAlOVUxM
LAkJCS8qIHJlYWRwYWdlICovDQogCU5VTEwsCQkJLyogd3JpdGVwYWdlICov
DQogCU5VTEwsCQkJLyogZmx1c2hwYWdlICovDQpAQCAtOTgsNiArOTksNyBA
QA0KIAlOVUxMLAkJCS8qIHJlYWRsaW5rICovDQogCU5VTEwsCQkJLyogZm9s
bG93X2xpbmsgKi8NCiAJTlVMTCwJCQkvKiBibWFwICovDQorCU5VTEwsCQkJ
LyogYm1hcF9jcmVhdGUgKi8NCiAJTlVMTCwJCQkvKiByZWFkcGFnZSAqLw0K
IAlOVUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0KIAlOVUxMLAkJCS8qIGZsdXNo
cGFnZSAqLw0KQEAgLTE0Myw2ICsxNDUsNyBAQA0KIAlOVUxMLAkJCS8qIHJl
YWRsaW5rICovDQogCU5VTEwsCQkJLyogZm9sbG93X2xpbmsgKi8NCiAJTlVM
TCwJCQkvKiBibWFwICovDQorCU5VTEwsCQkJLyogYm1hcF9jcmVhdGUgKi8N
CiAJTlVMTCwJCQkvKiByZWFkcGFnZSAqLw0KIAlOVUxMLAkJCS8qIHdyaXRl
cGFnZSAqLw0KIAlOVUxMLAkJCS8qIGZsdXNocGFnZSAqLw0KQEAgLTMwMyw2
ICszMDYsNyBAQA0KIAlOVUxMLAkJCS8qIHJlYWRsaW5rICovDQogCU5VTEws
CQkJLyogZm9sbG93X2xpbmsgKi8NCiAJTlVMTCwJCQkvKiBibWFwICovDQor
CU5VTEwsCQkJLyogYm1hcF9jcmVhdGUgKi8NCiAJTlVMTCwJCQkvKiByZWFk
cGFnZSAqLw0KIAlOVUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0KIAlOVUxMLAkJ
CS8qIGZsdXNocGFnZSAqLw0KQEAgLTQ5MSw2ICs0OTUsNyBAQA0KIAlwcm9j
X3NlbGZfcmVhZGxpbmssCS8qIHJlYWRsaW5rICovDQogCXByb2Nfc2VsZl9m
b2xsb3dfbGluaywJLyogZm9sbG93X2xpbmsgKi8NCiAJTlVMTCwJCQkvKiBi
bWFwICovDQorCU5VTEwsCQkJLyogYm1hcF9jcmVhdGUgKi8NCiAJTlVMTCwJ
CQkvKiByZWFkcGFnZSAqLw0KIAlOVUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0K
IAlOVUxMLAkJCS8qIGZsdXNocGFnZSAqLw0KQEAgLTUxNCw2ICs1MTksNyBA
QA0KIAlwcm9jX3JlYWRsaW5rLAkJLyogcmVhZGxpbmsgKi8NCiAJcHJvY19m
b2xsb3dfbGluaywJLyogZm9sbG93X2xpbmsgKi8NCiAJTlVMTCwJCQkvKiBi
bWFwICovDQorCU5VTEwsCQkJLyogYm1hcF9jcmVhdGUgKi8NCiAJTlVMTCwJ
CQkvKiByZWFkcGFnZSAqLw0KIAlOVUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0K
IAlOVUxMLAkJCS8qIGZsdXNocGFnZSAqLw0KLS0tIGxpbnV4L2ZzL3Byb2Mv
bWVtLmMub3JpZwlGcmkgSnVuIDI1IDE2OjQyOjU5IDE5OTkNCisrKyBsaW51
eC9mcy9wcm9jL21lbS5jCUZyaSBKdW4gMjUgMTY6NDg6MzQgMTk5OQ0KQEAg
LTMzNyw2ICszMzcsNyBAQA0KIAlOVUxMLAkJCS8qIHJlYWRsaW5rICovDQog
CU5VTEwsCQkJLyogZm9sbG93X2xpbmsgKi8NCiAJTlVMTCwJCQkvKiBibWFw
ICovDQorCU5VTEwsCQkJLyogYm1hcF9jcmVhdGUgKi8NCiAJTlVMTCwJCQkv
KiByZWFkcGFnZSAqLw0KIAlOVUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0KIAlO
VUxMLAkJCS8qIGZsdXNocGFnZSAqLw0KLS0tIGxpbnV4L2ZzL3Byb2MvYmFz
ZS5jLm9yaWcJRnJpIEp1biAyNSAxNDowNTo1NyAxOTk5DQorKysgbGludXgv
ZnMvcHJvYy9iYXNlLmMJRnJpIEp1biAyNSAxNjo0ODozNCAxOTk5DQpAQCAt
NDYsNiArNDYsNyBAQA0KIAlOVUxMLAkJCS8qIHJlYWRsaW5rICovDQogCU5V
TEwsCQkJLyogZm9sbG93X2xpbmsgKi8NCiAJTlVMTCwJCQkvKiBibWFwICov
DQorCU5VTEwsCQkJLyogYm1hcF9jcmVhdGUgKi8NCiAJTlVMTCwJCQkvKiBy
ZWFkcGFnZSAqLw0KIAlOVUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0KIAlOVUxM
LAkJCS8qIGZsdXNocGFnZSAqLw0KLS0tIGxpbnV4L2ZzL3Byb2MvZmQuYy5v
cmlnCUZyaSBKdW4gMjUgMTQ6MDU6NTcgMTk5OQ0KKysrIGxpbnV4L2ZzL3By
b2MvZmQuYwlGcmkgSnVuIDI1IDE2OjQ4OjM0IDE5OTkNCkBAIC01Miw2ICs1
Miw3IEBADQogCU5VTEwsCQkJLyogcmVhZGxpbmsgKi8NCiAJTlVMTCwJCQkv
KiBmb2xsb3dfbGluayAqLw0KIAlOVUxMLAkJCS8qIGJtYXAgKi8NCisJTlVM
TCwJCQkvKiBibWFwX2NyZWF0ZSAqLw0KIAlOVUxMLAkJCS8qIHJlYWRwYWdl
ICovDQogCU5VTEwsCQkJLyogd3JpdGVwYWdlICovDQogCU5VTEwsCQkJLyog
Zmx1c2hwYWdlICovDQotLS0gbGludXgvZnMvcHJvYy9nZW5lcmljLmMub3Jp
ZwlGcmkgSnVuIDI1IDE0OjA1OjU3IDE5OTkNCisrKyBsaW51eC9mcy9wcm9j
L2dlbmVyaWMuYwlGcmkgSnVuIDI1IDE2OjQ4OjM1IDE5OTkNCkBAIC02MSw2
ICs2MSw3IEBADQogCU5VTEwsCQkvKiByZWFkbGluawkqLw0KIAlOVUxMLAkJ
LyogZm9sbG93X2xpbmsgCSovDQogCU5VTEwsCQkvKiBibWFwIAkqLw0KKwlO
VUxMLAkJLyogYm1hcF9jcmVhdGUgCSovDQogCU5VTEwsCQkvKiByZWFkcGFn
ZSAJKi8NCiAJTlVMTCwJCS8qIHdyaXRlcGFnZSAJKi8NCiAJTlVMTCwJCS8q
IGZsdXNocGFnZSAJKi8NCkBAIC04Nyw2ICs4OCw3IEBADQogCU5VTEwsCQkJ
LyogcmVhZGxpbmsgKi8NCiAJTlVMTCwJCQkvKiBmb2xsb3dfbGluayAqLw0K
IAlOVUxMLAkJCS8qIGJtYXAgKi8NCisJTlVMTCwJCQkvKiBibWFwX2NyZWF0
ZSAqLw0KIAlOVUxMLAkJCS8qIHJlYWRwYWdlICovDQogCU5VTEwsCQkJLyog
d3JpdGVwYWdlICovDQogCU5VTEwsCQkJLyogZmx1c2hwYWdlICovDQotLS0g
bGludXgvZnMvcHJvYy9rbXNnLmMub3JpZwlGcmkgSnVuIDI1IDE0OjA1OjU3
IDE5OTkNCisrKyBsaW51eC9mcy9wcm9jL2ttc2cuYwlGcmkgSnVuIDI1IDE2
OjQ4OjM1IDE5OTkNCkBAIC03Myw2ICs3Myw3IEBADQogCU5VTEwsCQkJLyog
cmVhZGxpbmsgKi8NCiAJTlVMTCwJCQkvKiBmb2xsb3dfbGluayAqLw0KIAlO
VUxMLAkJCS8qIGJtYXAgKi8NCisJTlVMTCwJCQkvKiBibWFwX2NyZWF0ZSAq
Lw0KIAlOVUxMLAkJCS8qIHJlYWRwYWdlICovDQogCU5VTEwsCQkJLyogd3Jp
dGVwYWdlICovDQogCU5VTEwsCQkJLyogZmx1c2hwYWdlICovDQotLS0gbGlu
dXgvZnMvcHJvYy9saW5rLmMub3JpZwlGcmkgSnVuIDI1IDE0OjA1OjU3IDE5
OTkNCisrKyBsaW51eC9mcy9wcm9jL2xpbmsuYwlGcmkgSnVuIDI1IDE2OjQ4
OjM1IDE5OTkNCkBAIC01MCw2ICs1MCw3IEBADQogCXByb2NfcmVhZGxpbmss
CQkvKiByZWFkbGluayAqLw0KIAlwcm9jX2ZvbGxvd19saW5rLAkvKiBmb2xs
b3dfbGluayAqLw0KIAlOVUxMLAkJCS8qIGJtYXAgKi8NCisJTlVMTCwJCQkv
KiBibWFwX2NyZWF0ZSAqLw0KIAlOVUxMLAkJCS8qIHJlYWRwYWdlICovDQog
CU5VTEwsCQkJLyogd3JpdGVwYWdlICovDQogCU5VTEwsCQkJLyogZmx1c2hw
YWdlICovDQotLS0gbGludXgvZnMvcHJvYy9uZXQuYy5vcmlnCUZyaSBKdW4g
MjUgMTQ6MDU6NTcgMTk5OQ0KKysrIGxpbnV4L2ZzL3Byb2MvbmV0LmMJRnJp
IEp1biAyNSAxNjo0ODozNSAxOTk5DQpAQCAtMTE0LDYgKzExNCw3IEBADQog
CU5VTEwsCQkJLyogcmVhZGxpbmsgKi8NCiAJTlVMTCwJCQkvKiBmb2xsb3df
bGluayAqLw0KIAlOVUxMLAkJCS8qIGJtYXAgKi8NCisJTlVMTCwJCQkvKiBi
bWFwX2NyZWF0ZSAqLw0KIAlOVUxMLAkJCS8qIHJlYWRwYWdlICovDQogCU5V
TEwsCQkJLyogd3JpdGVwYWdlICovDQogCU5VTEwsCQkJLyogZmx1c2hwYWdl
ICovDQotLS0gbGludXgvZnMvcHJvYy9vbWlyci5jLm9yaWcJRnJpIEp1biAy
NSAxNDowNTo1NyAxOTk5DQorKysgbGludXgvZnMvcHJvYy9vbWlyci5jCUZy
aSBKdW4gMjUgMTY6NDg6MzUgMTk5OQ0KQEAgLTI5MCw2ICsyOTAsNyBAQA0K
IAlOVUxMLAkJCS8qIHJlYWRsaW5rICovDQogCU5VTEwsCQkJLyogZm9sbG93
X2xpbmsgKi8NCiAJTlVMTCwJCQkvKiBibWFwICovDQorCU5VTEwsCQkJLyog
Ym1hcF9jcmVhdGUgKi8NCiAJTlVMTCwJCQkvKiByZWFkcGFnZSAqLw0KIAlO
VUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0KIAlOVUxMLAkJCS8qIGZsdXNocGFn
ZSAqLw0KLS0tIGxpbnV4L2ZzL3Byb2Mvb3BlbnByb21mcy5jLm9yaWcJRnJp
IEp1biAyNSAxNDowNTo1NyAxOTk5DQorKysgbGludXgvZnMvcHJvYy9vcGVu
cHJvbWZzLmMJRnJpIEp1biAyNSAxNjo0ODozNSAxOTk5DQpAQCAtNTc4LDYg
KzU3OCw3IEBADQogCU5VTEwsCQkJLyogcmVhZGxpbmsgKi8NCiAJTlVMTCwJ
CQkvKiBmb2xsb3dfbGluayAqLw0KIAlOVUxMLAkJCS8qIGJtYXAgKi8NCisJ
TlVMTCwJCQkvKiBibWFwX2NyZWF0ZSAqLw0KIAlOVUxMLAkJCS8qIHJlYWRw
YWdlICovDQogCU5VTEwsCQkJLyogd3JpdGVwYWdlICovDQogCU5VTEwsCQkJ
LyogZmx1c2hwYWdlICovDQpAQCAtNjE1LDYgKzYxNiw3IEBADQogCU5VTEws
CQkJLyogcmVhZGxpbmsgKi8NCiAJTlVMTCwJCQkvKiBmb2xsb3dfbGluayAq
Lw0KIAlOVUxMLAkJCS8qIGJtYXAgKi8NCisJTlVMTCwJCQkvKiBibWFwX2Ny
ZWF0ZSAqLw0KIAlOVUxMLAkJCS8qIHJlYWRwYWdlICovDQogCU5VTEwsCQkJ
Lyogd3JpdGVwYWdlICovDQogCU5VTEwsCQkJLyogZmx1c2hwYWdlICovDQpA
QCAtNjUyLDYgKzY1NCw3IEBADQogCU5VTEwsCQkJLyogcmVhZGxpbmsgKi8N
CiAJTlVMTCwJCQkvKiBmb2xsb3dfbGluayAqLw0KIAlOVUxMLAkJCS8qIGJt
YXAgKi8NCisJTlVMTCwJCQkvKiBibWFwX2NyZWF0ZSAqLw0KIAlOVUxMLAkJ
CS8qIHJlYWRwYWdlICovDQogCU5VTEwsCQkJLyogd3JpdGVwYWdlICovDQog
CU5VTEwsCQkJLyogZmx1c2hwYWdlICovDQotLS0gbGludXgvZnMvcHJvYy9w
cm9jX2RldnRyZWUuYy5vcmlnCUZyaSBKdW4gMjUgMTQ6MDU6NTcgMTk5OQ0K
KysrIGxpbnV4L2ZzL3Byb2MvcHJvY19kZXZ0cmVlLmMJRnJpIEp1biAyNSAx
Njo0ODozNSAxOTk5DQpAQCAtNTgsNiArNTgsNyBAQA0KIAlkZXZ0cmVlX3Jl
YWRsaW5rLAkvKiByZWFkbGluayAqLw0KIAlkZXZ0cmVlX2ZvbGxvd19saW5r
LAkvKiBmb2xsb3dfbGluayAqLw0KIAlOVUxMLAkJCS8qIGJtYXAgKi8NCisJ
TlVMTCwJCQkvKiBibWFwX2NyZWF0ZSAqLw0KIAlOVUxMLAkJCS8qIHJlYWRw
YWdlICovDQogCU5VTEwsCQkJLyogd3JpdGVwYWdlICovDQogCU5VTEwsCQkJ
LyogZmx1c2hwYWdlICovDQotLS0gbGludXgvZnMvcHJvYy9zY3NpLmMub3Jp
ZwlGcmkgSnVuIDI1IDE0OjA1OjU3IDE5OTkNCisrKyBsaW51eC9mcy9wcm9j
L3Njc2kuYwlGcmkgSnVuIDI1IDE2OjQ4OjM1IDE5OTkNCkBAIC03Miw2ICs3
Miw3IEBADQogCU5VTEwsCSAgICAJCS8qIHJlYWRsaW5rICovDQogCU5VTEws
CSAgICAJCS8qIGZvbGxvd19saW5rICovDQogCU5VTEwsCQkJLyogYm1hcCAq
Lw0KKwlOVUxMLAkJCS8qIGJtYXBfY3JlYXRlICovDQogCU5VTEwsCQkJLyog
cmVhZHBhZ2UgKi8NCiAJTlVMTCwJCQkvKiB3cml0ZXBhZ2UgKi8NCiAJTlVM
TCwJCQkvKiBmbHVzaHBhZ2UgKi8NCi0tLSBsaW51eC9mcy9wcm9jL3N5c3Zp
cGMuYy5vcmlnCUZyaSBKdW4gMjUgMTQ6MDU6NTcgMTk5OQ0KKysrIGxpbnV4
L2ZzL3Byb2Mvc3lzdmlwYy5jCUZyaSBKdW4gMjUgMTY6NDg6MzUgMTk5OQ0K
QEAgLTEzMSw2ICsxMzEsNyBAQA0KIAlOVUxMLAkJCS8qIHJlYWRsaW5rICov
DQogCU5VTEwsCQkJLyogZm9sbG93X2xpbmsgKi8NCiAJTlVMTCwJCQkvKiBi
bWFwICovDQorCU5VTEwsCQkJLyogYm1hcF9jcmVhdGUgKi8NCiAJTlVMTCwJ
CQkvKiByZWFkcGFnZSAqLw0KIAlOVUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0K
IAlOVUxMLAkJCS8qIGZsdXNocGFnZSAqLw0KLS0tIGxpbnV4L2ZzL25mcy9k
aXIuYy5vcmlnCUZyaSBKdW4gMjUgMTQ6MDU6MjIgMTk5OQ0KKysrIGxpbnV4
L2ZzL25mcy9kaXIuYwlGcmkgSnVuIDI1IDE2OjQ4OjM1IDE5OTkNCkBAIC03
OSw2ICs3OSw3IEBADQogCU5VTEwsCQkJLyogcmVhZGxpbmsgKi8NCiAJTlVM
TCwJCQkvKiBmb2xsb3dfbGluayAqLw0KIAlOVUxMLAkJCS8qIGJtYXAgKi8N
CisJTlVMTCwJCQkvKiBibWFwX2NyZWF0ZSAqLw0KIAlOVUxMLAkJCS8qIHJl
YWRwYWdlICovDQogCU5VTEwsCQkJLyogd3JpdGVwYWdlICovDQogCU5VTEws
CQkJLyogZmx1c2hwYWdlICovDQotLS0gbGludXgvZnMvbmZzL3N5bWxpbmsu
Yy5vcmlnCUZyaSBKdW4gMjUgMTQ6MDU6MjggMTk5OQ0KKysrIGxpbnV4L2Zz
L25mcy9zeW1saW5rLmMJRnJpIEp1biAyNSAxNjo0ODozNSAxOTk5DQpAQCAt
NDQsNiArNDQsNyBAQA0KIAluZnNfcmVhZGxpbmssCQkvKiByZWFkbGluayAq
Lw0KIAluZnNfZm9sbG93X2xpbmssCS8qIGZvbGxvd19saW5rICovDQogCU5V
TEwsCQkJLyogYm1hcCAqLw0KKwlOVUxMLAkJCS8qIGJtYXBfY3JlYXRlICov
DQogCU5VTEwsCQkJLyogcmVhZHBhZ2UgKi8NCiAJTlVMTCwJCQkvKiB3cml0
ZXBhZ2UgKi8NCiAJTlVMTCwJCQkvKiBmbHVzaHBhZ2UgKi8NCi0tLSBsaW51
eC9mcy9uZnMvZmlsZS5jLm9yaWcJRnJpIEp1biAyNSAxMDo0Mjo0MCAxOTk5
DQorKysgbGludXgvZnMvbmZzL2ZpbGUuYwlGcmkgSnVuIDI1IDE2OjQ4OjM1
IDE5OTkNCkBAIC03Miw2ICs3Miw3IEBADQogCU5VTEwsCQkJLyogcmVhZGxp
bmsgKi8NCiAJTlVMTCwJCQkvKiBmb2xsb3dfbGluayAqLw0KIAlOVUxMLAkJ
CS8qIGJtYXAgKi8NCisJTlVMTCwJCQkvKiBibWFwX2NyZWF0ZSAqLw0KIAlu
ZnNfcmVhZHBhZ2UsCQkvKiByZWFkcGFnZSAqLw0KIAluZnNfd3JpdGVwYWdl
LAkJLyogd3JpdGVwYWdlICovDQogCU5VTEwsCQkJLyogZmx1c2hwYWdlICov
DQpAQCAtMTY3LDcgKzE2OCw3IEBADQogICogSWYgdGhlIHdyaXRlciBlbmRz
IHVwIGRlbGF5aW5nIHRoZSB3cml0ZSwgdGhlIHdyaXRlciBuZWVkcyB0bw0K
ICAqIGluY3JlbWVudCB0aGUgcGFnZSB1c2UgY291bnRzIHVudGlsIGhlIGlz
IGRvbmUgd2l0aCB0aGUgcGFnZS4NCiAgKi8NCi1zdGF0aWMgbG9uZyBuZnNf
d3JpdGVfb25lX3BhZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBwYWdl
ICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBi
eXRlcywgY29uc3QgY2hhciAqIGJ1ZikNCitzdGF0aWMgaW50IG5mc193cml0
ZV9vbmVfcGFnZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBhZ2UgKnBh
Z2UsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGJ5dGVz
LCBjb25zdCBjaGFyICogYnVmKQ0KIHsNCiAJbG9uZyBzdGF0dXM7DQogDQot
LS0gbGludXgvZnMvZXh0Mi9pbm9kZS5jLm9yaWcJRnJpIEp1biAyNSAwOToz
MjozMSAxOTk5DQorKysgbGludXgvZnMvZXh0Mi9pbm9kZS5jCUZyaSBKdW4g
MjUgMTY6NDg6MzUgMTk5OQ0KQEAgLTEzMCwxMSArMTMwLDExIEBADQogfQ0K
IA0KIA0KLWludCBleHQyX2JtYXAgKHN0cnVjdCBpbm9kZSAqIGlub2RlLCBp
bnQgYmxvY2spDQorbG9uZyBleHQyX2JtYXAgKHN0cnVjdCBpbm9kZSAqIGlu
b2RlLCBsb25nIGJsb2NrKQ0KIHsNCiAJaW50IGksIHJldDsNCi0JaW50IGFk
ZHJfcGVyX2Jsb2NrID0gRVhUMl9BRERSX1BFUl9CTE9DSyhpbm9kZS0+aV9z
Yik7DQotCWludCBhZGRyX3Blcl9ibG9ja19iaXRzID0gRVhUMl9BRERSX1BF
Ul9CTE9DS19CSVRTKGlub2RlLT5pX3NiKTsNCisJaW50IHB0cnMgPSBFWFQy
X0FERFJfUEVSX0JMT0NLKGlub2RlLT5pX3NiKTsNCisJaW50IHB0cnNfYml0
cyA9IEVYVDJfQUREUl9QRVJfQkxPQ0tfQklUUyhpbm9kZS0+aV9zYik7DQog
DQogCXJldCA9IDA7DQogCWxvY2tfa2VybmVsKCk7DQpAQCAtMTQyLDkgKzE0
Miw5IEBADQogCQlleHQyX3dhcm5pbmcgKGlub2RlLT5pX3NiLCAiZXh0Ml9i
bWFwIiwgImJsb2NrIDwgMCIpOw0KIAkJZ290byBvdXQ7DQogCX0NCi0JaWYg
KGJsb2NrID49IEVYVDJfTkRJUl9CTE9DS1MgKyBhZGRyX3Blcl9ibG9jayAr
DQotCQkoMSA8PCAoYWRkcl9wZXJfYmxvY2tfYml0cyAqIDIpKSArDQotCQko
KDEgPDwgKGFkZHJfcGVyX2Jsb2NrX2JpdHMgKiAyKSkgPDwgYWRkcl9wZXJf
YmxvY2tfYml0cykpIHsNCisJaWYgKGJsb2NrID49IEVYVDJfTkRJUl9CTE9D
S1MgKyBwdHJzICsNCisJCSgxIDw8IChwdHJzX2JpdHMgKiAyKSkgKw0KKwkJ
KCgxIDw8IChwdHJzX2JpdHMgKiAyKSkgPDwgcHRyc19iaXRzKSkgew0KIAkJ
ZXh0Ml93YXJuaW5nIChpbm9kZS0+aV9zYiwgImV4dDJfYm1hcCIsICJibG9j
ayA+IGJpZyIpOw0KIAkJZ290byBvdXQ7DQogCX0NCkBAIC0xNTMsNyArMTUz
LDcgQEANCiAJCWdvdG8gb3V0Ow0KIAl9DQogCWJsb2NrIC09IEVYVDJfTkRJ
Ul9CTE9DS1M7DQotCWlmIChibG9jayA8IGFkZHJfcGVyX2Jsb2NrKSB7DQor
CWlmIChibG9jayA8IHB0cnMpIHsNCiAJCWkgPSBpbm9kZV9ibWFwIChpbm9k
ZSwgRVhUMl9JTkRfQkxPQ0spOw0KIAkJaWYgKCFpKQ0KIAkJCWdvdG8gb3V0
Ow0KQEAgLTE2MSwxMjMgKzE2MSw2NCBAQA0KIAkJCQkJICBpbm9kZS0+aV9z
Yi0+c19ibG9ja3NpemUpLCBibG9jayk7DQogCQlnb3RvIG91dDsNCiAJfQ0K
LQlibG9jayAtPSBhZGRyX3Blcl9ibG9jazsNCi0JaWYgKGJsb2NrIDwgKDEg
PDwgKGFkZHJfcGVyX2Jsb2NrX2JpdHMgKiAyKSkpIHsNCisJYmxvY2sgLT0g
cHRyczsNCisJaWYgKGJsb2NrIDwgKDEgPDwgKHB0cnNfYml0cyAqIDIpKSkg
ew0KIAkJaSA9IGlub2RlX2JtYXAgKGlub2RlLCBFWFQyX0RJTkRfQkxPQ0sp
Ow0KIAkJaWYgKCFpKQ0KIAkJCWdvdG8gb3V0Ow0KIAkJaSA9IGJsb2NrX2Jt
YXAgKGJyZWFkIChpbm9kZS0+aV9kZXYsIGksDQogCQkJCSAgICAgICBpbm9k
ZS0+aV9zYi0+c19ibG9ja3NpemUpLA0KLQkJCQlibG9jayA+PiBhZGRyX3Bl
cl9ibG9ja19iaXRzKTsNCisJCQkJYmxvY2sgPj4gcHRyc19iaXRzKTsNCiAJ
CWlmICghaSkNCiAJCQlnb3RvIG91dDsNCiAJCXJldCA9IGJsb2NrX2JtYXAg
KGJyZWFkIChpbm9kZS0+aV9kZXYsIGksDQogCQkJCQkgIGlub2RlLT5pX3Ni
LT5zX2Jsb2Nrc2l6ZSksDQotCQkJCWJsb2NrICYgKGFkZHJfcGVyX2Jsb2Nr
IC0gMSkpOw0KKwkJCQlibG9jayAmIChwdHJzIC0gMSkpOw0KIAkJZ290byBv
dXQ7DQogCX0NCi0JYmxvY2sgLT0gKDEgPDwgKGFkZHJfcGVyX2Jsb2NrX2Jp
dHMgKiAyKSk7DQorCWJsb2NrIC09ICgxIDw8IChwdHJzX2JpdHMgKiAyKSk7
DQogCWkgPSBpbm9kZV9ibWFwIChpbm9kZSwgRVhUMl9USU5EX0JMT0NLKTsN
CiAJaWYgKCFpKQ0KIAkJZ290byBvdXQ7DQogCWkgPSBibG9ja19ibWFwIChi
cmVhZCAoaW5vZGUtPmlfZGV2LCBpLCBpbm9kZS0+aV9zYi0+c19ibG9ja3Np
emUpLA0KLQkJCWJsb2NrID4+IChhZGRyX3Blcl9ibG9ja19iaXRzICogMikp
Ow0KKwkJCWJsb2NrID4+IChwdHJzX2JpdHMgKiAyKSk7DQogCWlmICghaSkN
CiAJCWdvdG8gb3V0Ow0KIAlpID0gYmxvY2tfYm1hcCAoYnJlYWQgKGlub2Rl
LT5pX2RldiwgaSwgaW5vZGUtPmlfc2ItPnNfYmxvY2tzaXplKSwNCi0JCQko
YmxvY2sgPj4gYWRkcl9wZXJfYmxvY2tfYml0cykgJiAoYWRkcl9wZXJfYmxv
Y2sgLSAxKSk7DQorCQkJKGJsb2NrID4+IHB0cnNfYml0cykgJiAocHRycyAt
IDEpKTsNCiAJaWYgKCFpKQ0KIAkJZ290byBvdXQ7DQogCXJldCA9IGJsb2Nr
X2JtYXAgKGJyZWFkIChpbm9kZS0+aV9kZXYsIGksIGlub2RlLT5pX3NiLT5z
X2Jsb2Nrc2l6ZSksDQotCQkJICAgYmxvY2sgJiAoYWRkcl9wZXJfYmxvY2sg
LSAxKSk7DQorCQkJICAgYmxvY2sgJiAocHRycyAtIDEpKTsNCiBvdXQ6DQog
CXVubG9ja19rZXJuZWwoKTsNCiAJcmV0dXJuIHJldDsNCiB9DQogDQotaW50
IGV4dDJfYm1hcF9jcmVhdGUgKHN0cnVjdCBpbm9kZSAqIGlub2RlLCBpbnQg
YmxvY2spDQotew0KLQlpbnQgaTsNCi0JaW50IGFkZHJfcGVyX2Jsb2NrID0g
RVhUMl9BRERSX1BFUl9CTE9DSyhpbm9kZS0+aV9zYik7DQotCWludCBhZGRy
X3Blcl9ibG9ja19iaXRzID0gRVhUMl9BRERSX1BFUl9CTE9DS19CSVRTKGlu
b2RlLT5pX3NiKTsNCi0NCi0JaWYgKGJsb2NrIDwgMCkgew0KLQkJZXh0Ml93
YXJuaW5nIChpbm9kZS0+aV9zYiwgImV4dDJfYm1hcCIsICJibG9jayA8IDAi
KTsNCi0JCXJldHVybiAwOw0KLQl9DQotCWlmIChibG9jayA+PSBFWFQyX05E
SVJfQkxPQ0tTICsgYWRkcl9wZXJfYmxvY2sgKw0KLQkJKDEgPDwgKGFkZHJf
cGVyX2Jsb2NrX2JpdHMgKiAyKSkgKw0KLQkJKCgxIDw8IChhZGRyX3Blcl9i
bG9ja19iaXRzICogMikpIDw8IGFkZHJfcGVyX2Jsb2NrX2JpdHMpKSB7DQot
CQlleHQyX3dhcm5pbmcgKGlub2RlLT5pX3NiLCAiZXh0Ml9ibWFwIiwgImJs
b2NrID4gYmlnIik7DQotCQlyZXR1cm4gMDsNCi0JfQ0KLQlpZiAoYmxvY2sg
PCBFWFQyX05ESVJfQkxPQ0tTKQ0KLQkJcmV0dXJuIGlub2RlX2JtYXAgKGlu
b2RlLCBibG9jayk7DQotCWJsb2NrIC09IEVYVDJfTkRJUl9CTE9DS1M7DQot
CWlmIChibG9jayA8IGFkZHJfcGVyX2Jsb2NrKSB7DQotCQlpID0gaW5vZGVf
Ym1hcCAoaW5vZGUsIEVYVDJfSU5EX0JMT0NLKTsNCi0JCWlmICghaSkNCi0J
CQlyZXR1cm4gMDsNCi0JCXJldHVybiBibG9ja19ibWFwIChicmVhZCAoaW5v
ZGUtPmlfZGV2LCBpLA0KLQkJCQkJICBpbm9kZS0+aV9zYi0+c19ibG9ja3Np
emUpLCBibG9jayk7DQotCX0NCi0JYmxvY2sgLT0gYWRkcl9wZXJfYmxvY2s7
DQotCWlmIChibG9jayA8ICgxIDw8IChhZGRyX3Blcl9ibG9ja19iaXRzICog
MikpKSB7DQotCQlpID0gaW5vZGVfYm1hcCAoaW5vZGUsIEVYVDJfRElORF9C
TE9DSyk7DQotCQlpZiAoIWkpDQotCQkJcmV0dXJuIDA7DQotCQlpID0gYmxv
Y2tfYm1hcCAoYnJlYWQgKGlub2RlLT5pX2RldiwgaSwNCi0JCQkJICAgICAg
IGlub2RlLT5pX3NiLT5zX2Jsb2Nrc2l6ZSksDQotCQkJCWJsb2NrID4+IGFk
ZHJfcGVyX2Jsb2NrX2JpdHMpOw0KLQkJaWYgKCFpKQ0KLQkJCXJldHVybiAw
Ow0KLQkJcmV0dXJuIGJsb2NrX2JtYXAgKGJyZWFkIChpbm9kZS0+aV9kZXYs
IGksDQotCQkJCQkgIGlub2RlLT5pX3NiLT5zX2Jsb2Nrc2l6ZSksDQotCQkJ
CSAgIGJsb2NrICYgKGFkZHJfcGVyX2Jsb2NrIC0gMSkpOw0KLQl9DQotCWJs
b2NrIC09ICgxIDw8IChhZGRyX3Blcl9ibG9ja19iaXRzICogMikpOw0KLQlp
ID0gaW5vZGVfYm1hcCAoaW5vZGUsIEVYVDJfVElORF9CTE9DSyk7DQotCWlm
ICghaSkNCi0JCXJldHVybiAwOw0KLQlpID0gYmxvY2tfYm1hcCAoYnJlYWQg
KGlub2RlLT5pX2RldiwgaSwgaW5vZGUtPmlfc2ItPnNfYmxvY2tzaXplKSwN
Ci0JCQlibG9jayA+PiAoYWRkcl9wZXJfYmxvY2tfYml0cyAqIDIpKTsNCi0J
aWYgKCFpKQ0KLQkJcmV0dXJuIDA7DQotCWkgPSBibG9ja19ibWFwIChicmVh
ZCAoaW5vZGUtPmlfZGV2LCBpLCBpbm9kZS0+aV9zYi0+c19ibG9ja3NpemUp
LA0KLQkJCShibG9jayA+PiBhZGRyX3Blcl9ibG9ja19iaXRzKSAmIChhZGRy
X3Blcl9ibG9jayAtIDEpKTsNCi0JaWYgKCFpKQ0KLQkJcmV0dXJuIDA7DQot
CXJldHVybiBibG9ja19ibWFwIChicmVhZCAoaW5vZGUtPmlfZGV2LCBpLCBp
bm9kZS0+aV9zYi0+c19ibG9ja3NpemUpLA0KLQkJCSAgIGJsb2NrICYgKGFk
ZHJfcGVyX2Jsb2NrIC0gMSkpOw0KLX0NCi0NCiBzdGF0aWMgc3RydWN0IGJ1
ZmZlcl9oZWFkICogaW5vZGVfZ2V0YmxrIChzdHJ1Y3QgaW5vZGUgKiBpbm9k
ZSwgaW50IG5yLA0KLQlpbnQgY3JlYXRlLCBpbnQgbmV3X2Jsb2NrLCBpbnQg
KiBlcnIsIGludCBtZXRhZGF0YSwNCi0JaW50ICpwaHlzX2Jsb2NrLCBpbnQg
KmNyZWF0ZWQpDQorCWludCBuZXdfYmxvY2ssIGludCAqIGVyciwgaW50IG1l
dGFkYXRhLCBsb25nICpwaHlzLCBpbnQgKm5ldykNCiB7DQogCXUzMiAqIHA7
DQogCWludCB0bXAsIGdvYWwgPSAwOw0KIAlzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiByZXN1bHQ7DQotCWludCBibG9ja3MgPSBpbm9kZS0+aV9zYi0+c19ibG9j
a3NpemUgLyA1MTI7DQorCWludCBibG9ja3NpemUgPSBpbm9kZS0+aV9zYi0+
c19ibG9ja3NpemU7DQogDQogCXAgPSBpbm9kZS0+dS5leHQyX2kuaV9kYXRh
ICsgbnI7DQogcmVwZWF0Og0KIAl0bXAgPSBsZTMyX3RvX2NwdSgqcCk7DQog
CWlmICh0bXApIHsNCiAJCWlmIChtZXRhZGF0YSkgew0KLQkJCXN0cnVjdCBi
dWZmZXJfaGVhZCAqIHJlc3VsdCA9IGdldGJsayAoaW5vZGUtPmlfZGV2LCB0
bXAsIGlub2RlLT5pX3NiLT5zX2Jsb2Nrc2l6ZSk7DQorCQkJcmVzdWx0ID0g
Z2V0YmxrIChpbm9kZS0+aV9kZXYsIHRtcCwgYmxvY2tzaXplKTsNCiAJCQlp
ZiAodG1wID09IGxlMzJfdG9fY3B1KCpwKSkNCiAJCQkJcmV0dXJuIHJlc3Vs
dDsNCiAJCQlicmVsc2UgKHJlc3VsdCk7DQogCQkJZ290byByZXBlYXQ7DQog
CQl9IGVsc2Ugew0KLQkJCSpwaHlzX2Jsb2NrID0gdG1wOw0KKwkJCSpwaHlz
ID0gdG1wOw0KIAkJCXJldHVybiBOVUxMOw0KIAkJfQ0KIAl9DQogCSplcnIg
PSAtRUZCSUc7DQotCWlmICghY3JlYXRlKQ0KLQkJZ290byBkb250X2NyZWF0
ZTsNCiANCiAJLyogQ2hlY2sgZmlsZSBsaW1pdHMuLiAqLw0KIAl7DQpAQCAt
Mjg2LDcgKzIyNyw2IEBADQogCQkJbGltaXQgPj49IEVYVDJfQkxPQ0tfU0la
RV9CSVRTKGlub2RlLT5pX3NiKTsNCiAJCQlpZiAobmV3X2Jsb2NrID49IGxp
bWl0KSB7DQogCQkJCXNlbmRfc2lnKFNJR1hGU1osIGN1cnJlbnQsIDApOw0K
LWRvbnRfY3JlYXRlOg0KIAkJCQkqZXJyID0gLUVGQklHOw0KIAkJCQlyZXR1
cm4gTlVMTDsNCiAJCQl9DQpAQCAtMzE0LDM0ICsyNTQsNDEgQEANCiAJZXh0
Ml9kZWJ1ZyAoImdvYWwgPSAlZC5cbiIsIGdvYWwpOw0KIA0KIAl0bXAgPSBl
eHQyX2FsbG9jX2Jsb2NrIChpbm9kZSwgZ29hbCwgZXJyKTsNCi0JaWYgKCF0
bXApDQorCWlmICghdG1wKSB7DQorCQkqZXJyID0gLUVOT1NQQzsNCiAJCXJl
dHVybiBOVUxMOw0KKwl9DQogCWlmIChtZXRhZGF0YSkgew0KLQkJcmVzdWx0
ID0gZ2V0YmxrIChpbm9kZS0+aV9kZXYsIHRtcCwgaW5vZGUtPmlfc2ItPnNf
YmxvY2tzaXplKTsNCisJCXJlc3VsdCA9IGdldGJsayAoaW5vZGUtPmlfZGV2
LCB0bXAsIGJsb2Nrc2l6ZSk7DQogCQlpZiAoKnApIHsNCiAJCQlleHQyX2Zy
ZWVfYmxvY2tzIChpbm9kZSwgdG1wLCAxKTsNCiAJCQlicmVsc2UgKHJlc3Vs
dCk7DQogCQkJZ290byByZXBlYXQ7DQogCQl9DQotCQltZW1zZXQocmVzdWx0
LT5iX2RhdGEsIDAsIGlub2RlLT5pX3NiLT5zX2Jsb2Nrc2l6ZSk7DQorCQlt
ZW1zZXQocmVzdWx0LT5iX2RhdGEsIDAsIGJsb2Nrc2l6ZSk7DQogCQltYXJr
X2J1ZmZlcl91cHRvZGF0ZShyZXN1bHQsIDEpOw0KIAkJbWFya19idWZmZXJf
ZGlydHkocmVzdWx0LCAxKTsNCiAJfSBlbHNlIHsNCiAJCWlmICgqcCkgew0K
KwkJCS8qDQorCQkJICogTm9ib2R5IGlzIGFsbG93ZWQgdG8gY2hhbmdlIGJs
b2NrIGFsbG9jYXRpb24NCisJCQkgKiBzdGF0ZSB1bmRlciB1czoNCisJCQkg
Ki8NCisJCQlCVUcoKTsNCiAJCQlleHQyX2ZyZWVfYmxvY2tzIChpbm9kZSwg
dG1wLCAxKTsNCiAJCQlnb3RvIHJlcGVhdDsNCiAJCX0NCi0JCSpwaHlzX2Js
b2NrID0gdG1wOw0KKwkJKnBoeXMgPSB0bXA7DQogCQlyZXN1bHQgPSBOVUxM
Ow0KIAkJKmVyciA9IDA7DQotCQkqY3JlYXRlZCA9IDE7DQorCQkqbmV3ID0g
MTsNCiAJfQ0KIAkqcCA9IGNwdV90b19sZTMyKHRtcCk7DQogDQogCWlub2Rl
LT51LmV4dDJfaS5pX25leHRfYWxsb2NfYmxvY2sgPSBuZXdfYmxvY2s7DQog
CWlub2RlLT51LmV4dDJfaS5pX25leHRfYWxsb2NfZ29hbCA9IHRtcDsNCiAJ
aW5vZGUtPmlfY3RpbWUgPSBDVVJSRU5UX1RJTUU7DQotCWlub2RlLT5pX2Js
b2NrcyArPSBibG9ja3M7DQorCWlub2RlLT5pX2Jsb2NrcyArPSBibG9ja3Np
emUvNTEyOw0KIAlpZiAoSVNfU1lOQyhpbm9kZSkgfHwgaW5vZGUtPnUuZXh0
Ml9pLmlfb3N5bmMpDQogCQlleHQyX3N5bmNfaW5vZGUgKGlub2RlKTsNCiAJ
ZWxzZQ0KQEAgLTM1OCwyNCArMzA1LDIzIEBADQogICogICBOVUxMIHJldHVy
biBpbiB0aGUgZGF0YSBjYXNlIGlzIG1hbmRhdG9yeS4NCiAgKi8NCiBzdGF0
aWMgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmxvY2tfZ2V0YmxrIChzdHJ1Y3Qg
aW5vZGUgKiBpbm9kZSwNCi0JICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwg
aW50IG5yLCBpbnQgY3JlYXRlLCBpbnQgYmxvY2tzaXplLCANCi0JICBpbnQg
bmV3X2Jsb2NrLCBpbnQgKiBlcnIsIGludCBtZXRhZGF0YSwgaW50ICpwaHlz
X2Jsb2NrLCBpbnQgKmNyZWF0ZWQpDQorCSAgc3RydWN0IGJ1ZmZlcl9oZWFk
ICogYmgsIGludCBuciwNCisJICBpbnQgbmV3X2Jsb2NrLCBpbnQgKiBlcnIs
IGludCBtZXRhZGF0YSwgbG9uZyAqcGh5cywgaW50ICpuZXcpDQogew0KIAlp
bnQgdG1wLCBnb2FsID0gMDsNCiAJdTMyICogcDsNCiAJc3RydWN0IGJ1ZmZl
cl9oZWFkICogcmVzdWx0Ow0KLQlpbnQgYmxvY2tzID0gaW5vZGUtPmlfc2It
PnNfYmxvY2tzaXplIC8gNTEyOw0KKwlpbnQgYmxvY2tzaXplID0gaW5vZGUt
Pmlfc2ItPnNfYmxvY2tzaXplOw0KIAl1bnNpZ25lZCBsb25nIGxpbWl0Ow0K
LQkNCisNCisJcmVzdWx0ID0gTlVMTDsJDQogCWlmICghYmgpDQotCQlyZXR1
cm4gTlVMTDsNCisJCWdvdG8gb3V0Ow0KIAlpZiAoIWJ1ZmZlcl91cHRvZGF0
ZShiaCkpIHsNCiAJCWxsX3J3X2Jsb2NrIChSRUFELCAxLCAmYmgpOw0KIAkJ
d2FpdF9vbl9idWZmZXIgKGJoKTsNCi0JCWlmICghYnVmZmVyX3VwdG9kYXRl
KGJoKSkgew0KLQkJCWJyZWxzZSAoYmgpOw0KLQkJCXJldHVybiBOVUxMOw0K
LQkJfQ0KKwkJaWYgKCFidWZmZXJfdXB0b2RhdGUoYmgpKQ0KKwkJCWdvdG8g
b3V0Ow0KIAl9DQogCXAgPSAodTMyICopIGJoLT5iX2RhdGEgKyBucjsNCiBy
ZXBlYXQ6DQpAQCAtMzgzLDMxICszMjksMjQgQEANCiAJaWYgKHRtcCkgew0K
IAkJaWYgKG1ldGFkYXRhKSB7DQogCQkJcmVzdWx0ID0gZ2V0YmxrIChiaC0+
Yl9kZXYsIHRtcCwgYmxvY2tzaXplKTsNCi0JCQlpZiAodG1wID09IGxlMzJf
dG9fY3B1KCpwKSkgew0KLQkJCQlicmVsc2UgKGJoKTsNCi0JCQkJcmV0dXJu
IHJlc3VsdDsNCi0JCQl9DQorCQkJaWYgKHRtcCA9PSBsZTMyX3RvX2NwdSgq
cCkpDQorCQkJCWdvdG8gb3V0Ow0KIAkJCWJyZWxzZSAocmVzdWx0KTsNCiAJ
CQlnb3RvIHJlcGVhdDsNCiAJCX0gZWxzZSB7DQotCQkJKnBoeXNfYmxvY2sg
PSB0bXA7DQotCQkJYnJlbHNlIChiaCk7DQotCQkJcmV0dXJuIE5VTEw7DQor
CQkJKnBoeXMgPSB0bXA7DQorCQkJLyogcmVzdWx0ID09IE5VTEwgKi8NCisJ
CQlnb3RvIG91dDsNCiAJCX0NCiAJfQ0KIAkqZXJyID0gLUVGQklHOw0KLQlp
ZiAoIWNyZWF0ZSkgew0KLQkJYnJlbHNlIChiaCk7DQotCQlyZXR1cm4gTlVM
TDsNCi0JfQ0KIA0KIAlsaW1pdCA9IGN1cnJlbnQtPnJsaW1bUkxJTUlUX0ZT
SVpFXS5ybGltX2N1cjsNCiAJaWYgKGxpbWl0IDwgUkxJTV9JTkZJTklUWSkg
ew0KIAkJbGltaXQgPj49IEVYVDJfQkxPQ0tfU0laRV9CSVRTKGlub2RlLT5p
X3NiKTsNCiAJCWlmIChuZXdfYmxvY2sgPj0gbGltaXQpIHsNCi0JCQlicmVs
c2UgKGJoKTsNCiAJCQlzZW5kX3NpZyhTSUdYRlNaLCBjdXJyZW50LCAwKTsN
Ci0JCQlyZXR1cm4gTlVMTDsNCisJCQlnb3RvIG91dDsNCiAJCX0NCiAJfQ0K
IA0KQEAgLTQyNCwxMCArMzYzLDggQEANCiAJCQlnb2FsID0gYmgtPmJfYmxv
Y2tucjsNCiAJfQ0KIAl0bXAgPSBleHQyX2FsbG9jX2Jsb2NrIChpbm9kZSwg
Z29hbCwgZXJyKTsNCi0JaWYgKCF0bXApIHsNCi0JCWJyZWxzZSAoYmgpOw0K
LQkJcmV0dXJuIE5VTEw7DQotCX0NCisJaWYgKCF0bXApDQorCQlnb3RvIG91
dDsNCiAJaWYgKG1ldGFkYXRhKSB7DQogCQlyZXN1bHQgPSBnZXRibGsgKGJo
LT5iX2RldiwgdG1wLCBibG9ja3NpemUpOw0KIAkJaWYgKCpwKSB7DQpAQCAt
NDM5LDEwICszNzYsOCBAQA0KIAkJbWFya19idWZmZXJfdXB0b2RhdGUocmVz
dWx0LCAxKTsNCiAJCW1hcmtfYnVmZmVyX2RpcnR5KHJlc3VsdCwgMSk7DQog
CX0gZWxzZSB7DQotCQkqcGh5c19ibG9jayA9IHRtcDsNCi0JCXJlc3VsdCA9
IE5VTEw7DQotCQkqZXJyID0gMDsNCi0JCSpjcmVhdGVkID0gMTsNCisJCSpw
aHlzID0gdG1wOw0KKwkJKm5ldyA9IDE7DQogCX0NCiAJaWYgKCpwKSB7DQog
CQlleHQyX2ZyZWVfYmxvY2tzIChpbm9kZSwgdG1wLCAxKTsNCkBAIC00NTYs
MTE2ICszOTEsMTUyIEBADQogCQl3YWl0X29uX2J1ZmZlciAoYmgpOw0KIAl9
DQogCWlub2RlLT5pX2N0aW1lID0gQ1VSUkVOVF9USU1FOw0KLQlpbm9kZS0+
aV9ibG9ja3MgKz0gYmxvY2tzOw0KKwlpbm9kZS0+aV9ibG9ja3MgKz0gYmxv
Y2tzaXplLzUxMjsNCiAJbWFya19pbm9kZV9kaXJ0eShpbm9kZSk7DQogCWlu
b2RlLT51LmV4dDJfaS5pX25leHRfYWxsb2NfYmxvY2sgPSBuZXdfYmxvY2s7
DQogCWlub2RlLT51LmV4dDJfaS5pX25leHRfYWxsb2NfZ29hbCA9IHRtcDsN
CisJKmVyciA9IDA7DQorb3V0Og0KIAlicmVsc2UgKGJoKTsNCiAJcmV0dXJu
IHJlc3VsdDsNCiB9DQogDQotaW50IGV4dDJfZ2V0YmxrX2Jsb2NrIChzdHJ1
Y3QgaW5vZGUgKiBpbm9kZSwgbG9uZyBibG9jaywNCi0JCQkJICBpbnQgY3Jl
YXRlLCBpbnQgKiBlcnIsIGludCAqIGNyZWF0ZWQpDQorbG9uZyBleHQyX2Jt
YXBfY3JlYXRlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGlibG9jaywg
aW50ICplcnIsIGludCAqbmV3KQ0KIHsNCi0Jc3RydWN0IGJ1ZmZlcl9oZWFk
ICogYmgsICp0bXA7DQotCXVuc2lnbmVkIGxvbmcgYjsNCi0JdW5zaWduZWQg
bG9uZyBhZGRyX3Blcl9ibG9jayA9IEVYVDJfQUREUl9QRVJfQkxPQ0soaW5v
ZGUtPmlfc2IpOw0KLQlpbnQgYWRkcl9wZXJfYmxvY2tfYml0cyA9IEVYVDJf
QUREUl9QRVJfQkxPQ0tfQklUUyhpbm9kZS0+aV9zYik7DQotCWludCBwaHlz
X2Jsb2NrLCByZXQ7DQorCWludCByZXQ7DQorCXN0cnVjdCBidWZmZXJfaGVh
ZCAqYmg7DQorCXVuc2lnbmVkIGxvbmcgcHRyLCBwaHlzOw0KKwkvKg0KKwkg
KiBibG9jayBwb2ludGVycyBwZXIgYmxvY2sNCisJICovDQorCXVuc2lnbmVk
IGxvbmcgcHRycyA9IEVYVDJfQUREUl9QRVJfQkxPQ0soaW5vZGUtPmlfc2Ip
Ow0KKwlpbnQgcHRyc19iaXRzID0gRVhUMl9BRERSX1BFUl9CTE9DS19CSVRT
KGlub2RlLT5pX3NiKTsNCisJY29uc3QgaW50IGRpcmVjdF9ibG9ja3MgPSBF
WFQyX05ESVJfQkxPQ0tTLA0KKwkJaW5kaXJlY3RfYmxvY2tzID0gcHRycywN
CisJCWRvdWJsZV9ibG9ja3MgPSAoMSA8PCAocHRyc19iaXRzICogMikpLA0K
KwkJdHJpcGxlX2Jsb2NrcyA9ICgxIDw8IChwdHJzX2JpdHMgKiAzKSk7DQog
DQotCWxvY2tfa2VybmVsKCk7DQotCXJldCA9IDA7DQogCSplcnIgPSAtRUlP
Ow0KLQlpZiAoYmxvY2sgPCAwKSB7DQotCQlleHQyX3dhcm5pbmcgKGlub2Rl
LT5pX3NiLCAiZXh0Ml9nZXRibGsiLCAiYmxvY2sgPCAwIik7DQotCQlnb3Rv
IGFib3J0Ow0KLQl9DQotCWlmIChibG9jayA+IEVYVDJfTkRJUl9CTE9DS1Mg
KyBhZGRyX3Blcl9ibG9jayArDQotCQkoMSA8PCAoYWRkcl9wZXJfYmxvY2tf
Yml0cyAqIDIpKSArDQotCQkoKDEgPDwgKGFkZHJfcGVyX2Jsb2NrX2JpdHMg
KiAyKSkgPDwgYWRkcl9wZXJfYmxvY2tfYml0cykpIHsNCi0JCWV4dDJfd2Fy
bmluZyAoaW5vZGUtPmlfc2IsICJleHQyX2dldGJsayIsICJibG9jayA+IGJp
ZyIpOw0KLQkJZ290byBhYm9ydDsNCi0JfQ0KKwkqbmV3ID0gMDsNCisJcmV0
ID0gMDsNCisJYmggPSBOVUxMOw0KKw0KKwlsb2NrX2tlcm5lbCgpOw0KKw0K
KwlpZiAoaWJsb2NrIDwgMCkNCisJCWdvdG8gYWJvcnRfbmVnYXRpdmU7DQor
CWlmIChpYmxvY2sgPiBkaXJlY3RfYmxvY2tzICsgaW5kaXJlY3RfYmxvY2tz
ICsNCisJCQkJCSBkb3VibGVfYmxvY2tzICsgdHJpcGxlX2Jsb2NrcykNCisJ
CWdvdG8gYWJvcnRfdG9vX2JpZzsNCisNCiAJLyoNCiAJICogSWYgdGhpcyBp
cyBhIHNlcXVlbnRpYWwgYmxvY2sgYWxsb2NhdGlvbiwgc2V0IHRoZSBuZXh0
X2FsbG9jX2Jsb2NrDQogCSAqIHRvIHRoaXMgYmxvY2sgbm93IHNvIHRoYXQg
YWxsIHRoZSBpbmRibG9jayBhbmQgZGF0YSBibG9jaw0KIAkgKiBhbGxvY2F0
aW9ucyB1c2UgdGhlIHNhbWUgZ29hbCB6b25lDQogCSAqLw0KIA0KLQlleHQy
X2RlYnVnICgiYmxvY2sgJWx1LCBuZXh0ICVsdSwgZ29hbCAlbHUuXG4iLCBi
bG9jaywgDQorCWV4dDJfZGVidWcgKCJibG9jayAlbHUsIG5leHQgJWx1LCBn
b2FsICVsdS5cbiIsIGlibG9jaywgDQogCQkgICAgaW5vZGUtPnUuZXh0Ml9p
LmlfbmV4dF9hbGxvY19ibG9jaywNCiAJCSAgICBpbm9kZS0+dS5leHQyX2ku
aV9uZXh0X2FsbG9jX2dvYWwpOw0KIA0KLQlpZiAoYmxvY2sgPT0gaW5vZGUt
PnUuZXh0Ml9pLmlfbmV4dF9hbGxvY19ibG9jayArIDEpIHsNCisJaWYgKGli
bG9jayA9PSBpbm9kZS0+dS5leHQyX2kuaV9uZXh0X2FsbG9jX2Jsb2NrICsg
MSkgew0KIAkJaW5vZGUtPnUuZXh0Ml9pLmlfbmV4dF9hbGxvY19ibG9jaysr
Ow0KIAkJaW5vZGUtPnUuZXh0Ml9pLmlfbmV4dF9hbGxvY19nb2FsKys7DQog
CX0NCiANCi0JKmVyciA9IDA7IC8vIC1FTk9TUEM7DQotCWIgPSBibG9jazsN
Ci0JKmNyZWF0ZWQgPSAwOw0KLQlpZiAoYmxvY2sgPCBFWFQyX05ESVJfQkxP
Q0tTKSB7DQotCQkvKg0KLQkJICogZGF0YSBwYWdlLg0KLQkJICovDQotCQl0
bXAgPSBpbm9kZV9nZXRibGsgKGlub2RlLCBibG9jaywgY3JlYXRlLCBiLA0K
LQkJCQkJZXJyLCAwLCAmcGh5c19ibG9jaywgY3JlYXRlZCk7DQotCQlnb3Rv
IG91dDsNCi0JfQ0KLQlibG9jayAtPSBFWFQyX05ESVJfQkxPQ0tTOw0KLQlp
ZiAoYmxvY2sgPCBhZGRyX3Blcl9ibG9jaykgew0KLQkJYmggPSBpbm9kZV9n
ZXRibGsgKGlub2RlLCBFWFQyX0lORF9CTE9DSywgY3JlYXRlLCBiLCBlcnIs
IDEsIE5VTEwsIE5VTEwpOw0KLQkJdG1wID0gYmxvY2tfZ2V0YmxrIChpbm9k
ZSwgYmgsIGJsb2NrLCBjcmVhdGUsDQotCQkgICAgIGlub2RlLT5pX3NiLT5z
X2Jsb2Nrc2l6ZSwgYiwgZXJyLCAwLCAmcGh5c19ibG9jaywgY3JlYXRlZCk7
DQotCQlnb3RvIG91dDsNCi0JfQ0KLQlibG9jayAtPSBhZGRyX3Blcl9ibG9j
azsNCi0JaWYgKGJsb2NrIDwgKDEgPDwgKGFkZHJfcGVyX2Jsb2NrX2JpdHMg
KiAyKSkpIHsNCi0JCWJoID0gaW5vZGVfZ2V0YmxrIChpbm9kZSwgRVhUMl9E
SU5EX0JMT0NLLCBjcmVhdGUsIGIsIGVyciwgMSwgTlVMTCwgTlVMTCk7DQot
CQliaCA9IGJsb2NrX2dldGJsayAoaW5vZGUsIGJoLCBibG9jayA+PiBhZGRy
X3Blcl9ibG9ja19iaXRzLA0KLQkJCQkgICBjcmVhdGUsIGlub2RlLT5pX3Ni
LT5zX2Jsb2Nrc2l6ZSwgYiwgZXJyLCAxLCBOVUxMLCBOVUxMKTsNCi0JCXRt
cCA9IGJsb2NrX2dldGJsayAoaW5vZGUsIGJoLCBibG9jayAmIChhZGRyX3Bl
cl9ibG9jayAtIDEpLA0KLQkJICAgICBjcmVhdGUsIGlub2RlLT5pX3NiLT5z
X2Jsb2Nrc2l6ZSwgYiwgZXJyLCAwLCAmcGh5c19ibG9jaywgY3JlYXRlZCk7
DQotCQlnb3RvIG91dDsNCi0JfQ0KLQlibG9jayAtPSAoMSA8PCAoYWRkcl9w
ZXJfYmxvY2tfYml0cyAqIDIpKTsNCi0JYmggPSBpbm9kZV9nZXRibGsgKGlu
b2RlLCBFWFQyX1RJTkRfQkxPQ0ssIGNyZWF0ZSwgYiwgZXJyLCAxLCBOVUxM
LE5VTEwpOw0KLQliaCA9IGJsb2NrX2dldGJsayAoaW5vZGUsIGJoLCBibG9j
ayA+PiAoYWRkcl9wZXJfYmxvY2tfYml0cyAqIDIpLA0KLQkJCSAgIGNyZWF0
ZSwgaW5vZGUtPmlfc2ItPnNfYmxvY2tzaXplLCBiLCBlcnIsIDEsIE5VTEws
TlVMTCk7DQotCWJoID0gYmxvY2tfZ2V0YmxrIChpbm9kZSwgYmgsIChibG9j
ayA+PiBhZGRyX3Blcl9ibG9ja19iaXRzKSAmDQotCQkoYWRkcl9wZXJfYmxv
Y2sgLSAxKSwgY3JlYXRlLCBpbm9kZS0+aV9zYi0+c19ibG9ja3NpemUsDQot
CQliLCBlcnIsIDEsIE5VTEwsTlVMTCk7DQotCXRtcCA9IGJsb2NrX2dldGJs
ayAoaW5vZGUsIGJoLCBibG9jayAmIChhZGRyX3Blcl9ibG9jayAtIDEpLCBj
cmVhdGUsDQotCQlpbm9kZS0+aV9zYi0+c19ibG9ja3NpemUsIGIsIGVyciwg
MCwgJnBoeXNfYmxvY2ssIGNyZWF0ZWQpOw0KKwkqZXJyID0gMDsNCisJcHRy
ID0gaWJsb2NrOw0KKw0KKwkvKg0KKwkgKiBvaywgdGhlc2UgbWFjcm9zIGNs
ZWFuIHRoZSBsb2dpYyB1cCBhIGJpdCBhbmQgbWFrZQ0KKwkgKiBpdCBtdWNo
IG1vcmUgcmVhZGFibGU6DQorCSAqLw0KKyNkZWZpbmUgR0VUX0lOT0RFX0RB
VEFCTE9DSyh4KSBcDQorCQlpbm9kZV9nZXRibGsoaW5vZGUsIHgsIGlibG9j
aywgZXJyLCAwLCAmcGh5cywgbmV3KQ0KKyNkZWZpbmUgR0VUX0lOT0RFX1BU
Uih4KSBcDQorCQlpbm9kZV9nZXRibGsoaW5vZGUsIHgsIGlibG9jaywgZXJy
LCAxLCBOVUxMLCBOVUxMKQ0KKyNkZWZpbmUgR0VUX0lORElSRUNUX0RBVEFC
TE9DSyh4KSBcDQorCQlibG9ja19nZXRibGsgKGlub2RlLCBiaCwgeCwgaWJs
b2NrLCBlcnIsIDAsICZwaHlzLCBuZXcpOw0KKyNkZWZpbmUgR0VUX0lORElS
RUNUX1BUUih4KSBcDQorCQlibG9ja19nZXRibGsgKGlub2RlLCBiaCwgeCwg
aWJsb2NrLCBlcnIsIDEsIE5VTEwsIE5VTEwpOw0KKw0KKwlpZiAocHRyIDwg
ZGlyZWN0X2Jsb2Nrcykgew0KKwkJYmggPSBHRVRfSU5PREVfREFUQUJMT0NL
KHB0cik7DQorCQlnb3RvIG91dDsNCisJfQ0KKwlwdHIgLT0gZGlyZWN0X2Js
b2NrczsNCisJaWYgKHB0ciA8IGluZGlyZWN0X2Jsb2Nrcykgew0KKwkJYmgg
PSBHRVRfSU5PREVfUFRSKEVYVDJfSU5EX0JMT0NLKTsNCisJCWdvdG8gZ2V0
X2luZGlyZWN0Ow0KKwl9DQorCXB0ciAtPSBpbmRpcmVjdF9ibG9ja3M7DQor
CWlmIChwdHIgPCBkb3VibGVfYmxvY2tzKSB7DQorCQliaCA9IEdFVF9JTk9E
RV9QVFIoRVhUMl9ESU5EX0JMT0NLKTsNCisJCWdvdG8gZ2V0X2RvdWJsZTsN
CisJfQ0KKwlwdHIgLT0gZG91YmxlX2Jsb2NrczsNCisJYmggPSBHRVRfSU5P
REVfUFRSKEVYVDJfVElORF9CTE9DSyk7DQorCWJoID0gR0VUX0lORElSRUNU
X1BUUihwdHIgPj4gKHB0cnNfYml0cyAqIDIpKTsNCitnZXRfZG91YmxlOg0K
KwliaCA9IEdFVF9JTkRJUkVDVF9QVFIoKHB0ciA+PiBwdHJzX2JpdHMpICYg
KHB0cnMgLSAxKSk7DQorZ2V0X2luZGlyZWN0Og0KKwliaCA9IEdFVF9JTkRJ
UkVDVF9EQVRBQkxPQ0socHRyICYgKHB0cnMgLSAxKSk7DQorDQorI3VuZGVm
IEdFVF9JTk9ERV9EQVRBQkxPQ0sNCisjdW5kZWYgR0VUX0lOT0RFX1BUUg0K
KyN1bmRlZiBHRVRfSU5ESVJFQ1RfREFUQUJMT0NLDQorI3VuZGVmIEdFVF9J
TkRJUkVDVF9QVFINCiANCiBvdXQ6DQotCWlmICghcGh5c19ibG9jaykNCisJ
aWYgKGJoKQ0KKwkJQlVHKCk7CS8vIHRlbXBvcmFyeSBkZWJ1Z2dpbmcgY2hl
Y2sNCisJaWYgKCplcnIpIHsNCisJCUJVRygpOw0KIAkJZ290byBhYm9ydDsN
Ci0JaWYgKCplcnIpDQorCX0NCisJaWYgKCFwaHlzKSB7DQorCQlCVUcoKTsN
CiAJCWdvdG8gYWJvcnQ7DQotCXJldCA9IHBoeXNfYmxvY2s7DQorCX0NCisJ
cmV0ID0gcGh5czsNCiBhYm9ydDoNCiAJdW5sb2NrX2tlcm5lbCgpOw0KIAly
ZXR1cm4gcmV0Ow0KKw0KK2Fib3J0X25lZ2F0aXZlOg0KKwlleHQyX3dhcm5p
bmcgKGlub2RlLT5pX3NiLCAiZXh0Ml9ibWFwX2NyZWF0ZSIsICJibG9jayA8
IDAiKTsNCisJZ290byBhYm9ydDsNCisNCithYm9ydF90b29fYmlnOg0KKwll
eHQyX3dhcm5pbmcgKGlub2RlLT5pX3NiLCAiZXh0Ml9ibWFwX2NyZWF0ZSIs
ICJibG9jayA+IGJpZyIpOw0KKwlnb3RvIGFib3J0Ow0KIH0NCiANCiBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiBleHQyX2dldGJsayAoc3RydWN0IGlub2RlICog
aW5vZGUsIGxvbmcgYmxvY2ssDQogCQkJCSAgaW50IGNyZWF0ZSwgaW50ICog
ZXJyKQ0KIHsNCiAJc3RydWN0IGJ1ZmZlcl9oZWFkICp0bXAgPSBOVUxMOw0K
LQlpbnQgcGh5c19ibG9jazsNCi0JaW50IGNyZWF0ZWQ7DQotDQotCXBoeXNf
YmxvY2sgPSBleHQyX2dldGJsa19ibG9jayAoaW5vZGUsIGJsb2NrLCBjcmVh
dGUsIGVyciwgJmNyZWF0ZWQpOw0KKwlsb25nIHBoeXM7DQorCWludCBuZXcg
PSAwOw0KIA0KLQlpZiAocGh5c19ibG9jaykgew0KLQkJdG1wID0gZ2V0Ymxr
IChpbm9kZS0+aV9kZXYsIHBoeXNfYmxvY2ssIGlub2RlLT5pX3NiLT5zX2Js
b2Nrc2l6ZSk7DQotCQlpZiAoY3JlYXRlZCkgew0KKwlpZiAoY3JlYXRlKSB7
DQorCQlwaHlzID0gZXh0Ml9ibWFwX2NyZWF0ZSAoaW5vZGUsIGJsb2NrLCBl
cnIsICZuZXcpOw0KKwkJaWYgKCplcnIpDQorCQkJZ290byBvdXQ7DQorCX0g
ZWxzZSB7DQorCQlwaHlzID0gZXh0Ml9ibWFwIChpbm9kZSwgYmxvY2spOw0K
KwkJKmVyciA9IDA7DQorCX0NCisJCQ0KKwlpZiAocGh5cykgew0KKwkJdG1w
ID0gZ2V0YmxrIChpbm9kZS0+aV9kZXYsIHBoeXMsIGlub2RlLT5pX3NiLT5z
X2Jsb2Nrc2l6ZSk7DQorCQlpZiAobmV3KSB7DQogCQkJbWVtc2V0KHRtcC0+
Yl9kYXRhLCAwLCBpbm9kZS0+aV9zYi0+c19ibG9ja3NpemUpOw0KIAkJCW1h
cmtfYnVmZmVyX3VwdG9kYXRlKHRtcCwgMSk7DQogCQkJbWFya19idWZmZXJf
ZGlydHkodG1wLCAxKTsNCiAJCX0NCiAJfQ0KK291dDoNCiAJcmV0dXJuIHRt
cDsNCiB9DQogDQotLS0gbGludXgvZnMvZXh0Mi9maWxlLmMub3JpZwlGcmkg
SnVuIDI1IDEwOjM2OjU5IDE5OTkNCisrKyBsaW51eC9mcy9leHQyL2ZpbGUu
YwlGcmkgSnVuIDI1IDE2OjQ4OjM1IDE5OTkNCkBAIC0zNyw3ICszNyw2IEBA
DQogI2RlZmluZSBNSU4oYSxiKSAoKChhKTwoYikpPyhhKTooYikpDQogI2Rl
ZmluZSBNQVgoYSxiKSAoKChhKT4oYikpPyhhKTooYikpDQogDQotc3RhdGlj
IGludCBleHQyX3dyaXRlcGFnZSAoc3RydWN0IGZpbGUgKiBmaWxlLCBzdHJ1
Y3QgcGFnZSAqIHBhZ2UpOw0KIHN0YXRpYyBsb25nIGxvbmcgZXh0Ml9maWxl
X2xzZWVrKHN0cnVjdCBmaWxlICosIGxvbmcgbG9uZywgaW50KTsNCiAjaWYg
QklUU19QRVJfTE9ORyA8IDY0DQogc3RhdGljIGludCBleHQyX29wZW5fZmls
ZSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOw0KQEAgLTEwNiw2
MCArMTA1LDE2IEBADQogCX0NCiB9DQogDQotc3RhdGljIGludCBleHQyX2dl
dF9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIGJs
b2NrLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgdXBkYXRlKQ0KLXsN
Ci0JaWYgKCFiaC0+Yl9ibG9ja25yKSB7DQotCQlpbnQgZXJyb3IsIGNyZWF0
ZWQ7DQotCQl1bnNpZ25lZCBsb25nIGJsb2NrbnI7DQotDQotCQlibG9ja25y
ID0gZXh0Ml9nZXRibGtfYmxvY2soaW5vZGUsIGJsb2NrLCAxLCAmZXJyb3Is
ICZjcmVhdGVkKTsNCi0JCWlmICghYmxvY2tucikgew0KLQkJCWlmICghZXJy
b3IpDQotCQkJCWVycm9yID0gLUVOT1NQQzsNCi0JCQlyZXR1cm4gZXJyb3I7
DQotCQl9DQotDQotCQliaC0+Yl9kZXYgPSBpbm9kZS0+aV9kZXY7DQotCQli
aC0+Yl9ibG9ja25yID0gYmxvY2tucjsNCi0NCi0JCWlmICghdXBkYXRlKQ0K
LQkJCXJldHVybiAwOw0KLQ0KLQkJaWYgKGNyZWF0ZWQpIHsNCi0JCQltZW1z
ZXQoYmgtPmJfZGF0YSwgMCwgYmgtPmJfc2l6ZSk7DQotCQkJc2V0X2JpdChC
SF9VcHRvZGF0ZSwgJmJoLT5iX3N0YXRlKTsNCi0JCQlyZXR1cm4gMDsNCi0J
CX0NCi0JfQ0KLQ0KLQlpZiAoIXVwZGF0ZSkNCi0JCXJldHVybiAwOw0KLQ0K
LQlsb2NrX2tlcm5lbCgpOw0KLQlsbF9yd19ibG9jayhSRUFELCAxLCAmYmgp
Ow0KLQl3YWl0X29uX2J1ZmZlcihiaCk7DQotCXVubG9ja19rZXJuZWwoKTsN
Ci0NCi0JcmV0dXJuIGJ1ZmZlcl91cHRvZGF0ZShiaCkgPyAwIDogLUVJTzsN
Ci19DQotDQotc3RhdGljIGludCBleHQyX3dyaXRlcGFnZSAoc3RydWN0IGZp
bGUgKiBmaWxlLCBzdHJ1Y3QgcGFnZSAqIHBhZ2UpDQotew0KLQlyZXR1cm4g
YmxvY2tfd3JpdGVfZnVsbF9wYWdlKGZpbGUsIHBhZ2UsIGV4dDJfZ2V0X2Js
b2NrKTsNCi19DQotDQotc3RhdGljIGxvbmcgZXh0Ml93cml0ZV9vbmVfcGFn
ZSAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNp
Z25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBieXRlcywgY29uc3Qg
Y2hhciAqIGJ1ZikNCi17DQotCXJldHVybiBibG9ja193cml0ZV9wYXJ0aWFs
X3BhZ2UoZmlsZSwgcGFnZSwgb2Zmc2V0LCBieXRlcywgYnVmLCBleHQyX2dl
dF9ibG9jayk7DQotfQ0KLQ0KIC8qDQogICogV3JpdGUgdG8gYSBmaWxlICh0
aHJvdWdoIHRoZSBwYWdlIGNhY2hlKS4NCiAgKi8NCiBzdGF0aWMgc3NpemVf
dA0KIGV4dDJfZmlsZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qg
Y2hhciAqYnVmLCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykNCiB7DQot
CXNzaXplX3QgcmV0dmFsID0gZ2VuZXJpY19maWxlX3dyaXRlKGZpbGUsIGJ1
ZiwgY291bnQsIHBwb3MsIGV4dDJfd3JpdGVfb25lX3BhZ2UpOw0KKwlzc2l6
ZV90IHJldHZhbDsNCisNCisJcmV0dmFsID0gZ2VuZXJpY19maWxlX3dyaXRl
KGZpbGUsIGJ1ZiwgY291bnQsDQorCQkJCQkJIHBwb3MsIGJsb2NrX3dyaXRl
X3BhcnRpYWxfcGFnZSk7DQogCWlmIChyZXR2YWwgPiAwKSB7DQogCQlzdHJ1
Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9kZW50cnktPmRfaW5vZGU7DQog
CQlyZW1vdmVfc3VpZChpbm9kZSk7DQpAQCAtMjMzLDggKzE4OCw5IEBADQog
CU5VTEwsCQkJLyogcmVhZGxpbmsgKi8NCiAJTlVMTCwJCQkvKiBmb2xsb3df
bGluayAqLw0KIAlleHQyX2JtYXAsCQkvKiBibWFwICovDQorCWV4dDJfYm1h
cF9jcmVhdGUsCS8qIGJtYXAgKi8NCiAJYmxvY2tfcmVhZF9mdWxsX3BhZ2Us
CS8qIHJlYWRwYWdlICovDQotCWV4dDJfd3JpdGVwYWdlLAkJLyogd3JpdGVw
YWdlICovDQorCWJsb2NrX3dyaXRlX2Z1bGxfcGFnZSwJLyogd3JpdGVwYWdl
ICovDQogCWJsb2NrX2ZsdXNocGFnZSwJLyogZmx1c2hwYWdlICovDQogCWV4
dDJfdHJ1bmNhdGUsCQkvKiB0cnVuY2F0ZSAqLw0KIAlleHQyX3Blcm1pc3Np
b24sCS8qIHBlcm1pc3Npb24gKi8NCi0tLSBsaW51eC9mcy9leHQyL2Rpci5j
Lm9yaWcJRnJpIEp1biAyNSAxNDoxMjozOSAxOTk5DQorKysgbGludXgvZnMv
ZXh0Mi9kaXIuYwlGcmkgSnVuIDI1IDE2OjQ4OjM1IDE5OTkNCkBAIC02OCw2
ICs2OCw3IEBADQogCU5VTEwsCQkJLyogcmVhZGxpbmsgKi8NCiAJTlVMTCwJ
CQkvKiBmb2xsb3dfbGluayAqLw0KIAlOVUxMLAkJCS8qIGJtYXAgKi8NCisJ
TlVMTCwJCQkvKiBibWFwX2NyZWF0ZSAqLw0KIAlOVUxMLAkJCS8qIHJlYWRw
YWdlICovDQogCU5VTEwsCQkJLyogd3JpdGVwYWdlICovDQogCU5VTEwsCQkJ
LyogZmx1c2hwYWdlICovDQotLS0gbGludXgvZnMvZXh0Mi9zeW1saW5rLmMu
b3JpZwlGcmkgSnVuIDI1IDE0OjEyOjQ0IDE5OTkNCisrKyBsaW51eC9mcy9l
eHQyL3N5bWxpbmsuYwlGcmkgSnVuIDI1IDE2OjQ4OjM1IDE5OTkNCkBAIC00
NCw2ICs0NCw3IEBADQogCWV4dDJfcmVhZGxpbmssCQkvKiByZWFkbGluayAq
Lw0KIAlleHQyX2ZvbGxvd19saW5rLAkvKiBmb2xsb3dfbGluayAqLw0KIAlO
VUxMLAkJCS8qIGJtYXAgKi8NCisJTlVMTCwJCQkvKiBibWFwX2NyZWF0ZSAq
Lw0KIAlOVUxMLAkJCS8qIHJlYWRwYWdlICovDQogCU5VTEwsCQkJLyogd3Jp
dGVwYWdlICovDQogCU5VTEwsCQkJLyogZmx1c2hwYWdlICovDQotLS0gbGlu
dXgvZnMvYnVmZmVyLmMub3JpZwlGcmkgSnVuIDI1IDE0OjExOjM2IDE5OTkN
CisrKyBsaW51eC9mcy9idWZmZXIuYwlGcmkgSnVuIDI1IDE2OjQ4OjM1IDE5
OTkNCkBAIC03MSw3ICs3MSw2IEBADQogc3RhdGljIGttZW1fY2FjaGVfdCAq
YmhfY2FjaGVwOw0KIA0KIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiB1
bnVzZWRfbGlzdCA9IE5VTEw7DQotc3RhdGljIHN0cnVjdCBidWZmZXJfaGVh
ZCAqIHJldXNlX2xpc3QgPSBOVUxMOw0KIHN0YXRpYyBERUNMQVJFX1dBSVRf
UVVFVUVfSEVBRChidWZmZXJfd2FpdCk7DQogDQogc3RhdGljIGludCBucl9i
dWZmZXJzID0gMDsNCkBAIC00MTEsNyArNDEwLDYgQEANCiAJCQlpZiAoYmgt
PmJfY291bnQpDQogCQkJCWNvbnRpbnVlOw0KIAkJCWJoLT5iX2ZsdXNodGlt
ZSA9IDA7DQotCQkJY2xlYXJfYml0KEJIX1Byb3RlY3RlZCwgJmJoLT5iX3N0
YXRlKTsNCiAJCQljbGVhcl9iaXQoQkhfVXB0b2RhdGUsICZiaC0+Yl9zdGF0
ZSk7DQogCQkJY2xlYXJfYml0KEJIX0RpcnR5LCAmYmgtPmJfc3RhdGUpOw0K
IAkJCWNsZWFyX2JpdChCSF9SZXEsICZiaC0+Yl9zdGF0ZSk7DQpAQCAtNzAz
LDMxICs3MDEsMjggQEANCiAJc3RydWN0IHBhZ2UgKnBhZ2U7DQogCWludCBm
cmVlOw0KIA0KLQltYXJrX2J1ZmZlcl91cHRvZGF0ZShiaCwgdXB0b2RhdGUp
Ow0KLQ0KLQkvKiBUaGlzIGlzIGEgdGVtcG9yYXJ5IGJ1ZmZlciB1c2VkIGZv
ciBwYWdlIEkvTy4gKi8NCiAJcGFnZSA9IG1lbV9tYXAgKyBNQVBfTlIoYmgt
PmJfZGF0YSk7DQotDQorCW1hcmtfYnVmZmVyX3VwdG9kYXRlKGJoLCB1cHRv
ZGF0ZSk7DQogCWlmICghdXB0b2RhdGUpDQogCQlTZXRQYWdlRXJyb3IocGFn
ZSk7DQogDQorCS8qIFRoaXMgaXMgYSB0ZW1wb3JhcnkgYnVmZmVyIHVzZWQg
Zm9yIHBhZ2UgSS9PLiAqLw0KKw0KIAkvKg0KIAkgKiBCZSBfdmVyeV8gY2Fy
ZWZ1bCBmcm9tIGhlcmUgb24uIEJhZCB0aGluZ3MgY2FuIGhhcHBlbiBpZg0K
IAkgKiB0d28gYnVmZmVyIGhlYWRzIGVuZCBJTyBhdCBhbG1vc3QgdGhlIHNh
bWUgdGltZSBhbmQgYm90aA0KIAkgKiBkZWNpZGUgdGhhdCB0aGUgcGFnZSBp
cyBub3cgY29tcGxldGVseSBkb25lLg0KIAkgKg0KLQkgKiBBc3luYyBidWZm
ZXJfaGVhZHMgYXJlIGhlcmUgb25seSBhcyBsYWJlbHMgZm9yIElPLCBhbmQg
Z2V0DQotCSAqIHRocm93biBhd2F5IG9uY2UgdGhlIElPIGZvciB0aGlzIHBh
Z2UgaXMgY29tcGxldGUuICBJTyBpcw0KLQkgKiBkZWVtZWQgY29tcGxldGUg
b25jZSBhbGwgYnVmZmVycyBoYXZlIGJlZW4gdmlzaXRlZA0KLQkgKiAoYl9j
b3VudD09MCkgYW5kIGFyZSBub3cgdW5sb2NrZWQuIFdlIG11c3QgbWFrZSBz
dXJlIHRoYXQNCi0JICogb25seSB0aGUgX2xhc3RfIGJ1ZmZlciB0aGF0IGRl
Y3JlbWVudHMgaXRzIGNvdW50IGlzIHRoZSBvbmUNCi0JICogdGhhdCBmcmVl
J3MgdGhlIHBhZ2UuLg0KKwkgKiBJTyBoZXJlIGlzIGRlZW1lZCBjb21wbGV0
ZSBvbmNlIGFsbCBhc3luY2hyb24gYnVmZmVycyBoYXZlDQorCSAqIGdvbmUg
dW51c2VkLiAobm90ZSB0aGF0IGFuIGFzeW5jaHJvbiBidWZmZXIgY2FuIGdv
IHN5bmNocm9uDQorCSAqIGJ5IGdldHRpbmcgZGlydGllZCkNCiAJICovDQog
CXNwaW5fbG9ja19pcnFzYXZlKCZwYWdlX3VwdG9kYXRlX2xvY2ssIGZsYWdz
KTsNCiAJdW5sb2NrX2J1ZmZlcihiaCk7DQorCWJoLT5iX2NvdW50LS07DQog
CXRtcCA9IGJoLT5iX3RoaXNfcGFnZTsNCiAJd2hpbGUgKHRtcCAhPSBiaCkg
ew0KLQkJaWYgKGJ1ZmZlcl9sb2NrZWQodG1wKSkNCisJCWlmICgodG1wLT5i
X2VuZF9pbyA9PSBlbmRfYnVmZmVyX2lvX2FzeW5jKSAmJiB0bXAtPmJfY291
bnQpDQogCQkJZ290byBzdGlsbF9idXN5Ow0KIAkJdG1wID0gdG1wLT5iX3Ro
aXNfcGFnZTsNCiAJfQ0KQEAgLTkxOCw2ICs5MTMsNyBAQA0KIAkJcmV0dXJu
Ow0KIAl9DQogCXByaW50aygiVkZTOiBicmVsc2U6IFRyeWluZyB0byBmcmVl
IGZyZWUgYnVmZmVyXG4iKTsNCisJQlVHKCk7DQogfQ0KIA0KIC8qDQpAQCAt
MTA0MiwzNSArMTAzOCw2IEBADQogCXVudXNlZF9saXN0ID0gYmg7DQogfQ0K
IA0KLS8qIA0KLSAqIFdlIGNhbid0IHB1dCBjb21wbGV0ZWQgdGVtcG9yYXJ5
IElPIGJ1ZmZlcl9oZWFkcyBkaXJlY3RseSBvbnRvIHRoZQ0KLSAqIHVudXNl
ZF9saXN0IHdoZW4gdGhleSBiZWNvbWUgdW5sb2NrZWQsIHNpbmNlIHRoZSBk
ZXZpY2UgZHJpdmVyDQotICogZW5kX3JlcXVlc3Qgcm91dGluZXMgc3RpbGwg
ZXhwZWN0IGFjY2VzcyB0byB0aGUgYnVmZmVyX2hlYWQncw0KLSAqIGZpZWxk
cyBhZnRlciB0aGUgZmluYWwgdW5sb2NrLiAgU28sIHRoZSBkZXZpY2UgZHJp
dmVyIHB1dHMgdGhlbSBvbg0KLSAqIHRoZSByZXVzZV9saXN0IGluc3RlYWQg
b25jZSBJTyBjb21wbGV0ZXMsIGFuZCB3ZSByZWNvdmVyIHRoZXNlIHRvDQot
ICogdGhlIHVudXNlZF9saXN0IGhlcmUuDQotICoNCi0gKiBOb3RlIHRoYXQg
d2UgZG9uJ3QgZG8gYSB3YWtldXAgaGVyZSwgYnV0IHJldHVybiBhIGZsYWcg
aW5kaWNhdGluZw0KLSAqIHdoZXRoZXIgd2UgZ290IGFueSBidWZmZXIgaGVh
ZHMuIEEgdGFzayByZWFkeSB0byBzbGVlcCBjYW4gY2hlY2sNCi0gKiB0aGUg
cmV0dXJuZWQgdmFsdWUsIGFuZCBhbnkgdGFza3MgYWxyZWFkeSBzbGVlcGlu
ZyB3aWxsIGhhdmUgYmVlbg0KLSAqIGF3YWtlbmVkIHdoZW4gdGhlIGJ1ZmZl
ciBoZWFkcyB3ZXJlIGFkZGVkIHRvIHRoZSByZXVzZSBsaXN0Lg0KLSAqLw0K
LXN0YXRpYyBpbmxpbmUgaW50IHJlY292ZXJfcmV1c2FibGVfYnVmZmVyX2hl
YWRzKHZvaWQpDQotew0KLQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmhlYWQgPSB4
Y2hnKCZyZXVzZV9saXN0LCBOVUxMKTsNCi0JaW50IGZvdW5kID0gMDsNCi0J
DQotCWlmIChoZWFkKSB7DQotCQlkbyB7DQotCQkJc3RydWN0IGJ1ZmZlcl9o
ZWFkICpiaCA9IGhlYWQ7DQotCQkJaGVhZCA9IGhlYWQtPmJfbmV4dF9mcmVl
Ow0KLQkJCXB1dF91bnVzZWRfYnVmZmVyX2hlYWQoYmgpOw0KLQkJfSB3aGls
ZSAoaGVhZCk7DQotCQlmb3VuZCA9IDE7DQotCX0NCi0JcmV0dXJuIGZvdW5k
Ow0KLX0NCi0NCiAvKg0KICAqIFJlc2VydmUgTlJfUkVTRVJWRUQgYnVmZmVy
IGhlYWRzIGZvciBhc3luYyBJTyByZXF1ZXN0cyB0byBhdm9pZA0KICAqIG5v
LWJ1ZmZlci1oZWFkIGRlYWRsb2NrLiAgUmV0dXJuIE5VTEwgb24gZmFpbHVy
ZTsgd2FpdGluZyBmb3INCkBAIC0xMDgwLDcgKzEwNDcsNiBAQA0KIHsNCiAJ
c3RydWN0IGJ1ZmZlcl9oZWFkICogYmg7DQogDQotCXJlY292ZXJfcmV1c2Fi
bGVfYnVmZmVyX2hlYWRzKCk7DQogCWlmIChucl91bnVzZWRfYnVmZmVyX2hl
YWRzID4gTlJfUkVTRVJWRUQpIHsNCiAJCWJoID0gdW51c2VkX2xpc3Q7DQog
CQl1bnVzZWRfbGlzdCA9IGJoLT5iX25leHRfZnJlZTsNCkBAIC0xMjA0LDgg
KzExNzAsMTAgQEANCiAJICovDQogCWFkZF93YWl0X3F1ZXVlKCZidWZmZXJf
d2FpdCwgJndhaXQpOw0KIAljdXJyZW50LT5zdGF0ZSA9IFRBU0tfVU5JTlRF
UlJVUFRJQkxFOw0KLQlpZiAoIXJlY292ZXJfcmV1c2FibGVfYnVmZmVyX2hl
YWRzKCkpDQorCWlmIChucl91bnVzZWRfYnVmZmVyX2hlYWRzIDwgTUFYX0JV
Rl9QRVJfUEFHRSkgew0KKwkJY3VycmVudC0+cG9saWN5IHw9IFNDSEVEX1lJ
RUxEOw0KIAkJc2NoZWR1bGUoKTsNCisJfQ0KIAlyZW1vdmVfd2FpdF9xdWV1
ZSgmYnVmZmVyX3dhaXQsICZ3YWl0KTsNCiAJY3VycmVudC0+c3RhdGUgPSBU
QVNLX1JVTk5JTkc7DQogCWdvdG8gdHJ5X2FnYWluOw0KQEAgLTEzNDQsNyAr
MTMxMiw3IEBADQogICogYmxvY2tfd3JpdGVfZnVsbF9wYWdlKCkgaXMgU01Q
LXNhZmUgLSBjdXJyZW50bHkgaXQncyBzdGlsbA0KICAqIGJlaW5nIGNhbGxl
ZCB3aXRoIHRoZSBrZXJuZWwgbG9jayBoZWxkLCBidXQgdGhlIGNvZGUgaXMg
cmVhZHkuDQogICovDQotaW50IGJsb2NrX3dyaXRlX2Z1bGxfcGFnZSAoc3Ry
dWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBwYWdlICpwYWdlLCBmc19nZXRibG9j
a190IGZzX2dldF9ibG9jaykNCitpbnQgYmxvY2tfd3JpdGVfZnVsbF9wYWdl
IChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBhZ2UgKnBhZ2UpDQogew0K
IAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmaWxlLT5mX2RlbnRyeTsNCiAJ
c3RydWN0IGlub2RlICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsNCkBAIC0x
MzgxLDEyICsxMzQ5LDE4IEBADQogCQkgKiBkZWNpc2lvbnMgKGJsb2NrICMw
IG1heSBhY3R1YWxseSBiZSBhIHZhbGlkIGJsb2NrKQ0KIAkJICovDQogCQli
aC0+Yl9lbmRfaW8gPSBlbmRfYnVmZmVyX2lvX3N5bmM7DQotCQlpZiAoIWJ1
ZmZlcl91cHRvZGF0ZShiaCkpIHsNCi0JCQllcnIgPSBmc19nZXRfYmxvY2so
aW5vZGUsIGJsb2NrLCBiaCwgMCk7DQorCQlpZiAoIWJ1ZmZlcl9hbGxvY2F0
ZWQoYmgpKSB7DQorCQkJaW50IHBoeXMsIG5ldyA9IDA7DQorCQkJZXJyID0g
LUVJTzsNCisJCQlwaHlzID0gaW5vZGUtPmlfb3AtPmJtYXBfY3JlYXRlKGlu
b2RlLCBibG9jaywNCisJCQkJCQkJJmVyciwmbmV3KTsNCiAJCQlpZiAoZXJy
KQ0KIAkJCQlnb3RvIG91dDsNCisJCQliaC0+Yl9kZXYgPSBpbm9kZS0+aV9k
ZXY7DQorCQkJYmgtPmJfYmxvY2tuciA9IHBoeXM7DQorCQkJYmgtPmJfc3Rh
dGUgfD0gKDFVTCA8PCBCSF9BbGxvY2F0ZWQpOyAvKiBzYWZlICovDQogCQl9
DQotCQlzZXRfYml0KEJIX1VwdG9kYXRlLCAmYmgtPmJfc3RhdGUpOw0KKwkJ
YmgtPmJfc3RhdGUgfD0gKDFVTCA8PCBCSF9VcHRvZGF0ZSk7IC8qIHNhZmUg
Ki8NCiAJCWF0b21pY19tYXJrX2J1ZmZlcl9kaXJ0eShiaCwwKTsNCiANCiAJ
CWJoID0gYmgtPmJfdGhpc19wYWdlOw0KQEAgLTE0MDAsNyArMTM3NCw3IEBA
DQogCXJldHVybiBlcnI7DQogfQ0KIA0KLWludCBibG9ja193cml0ZV9wYXJ0
aWFsX3BhZ2UgKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgcGFnZSAqcGFn
ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgYnl0ZXMs
IGNvbnN0IGNoYXIgKiBidWYsIGZzX2dldGJsb2NrX3QgZnNfZ2V0X2Jsb2Nr
KQ0KK2ludCBibG9ja193cml0ZV9wYXJ0aWFsX3BhZ2UgKHN0cnVjdCBmaWxl
ICpmaWxlLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBvZmZz
ZXQsIHVuc2lnbmVkIGxvbmcgYnl0ZXMsIGNvbnN0IGNoYXIgKiBidWYpDQog
ew0KIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBmaWxlLT5mX2RlbnRyeTsN
CiAJc3RydWN0IGlub2RlICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsNCkBA
IC0xNDcwLDEzICsxNDQ0LDQ0IEBADQogCQkgKiBub3QgZ29pbmcgdG8gZmls
bCBpdCBjb21wbGV0ZWx5Lg0KIAkJICovDQogCQliaC0+Yl9lbmRfaW8gPSBl
bmRfYnVmZmVyX2lvX3N5bmM7DQotCQlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShi
aCkpIHsNCi0JCQlpbnQgdXBkYXRlID0gc3RhcnRfb2Zmc2V0IHx8IChlbmRf
Ynl0ZXMgJiYgKGkgPT0gZW5kX2Jsb2NrKSk7DQogDQotCQkJZXJyID0gZnNf
Z2V0X2Jsb2NrKGlub2RlLCBibG9jaywgYmgsIHVwZGF0ZSk7DQotCQkJaWYg
KGVycikNCisJCWlmICghYnVmZmVyX2FsbG9jYXRlZChiaCkpIHsNCisJCQlp
bnQgcGh5cywgbmV3ID0gMDsNCisJCQllcnIgPSAtRUlPOw0KKwkJCXBoeXMg
PSBpbm9kZS0+aV9vcC0+Ym1hcF9jcmVhdGUoaW5vZGUsIGJsb2NrLA0KKwkJ
CQkJCQkJJmVyciwmbmV3KTsNCisJCQlpZiAoIXBoeXMpDQogCQkJCWdvdG8g
b3V0Ow0KLQkJfQ0KKwkJCWJoLT5iX2RldiA9IGlub2RlLT5pX2RldjsNCisJ
CQliaC0+Yl9ibG9ja25yID0gcGh5czsNCisJCQliaC0+Yl9zdGF0ZSB8PSAo
MVVMPDxCSF9BbGxvY2F0ZWQpOw0KKwkJCS8qDQorCQkJICogaWYgcGFydGlh
bGx5IHdyaXR0ZW4gYmxvY2sgd2hpY2ggaGFzIGNvbnRlbnRzIG9uDQorCQkJ
ICogZGlzaywgdGhlbiB3ZSBoYXZlIHRvIHJlYWQgaXQgZmlyc3QuDQorCQkJ
ICogV2UgYWxzbyByZWx5IG9uIHRoZSBmYWN0IHRoYXQgZmlsZXN5c3RlbSBo
b2xlcw0KKwkJCSAqIGNhbm5vdCBiZSB3cml0dGVuLg0KKwkJCSAqLw0KKwkJ
CWlmIChzdGFydF9vZmZzZXQgfHwgKGVuZF9ieXRlcyAmJiAoaSA9PSBlbmRf
YmxvY2spKSkgew0KKwkJCQlpZiAobmV3KSB7DQorCQkJCQltZW1zZXQoYmgt
PmJfZGF0YSwgMCwgYmgtPmJfc2l6ZSk7DQorCQkJCX0gZWxzZSB7DQorCQkJ
CQliaC0+Yl9zdGF0ZSA9IDA7DQorCQkJCQlsbF9yd19ibG9jayhSRUFELCAx
LCAmYmgpOw0KKwkJCQkJbG9ja19rZXJuZWwoKTsNCisJCQkJCXdhaXRfb25f
YnVmZmVyKGJoKTsNCisJCQkJCXVubG9ja19rZXJuZWwoKTsNCisJCQkJCWVy
ciA9IC1FSU87DQorCQkJCQlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShiaCkpDQor
CQkJCQkJZ290byBvdXQ7DQorCQkJCX0NCisJCQl9DQorCQl9IGVsc2Ugew0K
KwkJCS8qDQorCQkJICogYmxvY2sgYWxyZWFkeSBleGlzdHMsIGp1c3QgbWFy
ayBpdCB1cHRvZGF0ZToNCisJCQkgKi8NCisJCQliaC0+Yl9lbmRfaW8gPSBl
bmRfYnVmZmVyX2lvX3N5bmM7DQorIAkJfQ0KKwkJYmgtPmJfc3RhdGUgfD0g
KDFVTCA8PCBCSF9VcHRvZGF0ZSk7IC8qIHNhZmUgKi8NCiANCiAJCWVyciA9
IC1FRkFVTFQ7DQogCQlsZW4gPSBibG9ja3NpemU7DQpAQCAtMTU4Niw2ICsx
NTkxLDcgQEANCiAJCQkJCUJVRygpOw0KIAkJCQlpZiAoIWJ1ZmZlcl91cHRv
ZGF0ZShiaCkpIHsNCiAJCQkJCWFycltucisrXSA9IGJoOw0KKwkJCQkJYmgt
PmJfY291bnQrKzsNCiAJCQkJfQ0KIAkJCX0NCiAJCX0gZWxzZSB7IC8qIFdS
SVRFICovDQpAQCAtMTYwMCw2ICsxNjA2LDcgQEANCiAJCQlzZXRfYml0KEJI
X1VwdG9kYXRlLCAmYmgtPmJfc3RhdGUpOw0KIAkJCXNldF9iaXQoQkhfRGly
dHksICZiaC0+Yl9zdGF0ZSk7DQogCQkJYXJyW25yKytdID0gYmg7DQorCQkJ
YmgtPmJfY291bnQrKzsNCiAJCX0NCiAJCWJoID0gYmgtPmJfdGhpc19wYWdl
Ow0KIAl9IHdoaWxlIChiaCAhPSBoZWFkKTsNCkBAIC0xNjIyLDMwICsxNjI5
LDcgQEANCiB9DQogDQogLyoNCi0gKiBUaGlzIGlzIGNhbGxlZCBieSBlbmRf
cmVxdWVzdCgpIHdoZW4gSS9PIGhhcyBjb21wbGV0ZWQuDQotICovDQotdm9p
ZCBtYXJrX2J1ZmZlcl91cHRvZGF0ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBi
aCwgaW50IG9uKQ0KLXsNCi0JaWYgKG9uKSB7DQotCQlzdHJ1Y3QgYnVmZmVy
X2hlYWQgKnRtcCA9IGJoOw0KLQkJc3RydWN0IHBhZ2UgKnBhZ2U7DQotCQlz
ZXRfYml0KEJIX1VwdG9kYXRlLCAmYmgtPmJfc3RhdGUpOw0KLQkJLyogSWYg
YSBwYWdlIGhhcyBidWZmZXJzIGFuZCBhbGwgdGhlc2UgYnVmZmVycyBhcmUg
dXB0b2RhdGUsDQotCQkgKiB0aGVuIHRoZSBwYWdlIGlzIHVwdG9kYXRlLiAq
Lw0KLQkJZG8gew0KLQkJCWlmICghdGVzdF9iaXQoQkhfVXB0b2RhdGUsICZ0
bXAtPmJfc3RhdGUpKQ0KLQkJCQlyZXR1cm47DQotCQkJdG1wPXRtcC0+Yl90
aGlzX3BhZ2U7DQotCQl9IHdoaWxlICh0bXAgJiYgdG1wICE9IGJoKTsNCi0J
CXBhZ2UgPSBtZW1fbWFwICsgTUFQX05SKGJoLT5iX2RhdGEpOw0KLQkJU2V0
UGFnZVVwdG9kYXRlKHBhZ2UpOw0KLQkJcmV0dXJuOw0KLQl9DQotCWNsZWFy
X2JpdChCSF9VcHRvZGF0ZSwgJmJoLT5iX3N0YXRlKTsNCi19DQotDQotLyoN
Ci0gKiBHZW5lcmljICJyZWFkcGFnZSIgZnVuY3Rpb24gZm9yIGJsb2NrIGRl
dmljZXMgdGhhdCBoYXZlIHRoZSBub3JtYWwNCisgKiBHZW5lcmljICJyZWFk
IHBhZ2UiIGZ1bmN0aW9uIGZvciBibG9jayBkZXZpY2VzIHRoYXQgaGF2ZSB0
aGUgbm9ybWFsDQogICogYm1hcCBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIG1v
c3Qgb2YgdGhlIGJsb2NrIGRldmljZSBmaWxlc3lzdGVtcy4NCiAgKiBSZWFk
cyB0aGUgcGFnZSBhc3luY2hyb25vdXNseSAtLS0gdGhlIHVubG9ja19idWZm
ZXIoKSBhbmQNCiAgKiBtYXJrX2J1ZmZlcl91cHRvZGF0ZSgpIGZ1bmN0aW9u
cyBwcm9wYWdhdGUgYnVmZmVyIHN0YXRlIGludG8gdGhlDQpAQCAtMTY1NSw3
ICsxNjM5LDcgQEANCiB7DQogCXN0cnVjdCBkZW50cnkgKmRlbnRyeSA9IGZp
bGUtPmZfZGVudHJ5Ow0KIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVudHJ5
LT5kX2lub2RlOw0KLQl1bnNpZ25lZCBsb25nIGlibG9jaywgcGh5c19ibG9j
azsNCisJdW5zaWduZWQgbG9uZyBpYmxvY2s7DQogCXN0cnVjdCBidWZmZXJf
aGVhZCAqYmgsICpoZWFkLCAqYXJyW01BWF9CVUZfUEVSX1BBR0VdOw0KIAl1
bnNpZ25lZCBpbnQgYmxvY2tzaXplLCBibG9ja3M7DQogCWludCBucjsNCkBA
IC0xNjc0LDI4ICsxNjU4LDMzIEBADQogCWJoID0gaGVhZDsNCiAJbnIgPSAw
Ow0KIAlkbyB7DQotCQlwaHlzX2Jsb2NrID0gYmgtPmJfYmxvY2tucjsNCiAJ
CS8qDQogCQkgKiBpbXBvcnRhbnQsIHdlIGhhdmUgdG8gcmV0cnkgYnVmZmVy
cyB0aGF0IGFscmVhZHkgaGF2ZQ0KLQkJICogdGhlaXIgYm5yIGNhY2hlZCBi
dXQgaGFkIGFuIElPIGVycm9yIQ0KKwkJICogdGhlaXIgYm5yIGNhY2hlZCBi
dXQgaGFkIGFuIElPIGVycm9yLg0KIAkJICovDQogCQlpZiAoIWJ1ZmZlcl91
cHRvZGF0ZShiaCkpIHsNCisJCQl1bnNpZ25lZCBsb25nIHBoeXNfYmxvY2s7
DQogCQkJcGh5c19ibG9jayA9IGlub2RlLT5pX29wLT5ibWFwKGlub2RlLCBp
YmxvY2spOw0KIAkJCS8qDQogCQkJICogdGhpcyBpcyBzYWZlIHRvIGRvIGJl
Y2F1c2Ugd2UgaG9sZCB0aGUgcGFnZSBsb2NrOg0KIAkJCSAqLw0KIAkJCWlm
IChwaHlzX2Jsb2NrKSB7DQogCQkJCWluaXRfYnVmZmVyKGJoLCBpbm9kZS0+
aV9kZXYsIHBoeXNfYmxvY2ssIGVuZF9idWZmZXJfaW9fYXN5bmMsIE5VTEwp
Ow0KKwkJCQliaC0+Yl9zdGF0ZSB8PSAoMVVMIDw8IEJIX0FsbG9jYXRlZCk7
IC8qIHNhZmUgKi8NCiAJCQkJYXJyW25yXSA9IGJoOw0KKwkJCQliaC0+Yl9j
b3VudCsrOw0KIAkJCQlucisrOw0KIAkJCX0gZWxzZSB7DQogCQkJCS8qDQog
CQkJCSAqIGZpbGVzeXN0ZW0gJ2hvbGUnIHJlcHJlc2VudHMgemVyby1jb250
ZW50cy4NCiAJCQkJICoNCi0JCQkJICogRG9uJ3QgbWFyayB0aGUgYnVmZmVy
IHVwLXRvLWRhdGUgKHRoYXQgYWxzbyBpbXBsaWVzDQotCQkJCSAqIHRoYXQg
aXQgaXMgb2sgb24gZGlzaywgd2hpY2ggaXQgaXNuJ3QpLCBidXQgX2RvXw0K
LQkJCQkgKiB6ZXJvIG91dCB0aGUgY29udGVudHMgc28gdGhhdCByZWFkZXJz
IHNlZSB0aGUgemVyb2VzLg0KKwkJCQkgKiBJdCdzIHRoZSBCSF9BbGxvY2F0
ZWQgZmxhZyB0aGF0IGRpc3RpbmN0cw0KKwkJCQkgKiBvbi1kaXNrIGFuZCBm
cy1ob2xlIGJ1ZmZlcnMsIGJ1dCBib3RoIGFyZQ0KKwkJCQkgKiB1cHRvZGF0
ZSBpbiBhIHNlbnNlIHRoYXQgb24tZGlzayBjb250ZW50DQorCQkJCSAqIGlz
IG5vdCBtb3JlIHVwdG9kYXRlIHRoYW4gaW4tbWVtb3J5DQorCQkJCSAqIGNv
bnRlbnQuDQogCQkJCSAqLw0KKwkJCQliaC0+Yl9zdGF0ZSB8PSAoMVVMIDw8
IEJIX1VwdG9kYXRlKTsgLyogc2FmZSAqLw0KIAkJCQltZW1zZXQoYmgtPmJf
ZGF0YSwgMCwgYmxvY2tzaXplKTsNCiAJCQl9DQogCQl9DQpAQCAtMTc3NCw4
ICsxNzYzLDggQEANCiAvKg0KICAqIENhbiB0aGUgYnVmZmVyIGJlIHRocm93
biBvdXQ/DQogICovDQotI2RlZmluZSBCVUZGRVJfQlVTWV9CSVRTCSgoMTw8
QkhfRGlydHkpIHwgKDE8PEJIX0xvY2spIHwgKDE8PEJIX1Byb3RlY3RlZCkp
DQotI2RlZmluZSBidWZmZXJfYnVzeShiaCkJCSgoYmgpLT5iX2NvdW50IHwg
KChiaCktPmJfc3RhdGUgJiBCVUZGRVJfQlVTWV9CSVRTKSkNCisjZGVmaW5l
IEJVRkZFUl9CVVNZX0JJVFMgKCgxPDxCSF9EaXJ0eSkgfCAoMTw8QkhfTG9j
aykpDQorI2RlZmluZSBidWZmZXJfYnVzeShiaCkJICgoYmgpLT5iX2NvdW50
IHwgKChiaCktPmJfc3RhdGUgJiBCVUZGRVJfQlVTWV9CSVRTKSkNCiANCiAv
Kg0KICAqIHRyeV90b19mcmVlX2J1ZmZlcnMoKSBjaGVja3MgaWYgYWxsIHRo
ZSBidWZmZXJzIG9uIHRoaXMgcGFydGljdWxhciBwYWdlDQpAQCAtMTgyMCw3
ICsxODA5LDcgQEANCiAJcmV0dXJuIDE7DQogDQogYnVzeV9idWZmZXJfcGFn
ZToNCi0JLyogVWhodWgsIHN0YXIgd3JpdGViYWNrIHNvIHRoYXQgd2UgZG9u
J3QgZW5kIHVwIHdpdGggYWxsIGRpcnR5IHBhZ2VzICovDQorCS8qIFVoaHVo
LCBzdGFydCB3cml0ZWJhY2sgc28gdGhhdCB3ZSBkb24ndCBlbmQgdXAgd2l0
aCBhbGwgZGlydHkgcGFnZXMgKi8NCiAJdG9vX21hbnlfZGlydHlfYnVmZmVy
cyA9IDE7DQogCXdha2V1cF9iZGZsdXNoKDApOw0KIAlyZXR1cm4gMDsNCkBA
IC0xODMyLDcgKzE4MjEsNiBAQA0KIHsNCiAJc3RydWN0IGJ1ZmZlcl9oZWFk
ICogYmg7DQogCWludCBmb3VuZCA9IDAsIGxvY2tlZCA9IDAsIGRpcnR5ID0g
MCwgdXNlZCA9IDAsIGxhc3R1c2VkID0gMDsNCi0JaW50IHByb3RlY3RlZCA9
IDA7DQogCWludCBubGlzdDsNCiAJc3RhdGljIGNoYXIgKmJ1Zl90eXBlc1tO
Ul9MSVNUXSA9IHsiQ0xFQU4iLCJMT0NLRUQiLCJESVJUWSJ9Ow0KIA0KQEAg
LTE4NDIsNyArMTgzMCw3IEBADQogCXByaW50aygiQnVmZmVyIGhhc2hlZDog
ICAlNmRcbiIsbnJfaGFzaGVkX2J1ZmZlcnMpOw0KIA0KIAlmb3Iobmxpc3Qg
PSAwOyBubGlzdCA8IE5SX0xJU1Q7IG5saXN0KyspIHsNCi0JICBmb3VuZCA9
IGxvY2tlZCA9IGRpcnR5ID0gdXNlZCA9IGxhc3R1c2VkID0gcHJvdGVjdGVk
ID0gMDsNCisJICBmb3VuZCA9IGxvY2tlZCA9IGRpcnR5ID0gdXNlZCA9IGxh
c3R1c2VkID0gMDsNCiAJICBiaCA9IGxydV9saXN0W25saXN0XTsNCiAJICBp
ZighYmgpIGNvbnRpbnVlOw0KIA0KQEAgLTE4NTAsOCArMTgzOCw2IEBADQog
CQlmb3VuZCsrOw0KIAkJaWYgKGJ1ZmZlcl9sb2NrZWQoYmgpKQ0KIAkJCWxv
Y2tlZCsrOw0KLQkJaWYgKGJ1ZmZlcl9wcm90ZWN0ZWQoYmgpKQ0KLQkJCXBy
b3RlY3RlZCsrOw0KIAkJaWYgKGJ1ZmZlcl9kaXJ0eShiaCkpDQogCQkJZGly
dHkrKzsNCiAJCWlmIChiaC0+Yl9jb3VudCkNCkBAIC0xODU5LDkgKzE4NDUs
OSBAQA0KIAkJYmggPSBiaC0+Yl9uZXh0X2ZyZWU7DQogCSAgfSB3aGlsZSAo
YmggIT0gbHJ1X2xpc3Rbbmxpc3RdKTsNCiAJICBwcmludGsoIiU4czogJWQg
YnVmZmVycywgJWQgdXNlZCAobGFzdD0lZCksICINCi0JCSAiJWQgbG9ja2Vk
LCAlZCBwcm90ZWN0ZWQsICVkIGRpcnR5XG4iLA0KKwkJICIlZCBsb2NrZWQs
ICVkIGRpcnR5XG4iLA0KIAkJIGJ1Zl90eXBlc1tubGlzdF0sIGZvdW5kLCB1
c2VkLCBsYXN0dXNlZCwNCi0JCSBsb2NrZWQsIHByb3RlY3RlZCwgZGlydHkp
Ow0KKwkJIGxvY2tlZCwgZGlydHkpOw0KIAl9Ow0KIH0NCiANCi0tLSBsaW51
eC9mcy9iYWRfaW5vZGUuYy5vcmlnCUZyaSBKdW4gMjUgMTQ6MTE6MzYgMTk5
OQ0KKysrIGxpbnV4L2ZzL2JhZF9pbm9kZS5jCUZyaSBKdW4gMjUgMTY6NDg6
MzUgMTk5OQ0KQEAgLTYxLDYgKzYxLDcgQEANCiAJRUlPX0VSUk9SLAkJLyog
cmVhZGxpbmsgKi8NCiAJYmFkX2ZvbGxvd19saW5rLAkvKiBmb2xsb3dfbGlu
ayAqLw0KIAlFSU9fRVJST1IsCQkvKiBibWFwICovDQorCUVJT19FUlJPUiwJ
CS8qIGJtYXBfY3JlYXRlICovDQogCUVJT19FUlJPUiwJCS8qIHJlYWRwYWdl
ICovDQogCUVJT19FUlJPUiwJCS8qIHdyaXRlcGFnZSAqLw0KIAlFSU9fRVJS
T1IsCQkvKiBmbHVzaHBhZ2UgKi8NCi0tLSBsaW51eC9mcy9kZXZpY2VzLmMu
b3JpZwlGcmkgSnVuIDI1IDE0OjExOjM2IDE5OTkNCisrKyBsaW51eC9mcy9k
ZXZpY2VzLmMJRnJpIEp1biAyNSAxNjo0ODozNSAxOTk5DQpAQCAtMjc4LDYg
KzI3OCw3IEBADQogCU5VTEwsCQkJLyogcmVuYW1lICovDQogCU5VTEwsCQkJ
LyogcmVhZGxpbmsgKi8NCiAJTlVMTCwJCQkvKiBibWFwICovDQorCU5VTEws
CQkJLyogYm1hcF9jcmVhdGUgKi8NCiAJTlVMTCwJCQkvKiByZWFkcGFnZSAq
Lw0KIAlOVUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0KIAlOVUxMLAkJCS8qIGZs
dXNocGFnZSAqLw0KQEAgLTMzNCw2ICszMzUsNyBAQA0KIAlOVUxMLAkJCS8q
IHJlbmFtZSAqLw0KIAlOVUxMLAkJCS8qIHJlYWRsaW5rICovDQogCU5VTEws
CQkJLyogYm1hcCAqLw0KKwlOVUxMLAkJCS8qIGJtYXBfY3JlYXRlICovDQog
CU5VTEwsCQkJLyogcmVhZHBhZ2UgKi8NCiAJTlVMTCwJCQkvKiB3cml0ZXBh
Z2UgKi8NCiAJTlVMTCwJCQkvKiBmbHVzaHBhZ2UgKi8NCi0tLSBsaW51eC9m
cy9maWZvLmMub3JpZwlGcmkgSnVuIDI1IDE0OjExOjM2IDE5OTkNCisrKyBs
aW51eC9mcy9maWZvLmMJRnJpIEp1biAyNSAxNjo0ODozNSAxOTk5DQpAQCAt
MTgwLDYgKzE4MCw3IEBADQogCU5VTEwsCQkJLyogcmVuYW1lICovDQogCU5V
TEwsCQkJLyogcmVhZGxpbmsgKi8NCiAJTlVMTCwJCQkvKiBibWFwICovDQor
CU5VTEwsCQkJLyogYm1hcF9jcmVhdGUgKi8NCiAJTlVMTCwJCQkvKiByZWFk
cGFnZSAqLw0KIAlOVUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0KIAlOVUxMLAkJ
CS8qIGZsdXNocGFnZSAqLw0KLS0tIGxpbnV4L2ZzL3BpcGUuYy5vcmlnCUZy
aSBKdW4gMjUgMTQ6MTE6MzYgMTk5OQ0KKysrIGxpbnV4L2ZzL3BpcGUuYwlG
cmkgSnVuIDI1IDE2OjQ4OjM1IDE5OTkNCkBAIC00NjIsNiArNDYyLDcgQEAN
CiAJTlVMTCwJCQkvKiByZW5hbWUgKi8NCiAJTlVMTCwJCQkvKiByZWFkbGlu
ayAqLw0KIAlOVUxMLAkJCS8qIGJtYXAgKi8NCisJTlVMTCwJCQkvKiBibWFw
X2NyZWF0ZSAqLw0KIAlOVUxMLAkJCS8qIHJlYWRwYWdlICovDQogCU5VTEws
CQkJLyogd3JpdGVwYWdlICovDQogCU5VTEwsCQkJLyogZmx1c2hwYWdlICov
DQotLS0gbGludXgva2VybmVsL3N5c2N0bC5jLm9yaWcJRnJpIEp1biAyNSAx
NDoxMTozNiAxOTk5DQorKysgbGludXgva2VybmVsL3N5c2N0bC5jCUZyaSBK
dW4gMjUgMTY6NDg6MzUgMTk5OQ0KQEAgLTEyMSw2ICsxMjEsNyBAQA0KIAlO
VUxMLAkJLyogcmVhZGxpbmsgKi8NCiAJTlVMTCwJCS8qIGZvbGxvd19saW5r
ICovDQogCU5VTEwsCQkvKiBibWFwICovDQorCU5VTEwsCQkvKiBibWFwX2Ny
ZWF0ZSAqLw0KIAlOVUxMLAkJLyogcmVhZHBhZ2UgKi8NCiAJTlVMTCwJCS8q
IHdyaXRlcGFnZSAqLw0KIAlOVUxMLAkJLyogZmx1c2hwYWdlICovDQotLS0g
bGludXgvbW0vc3dhcF9zdGF0ZS5jLm9yaWcJRnJpIEp1biAyNSAxNDoxMToz
NyAxOTk5DQorKysgbGludXgvbW0vc3dhcF9zdGF0ZS5jCUZyaSBKdW4gMjUg
MTY6NDg6MzYgMTk5OQ0KQEAgLTQwLDYgKzQwLDcgQEANCiAJTlVMTCwJCQkJ
LyogcmVhZGxpbmsgKi8NCiAJTlVMTCwJCQkJLyogZm9sbG93X2xpbmsgKi8N
CiAJTlVMTCwJCQkJLyogYm1hcCAqLw0KKwlOVUxMLAkJCQkvKiBibWFwX2Ny
ZWF0ZSAqLw0KIAlOVUxMLAkJCQkvKiByZWFkcGFnZSAqLw0KIAlOVUxMLAkJ
CQkvKiB3cml0ZXBhZ2UgKi8NCiAJYmxvY2tfZmx1c2hwYWdlLAkJLyogZmx1
c2hwYWdlICovDQotLS0gbGludXgvaW5jbHVkZS9saW51eC9mcy5oLm9yaWcJ
RnJpIEp1biAyNSAwOTozMjozMSAxOTk5DQorKysgbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oCUZyaSBKdW4gMjUgMTY6NDg6MzYgMTk5OQ0KQEAgLTE4OCw3
ICsxODgsNyBAQA0KICNkZWZpbmUgQkhfRGlydHkJMQkvKiAxIGlmIHRoZSBi
dWZmZXIgaXMgZGlydHkgKi8NCiAjZGVmaW5lIEJIX0xvY2sJCTIJLyogMSBp
ZiB0aGUgYnVmZmVyIGlzIGxvY2tlZCAqLw0KICNkZWZpbmUgQkhfUmVxCQkz
CS8qIDAgaWYgdGhlIGJ1ZmZlciBoYXMgYmVlbiBpbnZhbGlkYXRlZCAqLw0K
LSNkZWZpbmUgQkhfUHJvdGVjdGVkCTYJLyogMSBpZiB0aGUgYnVmZmVyIGlz
IHByb3RlY3RlZCAqLw0KKyNkZWZpbmUgQkhfQWxsb2NhdGVkCTQJLyogaXMg
Yl9ibG9ja25yIGEgY2FjaGVkIGJtYXAoKSB2YWx1ZSAqLw0KIC8qDQogICog
VHJ5IHRvIGtlZXAgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBmaWVsZHMgaW4g
c2luZ2xlIGNhY2hlIGxpbmVzICgxNg0KICAqIGJ5dGVzKSB0byBpbXByb3Zl
IHBlcmZvcm1hbmNlLiAgVGhpcyBvcmRlcmluZyBzaG91bGQgYmUNCkBAIC0y
NDAsNyArMjQwLDcgQEANCiAjZGVmaW5lIGJ1ZmZlcl9kaXJ0eShiaCkJX19i
dWZmZXJfc3RhdGUoYmgsRGlydHkpDQogI2RlZmluZSBidWZmZXJfbG9ja2Vk
KGJoKQlfX2J1ZmZlcl9zdGF0ZShiaCxMb2NrKQ0KICNkZWZpbmUgYnVmZmVy
X3JlcShiaCkJCV9fYnVmZmVyX3N0YXRlKGJoLFJlcSkNCi0jZGVmaW5lIGJ1
ZmZlcl9wcm90ZWN0ZWQoYmgpCV9fYnVmZmVyX3N0YXRlKGJoLFByb3RlY3Rl
ZCkNCisjZGVmaW5lIGJ1ZmZlcl9hbGxvY2F0ZWQoYmgpCV9fYnVmZmVyX3N0
YXRlKGJoLEFsbG9jYXRlZCkNCiANCiAjZGVmaW5lIGJ1ZmZlcl9wYWdlKGJo
KQkJKG1lbV9tYXAgKyBNQVBfTlIoKGJoKS0+Yl9kYXRhKSkNCiAjZGVmaW5l
IHRvdWNoX2J1ZmZlcihiaCkJc2V0X2JpdChQR19yZWZlcmVuY2VkLCAmYnVm
ZmVyX3BhZ2UoYmgpLT5mbGFncykNCkBAIC02MDQsNyArNjA0LDE5IEBADQog
CSAqIG5vdyBpbiBtb3N0IGNhc2VzIHRoaXMgbWVhbnMgYSBsb2NrL3VubG9j
a19rZXJuZWwgYXQgZW50cnkvZXhpdC4NCiAJICogW1RoZSBuZXcgb3JkZXIg
aXMgYWxzbyBzbGlnaHRseSBtb3JlIGxvZ2ljYWwgOildDQogCSAqLw0KLQlp
bnQgKCpibWFwKSAoc3RydWN0IGlub2RlICosaW50KTsNCisJLyoNCisJICog
J3JlYWRpbmcnIHZhcmlhbnQgb2YgYm1hcC4gSXQgcHJvdmlkZXMgYSAoc3Vw
cG9zZWRseSkgcXVpY2sNCisJICogbG9va3VwIG9mIGFscmVhZHkgZXhpc3Rp
bmcgYmxvY2tzIHdpdGhpbiBhbiBpbm9kZSwgMCBtZWFucw0KKwkgKiBhICdm
aWxlc3lzdGVtIGhvbGUnLg0KKwkgKi8NCisJbG9uZyAoKmJtYXApIChzdHJ1
Y3QgaW5vZGUgKiwgbG9uZyk7DQorCS8qDQorCSAqIGFsbG9jYXRpbmcgdmFy
aWFudCBvZiBibWFwLiBDb21wYXRpYmxlIHdpdGggYm1hcCBidXQgZG9lc250
DQorCSAqIHByZXNlcnZlIGhvbGVzIGFuZCBpcyB1c3VhbGx5IHNsb3dlci4g
Q2FuIHNpZ25hbCBvdXQtb2Ytc3BhY2UNCisJICogb3Igb3RoZXIgbm9uLWZh
dGFsIGV4Y2VwdGlvbnMuDQorCSAqLw0KKwlsb25nICgqYm1hcF9jcmVhdGUp
IChzdHJ1Y3QgaW5vZGUgKiwgbG9uZywgaW50ICosIGludCAqKTsNCisNCiAJ
aW50ICgqcmVhZHBhZ2UpIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAq
KTsNCiAJaW50ICgqd3JpdGVwYWdlKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0
IHBhZ2UgKik7DQogCWludCAoKmZsdXNocGFnZSkgKHN0cnVjdCBpbm9kZSAq
LCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCBsb25nKTsNCkBAIC03NDgsMTIg
Kzc2MCwyOCBAQA0KICNkZWZpbmUgQlVGX0RJUlRZCTIJLyogRGlydHkgYnVm
ZmVycywgbm90IHlldCBzY2hlZHVsZWQgZm9yIHdyaXRlICovDQogI2RlZmlu
ZSBOUl9MSVNUCQkzDQogDQotdm9pZCBtYXJrX2J1ZmZlcl91cHRvZGF0ZShz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiwgaW50KTsNCisvKg0KKyAqIFRoaXMgaXMg
Y2FsbGVkIGJ5IGJoLT5iX2VuZF9pbygpIGhhbmRsZXJzIHdoZW4gSS9PIGhh
cyBjb21wbGV0ZWQuDQorICovDQorZXh0ZXJuIGlubGluZSB2b2lkIG1hcmtf
YnVmZmVyX3VwdG9kYXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCBpbnQg
b24pDQorew0KKwlpZiAob24pDQorCQlzZXRfYml0KEJIX1VwdG9kYXRlLCAm
YmgtPmJfc3RhdGUpOw0KKwllbHNlDQorCQljbGVhcl9iaXQoQkhfVXB0b2Rh
dGUsICZiaC0+Yl9zdGF0ZSk7DQorfQ0KKw0KKyNkZWZpbmUgYXRvbWljX3Nl
dF9idWZmZXJfY2xlYW4oYmgpIHRlc3RfYW5kX2NsZWFyX2JpdChCSF9EaXJ0
eSwgJihiaCktPmJfc3RhdGUpDQorDQorZXh0ZXJuIGlubGluZSB2b2lkIF9f
bWFya19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkNCit7
DQorCXJlZmlsZV9idWZmZXIoYmgpOw0KK30NCiANCiBleHRlcm4gaW5saW5l
IHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZlcl9oZWFkICog
YmgpDQogew0KLQlpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJIX0RpcnR5LCAm
YmgtPmJfc3RhdGUpKQ0KLQkJcmVmaWxlX2J1ZmZlcihiaCk7DQorCWlmIChh
dG9taWNfc2V0X2J1ZmZlcl9jbGVhbihiaCkpDQorCQlfX21hcmtfYnVmZmVy
X2NsZWFuKGJoKTsNCiB9DQogDQogZXh0ZXJuIHZvaWQgRkFTVENBTEwoX19t
YXJrX2J1ZmZlcl9kaXJ0eShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQg
ZmxhZykpOw0KQEAgLTg2OSwxMyArODk3LDEyIEBADQogDQogZXh0ZXJuIGlu
dCBicndfcGFnZShpbnQsIHN0cnVjdCBwYWdlICosIGtkZXZfdCwgaW50IFtd
LCBpbnQsIGludCk7DQogDQotdHlwZWRlZiBsb25nICgqd3JpdGVwYWdlX3Qp
KHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcs
IHVuc2lnbmVkIGxvbmcsIGNvbnN0IGNoYXIgKik7DQotdHlwZWRlZiBpbnQg
KCpmc19nZXRibG9ja190KShzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9u
Zywgc3RydWN0IGJ1ZmZlcl9oZWFkICosIGludCk7DQordHlwZWRlZiBpbnQg
KCp3cml0ZXBhZ2VfdCkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgY29uc3QgY2hhciAqKTsN
CiANCiAvKiBHZW5lcmljIGJ1ZmZlciBoYW5kbGluZyBmb3IgYmxvY2sgZmls
ZXN5c3RlbXMuLiAqLw0KIGV4dGVybiBpbnQgYmxvY2tfcmVhZF9mdWxsX3Bh
Z2Uoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKik7DQotZXh0ZXJuIGlu
dCBibG9ja193cml0ZV9mdWxsX3BhZ2UgKHN0cnVjdCBmaWxlICosIHN0cnVj
dCBwYWdlICosIGZzX2dldGJsb2NrX3QpOw0KLWV4dGVybiBpbnQgYmxvY2tf
d3JpdGVfcGFydGlhbF9wYWdlIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFn
ZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBjb25zdCBjaGFy
ICosIGZzX2dldGJsb2NrX3QpOw0KK2V4dGVybiBpbnQgYmxvY2tfd3JpdGVf
ZnVsbF9wYWdlIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqKTsNCitl
eHRlcm4gaW50IGJsb2NrX3dyaXRlX3BhcnRpYWxfcGFnZSAoc3RydWN0IGZp
bGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQg
bG9uZywgY29uc3QgY2hhciAqKTsNCiBleHRlcm4gaW50IGJsb2NrX2ZsdXNo
cGFnZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQg
bG9uZyk7DQogDQogZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfbW1hcChzdHJ1
Y3QgZmlsZSAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7DQotLS0gbGlu
dXgvaW5jbHVkZS9saW51eC9leHQyX2ZzLmgub3JpZwlGcmkgSnVuIDI1IDEy
OjIzOjMyIDE5OTkNCisrKyBsaW51eC9pbmNsdWRlL2xpbnV4L2V4dDJfZnMu
aAlGcmkgSnVuIDI1IDE2OjQ4OjM2IDE5OTkNCkBAIC01NTMsNyArNTUzLDgg
QEANCiBleHRlcm4gdm9pZCBleHQyX2NoZWNrX2lub2Rlc19iaXRtYXAgKHN0
cnVjdCBzdXBlcl9ibG9jayAqKTsNCiANCiAvKiBpbm9kZS5jICovDQotZXh0
ZXJuIGludCBleHQyX2JtYXAgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOw0KK2V4
dGVybiBsb25nIGV4dDJfYm1hcCAoc3RydWN0IGlub2RlICosIGxvbmcpOw0K
K2V4dGVybiBsb25nIGV4dDJfYm1hcF9jcmVhdGUgKHN0cnVjdCBpbm9kZSAq
LCBsb25nLCBpbnQgKiwgaW50ICopOw0KIA0KIGV4dGVybiBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKiBleHQyX2dldGJsayAoc3RydWN0IGlub2RlICosIGxvbmcs
IGludCwgaW50ICopOw0KIGV4dGVybiBpbnQgZXh0Ml9nZXRibGtfYmxvY2sg
KHN0cnVjdCBpbm9kZSAqLCBsb25nLCBpbnQsIGludCAqLCBpbnQgKik7DQot
LS0gbGludXgvZHJpdmVycy9ibG9jay9sbF9yd19ibGsuYy5vcmlnCUZyaSBK
dW4gMjUgMDk6MzI6MzEgMTk5OQ0KKysrIGxpbnV4L2RyaXZlcnMvYmxvY2sv
bGxfcndfYmxrLmMJRnJpIEp1biAyNSAxNjo0ODozNiAxOTk5DQpAQCAtMzg0
LDEyICszODQsOSBAQA0KIAljb3VudCA9IGJoLT5iX3NpemUgPj4gOTsNCiAJ
c2VjdG9yID0gYmgtPmJfcnNlY3RvcjsNCiANCi0JLyogVWhodWguLiBOYXN0
eSBkZWFkLWxvY2sgcG9zc2libGUgaGVyZS4uICovDQotCWlmIChidWZmZXJf
bG9ja2VkKGJoKSkNCisJLyogT25seSBvbmUgdGhyZWFkIGNhbiBhY3R1YWxs
eSBzdWJtaXQgdGhlIEkvTy4gKi8NCisJaWYgKHRlc3RfYW5kX3NldF9iaXQo
QkhfTG9jaywgJmJoLT5iX3N0YXRlKSkNCiAJCXJldHVybjsNCi0JLyogTWF5
YmUgdGhlIGFib3ZlIGZpeGVzIGl0LCBhbmQgbWF5YmUgaXQgZG9lc24ndCBi
b290LiBMaWZlIGlzIGludGVyZXN0aW5nICovDQotDQotCWxvY2tfYnVmZmVy
KGJoKTsNCiANCiAJaWYgKGJsa19zaXplW21ham9yXSkgew0KIAkJdW5zaWdu
ZWQgbG9uZyBtYXhzZWN0b3IgPSAoYmxrX3NpemVbbWFqb3JdW01JTk9SKGJo
LT5iX3JkZXYpXSA8PCAxKSArIDE7DQotLS0gbGludXgvYXJjaC9zcGFyYzY0
L2tlcm5lbC9zeXNfc3BhcmMzMi5jLm9yaWcJRnJpIEp1biAyNSAwOTozMjoz
MSAxOTk5DQorKysgbGludXgvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXNfc3Bh
cmMzMi5jCUZyaSBKdW4gMjUgMTY6NDg6MzYgMTk5OQ0KQEAgLTI4MzQsNyAr
MjgzNCw2IEBADQogCWJwcm0uZGVudHJ5ID0gZGVudHJ5Ow0KIAlicHJtLmZp
bGVuYW1lID0gZmlsZW5hbWU7DQogCWJwcm0uc2hfYmFuZyA9IDA7DQotCWJw
cm0uamF2YSA9IDA7DQogCWJwcm0ubG9hZGVyID0gMDsNCiAJYnBybS5leGVj
ID0gMDsNCiAJaWYgKChicHJtLmFyZ2MgPSBjb3VudDMyKGFyZ3YpKSA8IDAp
IHsNCi0tLSBsaW51eC9hcmNoL3NwYXJjNjQvbW0vaW5pdC5jLm9yaWcJV2Vk
IEp1biAxNiAyMzowMToyMyAxOTk5DQorKysgbGludXgvYXJjaC9zcGFyYzY0
L21tL2luaXQuYwlGcmkgSnVuIDI1IDE2OjQ4OjM2IDE5OTkNCkBAIC0xLDQg
KzEsNCBAQA0KLS8qICAkSWQ6IGluaXQuYyx2IDEuMTI4IDE5OTkvMDUvMjUg
MTY6NTM6MjQgamogRXhwICQNCisvKiAgJElkOiBpbml0LmMsdiAxLjEyOSAx
OTk5LzA2LzI1IDEwOjMyOjA4IGRhdmVtIEV4cCAkDQogICogIGFyY2gvc3Bh
cmM2NC9tbS9pbml0LmMNCiAgKg0KICAqICBDb3B5cmlnaHQgKEMpIDE5OTYt
MTk5OSBEYXZpZCBTLiBNaWxsZXIgKGRhdmVtQGNhaXAucnV0Z2Vycy5lZHUp
DQpAQCAtNDE5LDEwICs0MTksMTIgQEANCiAJfQ0KIA0KIAlpZiAoaW9tbXUt
PnN0cmJ1Zl9lbmFibGVkKSB7DQorCQl2b2xhdGlsZSB1NjQgKnNidWZfcGZs
dXNoID0gKHZvbGF0aWxlIHU2NCAqKSAmc3JlZ3MtPnNidWZfcGZsdXNoOw0K
Kw0KIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmlvbW11LT5pb21tdV9sb2NrLCBm
bGFncyk7DQogCQlpb21tdS0+Zmx1c2hmbGFnID0gMDsNCiAJCXdoaWxlKHN0
YXJ0IDwgZW5kKSB7DQotCQkJc3JlZ3MtPnNidWZfcGZsdXNoID0gc3RhcnQ7
DQorCQkJKnNidWZfcGZsdXNoID0gc3RhcnQ7DQogCQkJc3RhcnQgKz0gUEFH
RV9TSVpFOw0KIAkJfQ0KIAkJc3JlZ3MtPnNidWZfZnN5bmMgPSBfX3BhKCYo
aW9tbXUtPmZsdXNoZmxhZykpOw0KQEAgLTQ0Nyw2ICs0NDksOCBAQA0KIAlz
dGFydCAmPSBQQUdFX01BU0s7DQogDQogCWlmIChpb21tdS0+c3RyYnVmX2Vu
YWJsZWQpIHsNCisJCXZvbGF0aWxlIHU2NCAqc2J1Zl9wZmx1c2ggPSAodm9s
YXRpbGUgdTY0ICopICZzcmVncy0+c2J1Zl9wZmx1c2g7DQorDQogCQlzcGlu
X2xvY2tfaXJxc2F2ZSgmaW9tbXUtPmlvbW11X2xvY2ssIGZsYWdzKTsNCiAN
CiAJCS8qIDEpIENsZWFyIHRoZSBmbHVzaCBmbGFnIHdvcmQgKi8NCkBAIC00
NTYsNyArNDYwLDcgQEANCiAJCSAqICAgIHdlIHdhbnQgZmx1c2hlZC4NCiAJ
CSAqLw0KIAkJd2hpbGUoc3RhcnQgPCBlbmQpIHsNCi0JCQlzcmVncy0+c2J1
Zl9wZmx1c2ggPSBzdGFydDsNCisJCQkqc2J1Zl9wZmx1c2ggPSBzdGFydDsN
CiAJCQlzdGFydCArPSBQQUdFX1NJWkU7DQogCQl9DQogDQpAQCAtNDg0LDYg
KzQ4OCw4IEBADQogCXZvbGF0aWxlIHU2NCAqc2JjdHJsID0gKHZvbGF0aWxl
IHU2NCAqKSAmc3JlZ3MtPnNidXNfY29udHJvbDsNCiANCiAJaWYgKGlvbW11
LT5zdHJidWZfZW5hYmxlZCkgew0KKwkJdm9sYXRpbGUgdTY0ICpzYnVmX3Bm
bHVzaCA9ICh2b2xhdGlsZSB1NjQgKikgJnNyZWdzLT5zYnVmX3BmbHVzaDsN
CisNCiAJCXNwaW5fbG9ja19pcnFzYXZlKCZpb21tdS0+aW9tbXVfbG9jaywg
ZmxhZ3MpOw0KIAkJaW9tbXUtPmZsdXNoZmxhZyA9IDA7DQogDQpAQCAtNTAw
LDcgKzUwNiw3IEBADQogCQkJc2dbc3otLV0uZHZtYV9hZGRyID0gc2J1c19k
dm1hX2FkZHIoc3RhcnQpOw0KIAkJCXN0YXJ0ICY9IFBBR0VfTUFTSzsNCiAJ
CQl3aGlsZShzdGFydCA8IGVuZCkgew0KLQkJCQlzcmVncy0+c2J1Zl9wZmx1
c2ggPSBzdGFydDsNCisJCQkJKnNidWZfcGZsdXNoID0gc3RhcnQ7DQogCQkJ
CXN0YXJ0ICs9IFBBR0VfU0laRTsNCiAJCQl9DQogCQl9DQpAQCAtNTM1LDYg
KzU0MSw4IEBADQogCXVuc2lnbmVkIGxvbmcgZmxhZ3MsIHRtcDsNCiANCiAJ
aWYgKGlvbW11LT5zdHJidWZfZW5hYmxlZCkgew0KKwkJdm9sYXRpbGUgdTY0
ICpzYnVmX3BmbHVzaCA9ICh2b2xhdGlsZSB1NjQgKikgJnNyZWdzLT5zYnVm
X3BmbHVzaDsNCisNCiAJCXNwaW5fbG9ja19pcnFzYXZlKCZpb21tdS0+aW9t
bXVfbG9jaywgZmxhZ3MpOw0KIA0KIAkJLyogMSkgQ2xlYXIgdGhlIGZsdXNo
IGZsYWcgd29yZCAqLw0KQEAgLTU0OSw3ICs1NTcsNyBAQA0KIA0KIAkJCXN0
YXJ0ICY9IFBBR0VfTUFTSzsNCiAJCQl3aGlsZShzdGFydCA8IGVuZCkgew0K
LQkJCQlzcmVncy0+c2J1Zl9wZmx1c2ggPSBzdGFydDsNCisJCQkJKnNidWZf
cGZsdXNoID0gc3RhcnQ7DQogCQkJCXN0YXJ0ICs9IFBBR0VfU0laRTsNCiAJ
CQl9DQogCQkJc3otLTsNCg==
---1247997369-1920079519-930327660=:29126--

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