<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>238596</bug_id>
          
          <creation_ts>2022-03-31 01:18:44 -0700</creation_ts>
          <short_desc>[Linux] Implement IPC::Semaphore</short_desc>
          <delta_ts>2022-04-01 10:45:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>238593</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>aperez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1856724</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-31 01:18:44 -0700</bug_when>
    <thetext>[Linux] Implement IPC::Semaphore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856725</commentid>
    <comment_count>1</comment_count>
      <attachid>456214</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-31 01:19:10 -0700</bug_when>
    <thetext>Created attachment 456214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857196</commentid>
    <comment_count>2</comment_count>
      <attachid>456214</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-04-01 01:43:59 -0700</bug_when>
    <thetext>Comment on attachment 456214
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=456214&amp;action=review

&gt; Source/WebKit/Platform/IPC/unix/IPCSemaphoreUnix.cpp:40
&gt; +    m_fd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK | EFD_SEMAPHORE);

TIL eventfd() can be used as a semaphore, and the functionality is actually
there since Linux 2.6.30 🤯️, and also supported since NetBSD 10.

This might be an issue at some point for other BSDs which provide
WebKitGTK packages in their ports collections; but I say let&apos;s not
worry about that for now--surely their developers will find a way,
and/or we can help them out a bit when the time comes.

&gt; Source/WebKit/Platform/IPC/unix/IPCSemaphoreUnix.cpp:73
&gt; +        return;

IIUC, reaching this with an invalid file descriptor means that the caller
is trying to use a destroyed semaphore, or an old one which was deinitialized
after moving it into a new instance.

I think we should assert inside OS(LINUX) that the file descriptor is valid:


  void Semaphore::signal()
  {
  #if OS(LINUX)
      RELEASE_ASSERT_WITH_MESSAGE(m_fd &gt;= 0, &quot;signalled destroyed semaphore&quot;);
      // ... rest of the code
  #endif
  }

(or maybe ASSERT_WITH_MESSAGE, and skip the check in release builds)

&gt; Source/WebKit/Platform/IPC/unix/IPCSemaphoreUnix.cpp:116
&gt; +        return false;

Same comment as above regarding this check.

&gt; Source/WebKit/Platform/IPC/unix/IPCSemaphoreUnix.cpp:128
&gt; +        return false;

...and here, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857229</commentid>
    <comment_count>3</comment_count>
      <attachid>456346</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-04-01 04:36:05 -0700</bug_when>
    <thetext>Created attachment 456346
Patch

With asserts for valid semaphores.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857309</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-01 10:44:50 -0700</bug_when>
    <thetext>Committed r292225 (249128@main): &lt;https://commits.webkit.org/249128@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456346.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857310</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-01 10:45:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/91170895&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456214</attachid>
            <date>2022-03-31 01:19:10 -0700</date>
            <delta_ts>2022-04-01 04:36:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238596-20220331101909.patch</filename>
            <type>text/plain</type>
            <size>6456</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRhNzI4ZjBjNmMyMjQ2MzIy
ODI1NzA1YjZiYWEyYTliNzY3MmRmZjIuLmQ2MGE0ZDVkZGYxZTk1ZWFmMjBmMWZiM2NlNjNkYTI0
Njc1MmNiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMzEgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtMaW51eF0gSW1wbGVtZW50
IElQQzo6U2VtYXBob3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcm92aWRlIGEgTGludXggaW1wbGVtZW50YXRpb24gZm9yIElQQzo6U2VtYXBob3Jl
IHRoYXQncyBiYXNlZCBvbgorICAgICAgICBldmVudGZkIG1lY2hhbmljcy4KKworICAgICAgICBU
aGUgSVBDOjpTZW1hcGhvcmUgY2xhc3Mgbm93IGhhcyBhIFVOSVgtc3BlY2lmaWMgZmlsZSBkZXNj
cmlwdG9yIG1lbWJlcgorICAgICAgICB2YXJpYWJsZS4gRm9yIExpbnV4LCB0aGlzIGZpbGUgZGVz
Y3JpcHRvciBpcyBhbiBldmVudGZkIHdpdGggc2VtYXBob3JlCisgICAgICAgIHNlbWFudGljcyAo
ZXZlbnRmZCBiZWluZyBMaW51eC1zcGVjaWZpYykuIFNpZ25hbGxpbmcgYW5kIHdhaXRpbmcgb24K
KyAgICAgICAgc3VjaCBzZW1hcGhvcmUgaXMgZG9uZSB0aHJvdWdoIHRoZSByZWFkKCkgYW5kIHdy
aXRlKCkgZnVuY3Rpb25zLgorICAgICAgICBOb24tTGludXggcGxhdGZvcm1zIGFyZSBleHBlY3Rl
ZCB0byBwcm92aWRlIHNvbWV0aGluZyBlcXVpdmFsZW50LCBpZgorICAgICAgICBwb3NzaWJsZS4K
KworICAgICAgICBGb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRoYXQncyBuZWNlc3NhcnkgdG8g
bW92ZSB0aGVzZSBzZW1hcGhvcmVzCisgICAgICAgIGFjcm9zcyBwcm9jZXNzIGJvdW5kYXJpZXMs
IElQQzo6QXR0YWNobWVudCBpcyB1c2VkLiBGb3IgZW5jb2RpbmcgdGhlCisgICAgICAgIGV2ZW50
ZmQgaXMgc2ltcGx5IGR1cGxpY2F0ZWQgYW5kIHB1c2hlZCBpbnRvIHRoZSBBdHRhY2htZW50LCBh
bmQgZm9yCisgICAgICAgIGRlY29kaW5nIHRoZSBBdHRhY2htZW50J3MgZmlsZSBkZXNjcmlwdG9y
IGlzIHRha2VuIGFuZCBhZG9wdGVkIGJ5IHRoZQorICAgICAgICBTZW1hcGhvcmUgb2JqZWN0Lgor
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oOgorICAgICAgICAoSVBDOjpT
ZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91
bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OlNlbWFw
aG9yZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6flNlbWFwaG9yZSk6CisgICAgICAgIChJ
UEM6OlNlbWFwaG9yZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjpzaWdu
YWwpOgorICAgICAgICAoSVBDOjp3YWl0SW1wbCk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6
d2FpdCk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6d2FpdEZvcik6CisgICAgICAgIChJUEM6
OlNlbWFwaG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OmRlc3Ryb3kpOgorCiAyMDIyLTAzLTMwICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb246IFdl
YnNpdGVEYXRhU3RvcmUgZmFpbHMgdG8gcmVhZCBleHBlcmltZW50YWwgZmVhdHVyZSB2YWx1ZXMg
ZnJvbSBOU1VzZXJEZWZhdWx0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvSVBDU2VtYXBob3JlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhv
cmUuaAppbmRleCAwYzQ1YzQ0ZDIxYTUyNjQxZTI4ZDE4NDk5OTMwNTM2NDQ2NGFlNTk3Li4yZDM3
N2VjNjg0OGE3MzUzYWU3ODViOGMwODk3NmMzOGU4YWJiYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaApAQCAtNjQsNiArNjQsMTAgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3NlbmRSaWdodCB8fCBt
X3NlbWFwaG9yZSAhPSBTRU1BUEhPUkVfTlVMTDsgfQogI2VsaWYgT1MoV0lORE9XUykKICAgICBl
eHBsaWNpdCBTZW1hcGhvcmUoSEFORExFKTsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRT
KQorICAgIGV4cGxpY2l0IFNlbWFwaG9yZShpbnQgZmQpOworCisgICAgZXhwbGljaXQgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmQgIT0gLTE7IH0KICNlbHNlCiAgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgpAQCAtNzUs
NiArNzksOCBAQCBwcml2YXRlOgogICAgIHNlbWFwaG9yZV90IG1fc2VtYXBob3JlIHsgU0VNQVBI
T1JFX05VTEwgfTsKICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgSEFORExFIG1fc2VtYXBob3JlSGFu
ZGxlIHsgbnVsbHB0ciB9OworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgaW50
IG1fZmQgeyAtMSB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy91bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvdW5peC9JUENTZW1hcGhvcmVVbml4LmNwcAppbmRleCAzYTg4ZmZjMmRmOTlkZWVi
ZDEyNDI0M2Y5MDc3NWY3OTdjZWMxZGYzLi44YTAwYjM3YzBmZWZhMWExMTFiNWMxYWRiMjk3NDM2
MTY2MjBlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0lQ
Q1NlbWFwaG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgv
SVBDU2VtYXBob3JlVW5peC5jcHAKQEAgLTI2LDQ3ICsyNiwxMzggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKIAorI2luY2x1ZGUgPHd0Zi9VbmlTdGRF
eHRyYXMuaD4KKworI2lmIE9TKExJTlVYKQorI2luY2x1ZGUgPHN5cy9ldmVudGZkLmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIElQQyB7CiAKIFNlbWFwaG9yZTo6U2VtYXBob3JlKCkKIHsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNpZiBPUyhMSU5VWCkKKyAgICBtX2ZkID0gZXZlbnRmZCgw
LCBFRkRfQ0xPRVhFQyB8IEVGRF9OT05CTE9DSyB8IEVGRF9TRU1BUEhPUkUpOworI2VuZGlmCit9
CisKK1NlbWFwaG9yZTo6U2VtYXBob3JlKGludCBmZCkKKyAgICA6IG1fZmQoZmQpCit7IH0KKwor
U2VtYXBob3JlOjpTZW1hcGhvcmUoU2VtYXBob3JlJiYgbykKK3sKKyAgICBtX2ZkID0gby5tX2Zk
OworICAgIG8ubV9mZCA9IC0xOwogfQogCi1TZW1hcGhvcmU6OlNlbWFwaG9yZShTZW1hcGhvcmUm
JikKK1NlbWFwaG9yZTo6flNlbWFwaG9yZSgpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgZGVzdHJveSgpOwogfQogCi1TZW1hcGhvcmU6On5TZW1hcGhvcmUoKSA9IGRlZmF1bHQ7
CitTZW1hcGhvcmUmIFNlbWFwaG9yZTo6b3BlcmF0b3I9KFNlbWFwaG9yZSYmIG8pCit7CisgICAg
aWYgKCZvID09IHRoaXMpCisgICAgICAgIHJldHVybiAqdGhpczsKIAotU2VtYXBob3JlJiBTZW1h
cGhvcmU6Om9wZXJhdG9yPShTZW1hcGhvcmUmJikgPSBkZWZhdWx0OworICAgIGRlc3Ryb3koKTsK
KyAgICBtX2ZkID0gby5tX2ZkOworICAgIG8ubV9mZCA9IC0xOworICAgIHJldHVybiAqdGhpczsK
K30KIAogdm9pZCBTZW1hcGhvcmU6OnNpZ25hbCgpCiB7CisgICAgaWYgKG1fZmQgPT0gLTEpCisg
ICAgICAgIHJldHVybjsKKworI2lmIE9TKExJTlVYKQorICAgIC8vIE1hdGNoaW5nIHdhaXRJbXBs
KCkgYW5kIEVGRF9TRU1BUEhPUkUgc2VtYW50aWNzLCBpbmNyZW1lbnQgdGhlIHNlbWFwaG9yZSB2
YWx1ZSBieSAxLgorICAgIHVpbnQ2NF90IHZhbHVlID0gMTsKKyAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICBpbnQgcmV0ID0gd3JpdGUobV9mZCwgJnZhbHVlLCBzaXplb2YodWludDY0X3QpKTsK
KyAgICAgICAgaWYgKExJS0VMWShyZXQgIT0gLTEgfHwgZXJybm8gIT0gRUlOVFIpKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmCiB9CiAKKyNpZiBPUyhMSU5VWCkKK3N0YXRpYyBi
b29sIHdhaXRJbXBsKGludCBmZCwgaW50IHRpbWVvdXQpCit7CisgICAgc3RydWN0IHBvbGxmZCBw
b2xsZmRWYWx1ZSB7IC5mZCA9IGZkLCAuZXZlbnRzID0gUE9MTElOLCAucmV2ZW50cyA9IDAgfTsK
KyAgICBpbnQgcmV0ID0gMDsKKworICAgIC8vIEl0ZXJhdGUgb24gcG9sbGluZyB3aGlsZSBpbnRl
cnJ1cHRzIGFyZSB0aHJvd24sIG90aGVyd2lzZSBiYWlsIG91dCBvZiB0aGUgbG9vcCBpbW1lZGlh
dGVseS4KKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICByZXQgPSBwb2xsKCZwb2xsZmRWYWx1
ZSwgMSwgdGltZW91dCk7CisgICAgICAgIGlmIChMSUtFTFkocmV0ICE9IC0xIHx8IGVycm5vICE9
IEVJTlRSKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIEZhaWwgaWYgdGhl
IHJldHVybiB2YWx1ZSBkb2Vzbid0IGluZGljYXRlIHRoZSBzaW5nbGUgZmlsZSBkZXNjcmlwdG9y
IHdpdGggb25seSBpbnB1dCBldmVudHMgYXZhaWxhYmxlLgorICAgIGlmIChyZXQgIT0gMSB8fCAh
IShwb2xsZmRWYWx1ZS5yZXZlbnRzIF4gUE9MTElOKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gVGhlcmUgc2hvdWxkIGJlIGRhdGEgZm9yIHJlYWRpbmcgLS0gZHVlIHRvIEVGRF9T
RU1BUEhPUkUsIGl0IHNob3VsZCBiZSAxIHBhY2tlZCBpbnRvIGFuIDgtYnl0ZSB2YWx1ZS4KKyAg
ICB1aW50NjRfdCB2YWx1ZSA9IDA7CisgICAgcmV0ID0gcmVhZChmZCwgJnZhbHVlLCBzaXplb2Yo
dWludDY0X3QpKTsKKyAgICBpZiAocmV0ICE9IHNpemVvZih1aW50NjRfdCkgfHwgdmFsdWUgIT0g
MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYK
KwogYm9vbCBTZW1hcGhvcmU6OndhaXQoKQogeworICAgIGlmIChtX2ZkID09IC0xKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyNpZiBPUyhMSU5VWCkKKyAgICByZXR1cm4gd2FpdEltcGwobV9m
ZCwgLTEpOworI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAotYm9vbCBTZW1h
cGhvcmU6OndhaXRGb3IoVGltZW91dCkKK2Jvb2wgU2VtYXBob3JlOjp3YWl0Rm9yKFRpbWVvdXQg
dGltZW91dCkKIHsKKyAgICBpZiAobV9mZCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisjaWYgT1MoTElOVVgpCisgICAgaW50IHRpbWVvdXRWYWx1ZSA9IC0xOworICAgIGlmICghdGlt
ZW91dC5pc0luZmluaXR5KCkpCisgICAgICAgIHRpbWVvdXRWYWx1ZSA9IGludCh0aW1lb3V0LnNl
Y29uZHNVbnRpbERlYWRsaW5lKCkubWlsbGlzZWNvbmRzKCkpOworICAgIHJldHVybiB3YWl0SW1w
bChtX2ZkLCB0aW1lb3V0VmFsdWUpOworI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
IH0KIAotdm9pZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVyJikgY29uc3QKK3ZvaWQgU2VtYXBo
b3JlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKKyAgICBpbnQgZHVwbGljYXRl
ID0gLTE7CisgICAgaWYgKG1fZmQgIT0gLTEpCisgICAgICAgIGR1cGxpY2F0ZSA9IGR1cENsb3Nl
T25FeGVjKG1fZmQpOworCisgICAgZW5jb2Rlci5hZGRBdHRhY2htZW50KEF0dGFjaG1lbnQoZHVw
bGljYXRlKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29k
ZShEZWNvZGVyJikKK3N0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIHJldHVybiBTZW1hcGhvcmUgeyB9OworICAgIGF1dG8g
YXR0YWNobWVudCA9IGRlY29kZXIudGFrZUxhc3RBdHRhY2htZW50KCk7CisgICAgaWYgKCFhdHRh
Y2htZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBhdHRhY2htZW50LT5yZWxlYXNlRmls
ZURlc2NyaXB0b3IoKSB9OwogfQogCiB2b2lkIFNlbWFwaG9yZTo6ZGVzdHJveSgpCiB7CisgICAg
aWYgKG1fZmQgIT0gLTEpCisgICAgICAgIGNsb3NlV2l0aFJldHJ5KG1fZmQpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBJUEMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456346</attachid>
            <date>2022-04-01 04:36:05 -0700</date>
            <delta_ts>2022-04-01 10:44:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238596-20220401133604.patch</filename>
            <type>text/plain</type>
            <size>6584</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE0NWI1YzRlZWNlNDhiM2Vh
Y2QyOTNhMDU2MjM3YzJlODU1ZjE3YWIuLjM1NzA1MmI4ODgyNzI5NzM5NTJmMTA4Y2JlNDE0NjY2
M2YzYTllN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDQtMDEgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtMaW51eF0gSW1wbGVtZW50
IElQQzo6U2VtYXBob3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcm92aWRlIGEgTGludXggaW1wbGVtZW50YXRpb24gZm9yIElQQzo6U2VtYXBob3Jl
IHRoYXQncyBiYXNlZCBvbgorICAgICAgICBldmVudGZkIG1lY2hhbmljcy4KKworICAgICAgICBU
aGUgSVBDOjpTZW1hcGhvcmUgY2xhc3Mgbm93IGhhcyBhIFVOSVgtc3BlY2lmaWMgZmlsZSBkZXNj
cmlwdG9yIG1lbWJlcgorICAgICAgICB2YXJpYWJsZS4gRm9yIExpbnV4LCB0aGlzIGZpbGUgZGVz
Y3JpcHRvciBpcyBhbiBldmVudGZkIHdpdGggc2VtYXBob3JlCisgICAgICAgIHNlbWFudGljcyAo
ZXZlbnRmZCBiZWluZyBMaW51eC1zcGVjaWZpYykuIFNpZ25hbGxpbmcgYW5kIHdhaXRpbmcgb24K
KyAgICAgICAgc3VjaCBzZW1hcGhvcmUgaXMgZG9uZSB0aHJvdWdoIHRoZSByZWFkKCkgYW5kIHdy
aXRlKCkgZnVuY3Rpb25zLgorICAgICAgICBOb24tTGludXggcGxhdGZvcm1zIGFyZSBleHBlY3Rl
ZCB0byBwcm92aWRlIHNvbWV0aGluZyBlcXVpdmFsZW50LCBpZgorICAgICAgICBwb3NzaWJsZS4K
KworICAgICAgICBGb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRoYXQncyBuZWNlc3NhcnkgdG8g
bW92ZSB0aGVzZSBzZW1hcGhvcmVzCisgICAgICAgIGFjcm9zcyBwcm9jZXNzIGJvdW5kYXJpZXMs
IElQQzo6QXR0YWNobWVudCBpcyB1c2VkLiBGb3IgZW5jb2RpbmcgdGhlCisgICAgICAgIGV2ZW50
ZmQgaXMgc2ltcGx5IGR1cGxpY2F0ZWQgYW5kIHB1c2hlZCBpbnRvIHRoZSBBdHRhY2htZW50LCBh
bmQgZm9yCisgICAgICAgIGRlY29kaW5nIHRoZSBBdHRhY2htZW50J3MgZmlsZSBkZXNjcmlwdG9y
IGlzIHRha2VuIGFuZCBhZG9wdGVkIGJ5IHRoZQorICAgICAgICBTZW1hcGhvcmUgb2JqZWN0Lgor
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oOgorICAgICAgICAoSVBDOjpT
ZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91
bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OlNlbWFw
aG9yZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6flNlbWFwaG9yZSk6CisgICAgICAgIChJ
UEM6OlNlbWFwaG9yZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjpzaWdu
YWwpOgorICAgICAgICAoSVBDOjp3YWl0SW1wbCk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6
d2FpdCk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6d2FpdEZvcik6CisgICAgICAgIChJUEM6
OlNlbWFwaG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OmRlc3Ryb3kpOgorCiAyMDIyLTAzLTMxICBa
YW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVd
W0dQVVByb2Nlc3NdIFN3aXRjaCBHUFVQcm9jZXNzR1N0cmVhbWVyLmNwcCwgR1BVUHJvY2Vzc01h
aW5HU3RyZWFtZXIuY3BwIHRvIHRoZSBHTGliIGZsYXZvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9JUENTZW1hcGhvcmUuaAppbmRleCAwYzQ1YzQ0ZDIxYTUyNjQxZTI4ZDE4NDk5OTMwNTM2
NDQ2NGFlNTk3Li4yZDM3N2VjNjg0OGE3MzUzYWU3ODViOGMwODk3NmMzOGU4YWJiYTVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaApAQCAtNjQsNiArNjQsMTAg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBt
X3NlbmRSaWdodCB8fCBtX3NlbWFwaG9yZSAhPSBTRU1BUEhPUkVfTlVMTDsgfQogI2VsaWYgT1Mo
V0lORE9XUykKICAgICBleHBsaWNpdCBTZW1hcGhvcmUoSEFORExFKTsKKyNlbGlmIFVTRShVTklY
X0RPTUFJTl9TT0NLRVRTKQorICAgIGV4cGxpY2l0IFNlbWFwaG9yZShpbnQgZmQpOworCisgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmQgIT0gLTE7IH0KICNl
bHNlCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
ICNlbmRpZgpAQCAtNzUsNiArNzksOCBAQCBwcml2YXRlOgogICAgIHNlbWFwaG9yZV90IG1fc2Vt
YXBob3JlIHsgU0VNQVBIT1JFX05VTEwgfTsKICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgSEFORExF
IG1fc2VtYXBob3JlSGFuZGxlIHsgbnVsbHB0ciB9OworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCisgICAgaW50IG1fZmQgeyAtMSB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9JUENTZW1hcGhvcmVVbml4LmNwcAppbmRleCAz
YTg4ZmZjMmRmOTlkZWViZDEyNDI0M2Y5MDc3NWY3OTdjZWMxZGYzLi4zZDE3ODJmOWJkMTJiZTVh
MTA2NDgwMTI1NmQ0M2VhM2RhNjJjY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy91bml4L0lQQ1NlbWFwaG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL3VuaXgvSVBDU2VtYXBob3JlVW5peC5jcHAKQEAgLTI2LDQ3ICsyNiwxMzUgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKIAorI2luY2x1
ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KKworI2lmIE9TKExJTlVYKQorI2luY2x1ZGUgPHN5cy9l
dmVudGZkLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiAKIFNlbWFwaG9yZTo6U2VtYXBo
b3JlKCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNpZiBPUyhMSU5VWCkKKyAgICBt
X2ZkID0gZXZlbnRmZCgwLCBFRkRfQ0xPRVhFQyB8IEVGRF9OT05CTE9DSyB8IEVGRF9TRU1BUEhP
UkUpOworI2VuZGlmCit9CisKK1NlbWFwaG9yZTo6U2VtYXBob3JlKGludCBmZCkKKyAgICA6IG1f
ZmQoZmQpCit7IH0KKworU2VtYXBob3JlOjpTZW1hcGhvcmUoU2VtYXBob3JlJiYgbykKK3sKKyAg
ICBtX2ZkID0gby5tX2ZkOworICAgIG8ubV9mZCA9IC0xOwogfQogCi1TZW1hcGhvcmU6OlNlbWFw
aG9yZShTZW1hcGhvcmUmJikKK1NlbWFwaG9yZTo6flNlbWFwaG9yZSgpCiB7Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgZGVzdHJveSgpOwogfQogCi1TZW1hcGhvcmU6On5TZW1hcGhv
cmUoKSA9IGRlZmF1bHQ7CitTZW1hcGhvcmUmIFNlbWFwaG9yZTo6b3BlcmF0b3I9KFNlbWFwaG9y
ZSYmIG8pCit7CisgICAgaWYgKCZvID09IHRoaXMpCisgICAgICAgIHJldHVybiAqdGhpczsKIAot
U2VtYXBob3JlJiBTZW1hcGhvcmU6Om9wZXJhdG9yPShTZW1hcGhvcmUmJikgPSBkZWZhdWx0Owor
ICAgIGRlc3Ryb3koKTsKKyAgICBtX2ZkID0gby5tX2ZkOworICAgIG8ubV9mZCA9IC0xOworICAg
IHJldHVybiAqdGhpczsKK30KIAogdm9pZCBTZW1hcGhvcmU6OnNpZ25hbCgpCiB7CisjaWYgT1Mo
TElOVVgpCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2ZkID49IDAsICJTaWduYWxsaW5nIG9u
IGFuIGludmFsaWQgc2VtYXBob3JlIG9iamVjdCIpOworCisgICAgLy8gTWF0Y2hpbmcgd2FpdElt
cGwoKSBhbmQgRUZEX1NFTUFQSE9SRSBzZW1hbnRpY3MsIGluY3JlbWVudCB0aGUgc2VtYXBob3Jl
IHZhbHVlIGJ5IDEuCisgICAgdWludDY0X3QgdmFsdWUgPSAxOworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIGludCByZXQgPSB3cml0ZShtX2ZkLCAmdmFsdWUsIHNpemVvZih1aW50NjRfdCkp
OworICAgICAgICBpZiAoTElLRUxZKHJldCAhPSAtMSB8fCBlcnJubyAhPSBFSU5UUikpCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYKIH0KIAorI2lmIE9TKExJTlVYKQorc3RhdGlj
IGJvb2wgd2FpdEltcGwoaW50IGZkLCBpbnQgdGltZW91dCkKK3sKKyAgICBzdHJ1Y3QgcG9sbGZk
IHBvbGxmZFZhbHVlIHsgLmZkID0gZmQsIC5ldmVudHMgPSBQT0xMSU4sIC5yZXZlbnRzID0gMCB9
OworICAgIGludCByZXQgPSAwOworCisgICAgLy8gSXRlcmF0ZSBvbiBwb2xsaW5nIHdoaWxlIGlu
dGVycnVwdHMgYXJlIHRocm93biwgb3RoZXJ3aXNlIGJhaWwgb3V0IG9mIHRoZSBsb29wIGltbWVk
aWF0ZWx5LgorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHJldCA9IHBvbGwoJnBvbGxmZFZh
bHVlLCAxLCB0aW1lb3V0KTsKKyAgICAgICAgaWYgKExJS0VMWShyZXQgIT0gLTEgfHwgZXJybm8g
IT0gRUlOVFIpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gRmFpbCBpZiB0
aGUgcmV0dXJuIHZhbHVlIGRvZXNuJ3QgaW5kaWNhdGUgdGhlIHNpbmdsZSBmaWxlIGRlc2NyaXB0
b3Igd2l0aCBvbmx5IGlucHV0IGV2ZW50cyBhdmFpbGFibGUuCisgICAgaWYgKHJldCAhPSAxIHx8
ICEhKHBvbGxmZFZhbHVlLnJldmVudHMgXiBQT0xMSU4pKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBUaGVyZSBzaG91bGQgYmUgZGF0YSBmb3IgcmVhZGluZyAtLSBkdWUgdG8gRUZE
X1NFTUFQSE9SRSwgaXQgc2hvdWxkIGJlIDEgcGFja2VkIGludG8gYW4gOC1ieXRlIHZhbHVlLgor
ICAgIHVpbnQ2NF90IHZhbHVlID0gMDsKKyAgICByZXQgPSByZWFkKGZkLCAmdmFsdWUsIHNpemVv
Zih1aW50NjRfdCkpOworICAgIGlmIChyZXQgIT0gc2l6ZW9mKHVpbnQ2NF90KSB8fCB2YWx1ZSAh
PSAxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRp
ZgorCiBib29sIFNlbWFwaG9yZTo6d2FpdCgpCiB7CisjaWYgT1MoTElOVVgpCisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShtX2ZkID49IDAsICJXYWl0aW5nIG9uIGFuIGludmFsaWQgc2VtYXBob3Jl
IG9iamVjdCIpOworCisgICAgcmV0dXJuIHdhaXRJbXBsKG1fZmQsIC0xKTsKKyNlbHNlCiAgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKLWJvb2wgU2VtYXBob3JlOjp3YWl0Rm9yKFRpbWVv
dXQpCitib29sIFNlbWFwaG9yZTo6d2FpdEZvcihUaW1lb3V0IHRpbWVvdXQpCiB7CisjaWYgT1Mo
TElOVVgpCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2ZkID49IDAsICJXYWl0aW5nIG9uIGFu
IGludmFsaWQgc2VtYXBob3JlIG9iamVjdCIpOworCisgICAgaW50IHRpbWVvdXRWYWx1ZSA9IC0x
OworICAgIGlmICghdGltZW91dC5pc0luZmluaXR5KCkpCisgICAgICAgIHRpbWVvdXRWYWx1ZSA9
IGludCh0aW1lb3V0LnNlY29uZHNVbnRpbERlYWRsaW5lKCkubWlsbGlzZWNvbmRzKCkpOworICAg
IHJldHVybiB3YWl0SW1wbChtX2ZkLCB0aW1lb3V0VmFsdWUpOworI2Vsc2UKICAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKIH0KIAotdm9pZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVyJikgY29u
c3QKK3ZvaWQgU2VtYXBob3JlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKKyAg
ICBpbnQgZHVwbGljYXRlID0gLTE7CisgICAgaWYgKG1fZmQgIT0gLTEpCisgICAgICAgIGR1cGxp
Y2F0ZSA9IGR1cENsb3NlT25FeGVjKG1fZmQpOworCisgICAgZW5jb2Rlci5hZGRBdHRhY2htZW50
KEF0dGFjaG1lbnQoZHVwbGljYXRlKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBT
ZW1hcGhvcmU6OmRlY29kZShEZWNvZGVyJikKK3N0ZDo6b3B0aW9uYWw8U2VtYXBob3JlPiBTZW1h
cGhvcmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIHJldHVybiBTZW1hcGhvcmUg
eyB9OworICAgIGF1dG8gYXR0YWNobWVudCA9IGRlY29kZXIudGFrZUxhc3RBdHRhY2htZW50KCk7
CisgICAgaWYgKCFhdHRhY2htZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om9wdGlvbmFsPFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBhdHRhY2ht
ZW50LT5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKSB9OwogfQogCiB2b2lkIFNlbWFwaG9yZTo6ZGVz
dHJveSgpCiB7CisgICAgaWYgKG1fZmQgPj0gMCkKKyAgICAgICAgY2xvc2VXaXRoUmV0cnkobV9m
ZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>