porting tmpfs

看板DFBSD_kernel作者時間16年前 (2009/11/14 19:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/3 (看更多)
--0016368e1b105cfbfc04785264f4 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Hi. In July, I=92ve fixed file truncating bug. The problem was the lack of a call to vtruncbuf() in tmpfs_reg_resize(). Now tmpfs survives testing with fsx and fsstress. But also I found some bug at fsstress.c: in function creat_f() line 1684 "add_to_flist(type, id, parid);" must be after the following line "#endif". Without this change fsstress does not remember files that it is created and no reading/writing is performed. (=93no filename=94 error is displayed in verbose mode.) Also I don=92t understand why Alex Hornung has removed tmpfs_spec_vnops. Without adding this ops call to mknod() ends with panic. (I have to run fsstress with option =93=96f mknod=3D0=94.) Next I tried to use objcache instead of plain kmalloc() to allocate tmpfs nodes and direntries. But when objcache is destroyed during unmount, there is a crit_panic "td_pri is/would-go negative! -26" caused by mag_purge() calling crit_exit() at objcache.c. It seems that mag_purge() is not called from the critical section as it is expected. tmpfs now really takes double memory space. I tried to implement page moving between VM objects but I=92ve never seen buffer passed to tmpfs_strategy() with B_RELBUF set. All my attempts to modify buffer flags in tmpfs_read() end with global deadlock. 2 diffs to Alex Hornung's tree are attached: first uses kmalloc(), second uses objcache. --0016368e1b105cfbfc04785264f4 Content-Type: application/octet-stream; name="tmpfs.diff" Content-Disposition: attachment; filename="tmpfs.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g2084zzz0 ZGlmZiAtLWdpdCBhL3N5cy92ZnMvdG1wZnMvdG1wZnMuaCBiL3N5cy92ZnMvdG1wZnMvdG1wZnMu aAppbmRleCAyOTRjMTg3Li45YWRiMjkzCi0tLSBhL3N5cy92ZnMvdG1wZnMvdG1wZnMuaAorKysg Yi9zeXMvdmZzL3RtcGZzL3RtcGZzLmgKQEAgLTcwLDE2ICs3MCwxNiBAQCBNQUxMT0NfREVDTEFS RShNX1RNUEZTKTsKICNkZWZpbmUga211dGV4X3QJCXN0cnVjdCBsb2NrCiAKICNkZWZpbmUgbXV0 ZXhfaW5pdChtdHgsIGEsIGIpCWxvY2tpbml0KG10eCwgIm11dGV4IiwgMCwgMCkKLSNkZWZpbmUg bXV0ZXhfZGVzdHJveShtdHgpCQlsb2NrdW5pbml0KG10eCkKLSNkZWZpbmUgbXV0ZXhfZW50ZXIo bXR4KQkJbG9ja21ncihtdHgsIExLX0VYQ0xVU0lWRSkKLSNkZWZpbmUgbXV0ZXhfZXhpdChtdHgp CQkJbG9ja21ncihtdHgsIExLX1JFTEVBU0UpCisjZGVmaW5lIG11dGV4X2Rlc3Ryb3kobXR4KQls b2NrdW5pbml0KG10eCkKKyNkZWZpbmUgbXV0ZXhfZW50ZXIobXR4KQlsb2NrbWdyKG10eCwgTEtf RVhDTFVTSVZFKQorI2RlZmluZSBtdXRleF9leGl0KG10eCkJCWxvY2ttZ3IobXR4LCBMS19SRUxF QVNFKQogCi0jZGVmaW5lIE1OVF9HRVRBUkdTIDAKLSNkZWZpbmUgSU5UX01BWAkJMHhmZmZmZmZm ZgotI2RlZmluZSBNQVhOQU1MRU4JTU5BTUVMRU4KLSNkZWZpbmUgSU1OVF9NUFNBRkUJMAorI2Rl ZmluZSBNTlRfR0VUQVJHUwkJMAorI2RlZmluZSBJTlRfTUFYCQkJMHhmZmZmZmZmZgorI2RlZmlu ZSBNQVhOQU1MRU4JCU1OQU1FTEVOCisjZGVmaW5lIElNTlRfTVBTQUZFCQkwCiAKLSNkZWZpbmUg dl9pbnRlcmxvY2sJdl9sb2NrCisjZGVmaW5lIHZfaW50ZXJsb2NrCQl2X2xvY2sKIAogI2RlZmlu ZSBVUERBVEVfQ0xPU0UJCTAKIApAQCAtOTIsMTcgKzkyLDcgQEAgTUFMTE9DX0RFQ0xBUkUoTV9U TVBGUyk7CiAjZGVmaW5lIHZtX3BhZ2VfbG9ja19xdWV1ZXMoKQogI2RlZmluZSB2bV9wYWdlX3Vu bG9ja19xdWV1ZXMoKQogCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogRm9yIHRoZSBrZXJuZWwg YW5kIGFueW9uZSB3aG8gbGlrZXMgcGVla2luZyBpbnRvIGtlcm5lbCBtZW1vcnkgICAgICAgICov Ci0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmIGRlZmluZWQoX0tFUk5FTCkKICNpbmNsdWRlIDx2 ZnMvdG1wZnMvdG1wZnNfcG9vbC5oPgotI2VuZGlmIC8qIGRlZmluZWQoX0tFUk5FTCkgKi8KLQot LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tICovCi0KIC8qCiAgKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBh IHRtcGZzIGRpcmVjdG9yeSBlbnRyeS4KICAqLwpkaWZmIC0tZ2l0IGEvc3lzL3Zmcy90bXBmcy90 bXBmc19wb29sLmMgYi9zeXMvdmZzL3RtcGZzL3RtcGZzX3Bvb2wuYwpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNmE0YzEyZC4uMDAwMDAwMAotLS0gYS9zeXMvdmZzL3RtcGZzL3RtcGZz X3Bvb2wuYworKysgL2Rldi9udWxsCkBAIC0xLDI4NSArMCwwIEBACi0vKgkkTmV0QlNEOiB0bXBm c19wb29sLmMsdiAxLjE0IDIwMDgvMDQvMjggMjA6MjQ6MDIgbWFydGluIEV4cCAkCSovCi0KLS8q Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYsIDIwMDcgVGhlIE5ldEJTRCBGb3VuZGF0aW9u LCBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgY29kZSBpcyBkZXJp dmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8gVGhlIE5ldEJTRCBGb3VuZGF0aW9uCi0g KiBieSBKdWxpbyBNLiBNZXJpbm8gVmlkYWwsIGRldmVsb3BlZCBhcyBwYXJ0IG9mIEdvb2dsZSdz IFN1bW1lciBvZiBDb2RlCi0gKiAyMDA1IHByb2dyYW0uCi0gKgotICogUmVkaXN0cmlidXRpb24g YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgTkVUQlNEIEZPVU5EQVRJT04sIElOQy4gQU5EIENP TlRSSUJVVE9SUwotICogYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECi0gKiBUTywgVEhFIElNUExJRUQgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBGT1VOREFU SU9OIE9SIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VEIE9GIFRIRQotICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K LQotLyoKLSAqIFBvb2wgYWxsb2NhdG9yIGFuZCBjb252ZW5pZW5jZSByb3V0aW5lcyBmb3IgdG1w ZnMuCi0gKi8KLQotI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19LRVJORUxfUkNTSUQoMCwgIiRO ZXRCU0Q6IHRtcGZzX3Bvb2wuYyx2IDEuMTQgMjAwOC8wNC8yOCAyMDoyNDowMiBtYXJ0aW4gRXhw ICQiKTsKLQotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2luY2x1ZGUgPHN5cy9wb29sLmg+Ci0j aW5jbHVkZSA8c3lzL2F0b21pYy5oPgotCi0jaW5jbHVkZSA8dXZtL3V2bS5oPgotCi0jaW5jbHVk ZSA8ZnMvdG1wZnMvdG1wZnMuaD4KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLXZvaWQgKgl0bXBm c19wb29sX3BhZ2VfYWxsb2Moc3RydWN0IHBvb2wgKiwgaW50KTsKLXZvaWQJdG1wZnNfcG9vbF9w YWdlX2ZyZWUoc3RydWN0IHBvb2wgKiwgdm9pZCAqKTsKLQotLyogWFhYOiBXaWxsIGdvIGF3YXkg d2hlbiBvdXIgcG9vbCBhbGxvY2F0b3IgZG9lcyB3aGF0IGl0IGhhcyB0byBkbyBieQotICogaXRz ZWxmLiAqLwotZXh0ZXJuIHZvaWQqCXBvb2xfcGFnZV9hbGxvY19ub2ludHIoc3RydWN0IHBvb2wg KiwgaW50KTsKLWV4dGVybiB2b2lkCXBvb2xfcGFnZV9mcmVlX25vaW50cihzdHJ1Y3QgcG9vbCAq LCB2b2lkICopOwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyoKLSAqIHRtcGZzIHByb3ZpZGVz IGEgY3VzdG9tIHBvb2wgYWxsb2NhdG9yIG1vc3RseSB0byBleGFjdGx5IGtlZXAgdHJhY2sgb2YK LSAqIGhvdyBtYW55IG1lbW9yeSBpcyB1c2VkIGZvciBlYWNoIGZpbGUgc3lzdGVtIGluc3RhbmNl LiAgVGhlc2UgcG9vbHMgYXJlCi0gKiBuZXZlciBzaGFyZWQgYWNyb3NzIG11bHRpcGxlIG1vdW50 IHBvaW50cyBmb3IgdGhlIHJlYXNvbnMgZGVzY3JpYmVkCi0gKiBiZWxvdzoKLSAqCi0gKiAtIEl0 IGlzIHZlcnkgZWFzeSB0byBjb250cm9sIGhvdyBtYW55IG1lbW9yeSBpcyBhc3NvY2lhdGVkIHdp dGggYQotICogICBnaXZlbiBmaWxlIHN5c3RlbS4gIHRtcGZzIHByb3ZpZGVzIGEgY3VzdG9tIHBv b2wgYWxsb2NhdG9yIHRoYXQKLSAqICAgY29udHJvbHMgbWVtb3J5IHVzYWdlIGFjY29yZGluZyB0 byBwcmV2aW91c2x5IHNwZWNpZmllZCB1c2FnZQotICogICBsaW1pdHMsIGJ5IHNpbXBseSBpbmNy ZWFzaW5nIG9yIGRlY3JlYXNpbmcgYSBjb3VudGVyIHdoZW4gcGFnZXMKLSAqICAgYXJlIGFsbG9j YXRlZCBvciByZWxlYXNlZCwgcmVzcGVjdGl2ZWx5LgotICoKLSAqICAgSWYgdGhlIHBvb2xzIHdl cmUgc2hhcmVkLCB3ZSBjb3VsZCBlYXNpbHkgZW5kIHVwIHdpdGggdW5hY2NvdW50ZWQKLSAqICAg bWVtb3J5LCB0aHVzIHRha2luZyBpbmNvcnJlY3QgZGVjaXNpb25zIG9uIHRoZSBhbW91bnQgb2Yg bWVtb3J5Ci0gKiAgIHVzZS4gIEFzIGFuIGV4YW1wbGUgdG8gcHJvdmUgdGhpcyBwb2ludCwgY29u c2lkZXIgdHdvIG1vdW50ZWQKLSAqICAgaW5zdGFuY2VzIG9mIHRtcGZzLCBvbmUgbW91bnRlZCBv biBBIGFuZCBhbm90aGVyIG9uZSBvbiBCLiBBc3N1bWUKLSAqICAgdGhhdCBlYWNoIG1lbW9yeSBw YWdlIGNhbiBob2xkIHVwIHRvIGZvdXIgZGlyZWN0b3J5IGVudHJpZXMgYW5kCi0gKiAgIHRoYXQs IGZvciBlYWNoIGVudHJ5IHlvdSBjcmVhdGUgb24gQSwgeW91IGNyZWF0ZSB0aHJlZSBvbiBCCi0g KiAgIGFmdGVyd2FyZHMuICBBZnRlciBkb2luZyB0aGlzLCBlYWNoIG1lbW9yeSBwYWdlIHdpbGwg YmUgaG9sZGluZyBhbgotICogICBlbnRyeSBmcm9tIEEgYW5kIHRocmVlIGZvciBCLiAgSWYgeW91 IHN1bSB1cCBhbGwgdGhlIHNwYWNlIHRha2VuIGJ5Ci0gKiAgIHRoZSB0b3RhbCBhbW91bnQgb2Yg YWxsb2NhdGVkIGVudHJpZXMsIHJvdW5kZWQgdXAgdG8gYSBwYWdlCi0gKiAgIGJvdW5kYXJ5LCB0 aGF0IG51bWJlciB3aWxsIG1hdGNoIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVkIHBhZ2VzLCBzbwot ICogICBldmVyeXRoaW5nIGlzIGZpbmUuCi0gKgotICogICBOb3cgc3VwcG9zZSB3ZSB1bm1vdW50 IEIuICBHaXZlbiB0aGF0IHRoZSBmaWxlIHN5c3RlbSBoYXMgdG8KLSAqICAgZGlzYXBwZWFyLCB3 ZSBoYXZlIHRvIGRlbGV0ZSBhbGwgdGhlIGRpcmVjdG9yeSBlbnRyaWVzIGF0dGFjaGVkIHRvCi0g KiAgIGl0LiAgQnV0IHRoZSBwcm9ibGVtIGlzIHRoYXQgZnJlZWluZyB0aG9zZSBlbnRyaWVzIHdp bGwgbm90IHJlbGVhc2UKLSAqICAgYW55IG1lbW9yeSBwYWdlLiAgSW5zdGVhZCwgZWFjaCBwYWdl IHdpbGwgYmUgZmlsbGVkIHVwIHRvIGEgMjUlLAotICogICBhbmQgdGhlIHJlc3QsIGEgNzUlLCB3 aWxsIGJlIGxvc3QuICBOb3QgbG9zdCBpbiBhIHN0cmljdCB0ZXJtLAotICogICBiZWNhdXNlIHRo ZSBtZW1vcnkgY2FuIGJlIHJldXNlZCBieSBuZXcgZW50cmllcywgYnV0IGxvc3QgaW4gdGhlCi0g KiAgIHNlbnNlIHRoYXQgaXQgaXMgbm90IGFjY291bnRlZCBieSBhbnkgZmlsZSBzeXN0ZW0uICBE ZXNwaXRlIEEgd2lsbAotICogICB0aGluayBpdCBpcyB1c2luZyBhbiBhbW91bnQgJ1gnIG9mIG1l bW9yeSwgaXQgd2lsbCBiZSByZWFsbHkgdXNpbmcKLSAqICAgZm91cnRoIHRpbWVzIHRoYXQgbnVt YmVyLCB0aHVzIGNhdXNpbmcgbWlzdGFrZXMgd2hlbiBpdCBjb21lcyB0bwotICogICBkZWNpZGUg aWYgdGhlcmUgaXMgbW9yZSBmcmVlIHNwYWNlIGZvciB0aGF0IHNwZWNpZmljIGluc3RhbmNlIG9m Ci0gKiAgIHRtcGZzLgotICoKLSAqIC0gVGhlIG51bWJlciBvZiBwYWdlIGZhdWx0cyBhbmQgY2Fj aGUgbWlzc2VzIGlzIHJlZHVjZWQgZ2l2ZW4gdGhhdCBhbGwKLSAqICAgZW50cmllcyBvZiBhIGdp dmVuIGZpbGUgc3lzdGVtIGFyZSBzdG9yZWQgaW4gbGVzcyBwYWdlcy4gIE5vdGUgdGhhdAotICog ICB0aGlzIGlzIHRydWUgYmVjYXVzZSBpdCBpcyBjb21tb24gdG8gYWxsb2NhdGUgYW5kL29yIGFj Y2VzcyBtYW55Ci0gKiAgIGVudHJpZXMgYXQgb25jZSBvbiBhIHNwZWNpZmljIGZpbGUgc3lzdGVt LgotICoKLSAqICAgRm9sbG93aW5nIHRoZSBleGFtcGxlIGdpdmVuIGFib3ZlLCBsaXN0aW5nIGEg ZGlyZWN0b3J5IG9uIGZpbGUgc3lzdGVtCi0gKiAgIEEgY291bGQgcmVzdWx0LCBpbiB0aGUgd29y c3QgY2FzZSBzY2VuYXJpbywgaW4gZm91cnRoIHRpbWVzIG1vcmUgcGFnZQotICogICBmYXVsdHMg aWYgd2Ugc2hhcmVkIHRoZSBwb29scy4KLSAqLwotc3RydWN0IHBvb2xfYWxsb2NhdG9yIHRtcGZz X3Bvb2xfYWxsb2NhdG9yID0gewotCS5wYV9hbGxvYyA9IHRtcGZzX3Bvb2xfcGFnZV9hbGxvYywK LQkucGFfZnJlZSA9IHRtcGZzX3Bvb2xfcGFnZV9mcmVlLAotfTsKLQotLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ICovCi0KLS8qCi0gKiBJbml0aWFsaXplcyB0aGUgcG9vbCBwb2ludGVkIHRvIGJ5IHRwcCBhbmQg YXNzb2NpYXRlcyBpdCB0byB0aGUgbW91bnQKLSAqIHBvaW50IHRtcC4gIFRoZSBzaXplIG9mIGl0 cyBlbGVtZW50cyBpcyBzZXQgdG8gc2l6ZS4gIEl0cyB3YWl0IGNoYW5uZWwKLSAqIGlzIGRlcml2 ZWQgZnJvbSB0aGUgc3RyaW5nIGdpdmVuIGluIHdoYXQgYW5kIHRoZSBtb3VudCBwb2ludCBnaXZl biBpbgotICogJ3RtcCcsIHdoaWNoIHNob3VsZCByZXN1bHQgaW4gYSB1bmlxdWUgc3RyaW5nIGFt b25nIGFsbCBleGlzdGluZyBwb29scy4KLSAqLwotdm9pZAotdG1wZnNfcG9vbF9pbml0KHN0cnVj dCB0bXBmc19wb29sICp0cHAsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICp3aGF0LAotICAgIHN0 cnVjdCB0bXBmc19tb3VudCAqdG1wKQotewotCWludCBjbnQ7Ci0KLQljbnQgPSBzbnByaW50Zih0 cHAtPnRwX25hbWUsIHNpemVvZih0cHAtPnRwX25hbWUpLAotCSAgICAiJXNfdG1wZnNfJXAiLCB3 aGF0LCB0bXApOwotCUtBU1NFUlQoY250IDwgc2l6ZW9mKHRwcC0+dHBfbmFtZSkpOwotCi0JcG9v bF9pbml0KCZ0cHAtPnRwX3Bvb2wsIHNpemUsIDAsIDAsIDAsIHRwcC0+dHBfbmFtZSwKLQkgICAg JnRtcGZzX3Bvb2xfYWxsb2NhdG9yLCBJUExfTk9ORSk7Ci0JdHBwLT50cF9tb3VudCA9IHRtcDsK LX0KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qCi0gKiBEZXN0cm95cyB0aGUgcG9vbCBwb2lu dGVkIHRvIGJ5ICd0cHAnLgotICovCi12b2lkCi10bXBmc19wb29sX2Rlc3Ryb3koc3RydWN0IHRt cGZzX3Bvb2wgKnRwcCkKLXsKLQotCXBvb2xfZGVzdHJveSgoc3RydWN0IHBvb2wgKil0cHApOwot fQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotdm9pZCAqCi10bXBmc19wb29sX3BhZ2VfYWxsb2Mo c3RydWN0IHBvb2wgKnBwLCBpbnQgZmxhZ3MpCi17Ci0Jc3RydWN0IHRtcGZzX3Bvb2wgKnRwcDsK LQlzdHJ1Y3QgdG1wZnNfbW91bnQgKnRtcDsKLQl1bnNpZ25lZCBpbnQgcGFnZXM7Ci0Jdm9pZCAq cGFnZTsKLQotCXRwcCA9IChzdHJ1Y3QgdG1wZnNfcG9vbCAqKXBwOwotCXRtcCA9IHRwcC0+dHBf bW91bnQ7Ci0KLQlwYWdlcyA9IGF0b21pY19pbmNfdWludF9udigmdG1wLT50bV9wYWdlc191c2Vk KTsKLQlpZiAocGFnZXMgPj0gVE1QRlNfUEFHRVNfTUFYKHRtcCkpIHsKLQkJYXRvbWljX2RlY191 aW50KCZ0bXAtPnRtX3BhZ2VzX3VzZWQpOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci0JLyoKLQkgKiB0 bXBmcyBuZXZlciBzcGVjaWZpZXMgUFJfV0FJVE9LIGFzIHdlIGVuZm9yY2UgbG9jYWwgbGltaXRz Ci0JICogb24gbWVtb3J5IGFsbG9jYXRpb24uICBIb3dldmVyLCB3ZSBzaG91bGQgd2FpdCBmb3Ig bWVtb3J5Ci0JICogdG8gYmVjb21lIGF2YWlsYWJsZSBpZiB1bmRlciBvdXIgbGltaXQuICBYWFgg VGhlIHJlc3VsdCBvZgotCSAqIHRoZSBUTVBGU19QQUdFU19NQVgoKSBjaGVjayBpcyBzdGFsZS4K LQkgKi8KLQlwYWdlID0gcG9vbF9wYWdlX2FsbG9jX25vaW50cihwcCwgZmxhZ3MgfCBQUl9XQUlU T0spOwotCWlmIChwYWdlID09IE5VTEwpIHsKLQkJYXRvbWljX2RlY191aW50KCZ0bXAtPnRtX3Bh Z2VzX3VzZWQpOwotCX0KLQotCXJldHVybiBwYWdlOwotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K LQotdm9pZAotdG1wZnNfcG9vbF9wYWdlX2ZyZWUoc3RydWN0IHBvb2wgKnBwLCB2b2lkICp2KQot ewotCXN0cnVjdCB0bXBmc19wb29sICp0cHA7Ci0Jc3RydWN0IHRtcGZzX21vdW50ICp0bXA7Ci0K LQl0cHAgPSAoc3RydWN0IHRtcGZzX3Bvb2wgKilwcDsKLQl0bXAgPSB0cHAtPnRwX21vdW50Owot Ci0JYXRvbWljX2RlY191aW50KCZ0bXAtPnRtX3BhZ2VzX3VzZWQpOwotCXBvb2xfcGFnZV9mcmVl X25vaW50cihwcCwgdik7Ci19Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKgotICogSW5pdGlh bGl6ZSB0aGUgc3RyaW5nIHBvb2wgcG9pbnRlZCB0byBieSAndHNwJyBhbmQgYXR0YWNoIGl0IHRv IHRoZQotICogJ3RtcCcgbW91bnQgcG9pbnQuCi0gKi8KLXZvaWQKLXRtcGZzX3N0cl9wb29sX2lu aXQoc3RydWN0IHRtcGZzX3N0cl9wb29sICp0c3AsIHN0cnVjdCB0bXBmc19tb3VudCAqdG1wKQot ewotCi0JdG1wZnNfcG9vbF9pbml0KCZ0c3AtPnRzcF9wb29sXzE2LCAgIDE2LCAgICJzdHIiLCB0 bXApOwotCXRtcGZzX3Bvb2xfaW5pdCgmdHNwLT50c3BfcG9vbF8zMiwgICAzMiwgICAic3RyIiwg dG1wKTsKLQl0bXBmc19wb29sX2luaXQoJnRzcC0+dHNwX3Bvb2xfNjQsICAgNjQsICAgInN0ciIs IHRtcCk7Ci0JdG1wZnNfcG9vbF9pbml0KCZ0c3AtPnRzcF9wb29sXzEyOCwgIDEyOCwgICJzdHIi LCB0bXApOwotCXRtcGZzX3Bvb2xfaW5pdCgmdHNwLT50c3BfcG9vbF8yNTYsICAyNTYsICAic3Ry IiwgdG1wKTsKLQl0bXBmc19wb29sX2luaXQoJnRzcC0+dHNwX3Bvb2xfNTEyLCAgNTEyLCAgInN0 ciIsIHRtcCk7Ci0JdG1wZnNfcG9vbF9pbml0KCZ0c3AtPnRzcF9wb29sXzEwMjQsIDEwMjQsICJz dHIiLCB0bXApOwotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyoKLSAqIERlc3Ryb3kgdGhl IGdpdmVuIHN0cmluZyBwb29sLgotICovCi12b2lkCi10bXBmc19zdHJfcG9vbF9kZXN0cm95KHN0 cnVjdCB0bXBmc19zdHJfcG9vbCAqdHNwKQotewotCi0JdG1wZnNfcG9vbF9kZXN0cm95KCZ0c3At PnRzcF9wb29sXzE2KTsKLQl0bXBmc19wb29sX2Rlc3Ryb3koJnRzcC0+dHNwX3Bvb2xfMzIpOwot CXRtcGZzX3Bvb2xfZGVzdHJveSgmdHNwLT50c3BfcG9vbF82NCk7Ci0JdG1wZnNfcG9vbF9kZXN0 cm95KCZ0c3AtPnRzcF9wb29sXzEyOCk7Ci0JdG1wZnNfcG9vbF9kZXN0cm95KCZ0c3AtPnRzcF9w b29sXzI1Nik7Ci0JdG1wZnNfcG9vbF9kZXN0cm95KCZ0c3AtPnRzcF9wb29sXzUxMik7Ci0JdG1w ZnNfcG9vbF9kZXN0cm95KCZ0c3AtPnRzcF9wb29sXzEwMjQpOwotfQotCi0vKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gKi8KLQotLyoKLSAqIEFsbG9jYXRlIGEgbmV3IHN0cmluZyB3aXRoIGEgbWluaW11bSBsZW5n dGggb2YgbGVuIGZyb20gdGhlICd0c3AnCi0gKiBzdHJpbmcgcG9vbC4gIFRoZSBwb29sIGNhbiBy ZXR1cm4gYSBiaWdnZXIgc3RyaW5nLCBidXQgdGhlIGNhbGxlciBtdXN0Ci0gKiBub3QgbWFrZSBh bnkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJlYWwgb2JqZWN0IHNpemUuCi0gKi8KLWNoYXIgKgot dG1wZnNfc3RyX3Bvb2xfZ2V0KHN0cnVjdCB0bXBmc19zdHJfcG9vbCAqdHNwLCBzaXplX3QgbGVu LCBpbnQgZmxhZ3MpCi17Ci0Jc3RydWN0IHRtcGZzX3Bvb2wgKnA7Ci0KLQlLQVNTRVJUKGxlbiA8 PSAxMDI0KTsKLQotCWlmICAgICAgKGxlbiA8PSAxNikgICBwID0gJnRzcC0+dHNwX3Bvb2xfMTY7 Ci0JZWxzZSBpZiAobGVuIDw9IDMyKSAgIHAgPSAmdHNwLT50c3BfcG9vbF8zMjsKLQllbHNlIGlm IChsZW4gPD0gNjQpICAgcCA9ICZ0c3AtPnRzcF9wb29sXzY0OwotCWVsc2UgaWYgKGxlbiA8PSAx MjgpICBwID0gJnRzcC0+dHNwX3Bvb2xfMTI4OwotCWVsc2UgaWYgKGxlbiA8PSAyNTYpICBwID0g JnRzcC0+dHNwX3Bvb2xfMjU2OwotCWVsc2UgaWYgKGxlbiA8PSA1MTIpICBwID0gJnRzcC0+dHNw X3Bvb2xfNTEyOwotCWVsc2UgaWYgKGxlbiA8PSAxMDI0KSBwID0gJnRzcC0+dHNwX3Bvb2xfMTAy NDsKLQllbHNlIHsKLQkJS0FTU0VSVCgwKTsKLQkJcCA9IE5VTEw7IC8qIFNpbGVuY2UgY29tcGls ZXIgd2FybmluZ3MgKi8KLQl9Ci0KLQlyZXR1cm4gKGNoYXIgKilUTVBGU19QT09MX0dFVChwLCBm bGFncyk7Ci19Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKgotICogRGVzdHJveSB0aGUgc3Ry IHN0cmluZywgd2hpY2ggd2FzIGFsbG9jYXRlZCBmcm9tIHRoZSAndHNwJyBzdHJpbmcgcG9vbAot ICogd2l0aCBhIGxlbmd0aCBvZiAnbGVuJy4gIFRoZSBsZW5ndGggbXVzdCBtYXRjaCB0aGUgb25l IGdpdmVuIGR1cmluZwotICogYWxsb2NhdGlvbi4KLSAqLwotdm9pZAotdG1wZnNfc3RyX3Bvb2xf cHV0KHN0cnVjdCB0bXBmc19zdHJfcG9vbCAqdHNwLCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCi17 Ci0Jc3RydWN0IHRtcGZzX3Bvb2wgKnA7Ci0KLQlLQVNTRVJUKGxlbiA8PSAxMDI0KTsKLQotCWlm ICAgICAgKGxlbiA8PSAxNikgICBwID0gJnRzcC0+dHNwX3Bvb2xfMTY7Ci0JZWxzZSBpZiAobGVu IDw9IDMyKSAgIHAgPSAmdHNwLT50c3BfcG9vbF8zMjsKLQllbHNlIGlmIChsZW4gPD0gNjQpICAg cCA9ICZ0c3AtPnRzcF9wb29sXzY0OwotCWVsc2UgaWYgKGxlbiA8PSAxMjgpICBwID0gJnRzcC0+ dHNwX3Bvb2xfMTI4OwotCWVsc2UgaWYgKGxlbiA8PSAyNTYpICBwID0gJnRzcC0+dHNwX3Bvb2xf MjU2OwotCWVsc2UgaWYgKGxlbiA8PSA1MTIpICBwID0gJnRzcC0+dHNwX3Bvb2xfNTEyOwotCWVs c2UgaWYgKGxlbiA8PSAxMDI0KSBwID0gJnRzcC0+dHNwX3Bvb2xfMTAyNDsKLQllbHNlIHsKLQkJ S0FTU0VSVCgwKTsKLQkJcCA9IE5VTEw7IC8qIFNpbGVuY2UgY29tcGlsZXIgd2FybmluZ3MgKi8K LQl9Ci0KLQlUTVBGU19QT09MX1BVVChwLCBzdHIpOwotfQpkaWZmIC0tZ2l0IGEvc3lzL3Zmcy90 bXBmcy90bXBmc19wb29sLmggYi9zeXMvdmZzL3RtcGZzL3RtcGZzX3Bvb2wuaAppbmRleCAwMTdj N2Q4Li5mNDQ0NDUyCi0tLSBhL3N5cy92ZnMvdG1wZnMvdG1wZnNfcG9vbC5oCisrKyBiL3N5cy92 ZnMvdG1wZnMvdG1wZnNfcG9vbC5oCkBAIC00Myw2ICs0Myw3IEBAIHN0cnVjdCBwb29sCiB2b2lk ICpwb29sX2dldChzdHJ1Y3QgcG9vbCogcHAsIGludCBmbGFncyk7CiB2b2lkICBwb29sX3B1dChz dHJ1Y3QgcG9vbCogcHAsIHZvaWQgKnApOwogCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKgpA QCAtMTA3LDYgKzEwOCw3IEBAIHZvaWQJdG1wZnNfcG9vbF9kZXN0cm95KHN0cnVjdCB0bXBmc19w b29sICp0cHApOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorCiAvKgogICogRnVuY3Rpb25zIHRv IG1hbmlwdWxhdGUgYSB0bXBmc19zdHJfcG9vbC4KICAqLwpkaWZmIC0tZ2l0IGEvc3lzL3Zmcy90 bXBmcy90bXBmc19zdWJyLmMgYi9zeXMvdmZzL3RtcGZzL3RtcGZzX3N1YnIuYwppbmRleCBiYTA2 MzNlLi4zZTliOGE0Ci0tLSBhL3N5cy92ZnMvdG1wZnMvdG1wZnNfc3Vici5jCisrKyBiL3N5cy92 ZnMvdG1wZnMvdG1wZnNfc3Vici5jCkBAIC04NjEsMTQgKzg2MSwxOCBAQCB0bXBmc19yZWdfcmVz aXplKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IG5ld3NpemUpCiAJc3RydWN0IHRtcGZzX21vdW50 ICp0bXA7CiAJc3RydWN0IHRtcGZzX25vZGUgKm5vZGU7CiAJb2ZmX3Qgb2xkc2l6ZTsKKwlpbnQg dHJ1bmNhdGluZzsKKwlvZmZfdCBhbGlnbmVkX3NpemU7CiAKLQlEUCgidG1wZnNfcmVnX3Jlc2l6 ZSB2cCAlcCBuZXdzaXplICVkXG4iLCB2cCwgKGludCluZXdzaXplKTsKIAlLS0FTU0VSVCh2cC0+ dl90eXBlID09IFZSRUcpOwogCUtLQVNTRVJUKG5ld3NpemUgPj0gMCk7CiAKIAlub2RlID0gVlBf VE9fVE1QRlNfTk9ERSh2cCk7CiAJdG1wID0gVkZTX1RPX1RNUEZTKHZwLT52X21vdW50KTsKIAor CURQKCJ0bXBmc19yZWdfcmVzaXplIHZwICVwIG9sZHNpemUgJWQgbmV3c2l6ZSAlZFxuIiwKKwkJ dnAsIChpbnQpIG5vZGUtPnRuX3NpemUsIChpbnQpIG5ld3NpemUpOworCiAJLyogQ29udmVydCB0 aGUgb2xkIGFuZCBuZXcgc2l6ZXMgdG8gdGhlIG51bWJlciBvZiBwYWdlcyBuZWVkZWQgdG8KIAkg KiBzdG9yZSB0aGVtLiAgSXQgbWF5IGhhcHBlbiB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGRvIGFu eXRoaW5nCiAJICogYmVjYXVzZSB0aGUgbGFzdCBhbGxvY2F0ZWQgcGFnZSBjYW4gYWNjb21tb2Rh dGUgdGhlIGNoYW5nZSBvbgpAQCAtODkwLDggKzg5NCw1MyBAQCB0bXBmc19yZWdfcmVzaXplKHN0 cnVjdCB2bm9kZSAqdnAsIG9mZl90IG5ld3NpemUpCiAJdG1wLT50bV9wYWdlc191c2VkICs9IChu ZXdwYWdlcyAtIG9sZHBhZ2VzKTsKIAlUTVBGU19VTkxPQ0sodG1wKTsKIAorCS8qCisJICogWFhY IGJyZWFrIGF0b21pY3ksIHdlIGNhbiBkZWFkbG9jayB0aGUgYmFja2VuZAorCSAqIGlmIHdlIGRv IG5vdCByZWxlYXNlIHRoZSBsb2NrLiAgUHJvYmFibHkgbm90IGEKKwkgKiBiaWcgZGVhbCBoZXJl LgorCSAqLworCisKKy8vCXZub2RlX3BhZ2VyX3NldHNpemUodnAsIG5ld3NpemUpOworCisJaWYg KG5ld3NpemUgPCBub2RlLT50bl9zaXplKSB7CisJCXZ0cnVuY2J1Zih2cCwgbmV3c2l6ZSwgUEFH RV9TSVpFKTsKKwkJdHJ1bmNhdGluZyA9IDE7CisJfSBlbHNlIHsKKwkJdm5vZGVfcGFnZXJfc2V0 c2l6ZSh2cCwgbmV3c2l6ZSk7CisJCXRydW5jYXRpbmcgPSAwOworCX0KIAlub2RlLT50bl9zaXpl ID0gbmV3c2l6ZTsKLQl2bm9kZV9wYWdlcl9zZXRzaXplKHZwLCBuZXdzaXplKTsKKy8vI2lmIDAK Ky8vCW1vZGZsYWdzIHw9IEhBTU1FUl9JTk9ERV9ERElSVFk7CisKKwkvKgorCSAqIElmIHRydW5j YXRpbmcgd2UgaGF2ZSB0byBjbGVhbiBvdXQgYSBwb3J0aW9uIG9mCisJICogdGhlIGxhc3QgYmxv Y2sgb24tZGlzay4gIFdlIGRvIHRoaXMgaW4gdGhlCisJICogZnJvbnQtZW5kIGJ1ZmZlciBjYWNo ZS4KKwkgKi8KKyNpZiAwCisJYWxpZ25lZF9zaXplID0gcm91bmRfcGFnZShuZXdzaXplKTsKKwlp ZiAodHJ1bmNhdGluZyAmJiBuZXdzaXplIDwgYWxpZ25lZF9zaXplKSB7CisJCXN0cnVjdCBidWYg KmJwOworCQlpbnQgb2Zmc2V0OworCisJCWFsaWduZWRfc2l6ZSAtPSBQQUdFX1NJWkU7CisKKwkJ b2Zmc2V0ID0gKGludCkgbmV3c2l6ZSAmIFBBR0VfTUFTSzsKKwkJZXJyb3IgPSBicmVhZCh2cCwg YWxpZ25lZF9zaXplLCBQQUdFX1NJWkUsICZicCk7CisJCS8vaGFtbWVyX2lwX2Zyb250ZW5kX3Ry dW5jKGlwLCBhbGlnbmVkX3NpemUpOworCQlpZiAoZXJyb3IgPT0gMCkgeworCQkJYnplcm8oYnAt PmJfZGF0YSArIG9mZnNldCwgUEFHRV9TSVpFIC0gb2Zmc2V0KTsKKwkJCS8qIG11c3QgZGUtY2Fj aGUgZGlyZWN0LWlvIG9mZnNldCAqLworCQkJYnAtPmJfYmlvMi5iaW9fb2Zmc2V0ID0gTk9PRkZT RVQ7CisJCQliZHdyaXRlKGJwKTsKKwkJfSBlbHNlIHsKKwkJCWtwcmludGYoInRtcGZzX3JlZ19y ZXNpemUgRVJST1IgJWRcbiIsIGVycm9yKTsKKwkJCWJyZWxzZShicCk7CisJCX0KKwl9CisjZW5k aWYKIAlpZiAobmV3c2l6ZSA8IG9sZHNpemUpIHsKIAkJc2l6ZV90IHplcm9sZW4gPSByb3VuZF9w YWdlKG5ld3NpemUpIC0gbmV3c2l6ZTsKIAkJdm1fb2JqZWN0X3QgdW9iaiA9IG5vZGUtPnRuX3Nw ZWMudG5fcmVnLnRuX2FvYmo7CkBAIC04OTksNiArOTQ4LDcgQEAgdG1wZnNfcmVnX3Jlc2l6ZShz dHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBuZXdzaXplKQogCiAJCS8qICBmcmVlICJiYWNraW5nIHN0 b3JlIiAqLwogCQkvKiBYWFggKi8KKwogCQljcml0X2VudGVyKCk7CiAJCWlmIChuZXdwYWdlcyA8 IG9sZHBhZ2VzKSB7CiAJCQlzd2FwX3BhZ2VyX2ZyZWVzcGFjZSh1b2JqLApAQCAtOTA2LDE2ICs5 NTYsMTggQEAgdG1wZnNfcmVnX3Jlc2l6ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBuZXdzaXpl KQogCQkJdm1fb2JqZWN0X3BhZ2VfcmVtb3ZlKHVvYmosCiAJCQkJT0ZGX1RPX0lEWChuZXdzaXpl ICsgUEFHRV9NQVNLKSwgMCwgRkFMU0UpOwogCQl9Ci0KKyNpZiAwCiAJCS8qIHplcm8gb3V0IHRo ZSB0cnVuY2F0ZWQgcGFydCBvZiB0aGUgbGFzdCBwYWdlLiAqLwotCQlpZiAoemVyb2xlbiA+IDAp IHsKKwkJaWYgKHplcm9sZW4gPj0gMCkgewogCQkJbSA9IHZtX3BhZ2VfZ3JhYih1b2JqLCBPRkZf VE9fSURYKG5ld3NpemUpLAogCQkJCQlWTV9BTExPQ19OT1JNQUwgfCBWTV9BTExPQ19SRVRSWSk7 CiAJCQlwbWFwX3plcm9fcGFnZV9hcmVhKCh2bV9wYWRkcl90KSh2bV9vZmZzZXRfdCltLAogCQkJ ICAgIFBBR0VfU0laRSAtIHplcm9sZW4sIHplcm9sZW4pOwogCQkJdm1fcGFnZV93YWtldXAobSk7 CiAJCX0KKyNlbmRpZgogCQljcml0X2V4aXQoKTsKKwogCX0KIAllcnJvciA9IDA7CiBvdXQ6CkBA IC0xMzQ4LDE0ICsxNDAwLDE0IEBAIHRtcGZzX3Bvb2xfZGVzdHJveShzdHJ1Y3QgdG1wZnNfcG9v bCAqdHBwKQogfQogCiB2b2lkICoKLXBvb2xfZ2V0KHN0cnVjdCBwb29sKiBwcCwgaW50IGZsYWdz KQorcG9vbF9nZXQoc3RydWN0IHBvb2wgKnBwLCBpbnQgZmxhZ3MpCiB7CiAJcHAtPnBfbmFsbG9j cysrOwogCXJldHVybiBrbWFsbG9jKHBwLT5wX3NpemUsIE1fVE1QRlMsIE1fV0FJVE9LIHwgTV9a RVJPKTsKIH0KIAogdm9pZAotcG9vbF9wdXQoc3RydWN0IHBvb2wqIHBwLCB2b2lkICpwKQorcG9v bF9wdXQoc3RydWN0IHBvb2wgKnBwLCB2b2lkICpwKQogewogCXBwLT5wX25mcmVlcysrOwogCWtm cmVlKHAsIE1fVE1QRlMpOwpkaWZmIC0tZ2l0IGEvc3lzL3Zmcy90bXBmcy90bXBmc192bm9wcy5j IGIvc3lzL3Zmcy90bXBmcy90bXBmc192bm9wcy5jCmluZGV4IDVlNmNhZmQuLjRiMWRjNDUKLS0t IGEvc3lzL3Zmcy90bXBmcy90bXBmc192bm9wcy5jCisrKyBiL3N5cy92ZnMvdG1wZnMvdG1wZnNf dm5vcHMuYwpAQCAtMTc5LDEwICsxNzksNiBAQCBzdHJ1Y3Qgdm9wX29wcyB0bXBmc19maWZvX3Zv cHMgPSB7CiAJLyogWFhYIC52b3Bfa3FmaWx0ZXIgPQkJCXRtcGZzX2ZpZm9fa3FmaWx0ZXIgKi8K IH07CiAKLWludCB0bXBmc19zcGVjX3dyaXRlKHN0cnVjdCB2b3Bfd3JpdGVfYXJncyAqYXApOwot aW50IHRtcGZzX3NwZWNfcmVhZChzdHJ1Y3Qgdm9wX3JlYWRfYXJncyAqYXApOwotaW50IHRtcGZz X3NwZWNfY2xvc2Uoc3RydWN0IHZvcF9jbG9zZV9hcmdzICphcCk7Ci0KIGludAogdG1wZnNfbnJl c29sdmUoc3RydWN0IHZvcF9ucmVzb2x2ZV9hcmdzICphcCkKIHsKQEAgLTEyNTMsMTMgKzEyNDks MTIgQEAgdG1wZnNfc3RyYXRlZ3lfcmVhZChzdHJ1Y3Qgdm9wX3N0cmF0ZWd5X2FyZ3MgKmFwKQog CX0KIAogCXNmID0gc2ZfYnVmX2FsbG9jKG0sIFNGQl9DUFVQUklWQVRFKTsKLQl2YSA9IChjYWRk cl90KXNmX2J1Zl9rdmEoc2YpOworCXZhID0gKGNhZGRyX3QpIHNmX2J1Zl9rdmEoc2YpOwogCWJj b3B5KHZhLCBicC0+Yl9kYXRhLCBQQUdFX1NJWkUpOwogCXNmX2J1Zl9mcmVlKHNmKTsKIG91dDoK IAl2bV9wYWdlX3Vud2lyZShtLCAwKTsKIAl2bV9wYWdlX2FjdGl2YXRlKG0pOwotCiAJdm1fcGFn ZV93YWtldXAobSk7CiAJdm1fb2JqZWN0X3BpcF9zdWJ0cmFjdCh0b2JqLCAxKTsKIApAQCAtMTI5 MSw3ICsxMjg2LDcgQEAgdG1wZnNfc3RyYXRlZ3lfd3JpdGUoc3RydWN0IHZvcF9zdHJhdGVneV9h cmdzICphcCkKIAlzdHJ1Y3QgdG1wZnNfbm9kZSAqbm9kZTsKIAogCURQKCJ0bXBmc19zdHJhdGVn eV93cml0ZSBidWYgJXAgYm9mZiAleCByZXNpZCAleCBiY250ICV4ICV4XG4iLAotCQkJYnAsIGJp by0+YmlvX29mZnNldCwgYnAtPmJfcmVzaWQsIGJwLT5iX2Jjb3VudCwgYnAtPmJfYnVmc2l6ZSk7 CisJCWJwLCBiaW8tPmJpb19vZmZzZXQsIGJwLT5iX3Jlc2lkLCBicC0+Yl9iY291bnQsIGJwLT5i X2J1ZnNpemUpOwogCiAJbm9kZSA9IFZQX1RPX1RNUEZTX05PREUoYXAtPmFfdnApOwogCWFkZHIg PSBiaW8tPmJpb19vZmZzZXQ7CkBAIC0xMzI0LDcgKzEzMTksNyBAQCB0bXBmc19zdHJhdGVneV93 cml0ZShzdHJ1Y3Qgdm9wX3N0cmF0ZWd5X2FyZ3MgKmFwKQogCiBvdXQ6CiAJaWYgKCFlcnJvcikg ewotCQl2bV9wYWdlX3NldF92YWxpZGNsZWFuKHRwZywgMCwgUEFHRV9TSVpFKTsKKwkJdm1fcGFn ZV9zZXRfdmFsaWRjbGVhbih0cGcsIDAsIFBBR0VfU0laRSk7LyogWFhYICovCiAJCXZtX3BhZ2Vf emVyb19pbnZhbGlkKHRwZywgVFJVRSk7CiAJCXZtX3BhZ2VfZGlydHkodHBnKTsKIAl9CkBAIC0y MDYwLDMgKzIwNTUsNSBAQCB0bXBmc19maWZvX3dyaXRlKHN0cnVjdCB2b3Bfd3JpdGVfYXJncyAq YXApCiAJaW50IGVycm9yID0gVk9DQUxMKCZmaWZvX3Zub2RlX3ZvcHMsICZhcC0+YV9oZWFkKTsK IAlyZXR1cm4gZXJyb3I7CiB9CisKKwo= --0016368e1b105cfbfc04785264f4 Content-Type: application/octet-stream; name="tmpfs-objcache.diff" Content-Disposition: attachment; filename="tmpfs-objcache.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g20855hq1 ZGlmZiAtLWdpdCBhL3N5cy92ZnMvdG1wZnMvdG1wZnMuaCBiL3N5cy92ZnMvdG1wZnMvdG1wZnMu aAppbmRleCAyOTRjMTg3Li45YWRiMjkzCi0tLSBhL3N5cy92ZnMvdG1wZnMvdG1wZnMuaAorKysg Yi9zeXMvdmZzL3RtcGZzL3RtcGZzLmgKQEAgLTcwLDE2ICs3MCwxNiBAQCBNQUxMT0NfREVDTEFS RShNX1RNUEZTKTsKICNkZWZpbmUga211dGV4X3QJCXN0cnVjdCBsb2NrCiAKICNkZWZpbmUgbXV0 ZXhfaW5pdChtdHgsIGEsIGIpCWxvY2tpbml0KG10eCwgIm11dGV4IiwgMCwgMCkKLSNkZWZpbmUg bXV0ZXhfZGVzdHJveShtdHgpCQlsb2NrdW5pbml0KG10eCkKLSNkZWZpbmUgbXV0ZXhfZW50ZXIo bXR4KQkJbG9ja21ncihtdHgsIExLX0VYQ0xVU0lWRSkKLSNkZWZpbmUgbXV0ZXhfZXhpdChtdHgp CQkJbG9ja21ncihtdHgsIExLX1JFTEVBU0UpCisjZGVmaW5lIG11dGV4X2Rlc3Ryb3kobXR4KQls b2NrdW5pbml0KG10eCkKKyNkZWZpbmUgbXV0ZXhfZW50ZXIobXR4KQlsb2NrbWdyKG10eCwgTEtf RVhDTFVTSVZFKQorI2RlZmluZSBtdXRleF9leGl0KG10eCkJCWxvY2ttZ3IobXR4LCBMS19SRUxF QVNFKQogCi0jZGVmaW5lIE1OVF9HRVRBUkdTIDAKLSNkZWZpbmUgSU5UX01BWAkJMHhmZmZmZmZm ZgotI2RlZmluZSBNQVhOQU1MRU4JTU5BTUVMRU4KLSNkZWZpbmUgSU1OVF9NUFNBRkUJMAorI2Rl ZmluZSBNTlRfR0VUQVJHUwkJMAorI2RlZmluZSBJTlRfTUFYCQkJMHhmZmZmZmZmZgorI2RlZmlu ZSBNQVhOQU1MRU4JCU1OQU1FTEVOCisjZGVmaW5lIElNTlRfTVBTQUZFCQkwCiAKLSNkZWZpbmUg dl9pbnRlcmxvY2sJdl9sb2NrCisjZGVmaW5lIHZfaW50ZXJsb2NrCQl2X2xvY2sKIAogI2RlZmlu ZSBVUERBVEVfQ0xPU0UJCTAKIApAQCAtOTIsMTcgKzkyLDcgQEAgTUFMTE9DX0RFQ0xBUkUoTV9U TVBGUyk7CiAjZGVmaW5lIHZtX3BhZ2VfbG9ja19xdWV1ZXMoKQogI2RlZmluZSB2bV9wYWdlX3Vu bG9ja19xdWV1ZXMoKQogCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogRm9yIHRoZSBrZXJuZWwg YW5kIGFueW9uZSB3aG8gbGlrZXMgcGVla2luZyBpbnRvIGtlcm5lbCBtZW1vcnkgICAgICAgICov Ci0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmIGRlZmluZWQoX0tFUk5FTCkKICNpbmNsdWRlIDx2 ZnMvdG1wZnMvdG1wZnNfcG9vbC5oPgotI2VuZGlmIC8qIGRlZmluZWQoX0tFUk5FTCkgKi8KLQot LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tICovCi0KIC8qCiAgKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBh IHRtcGZzIGRpcmVjdG9yeSBlbnRyeS4KICAqLwpkaWZmIC0tZ2l0IGEvc3lzL3Zmcy90bXBmcy90 bXBmc19wb29sLmMgYi9zeXMvdmZzL3RtcGZzL3RtcGZzX3Bvb2wuYwpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNmE0YzEyZC4uMDAwMDAwMAotLS0gYS9zeXMvdmZzL3RtcGZzL3RtcGZz X3Bvb2wuYworKysgL2Rldi9udWxsCkBAIC0xLDI4NSArMCwwIEBACi0vKgkkTmV0QlNEOiB0bXBm c19wb29sLmMsdiAxLjE0IDIwMDgvMDQvMjggMjA6MjQ6MDIgbWFydGluIEV4cCAkCSovCi0KLS8q Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYsIDIwMDcgVGhlIE5ldEJTRCBGb3VuZGF0aW9u LCBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgY29kZSBpcyBkZXJp dmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8gVGhlIE5ldEJTRCBGb3VuZGF0aW9uCi0g KiBieSBKdWxpbyBNLiBNZXJpbm8gVmlkYWwsIGRldmVsb3BlZCBhcyBwYXJ0IG9mIEdvb2dsZSdz IFN1bW1lciBvZiBDb2RlCi0gKiAyMDA1IHByb2dyYW0uCi0gKgotICogUmVkaXN0cmlidXRpb24g YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgTkVUQlNEIEZPVU5EQVRJT04sIElOQy4gQU5EIENP TlRSSUJVVE9SUwotICogYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECi0gKiBUTywgVEhFIElNUExJRUQgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBGT1VOREFU SU9OIE9SIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VEIE9GIFRIRQotICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K LQotLyoKLSAqIFBvb2wgYWxsb2NhdG9yIGFuZCBjb252ZW5pZW5jZSByb3V0aW5lcyBmb3IgdG1w ZnMuCi0gKi8KLQotI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19LRVJORUxfUkNTSUQoMCwgIiRO ZXRCU0Q6IHRtcGZzX3Bvb2wuYyx2IDEuMTQgMjAwOC8wNC8yOCAyMDoyNDowMiBtYXJ0aW4gRXhw ICQiKTsKLQotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2luY2x1ZGUgPHN5cy9wb29sLmg+Ci0j aW5jbHVkZSA8c3lzL2F0b21pYy5oPgotCi0jaW5jbHVkZSA8dXZtL3V2bS5oPgotCi0jaW5jbHVk ZSA8ZnMvdG1wZnMvdG1wZnMuaD4KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLXZvaWQgKgl0bXBm c19wb29sX3BhZ2VfYWxsb2Moc3RydWN0IHBvb2wgKiwgaW50KTsKLXZvaWQJdG1wZnNfcG9vbF9w YWdlX2ZyZWUoc3RydWN0IHBvb2wgKiwgdm9pZCAqKTsKLQotLyogWFhYOiBXaWxsIGdvIGF3YXkg d2hlbiBvdXIgcG9vbCBhbGxvY2F0b3IgZG9lcyB3aGF0IGl0IGhhcyB0byBkbyBieQotICogaXRz ZWxmLiAqLwotZXh0ZXJuIHZvaWQqCXBvb2xfcGFnZV9hbGxvY19ub2ludHIoc3RydWN0IHBvb2wg KiwgaW50KTsKLWV4dGVybiB2b2lkCXBvb2xfcGFnZV9mcmVlX25vaW50cihzdHJ1Y3QgcG9vbCAq LCB2b2lkICopOwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyoKLSAqIHRtcGZzIHByb3ZpZGVz IGEgY3VzdG9tIHBvb2wgYWxsb2NhdG9yIG1vc3RseSB0byBleGFjdGx5IGtlZXAgdHJhY2sgb2YK LSAqIGhvdyBtYW55IG1lbW9yeSBpcyB1c2VkIGZvciBlYWNoIGZpbGUgc3lzdGVtIGluc3RhbmNl LiAgVGhlc2UgcG9vbHMgYXJlCi0gKiBuZXZlciBzaGFyZWQgYWNyb3NzIG11bHRpcGxlIG1vdW50 IHBvaW50cyBmb3IgdGhlIHJlYXNvbnMgZGVzY3JpYmVkCi0gKiBiZWxvdzoKLSAqCi0gKiAtIEl0 IGlzIHZlcnkgZWFzeSB0byBjb250cm9sIGhvdyBtYW55IG1lbW9yeSBpcyBhc3NvY2lhdGVkIHdp dGggYQotICogICBnaXZlbiBmaWxlIHN5c3RlbS4gIHRtcGZzIHByb3ZpZGVzIGEgY3VzdG9tIHBv b2wgYWxsb2NhdG9yIHRoYXQKLSAqICAgY29udHJvbHMgbWVtb3J5IHVzYWdlIGFjY29yZGluZyB0 byBwcmV2aW91c2x5IHNwZWNpZmllZCB1c2FnZQotICogICBsaW1pdHMsIGJ5IHNpbXBseSBpbmNy ZWFzaW5nIG9yIGRlY3JlYXNpbmcgYSBjb3VudGVyIHdoZW4gcGFnZXMKLSAqICAgYXJlIGFsbG9j YXRlZCBvciByZWxlYXNlZCwgcmVzcGVjdGl2ZWx5LgotICoKLSAqICAgSWYgdGhlIHBvb2xzIHdl cmUgc2hhcmVkLCB3ZSBjb3VsZCBlYXNpbHkgZW5kIHVwIHdpdGggdW5hY2NvdW50ZWQKLSAqICAg bWVtb3J5LCB0aHVzIHRha2luZyBpbmNvcnJlY3QgZGVjaXNpb25zIG9uIHRoZSBhbW91bnQgb2Yg bWVtb3J5Ci0gKiAgIHVzZS4gIEFzIGFuIGV4YW1wbGUgdG8gcHJvdmUgdGhpcyBwb2ludCwgY29u c2lkZXIgdHdvIG1vdW50ZWQKLSAqICAgaW5zdGFuY2VzIG9mIHRtcGZzLCBvbmUgbW91bnRlZCBv biBBIGFuZCBhbm90aGVyIG9uZSBvbiBCLiBBc3N1bWUKLSAqICAgdGhhdCBlYWNoIG1lbW9yeSBw YWdlIGNhbiBob2xkIHVwIHRvIGZvdXIgZGlyZWN0b3J5IGVudHJpZXMgYW5kCi0gKiAgIHRoYXQs IGZvciBlYWNoIGVudHJ5IHlvdSBjcmVhdGUgb24gQSwgeW91IGNyZWF0ZSB0aHJlZSBvbiBCCi0g KiAgIGFmdGVyd2FyZHMuICBBZnRlciBkb2luZyB0aGlzLCBlYWNoIG1lbW9yeSBwYWdlIHdpbGwg YmUgaG9sZGluZyBhbgotICogICBlbnRyeSBmcm9tIEEgYW5kIHRocmVlIGZvciBCLiAgSWYgeW91 IHN1bSB1cCBhbGwgdGhlIHNwYWNlIHRha2VuIGJ5Ci0gKiAgIHRoZSB0b3RhbCBhbW91bnQgb2Yg YWxsb2NhdGVkIGVudHJpZXMsIHJvdW5kZWQgdXAgdG8gYSBwYWdlCi0gKiAgIGJvdW5kYXJ5LCB0 aGF0IG51bWJlciB3aWxsIG1hdGNoIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVkIHBhZ2VzLCBzbwot ICogICBldmVyeXRoaW5nIGlzIGZpbmUuCi0gKgotICogICBOb3cgc3VwcG9zZSB3ZSB1bm1vdW50 IEIuICBHaXZlbiB0aGF0IHRoZSBmaWxlIHN5c3RlbSBoYXMgdG8KLSAqICAgZGlzYXBwZWFyLCB3 ZSBoYXZlIHRvIGRlbGV0ZSBhbGwgdGhlIGRpcmVjdG9yeSBlbnRyaWVzIGF0dGFjaGVkIHRvCi0g KiAgIGl0LiAgQnV0IHRoZSBwcm9ibGVtIGlzIHRoYXQgZnJlZWluZyB0aG9zZSBlbnRyaWVzIHdp bGwgbm90IHJlbGVhc2UKLSAqICAgYW55IG1lbW9yeSBwYWdlLiAgSW5zdGVhZCwgZWFjaCBwYWdl IHdpbGwgYmUgZmlsbGVkIHVwIHRvIGEgMjUlLAotICogICBhbmQgdGhlIHJlc3QsIGEgNzUlLCB3 aWxsIGJlIGxvc3QuICBOb3QgbG9zdCBpbiBhIHN0cmljdCB0ZXJtLAotICogICBiZWNhdXNlIHRo ZSBtZW1vcnkgY2FuIGJlIHJldXNlZCBieSBuZXcgZW50cmllcywgYnV0IGxvc3QgaW4gdGhlCi0g KiAgIHNlbnNlIHRoYXQgaXQgaXMgbm90IGFjY291bnRlZCBieSBhbnkgZmlsZSBzeXN0ZW0uICBE ZXNwaXRlIEEgd2lsbAotICogICB0aGluayBpdCBpcyB1c2luZyBhbiBhbW91bnQgJ1gnIG9mIG1l bW9yeSwgaXQgd2lsbCBiZSByZWFsbHkgdXNpbmcKLSAqICAgZm91cnRoIHRpbWVzIHRoYXQgbnVt YmVyLCB0aHVzIGNhdXNpbmcgbWlzdGFrZXMgd2hlbiBpdCBjb21lcyB0bwotICogICBkZWNpZGUg aWYgdGhlcmUgaXMgbW9yZSBmcmVlIHNwYWNlIGZvciB0aGF0IHNwZWNpZmljIGluc3RhbmNlIG9m Ci0gKiAgIHRtcGZzLgotICoKLSAqIC0gVGhlIG51bWJlciBvZiBwYWdlIGZhdWx0cyBhbmQgY2Fj aGUgbWlzc2VzIGlzIHJlZHVjZWQgZ2l2ZW4gdGhhdCBhbGwKLSAqICAgZW50cmllcyBvZiBhIGdp dmVuIGZpbGUgc3lzdGVtIGFyZSBzdG9yZWQgaW4gbGVzcyBwYWdlcy4gIE5vdGUgdGhhdAotICog ICB0aGlzIGlzIHRydWUgYmVjYXVzZSBpdCBpcyBjb21tb24gdG8gYWxsb2NhdGUgYW5kL29yIGFj Y2VzcyBtYW55Ci0gKiAgIGVudHJpZXMgYXQgb25jZSBvbiBhIHNwZWNpZmljIGZpbGUgc3lzdGVt LgotICoKLSAqICAgRm9sbG93aW5nIHRoZSBleGFtcGxlIGdpdmVuIGFib3ZlLCBsaXN0aW5nIGEg ZGlyZWN0b3J5IG9uIGZpbGUgc3lzdGVtCi0gKiAgIEEgY291bGQgcmVzdWx0LCBpbiB0aGUgd29y c3QgY2FzZSBzY2VuYXJpbywgaW4gZm91cnRoIHRpbWVzIG1vcmUgcGFnZQotICogICBmYXVsdHMg aWYgd2Ugc2hhcmVkIHRoZSBwb29scy4KLSAqLwotc3RydWN0IHBvb2xfYWxsb2NhdG9yIHRtcGZz X3Bvb2xfYWxsb2NhdG9yID0gewotCS5wYV9hbGxvYyA9IHRtcGZzX3Bvb2xfcGFnZV9hbGxvYywK LQkucGFfZnJlZSA9IHRtcGZzX3Bvb2xfcGFnZV9mcmVlLAotfTsKLQotLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ICovCi0KLS8qCi0gKiBJbml0aWFsaXplcyB0aGUgcG9vbCBwb2ludGVkIHRvIGJ5IHRwcCBhbmQg YXNzb2NpYXRlcyBpdCB0byB0aGUgbW91bnQKLSAqIHBvaW50IHRtcC4gIFRoZSBzaXplIG9mIGl0 cyBlbGVtZW50cyBpcyBzZXQgdG8gc2l6ZS4gIEl0cyB3YWl0IGNoYW5uZWwKLSAqIGlzIGRlcml2 ZWQgZnJvbSB0aGUgc3RyaW5nIGdpdmVuIGluIHdoYXQgYW5kIHRoZSBtb3VudCBwb2ludCBnaXZl biBpbgotICogJ3RtcCcsIHdoaWNoIHNob3VsZCByZXN1bHQgaW4gYSB1bmlxdWUgc3RyaW5nIGFt b25nIGFsbCBleGlzdGluZyBwb29scy4KLSAqLwotdm9pZAotdG1wZnNfcG9vbF9pbml0KHN0cnVj dCB0bXBmc19wb29sICp0cHAsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICp3aGF0LAotICAgIHN0 cnVjdCB0bXBmc19tb3VudCAqdG1wKQotewotCWludCBjbnQ7Ci0KLQljbnQgPSBzbnByaW50Zih0 cHAtPnRwX25hbWUsIHNpemVvZih0cHAtPnRwX25hbWUpLAotCSAgICAiJXNfdG1wZnNfJXAiLCB3 aGF0LCB0bXApOwotCUtBU1NFUlQoY250IDwgc2l6ZW9mKHRwcC0+dHBfbmFtZSkpOwotCi0JcG9v bF9pbml0KCZ0cHAtPnRwX3Bvb2wsIHNpemUsIDAsIDAsIDAsIHRwcC0+dHBfbmFtZSwKLQkgICAg JnRtcGZzX3Bvb2xfYWxsb2NhdG9yLCBJUExfTk9ORSk7Ci0JdHBwLT50cF9tb3VudCA9IHRtcDsK LX0KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qCi0gKiBEZXN0cm95cyB0aGUgcG9vbCBwb2lu dGVkIHRvIGJ5ICd0cHAnLgotICovCi12b2lkCi10bXBmc19wb29sX2Rlc3Ryb3koc3RydWN0IHRt cGZzX3Bvb2wgKnRwcCkKLXsKLQotCXBvb2xfZGVzdHJveSgoc3RydWN0IHBvb2wgKil0cHApOwot fQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotdm9pZCAqCi10bXBmc19wb29sX3BhZ2VfYWxsb2Mo c3RydWN0IHBvb2wgKnBwLCBpbnQgZmxhZ3MpCi17Ci0Jc3RydWN0IHRtcGZzX3Bvb2wgKnRwcDsK LQlzdHJ1Y3QgdG1wZnNfbW91bnQgKnRtcDsKLQl1bnNpZ25lZCBpbnQgcGFnZXM7Ci0Jdm9pZCAq cGFnZTsKLQotCXRwcCA9IChzdHJ1Y3QgdG1wZnNfcG9vbCAqKXBwOwotCXRtcCA9IHRwcC0+dHBf bW91bnQ7Ci0KLQlwYWdlcyA9IGF0b21pY19pbmNfdWludF9udigmdG1wLT50bV9wYWdlc191c2Vk KTsKLQlpZiAocGFnZXMgPj0gVE1QRlNfUEFHRVNfTUFYKHRtcCkpIHsKLQkJYXRvbWljX2RlY191 aW50KCZ0bXAtPnRtX3BhZ2VzX3VzZWQpOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci0JLyoKLQkgKiB0 bXBmcyBuZXZlciBzcGVjaWZpZXMgUFJfV0FJVE9LIGFzIHdlIGVuZm9yY2UgbG9jYWwgbGltaXRz Ci0JICogb24gbWVtb3J5IGFsbG9jYXRpb24uICBIb3dldmVyLCB3ZSBzaG91bGQgd2FpdCBmb3Ig bWVtb3J5Ci0JICogdG8gYmVjb21lIGF2YWlsYWJsZSBpZiB1bmRlciBvdXIgbGltaXQuICBYWFgg VGhlIHJlc3VsdCBvZgotCSAqIHRoZSBUTVBGU19QQUdFU19NQVgoKSBjaGVjayBpcyBzdGFsZS4K LQkgKi8KLQlwYWdlID0gcG9vbF9wYWdlX2FsbG9jX25vaW50cihwcCwgZmxhZ3MgfCBQUl9XQUlU T0spOwotCWlmIChwYWdlID09IE5VTEwpIHsKLQkJYXRvbWljX2RlY191aW50KCZ0bXAtPnRtX3Bh Z2VzX3VzZWQpOwotCX0KLQotCXJldHVybiBwYWdlOwotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K LQotdm9pZAotdG1wZnNfcG9vbF9wYWdlX2ZyZWUoc3RydWN0IHBvb2wgKnBwLCB2b2lkICp2KQot ewotCXN0cnVjdCB0bXBmc19wb29sICp0cHA7Ci0Jc3RydWN0IHRtcGZzX21vdW50ICp0bXA7Ci0K LQl0cHAgPSAoc3RydWN0IHRtcGZzX3Bvb2wgKilwcDsKLQl0bXAgPSB0cHAtPnRwX21vdW50Owot Ci0JYXRvbWljX2RlY191aW50KCZ0bXAtPnRtX3BhZ2VzX3VzZWQpOwotCXBvb2xfcGFnZV9mcmVl X25vaW50cihwcCwgdik7Ci19Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKgotICogSW5pdGlh bGl6ZSB0aGUgc3RyaW5nIHBvb2wgcG9pbnRlZCB0byBieSAndHNwJyBhbmQgYXR0YWNoIGl0IHRv IHRoZQotICogJ3RtcCcgbW91bnQgcG9pbnQuCi0gKi8KLXZvaWQKLXRtcGZzX3N0cl9wb29sX2lu aXQoc3RydWN0IHRtcGZzX3N0cl9wb29sICp0c3AsIHN0cnVjdCB0bXBmc19tb3VudCAqdG1wKQot ewotCi0JdG1wZnNfcG9vbF9pbml0KCZ0c3AtPnRzcF9wb29sXzE2LCAgIDE2LCAgICJzdHIiLCB0 bXApOwotCXRtcGZzX3Bvb2xfaW5pdCgmdHNwLT50c3BfcG9vbF8zMiwgICAzMiwgICAic3RyIiwg dG1wKTsKLQl0bXBmc19wb29sX2luaXQoJnRzcC0+dHNwX3Bvb2xfNjQsICAgNjQsICAgInN0ciIs IHRtcCk7Ci0JdG1wZnNfcG9vbF9pbml0KCZ0c3AtPnRzcF9wb29sXzEyOCwgIDEyOCwgICJzdHIi LCB0bXApOwotCXRtcGZzX3Bvb2xfaW5pdCgmdHNwLT50c3BfcG9vbF8yNTYsICAyNTYsICAic3Ry IiwgdG1wKTsKLQl0bXBmc19wb29sX2luaXQoJnRzcC0+dHNwX3Bvb2xfNTEyLCAgNTEyLCAgInN0 ciIsIHRtcCk7Ci0JdG1wZnNfcG9vbF9pbml0KCZ0c3AtPnRzcF9wb29sXzEwMjQsIDEwMjQsICJz dHIiLCB0bXApOwotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyoKLSAqIERlc3Ryb3kgdGhl IGdpdmVuIHN0cmluZyBwb29sLgotICovCi12b2lkCi10bXBmc19zdHJfcG9vbF9kZXN0cm95KHN0 cnVjdCB0bXBmc19zdHJfcG9vbCAqdHNwKQotewotCi0JdG1wZnNfcG9vbF9kZXN0cm95KCZ0c3At PnRzcF9wb29sXzE2KTsKLQl0bXBmc19wb29sX2Rlc3Ryb3koJnRzcC0+dHNwX3Bvb2xfMzIpOwot CXRtcGZzX3Bvb2xfZGVzdHJveSgmdHNwLT50c3BfcG9vbF82NCk7Ci0JdG1wZnNfcG9vbF9kZXN0 cm95KCZ0c3AtPnRzcF9wb29sXzEyOCk7Ci0JdG1wZnNfcG9vbF9kZXN0cm95KCZ0c3AtPnRzcF9w b29sXzI1Nik7Ci0JdG1wZnNfcG9vbF9kZXN0cm95KCZ0c3AtPnRzcF9wb29sXzUxMik7Ci0JdG1w ZnNfcG9vbF9kZXN0cm95KCZ0c3AtPnRzcF9wb29sXzEwMjQpOwotfQotCi0vKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gKi8KLQotLyoKLSAqIEFsbG9jYXRlIGEgbmV3IHN0cmluZyB3aXRoIGEgbWluaW11bSBsZW5n dGggb2YgbGVuIGZyb20gdGhlICd0c3AnCi0gKiBzdHJpbmcgcG9vbC4gIFRoZSBwb29sIGNhbiBy ZXR1cm4gYSBiaWdnZXIgc3RyaW5nLCBidXQgdGhlIGNhbGxlciBtdXN0Ci0gKiBub3QgbWFrZSBh bnkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJlYWwgb2JqZWN0IHNpemUuCi0gKi8KLWNoYXIgKgot dG1wZnNfc3RyX3Bvb2xfZ2V0KHN0cnVjdCB0bXBmc19zdHJfcG9vbCAqdHNwLCBzaXplX3QgbGVu LCBpbnQgZmxhZ3MpCi17Ci0Jc3RydWN0IHRtcGZzX3Bvb2wgKnA7Ci0KLQlLQVNTRVJUKGxlbiA8 PSAxMDI0KTsKLQotCWlmICAgICAgKGxlbiA8PSAxNikgICBwID0gJnRzcC0+dHNwX3Bvb2xfMTY7 Ci0JZWxzZSBpZiAobGVuIDw9IDMyKSAgIHAgPSAmdHNwLT50c3BfcG9vbF8zMjsKLQllbHNlIGlm IChsZW4gPD0gNjQpICAgcCA9ICZ0c3AtPnRzcF9wb29sXzY0OwotCWVsc2UgaWYgKGxlbiA8PSAx MjgpICBwID0gJnRzcC0+dHNwX3Bvb2xfMTI4OwotCWVsc2UgaWYgKGxlbiA8PSAyNTYpICBwID0g JnRzcC0+dHNwX3Bvb2xfMjU2OwotCWVsc2UgaWYgKGxlbiA8PSA1MTIpICBwID0gJnRzcC0+dHNw X3Bvb2xfNTEyOwotCWVsc2UgaWYgKGxlbiA8PSAxMDI0KSBwID0gJnRzcC0+dHNwX3Bvb2xfMTAy NDsKLQllbHNlIHsKLQkJS0FTU0VSVCgwKTsKLQkJcCA9IE5VTEw7IC8qIFNpbGVuY2UgY29tcGls ZXIgd2FybmluZ3MgKi8KLQl9Ci0KLQlyZXR1cm4gKGNoYXIgKilUTVBGU19QT09MX0dFVChwLCBm bGFncyk7Ci19Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKgotICogRGVzdHJveSB0aGUgc3Ry IHN0cmluZywgd2hpY2ggd2FzIGFsbG9jYXRlZCBmcm9tIHRoZSAndHNwJyBzdHJpbmcgcG9vbAot ICogd2l0aCBhIGxlbmd0aCBvZiAnbGVuJy4gIFRoZSBsZW5ndGggbXVzdCBtYXRjaCB0aGUgb25l IGdpdmVuIGR1cmluZwotICogYWxsb2NhdGlvbi4KLSAqLwotdm9pZAotdG1wZnNfc3RyX3Bvb2xf cHV0KHN0cnVjdCB0bXBmc19zdHJfcG9vbCAqdHNwLCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCi17 Ci0Jc3RydWN0IHRtcGZzX3Bvb2wgKnA7Ci0KLQlLQVNTRVJUKGxlbiA8PSAxMDI0KTsKLQotCWlm ICAgICAgKGxlbiA8PSAxNikgICBwID0gJnRzcC0+dHNwX3Bvb2xfMTY7Ci0JZWxzZSBpZiAobGVu IDw9IDMyKSAgIHAgPSAmdHNwLT50c3BfcG9vbF8zMjsKLQllbHNlIGlmIChsZW4gPD0gNjQpICAg cCA9ICZ0c3AtPnRzcF9wb29sXzY0OwotCWVsc2UgaWYgKGxlbiA8PSAxMjgpICBwID0gJnRzcC0+ dHNwX3Bvb2xfMTI4OwotCWVsc2UgaWYgKGxlbiA8PSAyNTYpICBwID0gJnRzcC0+dHNwX3Bvb2xf MjU2OwotCWVsc2UgaWYgKGxlbiA8PSA1MTIpICBwID0gJnRzcC0+dHNwX3Bvb2xfNTEyOwotCWVs c2UgaWYgKGxlbiA8PSAxMDI0KSBwID0gJnRzcC0+dHNwX3Bvb2xfMTAyNDsKLQllbHNlIHsKLQkJ S0FTU0VSVCgwKTsKLQkJcCA9IE5VTEw7IC8qIFNpbGVuY2UgY29tcGlsZXIgd2FybmluZ3MgKi8K LQl9Ci0KLQlUTVBGU19QT09MX1BVVChwLCBzdHIpOwotfQpkaWZmIC0tZ2l0IGEvc3lzL3Zmcy90 bXBmcy90bXBmc19wb29sLmggYi9zeXMvdmZzL3RtcGZzL3RtcGZzX3Bvb2wuaAppbmRleCAwMTdj N2Q4Li41Y2E0MzQxCi0tLSBhL3N5cy92ZnMvdG1wZnMvdG1wZnNfcG9vbC5oCisrKyBiL3N5cy92 ZnMvdG1wZnMvdG1wZnNfcG9vbC5oCkBAIC0zMywxNSArMzMsMTkgQEAKICNpZm5kZWYgX0ZTX1RN UEZTX1RNUEZTX1BPT0xfSF8KICNkZWZpbmUgX0ZTX1RNUEZTX1RNUEZTX1BPT0xfSF8KIAorI2lu Y2x1ZGUgPHN5cy9vYmpjYWNoZS5oPgorCiBzdHJ1Y3QgcG9vbAogeworCXN0cnVjdCBvYmpjYWNo ZSAqcF9vYmpjYWNoZTsKIAlpbnQgcF9zaXplOwogCWludCBwX25hbGxvY3M7CiAJaW50IHBfbmZy ZWVzOwogfTsKIAotdm9pZCAqcG9vbF9nZXQoc3RydWN0IHBvb2wqIHBwLCBpbnQgZmxhZ3MpOwot dm9pZCAgcG9vbF9wdXQoc3RydWN0IHBvb2wqIHBwLCB2b2lkICpwKTsKK3ZvaWQgKnBvb2xfZ2V0 KHN0cnVjdCBwb29sICpwcCwgaW50IGZsYWdzKTsKK3ZvaWQgIHBvb2xfcHV0KHN0cnVjdCBwb29s ICpwcCwgdm9pZCAqcCk7CisKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTk4LDcgKzEwMiw4 IEBAIHN0cnVjdCB0bXBmc19zdHJfcG9vbCB7CiAgKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgYW5k IG1hY3JvcyB0byBtYW5pcHVsYXRlIGEgdG1wZnNfcG9vbC4KICAqLwogCi12b2lkCXRtcGZzX3Bv b2xfaW5pdChzdHJ1Y3QgdG1wZnNfcG9vbCAqdHBwLCBzaXplX3Qgc2l6ZSwKK3ZvaWQJdG1wZnNf cG9vbF9pbml0KHN0cnVjdCB0bXBmc19wb29sICp0cHAsCisJICAgIHN0cnVjdCBvYmpjYWNoZV9t YWxsb2NfYXJncyAqLCAvKiBzaXplX3Qgc2l6ZSwgKi8gCiAJICAgIGNvbnN0IGNoYXIgKndoYXQs IHN0cnVjdCB0bXBmc19tb3VudCAqdG1wKTsKIHZvaWQJdG1wZnNfcG9vbF9kZXN0cm95KHN0cnVj dCB0bXBmc19wb29sICp0cHApOwogCkBAIC0xMDcsNiArMTEyLDcgQEAgdm9pZAl0bXBmc19wb29s X2Rlc3Ryb3koc3RydWN0IHRtcGZzX3Bvb2wgKnRwcCk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwog CisKIC8qCiAgKiBGdW5jdGlvbnMgdG8gbWFuaXB1bGF0ZSBhIHRtcGZzX3N0cl9wb29sLgogICov CmRpZmYgLS1naXQgYS9zeXMvdmZzL3RtcGZzL3RtcGZzX3N1YnIuYyBiL3N5cy92ZnMvdG1wZnMv dG1wZnNfc3Vici5jCmluZGV4IGJhMDYzM2UuLmIwYTU2Y2QKLS0tIGEvc3lzL3Zmcy90bXBmcy90 bXBmc19zdWJyLmMKKysrIGIvc3lzL3Zmcy90bXBmcy90bXBmc19zdWJyLmMKQEAgLTE0MCw3ICsx NDAsOCBAQCB0bXBmc19hbGxvY19ub2RlKHN0cnVjdCB0bXBmc19tb3VudCAqdG1wLCBlbnVtIHZ0 eXBlIHR5cGUsCiAJCXJldHVybiBFTk9TUEM7CiAJfQogCi0Jbm5vZGUgPSAoc3RydWN0IHRtcGZz X25vZGUgKilUTVBGU19QT09MX0dFVCgmdG1wLT50bV9ub2RlX3Bvb2wsIDApOworCW5ub2RlID0g KHN0cnVjdCB0bXBmc19ub2RlICopIFRNUEZTX1BPT0xfR0VUKAorCQkJCSZ0bXAtPnRtX25vZGVf cG9vbCwgTV9XQUlUT0spOwogCWlmIChubm9kZSA9PSBOVUxMKSB7CiAJCWF0b21pY19zdWJ0cmFj dF9pbnQoJnRtcC0+dG1fbm9kZXNfY250LCAxKTsKIAkJcmV0dXJuIEVOT1NQQzsKQEAgLTI5Niw3 ICsyOTcsOCBAQCB0bXBmc19hbGxvY19kaXJlbnQoc3RydWN0IHRtcGZzX21vdW50ICp0bXAsIHN0 cnVjdCB0bXBmc19ub2RlICpub2RlLAogewogCXN0cnVjdCB0bXBmc19kaXJlbnQgKm5kZTsKIAlE UCgidG1wZnNfYWxsb2NfZGlyZW50IHRtcCAlcCBuICVwICUqLipzXG4iLHRtcCxub2RlLGxlbixs ZW4sbmFtZSk7Ci0JbmRlID0gKHN0cnVjdCB0bXBmc19kaXJlbnQgKikgVE1QRlNfUE9PTF9HRVQo JnRtcC0+dG1fZGlyZW50X3Bvb2wsIDApOworCW5kZSA9IChzdHJ1Y3QgdG1wZnNfZGlyZW50ICop IFRNUEZTX1BPT0xfR0VUKAorCQkJJnRtcC0+dG1fZGlyZW50X3Bvb2wsIE1fV0FJVE9LKTsKIAlp ZiAobmRlID09IE5VTEwpCiAJCXJldHVybiBFTk9TUEM7CiAKQEAgLTg2MSwxNCArODYzLDE4IEBA IHRtcGZzX3JlZ19yZXNpemUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbmV3c2l6ZSkKIAlzdHJ1 Y3QgdG1wZnNfbW91bnQgKnRtcDsKIAlzdHJ1Y3QgdG1wZnNfbm9kZSAqbm9kZTsKIAlvZmZfdCBv bGRzaXplOworCWludCB0cnVuY2F0aW5nOworCW9mZl90IGFsaWduZWRfc2l6ZTsKIAotCURQKCJ0 bXBmc19yZWdfcmVzaXplIHZwICVwIG5ld3NpemUgJWRcbiIsIHZwLCAoaW50KW5ld3NpemUpOwog CUtLQVNTRVJUKHZwLT52X3R5cGUgPT0gVlJFRyk7CiAJS0tBU1NFUlQobmV3c2l6ZSA+PSAwKTsK IAogCW5vZGUgPSBWUF9UT19UTVBGU19OT0RFKHZwKTsKIAl0bXAgPSBWRlNfVE9fVE1QRlModnAt PnZfbW91bnQpOwogCisJRFAoInRtcGZzX3JlZ19yZXNpemUgdnAgJXAgb2xkc2l6ZSAlZCBuZXdz aXplICVkXG4iLAorCQl2cCwgKGludCkgbm9kZS0+dG5fc2l6ZSwgKGludCkgbmV3c2l6ZSk7CisK IAkvKiBDb252ZXJ0IHRoZSBvbGQgYW5kIG5ldyBzaXplcyB0byB0aGUgbnVtYmVyIG9mIHBhZ2Vz IG5lZWRlZCB0bwogCSAqIHN0b3JlIHRoZW0uICBJdCBtYXkgaGFwcGVuIHRoYXQgd2UgZG8gbm90 IG5lZWQgdG8gZG8gYW55dGhpbmcKIAkgKiBiZWNhdXNlIHRoZSBsYXN0IGFsbG9jYXRlZCBwYWdl IGNhbiBhY2NvbW1vZGF0ZSB0aGUgY2hhbmdlIG9uCkBAIC04OTAsOCArODk2LDUzIEBAIHRtcGZz X3JlZ19yZXNpemUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbmV3c2l6ZSkKIAl0bXAtPnRtX3Bh Z2VzX3VzZWQgKz0gKG5ld3BhZ2VzIC0gb2xkcGFnZXMpOwogCVRNUEZTX1VOTE9DSyh0bXApOwog CisJLyoKKwkgKiBYWFggYnJlYWsgYXRvbWljeSwgd2UgY2FuIGRlYWRsb2NrIHRoZSBiYWNrZW5k CisJICogaWYgd2UgZG8gbm90IHJlbGVhc2UgdGhlIGxvY2suICBQcm9iYWJseSBub3QgYQorCSAq IGJpZyBkZWFsIGhlcmUuCisJICovCisKKworLy8Jdm5vZGVfcGFnZXJfc2V0c2l6ZSh2cCwgbmV3 c2l6ZSk7CisKKwlpZiAobmV3c2l6ZSA8IG5vZGUtPnRuX3NpemUpIHsKKwkJdnRydW5jYnVmKHZw LCBuZXdzaXplLCBQQUdFX1NJWkUpOworCQl0cnVuY2F0aW5nID0gMTsKKwl9IGVsc2UgeworCQl2 bm9kZV9wYWdlcl9zZXRzaXplKHZwLCBuZXdzaXplKTsKKwkJdHJ1bmNhdGluZyA9IDA7CisJfQog CW5vZGUtPnRuX3NpemUgPSBuZXdzaXplOwotCXZub2RlX3BhZ2VyX3NldHNpemUodnAsIG5ld3Np emUpOworLy8jaWYgMAorLy8JbW9kZmxhZ3MgfD0gSEFNTUVSX0lOT0RFX0RESVJUWTsKKworCS8q CisJICogSWYgdHJ1bmNhdGluZyB3ZSBoYXZlIHRvIGNsZWFuIG91dCBhIHBvcnRpb24gb2YKKwkg KiB0aGUgbGFzdCBibG9jayBvbi1kaXNrLiAgV2UgZG8gdGhpcyBpbiB0aGUKKwkgKiBmcm9udC1l bmQgYnVmZmVyIGNhY2hlLgorCSAqLworI2lmIDAKKwlhbGlnbmVkX3NpemUgPSByb3VuZF9wYWdl KG5ld3NpemUpOworCWlmICh0cnVuY2F0aW5nICYmIG5ld3NpemUgPCBhbGlnbmVkX3NpemUpIHsK KwkJc3RydWN0IGJ1ZiAqYnA7CisJCWludCBvZmZzZXQ7CisKKwkJYWxpZ25lZF9zaXplIC09IFBB R0VfU0laRTsKKworCQlvZmZzZXQgPSAoaW50KSBuZXdzaXplICYgUEFHRV9NQVNLOworCQllcnJv ciA9IGJyZWFkKHZwLCBhbGlnbmVkX3NpemUsIFBBR0VfU0laRSwgJmJwKTsKKwkJLy9oYW1tZXJf aXBfZnJvbnRlbmRfdHJ1bmMoaXAsIGFsaWduZWRfc2l6ZSk7CisJCWlmIChlcnJvciA9PSAwKSB7 CisJCQliemVybyhicC0+Yl9kYXRhICsgb2Zmc2V0LCBQQUdFX1NJWkUgLSBvZmZzZXQpOworCQkJ LyogbXVzdCBkZS1jYWNoZSBkaXJlY3QtaW8gb2Zmc2V0ICovCisJCQlicC0+Yl9iaW8yLmJpb19v ZmZzZXQgPSBOT09GRlNFVDsKKwkJCWJkd3JpdGUoYnApOworCQl9IGVsc2UgeworCQkJa3ByaW50 ZigidG1wZnNfcmVnX3Jlc2l6ZSBFUlJPUiAlZFxuIiwgZXJyb3IpOworCQkJYnJlbHNlKGJwKTsK KwkJfQorCX0KKyNlbmRpZgogCWlmIChuZXdzaXplIDwgb2xkc2l6ZSkgewogCQlzaXplX3QgemVy b2xlbiA9IHJvdW5kX3BhZ2UobmV3c2l6ZSkgLSBuZXdzaXplOwogCQl2bV9vYmplY3RfdCB1b2Jq ID0gbm9kZS0+dG5fc3BlYy50bl9yZWcudG5fYW9iajsKQEAgLTg5OSw2ICs5NTAsNyBAQCB0bXBm c19yZWdfcmVzaXplKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IG5ld3NpemUpCiAKIAkJLyogIGZy ZWUgImJhY2tpbmcgc3RvcmUiICovCiAJCS8qIFhYWCAqLworCiAJCWNyaXRfZW50ZXIoKTsKIAkJ aWYgKG5ld3BhZ2VzIDwgb2xkcGFnZXMpIHsKIAkJCXN3YXBfcGFnZXJfZnJlZXNwYWNlKHVvYmos CkBAIC05MDYsMTYgKzk1OCwxOCBAQCB0bXBmc19yZWdfcmVzaXplKHN0cnVjdCB2bm9kZSAqdnAs IG9mZl90IG5ld3NpemUpCiAJCQl2bV9vYmplY3RfcGFnZV9yZW1vdmUodW9iaiwKIAkJCQlPRkZf VE9fSURYKG5ld3NpemUgKyBQQUdFX01BU0spLCAwLCBGQUxTRSk7CiAJCX0KLQorI2lmIDAKIAkJ LyogemVybyBvdXQgdGhlIHRydW5jYXRlZCBwYXJ0IG9mIHRoZSBsYXN0IHBhZ2UuICovCi0JCWlm ICh6ZXJvbGVuID4gMCkgeworCQlpZiAoemVyb2xlbiA+PSAwKSB7CiAJCQltID0gdm1fcGFnZV9n cmFiKHVvYmosIE9GRl9UT19JRFgobmV3c2l6ZSksCiAJCQkJCVZNX0FMTE9DX05PUk1BTCB8IFZN X0FMTE9DX1JFVFJZKTsKIAkJCXBtYXBfemVyb19wYWdlX2FyZWEoKHZtX3BhZGRyX3QpKHZtX29m ZnNldF90KW0sCiAJCQkgICAgUEFHRV9TSVpFIC0gemVyb2xlbiwgemVyb2xlbik7CiAJCQl2bV9w YWdlX3dha2V1cChtKTsKIAkJfQorI2VuZGlmCiAJCWNyaXRfZXhpdCgpOworCiAJfQogCWVycm9y ID0gMDsKIG91dDoKQEAgLTEzMzAsMTEgKzEzODQsMjAgQEAgb3V0OgogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ICovCiAKIHZvaWQKLXRtcGZzX3Bvb2xfaW5pdChzdHJ1Y3QgdG1wZnNfcG9vbCAqdHBwLCBzaXpl X3Qgc2l6ZSwKLQkgICAgY29uc3QgY2hhciAqd2hhdCwgc3RydWN0IHRtcGZzX21vdW50ICp0bXAp Cit0bXBmc19wb29sX2luaXQoc3RydWN0IHRtcGZzX3Bvb2wgKnRwcCwKKwkJc3RydWN0IG9iamNh Y2hlX21hbGxvY19hcmdzICphcmdzLCAvKiBzaXplX3Qgc2l6ZSwgKi8KKwkJY29uc3QgY2hhciAq d2hhdCwgc3RydWN0IHRtcGZzX21vdW50ICp0bXApCiB7CiAJRFAoInRtcGZzX3Bvb2xfaW5pdCBw b29sICVwIHNpemUgJWRcbiIsIHRwcCwgc2l6ZSk7Ci0JdHBwLT50cF9wb29sLnBfc2l6ZSA9IHNp emU7CisKKworCXRwcC0+dHBfcG9vbC5wX29iamNhY2hlID0gb2JqY2FjaGVfY3JlYXRlKCJ0bXBm cy1vYmpjYWNoZSIsIDAsIDAsCisJCQlOVUxMLCBOVUxMLCBOVUxMLAorCQkJb2JqY2FjaGVfbWFs bG9jX2FsbG9jLAorCQkJb2JqY2FjaGVfbWFsbG9jX2ZyZWUsCisJCQlhcmdzKTsKKwkJCQorCXRw cC0+dHBfcG9vbC5wX3NpemUgPSBhcmdzLT5vYmpzaXplOwogCXRwcC0+dHBfcG9vbC5wX25hbGxv Y3MgPSAwOwogCXRwcC0+dHBfcG9vbC5wX25mcmVlcyA9IDA7CiB9CkBAIC0xMzQ1LDIwICsxNDA4 LDIzIEBAIHRtcGZzX3Bvb2xfZGVzdHJveShzdHJ1Y3QgdG1wZnNfcG9vbCAqdHBwKQogCURQKCJ0 bXBmc19wb29sX2Rlc3Ryb3kgcG9vbCAlcCBhbGxvY3MgJWQgZnJlZXMgJWRcbiIsIHRwcCwKIAkJ dHBwLT50cF9wb29sLnBfbmFsbG9jcywKIAkJdHBwLT50cF9wb29sLnBfbmZyZWVzKTsKKwlvYmpj YWNoZV9kZXN0cm95KHRwcC0+dHBfcG9vbC5wX29iamNhY2hlKTsKIH0KIAogdm9pZCAqCi1wb29s X2dldChzdHJ1Y3QgcG9vbCogcHAsIGludCBmbGFncykKK3Bvb2xfZ2V0KHN0cnVjdCBwb29sICpw cCwgaW50IGZsYWdzKQogewogCXBwLT5wX25hbGxvY3MrKzsKLQlyZXR1cm4ga21hbGxvYyhwcC0+ cF9zaXplLCBNX1RNUEZTLCBNX1dBSVRPSyB8IE1fWkVSTyk7CisJLyogcmV0dXJuIGttYWxsb2Mo cHAtPnBfc2l6ZSwgTV9UTVBGUywgTV9XQUlUT0sgfCBNX1pFUk8pOyAqLworCXJldHVybiBvYmpj YWNoZV9nZXQocHAtPnBfb2JqY2FjaGUsIGZsYWdzKTsKIH0KIAogdm9pZAotcG9vbF9wdXQoc3Ry dWN0IHBvb2wqIHBwLCB2b2lkICpwKQorcG9vbF9wdXQoc3RydWN0IHBvb2wgKnBwLCB2b2lkICpw KQogewogCXBwLT5wX25mcmVlcysrOwotCWtmcmVlKHAsIE1fVE1QRlMpOworCS8qIGtmcmVlKHAs IE1fVE1QRlMpOyAqLworCW9iamNhY2hlX3B1dChwcC0+cF9vYmpjYWNoZSwgcCk7CiB9CiAKIHZv aWQgdG1wZnNfc3RyX3Bvb2xfaW5pdChzdHJ1Y3QgdG1wZnNfc3RyX3Bvb2wgKmEsIHN0cnVjdCB0 bXBmc19tb3VudCAqYikKZGlmZiAtLWdpdCBhL3N5cy92ZnMvdG1wZnMvdG1wZnNfdmZzb3BzLmMg Yi9zeXMvdmZzL3RtcGZzL3RtcGZzX3Zmc29wcy5jCmluZGV4IDhlOTczNWIuLjE1ZTEwNDIKLS0t IGEvc3lzL3Zmcy90bXBmcy90bXBmc192ZnNvcHMuYworKysgYi9zeXMvdmZzL3RtcGZzL3RtcGZz X3Zmc29wcy5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSA8c3lzL3Byb2MuaD4KICNpbmNs dWRlIDxzeXMvbW9kdWxlLmg+CiAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KKyNpbmNsdWRlIDxzeXMv b2JqY2FjaGUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL2F0b21pYy5oPgogCiAjaW5jbHVkZSA8dmZz L3RtcGZzL3RtcGZzLmg+CkBAIC03Nyw2ICs3OCwxMiBAQCBzdGF0aWMgaW50CXRtcGZzX2luaXQo c3RydWN0IHZmc2NvbmYgKmNvbmYpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorc3RydWN0IG9i amNhY2hlX21hbGxvY19hcmdzIHRtcGZzX25vZGVfbWFsbG9jX2FyZ3MgPSB7CisJCXNpemVvZihz dHJ1Y3QgdG1wZnNfbm9kZSksIE1fVE1QRlMgfTsKKworc3RydWN0IG9iamNhY2hlX21hbGxvY19h cmdzIHRtcGZzX2RpcmVudF9tYWxsb2NfYXJncyA9IHsKKwkJc2l6ZW9mKHN0cnVjdCB0bXBmc19k aXJlbnQpLCBNX1RNUEZTIH07CisKIHN0YXRpYyBpbnQKIHRtcGZzX21vdW50KHN0cnVjdCBtb3Vu dCAqbXAsIGNoYXIgKnBhdGgsIGNhZGRyX3QgZGF0YSwgc3RydWN0IHVjcmVkICpjcmVkKQogewpA QCAtMTY5LDkgKzE3NiwxMSBAQCB0bXBmc19tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBjaGFyICpw YXRoLCBjYWRkcl90IGRhdGEsIHN0cnVjdCB1Y3JlZCAqY3JlZCkKIAogCXRtcC0+dG1fcGFnZXNf bWF4ID0gcGFnZXM7CiAJdG1wLT50bV9wYWdlc191c2VkID0gMDsKLQl0bXBmc19wb29sX2luaXQo JnRtcC0+dG1fZGlyZW50X3Bvb2wsIHNpemVvZihzdHJ1Y3QgdG1wZnNfZGlyZW50KSwKKwl0bXBm c19wb29sX2luaXQoJnRtcC0+dG1fZGlyZW50X3Bvb2wsCisJICAgICZ0bXBmc19kaXJlbnRfbWFs bG9jX2FyZ3MsIC8qIHNpemVvZihzdHJ1Y3QgdG1wZnNfZGlyZW50KSwgKi8KIAkgICAgImRpcmVu dCIsIHRtcCk7Ci0JdG1wZnNfcG9vbF9pbml0KCZ0bXAtPnRtX25vZGVfcG9vbCwgc2l6ZW9mKHN0 cnVjdCB0bXBmc19ub2RlKSwKKwl0bXBmc19wb29sX2luaXQoJnRtcC0+dG1fbm9kZV9wb29sLAor CSAgICAmdG1wZnNfbm9kZV9tYWxsb2NfYXJncywgLyogc2l6ZW9mKHN0cnVjdCB0bXBmc19ub2Rl KSwgKi8KIAkgICAgIm5vZGUiLCB0bXApOwogCXRtcGZzX3N0cl9wb29sX2luaXQoJnRtcC0+dG1f c3RyX3Bvb2wsIHRtcCk7CiAKZGlmZiAtLWdpdCBhL3N5cy92ZnMvdG1wZnMvdG1wZnNfdm5vcHMu YyBiL3N5cy92ZnMvdG1wZnMvdG1wZnNfdm5vcHMuYwppbmRleCA1ZTZjYWZkLi40YjFkYzQ1Ci0t LSBhL3N5cy92ZnMvdG1wZnMvdG1wZnNfdm5vcHMuYworKysgYi9zeXMvdmZzL3RtcGZzL3RtcGZz X3Zub3BzLmMKQEAgLTE3OSwxMCArMTc5LDYgQEAgc3RydWN0IHZvcF9vcHMgdG1wZnNfZmlmb192 b3BzID0gewogCS8qIFhYWCAudm9wX2txZmlsdGVyID0JCQl0bXBmc19maWZvX2txZmlsdGVyICov CiB9OwogCi1pbnQgdG1wZnNfc3BlY193cml0ZShzdHJ1Y3Qgdm9wX3dyaXRlX2FyZ3MgKmFwKTsK LWludCB0bXBmc19zcGVjX3JlYWQoc3RydWN0IHZvcF9yZWFkX2FyZ3MgKmFwKTsKLWludCB0bXBm c19zcGVjX2Nsb3NlKHN0cnVjdCB2b3BfY2xvc2VfYXJncyAqYXApOwotCiBpbnQKIHRtcGZzX25y ZXNvbHZlKHN0cnVjdCB2b3BfbnJlc29sdmVfYXJncyAqYXApCiB7CkBAIC0xMjUzLDEzICsxMjQ5 LDEyIEBAIHRtcGZzX3N0cmF0ZWd5X3JlYWQoc3RydWN0IHZvcF9zdHJhdGVneV9hcmdzICphcCkK IAl9CiAKIAlzZiA9IHNmX2J1Zl9hbGxvYyhtLCBTRkJfQ1BVUFJJVkFURSk7Ci0JdmEgPSAoY2Fk ZHJfdClzZl9idWZfa3ZhKHNmKTsKKwl2YSA9IChjYWRkcl90KSBzZl9idWZfa3ZhKHNmKTsKIAli Y29weSh2YSwgYnAtPmJfZGF0YSwgUEFHRV9TSVpFKTsKIAlzZl9idWZfZnJlZShzZik7CiBvdXQ6 CiAJdm1fcGFnZV91bndpcmUobSwgMCk7CiAJdm1fcGFnZV9hY3RpdmF0ZShtKTsKLQogCXZtX3Bh Z2Vfd2FrZXVwKG0pOwogCXZtX29iamVjdF9waXBfc3VidHJhY3QodG9iaiwgMSk7CiAKQEAgLTEy OTEsNyArMTI4Niw3IEBAIHRtcGZzX3N0cmF0ZWd5X3dyaXRlKHN0cnVjdCB2b3Bfc3RyYXRlZ3lf YXJncyAqYXApCiAJc3RydWN0IHRtcGZzX25vZGUgKm5vZGU7CiAKIAlEUCgidG1wZnNfc3RyYXRl Z3lfd3JpdGUgYnVmICVwIGJvZmYgJXggcmVzaWQgJXggYmNudCAleCAleFxuIiwKLQkJCWJwLCBi aW8tPmJpb19vZmZzZXQsIGJwLT5iX3Jlc2lkLCBicC0+Yl9iY291bnQsIGJwLT5iX2J1ZnNpemUp OworCQlicCwgYmlvLT5iaW9fb2Zmc2V0LCBicC0+Yl9yZXNpZCwgYnAtPmJfYmNvdW50LCBicC0+ Yl9idWZzaXplKTsKIAogCW5vZGUgPSBWUF9UT19UTVBGU19OT0RFKGFwLT5hX3ZwKTsKIAlhZGRy ID0gYmlvLT5iaW9fb2Zmc2V0OwpAQCAtMTMyNCw3ICsxMzE5LDcgQEAgdG1wZnNfc3RyYXRlZ3lf d3JpdGUoc3RydWN0IHZvcF9zdHJhdGVneV9hcmdzICphcCkKIAogb3V0OgogCWlmICghZXJyb3Ip IHsKLQkJdm1fcGFnZV9zZXRfdmFsaWRjbGVhbih0cGcsIDAsIFBBR0VfU0laRSk7CisJCXZtX3Bh Z2Vfc2V0X3ZhbGlkY2xlYW4odHBnLCAwLCBQQUdFX1NJWkUpOy8qIFhYWCAqLwogCQl2bV9wYWdl X3plcm9faW52YWxpZCh0cGcsIFRSVUUpOwogCQl2bV9wYWdlX2RpcnR5KHRwZyk7CiAJfQpAQCAt MjA2MCwzICsyMDU1LDUgQEAgdG1wZnNfZmlmb193cml0ZShzdHJ1Y3Qgdm9wX3dyaXRlX2FyZ3Mg KmFwKQogCWludCBlcnJvciA9IFZPQ0FMTCgmZmlmb192bm9kZV92b3BzLCAmYXAtPmFfaGVhZCk7 CiAJcmV0dXJuIGVycm9yOwogfQorCisK --0016368e1b105cfbfc04785264f4--
文章代碼(AID): #1A_etn14 (DFBSD_kernel)
文章代碼(AID): #1A_etn14 (DFBSD_kernel)