<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>10721</bug_id>
          
          <creation_ts>2007-01-27 18:04:18 +0300</creation_ts>
          <short_desc>необходимо наложить патч для поддержки BT headset устройств</short_desc>
          <delta_ts>2008-12-18 18:40:18 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>kernel-image-std-def</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Farygin">rider</reporter>
          <assigned_to name="Vitaly Chikunov">vt</assigned_to>
          <cc>kernelbot</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>44828</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-01-27 18:04:19 +0300</bug_when>
    <thetext>По информации с сайта 
http://bluetooth-alsa.sourceforge.net/build.html

для корректной работы bluetooth гарнитур необходимо наложить патч.

Это critical для меня, просьба добавить патч в следущую сборку ядра.
$ aplay -Dplug:headset /usr/share/sounds/KDE_Startup.wav
Playing WAVE &apos;/usr/share/sounds/KDE_Startup.wav&apos; : Signed 16 bit Little Endian,
Rate 22050 Hz, Mono
ALSA lib pcm_sco.c:273:(sco_headset_hw_params) Unable to set number of SCO
buffers : please upgrade your Kernel !
aplay: set_params:965: Unable to install hw params:
ACCESS:  RW_INTERLEAVED
FORMAT:  S16_LE
SUBFORMAT:  STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: 22050
PERIOD_TIME: 3000
PERIOD_SIZE: (66 67)
PERIOD_BYTES: (132 134)
PERIODS: (164 168)
BUFFER_TIME: (500997 500998)
BUFFER_SIZE: 11047
BUFFER_BYTES: 22094
TICK_TIME: 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44830</commentid>
    <comment_count>1</comment_count>
      <attachid>1764</attachid>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-01-27 18:05:10 +0300</bug_when>
    <thetext>Created attachment 1764
sco-flowcontrol-v2.0.diff

Патч для ядра 2.6.18</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44831</commentid>
    <comment_count>2</comment_count>
      <attachid>1765</attachid>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-01-27 18:05:48 +0300</bug_when>
    <thetext>Created attachment 1765
sco-flowcontrol-v3.0.diff

Патч для ядра 2.6.19</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48123</commentid>
    <comment_count>3</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-04-06 16:39:49 +0400</bug_when>
    <thetext>Когда можно ожидать ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73916</commentid>
    <comment_count>4</comment_count>
    <who name="Michail Yakushin">silicium</who>
    <bug_when>2008-07-11 12:56:35 +0400</bug_when>
    <thetext>Проблема ещё актуальна?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73963</commentid>
    <comment_count>5</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2008-07-11 15:51:36 +0400</bug_when>
    <thetext>Да</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79314</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-10-07 17:11:02 +0400</bug_when>
    <thetext>Тогда reassign.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82001</commentid>
    <comment_count>7</comment_count>
    <who name="Michail Yakushin">silicium</who>
    <bug_when>2008-12-01 12:23:13 +0300</bug_when>
    <thetext>У меня сейчас работает usb headset</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82003</commentid>
    <comment_count>8</comment_count>
    <who name="Michail Yakushin">silicium</who>
    <bug_when>2008-12-01 12:23:37 +0300</bug_when>
    <thetext>Ой не usb а bluetooth</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82016</commentid>
    <comment_count>9</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2008-12-01 15:42:34 +0300</bug_when>
    <thetext>Патч уже не актуален - у меня тоже всё работает через bluetooth-alsa.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82923</commentid>
    <comment_count>10</comment_count>
    <who name="Michail Yakushin">silicium</who>
    <bug_when>2008-12-18 18:40:18 +0300</bug_when>
    <thetext>ну не актуален, так не актуален</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>1764</attachid>
            <date>2007-01-27 18:05:10 +0300</date>
            <delta_ts>2007-01-27 18:05:10 +0300</delta_ts>
            <desc>sco-flowcontrol-v2.0.diff</desc>
            <filename>sco-flowcontrol-v2.0.diff</filename>
            <type>text/plain</type>
            <size>39391</size>
            <attacher name="Anton Farygin">rider</attacher>
            
              <data encoding="base64">ZGlmZiAtdXJOIGxpbnV4LTIuNi4xOC1taDcvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3Jl
LmggbGludXgtMi42LjE4LW1oNy1zY28vaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmgK
LS0tIGxpbnV4LTIuNi4xOC1taDcvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmgJMjAw
Ni0xMS0wMiAwNzo0NTozMS4wMDAwMDAwMDAgLTA3MDAKKysrIGxpbnV4LTIuNi4xOC1taDctc2Nv
L2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2lfY29yZS5oCTIwMDYtMTEtMDIgMDc6NTM6NDQuMDAw
MDAwMDAwIC0wNzAwCkBAIC0yNSw2ICsyNSw4IEBACiAjaWZuZGVmIF9fSENJX0NPUkVfSAogI2Rl
ZmluZSBfX0hDSV9DT1JFX0gKIAorI2luY2x1ZGUgPGxpbnV4L2hydGltZXIuaD4KKwogI2luY2x1
ZGUgPG5ldC9ibHVldG9vdGgvaGNpLmg+CiAKIC8qIEhDSSB1cHBlciBwcm90b2NvbHMgKi8KQEAg
LTg4LDEyICs5MCwxOCBAQAogCXVuc2lnbmVkIGxvbmcJcXVpcmtzOwogCiAJYXRvbWljX3QJY21k
X2NudDsKKwkvKiBOdW1iZXIgb2YgYXZhaWxhYmxlIGNvbnRyb2xsZXIgYnVmZmVycyBmb3IgQUNM
IHBhY2tldHMgKi8KIAl1bnNpZ25lZCBpbnQJYWNsX2NudDsKLQl1bnNpZ25lZCBpbnQJc2NvX2Nu
dDsKKwkvKiBOdW1iZXIgb2YgYXZhaWxhYmxlIGNvbnRyb2xsZXIgYnVmZmVycyBmb3IgU0NPIHBh
Y2tldHMgKi8KKwlhdG9taWNfdAlzY29fY250OwogCisJLyogTWF4aW11bSB0cmFuc21pdGlvbiB1
bml0IGZvciBBQ0wgcGFja2V0cyAqLwogCXVuc2lnbmVkIGludAlhY2xfbXR1OworCS8qIE1heGlt
dW0gdHJhbnNtaXRpb24gdW5pdCBmb3IgU0NPIHBhY2tldHMgKi8KIAl1bnNpZ25lZCBpbnQJc2Nv
X210dTsKKwkvKiBNYXhpbXVtIG51bWJlciBvZiBBQ0wgcGFja2V0cyB0aGUgY29udHJvbGxlciBp
cyBhYmxlIHRvIGJ1ZmZlciAqLwogCXVuc2lnbmVkIGludAlhY2xfcGt0czsKKwkvKiBNYXhpbXVt
IG51bWJlciBvZiBTQ08gcGFja2V0cyB0aGUgY29udHJvbGxlciBpcyBhYmxlIHRvIGJ1ZmZlciAq
LwogCXVuc2lnbmVkIGludAlzY29fcGt0czsKIAogCXVuc2lnbmVkIGxvbmcJY21kX2xhc3RfdHg7
CkBAIC0xNDUsNyArMTUzLDYgQEAKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAKIAlhdG9taWNf
dAkgcmVmY250OwotCXNwaW5sb2NrX3QJIGxvY2s7CiAKIAliZGFkZHJfdAkgZHN0OwogCV9fdTE2
CQkgaGFuZGxlOwpAQCAtMTYyLDEwICsxNjksMTkgQEAKIAlfX3U4ICAgICAgICAgICAgIHBvd2Vy
X3NhdmU7CiAJdW5zaWduZWQgbG9uZwkgcGVuZDsKIAotCXVuc2lnbmVkIGludAkgc2VudDsKLQot
CXN0cnVjdCBza19idWZmX2hlYWQgZGF0YV9xOwotCisJLyogc2VudCByZXByZXNlbnRzIHRoZSBu
dW1iZXIgb2YgcGFja2V0cyB0aGlzIGNvbm5lY3Rpb25zCisgICAgICAgICAgIGhhcyAib24gdGhl
IHdpcmUiIDogLi4uLiBvaCBmLi4uLiB0aGVyZSBhcmUgbm8gd2lyZQorICAgICAgICAgICB3aXRo
IGJsdWV0b290aC4gQnkgb24gdGhlIHdpcmUsIGkgbWVhbiBwYWNrZXRzIHRoYXQgaGF2ZSBiZWVu
IHNlbnQKKwkgICB0byB0aGUgSENJIGRldmljZSwgYW5kIHRoYXQgYXJlIHN0aWxsIGluIGl0cyBi
dWZmZXJzICovCisJYXRvbWljX3QJIHNlbnQ7CisKKwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIG91dF9x
OworCS8qIFRoaXMgaXMgb25seSB1c2VkIGZvciBTQ08gZm9yIG5vdyAqLworCXZvaWQgKCpwa3Rf
c2VudF9jYikoc3RydWN0IGhjaV9jb25uICpjb25uKTsKKworCS8qIHR4IHRpbWVyIDogdXNlZCBv
bmx5IGZvciBTQ08gKi8KKwlzdHJ1Y3QgaHJ0aW1lciB0eF90aW1lcjsKKwkvKiBEaXNjb25uZWN0
IHRpbWVyICovCiAJc3RydWN0IHRpbWVyX2xpc3QgZGlzY190aW1lcjsKIAlzdHJ1Y3QgdGltZXJf
bGlzdCBpZGxlX3RpbWVyOwogCkBAIC02MTQsNyArNjMwLDEwIEBACiAKIGludCBoY2lfc2VuZF9j
bWQoc3RydWN0IGhjaV9kZXYgKmhkZXYsIF9fdTE2IG9nZiwgX191MTYgb2NmLCBfX3UzMiBwbGVu
LCB2b2lkICpwYXJhbSk7CiBpbnQgaGNpX3NlbmRfYWNsKHN0cnVjdCBoY2lfY29ubiAqY29ubiwg
c3RydWN0IHNrX2J1ZmYgKnNrYiwgX191MTYgZmxhZ3MpOwotaW50IGhjaV9zZW5kX3NjbyhzdHJ1
Y3QgaGNpX2Nvbm4gKmNvbm4sIHN0cnVjdCBza19idWZmICpza2IpOworaW50IGhjaV9zZW5kX3Nj
byhzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4sIAorCQkJc3RydWN0IHNrX2J1ZmYgKnNrYiwgCisJCQlp
bnQgc25kYnVmc2l6ZSwgCisJCQl2b2lkICgqc2VuZF9jb21wbGV0ZV9jYikoc3RydWN0IGhjaV9j
b25uICpjb25uKSk7CiAKIHZvaWQgKmhjaV9zZW50X2NtZF9kYXRhKHN0cnVjdCBoY2lfZGV2ICpo
ZGV2LCBfX3UxNiBvZ2YsIF9fdTE2IG9jZik7CiAKZGlmZiAtdXJOIGxpbnV4LTIuNi4xOC1taDcv
aW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmh+IGxpbnV4LTIuNi4xOC1taDctc2NvL2lu
Y2x1ZGUvbmV0L2JsdWV0b290aC9oY2lfY29yZS5ofgotLS0gbGludXgtMi42LjE4LW1oNy9pbmNs
dWRlL25ldC9ibHVldG9vdGgvaGNpX2NvcmUuaH4JMTk2OS0xMi0zMSAxNzowMDowMC4wMDAwMDAw
MDAgLTA3MDAKKysrIGxpbnV4LTIuNi4xOC1taDctc2NvL2luY2x1ZGUvbmV0L2JsdWV0b290aC9o
Y2lfY29yZS5ofgkyMDA2LTExLTAyIDA3OjUxOjA5LjAwMDAwMDAwMCAtMDcwMApAQCAtMCwwICsx
LDY2MSBAQAorLyogCisgICBCbHVlWiAtIEJsdWV0b290aCBwcm90b2NvbCBzdGFjayBmb3IgTGlu
dXgKKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAxIFF1YWxjb21tIEluY29ycG9yYXRlZAorCisg
ICBXcml0dGVuIDIwMDAsMjAwMSBieSBNYXhpbSBLcmFzbnlhbnNreSA8bWF4a0BxdWFsY29tbS5j
b20+CisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICAgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247CisKKyAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi
QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCisgICBPUiBJTVBM
SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSwKKyAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J
TkZSSU5HRU1FTlQgT0YgVEhJUkQgUEFSVFkgUklHSFRTLgorICAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIoUykgQU5EIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWQor
ICAgQ0xBSU0sIE9SIEFOWSBTUEVDSUFMIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UywgT1IgQU5ZIERBTUFHRVMgCisgICBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0Yg
VVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gCisgICBBQ1RJT04gT0YgQ09OVFJB
Q1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiAK
KyAgIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMg
U09GVFdBUkUuCisKKyAgIEFMTCBMSUFCSUxJVFksIElOQ0xVRElORyBMSUFCSUxJVFkgRk9SIElO
RlJJTkdFTUVOVCBPRiBBTlkgUEFURU5UUywgCisgICBDT1BZUklHSFRTLCBUUkFERU1BUktTIE9S
IE9USEVSIFJJR0hUUywgUkVMQVRJTkcgVE8gVVNFIE9GIFRISVMgCisgICBTT0ZUV0FSRSBJUyBE
SVNDTEFJTUVELgorKi8KKworI2lmbmRlZiBfX0hDSV9DT1JFX0gKKyNkZWZpbmUgX19IQ0lfQ09S
RV9ICisKKyNpbmNsdWRlIDxsaW51eC9ocnRpbWVyLmg+CisKKyNpbmNsdWRlIDxuZXQvYmx1ZXRv
b3RoL2hjaS5oPgorCisvKiBIQ0kgdXBwZXIgcHJvdG9jb2xzICovCisjZGVmaW5lIEhDSV9QUk9U
T19MMkNBUAkwCisjZGVmaW5lIEhDSV9QUk9UT19TQ08JMQorCisvKiBIQ0kgQ29yZSBzdHJ1Y3R1
cmVzICovCitzdHJ1Y3QgaW5xdWlyeV9kYXRhIHsKKwliZGFkZHJfdAliZGFkZHI7CisJX191OAkJ
cHNjYW5fcmVwX21vZGU7CisJX191OAkJcHNjYW5fcGVyaW9kX21vZGU7CisJX191OAkJcHNjYW5f
bW9kZTsKKwlfX3U4CQlkZXZfY2xhc3NbM107CisJX19sZTE2CQljbG9ja19vZmZzZXQ7CisJX19z
OAkJcnNzaTsKK307CisKK3N0cnVjdCBpbnF1aXJ5X2VudHJ5IHsKKwlzdHJ1Y3QgaW5xdWlyeV9l
bnRyeSAJKm5leHQ7CisJX191MzIJCQl0aW1lc3RhbXA7CisJc3RydWN0IGlucXVpcnlfZGF0YQlk
YXRhOworfTsKKworc3RydWN0IGlucXVpcnlfY2FjaGUgeworCXNwaW5sb2NrX3QgCQlsb2NrOwor
CV9fdTMyCQkJdGltZXN0YW1wOworCXN0cnVjdCBpbnF1aXJ5X2VudHJ5IAkqbGlzdDsKK307CisK
K3N0cnVjdCBoY2lfY29ubl9oYXNoIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisJc3Bpbmxv
Y2tfdCAgICAgICBsb2NrOworCXVuc2lnbmVkIGludCAgICAgYWNsX251bTsKKwl1bnNpZ25lZCBp
bnQgICAgIHNjb19udW07Cit9OworCitzdHJ1Y3QgaGNpX2RldiB7CisJc3RydWN0IGxpc3RfaGVh
ZCBsaXN0OworCXNwaW5sb2NrX3QJbG9jazsKKwlhdG9taWNfdAlyZWZjbnQ7CisKKwljaGFyCQlu
YW1lWzhdOworCXVuc2lnbmVkIGxvbmcJZmxhZ3M7CisJX191MTYJCWlkOworCV9fdTgJCXR5cGU7
CisJYmRhZGRyX3QJYmRhZGRyOworCV9fdTgJCWZlYXR1cmVzWzhdOworCV9fdTgJCWhjaV92ZXI7
CisJX191MTYJCWhjaV9yZXY7CisJX191MTYJCW1hbnVmYWN0dXJlcjsKKwlfX3UxNgkJdm9pY2Vf
c2V0dGluZzsKKworCV9fdTE2CQlwa3RfdHlwZTsKKwlfX3UxNgkJbGlua19wb2xpY3k7CisJX191
MTYJCWxpbmtfbW9kZTsKKworCV9fdTMyCQlpZGxlX3RpbWVvdXQ7CisJX191MTYJCXNuaWZmX21p
bl9pbnRlcnZhbDsKKwlfX3UxNgkJc25pZmZfbWF4X2ludGVydmFsOworCisJdW5zaWduZWQgbG9u
ZwlxdWlya3M7CisKKwlhdG9taWNfdAljbWRfY250OworCS8qIE51bWJlciBvZiBhdmFpbGFibGUg
Y29udHJvbGxlciBidWZmZXJzIGZvciBBQ0wgcGFja2V0cyAqLworCXVuc2lnbmVkIGludAlhY2xf
Y250OworCS8qIE51bWJlciBvZiBhdmFpbGFibGUgY29udHJvbGxlciBidWZmZXJzIGZvciBTQ08g
cGFja2V0cyAqLworCWF0b21pY190CXNjb19jbnQ7CisKKwkvKiBNYXhpbXVtIHRyYW5zbWl0aW9u
IHVuaXQgZm9yIEFDTCBwYWNrZXRzICovCisJdW5zaWduZWQgaW50CWFjbF9tdHU7CisJLyogTWF4
aW11bSB0cmFuc21pdGlvbiB1bml0IGZvciBTQ08gcGFja2V0cyAqLworCXVuc2lnbmVkIGludAlz
Y29fbXR1OworCS8qIE1heGltdW0gbnVtYmVyIG9mIEFDTCBwYWNrZXRzIHRoZSBjb250cm9sbGVy
IGlzIGFibGUgdG8gYnVmZmVyICovCisJdW5zaWduZWQgaW50CWFjbF9wa3RzOworCS8qIE1heGlt
dW0gbnVtYmVyIG9mIFNDTyBwYWNrZXRzIHRoZSBjb250cm9sbGVyIGlzIGFibGUgdG8gYnVmZmVy
ICovCisJdW5zaWduZWQgaW50CXNjb19wa3RzOworCisJdW5zaWduZWQgbG9uZwljbWRfbGFzdF90
eDsKKwl1bnNpZ25lZCBsb25nCWFjbF9sYXN0X3R4OworCXVuc2lnbmVkIGxvbmcJc2NvX2xhc3Rf
dHg7CisKKwlzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QJY21kX3Rhc2s7CisJc3RydWN0IHRhc2tsZXRf
c3RydWN0CXJ4X3Rhc2s7CisJc3RydWN0IHRhc2tsZXRfc3RydWN0CXR4X3Rhc2s7CisKKwlzdHJ1
Y3Qgc2tfYnVmZl9oZWFkCXJ4X3E7CisJc3RydWN0IHNrX2J1ZmZfaGVhZAlyYXdfcTsKKwlzdHJ1
Y3Qgc2tfYnVmZl9oZWFkCWNtZF9xOworCisJc3RydWN0IHNrX2J1ZmYJCSpzZW50X2NtZDsKKwor
CXN0cnVjdCBzZW1hcGhvcmUJcmVxX2xvY2s7CisJd2FpdF9xdWV1ZV9oZWFkX3QJcmVxX3dhaXRf
cTsKKwlfX3UzMgkJCXJlcV9zdGF0dXM7CisJX191MzIJCQlyZXFfcmVzdWx0OworCisJc3RydWN0
IGlucXVpcnlfY2FjaGUJaW5xX2NhY2hlOworCXN0cnVjdCBoY2lfY29ubl9oYXNoCWNvbm5faGFz
aDsKKworCXN0cnVjdCBoY2lfZGV2X3N0YXRzCXN0YXQ7CisKKwlzdHJ1Y3Qgc2tfYnVmZl9oZWFk
CWRyaXZlcl9pbml0OworCisJdm9pZAkJCSpkcml2ZXJfZGF0YTsKKwl2b2lkCQkJKmNvcmVfZGF0
YTsKKworCWF0b21pY190IAkJcHJvbWlzYzsKKworCXN0cnVjdCBkZXZpY2UJCSpwYXJlbnQ7CisJ
c3RydWN0IGRldmljZQkJZGV2OworCisJc3RydWN0IG1vZHVsZSAJCSpvd25lcjsKKworCWludCAo
Km9wZW4pKHN0cnVjdCBoY2lfZGV2ICpoZGV2KTsKKwlpbnQgKCpjbG9zZSkoc3RydWN0IGhjaV9k
ZXYgKmhkZXYpOworCWludCAoKmZsdXNoKShzdHJ1Y3QgaGNpX2RldiAqaGRldik7CisJaW50ICgq
c2VuZCkoc3RydWN0IHNrX2J1ZmYgKnNrYik7CisJdm9pZCAoKmRlc3RydWN0KShzdHJ1Y3QgaGNp
X2RldiAqaGRldik7CisJdm9pZCAoKm5vdGlmeSkoc3RydWN0IGhjaV9kZXYgKmhkZXYsIHVuc2ln
bmVkIGludCBldnQpOworCWludCAoKmlvY3RsKShzdHJ1Y3QgaGNpX2RldiAqaGRldiwgdW5zaWdu
ZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOworfTsKKworc3RydWN0IGhjaV9jb25uIHsK
KwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisKKwlhdG9taWNfdAkgcmVmY250OworCisJYmRhZGRy
X3QJIGRzdDsKKwlfX3UxNgkJIGhhbmRsZTsKKwlfX3UxNgkJIHN0YXRlOworCV9fdTggICAgICAg
ICAgICAgbW9kZTsKKwlfX3U4CQkgdHlwZTsKKwlfX3U4CQkgb3V0OworCV9fdTgJCSBhdHRlbXB0
OworCV9fdTgJCSBkZXZfY2xhc3NbM107CisJX191OCAgICAgICAgICAgICBmZWF0dXJlc1s4XTsK
KwlfX3UxNiAgICAgICAgICAgIGludGVydmFsOworCV9fdTE2ICAgICAgICAgICAgbGlua19wb2xp
Y3k7CisJX191MzIJCSBsaW5rX21vZGU7CisJX191OCAgICAgICAgICAgICBwb3dlcl9zYXZlOwor
CXVuc2lnbmVkIGxvbmcJIHBlbmQ7CisKKwlzdHJ1Y3QgdGltZXJfbGlzdCBkaXNjX3RpbWVyOwor
CXN0cnVjdCB0aW1lcl9saXN0IGlkbGVfdGltZXI7CisKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29y
azsKKworCXN0cnVjdCBkZXZpY2UJZGV2OworCisJc3RydWN0IGhjaV9kZXYJKmhkZXY7CisJdm9p
ZAkJKmwyY2FwX2RhdGE7CisJdm9pZAkJKnNjb19kYXRhOworCXZvaWQJCSpwcml2OworCisJc3Ry
dWN0IGhjaV9jb25uCSpsaW5rOworfTsKKworZXh0ZXJuIHN0cnVjdCBoY2lfcHJvdG8gKmhjaV9w
cm90b1tdOworZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgaGNpX2Rldl9saXN0OworZXh0ZXJuIHN0
cnVjdCBsaXN0X2hlYWQgaGNpX2NiX2xpc3Q7CitleHRlcm4gcndsb2NrX3QgaGNpX2Rldl9saXN0
X2xvY2s7CitleHRlcm4gcndsb2NrX3QgaGNpX2NiX2xpc3RfbG9jazsKKworLyogLS0tLS0gSW5x
dWlyeSBjYWNoZSAtLS0tLSAqLworI2RlZmluZSBJTlFVSVJZX0NBQ0hFX0FHRV9NQVggICAoSFoq
MzApICAgLy8gMzAgc2Vjb25kcworI2RlZmluZSBJTlFVSVJZX0VOVFJZX0FHRV9NQVggICAoSFoq
NjApICAgLy8gNjAgc2Vjb25kcworCisjZGVmaW5lIGlucXVpcnlfY2FjaGVfbG9jayhjKQkJc3Bp
bl9sb2NrKCZjLT5sb2NrKQorI2RlZmluZSBpbnF1aXJ5X2NhY2hlX3VubG9jayhjKQkJc3Bpbl91
bmxvY2soJmMtPmxvY2spCisjZGVmaW5lIGlucXVpcnlfY2FjaGVfbG9ja19iaChjKQlzcGluX2xv
Y2tfYmgoJmMtPmxvY2spCisjZGVmaW5lIGlucXVpcnlfY2FjaGVfdW5sb2NrX2JoKGMpCXNwaW5f
dW5sb2NrX2JoKCZjLT5sb2NrKQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW5xdWlyeV9jYWNoZV9p
bml0KHN0cnVjdCBoY2lfZGV2ICpoZGV2KQoreworCXN0cnVjdCBpbnF1aXJ5X2NhY2hlICpjID0g
JmhkZXYtPmlucV9jYWNoZTsKKwlzcGluX2xvY2tfaW5pdCgmYy0+bG9jayk7CisJYy0+bGlzdCA9
IE5VTEw7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGlucXVpcnlfY2FjaGVfZW1wdHkoc3RydWN0
IGhjaV9kZXYgKmhkZXYpCit7CisJc3RydWN0IGlucXVpcnlfY2FjaGUgKmMgPSAmaGRldi0+aW5x
X2NhY2hlOworCXJldHVybiAoYy0+bGlzdCA9PSBOVUxMKTsKK30KKworc3RhdGljIGlubGluZSBs
b25nIGlucXVpcnlfY2FjaGVfYWdlKHN0cnVjdCBoY2lfZGV2ICpoZGV2KQoreworCXN0cnVjdCBp
bnF1aXJ5X2NhY2hlICpjID0gJmhkZXYtPmlucV9jYWNoZTsKKwlyZXR1cm4gamlmZmllcyAtIGMt
PnRpbWVzdGFtcDsKK30KKworc3RhdGljIGlubGluZSBsb25nIGlucXVpcnlfZW50cnlfYWdlKHN0
cnVjdCBpbnF1aXJ5X2VudHJ5ICplKQoreworCXJldHVybiBqaWZmaWVzIC0gZS0+dGltZXN0YW1w
OworfQorCitzdHJ1Y3QgaW5xdWlyeV9lbnRyeSAqaGNpX2lucXVpcnlfY2FjaGVfbG9va3VwKHN0
cnVjdCBoY2lfZGV2ICpoZGV2LCBiZGFkZHJfdCAqYmRhZGRyKTsKK3ZvaWQgaGNpX2lucXVpcnlf
Y2FjaGVfdXBkYXRlKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBzdHJ1Y3QgaW5xdWlyeV9kYXRhICpk
YXRhKTsKKworLyogLS0tLS0gSENJIENvbm5lY3Rpb25zIC0tLS0tICovCitlbnVtIHsKKwlIQ0lf
Q09OTl9BVVRIX1BFTkQsCisJSENJX0NPTk5fRU5DUllQVF9QRU5ELAorCUhDSV9DT05OX1JTV0lU
Q0hfUEVORCwKKwlIQ0lfQ09OTl9NT0RFX0NIQU5HRV9QRU5ELAorfTsKKworc3RhdGljIGlubGlu
ZSB2b2lkIGhjaV9jb25uX2hhc2hfaW5pdChzdHJ1Y3QgaGNpX2RldiAqaGRldikKK3sKKwlzdHJ1
Y3QgaGNpX2Nvbm5faGFzaCAqaCA9ICZoZGV2LT5jb25uX2hhc2g7CisJSU5JVF9MSVNUX0hFQUQo
JmgtPmxpc3QpOworCXNwaW5fbG9ja19pbml0KCZoLT5sb2NrKTsKKwloLT5hY2xfbnVtID0gMDsK
KwloLT5zY29fbnVtID0gMDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGhjaV9jb25uX2hhc2hf
YWRkKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBzdHJ1Y3QgaGNpX2Nvbm4gKmMpCit7CisJc3RydWN0
IGhjaV9jb25uX2hhc2ggKmggPSAmaGRldi0+Y29ubl9oYXNoOworCWxpc3RfYWRkKCZjLT5saXN0
LCAmaC0+bGlzdCk7CisJaWYgKGMtPnR5cGUgPT0gQUNMX0xJTkspCisJCWgtPmFjbF9udW0rKzsK
KwllbHNlCisJCWgtPnNjb19udW0rKzsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGhjaV9jb25u
X2hhc2hfZGVsKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBzdHJ1Y3QgaGNpX2Nvbm4gKmMpCit7CisJ
c3RydWN0IGhjaV9jb25uX2hhc2ggKmggPSAmaGRldi0+Y29ubl9oYXNoOworCWxpc3RfZGVsKCZj
LT5saXN0KTsKKwlpZiAoYy0+dHlwZSA9PSBBQ0xfTElOSykKKwkJaC0+YWNsX251bS0tOworCWVs
c2UKKwkJaC0+c2NvX251bS0tOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBoY2lfY29ubiAq
aGNpX2Nvbm5faGFzaF9sb29rdXBfaGFuZGxlKHN0cnVjdCBoY2lfZGV2ICpoZGV2LAorCQkJCQlf
X3UxNiBoYW5kbGUpCit7CisJc3RydWN0IGhjaV9jb25uX2hhc2ggKmggPSAmaGRldi0+Y29ubl9o
YXNoOworCXN0cnVjdCBsaXN0X2hlYWQgKnA7CisJc3RydWN0IGhjaV9jb25uICAqYzsKKworCWxp
c3RfZm9yX2VhY2gocCwgJmgtPmxpc3QpIHsKKwkJYyA9IGxpc3RfZW50cnkocCwgc3RydWN0IGhj
aV9jb25uLCBsaXN0KTsKKwkJaWYgKGMtPmhhbmRsZSA9PSBoYW5kbGUpCisJCQlyZXR1cm4gYzsK
Kwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGhjaV9jb25uICpo
Y2lfY29ubl9oYXNoX2xvb2t1cF9iYShzdHJ1Y3QgaGNpX2RldiAqaGRldiwKKwkJCQkJX191OCB0
eXBlLCBiZGFkZHJfdCAqYmEpCit7CisJc3RydWN0IGhjaV9jb25uX2hhc2ggKmggPSAmaGRldi0+
Y29ubl9oYXNoOworCXN0cnVjdCBsaXN0X2hlYWQgKnA7CisJc3RydWN0IGhjaV9jb25uICAqYzsK
KworCWxpc3RfZm9yX2VhY2gocCwgJmgtPmxpc3QpIHsKKwkJYyA9IGxpc3RfZW50cnkocCwgc3Ry
dWN0IGhjaV9jb25uLCBsaXN0KTsKKwkJaWYgKGMtPnR5cGUgPT0gdHlwZSAmJiAhYmFjbXAoJmMt
PmRzdCwgYmEpKQorCQkJcmV0dXJuIGM7CisJfQorCXJldHVybiBOVUxMOworfQorCitzdGF0aWMg
aW5saW5lIHN0cnVjdCBoY2lfY29ubiAqaGNpX2Nvbm5faGFzaF9sb29rdXBfc3RhdGUoc3RydWN0
IGhjaV9kZXYgKmhkZXYsCisJCQkJCV9fdTggdHlwZSwgX191MTYgc3RhdGUpCit7CisJc3RydWN0
IGhjaV9jb25uX2hhc2ggKmggPSAmaGRldi0+Y29ubl9oYXNoOworCXN0cnVjdCBsaXN0X2hlYWQg
KnA7CisJc3RydWN0IGhjaV9jb25uICAqYzsKKworCWxpc3RfZm9yX2VhY2gocCwgJmgtPmxpc3Qp
IHsKKwkJYyA9IGxpc3RfZW50cnkocCwgc3RydWN0IGhjaV9jb25uLCBsaXN0KTsKKwkJaWYgKGMt
PnR5cGUgPT0gdHlwZSAmJiBjLT5zdGF0ZSA9PSBzdGF0ZSkKKwkJCXJldHVybiBjOworCX0KKwly
ZXR1cm4gTlVMTDsKK30KKwordm9pZCBoY2lfYWNsX2Nvbm5lY3Qoc3RydWN0IGhjaV9jb25uICpj
b25uKTsKK3ZvaWQgaGNpX2FjbF9kaXNjb25uKHN0cnVjdCBoY2lfY29ubiAqY29ubiwgX191OCBy
ZWFzb24pOwordm9pZCBoY2lfYWRkX3NjbyhzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4sIF9fdTE2IGhh
bmRsZSk7CisKK3N0cnVjdCBoY2lfY29ubiAqaGNpX2Nvbm5fYWRkKHN0cnVjdCBoY2lfZGV2ICpo
ZGV2LCBpbnQgdHlwZSwgYmRhZGRyX3QgKmRzdCk7CitpbnQgICAgaGNpX2Nvbm5fZGVsKHN0cnVj
dCBoY2lfY29ubiAqY29ubik7Cit2b2lkICAgaGNpX2Nvbm5faGFzaF9mbHVzaChzdHJ1Y3QgaGNp
X2RldiAqaGRldik7CisKK3N0cnVjdCBoY2lfY29ubiAqaGNpX2Nvbm5lY3Qoc3RydWN0IGhjaV9k
ZXYgKmhkZXYsIGludCB0eXBlLCBiZGFkZHJfdCAqc3JjKTsKK2ludCBoY2lfY29ubl9hdXRoKHN0
cnVjdCBoY2lfY29ubiAqY29ubik7CitpbnQgaGNpX2Nvbm5fZW5jcnlwdChzdHJ1Y3QgaGNpX2Nv
bm4gKmNvbm4pOworaW50IGhjaV9jb25uX2NoYW5nZV9saW5rX2tleShzdHJ1Y3QgaGNpX2Nvbm4g
KmNvbm4pOworaW50IGhjaV9jb25uX3N3aXRjaF9yb2xlKHN0cnVjdCBoY2lfY29ubiAqY29ubiwg
dWludDhfdCByb2xlKTsKKwordm9pZCBoY2lfY29ubl9lbnRlcl9hY3RpdmVfbW9kZShzdHJ1Y3Qg
aGNpX2Nvbm4gKmNvbm4pOwordm9pZCBoY2lfY29ubl9lbnRlcl9zbmlmZl9tb2RlKHN0cnVjdCBo
Y2lfY29ubiAqY29ubik7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBoY2lfY29ubl9ob2xkKHN0cnVj
dCBoY2lfY29ubiAqY29ubikKK3sKKwlhdG9taWNfaW5jKCZjb25uLT5yZWZjbnQpOworCWRlbF90
aW1lcigmY29ubi0+ZGlzY190aW1lcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBoY2lfY29u
bl9wdXQoc3RydWN0IGhjaV9jb25uICpjb25uKQoreworCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0
KCZjb25uLT5yZWZjbnQpKSB7CisJCXVuc2lnbmVkIGxvbmcgdGltZW87CisJCWlmIChjb25uLT50
eXBlID09IEFDTF9MSU5LKSB7CisJCQlkZWxfdGltZXIoJmNvbm4tPmlkbGVfdGltZXIpOworCQkJ
aWYgKGNvbm4tPnN0YXRlID09IEJUX0NPTk5FQ1RFRCkgeworCQkJCXRpbWVvID0gbXNlY3NfdG9f
amlmZmllcyhIQ0lfRElTQ09OTl9USU1FT1VUKTsKKwkJCQlpZiAoIWNvbm4tPm91dCkKKwkJCQkJ
dGltZW8gKj0gMjsKKwkJCX0gZWxzZQorCQkJCXRpbWVvID0gbXNlY3NfdG9famlmZmllcygxMCk7
CisJCX0gZWxzZQorCQkJdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKDEwKTsKKwkJbW9kX3RpbWVy
KCZjb25uLT5kaXNjX3RpbWVyLCBqaWZmaWVzICsgdGltZW8pOworCX0KK30KKworLyogLS0tLS0g
SENJIHRhc2tzIC0tLS0tICovCitzdGF0aWMgaW5saW5lIHZvaWQgaGNpX3NjaGVkX2NtZChzdHJ1
Y3QgaGNpX2RldiAqaGRldikKK3sKKwl0YXNrbGV0X3NjaGVkdWxlKCZoZGV2LT5jbWRfdGFzayk7
Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBoY2lfc2NoZWRfcngoc3RydWN0IGhjaV9kZXYgKmhk
ZXYpCit7CisJdGFza2xldF9zY2hlZHVsZSgmaGRldi0+cnhfdGFzayk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgdm9pZCBoY2lfc2NoZWRfdHgoc3RydWN0IGhjaV9kZXYgKmhkZXYpCit7CisJdGFza2xl
dF9zY2hlZHVsZSgmaGRldi0+dHhfdGFzayk7Cit9CisKKy8qIC0tLS0tIEhDSSBEZXZpY2VzIC0t
LS0tICovCitzdGF0aWMgaW5saW5lIHZvaWQgX19oY2lfZGV2X3B1dChzdHJ1Y3QgaGNpX2RldiAq
ZCkKK3sKKwlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmZC0+cmVmY250KSkKKwkJZC0+ZGVzdHJ1
Y3QoZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBoY2lfZGV2X3B1dChzdHJ1Y3QgaGNpX2Rl
diAqZCkKK3sgCisJX19oY2lfZGV2X3B1dChkKTsKKwltb2R1bGVfcHV0KGQtPm93bmVyKTsKK30K
Kworc3RhdGljIGlubGluZSBzdHJ1Y3QgaGNpX2RldiAqX19oY2lfZGV2X2hvbGQoc3RydWN0IGhj
aV9kZXYgKmQpCit7CisJYXRvbWljX2luYygmZC0+cmVmY250KTsKKwlyZXR1cm4gZDsKK30KKwor
c3RhdGljIGlubGluZSBzdHJ1Y3QgaGNpX2RldiAqaGNpX2Rldl9ob2xkKHN0cnVjdCBoY2lfZGV2
ICpkKQoreworCWlmICh0cnlfbW9kdWxlX2dldChkLT5vd25lcikpCisJCXJldHVybiBfX2hjaV9k
ZXZfaG9sZChkKTsKKwlyZXR1cm4gTlVMTDsKK30KKworI2RlZmluZSBoY2lfZGV2X2xvY2soZCkJ
CXNwaW5fbG9jaygmZC0+bG9jaykKKyNkZWZpbmUgaGNpX2Rldl91bmxvY2soZCkJc3Bpbl91bmxv
Y2soJmQtPmxvY2spCisjZGVmaW5lIGhjaV9kZXZfbG9ja19iaChkKQlzcGluX2xvY2tfYmgoJmQt
PmxvY2spCisjZGVmaW5lIGhjaV9kZXZfdW5sb2NrX2JoKGQpCXNwaW5fdW5sb2NrX2JoKCZkLT5s
b2NrKQorCitzdHJ1Y3QgaGNpX2RldiAqaGNpX2Rldl9nZXQoaW50IGluZGV4KTsKK3N0cnVjdCBo
Y2lfZGV2ICpoY2lfZ2V0X3JvdXRlKGJkYWRkcl90ICpzcmMsIGJkYWRkcl90ICpkc3QpOworCitz
dHJ1Y3QgaGNpX2RldiAqaGNpX2FsbG9jX2Rldih2b2lkKTsKK3ZvaWQgaGNpX2ZyZWVfZGV2KHN0
cnVjdCBoY2lfZGV2ICpoZGV2KTsKK2ludCBoY2lfcmVnaXN0ZXJfZGV2KHN0cnVjdCBoY2lfZGV2
ICpoZGV2KTsKK2ludCBoY2lfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGhjaV9kZXYgKmhkZXYpOwor
aW50IGhjaV9zdXNwZW5kX2RldihzdHJ1Y3QgaGNpX2RldiAqaGRldik7CitpbnQgaGNpX3Jlc3Vt
ZV9kZXYoc3RydWN0IGhjaV9kZXYgKmhkZXYpOworaW50IGhjaV9kZXZfb3BlbihfX3UxNiBkZXYp
OworaW50IGhjaV9kZXZfY2xvc2UoX191MTYgZGV2KTsKK2ludCBoY2lfZGV2X3Jlc2V0KF9fdTE2
IGRldik7CitpbnQgaGNpX2Rldl9yZXNldF9zdGF0KF9fdTE2IGRldik7CitpbnQgaGNpX2Rldl9j
bWQodW5zaWduZWQgaW50IGNtZCwgdm9pZCBfX3VzZXIgKmFyZyk7CitpbnQgaGNpX2dldF9kZXZf
bGlzdCh2b2lkIF9fdXNlciAqYXJnKTsKK2ludCBoY2lfZ2V0X2Rldl9pbmZvKHZvaWQgX191c2Vy
ICphcmcpOworaW50IGhjaV9nZXRfY29ubl9saXN0KHZvaWQgX191c2VyICphcmcpOworaW50IGhj
aV9nZXRfY29ubl9pbmZvKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCB2b2lkIF9fdXNlciAqYXJnKTsK
K2ludCBoY2lfaW5xdWlyeSh2b2lkIF9fdXNlciAqYXJnKTsKKwordm9pZCBoY2lfZXZlbnRfcGFj
a2V0KHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworLyogUmVj
ZWl2ZSBmcmFtZSBmcm9tIEhDSSBkcml2ZXJzICovCitzdGF0aWMgaW5saW5lIGludCBoY2lfcmVj
dl9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCXN0cnVjdCBoY2lfZGV2ICpoZGV2ID0g
KHN0cnVjdCBoY2lfZGV2ICopIHNrYi0+ZGV2OworCWlmICghaGRldiB8fCAoIXRlc3RfYml0KEhD
SV9VUCwgJmhkZXYtPmZsYWdzKSAKKwkJCSYmICF0ZXN0X2JpdChIQ0lfSU5JVCwgJmhkZXYtPmZs
YWdzKSkpIHsKKwkJa2ZyZWVfc2tiKHNrYik7CisJCXJldHVybiAtRU5YSU87CisJfQorCisJLyog
SW5jb21taW5nIHNrYiAqLworCWJ0X2NiKHNrYiktPmluY29taW5nID0gMTsKKworCS8qIFRpbWUg
c3RhbXAgKi8KKwlfX25ldF90aW1lc3RhbXAoc2tiKTsKKworCS8qIFF1ZXVlIGZyYW1lIGZvciBy
eCB0YXNrICovCisJc2tiX3F1ZXVlX3RhaWwoJmhkZXYtPnJ4X3EsIHNrYik7CisJaGNpX3NjaGVk
X3J4KGhkZXYpOworCXJldHVybiAwOworfQorCitpbnQgaGNpX3JlZ2lzdGVyX3N5c2ZzKHN0cnVj
dCBoY2lfZGV2ICpoZGV2KTsKK3ZvaWQgaGNpX3VucmVnaXN0ZXJfc3lzZnMoc3RydWN0IGhjaV9k
ZXYgKmhkZXYpOwordm9pZCBoY2lfY29ubl9hZGRfc3lzZnMoc3RydWN0IGhjaV9jb25uICpjb25u
KTsKK3ZvaWQgaGNpX2Nvbm5fZGVsX3N5c2ZzKHN0cnVjdCBoY2lfY29ubiAqY29ubik7CisKKyNk
ZWZpbmUgU0VUX0hDSURFVl9ERVYoaGRldiwgcGRldikgKChoZGV2KS0+cGFyZW50ID0gKHBkZXYp
KQorCisvKiAtLS0tLSBMTVAgY2FwYWJpbGl0aWVzIC0tLS0tICovCisjZGVmaW5lIGxtcF9yc3dp
dGNoX2NhcGFibGUoZGV2KSAgICgoZGV2KS0+ZmVhdHVyZXNbMF0gJiBMTVBfUlNXSVRDSCkKKyNk
ZWZpbmUgbG1wX2VuY3J5cHRfY2FwYWJsZShkZXYpICAgKChkZXYpLT5mZWF0dXJlc1swXSAmIExN
UF9FTkNSWVBUKQorI2RlZmluZSBsbXBfc25pZmZfY2FwYWJsZShkZXYpICAgICAoKGRldiktPmZl
YXR1cmVzWzBdICYgTE1QX1NOSUZGKQorI2RlZmluZSBsbXBfc25pZmZzdWJyX2NhcGFibGUoZGV2
KSAoKGRldiktPmZlYXR1cmVzWzVdICYgTE1QX1NOSUZGX1NVQlIpCisKKy8qIC0tLS0tIEhDSSBw
cm90b2NvbHMgLS0tLS0gKi8KK3N0cnVjdCBoY2lfcHJvdG8geworCWNoYXIgCQkqbmFtZTsKKwl1
bnNpZ25lZCBpbnQJaWQ7CisJdW5zaWduZWQgbG9uZwlmbGFnczsKKworCXZvaWQJCSpwcml2Owor
CisJaW50ICgqY29ubmVjdF9pbmQpIAkoc3RydWN0IGhjaV9kZXYgKmhkZXYsIGJkYWRkcl90ICpi
ZGFkZHIsIF9fdTggdHlwZSk7CisJaW50ICgqY29ubmVjdF9jZm0pCShzdHJ1Y3QgaGNpX2Nvbm4g
KmNvbm4sIF9fdTggc3RhdHVzKTsKKwlpbnQgKCpkaXNjb25uX2luZCkJKHN0cnVjdCBoY2lfY29u
biAqY29ubiwgX191OCByZWFzb24pOworCWludCAoKnJlY3ZfYWNsZGF0YSkJKHN0cnVjdCBoY2lf
Y29ubiAqY29ubiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX191MTYgZmxhZ3MpOworCWludCAoKnJl
Y3Zfc2NvZGF0YSkJKHN0cnVjdCBoY2lfY29ubiAqY29ubiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7
CisJaW50ICgqYXV0aF9jZm0pCQkoc3RydWN0IGhjaV9jb25uICpjb25uLCBfX3U4IHN0YXR1cyk7
CisJaW50ICgqZW5jcnlwdF9jZm0pCShzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4sIF9fdTggc3RhdHVz
KTsKK307CisKK3N0YXRpYyBpbmxpbmUgaW50IGhjaV9wcm90b19jb25uZWN0X2luZChzdHJ1Y3Qg
aGNpX2RldiAqaGRldiwgYmRhZGRyX3QgKmJkYWRkciwgX191OCB0eXBlKQoreworCXJlZ2lzdGVy
IHN0cnVjdCBoY2lfcHJvdG8gKmhwOworCWludCBtYXNrID0gMDsKKwkKKwlocCA9IGhjaV9wcm90
b1tIQ0lfUFJPVE9fTDJDQVBdOworCWlmIChocCAmJiBocC0+Y29ubmVjdF9pbmQpCisJCW1hc2sg
fD0gaHAtPmNvbm5lY3RfaW5kKGhkZXYsIGJkYWRkciwgdHlwZSk7CisKKwlocCA9IGhjaV9wcm90
b1tIQ0lfUFJPVE9fU0NPXTsKKwlpZiAoaHAgJiYgaHAtPmNvbm5lY3RfaW5kKQorCQltYXNrIHw9
IGhwLT5jb25uZWN0X2luZChoZGV2LCBiZGFkZHIsIHR5cGUpOworCisJcmV0dXJuIG1hc2s7Cit9
CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBoY2lfcHJvdG9fY29ubmVjdF9jZm0oc3RydWN0IGhjaV9j
b25uICpjb25uLCBfX3U4IHN0YXR1cykKK3sKKwlyZWdpc3RlciBzdHJ1Y3QgaGNpX3Byb3RvICpo
cDsKKworCWhwID0gaGNpX3Byb3RvW0hDSV9QUk9UT19MMkNBUF07CisJaWYgKGhwICYmIGhwLT5j
b25uZWN0X2NmbSkKKwkJaHAtPmNvbm5lY3RfY2ZtKGNvbm4sIHN0YXR1cyk7CisKKwlocCA9IGhj
aV9wcm90b1tIQ0lfUFJPVE9fU0NPXTsKKwlpZiAoaHAgJiYgaHAtPmNvbm5lY3RfY2ZtKQorCQlo
cC0+Y29ubmVjdF9jZm0oY29ubiwgc3RhdHVzKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGhj
aV9wcm90b19kaXNjb25uX2luZChzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4sIF9fdTggcmVhc29uKQor
eworCXJlZ2lzdGVyIHN0cnVjdCBoY2lfcHJvdG8gKmhwOworCisJaHAgPSBoY2lfcHJvdG9bSENJ
X1BST1RPX0wyQ0FQXTsKKwlpZiAoaHAgJiYgaHAtPmRpc2Nvbm5faW5kKQorCQlocC0+ZGlzY29u
bl9pbmQoY29ubiwgcmVhc29uKTsKKworCWhwID0gaGNpX3Byb3RvW0hDSV9QUk9UT19TQ09dOwor
CWlmIChocCAmJiBocC0+ZGlzY29ubl9pbmQpCisJCWhwLT5kaXNjb25uX2luZChjb25uLCByZWFz
b24pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaGNpX3Byb3RvX2F1dGhfY2ZtKHN0cnVjdCBo
Y2lfY29ubiAqY29ubiwgX191OCBzdGF0dXMpCit7CisJcmVnaXN0ZXIgc3RydWN0IGhjaV9wcm90
byAqaHA7CisKKwlocCA9IGhjaV9wcm90b1tIQ0lfUFJPVE9fTDJDQVBdOworCWlmIChocCAmJiBo
cC0+YXV0aF9jZm0pCisJCWhwLT5hdXRoX2NmbShjb25uLCBzdGF0dXMpOworCisJaHAgPSBoY2lf
cHJvdG9bSENJX1BST1RPX1NDT107CisJaWYgKGhwICYmIGhwLT5hdXRoX2NmbSkKKwkJaHAtPmF1
dGhfY2ZtKGNvbm4sIHN0YXR1cyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBoY2lfcHJvdG9f
ZW5jcnlwdF9jZm0oc3RydWN0IGhjaV9jb25uICpjb25uLCBfX3U4IHN0YXR1cykKK3sKKwlyZWdp
c3RlciBzdHJ1Y3QgaGNpX3Byb3RvICpocDsKKworCWhwID0gaGNpX3Byb3RvW0hDSV9QUk9UT19M
MkNBUF07CisJaWYgKGhwICYmIGhwLT5lbmNyeXB0X2NmbSkKKwkJaHAtPmVuY3J5cHRfY2ZtKGNv
bm4sIHN0YXR1cyk7CisKKwlocCA9IGhjaV9wcm90b1tIQ0lfUFJPVE9fU0NPXTsKKwlpZiAoaHAg
JiYgaHAtPmVuY3J5cHRfY2ZtKQorCQlocC0+ZW5jcnlwdF9jZm0oY29ubiwgc3RhdHVzKTsKK30K
KworaW50IGhjaV9yZWdpc3Rlcl9wcm90byhzdHJ1Y3QgaGNpX3Byb3RvICpocHJvdG8pOworaW50
IGhjaV91bnJlZ2lzdGVyX3Byb3RvKHN0cnVjdCBoY2lfcHJvdG8gKmhwcm90byk7CisKKy8qIC0t
LS0tIEhDSSBjYWxsYmFja3MgLS0tLS0gKi8KK3N0cnVjdCBoY2lfY2IgeworCXN0cnVjdCBsaXN0
X2hlYWQgbGlzdDsKKworCWNoYXIgKm5hbWU7CisKKwl2b2lkICgqYXV0aF9jZm0pCShzdHJ1Y3Qg
aGNpX2Nvbm4gKmNvbm4sIF9fdTggc3RhdHVzKTsKKwl2b2lkICgqZW5jcnlwdF9jZm0pCShzdHJ1
Y3QgaGNpX2Nvbm4gKmNvbm4sIF9fdTggc3RhdHVzLCBfX3U4IGVuY3J5cHQpOworCXZvaWQgKCpr
ZXlfY2hhbmdlX2NmbSkJKHN0cnVjdCBoY2lfY29ubiAqY29ubiwgX191OCBzdGF0dXMpOworCXZv
aWQgKCpyb2xlX3N3aXRjaF9jZm0pCShzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4sIF9fdTggc3RhdHVz
LCBfX3U4IHJvbGUpOworfTsKKworc3RhdGljIGlubGluZSB2b2lkIGhjaV9hdXRoX2NmbShzdHJ1
Y3QgaGNpX2Nvbm4gKmNvbm4sIF9fdTggc3RhdHVzKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKnA7
CisKKwloY2lfcHJvdG9fYXV0aF9jZm0oY29ubiwgc3RhdHVzKTsKKworCXJlYWRfbG9ja19iaCgm
aGNpX2NiX2xpc3RfbG9jayk7CisJbGlzdF9mb3JfZWFjaChwLCAmaGNpX2NiX2xpc3QpIHsKKwkJ
c3RydWN0IGhjaV9jYiAqY2IgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBoY2lfY2IsIGxpc3QpOwor
CQlpZiAoY2ItPmF1dGhfY2ZtKQorCQkJY2ItPmF1dGhfY2ZtKGNvbm4sIHN0YXR1cyk7CisJfQor
CXJlYWRfdW5sb2NrX2JoKCZoY2lfY2JfbGlzdF9sb2NrKTsKK30KKworc3RhdGljIGlubGluZSB2
b2lkIGhjaV9lbmNyeXB0X2NmbShzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4sIF9fdTggc3RhdHVzLCBf
X3U4IGVuY3J5cHQpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqcDsKKworCWhjaV9wcm90b19lbmNy
eXB0X2NmbShjb25uLCBzdGF0dXMpOworCisJcmVhZF9sb2NrX2JoKCZoY2lfY2JfbGlzdF9sb2Nr
KTsKKwlsaXN0X2Zvcl9lYWNoKHAsICZoY2lfY2JfbGlzdCkgeworCQlzdHJ1Y3QgaGNpX2NiICpj
YiA9IGxpc3RfZW50cnkocCwgc3RydWN0IGhjaV9jYiwgbGlzdCk7CisJCWlmIChjYi0+ZW5jcnlw
dF9jZm0pCisJCQljYi0+ZW5jcnlwdF9jZm0oY29ubiwgc3RhdHVzLCBlbmNyeXB0KTsKKwl9CisJ
cmVhZF91bmxvY2tfYmgoJmhjaV9jYl9saXN0X2xvY2spOworfQorCitzdGF0aWMgaW5saW5lIHZv
aWQgaGNpX2tleV9jaGFuZ2VfY2ZtKHN0cnVjdCBoY2lfY29ubiAqY29ubiwgX191OCBzdGF0dXMp
Cit7CisJc3RydWN0IGxpc3RfaGVhZCAqcDsKKworCXJlYWRfbG9ja19iaCgmaGNpX2NiX2xpc3Rf
bG9jayk7CisJbGlzdF9mb3JfZWFjaChwLCAmaGNpX2NiX2xpc3QpIHsKKwkJc3RydWN0IGhjaV9j
YiAqY2IgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBoY2lfY2IsIGxpc3QpOworCQlpZiAoY2ItPmtl
eV9jaGFuZ2VfY2ZtKQorCQkJY2ItPmtleV9jaGFuZ2VfY2ZtKGNvbm4sIHN0YXR1cyk7CisJfQor
CXJlYWRfdW5sb2NrX2JoKCZoY2lfY2JfbGlzdF9sb2NrKTsKK30KKworc3RhdGljIGlubGluZSB2
b2lkIGhjaV9yb2xlX3N3aXRjaF9jZm0oc3RydWN0IGhjaV9jb25uICpjb25uLCBfX3U4IHN0YXR1
cywgX191OCByb2xlKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKnA7CisKKwlyZWFkX2xvY2tfYmgo
JmhjaV9jYl9saXN0X2xvY2spOworCWxpc3RfZm9yX2VhY2gocCwgJmhjaV9jYl9saXN0KSB7CisJ
CXN0cnVjdCBoY2lfY2IgKmNiID0gbGlzdF9lbnRyeShwLCBzdHJ1Y3QgaGNpX2NiLCBsaXN0KTsK
KwkJaWYgKGNiLT5yb2xlX3N3aXRjaF9jZm0pCisJCQljYi0+cm9sZV9zd2l0Y2hfY2ZtKGNvbm4s
IHN0YXR1cywgcm9sZSk7CisJfQorCXJlYWRfdW5sb2NrX2JoKCZoY2lfY2JfbGlzdF9sb2NrKTsK
K30KKworaW50IGhjaV9yZWdpc3Rlcl9jYihzdHJ1Y3QgaGNpX2NiICpoY2IpOworaW50IGhjaV91
bnJlZ2lzdGVyX2NiKHN0cnVjdCBoY2lfY2IgKmhjYik7CisKK2ludCBoY2lfcmVnaXN0ZXJfbm90
aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CitpbnQgaGNpX3VucmVnaXN0ZXJfbm90
aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CisKK2ludCBoY2lfc2VuZF9jbWQoc3Ry
dWN0IGhjaV9kZXYgKmhkZXYsIF9fdTE2IG9nZiwgX191MTYgb2NmLCBfX3UzMiBwbGVuLCB2b2lk
ICpwYXJhbSk7CitpbnQgaGNpX3NlbmRfYWNsKHN0cnVjdCBoY2lfY29ubiAqY29ubiwgc3RydWN0
IHNrX2J1ZmYgKnNrYiwgX191MTYgZmxhZ3MpOworaW50IGhjaV9zZW5kX3NjbyhzdHJ1Y3QgaGNp
X2Nvbm4gKmNvbm4sIAorCQkJc3RydWN0IHNrX2J1ZmYgKnNrYiwgCisJCQlpbnQgc25kYnVmc2l6
ZSwgCisJCQl2b2lkICgqc2VuZF9jb21wbGV0ZV9jYikoc3RydWN0IGhjaV9jb25uICpjb25uKSk7
CisKK3ZvaWQgKmhjaV9zZW50X2NtZF9kYXRhKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBfX3UxNiBv
Z2YsIF9fdTE2IG9jZik7CisKK3ZvaWQgaGNpX3NpX2V2ZW50KHN0cnVjdCBoY2lfZGV2ICpoZGV2
LCBpbnQgdHlwZSwgaW50IGRsZW4sIHZvaWQgKmRhdGEpOworCisvKiAtLS0tLSBIQ0kgU29ja2V0
cyAtLS0tLSAqLwordm9pZCBoY2lfc2VuZF90b19zb2NrKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBz
dHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworLyogSENJIGluZm8gZm9yIHNvY2tldCAqLworI2RlZmlu
ZSBoY2lfcGkoc2spICgoc3RydWN0IGhjaV9waW5mbyAqKSBzaykKKworc3RydWN0IGhjaV9waW5m
byB7CisJc3RydWN0IGJ0X3NvY2sgICAgYnQ7CisJc3RydWN0IGhjaV9kZXYgICAgKmhkZXY7CisJ
c3RydWN0IGhjaV9maWx0ZXIgZmlsdGVyOworCV9fdTMyICAgICAgICAgICAgIGNtc2dfbWFzazsK
K307CisKKy8qIEhDSSBzZWN1cml0eSBmaWx0ZXIgKi8KKyNkZWZpbmUgSENJX1NGTFRfTUFYX09H
RiAgNQorCitzdHJ1Y3QgaGNpX3NlY19maWx0ZXIgeworCV9fdTMyIHR5cGVfbWFzazsKKwlfX3Uz
MiBldmVudF9tYXNrWzJdOworCV9fdTMyIG9jZl9tYXNrW0hDSV9TRkxUX01BWF9PR0YgKyAxXVs0
XTsKK307CisKKy8qIC0tLS0tIEhDSSByZXF1ZXN0cyAtLS0tLSAqLworI2RlZmluZSBIQ0lfUkVR
X0RPTkUJICAwCisjZGVmaW5lIEhDSV9SRVFfUEVORAkgIDEKKyNkZWZpbmUgSENJX1JFUV9DQU5D
RUxFRCAgMgorCisjZGVmaW5lIGhjaV9yZXFfbG9jayhkKQkJZG93bigmZC0+cmVxX2xvY2spCisj
ZGVmaW5lIGhjaV9yZXFfdW5sb2NrKGQpCXVwKCZkLT5yZXFfbG9jaykKKwordm9pZCBoY2lfcmVx
X2NvbXBsZXRlKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBpbnQgcmVzdWx0KTsKKworI2VuZGlmIC8q
IF9fSENJX0NPUkVfSCAqLwpkaWZmIC11ck4gbGludXgtMi42LjE4LW1oNy9pbmNsdWRlL25ldC9i
bHVldG9vdGgvaGNpLmggbGludXgtMi42LjE4LW1oNy1zY28vaW5jbHVkZS9uZXQvYmx1ZXRvb3Ro
L2hjaS5oCi0tLSBsaW51eC0yLjYuMTgtbWg3L2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaAky
MDA2LTExLTAyIDA3OjQ1OjMxLjAwMDAwMDAwMCAtMDcwMAorKysgbGludXgtMi42LjE4LW1oNy1z
Y28vaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oCTIwMDYtMTEtMDIgMDc6NDg6MDguMDAwMDAw
MDAwIC0wNzAwCkBAIC03NjcsNiArNzY3LDkgQEAKIAlfX3UzMiBieXRlX3R4OwogfTsKIAorLyog
RmllbGRzIGRvd24gdGhlcmUgYXJlIG1vc3RseSB0aGUgc2FtZSBhcyBoY2lfZGV2LAorICAgYXMg
dGhpcyBzdHJ1Y3R1cmUgaXMgbWVhbnQgdG8gY29tbXVuaWNhdGUgaW5mbworICAgdG8gdXNlcnNw
YWNlICovCiBzdHJ1Y3QgaGNpX2Rldl9pbmZvIHsKIAlfX3UxNiBkZXZfaWQ7CiAJY2hhciAgbmFt
ZVs4XTsKQEAgLTc4Miw5ICs3ODUsMTMgQEAKIAlfX3UzMiBsaW5rX3BvbGljeTsKIAlfX3UzMiBs
aW5rX21vZGU7CiAKKwkvKiBNYXhpbXVtIHRyYW5zbWl0aW9uIHVuaXQgZm9yIEFDTCBwYWNrZXRz
ICovCiAJX191MTYgYWNsX210dTsKKwkvKiBOdW1iZXIgb2YgQUNMIHBhY2tldHMgdGhlIGJhc2Vi
YW5kIGlzIGFibGUgdG8gYnVmZmVyICovCiAJX191MTYgYWNsX3BrdHM7CisJLyogTWF4aW11bSB0
cmFuc21pdGlvbiB1bml0IGZvciBTQ08gcGFja2V0cyAqLwogCV9fdTE2IHNjb19tdHU7CisJLyog
TnVtYmVyIG9mIFNDTyBwYWNrZXRzIHRoZSBiYXNlYmFuZCBpcyBhYmxlIHRvIGJ1ZmZlciAqLwog
CV9fdTE2IHNjb19wa3RzOwogCiAJc3RydWN0IGhjaV9kZXZfc3RhdHMgc3RhdDsKZGlmZiAtdXJO
IGxpbnV4LTIuNi4xOC1taDcvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL3Njby5oIGxpbnV4LTIuNi4x
OC1taDctc2NvL2luY2x1ZGUvbmV0L2JsdWV0b290aC9zY28uaAotLS0gbGludXgtMi42LjE4LW1o
Ny9pbmNsdWRlL25ldC9ibHVldG9vdGgvc2NvLmgJMjAwNi0wOS0xOSAyMTo0MjowNi4wMDAwMDAw
MDAgLTA2MDAKKysrIGxpbnV4LTIuNi4xOC1taDctc2NvL2luY2x1ZGUvbmV0L2JsdWV0b290aC9z
Y28uaAkyMDA2LTExLTAyIDA3OjQ4OjA4LjAwMDAwMDAwMCAtMDcwMApAQCAtMjYsMTIgKzI2LDcg
QEAKICNkZWZpbmUgX19TQ09fSAogCiAvKiBTQ08gZGVmYXVsdHMgKi8KLSNkZWZpbmUgU0NPX0RF
RkFVTFRfTVRVCQk1MDAKLSNkZWZpbmUgU0NPX0RFRkFVTFRfRkxVU0hfVE8JMHhGRkZGCi0KICNk
ZWZpbmUgU0NPX0NPTk5fVElNRU9VVAkoSFogKiA0MCkKLSNkZWZpbmUgU0NPX0RJU0NPTk5fVElN
RU9VVAkoSFogKiAyKQotI2RlZmluZSBTQ09fQ09OTl9JRExFX1RJTUVPVVQJKEhaICogNjApCiAK
IC8qIFNDTyBzb2NrZXQgYWRkcmVzcyAqLwogc3RydWN0IHNvY2thZGRyX3NjbyB7CkBAIC01MSw2
ICs0Niw5IEBACiAJX191OCAgZGV2X2NsYXNzWzNdOwogfTsKIAorI2RlZmluZSBTQ09fVFhCVUZT
CTB4MDMKKyNkZWZpbmUgU0NPX1JYQlVGUwkweDA0CisKIC8qIC0tLS0gU0NPIGNvbm5lY3Rpb25z
IC0tLS0gKi8KIHN0cnVjdCBzY29fY29ubiB7CiAJc3RydWN0IGhjaV9jb25uCSpoY29uOwpkaWZm
IC11ck4gbGludXgtMi42LjE4LW1oNy9uZXQvYmx1ZXRvb3RoL2hjaV9jb25uLmMgbGludXgtMi42
LjE4LW1oNy1zY28vbmV0L2JsdWV0b290aC9oY2lfY29ubi5jCi0tLSBsaW51eC0yLjYuMTgtbWg3
L25ldC9ibHVldG9vdGgvaGNpX2Nvbm4uYwkyMDA2LTExLTAyIDA3OjQ1OjMxLjAwMDAwMDAwMCAt
MDcwMAorKysgbGludXgtMi42LjE4LW1oNy1zY28vbmV0L2JsdWV0b290aC9oY2lfY29ubi5jCTIw
MDYtMTEtMDIgMDc6NDg6MDguMDAwMDAwMDAwIC0wNzAwCkBAIC0xODQsNyArMTg0LDEwIEBACiAK
IAljb25uLT5wb3dlcl9zYXZlID0gMTsKIAotCXNrYl9xdWV1ZV9oZWFkX2luaXQoJmNvbm4tPmRh
dGFfcSk7CisJY29ubi0+cGt0X3NlbnRfY2IgPSBOVUxMOworCXNrYl9xdWV1ZV9oZWFkX2luaXQo
JmNvbm4tPm91dF9xKTsKKworCWhydGltZXJfaW5pdCgmY29ubi0+dHhfdGltZXIsIENMT0NLX01P
Tk9UT05JQywgSFJUSU1FUl9OT1JFU1RBUlQpOwogCiAJaW5pdF90aW1lcigmY29ubi0+ZGlzY190
aW1lcik7CiAJY29ubi0+ZGlzY190aW1lci5mdW5jdGlvbiA9IGhjaV9jb25uX3RpbWVvdXQ7CkBA
IC0xOTUsNiArMTk4LDcgQEAKIAljb25uLT5pZGxlX3RpbWVyLmRhdGEgPSAodW5zaWduZWQgbG9u
ZykgY29ubjsKIAogCWF0b21pY19zZXQoJmNvbm4tPnJlZmNudCwgMCk7CisJYXRvbWljX3NldCgm
Y29ubi0+c2VudCwgMCk7CiAKIAloY2lfZGV2X2hvbGQoaGRldik7CiAKQEAgLTIyMSw2ICsyMjUs
OCBAQAogCiAJZGVsX3RpbWVyKCZjb25uLT5kaXNjX3RpbWVyKTsKIAorCWhydGltZXJfY2FuY2Vs
KCZjb25uLT50eF90aW1lcik7CisKIAlpZiAoY29ubi0+dHlwZSA9PSBTQ09fTElOSykgewogCQlz
dHJ1Y3QgaGNpX2Nvbm4gKmFjbCA9IGNvbm4tPmxpbms7CiAJCWlmIChhY2wpIHsKQEAgLTIzMyw3
ICsyMzksNyBAQAogCQkJc2NvLT5saW5rID0gTlVMTDsKIAogCQkvKiBVbmFja2VkIGZyYW1lcyAq
LwotCQloZGV2LT5hY2xfY250ICs9IGNvbm4tPnNlbnQ7CisJCWhkZXYtPmFjbF9jbnQgKz0gYXRv
bWljX3JlYWQoJmNvbm4tPnNlbnQpOwogCX0KIAogCXRhc2tsZXRfZGlzYWJsZSgmaGRldi0+dHhf
dGFzayk7CkBAIC0yNDYsNyArMjUyLDcgQEAKIAogCXRhc2tsZXRfZW5hYmxlKCZoZGV2LT50eF90
YXNrKTsKIAotCXNrYl9xdWV1ZV9wdXJnZSgmY29ubi0+ZGF0YV9xKTsKKwlza2JfcXVldWVfcHVy
Z2UoJmNvbm4tPm91dF9xKTsKIAogCWhjaV9kZXZfcHV0KGhkZXYpOwogCmRpZmYgLXVyTiBsaW51
eC0yLjYuMTgtbWg3L25ldC9ibHVldG9vdGgvaGNpX2NvcmUuYyBsaW51eC0yLjYuMTgtbWg3LXNj
by9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMKLS0tIGxpbnV4LTIuNi4xOC1taDcvbmV0L2JsdWV0
b290aC9oY2lfY29yZS5jCTIwMDYtMTEtMDIgMDc6NDU6MzEuMDAwMDAwMDAwIC0wNzAwCisrKyBs
aW51eC0yLjYuMTgtbWg3LXNjby9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMJMjAwNi0xMS0wMiAw
Nzo0ODowOC4wMDAwMDAwMDAgLTA3MDAKQEAgLTYxOSw4ICs2MTksOSBAQAogCWlmIChoZGV2LT5m
bHVzaCkKIAkJaGRldi0+Zmx1c2goaGRldik7CiAKLQlhdG9taWNfc2V0KCZoZGV2LT5jbWRfY250
LCAxKTsgCi0JaGRldi0+YWNsX2NudCA9IDA7IGhkZXYtPnNjb19jbnQgPSAwOworCWF0b21pY19z
ZXQoJmhkZXYtPmNtZF9jbnQsIDEpOworCWF0b21pY19zZXQoJmhkZXYtPnNjb19jbnQsIDApOyAK
KwloZGV2LT5hY2xfY250ID0gMDsgCiAKIAlpZiAoIXRlc3RfYml0KEhDSV9SQVcsICZoZGV2LT5m
bGFncykpCiAJCXJldCA9IF9faGNpX3JlcXVlc3QoaGRldiwgaGNpX3Jlc2V0X3JlcSwgMCwKQEAg
LTEwOTYsNyArMTA5Nyw3IEBACiAJCS8qIE5vbiBmcmFnbWVudGVkICovCiAJCUJUX0RCRygiJXMg
bm9uZnJhZyBza2IgJXAgbGVuICVkIiwgaGRldi0+bmFtZSwgc2tiLCBza2ItPmxlbik7CiAKLQkJ
c2tiX3F1ZXVlX3RhaWwoJmNvbm4tPmRhdGFfcSwgc2tiKTsKKwkJc2tiX3F1ZXVlX3RhaWwoJmNv
bm4tPm91dF9xLCBza2IpOwogCX0gZWxzZSB7CiAJCS8qIEZyYWdtZW50ZWQgKi8KIAkJQlRfREJH
KCIlcyBmcmFnICVwIGxlbiAlZCIsIGhkZXYtPm5hbWUsIHNrYiwgc2tiLT5sZW4pOwpAQCAtMTEw
NCw5ICsxMTA1LDkgQEAKIAkJc2tiX3NoaW5mbyhza2IpLT5mcmFnX2xpc3QgPSBOVUxMOwogCiAJ
CS8qIFF1ZXVlIGFsbCBmcmFnbWVudHMgYXRvbWljYWxseSAqLwotCQlzcGluX2xvY2tfYmgoJmNv
bm4tPmRhdGFfcS5sb2NrKTsKKwkJc3Bpbl9sb2NrX2JoKCZjb25uLT5vdXRfcS5sb2NrKTsKIAot
CQlfX3NrYl9xdWV1ZV90YWlsKCZjb25uLT5kYXRhX3EsIHNrYik7CisJCV9fc2tiX3F1ZXVlX3Rh
aWwoJmNvbm4tPm91dF9xLCBza2IpOwogCQlkbyB7CiAJCQlza2IgPSBsaXN0OyBsaXN0ID0gbGlz
dC0+bmV4dDsKIAkJCQpAQCAtMTExNiwxMCArMTExNywxMCBAQAogCiAJCQlCVF9EQkcoIiVzIGZy
YWcgJXAgbGVuICVkIiwgaGRldi0+bmFtZSwgc2tiLCBza2ItPmxlbik7CiAKLQkJCV9fc2tiX3F1
ZXVlX3RhaWwoJmNvbm4tPmRhdGFfcSwgc2tiKTsKKwkJCV9fc2tiX3F1ZXVlX3RhaWwoJmNvbm4t
Pm91dF9xLCBza2IpOwogCQl9IHdoaWxlIChsaXN0KTsKIAotCQlzcGluX3VubG9ja19iaCgmY29u
bi0+ZGF0YV9xLmxvY2spOworCQlzcGluX3VubG9ja19iaCgmY29ubi0+b3V0X3EubG9jayk7CiAJ
fQogCiAJaGNpX3NjaGVkX3R4KGhkZXYpOwpAQCAtMTEyNyw0MSArMTEyOCw0OSBAQAogfQogRVhQ
T1JUX1NZTUJPTChoY2lfc2VuZF9hY2wpOwogCi0vKiBTZW5kIFNDTyBkYXRhICovCi1pbnQgaGNp
X3NlbmRfc2NvKHN0cnVjdCBoY2lfY29ubiAqY29ubiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3N0
YXRpYyBpbmxpbmUgdm9pZCBfX2hjaV9zZW5kX3NjbyhzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4sIHN0
cnVjdCBza19idWZmICpza2IpCiB7Ci0Jc3RydWN0IGhjaV9kZXYgKmhkZXYgPSBjb25uLT5oZGV2
OwogCXN0cnVjdCBoY2lfc2NvX2hkciBoZHI7CiAKLQlCVF9EQkcoIiVzIGxlbiAlZCIsIGhkZXYt
Pm5hbWUsIHNrYi0+bGVuKTsKLQotCWlmIChza2ItPmxlbiA+IGhkZXYtPnNjb19tdHUpIHsKLQkJ
a2ZyZWVfc2tiKHNrYik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQorCUJUX0RCRygic2tiICVw
IGxlbiAlZCIsIHNrYiwgc2tiLT5sZW4pOworCS8qIHByZXBhcmluZyBmcmFtZSAqLwogCWhkci5o
YW5kbGUgPSBfX2NwdV90b19sZTE2KGNvbm4tPmhhbmRsZSk7CiAJaGRyLmRsZW4gICA9IHNrYi0+
bGVuOwogCiAJc2tiLT5oLnJhdyA9IHNrYl9wdXNoKHNrYiwgSENJX1NDT19IRFJfU0laRSk7CiAJ
bWVtY3B5KHNrYi0+aC5yYXcsICZoZHIsIEhDSV9TQ09fSERSX1NJWkUpOwogCi0Jc2tiLT5kZXYg
PSAodm9pZCAqKSBoZGV2OworCXNrYi0+ZGV2ID0gKHZvaWQgKikgY29ubi0+aGRldjsKIAlidF9j
Yihza2IpLT5wa3RfdHlwZSA9IEhDSV9TQ09EQVRBX1BLVDsKLQlza2JfcXVldWVfdGFpbCgmY29u
bi0+ZGF0YV9xLCBza2IpOwotCWhjaV9zY2hlZF90eChoZGV2KTsKLQlyZXR1cm4gMDsKKworCXNr
Yl9xdWV1ZV90YWlsKCZjb25uLT5vdXRfcSwgc2tiKTsKKworCWhjaV9zY2hlZF90eChjb25uLT5o
ZGV2KTsKK30KKworaW50IGhjaV9zZW5kX3NjbyhzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4sIHN0cnVj
dCBza19idWZmICpza2IsIAorCQlpbnQgc25kYnVmc2l6ZSwgdm9pZCAoKnNlbmRfY29tcGxldGVf
Y2IpKHN0cnVjdCBoY2lfY29ubiAqY29ubikpCit7CisJQlRfREJHKCJjb25uICVwIHNrYiAlcCBz
bmRidWZzaXplICVkIiwgY29ubiwgc2tiLCBzbmRidWZzaXplKTsKKwlpZihza2JfcXVldWVfbGVu
KCZjb25uLT5vdXRfcSkgPCBzbmRidWZzaXplKSB7CisJCV9faGNpX3NlbmRfc2NvKGNvbm4sIHNr
Yik7CisJCWNvbm4tPnBrdF9zZW50X2NiID0gc2VuZF9jb21wbGV0ZV9jYjsKKwkJcmV0dXJuIDA7
CisJfQorCWVsc2UgeworCQlyZXR1cm4gLUVBR0FJTjsKKwl9CiB9CiBFWFBPUlRfU1lNQk9MKGhj
aV9zZW5kX3Njbyk7CiAKIC8qIC0tLS0gSENJIFRYIHRhc2sgKG91dGdvaW5nIGRhdGEpIC0tLS0g
Ki8KIAotLyogSENJIENvbm5lY3Rpb24gc2NoZWR1bGVyICovCi1zdGF0aWMgaW5saW5lIHN0cnVj
dCBoY2lfY29ubiAqaGNpX2xvd19zZW50KHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBfX3U4IHR5cGUs
IGludCAqcXVvdGUpCisvKiBIQ0kgQUNMIENvbm5lY3Rpb24gc2NoZWR1bGVyICovCitzdGF0aWMg
aW5saW5lIHN0cnVjdCBoY2lfY29ubiAqaGNpX2xvd19zZW50X2FjbChzdHJ1Y3QgaGNpX2RldiAq
aGRldiwgaW50ICpxdW90ZSkKIHsKIAlzdHJ1Y3QgaGNpX2Nvbm5faGFzaCAqaCA9ICZoZGV2LT5j
b25uX2hhc2g7CiAJc3RydWN0IGhjaV9jb25uICAqY29ubiA9IE5VTEw7Ci0JaW50IG51bSA9IDAs
IG1pbiA9IH4wOworCXVuc2lnbmVkIGludCBudW0gPSAwLCBtaW4gPSB+MDsKIAlzdHJ1Y3QgbGlz
dF9oZWFkICpwOwogCiAJLyogV2UgZG9uJ3QgaGF2ZSB0byBsb2NrIGRldmljZSBoZXJlLiBDb25u
ZWN0aW9ucyBhcmUgYWx3YXlzIApAQCAtMTE3MCwyMCArMTE3OSwyMiBAQAogCQlzdHJ1Y3QgaGNp
X2Nvbm4gKmM7CiAJCWMgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBoY2lfY29ubiwgbGlzdCk7CiAK
LQkJaWYgKGMtPnR5cGUgIT0gdHlwZSB8fCBjLT5zdGF0ZSAhPSBCVF9DT05ORUNURUQKLQkJCQl8
fCBza2JfcXVldWVfZW1wdHkoJmMtPmRhdGFfcSkpCisJCUJUX0RCRygiYy0+dHlwZSAlZCBjLT5z
dGF0ZSAlZCBsZW4oYy0+b3V0X3EpICVkIG1pbiAlZCBjLT5zZW50ICVkIiwgCisJCQljLT50eXBl
LCBjLT5zdGF0ZSwgc2tiX3F1ZXVlX2xlbigmYy0+b3V0X3EpLCBtaW4sIGF0b21pY19yZWFkKCZj
LT5zZW50KSk7CisKKwkJaWYgKGMtPnR5cGUgIT0gQUNMX0xJTksgfHwgYy0+c3RhdGUgIT0gQlRf
Q09OTkVDVEVECisJCQkJfHwgc2tiX3F1ZXVlX2VtcHR5KCZjLT5vdXRfcSkpCiAJCQljb250aW51
ZTsKIAkJbnVtKys7CiAKLQkJaWYgKGMtPnNlbnQgPCBtaW4pIHsKLQkJCW1pbiAgPSBjLT5zZW50
OworCQlpZiAoYXRvbWljX3JlYWQoJmMtPnNlbnQpIDwgbWluKSB7CisJCQltaW4gID0gYXRvbWlj
X3JlYWQoJmMtPnNlbnQpOwogCQkJY29ubiA9IGM7CiAJCX0KIAl9CiAKIAlpZiAoY29ubikgewot
CQlpbnQgY250ID0gKHR5cGUgPT0gQUNMX0xJTksgPyBoZGV2LT5hY2xfY250IDogaGRldi0+c2Nv
X2NudCk7Ci0JCWludCBxID0gY250IC8gbnVtOworCQlpbnQgcSA9IGhkZXYtPmFjbF9jbnQgLyBu
dW07CiAJCSpxdW90ZSA9IHEgPyBxIDogMTsKIAl9IGVsc2UKIAkJKnF1b3RlID0gMDsKQEAgLTEy
MDMsNyArMTIxNCw3IEBACiAJLyogS2lsbCBzdGFsbGVkIGNvbm5lY3Rpb25zICovCiAJbGlzdF9m
b3JfZWFjaChwLCAmaC0+bGlzdCkgewogCQljID0gbGlzdF9lbnRyeShwLCBzdHJ1Y3QgaGNpX2Nv
bm4sIGxpc3QpOwotCQlpZiAoYy0+dHlwZSA9PSBBQ0xfTElOSyAmJiBjLT5zZW50KSB7CisJCWlm
IChjLT50eXBlID09IEFDTF9MSU5LICYmIGF0b21pY19yZWFkKCZjLT5zZW50KSkgewogCQkJQlRf
RVJSKCIlcyBraWxsaW5nIHN0YWxsZWQgQUNMIGNvbm5lY3Rpb24gJXMiLAogCQkJCWhkZXYtPm5h
bWUsIGJhdG9zdHIoJmMtPmRzdCkpOwogCQkJaGNpX2FjbF9kaXNjb25uKGMsIDB4MTMpOwpAQCAt
MTIyNiw4ICsxMjM3LDggQEAKIAkJCWhjaV9hY2xfdHhfdG8oaGRldik7CiAJfQogCi0Jd2hpbGUg
KGhkZXYtPmFjbF9jbnQgJiYgKGNvbm4gPSBoY2lfbG93X3NlbnQoaGRldiwgQUNMX0xJTkssICZx
dW90ZSkpKSB7Ci0JCXdoaWxlIChxdW90ZS0tICYmIChza2IgPSBza2JfZGVxdWV1ZSgmY29ubi0+
ZGF0YV9xKSkpIHsKKwl3aGlsZSAoaGRldi0+YWNsX2NudCAmJiAoY29ubiA9IGhjaV9sb3dfc2Vu
dF9hY2woaGRldiwgJnF1b3RlKSkpIHsKKwkJd2hpbGUgKHF1b3RlLS0gJiYgKHNrYiA9IHNrYl9k
ZXF1ZXVlKCZjb25uLT5vdXRfcSkpKSB7CiAJCQlCVF9EQkcoInNrYiAlcCBsZW4gJWQiLCBza2Is
IHNrYi0+bGVuKTsKIAogCQkJaGNpX2Nvbm5fZW50ZXJfYWN0aXZlX21vZGUoY29ubik7CkBAIC0x
MjM2LDI4ICsxMjQ3LDg3IEBACiAJCQloZGV2LT5hY2xfbGFzdF90eCA9IGppZmZpZXM7CiAKIAkJ
CWhkZXYtPmFjbF9jbnQtLTsKLQkJCWNvbm4tPnNlbnQrKzsKKwkJCWF0b21pY19pbmMoJmNvbm4t
PnNlbnQpOwogCQl9CiAJfQogfQogCi0vKiBTY2hlZHVsZSBTQ08gKi8KLXN0YXRpYyBpbmxpbmUg
dm9pZCBoY2lfc2NoZWRfc2NvKHN0cnVjdCBoY2lfZGV2ICpoZGV2KQorLyogSENJIFNDTyB0eCB0
aW1lciAqLworCitzdGF0aWMgaW50IGhjaV9zY29fdHhfdGltZXIoc3RydWN0IGhydGltZXIgKnRp
bWVyKQogewotCXN0cnVjdCBoY2lfY29ubiAqY29ubjsKLQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwot
CWludCBxdW90ZTsKKwlzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4gPSBjb250YWluZXJfb2YodGltZXIs
IHN0cnVjdCBoY2lfY29ubiwgdHhfdGltZXIpOworI2lmZGVmIENPTkZJR19CVF9IQ0lfQ09SRV9E
RUJVRworCWt0aW1lX3Qgbm93ID0gdGltZXItPmJhc2UtPmdldF90aW1lKCk7CisjZW5kaWYKIAot
CUJUX0RCRygiJXMiLCBoZGV2LT5uYW1lKTsKKwlCVF9EQkcoIiVzLCBjb25uICVwLCB0aW1lICU1
bHUuJTA2bHUiLCBjb25uLT5oZGV2LT5uYW1lLCBjb25uLAorCQkodW5zaWduZWQgbG9uZykgbm93
LnR2NjQsIAorCQlkb19kaXYobm93LnR2NjQsIE5TRUNfUEVSX1NFQykgLyAxMDAwKTsKIAotCXdo
aWxlIChoZGV2LT5zY29fY250ICYmIChjb25uID0gaGNpX2xvd19zZW50KGhkZXYsIFNDT19MSU5L
LCAmcXVvdGUpKSkgewotCQl3aGlsZSAocXVvdGUtLSAmJiAoc2tiID0gc2tiX2RlcXVldWUoJmNv
bm4tPmRhdGFfcSkpKSB7Ci0JCQlCVF9EQkcoInNrYiAlcCBsZW4gJWQiLCBza2IsIHNrYi0+bGVu
KTsKLQkJCWhjaV9zZW5kX2ZyYW1lKHNrYik7CisJaWYoYXRvbWljX3JlYWQoJmNvbm4tPnNlbnQp
ID4gMCkgeworCQlhdG9taWNfZGVjKCZjb25uLT5zZW50KTsKKwkJYXRvbWljX2luYygmY29ubi0+
aGRldi0+c2NvX2NudCk7CisJCWhjaV9zY2hlZF90eChjb25uLT5oZGV2KTsKKwl9CisJLyogV2Fr
ZSB1cCB3cml0ZXJzICovCisJaWYoY29ubi0+cGt0X3NlbnRfY2IpIHsKKwkJY29ubi0+cGt0X3Nl
bnRfY2IoY29ubik7CisJfQorCXJldHVybiBIUlRJTUVSX05PUkVTVEFSVDsKK30KKyAKKy8qIEhD
SSBTQ08gQ29ubmVjdGlvbiBzY2hlZHVsZXIgKi8KIAotCQkJY29ubi0+c2VudCsrOwotCQkJaWYg
KGNvbm4tPnNlbnQgPT0gfjApCi0JCQkJY29ubi0+c2VudCA9IDA7CitzdGF0aWMgaW5saW5lIHZv
aWQgaGNpX3NjaGVkX3NjbyhzdHJ1Y3QgaGNpX2RldiAqaGRldikKK3sKKwlzdHJ1Y3QgaGNpX2Nv
bm5faGFzaCAqaCA9ICZoZGV2LT5jb25uX2hhc2g7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKwlz
dHJ1Y3QgbGlzdF9oZWFkICpwOworCXN0cnVjdCBoY2lfY29ubiAqYzsKKwkKKwlCVF9EQkcoIiVz
IiwgaGRldi0+bmFtZSk7CisgIAorCS8qIFdlIGRvbid0IGhhdmUgdG8gbG9jayBkZXZpY2UgaGVy
ZS4gQ29ubmVjdGlvbnMgYXJlIGFsd2F5cyAKKwkgKiBhZGRlZCBhbmQgcmVtb3ZlZCB3aXRoIFRY
IHRhc2sgZGlzYWJsZWQuICovCisJbGlzdF9mb3JfZWFjaChwLCAmaC0+bGlzdCkgeworCQljID0g
bGlzdF9lbnRyeShwLCBzdHJ1Y3QgaGNpX2Nvbm4sIGxpc3QpOworICAKKwkJLyogU0NPIHNjaGVk
dWxpbmcgYWxnb3JpdGhtIG1ha2VzIHN1cmUgdGhlcmUgaXMgbmV2ZXIgbW9yZSB0aGFuCisJCSAg
IDEgb3V0c3RhbmRpbmcgcGFja2V0IGZvciBlYWNoIGNvbm5lY3Rpb24gKi8KKwkJaWYgKGMtPnR5
cGUgPT0gU0NPX0xJTksgJiYgYXRvbWljX3JlYWQoJmMtPnNlbnQpIDwgMSAgJiYgYy0+c3RhdGUg
PT0gQlRfQ09OTkVDVEVEKQorCQl7CisJCQlpZihhdG9taWNfcmVhZCgmaGRldi0+c2NvX2NudCkg
PiAwKSB7CisJCQkJaWYoKHNrYiA9IHNrYl9kZXF1ZXVlKCZjLT5vdXRfcSkpICE9IE5VTEwpIHsK
KwkJCQkJa3RpbWVfdCBub3csIHBrdF90aW1lOworCisJCQkJCWhjaV9zZW5kX2ZyYW1lKHNrYik7
CisgCisJCQkJCWF0b21pY19pbmMoJmMtPnNlbnQpOwkJCQorCQkJCQlhdG9taWNfZGVjKCZoZGV2
LT5zY29fY250KTsKKworCQkJCQljLT50eF90aW1lci5mdW5jdGlvbiA9IGhjaV9zY29fdHhfdGlt
ZXI7CisJCQkJCQorCQkJCQlwa3RfdGltZSA9CisJCQkJCQlrdGltZV9zZXQoMCwgTlNFQ19QRVJf
U0VDIC8gMTYwMDAgKiAoc2tiLT5sZW4gLSBIQ0lfU0NPX0hEUl9TSVpFKSk7CisJCQkJCW5vdyA9
IGMtPnR4X3RpbWVyLmJhc2UtPmdldF90aW1lKCk7CisKKwkJCQkJaWYoYy0+dHhfdGltZXIuZXhw
aXJlcy50djY0ID09IDApIHsKKwkJCQkJCWMtPnR4X3RpbWVyLmV4cGlyZXMgPSBub3c7CisJCQkJ
CX0KKworCQkJCQljLT50eF90aW1lci5leHBpcmVzLnR2NjQgKz0gcGt0X3RpbWUudHY2NDsKKwkJ
CQkJaWYoYy0+dHhfdGltZXIuZXhwaXJlcy50djY0ID4gbm93LnR2NjQpIHsKKwkJCQkJCWhydGlt
ZXJfcmVzdGFydCgmYy0+dHhfdGltZXIpOworCQkJCQl9CisJCQkJCWVsc2UgeworCQkJCQkJLyog
VGltZXIgaXMgdG8gZXhwaXJlIGluIHRoZSBwYXN0IC0gdGhpcyBjYW4gaGFwcGVuIGlmIHRpbWVy
IGJhc2UKKwkJCQkJCSBwcmVjaXNpb24gaXMgbGVzcyB0aGFuIHBrdF90aW1lLiBJbiB0aGlzIGNh
c2Ugd2UgZm9yY2UgdGltZXIKKwkJCQkJCSBleHBpcmF0aW9uIGJ5IGNhbGxpbmcgaXRzIGV4cGly
ZXMgZnVuY3Rpb24gKi8KKwkJCQkJCWMtPnR4X3RpbWVyLmZ1bmN0aW9uKCZjLT50eF90aW1lcik7
CisJCQkJCX0KKwkJCQl9CisJCQl9CiAJCX0KIAl9CiB9CkBAIC0xMjY5LDE0ICsxMzM5LDE0IEBA
CiAKIAlyZWFkX2xvY2soJmhjaV90YXNrX2xvY2spOwogCi0JQlRfREJHKCIlcyBhY2wgJWQgc2Nv
ICVkIiwgaGRldi0+bmFtZSwgaGRldi0+YWNsX2NudCwgaGRldi0+c2NvX2NudCk7CisJQlRfREJH
KCIlcyBhY2wgJWQgc2NvICVkIiwgaGRldi0+bmFtZSwgaGRldi0+YWNsX2NudCwgYXRvbWljX3Jl
YWQoJmhkZXYtPnNjb19jbnQpKTsKIAogCS8qIFNjaGVkdWxlIHF1ZXVlcyBhbmQgc2VuZCBzdHVm
ZiB0byBIQ0kgZHJpdmVyICovCiAKLQloY2lfc2NoZWRfYWNsKGhkZXYpOwotCiAJaGNpX3NjaGVk
X3NjbyhoZGV2KTsKIAorCWhjaV9zY2hlZF9hY2woaGRldik7CisKIAkvKiBTZW5kIG5leHQgcXVl
dWVkIHJhdyAodW5rbm93biB0eXBlKSBwYWNrZXQgKi8KIAl3aGlsZSAoKHNrYiA9IHNrYl9kZXF1
ZXVlKCZoZGV2LT5yYXdfcSkpKQogCQloY2lfc2VuZF9mcmFtZShza2IpOwpkaWZmIC11ck4gbGlu
dXgtMi42LjE4LW1oNy9uZXQvYmx1ZXRvb3RoL2hjaV9ldmVudC5jIGxpbnV4LTIuNi4xOC1taDct
c2NvL25ldC9ibHVldG9vdGgvaGNpX2V2ZW50LmMKLS0tIGxpbnV4LTIuNi4xOC1taDcvbmV0L2Js
dWV0b290aC9oY2lfZXZlbnQuYwkyMDA2LTExLTAyIDA3OjQ1OjMxLjAwMDAwMDAwMCAtMDcwMAor
KysgbGludXgtMi42LjE4LW1oNy1zY28vbmV0L2JsdWV0b290aC9oY2lfZXZlbnQuYwkyMDA2LTEx
LTAyIDA3OjQ4OjA4LjAwMDAwMDAwMCAtMDcwMApAQCAtMzEwLDcgKzMxMCw3IEBACiAJCWx2ID0g
KHN0cnVjdCBoY2lfcnBfcmVhZF9sb2NfdmVyc2lvbiAqKSBza2ItPmRhdGE7CiAKIAkJaWYgKGx2
LT5zdGF0dXMpIHsKLQkJCUJUX0RCRygiJXMgUkVBRF9MT0NBTF9WRVJTSU9OIGZhaWxlZCAlZCIs
IGhkZXYtPm5hbWUsIGxmLT5zdGF0dXMpOworCQkJQlRfREJHKCIlcyBSRUFEX0xPQ0FMX1ZFUlNJ
T04gZmFpbGVkICVkIiwgaGRldi0+bmFtZSwgbHYtPnN0YXR1cyk7CiAJCQlicmVhazsKIAkJfQog
CkBAIC0zNzIsNyArMzcyLDcgQEAKIAkJfQogCiAJCWhkZXYtPmFjbF9jbnQgPSBoZGV2LT5hY2xf
cGt0czsKLQkJaGRldi0+c2NvX2NudCA9IGhkZXYtPnNjb19wa3RzOworCQlhdG9taWNfc2V0KCZo
ZGV2LT5zY29fY250LCBoZGV2LT5zY29fcGt0cyk7CiAKIAkJQlRfREJHKCIlcyBtdHU6IGFjbCAl
ZCwgc2NvICVkIG1heF9wa3Q6IGFjbCAlZCwgc2NvICVkIiwgaGRldi0+bmFtZSwKIAkJCWhkZXYt
PmFjbF9tdHUsIGhkZXYtPnNjb19tdHUsIGhkZXYtPmFjbF9wa3RzLCBoZGV2LT5zY29fcGt0cyk7
CkBAIC04NjEsMTUgKzg2MSwxNSBAQAogCiAJCWNvbm4gPSBoY2lfY29ubl9oYXNoX2xvb2t1cF9o
YW5kbGUoaGRldiwgaGFuZGxlKTsKIAkJaWYgKGNvbm4pIHsKLQkJCWNvbm4tPnNlbnQgLT0gY291
bnQ7CisJCQlhdG9taWNfc3ViKGNvdW50LCAmY29ubi0+c2VudCk7CiAKLQkJCWlmIChjb25uLT50
eXBlID09IFNDT19MSU5LKSB7Ci0JCQkJaWYgKChoZGV2LT5zY29fY250ICs9IGNvdW50KSA+IGhk
ZXYtPnNjb19wa3RzKQotCQkJCQloZGV2LT5zY29fY250ID0gaGRldi0+c2NvX3BrdHM7Ci0JCQl9
IGVsc2UgeworCQkJaWYgKGNvbm4tPnR5cGUgPT0gQUNMX0xJTkspIHsKIAkJCQlpZiAoKGhkZXYt
PmFjbF9jbnQgKz0gY291bnQpID4gaGRldi0+YWNsX3BrdHMpCiAJCQkJCWhkZXYtPmFjbF9jbnQg
PSBoZGV2LT5hY2xfcGt0czsKIAkJCX0KKwkJCS8qIE5vdGUgOiB3ZSBkbyBub3QgdXNlIHRoZSAi
bnVtYmVyIG9mIGNvbXBsZXRlZCBwYWNrZXRzIiBldmVudAorCQkJdG8gaW5jcmVtZW50IGhkZXYt
PnNjb19jbnQsIGFzIHRoaXMgZmVhdHVyZSBpcyBvbmx5IG9wdGlvbm5hbGx5IHN1cHBvcnQKKwkJ
CWJ5IGJsdWV0b290aCBjb250cm9sbGVycy4gU28gdGhlcmUgaXMgbm8gaWYgYnJhbmNoIGZvciBT
Q09fTElOSyBwYWNrZXRzICovCiAJCX0KIAl9CiAJaGNpX3NjaGVkX3R4KGhkZXYpOwpkaWZmIC11
ck4gbGludXgtMi42LjE4LW1oNy9uZXQvYmx1ZXRvb3RoL3Njby5jIGxpbnV4LTIuNi4xOC1taDct
c2NvL25ldC9ibHVldG9vdGgvc2NvLmMKLS0tIGxpbnV4LTIuNi4xOC1taDcvbmV0L2JsdWV0b290
aC9zY28uYwkyMDA2LTExLTAyIDA3OjQ1OjMxLjAwMDAwMDAwMCAtMDcwMAorKysgbGludXgtMi42
LjE4LW1oNy1zY28vbmV0L2JsdWV0b290aC9zY28uYwkyMDA2LTExLTAyIDA3OjQ4OjA4LjAwMDAw
MDAwMCAtMDcwMApAQCAtNTMsNyArNTMsMTMgQEAKICNkZWZpbmUgQlRfREJHKEQuLi4pCiAjZW5k
aWYKIAotI2RlZmluZSBWRVJTSU9OICIwLjUiCisjZGVmaW5lIFZFUlNJT04gIjAuNiIKKworI2Rl
ZmluZSBNQVhfU0NPX1RYQlVGUyAyMDAKKyNkZWZpbmUgTUFYX1NDT19SWEJVRlMgMjAwCisKKyNk
ZWZpbmUgREVGQVVMVF9TQ09fVFhCVUZTIDUKKyNkZWZpbmUgREVGQVVMVF9TQ09fUlhCVUZTIDUK
IAogc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc2NvX3NvY2tfb3BzOwogCkBAIC02MSw2
ICs2Nyw4IEBACiAJLmxvY2sgPSBSV19MT0NLX1VOTE9DS0VECiB9OwogCisvKiBMb2NhbCBmdW5j
dGlvbnMgZGVjbGFyYXRpb24gKi8KKwogc3RhdGljIHZvaWQgX19zY29fY2hhbl9hZGQoc3RydWN0
IHNjb19jb25uICpjb25uLCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpwYXJlbnQpOwog
c3RhdGljIHZvaWQgc2NvX2NoYW5fZGVsKHN0cnVjdCBzb2NrICpzaywgaW50IGVycik7CiAKQEAg
LTY5LDYgKzc3LDEwIEBACiBzdGF0aWMgdm9pZCBzY29fc29ja19jbG9zZShzdHJ1Y3Qgc29jayAq
c2spOwogc3RhdGljIHZvaWQgc2NvX3NvY2tfa2lsbChzdHJ1Y3Qgc29jayAqc2spOwogCitzdGF0
aWMgdm9pZCBzY29fc29ja19yZnJlZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworc3RhdGljIGlu
dCBzY29fc29ja19xdWV1ZV9yY3Zfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYg
KnNrYik7CisKIC8qIC0tLS0gU0NPIHRpbWVycyAtLS0tICovCiBzdGF0aWMgdm9pZCBzY29fc29j
a190aW1lb3V0KHVuc2lnbmVkIGxvbmcgYXJnKQogewpAQCAtMjMwLDMxICsyNDIsNjQgQEAKIAly
ZXR1cm4gZXJyOwogfQogCitzdGF0aWMgdm9pZCBzY29fc2VuZF9jb21wbGV0ZV9jYihzdHJ1Y3Qg
aGNpX2Nvbm4gKmhjb24pCit7CisJc3RydWN0IHNjb19jb25uICpjb25uID0gaGNvbi0+c2NvX2Rh
dGE7CisJc3RydWN0IHNvY2sgKnNrID0gY29ubi0+c2s7CisJQlRfREJHKCJjb25uICVwLCBzb2Nr
ICVwIiwgY29ubiwgc2spOworCisJaWYoc2spIHsKKwkJYmhfbG9ja19zb2NrKHNrKTsKKwkJcmVh
ZF9sb2NrKCZzay0+c2tfY2FsbGJhY2tfbG9jayk7CisKKwkJaWYgKHNrLT5za19zbGVlcCAmJiB3
YWl0cXVldWVfYWN0aXZlKHNrLT5za19zbGVlcCkpCisJCQl3YWtlX3VwX2ludGVycnVwdGlibGUo
c2stPnNrX3NsZWVwKTsKKworCQlza193YWtlX2FzeW5jKHNrLCAyLCBQT0xMX09VVCk7CisKKwkJ
cmVhZF91bmxvY2soJnNrLT5za19jYWxsYmFja19sb2NrKTsKKwkJYmhfdW5sb2NrX3NvY2soc2sp
OworCX0KK30KKwogc3RhdGljIGlubGluZSBpbnQgc2NvX3NlbmRfZnJhbWUoc3RydWN0IHNvY2sg
KnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4pCiB7CiAJc3RydWN0IHNjb19jb25uICpj
b25uID0gc2NvX3BpKHNrKS0+Y29ubjsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwotCWludCBlcnIs
IGNvdW50OworCWludCBlcnI7CiAKIAkvKiBDaGVjayBvdXRnb2luZyBNVFUgKi8KIAlpZiAobGVu
ID4gY29ubi0+bXR1KQotCQlyZXR1cm4gLUVJTlZBTDsKKwkJcmV0dXJuIC1FTVNHU0laRTsKIAog
CUJUX0RCRygic2sgJXAgbGVuICVkIiwgc2ssIGxlbik7CiAKLQljb3VudCA9IG1pbl90KHVuc2ln
bmVkIGludCwgY29ubi0+bXR1LCBsZW4pOwotCWlmICghKHNrYiA9IGJ0X3NrYl9zZW5kX2FsbG9j
KHNrLCBjb3VudCwgbXNnLT5tc2dfZmxhZ3MgJiBNU0dfRE9OVFdBSVQsICZlcnIpKSkKLQkJcmV0
dXJuIGVycjsKKwlpZiAoIShza2IgPSBidF9za2JfYWxsb2MobGVuLCBHRlBfS0VSTkVMKSkpCisJ
CXJldHVybiAtRU5PQlVGUzsKIAotCWlmIChtZW1jcHlfZnJvbWlvdmVjKHNrYl9wdXQoc2tiLCBj
b3VudCksIG1zZy0+bXNnX2lvdiwgY291bnQpKSB7CisJaWYgKG1lbWNweV9mcm9taW92ZWMoc2ti
X3B1dChza2IsIGxlbiksIG1zZy0+bXNnX2lvdiwgbGVuKSkgewogCQllcnIgPSAtRUZBVUxUOwog
CQlnb3RvIGZhaWw7CiAJfQogCi0JaWYgKChlcnIgPSBoY2lfc2VuZF9zY28oY29ubi0+aGNvbiwg
c2tiKSkgPCAwKQotCQlyZXR1cm4gZXJyOworCWlmKG1zZy0+bXNnX2ZsYWdzICYgTVNHX0RPTlRX
QUlUKSB7CisJCWVyciA9IGhjaV9zZW5kX3Njbyhjb25uLT5oY29uLCBza2IsIHNrLT5za19zbmRi
dWYsIHNjb19zZW5kX2NvbXBsZXRlX2NiKTsKKwl9CisJZWxzZSB7CisJCWVyciA9IHdhaXRfZXZl
bnRfaW50ZXJydXB0aWJsZSgqc2stPnNrX3NsZWVwLCAKKwkJCShzay0+c2tfc3RhdGUgIT0gQlRf
Q09OTkVDVEVEKSB8fAorCQkJKGhjaV9zZW5kX3Njbyhjb25uLT5oY29uLCBza2IsIHNrLT5za19z
bmRidWYsIHNjb19zZW5kX2NvbXBsZXRlX2NiKSA9PSAwKQorCQkJKTsKKwkJLyogSXQgaXMgcG9z
c2libGUgdGhhdCB3ZSBoYXZlIGJlZW4gd2FrZW4gdXAgYmVjYXVzZSB0aGUgcGVlciBjbG9zZWQg
dGhlIFNDTyBjb25uZWN0aW9uICovCisJCWlmKHNrLT5za19zdGF0ZSAhPSBCVF9DT05ORUNURUQp
IHsKKwkJCWVyciA9IC1FTk9UQ09OTjsKKwkJfQorCX0KKworCWlmIChlcnIgPCAwKQorCQlnb3Rv
IGZhaWw7CiAKLQlyZXR1cm4gY291bnQ7CisJcmV0dXJuIGxlbjsKIAogZmFpbDoKIAlrZnJlZV9z
a2Ioc2tiKTsKQEAgLTI3Myw4ICszMTgsOSBAQAogCWlmIChzay0+c2tfc3RhdGUgIT0gQlRfQ09O
TkVDVEVEKQogCQlnb3RvIGRyb3A7CiAKLQlpZiAoIXNvY2tfcXVldWVfcmN2X3NrYihzaywgc2ti
KSkKKwlpZiAoc2NvX3NvY2tfcXVldWVfcmN2X3NrYihzaywgc2tiKSA9PSAwKSB7CiAJCXJldHVy
bjsKKwl9CiAKIGRyb3A6CiAJa2ZyZWVfc2tiKHNrYik7CkBAIC0zMjgsNyArMzc0LDYgQEAKIAlC
VF9EQkcoInNrICVwIiwgc2spOwogCiAJc2tiX3F1ZXVlX3B1cmdlKCZzay0+c2tfcmVjZWl2ZV9x
dWV1ZSk7Ci0Jc2tiX3F1ZXVlX3B1cmdlKCZzay0+c2tfd3JpdGVfcXVldWUpOwogfQogCiBzdGF0
aWMgdm9pZCBzY29fc29ja19jbGVhbnVwX2xpc3RlbihzdHJ1Y3Qgc29jayAqcGFyZW50KQpAQCAt
MzYwLDYgKzQwNSw4IEBACiAJLyogS2lsbCBwb29yIG9ycGhhbiAqLwogCWJ0X3NvY2tfdW5saW5r
KCZzY29fc2tfbGlzdCwgc2spOwogCXNvY2tfc2V0X2ZsYWcoc2ssIFNPQ0tfREVBRCk7CisJCisJ
LyogcmVsZWFzZSBzb2NrZXQgKi8KIAlzb2NrX3B1dChzayk7CiB9CiAKQEAgLTM3Niw3ICs0MjMs
NyBAQAogCiAJY29ubiA9IHNjb19waShzayktPmNvbm47CiAKLQlCVF9EQkcoInNrICVwIHN0YXRl
ICVkIGNvbm4gJXAgc29ja2V0ICVwIiwgc2ssIHNrLT5za19zdGF0ZSwgY29ubiwgc2stPnNrX3Nv
Y2tldCk7CisJQlRfREJHKCJzayAlcCBzdGF0ZSAlZCBjb25uICVwIHNvY2tldCAlcCByZWZjbnQg
JWQiLCBzaywgc2stPnNrX3N0YXRlLCBjb25uLCBzay0+c2tfc29ja2V0LCBhdG9taWNfcmVhZCgm
c2stPnNrX3JlZmNudCkpOwogCiAJc3dpdGNoIChzay0+c2tfc3RhdGUpIHsKIAljYXNlIEJUX0xJ
U1RFTjoKQEAgLTQyNiw2ICs0NzMsMTQgQEAKIAlJTklUX0xJU1RfSEVBRCgmYnRfc2soc2spLT5h
Y2NlcHRfcSk7CiAKIAlzay0+c2tfZGVzdHJ1Y3QgPSBzY29fc29ja19kZXN0cnVjdDsKKworICAg
ICAgIC8qIFB1dCBzZW5zaWJsZSB2YWx1ZXMgZm9yIGEgdm9pY2UgbGluayAoaS5lLiBub3QgdG9v
IGJpZyksCisgICAgICAgICAgYXMgc3lzY3RsX3JtZW1fZGVmYXVsdCAmIHN5c2N0bF93bWVtX2Rl
ZmF1bHQgYXJlCisgICAgICAgICAgIHJlYWxseSBub3QgZGVzaWduZWQgZm9yIHRoYXQgLS0gSW4g
b3VyIGNhc2Ugd2UgdXNlIHNrXyoqYnVmIHRvCisgICAgICAgICAgIHN0b3JlIGEgY291bnQgb2Yg
U0NPIHBhY2tldHMsIG5vdCBhIG51bWJlciBvZiBieXRlcyBhcyBtb3N0IG9mIG90aGVyIHR5cGUg
b2YKKyAgICAgICAgICAgc29ja2V0cyBkbyAqLworCXNrLT5za19zbmRidWYgPSBERUZBVUxUX1ND
T19UWEJVRlM7CisJc2stPnNrX3JjdmJ1ZiA9IERFRkFVTFRfU0NPX1JYQlVGUzsKIAlzay0+c2tf
c25kdGltZW8gPSBTQ09fQ09OTl9USU1FT1VUOwogCiAJc29ja19yZXNldF9mbGFnKHNrLCBTT0NL
X1pBUFBFRCk7CkBAIC02NTYsNiArNzExLDcgQEAKIHN0YXRpYyBpbnQgc2NvX3NvY2tfc2V0c29j
a29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBjaGFyIF9f
dXNlciAqb3B0dmFsLCBpbnQgb3B0bGVuKQogewogCXN0cnVjdCBzb2NrICpzayA9IHNvY2stPnNr
OworCXUzMiBvcHQ7CiAJaW50IGVyciA9IDA7CiAKIAlCVF9EQkcoInNrICVwIiwgc2spOwpAQCAt
NjYzLDYgKzcxOSwzMCBAQAogCWxvY2tfc29jayhzayk7CiAKIAlzd2l0Y2ggKG9wdG5hbWUpIHsK
KwljYXNlIFNDT19UWEJVRlM6CisJCWlmIChnZXRfdXNlcihvcHQsICh1MzIgX191c2VyICopIG9w
dHZhbCkpIHsKKwkJCWVyciA9IC1FRkFVTFQ7CisJCQlicmVhazsKKwkJfQorCQlpZihvcHQgPiBN
QVhfU0NPX1RYQlVGUykgeworCQkJZXJyID0gLUVJTlZBTDsKKwkJCWJyZWFrOworCQl9CisKKwkJ
c2stPnNrX3NuZGJ1ZiA9IG9wdDsKKwkJYnJlYWs7CisJY2FzZSBTQ09fUlhCVUZTOgorCQlpZiAo
Z2V0X3VzZXIob3B0LCAodTMyIF9fdXNlciAqKSBvcHR2YWwpKSB7CisJCQllcnIgPSAtRUZBVUxU
OworCQkJYnJlYWs7CisJCX0KKwkJaWYob3B0ID4gTUFYX1NDT19SWEJVRlMpIHsKKwkJCWVyciA9
IC1FSU5WQUw7CisJCQlicmVhazsKKwkJfQorCisJCXNrLT5za19yY3ZidWYgPSBvcHQ7CisJCWJy
ZWFrOwogCWRlZmF1bHQ6CiAJCWVyciA9IC1FTk9QUk9UT09QVDsKIAkJYnJlYWs7CkBAIC02Nzcs
NyArNzU3LDggQEAKIAlzdHJ1Y3Qgc29jayAqc2sgPSBzb2NrLT5zazsKIAlzdHJ1Y3Qgc2NvX29w
dGlvbnMgb3B0czsKIAlzdHJ1Y3Qgc2NvX2Nvbm5pbmZvIGNpbmZvOwotCWludCBsZW4sIGVyciA9
IDA7IAorCWludCBsZW4sIGVyciA9IDA7CisJaW50IHZhbDsKIAogCUJUX0RCRygic2sgJXAiLCBz
ayk7CiAKQEAgLTY4Nyw2ICs3NjgsMjQgQEAKIAlsb2NrX3NvY2soc2spOwogCiAJc3dpdGNoIChv
cHRuYW1lKSB7CisJY2FzZSBTQ09fUlhCVUZTOgorCQl2YWwgPSBzay0+c2tfcmN2YnVmOworCisJ
CWxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgbGVuLCBzaXplb2YodmFsKSk7CisJCWlmIChjb3B5
X3RvX3VzZXIob3B0dmFsLCAoY2hhciAqKSZ2YWwsIGxlbikpCisJCQllcnIgPSAtRUZBVUxUOwor
CisJCWJyZWFrOworCisJY2FzZSBTQ09fVFhCVUZTOgorCQl2YWwgPSBzay0+c2tfc25kYnVmOwor
CisJCWxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgbGVuLCBzaXplb2YodmFsKSk7CisJCWlmIChj
b3B5X3RvX3VzZXIob3B0dmFsLCAoY2hhciAqKSZ2YWwsIGxlbikpCisJCQllcnIgPSAtRUZBVUxU
OworCisJCWJyZWFrOworCiAJY2FzZSBTQ09fT1BUSU9OUzoKIAkJaWYgKHNrLT5za19zdGF0ZSAh
PSBCVF9DT05ORUNURUQpIHsKIAkJCWVyciA9IC1FTk9UQ09OTjsKQEAgLTg5MSw2ICs5OTAsNDIg
QEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBzY29fc29ja19xdWV1ZV9yY3Zfc2tiKHN0
cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKyAgICAgICBpbnQgZXJyID0g
MDsKKworICAgICAgIC8qIENhc3Qgc2tiLT5yY3ZidWYgdG8gdW5zaWduZWQuLi4gSXQncyBwb2lu
dGxlc3MsIGJ1dCByZWR1Y2VzCisgICAgICAgICAgbnVtYmVyIG9mIHdhcm5pbmdzIHdoZW4gY29t
cGlsaW5nIHdpdGggLVcgLS1BTksKKyAgICAgICAgKi8KKyAgICAgICBpZiAoYXRvbWljX3JlYWQo
JnNrLT5za19ybWVtX2FsbG9jKSArIDEgPgorICAgICAgICAgICAodW5zaWduZWQpc2stPnNrX3Jj
dmJ1ZikgeworICAgICAgICAgICAgICAgZXJyID0gLUVOT01FTTsKKyAgICAgICAgICAgICAgIGdv
dG8gb3V0OworICAgICAgIH0KKworICAgICAgIHNrYi0+ZGV2ID0gTlVMTDsKKyAgICAgICBza2It
PnNrID0gc2s7CisgICAgICAgc2tiLT5kZXN0cnVjdG9yID0gc2NvX3NvY2tfcmZyZWU7CisgICAg
ICAgYXRvbWljX2FkZCgxLCAmc2stPnNrX3JtZW1fYWxsb2MpOworCisgICAgICAgc2tiX3F1ZXVl
X3RhaWwoJnNrLT5za19yZWNlaXZlX3F1ZXVlLCBza2IpOworCisgICAgICAgaWYgKCFzb2NrX2Zs
YWcoc2ssIFNPQ0tfREVBRCkpCisgICAgICAgICAgICAgICBzay0+c2tfZGF0YV9yZWFkeShzaywg
MSk7CitvdXQ6CisgICAgICAgcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQgc2NvX3NvY2tf
cmZyZWUoc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKyAgICAgICBzdHJ1Y3Qgc29jayAqc2sgPSBz
a2ItPnNrOworCisgICAgICAgYXRvbWljX3N1YigxLCAmc2stPnNrX3JtZW1fYWxsb2MpOworfQor
CisKKy8qIC0tLS0tLS0gT3RoZXJzIC0tLS0tLS0gKi8KKwogc3RhdGljIHNzaXplX3Qgc2NvX3N5
c2ZzX3Nob3coc3RydWN0IGNsYXNzICpkZXYsIGNoYXIgKmJ1ZikKIHsKIAlzdHJ1Y3Qgc29jayAq
c2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>1765</attachid>
            <date>2007-01-27 18:05:48 +0300</date>
            <delta_ts>2007-01-27 18:05:48 +0300</delta_ts>
            <desc>sco-flowcontrol-v3.0.diff</desc>
            <filename>sco-flowcontrol-v3.0.diff</filename>
            <type>text/plain</type>
            <size>22197</size>
            <attacher name="Anton Farygin">rider</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaCBiL2luY2x1ZGUvbmV0L2Js
dWV0b290aC9oY2kuaAppbmRleCAxMGEzZWVjLi40MTQzMTNhIDEwMDY0NAotLS0gYS9pbmNsdWRl
L25ldC9ibHVldG9vdGgvaGNpLmgKKysrIGIvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oCkBA
IC03NjcsNiArNzY3LDkgQEAgc3RydWN0IGhjaV9kZXZfc3RhdHMgewogCV9fdTMyIGJ5dGVfdHg7
CiB9OwogCisvKiBGaWVsZHMgZG93biB0aGVyZSBhcmUgbW9zdGx5IHRoZSBzYW1lIGFzIGhjaV9k
ZXYsCisgICBhcyB0aGlzIHN0cnVjdHVyZSBpcyBtZWFudCB0byBjb21tdW5pY2F0ZSBpbmZvCisg
ICB0byB1c2Vyc3BhY2UgKi8KIHN0cnVjdCBoY2lfZGV2X2luZm8gewogCV9fdTE2IGRldl9pZDsK
IAljaGFyICBuYW1lWzhdOwpAQCAtNzgyLDkgKzc4NSwxMyBAQCBzdHJ1Y3QgaGNpX2Rldl9pbmZv
IHsKIAlfX3UzMiBsaW5rX3BvbGljeTsKIAlfX3UzMiBsaW5rX21vZGU7CiAKKwkvKiBNYXhpbXVt
IHRyYW5zbWl0aW9uIHVuaXQgZm9yIEFDTCBwYWNrZXRzICovCiAJX191MTYgYWNsX210dTsKKwkv
KiBOdW1iZXIgb2YgQUNMIHBhY2tldHMgdGhlIGJhc2ViYW5kIGlzIGFibGUgdG8gYnVmZmVyICov
CiAJX191MTYgYWNsX3BrdHM7CisJLyogTWF4aW11bSB0cmFuc21pdGlvbiB1bml0IGZvciBTQ08g
cGFja2V0cyAqLwogCV9fdTE2IHNjb19tdHU7CisJLyogTnVtYmVyIG9mIFNDTyBwYWNrZXRzIHRo
ZSBiYXNlYmFuZCBpcyBhYmxlIHRvIGJ1ZmZlciAqLwogCV9fdTE2IHNjb19wa3RzOwogCiAJc3Ry
dWN0IGhjaV9kZXZfc3RhdHMgc3RhdDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JsdWV0b290
aC9oY2lfY29yZS5oIGIvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmgKaW5kZXggYzBm
YzM5Ni4uNWJhZDdjMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3Jl
LmgKKysrIGIvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmgKQEAgLTI1LDYgKzI1LDgg
QEAKICNpZm5kZWYgX19IQ0lfQ09SRV9ICiAjZGVmaW5lIF9fSENJX0NPUkVfSAogCisjaW5jbHVk
ZSA8bGludXgvaHJ0aW1lci5oPgorCiAjaW5jbHVkZSA8bmV0L2JsdWV0b290aC9oY2kuaD4KIAog
LyogSENJIHVwcGVyIHByb3RvY29scyAqLwpAQCAtODgsMTIgKzkwLDE4IEBAIHN0cnVjdCBoY2lf
ZGV2IHsKIAl1bnNpZ25lZCBsb25nCXF1aXJrczsKIAogCWF0b21pY190CWNtZF9jbnQ7CisJLyog
TnVtYmVyIG9mIGF2YWlsYWJsZSBjb250cm9sbGVyIGJ1ZmZlcnMgZm9yIEFDTCBwYWNrZXRzICov
CiAJdW5zaWduZWQgaW50CWFjbF9jbnQ7Ci0JdW5zaWduZWQgaW50CXNjb19jbnQ7CisJLyogTnVt
YmVyIG9mIGF2YWlsYWJsZSBjb250cm9sbGVyIGJ1ZmZlcnMgZm9yIFNDTyBwYWNrZXRzICovCisJ
YXRvbWljX3QJc2NvX2NudDsKIAorCS8qIE1heGltdW0gdHJhbnNtaXRpb24gdW5pdCBmb3IgQUNM
IHBhY2tldHMgKi8KIAl1bnNpZ25lZCBpbnQJYWNsX210dTsKKwkvKiBNYXhpbXVtIHRyYW5zbWl0
aW9uIHVuaXQgZm9yIFNDTyBwYWNrZXRzICovCiAJdW5zaWduZWQgaW50CXNjb19tdHU7CisJLyog
TWF4aW11bSBudW1iZXIgb2YgQUNMIHBhY2tldHMgdGhlIGNvbnRyb2xsZXIgaXMgYWJsZSB0byBi
dWZmZXIgKi8KIAl1bnNpZ25lZCBpbnQJYWNsX3BrdHM7CisJLyogTWF4aW11bSBudW1iZXIgb2Yg
U0NPIHBhY2tldHMgdGhlIGNvbnRyb2xsZXIgaXMgYWJsZSB0byBidWZmZXIgKi8KIAl1bnNpZ25l
ZCBpbnQJc2NvX3BrdHM7CiAKIAl1bnNpZ25lZCBsb25nCWNtZF9sYXN0X3R4OwpAQCAtMTQ1LDEy
ICsxNTMsMTIgQEAgc3RydWN0IGhjaV9jb25uIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAK
IAlhdG9taWNfdAkgcmVmY250OwotCXNwaW5sb2NrX3QJIGxvY2s7CiAKIAliZGFkZHJfdAkgZHN0
OwogCV9fdTE2CQkgaGFuZGxlOwogCV9fdTE2CQkgc3RhdGU7CiAJX191OCAgICAgICAgICAgICBt
b2RlOworICAJLyogdHlwZSA6IEFDTCBvciBTQ08gKi8KIAlfX3U4CQkgdHlwZTsKIAlfX3U4CQkg
b3V0OwogCV9fdTgJCSBhdHRlbXB0OwpAQCAtMTYyLDEwICsxNzAsMTcgQEAgc3RydWN0IGhjaV9j
b25uIHsKIAlfX3U4ICAgICAgICAgICAgIHBvd2VyX3NhdmU7CiAJdW5zaWduZWQgbG9uZwkgcGVu
ZDsKIAotCXVuc2lnbmVkIGludAkgc2VudDsKLQotCXN0cnVjdCBza19idWZmX2hlYWQgZGF0YV9x
OwotCisJLyogc2VudCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgcGFja2V0cyB0aGlzIGNvbm5l
Y3Rpb25zCisgICAgICAgICAgICAgaGFzICJvbiB0aGUgd2lyZSIgOiAuLi4uIG9oIGYuLi4uIHRo
ZXJlIGFyZSBubyB3aXJlCisgICAgICAgICAgICAgd2l0aCBibHVldG9vdGguIEJ5IG9uIHRoZSB3
aXJlLCBpIG1lYW4gcGFja2V0cyB0aGF0IGhhdmUgYmVlbiBzZW50CisJICAgdG8gdGhlIEhDSSBk
ZXZpY2UsIGFuZCB0aGF0IGFyZSBzdGlsbCBpbiBpdHMgYnVmZmVycyAqLworCWF0b21pY190CSBz
ZW50OworIAorCXN0cnVjdCBza19idWZmX2hlYWQgb3V0X3E7CisgCisJLyogdHggdGltZXIgOiB1
c2VkIG9ubHkgZm9yIFNDTyAqLworCXN0cnVjdCBocnRpbWVyIHR4X3RpbWVyOworCS8qIERpc2Nv
bm5lY3QgdGltZXIgKi8KIAlzdHJ1Y3QgdGltZXJfbGlzdCBkaXNjX3RpbWVyOwogCXN0cnVjdCB0
aW1lcl9saXN0IGlkbGVfdGltZXI7CiAKQEAgLTE3NSw2ICsxOTAsNyBAQCBzdHJ1Y3QgaGNpX2Nv
bm4gewogCiAJc3RydWN0IGhjaV9kZXYJKmhkZXY7CiAJdm9pZAkJKmwyY2FwX2RhdGE7CisgCS8q
IHByaXZhdGUgdXNlIGZvciBzY28gKi8KIAl2b2lkCQkqc2NvX2RhdGE7CiAJdm9pZAkJKnByaXY7
CiAKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX2Nvbm4uYyBiL25ldC9ibHVldG9vdGgv
aGNpX2Nvbm4uYwppbmRleCA2Y2Q1NzExLi45Nzk0NjRkIDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRv
b3RoL2hjaV9jb25uLmMKKysrIGIvbmV0L2JsdWV0b290aC9oY2lfY29ubi5jCkBAIC0xODQsNyAr
MTg0LDkgQEAgc3RydWN0IGhjaV9jb25uICpoY2lfY29ubl9hZGQoc3RydWN0IGhjaV9kZXYgKmhk
ZXYsIGludCB0eXBlLCBiZGFkZHJfdCAqZHN0KQogCiAJY29ubi0+cG93ZXJfc2F2ZSA9IDE7CiAK
LQlza2JfcXVldWVfaGVhZF9pbml0KCZjb25uLT5kYXRhX3EpOworCXNrYl9xdWV1ZV9oZWFkX2lu
aXQoJmNvbm4tPm91dF9xKTsKKworCWhydGltZXJfaW5pdCgmY29ubi0+dHhfdGltZXIsIENMT0NL
X01PTk9UT05JQywgSFJUSU1FUl9OT1JFU1RBUlQpOwogCiAJaW5pdF90aW1lcigmY29ubi0+ZGlz
Y190aW1lcik7CiAJY29ubi0+ZGlzY190aW1lci5mdW5jdGlvbiA9IGhjaV9jb25uX3RpbWVvdXQ7
CkBAIC0xOTUsNiArMTk3LDcgQEAgc3RydWN0IGhjaV9jb25uICpoY2lfY29ubl9hZGQoc3RydWN0
IGhjaV9kZXYgKmhkZXYsIGludCB0eXBlLCBiZGFkZHJfdCAqZHN0KQogCWNvbm4tPmlkbGVfdGlt
ZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSBjb25uOwogCiAJYXRvbWljX3NldCgmY29ubi0+cmVm
Y250LCAwKTsKKwlhdG9taWNfc2V0KCZjb25uLT5zZW50LCAwKTsKIAogCWhjaV9kZXZfaG9sZCho
ZGV2KTsKIApAQCAtMjIxLDYgKzIyNCw4IEBAIGludCBoY2lfY29ubl9kZWwoc3RydWN0IGhjaV9j
b25uICpjb25uKQogCiAJZGVsX3RpbWVyKCZjb25uLT5kaXNjX3RpbWVyKTsKIAorCWhydGltZXJf
Y2FuY2VsKCZjb25uLT50eF90aW1lcik7CisKIAlpZiAoY29ubi0+dHlwZSA9PSBTQ09fTElOSykg
ewogCQlzdHJ1Y3QgaGNpX2Nvbm4gKmFjbCA9IGNvbm4tPmxpbms7CiAJCWlmIChhY2wpIHsKQEAg
LTIzMyw3ICsyMzgsNyBAQCBpbnQgaGNpX2Nvbm5fZGVsKHN0cnVjdCBoY2lfY29ubiAqY29ubikK
IAkJCXNjby0+bGluayA9IE5VTEw7CiAKIAkJLyogVW5hY2tlZCBmcmFtZXMgKi8KLQkJaGRldi0+
YWNsX2NudCArPSBjb25uLT5zZW50OworCQloZGV2LT5hY2xfY250ICs9IGF0b21pY19yZWFkKCZj
b25uLT5zZW50KTsKIAl9CiAKIAl0YXNrbGV0X2Rpc2FibGUoJmhkZXYtPnR4X3Rhc2spOwpAQCAt
MjQ2LDcgKzI1MSw3IEBAIGludCBoY2lfY29ubl9kZWwoc3RydWN0IGhjaV9jb25uICpjb25uKQog
CiAJdGFza2xldF9lbmFibGUoJmhkZXYtPnR4X3Rhc2spOwogCi0Jc2tiX3F1ZXVlX3B1cmdlKCZj
b25uLT5kYXRhX3EpOworCXNrYl9xdWV1ZV9wdXJnZSgmY29ubi0+b3V0X3EpOwogCiAJaGNpX2Rl
dl9wdXQoaGRldik7CiAKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX2NvcmUuYyBiL25l
dC9ibHVldG9vdGgvaGNpX2NvcmUuYwppbmRleCAzMzhhZTk3Li5hMjYyN2FmIDEwMDY0NAotLS0g
YS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMKKysrIGIvbmV0L2JsdWV0b290aC9oY2lfY29yZS5j
CkBAIC02MTksOCArNjE5LDkgQEAgaW50IGhjaV9kZXZfcmVzZXQoX191MTYgZGV2KQogCWlmICho
ZGV2LT5mbHVzaCkKIAkJaGRldi0+Zmx1c2goaGRldik7CiAKLQlhdG9taWNfc2V0KCZoZGV2LT5j
bWRfY250LCAxKTsgCi0JaGRldi0+YWNsX2NudCA9IDA7IGhkZXYtPnNjb19jbnQgPSAwOworCWF0
b21pY19zZXQoJmhkZXYtPmNtZF9jbnQsIDEpOworCWF0b21pY19zZXQoJmhkZXYtPnNjb19jbnQs
IDApOyAKKwloZGV2LT5hY2xfY250ID0gMDsgCiAKIAlpZiAoIXRlc3RfYml0KEhDSV9SQVcsICZo
ZGV2LT5mbGFncykpCiAJCXJldCA9IF9faGNpX3JlcXVlc3QoaGRldiwgaGNpX3Jlc2V0X3JlcSwg
MCwKQEAgLTEwMTIsNyArMTAxMyw3IEBAIHN0YXRpYyBpbnQgaGNpX3NlbmRfZnJhbWUoc3RydWN0
IHNrX2J1ZmYgKnNrYikKIAkJaGNpX3NlbmRfdG9fc29jayhoZGV2LCBza2IpOwogCX0KIAotCS8q
IEdldCByaWQgb2Ygc2tiIG93bmVyLCBwcmlvciB0byBzZW5kaW5nIHRvIHRoZSBkcml2ZXIuICov
CisgICAgICAgLyogR2V0IHJpZCBvZiBza2Igb3duZXIsIHByaW9yIHRvIHNlbmRpbmcgdG8gdGhl
IGRyaXZlci4gKi8KIAlza2Jfb3JwaGFuKHNrYik7CiAKIAlyZXR1cm4gaGRldi0+c2VuZChza2Ip
OwpAQCAtMTA5Niw3ICsxMDk3LDcgQEAgaW50IGhjaV9zZW5kX2FjbChzdHJ1Y3QgaGNpX2Nvbm4g
KmNvbm4sIHN0cnVjdCBza19idWZmICpza2IsIF9fdTE2IGZsYWdzKQogCQkvKiBOb24gZnJhZ21l
bnRlZCAqLwogCQlCVF9EQkcoIiVzIG5vbmZyYWcgc2tiICVwIGxlbiAlZCIsIGhkZXYtPm5hbWUs
IHNrYiwgc2tiLT5sZW4pOwogCi0JCXNrYl9xdWV1ZV90YWlsKCZjb25uLT5kYXRhX3EsIHNrYik7
CisJCXNrYl9xdWV1ZV90YWlsKCZjb25uLT5vdXRfcSwgc2tiKTsKIAl9IGVsc2UgewogCQkvKiBG
cmFnbWVudGVkICovCiAJCUJUX0RCRygiJXMgZnJhZyAlcCBsZW4gJWQiLCBoZGV2LT5uYW1lLCBz
a2IsIHNrYi0+bGVuKTsKQEAgLTExMDQsOSArMTEwNSw5IEBAIGludCBoY2lfc2VuZF9hY2woc3Ry
dWN0IGhjaV9jb25uICpjb25uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX3UxNiBmbGFncykKIAkJ
c2tiX3NoaW5mbyhza2IpLT5mcmFnX2xpc3QgPSBOVUxMOwogCiAJCS8qIFF1ZXVlIGFsbCBmcmFn
bWVudHMgYXRvbWljYWxseSAqLwotCQlzcGluX2xvY2tfYmgoJmNvbm4tPmRhdGFfcS5sb2NrKTsK
KwkJc3Bpbl9sb2NrX2JoKCZjb25uLT5vdXRfcS5sb2NrKTsKIAotCQlfX3NrYl9xdWV1ZV90YWls
KCZjb25uLT5kYXRhX3EsIHNrYik7CisJCV9fc2tiX3F1ZXVlX3RhaWwoJmNvbm4tPm91dF9xLCBz
a2IpOwogCQlkbyB7CiAJCQlza2IgPSBsaXN0OyBsaXN0ID0gbGlzdC0+bmV4dDsKIAkJCQpAQCAt
MTExNiwxMCArMTExNywxMCBAQCBpbnQgaGNpX3NlbmRfYWNsKHN0cnVjdCBoY2lfY29ubiAqY29u
biwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX191MTYgZmxhZ3MpCiAKIAkJCUJUX0RCRygiJXMgZnJh
ZyAlcCBsZW4gJWQiLCBoZGV2LT5uYW1lLCBza2IsIHNrYi0+bGVuKTsKIAotCQkJX19za2JfcXVl
dWVfdGFpbCgmY29ubi0+ZGF0YV9xLCBza2IpOworCQkJX19za2JfcXVldWVfdGFpbCgmY29ubi0+
b3V0X3EsIHNrYik7CiAJCX0gd2hpbGUgKGxpc3QpOwogCi0JCXNwaW5fdW5sb2NrX2JoKCZjb25u
LT5kYXRhX3EubG9jayk7CisJCXNwaW5fdW5sb2NrX2JoKCZjb25uLT5vdXRfcS5sb2NrKTsKIAl9
CiAKIAloY2lfc2NoZWRfdHgoaGRldik7CkBAIC0xMTMyLDE0ICsxMTMzLDI1IEBAIGludCBoY2lf
c2VuZF9zY28oc3RydWN0IGhjaV9jb25uICpjb25uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewog
CXN0cnVjdCBoY2lfZGV2ICpoZGV2ID0gY29ubi0+aGRldjsKIAlzdHJ1Y3QgaGNpX3Njb19oZHIg
aGRyOwotCi0JQlRfREJHKCIlcyBsZW4gJWQiLCBoZGV2LT5uYW1lLCBza2ItPmxlbik7CisJa3Rp
bWVfdCBub3cgPSBjb25uLT50eF90aW1lci5iYXNlLT5nZXRfdGltZSgpOworI2lmZGVmIENPTkZJ
R19CVF9IQ0lfQ09SRV9ERUJVRworCWt0aW1lX3QgdGltZXJfZXhwID0gY29ubi0+dHhfdGltZXIu
ZXhwaXJlczsKKwlCVF9EQkcoImNvbm4gJXAgc2tiICVwLCB0aW1lciAlNWx1LiUwNmx1IiwgY29u
biwgc2tiLAorCQkodW5zaWduZWQgbG9uZykgdGltZXJfZXhwLnR2NjQsIAorCQlkb19kaXYodGlt
ZXJfZXhwLnR2NjQsIE5TRUNfUEVSX1NFQykgLyAxMDAwKTsKKyNlbmRpZgogCiAJaWYgKHNrYi0+
bGVuID4gaGRldi0+c2NvX210dSkgewogCQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIC1FSU5W
QUw7CiAJfQogCisJLyogQ3JpdGVyaWEgZm9yIHVuZGVycnVuIGNvbmRpdGlvbiA6IG1vcmUgdGhh
biAxMDAgbXMgbGF0ZSAqLworCWlmKGNvbm4tPnR4X3RpbWVyLmV4cGlyZXMudHY2NCArIE5TRUNf
UEVSX1NFQyAvIDEwIDw9IG5vdy50djY0KSB7CisJCS8qIFdlIGFyZSB1bmRlciB1bmRlcnJ1biBj
b25kaXRpb24sIGp1c3Qgd2UgZG8gYSBjbGVhbiBzdGFydCAqLworCQljb25uLT50eF90aW1lci5l
eHBpcmVzID0gbm93OworCX0KKwogCWhkci5oYW5kbGUgPSBfX2NwdV90b19sZTE2KGNvbm4tPmhh
bmRsZSk7CiAJaGRyLmRsZW4gICA9IHNrYi0+bGVuOwogCkBAIC0xMTQ4LDcgKzExNjAsNyBAQCBp
bnQgaGNpX3NlbmRfc2NvKHN0cnVjdCBoY2lfY29ubiAqY29ubiwgc3RydWN0IHNrX2J1ZmYgKnNr
YikKIAogCXNrYi0+ZGV2ID0gKHZvaWQgKikgaGRldjsKIAlidF9jYihza2IpLT5wa3RfdHlwZSA9
IEhDSV9TQ09EQVRBX1BLVDsKLQlza2JfcXVldWVfdGFpbCgmY29ubi0+ZGF0YV9xLCBza2IpOwor
CXNrYl9xdWV1ZV90YWlsKCZjb25uLT5vdXRfcSwgc2tiKTsKIAloY2lfc2NoZWRfdHgoaGRldik7
CiAJcmV0dXJuIDA7CiB9CkBAIC0xMTU2LDEyICsxMTY4LDEyIEBAIEVYUE9SVF9TWU1CT0woaGNp
X3NlbmRfc2NvKTsKIAogLyogLS0tLSBIQ0kgVFggdGFzayAob3V0Z29pbmcgZGF0YSkgLS0tLSAq
LwogCi0vKiBIQ0kgQ29ubmVjdGlvbiBzY2hlZHVsZXIgKi8KLXN0YXRpYyBpbmxpbmUgc3RydWN0
IGhjaV9jb25uICpoY2lfbG93X3NlbnQoc3RydWN0IGhjaV9kZXYgKmhkZXYsIF9fdTggdHlwZSwg
aW50ICpxdW90ZSkKKy8qIEhDSSBBQ0wgQ29ubmVjdGlvbiBzY2hlZHVsZXIgKi8KK3N0YXRpYyBp
bmxpbmUgc3RydWN0IGhjaV9jb25uICpoY2lfbG93X3NlbnRfYWNsKHN0cnVjdCBoY2lfZGV2ICpo
ZGV2LCBpbnQgKnF1b3RlKQogewogCXN0cnVjdCBoY2lfY29ubl9oYXNoICpoID0gJmhkZXYtPmNv
bm5faGFzaDsKIAlzdHJ1Y3QgaGNpX2Nvbm4gICpjb25uID0gTlVMTDsKLQlpbnQgbnVtID0gMCwg
bWluID0gfjA7CisJdW5zaWduZWQgaW50IG51bSA9IDAsIG1pbiA9IH4wOwogCXN0cnVjdCBsaXN0
X2hlYWQgKnA7CiAKIAkvKiBXZSBkb24ndCBoYXZlIHRvIGxvY2sgZGV2aWNlIGhlcmUuIENvbm5l
Y3Rpb25zIGFyZSBhbHdheXMgCkBAIC0xMTcwLDIwICsxMTgyLDIyIEBAIHN0YXRpYyBpbmxpbmUg
c3RydWN0IGhjaV9jb25uICpoY2lfbG93X3NlbnQoc3RydWN0IGhjaV9kZXYgKmhkZXYsIF9fdTgg
dHlwZSwgaW50CiAJCXN0cnVjdCBoY2lfY29ubiAqYzsKIAkJYyA9IGxpc3RfZW50cnkocCwgc3Ry
dWN0IGhjaV9jb25uLCBsaXN0KTsKIAotCQlpZiAoYy0+dHlwZSAhPSB0eXBlIHx8IGMtPnN0YXRl
ICE9IEJUX0NPTk5FQ1RFRAotCQkJCXx8IHNrYl9xdWV1ZV9lbXB0eSgmYy0+ZGF0YV9xKSkKKwkJ
QlRfREJHKCJjLT50eXBlICVkIGMtPnN0YXRlICVkIGxlbihjLT5vdXRfcSkgJWQgbWluICVkIGMt
PnNlbnQgJWQiLCAKKwkJCWMtPnR5cGUsIGMtPnN0YXRlLCBza2JfcXVldWVfbGVuKCZjLT5vdXRf
cSksIG1pbiwgYXRvbWljX3JlYWQoJmMtPnNlbnQpKTsKKworCQlpZiAoYy0+dHlwZSAhPSBBQ0xf
TElOSyB8fCBjLT5zdGF0ZSAhPSBCVF9DT05ORUNURUQKKwkJCQl8fCBza2JfcXVldWVfZW1wdHko
JmMtPm91dF9xKSkKIAkJCWNvbnRpbnVlOwogCQludW0rKzsKIAotCQlpZiAoYy0+c2VudCA8IG1p
bikgewotCQkJbWluICA9IGMtPnNlbnQ7CisJCWlmIChhdG9taWNfcmVhZCgmYy0+c2VudCkgPCBt
aW4pIHsKKwkJCW1pbiAgPSBhdG9taWNfcmVhZCgmYy0+c2VudCk7CiAJCQljb25uID0gYzsKIAkJ
fQogCX0KIAogCWlmIChjb25uKSB7Ci0JCWludCBjbnQgPSAodHlwZSA9PSBBQ0xfTElOSyA/IGhk
ZXYtPmFjbF9jbnQgOiBoZGV2LT5zY29fY250KTsKLQkJaW50IHEgPSBjbnQgLyBudW07CisJCWlu
dCBxID0gaGRldi0+YWNsX2NudCAvIG51bTsKIAkJKnF1b3RlID0gcSA/IHEgOiAxOwogCX0gZWxz
ZQogCQkqcXVvdGUgPSAwOwpAQCAtMTIwMyw3ICsxMjE3LDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IGhjaV9hY2xfdHhfdG8oc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJLyogS2lsbCBzdGFsbGVkIGNv
bm5lY3Rpb25zICovCiAJbGlzdF9mb3JfZWFjaChwLCAmaC0+bGlzdCkgewogCQljID0gbGlzdF9l
bnRyeShwLCBzdHJ1Y3QgaGNpX2Nvbm4sIGxpc3QpOwotCQlpZiAoYy0+dHlwZSA9PSBBQ0xfTElO
SyAmJiBjLT5zZW50KSB7CisJCWlmIChjLT50eXBlID09IEFDTF9MSU5LICYmIGF0b21pY19yZWFk
KCZjLT5zZW50KSkgewogCQkJQlRfRVJSKCIlcyBraWxsaW5nIHN0YWxsZWQgQUNMIGNvbm5lY3Rp
b24gJXMiLAogCQkJCWhkZXYtPm5hbWUsIGJhdG9zdHIoJmMtPmRzdCkpOwogCQkJaGNpX2FjbF9k
aXNjb25uKGMsIDB4MTMpOwpAQCAtMTIyNiw4ICsxMjQwLDggQEAgc3RhdGljIGlubGluZSB2b2lk
IGhjaV9zY2hlZF9hY2woc3RydWN0IGhjaV9kZXYgKmhkZXYpCiAJCQloY2lfYWNsX3R4X3RvKGhk
ZXYpOwogCX0KIAotCXdoaWxlIChoZGV2LT5hY2xfY250ICYmIChjb25uID0gaGNpX2xvd19zZW50
KGhkZXYsIEFDTF9MSU5LLCAmcXVvdGUpKSkgewotCQl3aGlsZSAocXVvdGUtLSAmJiAoc2tiID0g
c2tiX2RlcXVldWUoJmNvbm4tPmRhdGFfcSkpKSB7CisJd2hpbGUgKGhkZXYtPmFjbF9jbnQgJiYg
KGNvbm4gPSBoY2lfbG93X3NlbnRfYWNsKGhkZXYsICZxdW90ZSkpKSB7CisJCXdoaWxlIChxdW90
ZS0tICYmIChza2IgPSBza2JfZGVxdWV1ZSgmY29ubi0+b3V0X3EpKSkgewogCQkJQlRfREJHKCJz
a2IgJXAgbGVuICVkIiwgc2tiLCBza2ItPmxlbik7CiAKIAkJCWhjaV9jb25uX2VudGVyX2FjdGl2
ZV9tb2RlKGNvbm4pOwpAQCAtMTIzNiwyOCArMTI1MCw3OSBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
aGNpX3NjaGVkX2FjbChzdHJ1Y3QgaGNpX2RldiAqaGRldikKIAkJCWhkZXYtPmFjbF9sYXN0X3R4
ID0gamlmZmllczsKIAogCQkJaGRldi0+YWNsX2NudC0tOwotCQkJY29ubi0+c2VudCsrOworCQkJ
YXRvbWljX2luYygmY29ubi0+c2VudCk7CiAJCX0KIAl9CiB9CiAKLS8qIFNjaGVkdWxlIFNDTyAq
Lwotc3RhdGljIGlubGluZSB2b2lkIGhjaV9zY2hlZF9zY28oc3RydWN0IGhjaV9kZXYgKmhkZXYp
CisvKiBIQ0kgU0NPIHR4IHRpbWVyICovCisKK3N0YXRpYyBpbnQgaGNpX3Njb190eF90aW1lcihz
dHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiB7Ci0Jc3RydWN0IGhjaV9jb25uICpjb25uOwotCXN0cnVj
dCBza19idWZmICpza2I7Ci0JaW50IHF1b3RlOworCXN0cnVjdCBoY2lfY29ubiAqY29ubiA9IGNv
bnRhaW5lcl9vZih0aW1lciwgc3RydWN0IGhjaV9jb25uLCB0eF90aW1lcik7CisjaWZkZWYgQ09O
RklHX0JUX0hDSV9DT1JFX0RFQlVHCisJa3RpbWVfdCBub3cgPSB0aW1lci0+YmFzZS0+Z2V0X3Rp
bWUoKTsKIAotCUJUX0RCRygiJXMiLCBoZGV2LT5uYW1lKTsKKwlCVF9EQkcoIiVzLCBjb25uICVw
LCB0aW1lICU1bHUuJTA2bHUiLCBjb25uLT5oZGV2LT5uYW1lLCBjb25uLAorCQkodW5zaWduZWQg
bG9uZykgbm93LnR2NjQsIAorCQlkb19kaXYobm93LnR2NjQsIE5TRUNfUEVSX1NFQykgLyAxMDAw
KTsKKyNlbmRpZgogCi0Jd2hpbGUgKGhkZXYtPnNjb19jbnQgJiYgKGNvbm4gPSBoY2lfbG93X3Nl
bnQoaGRldiwgU0NPX0xJTkssICZxdW90ZSkpKSB7Ci0JCXdoaWxlIChxdW90ZS0tICYmIChza2Ig
PSBza2JfZGVxdWV1ZSgmY29ubi0+ZGF0YV9xKSkpIHsKLQkJCUJUX0RCRygic2tiICVwIGxlbiAl
ZCIsIHNrYiwgc2tiLT5sZW4pOwotCQkJaGNpX3NlbmRfZnJhbWUoc2tiKTsKKwlpZihhdG9taWNf
cmVhZCgmY29ubi0+c2VudCkgPiAwKSB7CisJCWF0b21pY19kZWMoJmNvbm4tPnNlbnQpOworCQlh
dG9taWNfaW5jKCZjb25uLT5oZGV2LT5zY29fY250KTsKKwkJaGNpX3NjaGVkX3R4KGNvbm4tPmhk
ZXYpOworCX0KKwlyZXR1cm4gSFJUSU1FUl9OT1JFU1RBUlQ7Cit9CisgCisvKiBIQ0kgU0NPIENv
bm5lY3Rpb24gc2NoZWR1bGVyICovCiAKLQkJCWNvbm4tPnNlbnQrKzsKLQkJCWlmIChjb25uLT5z
ZW50ID09IH4wKQotCQkJCWNvbm4tPnNlbnQgPSAwOworc3RhdGljIGlubGluZSB2b2lkIGhjaV9z
Y2hlZF9zY28oc3RydWN0IGhjaV9kZXYgKmhkZXYpCit7CisJc3RydWN0IGhjaV9jb25uX2hhc2gg
KmggPSAmaGRldi0+Y29ubl9oYXNoOworCXN0cnVjdCBza19idWZmICpza2I7CisJc3RydWN0IGxp
c3RfaGVhZCAqcDsKKwlzdHJ1Y3QgaGNpX2Nvbm4gKmM7CisJCisJQlRfREJHKCIlcyIsIGhkZXYt
Pm5hbWUpOworICAKKwkvKiBXZSBkb24ndCBoYXZlIHRvIGxvY2sgZGV2aWNlIGhlcmUuIENvbm5l
Y3Rpb25zIGFyZSBhbHdheXMgCisJICogYWRkZWQgYW5kIHJlbW92ZWQgd2l0aCBUWCB0YXNrIGRp
c2FibGVkLiAqLworCWxpc3RfZm9yX2VhY2gocCwgJmgtPmxpc3QpIHsKKwkJYyA9IGxpc3RfZW50
cnkocCwgc3RydWN0IGhjaV9jb25uLCBsaXN0KTsKKyAgCisJCS8qIFNDTyBzY2hlZHVsaW5nIGFs
Z29yaXRobSBtYWtlcyBzdXJlIHRoZXJlIGlzIG5ldmVyIG1vcmUgdGhhbgorCQkgICAxIG91dHN0
YW5kaW5nIHBhY2tldCBmb3IgZWFjaCBjb25uZWN0aW9uICovCisJCWlmIChjLT50eXBlID09IFND
T19MSU5LICYmIGF0b21pY19yZWFkKCZjLT5zZW50KSA8IDEgICYmIGMtPnN0YXRlID09IEJUX0NP
Tk5FQ1RFRCkKKwkJeworCQkJaWYoYXRvbWljX3JlYWQoJmhkZXYtPnNjb19jbnQpID4gMCkgewor
CQkJCWlmKChza2IgPSBza2JfZGVxdWV1ZSgmYy0+b3V0X3EpKSAhPSBOVUxMKSB7CisJCQkJCWt0
aW1lX3Qgbm93LCBwa3RfdGltZTsKKworCQkJCQloY2lfc2VuZF9mcmFtZShza2IpOworIAorCQkJ
CQlhdG9taWNfaW5jKCZjLT5zZW50KTsJCQkKKwkJCQkJYXRvbWljX2RlYygmaGRldi0+c2NvX2Nu
dCk7CisKKwkJCQkJYy0+dHhfdGltZXIuZnVuY3Rpb24gPSBoY2lfc2NvX3R4X3RpbWVyOworCQkJ
CQkKKwkJCQkJcGt0X3RpbWUgPQorCQkJCQkJa3RpbWVfc2V0KDAsIE5TRUNfUEVSX1NFQyAvIDE2
MDAwICogKHNrYi0+bGVuIC0gSENJX1NDT19IRFJfU0laRSkpOworCQkJCQlub3cgPSBjLT50eF90
aW1lci5iYXNlLT5nZXRfdGltZSgpOworCisJCQkJCWMtPnR4X3RpbWVyLmV4cGlyZXMudHY2NCAr
PSBwa3RfdGltZS50djY0OworCQkJCQlpZihjLT50eF90aW1lci5leHBpcmVzLnR2NjQgPiBub3cu
dHY2NCkgeworCQkJCQkJaHJ0aW1lcl9yZXN0YXJ0KCZjLT50eF90aW1lcik7CisJCQkJCX0KKwkJ
CQkJZWxzZSB7CisJCQkJCQkvKiBUaW1lciBpcyB0byBleHBpcmUgaW4gdGhlIHBhc3QgLSB0aGlz
IGNhbiBoYXBwZW4gaWYgdGltZXIgYmFzZQorCQkJCQkJIHByZWNpc2lvbiBpcyBsZXNzIHRoYW4g
cGt0X3RpbWUuIEluIHRoaXMgY2FzZSB3ZSBmb3JjZSB0aW1lcgorCQkJCQkJIGV4cGlyYXRpb24g
YnkgY2FsbGluZyBpdHMgZXhwaXJlcyBmdW5jdGlvbiAqLworCQkJCQkJYy0+dHhfdGltZXIuZnVu
Y3Rpb24oJmMtPnR4X3RpbWVyKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KIAkJfQogCX0KIH0KQEAg
LTEyNjksMTQgKzEzMzQsMTQgQEAgc3RhdGljIHZvaWQgaGNpX3R4X3Rhc2sodW5zaWduZWQgbG9u
ZyBhcmcpCiAKIAlyZWFkX2xvY2soJmhjaV90YXNrX2xvY2spOwogCi0JQlRfREJHKCIlcyBhY2wg
JWQgc2NvICVkIiwgaGRldi0+bmFtZSwgaGRldi0+YWNsX2NudCwgaGRldi0+c2NvX2NudCk7CisJ
QlRfREJHKCIlcyBhY2wgJWQgc2NvICVkIiwgaGRldi0+bmFtZSwgaGRldi0+YWNsX2NudCwgYXRv
bWljX3JlYWQoJmhkZXYtPnNjb19jbnQpKTsKIAogCS8qIFNjaGVkdWxlIHF1ZXVlcyBhbmQgc2Vu
ZCBzdHVmZiB0byBIQ0kgZHJpdmVyICovCiAKLQloY2lfc2NoZWRfYWNsKGhkZXYpOwotCiAJaGNp
X3NjaGVkX3NjbyhoZGV2KTsKIAorCWhjaV9zY2hlZF9hY2woaGRldik7CisKIAkvKiBTZW5kIG5l
eHQgcXVldWVkIHJhdyAodW5rbm93biB0eXBlKSBwYWNrZXQgKi8KIAl3aGlsZSAoKHNrYiA9IHNr
Yl9kZXF1ZXVlKCZoZGV2LT5yYXdfcSkpKQogCQloY2lfc2VuZF9mcmFtZShza2IpOwpkaWZmIC0t
Z2l0IGEvbmV0L2JsdWV0b290aC9oY2lfZXZlbnQuYyBiL25ldC9ibHVldG9vdGgvaGNpX2V2ZW50
LmMKaW5kZXggYmI5NGU2ZC4uODE1Yzc5ZCAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9oY2lf
ZXZlbnQuYworKysgYi9uZXQvYmx1ZXRvb3RoL2hjaV9ldmVudC5jCkBAIC0zMjAsNyArMzIwLDcg
QEAgc3RhdGljIHZvaWQgaGNpX2NjX2luZm9fcGFyYW0oc3RydWN0IGhjaV9kZXYgKmhkZXYsIF9f
dTE2IG9jZiwgc3RydWN0IHNrX2J1ZmYgKnMKIAkJbHYgPSAoc3RydWN0IGhjaV9ycF9yZWFkX2xv
Y192ZXJzaW9uICopIHNrYi0+ZGF0YTsKIAogCQlpZiAobHYtPnN0YXR1cykgewotCQkJQlRfREJH
KCIlcyBSRUFEX0xPQ0FMX1ZFUlNJT04gZmFpbGVkICVkIiwgaGRldi0+bmFtZSwgbGYtPnN0YXR1
cyk7CisJCQlCVF9EQkcoIiVzIFJFQURfTE9DQUxfVkVSU0lPTiBmYWlsZWQgJWQiLCBoZGV2LT5u
YW1lLCBsdi0+c3RhdHVzKTsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTM4Miw3ICszODIsNyBAQCBz
dGF0aWMgdm9pZCBoY2lfY2NfaW5mb19wYXJhbShzdHJ1Y3QgaGNpX2RldiAqaGRldiwgX191MTYg
b2NmLCBzdHJ1Y3Qgc2tfYnVmZiAqcwogCQl9CiAKIAkJaGRldi0+YWNsX2NudCA9IGhkZXYtPmFj
bF9wa3RzOwotCQloZGV2LT5zY29fY250ID0gaGRldi0+c2NvX3BrdHM7CisJCWF0b21pY19zZXQo
JmhkZXYtPnNjb19jbnQsIGhkZXYtPnNjb19wa3RzKTsKIAogCQlCVF9EQkcoIiVzIG10dTogYWNs
ICVkLCBzY28gJWQgbWF4X3BrdDogYWNsICVkLCBzY28gJWQiLCBoZGV2LT5uYW1lLAogCQkJaGRl
di0+YWNsX210dSwgaGRldi0+c2NvX210dSwgaGRldi0+YWNsX3BrdHMsIGhkZXYtPnNjb19wa3Rz
KTsKQEAgLTg4MCwxNSArODgwLDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBoY2lfbnVtX2NvbXBf
cGt0c19ldnQoc3RydWN0IGhjaV9kZXYgKmhkZXYsIHN0cnVjdCBza19idWZmICpzCiAKIAkJY29u
biA9IGhjaV9jb25uX2hhc2hfbG9va3VwX2hhbmRsZShoZGV2LCBoYW5kbGUpOwogCQlpZiAoY29u
bikgewotCQkJY29ubi0+c2VudCAtPSBjb3VudDsKKwkJCWF0b21pY19zdWIoY291bnQsICZjb25u
LT5zZW50KTsKIAotCQkJaWYgKGNvbm4tPnR5cGUgPT0gU0NPX0xJTkspIHsKLQkJCQlpZiAoKGhk
ZXYtPnNjb19jbnQgKz0gY291bnQpID4gaGRldi0+c2NvX3BrdHMpCi0JCQkJCWhkZXYtPnNjb19j
bnQgPSBoZGV2LT5zY29fcGt0czsKLQkJCX0gZWxzZSB7CisJCQlpZiAoY29ubi0+dHlwZSA9PSBB
Q0xfTElOSykgewogCQkJCWlmICgoaGRldi0+YWNsX2NudCArPSBjb3VudCkgPiBoZGV2LT5hY2xf
cGt0cykKIAkJCQkJaGRldi0+YWNsX2NudCA9IGhkZXYtPmFjbF9wa3RzOwogCQkJfQorCQkJLyog
Tm90ZSA6IHdlIGRvIG5vdCB1c2UgdGhlICJudW1iZXIgb2YgY29tcGxldGVkIHBhY2tldHMiIGV2
ZW50CisJCQl0byBpbmNyZW1lbnQgaGRldi0+c2NvX2NudCwgYXMgdGhpcyBmZWF0dXJlIGlzIG9u
bHkgb3B0aW9ubmFsbHkgc3VwcG9ydAorCQkJYnkgYmx1ZXRvb3RoIGNvbnRyb2xsZXJzLiBTbyB0
aGVyZSBpcyBubyBpZiBicmFuY2ggZm9yIFNDT19MSU5LIHBhY2tldHMgKi8KIAkJfQogCX0KIAlo
Y2lfc2NoZWRfdHgoaGRldik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9ibHVldG9vdGgvc2Nv
LmggYi9pbmNsdWRlL25ldC9ibHVldG9vdGgvc2NvLmgKaW5kZXggZTI4YTJhNy4uNGJhOTc2YiAx
MDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL3Njby5oCisrKyBiL2luY2x1ZGUvbmV0
L2JsdWV0b290aC9zY28uaApAQCAtMjYsMTIgKzI2LDcgQEAKICNkZWZpbmUgX19TQ09fSAogCiAv
KiBTQ08gZGVmYXVsdHMgKi8KLSNkZWZpbmUgU0NPX0RFRkFVTFRfTVRVCQk1MDAKLSNkZWZpbmUg
U0NPX0RFRkFVTFRfRkxVU0hfVE8JMHhGRkZGCi0KICNkZWZpbmUgU0NPX0NPTk5fVElNRU9VVAko
SFogKiA0MCkKLSNkZWZpbmUgU0NPX0RJU0NPTk5fVElNRU9VVAkoSFogKiAyKQotI2RlZmluZSBT
Q09fQ09OTl9JRExFX1RJTUVPVVQJKEhaICogNjApCiAKIC8qIFNDTyBzb2NrZXQgYWRkcmVzcyAq
Lwogc3RydWN0IHNvY2thZGRyX3NjbyB7CkBAIC01MSw2ICs0Niw5IEBAIHN0cnVjdCBzY29fY29u
bmluZm8gewogCV9fdTggIGRldl9jbGFzc1szXTsKIH07CiAKKyNkZWZpbmUgU0NPX1RYQlVGUwkw
eDAzCisjZGVmaW5lIFNDT19SWEJVRlMJMHgwNAorCiAvKiAtLS0tIFNDTyBjb25uZWN0aW9ucyAt
LS0tICovCiBzdHJ1Y3Qgc2NvX2Nvbm4gewogCXN0cnVjdCBoY2lfY29ubgkqaGNvbjsKCmRpZmYg
LS1naXQgYS9uZXQvYmx1ZXRvb3RoL3Njby5jIGIvbmV0L2JsdWV0b290aC9zY28uYwppbmRleCA1
ZDEzZDRmLi41MGY3NTkwIDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL3Njby5jCisrKyBiL25l
dC9ibHVldG9vdGgvc2NvLmMKQEAgLTUzLDcgKzUzLDEzIEBACiAjZGVmaW5lIEJUX0RCRyhELi4u
KQogI2VuZGlmCiAKLSNkZWZpbmUgVkVSU0lPTiAiMC41IgorI2RlZmluZSBWRVJTSU9OICIwLjYi
CisKKyNkZWZpbmUgTUFYX1NDT19UWEJVRlMgMjAwCisjZGVmaW5lIE1BWF9TQ09fUlhCVUZTIDIw
MAorCisjZGVmaW5lIERFRkFVTFRfU0NPX1RYQlVGUyA1CisjZGVmaW5lIERFRkFVTFRfU0NPX1JY
QlVGUyA1CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNjb19zb2NrX29wczsKIApA
QCAtNjEsNiArNjcsOCBAQCBzdGF0aWMgc3RydWN0IGJ0X3NvY2tfbGlzdCBzY29fc2tfbGlzdCA9
IHsKIAkubG9jayA9IFJXX0xPQ0tfVU5MT0NLRUQKIH07CiAKKy8qIExvY2FsIGZ1bmN0aW9ucyBk
ZWNsYXJhdGlvbiAqLworCiBzdGF0aWMgdm9pZCBfX3Njb19jaGFuX2FkZChzdHJ1Y3Qgc2NvX2Nv
bm4gKmNvbm4sIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2sgKnBhcmVudCk7CiBzdGF0aWMg
dm9pZCBzY29fY2hhbl9kZWwoc3RydWN0IHNvY2sgKnNrLCBpbnQgZXJyKTsKIApAQCAtNjksNiAr
NzcsMzUgQEAgc3RhdGljIGludCAgc2NvX2Nvbm5fZGVsKHN0cnVjdCBoY2lfY29ubiAqY29ubiwg
aW50IGVycik7CiBzdGF0aWMgdm9pZCBzY29fc29ja19jbG9zZShzdHJ1Y3Qgc29jayAqc2spOwog
c3RhdGljIHZvaWQgc2NvX3NvY2tfa2lsbChzdHJ1Y3Qgc29jayAqc2spOwogCitzdGF0aWMgaW50
IHNjb19zb2NrX3F1ZXVlX3Jjdl9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAq
c2tiKTsKKworLyogCisgKiBXcml0ZSBidWZmZXIgZGVzdHJ1Y3RvciBhdXRvbWF0aWNhbGx5IGNh
bGxlZCBmcm9tIGtmcmVlX3NrYi4gCisgKi8KK3ZvaWQgc2NvX3NvY2tfd2ZyZWUoc3RydWN0IHNr
X2J1ZmYgKnNrYikKK3sKKwlzdHJ1Y3Qgc29jayAqc2sgPSBza2ItPnNrOworCisJYXRvbWljX2Rl
Yygmc2stPnNrX3dtZW1fYWxsb2MpOworCXNrLT5za193cml0ZV9zcGFjZShzayk7CisJc29ja19w
dXQoc2spOworfQorCitzdGF0aWMgdm9pZCBzY29fc29ja193cml0ZV9zcGFjZShzdHJ1Y3Qgc29j
ayAqc2spCit7CisJcmVhZF9sb2NrKCZzay0+c2tfY2FsbGJhY2tfbG9jayk7CisKKwlpZihhdG9t
aWNfcmVhZCgmc2stPnNrX3dtZW1fYWxsb2MpIDwgc2stPnNrX3NuZGJ1ZikgeworCQlpZiAoc2st
PnNrX3NsZWVwICYmIHdhaXRxdWV1ZV9hY3RpdmUoc2stPnNrX3NsZWVwKSkKKwkJCXdha2VfdXBf
aW50ZXJydXB0aWJsZShzay0+c2tfc2xlZXApOworCisJCWlmIChzb2NrX3dyaXRlYWJsZShzaykp
CisJCQlza193YWtlX2FzeW5jKHNrLCAyLCBQT0xMX09VVCk7CisJfQorCisJcmVhZF91bmxvY2so
JnNrLT5za19jYWxsYmFja19sb2NrKTsKK30KKwogLyogLS0tLSBTQ08gdGltZXJzIC0tLS0gKi8K
IHN0YXRpYyB2b2lkIHNjb19zb2NrX3RpbWVvdXQodW5zaWduZWQgbG9uZyBhcmcpCiB7CkBAIC0y
MzQsMjcgKzI3MSwzMCBAQCBzdGF0aWMgaW5saW5lIGludCBzY29fc2VuZF9mcmFtZShzdHJ1Y3Qg
c29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbikKIHsKIAlzdHJ1Y3Qgc2NvX2Nv
bm4gKmNvbm4gPSBzY29fcGkoc2spLT5jb25uOwogCXN0cnVjdCBza19idWZmICpza2I7Ci0JaW50
IGVyciwgY291bnQ7Ci0KLQkvKiBDaGVjayBvdXRnb2luZyBNVFUgKi8KLQlpZiAobGVuID4gY29u
bi0+bXR1KQotCQlyZXR1cm4gLUVJTlZBTDsKKwlpbnQgZXJyOwogCiAJQlRfREJHKCJzayAlcCBs
ZW4gJWQiLCBzaywgbGVuKTsKIAotCWNvdW50ID0gbWluX3QodW5zaWduZWQgaW50LCBjb25uLT5t
dHUsIGxlbik7Ci0JaWYgKCEoc2tiID0gYnRfc2tiX3NlbmRfYWxsb2Moc2ssIGNvdW50LCBtc2ct
Pm1zZ19mbGFncyAmIE1TR19ET05UV0FJVCwgJmVycikpKQorCWlmICghKHNrYiA9IGJ0X3NrYl9z
ZW5kX2FsbG9jKHNrLCBsZW4sIG1zZy0+bXNnX2ZsYWdzICYgTVNHX0RPTlRXQUlULCAmZXJyKSkp
CiAJCXJldHVybiBlcnI7CiAKLQlpZiAobWVtY3B5X2Zyb21pb3ZlYyhza2JfcHV0KHNrYiwgY291
bnQpLCBtc2ctPm1zZ19pb3YsIGNvdW50KSkgeworCS8qIGZpeCBza193bWVtX2FsbG9jIHZhbHVl
IDogYnkgZGVmYXVsdCBpdCBpcyBpbmNyZWFzZWQgYnkgIHNrYi0+dHJ1ZXNpemUsIGJ1dAorCXdl
IHdhbnQgaXQgb25seSBpbmNyZWFzZWQgYnkgMSAqLworCWF0b21pY19zdWIoc2tiLT50cnVlc2l6
ZSAtIDEsICZzay0+c2tfd21lbV9hbGxvYyk7CisJLyogZml4IGRlc3RydWN0b3IgKi8KKwlza2It
PmRlc3RydWN0b3IgPSBzY29fc29ja193ZnJlZTsKKworCWlmIChtZW1jcHlfZnJvbWlvdmVjKHNr
Yl9wdXQoc2tiLCBsZW4pLCBtc2ctPm1zZ19pb3YsIGxlbikpIHsKIAkJZXJyID0gLUVGQVVMVDsK
IAkJZ290byBmYWlsOwogCX0KIAotCWlmICgoZXJyID0gaGNpX3NlbmRfc2NvKGNvbm4tPmhjb24s
IHNrYikpIDwgMCkKLQkJcmV0dXJuIGVycjsKKwllcnIgPSBoY2lfc2VuZF9zY28oY29ubi0+aGNv
biwgc2tiKTsKIAotCXJldHVybiBjb3VudDsKKwlpZiAoZXJyIDwgMCkKKwkJZ290byBmYWlsOwor
CisJcmV0dXJuIGxlbjsKIAogZmFpbDoKIAlrZnJlZV9za2Ioc2tiKTsKQEAgLTI3Myw4ICszMTMs
OSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2NvX3JlY3ZfZnJhbWUoc3RydWN0IHNjb19jb25uICpj
b25uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmIChzay0+c2tfc3RhdGUgIT0gQlRfQ09OTkVD
VEVEKQogCQlnb3RvIGRyb3A7CiAKLQlpZiAoIXNvY2tfcXVldWVfcmN2X3NrYihzaywgc2tiKSkK
KwlpZiAoc2NvX3NvY2tfcXVldWVfcmN2X3NrYihzaywgc2tiKSA9PSAwKSB7CiAJCXJldHVybjsK
Kwl9CiAKIGRyb3A6CiAJa2ZyZWVfc2tiKHNrYik7CkBAIC0zMjgsNyArMzY5LDYgQEAgc3RhdGlj
IHZvaWQgc2NvX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKQogCUJUX0RCRygic2sgJXAi
LCBzayk7CiAKIAlza2JfcXVldWVfcHVyZ2UoJnNrLT5za19yZWNlaXZlX3F1ZXVlKTsKLQlza2Jf
cXVldWVfcHVyZ2UoJnNrLT5za193cml0ZV9xdWV1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNjb19z
b2NrX2NsZWFudXBfbGlzdGVuKHN0cnVjdCBzb2NrICpwYXJlbnQpCkBAIC0zNjAsNiArNDAwLDgg
QEAgc3RhdGljIHZvaWQgc2NvX3NvY2tfa2lsbChzdHJ1Y3Qgc29jayAqc2spCiAJLyogS2lsbCBw
b29yIG9ycGhhbiAqLwogCWJ0X3NvY2tfdW5saW5rKCZzY29fc2tfbGlzdCwgc2spOwogCXNvY2tf
c2V0X2ZsYWcoc2ssIFNPQ0tfREVBRCk7CisJCisJLyogcmVsZWFzZSBzb2NrZXQgKi8KIAlzb2Nr
X3B1dChzayk7CiB9CiAKQEAgLTM3Niw3ICs0MTgsNyBAQCBzdGF0aWMgdm9pZCBzY29fc29ja19j
bG9zZShzdHJ1Y3Qgc29jayAqc2spCiAKIAljb25uID0gc2NvX3BpKHNrKS0+Y29ubjsKIAotCUJU
X0RCRygic2sgJXAgc3RhdGUgJWQgY29ubiAlcCBzb2NrZXQgJXAiLCBzaywgc2stPnNrX3N0YXRl
LCBjb25uLCBzay0+c2tfc29ja2V0KTsKKwlCVF9EQkcoInNrICVwIHN0YXRlICVkIGNvbm4gJXAg
c29ja2V0ICVwIHJlZmNudCAlZCIsIHNrLCBzay0+c2tfc3RhdGUsIGNvbm4sIHNrLT5za19zb2Nr
ZXQsIGF0b21pY19yZWFkKCZzay0+c2tfcmVmY250KSk7CiAKIAlzd2l0Y2ggKHNrLT5za19zdGF0
ZSkgewogCWNhc2UgQlRfTElTVEVOOgpAQCAtNDI2LDYgKzQ2OCwxNSBAQCBzdGF0aWMgc3RydWN0
IHNvY2sgKnNjb19zb2NrX2FsbG9jKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90bywgZ2Zw
X3QgcHJpbykKIAlJTklUX0xJU1RfSEVBRCgmYnRfc2soc2spLT5hY2NlcHRfcSk7CiAKIAlzay0+
c2tfZGVzdHJ1Y3QgPSBzY29fc29ja19kZXN0cnVjdDsKKwlzay0+c2tfd3JpdGVfc3BhY2UgPSBz
Y29fc29ja193cml0ZV9zcGFjZTsKKworICAgICAgIC8qIFB1dCBzZW5zaWJsZSB2YWx1ZXMgZm9y
IGEgdm9pY2UgbGluayAoaS5lLiBub3QgdG9vIGJpZyksCisgICAgICAgICAgYXMgc3lzY3RsX3Jt
ZW1fZGVmYXVsdCAmIHN5c2N0bF93bWVtX2RlZmF1bHQgYXJlCisgICAgICAgICAgIHJlYWxseSBu
b3QgZGVzaWduZWQgZm9yIHRoYXQgLS0gSW4gb3VyIGNhc2Ugd2UgdXNlIHNrXyoqYnVmIHRvCisg
ICAgICAgICAgIHN0b3JlIGEgY291bnQgb2YgU0NPIHBhY2tldHMsIG5vdCBhIG51bWJlciBvZiBi
eXRlcyBhcyBtb3N0IG9mIG90aGVyIHR5cGUgb2YKKyAgICAgICAgICAgc29ja2V0cyBkbyAqLwor
CXNrLT5za19zbmRidWYgPSBERUZBVUxUX1NDT19UWEJVRlM7CisJc2stPnNrX3JjdmJ1ZiA9IERF
RkFVTFRfU0NPX1JYQlVGUzsKIAlzay0+c2tfc25kdGltZW8gPSBTQ09fQ09OTl9USU1FT1VUOwog
CiAJc29ja19yZXNldF9mbGFnKHNrLCBTT0NLX1pBUFBFRCk7CkBAIC02NTYsNiArNzA3LDcgQEAg
c3RhdGljIGludCBzY29fc29ja19zZW5kbXNnKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IHNv
Y2tldCAqc29jaywKIHN0YXRpYyBpbnQgc2NvX3NvY2tfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0
ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBjaGFyIF9fdXNlciAqb3B0dmFsLCBpbnQg
b3B0bGVuKQogewogCXN0cnVjdCBzb2NrICpzayA9IHNvY2stPnNrOworCXUzMiBvcHQ7CiAJaW50
IGVyciA9IDA7CiAKIAlCVF9EQkcoInNrICVwIiwgc2spOwpAQCAtNjYzLDYgKzcxNSwzNSBAQCBz
dGF0aWMgaW50IHNjb19zb2NrX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxl
dmVsLCBpbnQgb3B0bmFtZSwgY2hhcgogCWxvY2tfc29jayhzayk7CiAKIAlzd2l0Y2ggKG9wdG5h
bWUpIHsKKwljYXNlIFNDT19UWEJVRlM6CisJCWlmIChnZXRfdXNlcihvcHQsICh1MzIgX191c2Vy
ICopIG9wdHZhbCkpIHsKKwkJCWVyciA9IC1FRkFVTFQ7CisJCQlicmVhazsKKwkJfQorCQlpZihv
cHQgPiBNQVhfU0NPX1RYQlVGUykgeworCQkJZXJyID0gLUVJTlZBTDsKKwkJCWJyZWFrOworCQl9
CisKKwkJc2stPnNrX3NuZGJ1ZiA9IG9wdDsKKwkJLyoKKwkJICoJV2FrZSB1cCBzZW5kaW5nIHRh
c2tzIGlmIHdlCisJCSAqCXVwcGVkIHRoZSB2YWx1ZS4KKwkJICovCisJCXNrLT5za193cml0ZV9z
cGFjZShzayk7CisJCWJyZWFrOworCWNhc2UgU0NPX1JYQlVGUzoKKwkJaWYgKGdldF91c2VyKG9w
dCwgKHUzMiBfX3VzZXIgKikgb3B0dmFsKSkgeworCQkJZXJyID0gLUVGQVVMVDsKKwkJCWJyZWFr
OworCQl9CisJCWlmKG9wdCA+IE1BWF9TQ09fUlhCVUZTKSB7CisJCQllcnIgPSAtRUlOVkFMOwor
CQkJYnJlYWs7CisJCX0KKworCQlzay0+c2tfcmN2YnVmID0gb3B0OworCQlicmVhazsKIAlkZWZh
dWx0OgogCQllcnIgPSAtRU5PUFJPVE9PUFQ7CiAJCWJyZWFrOwpAQCAtNjc3LDcgKzc1OCw4IEBA
IHN0YXRpYyBpbnQgc2NvX3NvY2tfZ2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQg
bGV2ZWwsIGludCBvcHRuYW1lLCBjaGFyCiAJc3RydWN0IHNvY2sgKnNrID0gc29jay0+c2s7CiAJ
c3RydWN0IHNjb19vcHRpb25zIG9wdHM7CiAJc3RydWN0IHNjb19jb25uaW5mbyBjaW5mbzsKLQlp
bnQgbGVuLCBlcnIgPSAwOyAKKwlpbnQgbGVuLCBlcnIgPSAwOworCWludCB2YWw7CiAKIAlCVF9E
QkcoInNrICVwIiwgc2spOwogCkBAIC02ODcsNiArNzY5LDI0IEBAIHN0YXRpYyBpbnQgc2NvX3Nv
Y2tfZ2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1l
LCBjaGFyCiAJbG9ja19zb2NrKHNrKTsKIAogCXN3aXRjaCAob3B0bmFtZSkgeworCWNhc2UgU0NP
X1JYQlVGUzoKKwkJdmFsID0gc2stPnNrX3JjdmJ1ZjsKKworCQlsZW4gPSBtaW5fdCh1bnNpZ25l
ZCBpbnQsIGxlbiwgc2l6ZW9mKHZhbCkpOworCQlpZiAoY29weV90b191c2VyKG9wdHZhbCwgKGNo
YXIgKikmdmFsLCBsZW4pKQorCQkJZXJyID0gLUVGQVVMVDsKKworCQlicmVhazsKKworCWNhc2Ug
U0NPX1RYQlVGUzoKKwkJdmFsID0gc2stPnNrX3NuZGJ1ZjsKKworCQlsZW4gPSBtaW5fdCh1bnNp
Z25lZCBpbnQsIGxlbiwgc2l6ZW9mKHZhbCkpOworCQlpZiAoY29weV90b191c2VyKG9wdHZhbCwg
KGNoYXIgKikmdmFsLCBsZW4pKQorCQkJZXJyID0gLUVGQVVMVDsKKworCQlicmVhazsKKwogCWNh
c2UgU0NPX09QVElPTlM6CiAJCWlmIChzay0+c2tfc3RhdGUgIT0gQlRfQ09OTkVDVEVEKSB7CiAJ
CQllcnIgPSAtRU5PVENPTk47CkBAIC04OTEsNiArOTkxLDM0IEBAIGRyb3A6CiAJcmV0dXJuIDA7
CiB9CiAKK3N0YXRpYyBpbnQgc2NvX3NvY2tfcXVldWVfcmN2X3NrYihzdHJ1Y3Qgc29jayAqc2ss
IHN0cnVjdCBza19idWZmICpza2IpCit7CisgICAgICAgaW50IGVyciA9IDA7CisKKyAgICAgICBC
VF9EQkcoInNvY2sgJXAsIHNrX3JjdmJ1ZiAlZCwgcWxlbiAlZCIsIHNrLCBzay0+c2tfcmN2YnVm
LCBza2JfcXVldWVfbGVuKCZzay0+c2tfcmVjZWl2ZV9xdWV1ZSkpOworICAgICAgIC8qIENhc3Qg
c2tiLT5yY3ZidWYgdG8gdW5zaWduZWQuLi4gSXQncyBwb2ludGxlc3MsIGJ1dCByZWR1Y2VzCisg
ICAgICAgICAgbnVtYmVyIG9mIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIHdpdGggLVcgLS1BTksK
KyAgICAgICAgKi8KKyAgICAgICBpZiAoc2tiX3F1ZXVlX2xlbigmc2stPnNrX3JlY2VpdmVfcXVl
dWUpICsgMSA+CisgICAgICAgICAgICh1bnNpZ25lZClzay0+c2tfcmN2YnVmKSB7CisgICAgICAg
ICAgICAgICBlcnIgPSAtRU5PTUVNOworICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAg
fQorCisgICAgICAgc2tiLT5kZXYgPSBOVUxMOworICAgICAgIHNrYi0+c2sgPSBzazsKKyAgICAg
ICBza2ItPmRlc3RydWN0b3IgPSBOVUxMOworCisgICAgICAgc2tiX3F1ZXVlX3RhaWwoJnNrLT5z
a19yZWNlaXZlX3F1ZXVlLCBza2IpOworCisgICAgICAgaWYgKCFzb2NrX2ZsYWcoc2ssIFNPQ0tf
REVBRCkpCisgICAgICAgICAgICAgICBzay0+c2tfZGF0YV9yZWFkeShzaywgMSk7CitvdXQ6Cisg
ICAgICAgcmV0dXJuIGVycjsKK30KKworLyogLS0tLS0tLSBPdGhlcnMgLS0tLS0tLSAqLworCiBz
dGF0aWMgc3NpemVfdCBzY29fc3lzZnNfc2hvdyhzdHJ1Y3QgY2xhc3MgKmRldiwgY2hhciAqYnVm
KQogewogCXN0cnVjdCBzb2NrICpzazsK
</data>

          </attachment>
      

    </bug>

</bugzilla>