<?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>39588</bug_id>
          
          <creation_ts>2010-05-24 03:18:37 -0700</creation_ts>
          <short_desc>Provide implementation of DeviceOrientationController and hook into DOMWindow</short_desc>
          <delta_ts>2010-07-14 05:55:08 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>41607</dependson>
          <blocked>30335</blocked>
    
    <blocked>39590</blocked>
    
    <blocked>41616</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dimich</cc>
    
    <cc>fishd</cc>
    
    <cc>hans</cc>
    
    <cc>jorlow</cc>
    
    <cc>koivisto</cc>
    
    <cc>levin</cc>
    
    <cc>mike</cc>
    
    <cc>sam</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>229682</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-24 03:18:37 -0700</bug_when>
    <thetext>The DeviceOrientation receives registrations from the DOMWindow for device orientation events and starts and stops the DeviceOrientationClient. When it receives orientation updates, it fires these on the window object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230726</commentid>
    <comment_count>1</comment_count>
      <attachid>57101</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-26 08:52:52 -0700</bug_when>
    <thetext>Created attachment 57101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230729</commentid>
    <comment_count>2</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-26 09:02:29 -0700</bug_when>
    <thetext>I&apos;m not sure that the structure of this patch is correct. Currently, when adding and removing DeviceOrientation listeners, I make the calls to the DeviceOrientation object directly from DOMWindow. However, the listener handling for touch events, which also makes calls to a client owned by the embedded, makes these calls from Document, rather than from DOMWindow directly. (See Document::addListenerTypeIfNeeded() and Document::removeAllEventListeners())

I could move the calls to DeviceOrientation to Document to match the pattern used by touch events, but this would add extra plumbing that isn&apos;t otherwise needed. Let me know if you&apos;d like me to update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231664</commentid>
    <comment_count>3</comment_count>
      <attachid>57101</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-05-28 06:28:30 -0700</bug_when>
    <thetext>Comment on attachment 57101
Patch

Drive by comments (I&apos;m not qualified to review this):

WebCore/page/DOMWindow.cpp:1396
 +      if (eventType == eventNames().deviceorientationEvent &amp;&amp; frame() &amp;&amp; frame()-&gt;page())
maybe this should be an else if joined with the previous block?  Could go either way about what&apos;s best.  Obviously either is technically correct.  I could go either way.

WebCore/page/DOMWindow.cpp:1378
 +      if (eventType == eventNames().deviceorientationEvent &amp;&amp; frame() &amp;&amp; frame()-&gt;page())
Ditto

WebCore/dom/DeviceOrientation.cpp:45
 +      ASSERT(!m_listeners.contains(window));
If you add multiple event listeners to one window, does it call addEventListener multiple times?  I would have thought so...in which case, this assumption wouldn&apos;t be true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233229</commentid>
    <comment_count>4</comment_count>
      <attachid>57646</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-02 06:10:37 -0700</bug_when>
    <thetext>Created attachment 57646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233230</commentid>
    <comment_count>5</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-02 06:11:41 -0700</bug_when>
    <thetext>&gt; Drive by comments (I&apos;m not qualified to review this):
Can you recommend somebody who could review it?

&gt; WebCore/page/DOMWindow.cpp:1396
&gt;  +      if (eventType == eventNames().deviceorientationEvent &amp;&amp; frame() &amp;&amp; frame()-&gt;page())
&gt; maybe this should be an else if joined with the previous block?
Done

&gt; WebCore/dom/DeviceOrientation.cpp:45
&gt;  +      ASSERT(!m_listeners.contains(window));
&gt; If you add multiple event listeners to one window, does it call
&gt; addEventListener multiple times?  I would have thought so...in which case, this
&gt; assumption wouldn&apos;t be true.
Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233232</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-02 06:13:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Drive by comments (I&apos;m not qualified to review this):
&gt; Can you recommend somebody who could review it?

Not sure.  I imagine many of the usual suspects like ap, mjs, sam.  Maybe svn blame some of the event code or look at who reviewed Geolocation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233243</commentid>
    <comment_count>7</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-02 06:53:19 -0700</bug_when>
    <thetext>&gt; Not sure.  I imagine many of the usual suspects like ap, mjs, sam.  Maybe svn
&gt; blame some of the event code or look at who reviewed Geolocation?
Adding Sam and Antti, who reviewed some of the TouchEvents code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236257</commentid>
    <comment_count>8</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-10 02:30:39 -0700</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236260</commentid>
    <comment_count>9</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-10 02:35:28 -0700</bug_when>
    <thetext>Adding some reviewers who might feel qualified but (more importantly) aren&apos;t busy with WWDC.  :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242946</commentid>
    <comment_count>10</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-06-25 04:24:48 -0700</bug_when>
    <thetext>&gt; WebCore/dom/DeviceOrientation.cpp:42
&gt; +void DeviceOrientation::addListener(DOMWindow* window)
&gt; +{
&gt; +    if (m_listeners.isEmpty() &amp;&amp; m_client)
&gt; +        m_client-&gt;startUpdating();
&gt; +    m_listeners.add(window);
&gt; +}
Just a thought here: it might be desirable to do m_listeners.add(window) before calling m_client-&gt;startUpdating(). It could be that on DeviceOrientationClient::startUpdating(), it immediately calls back into DeviceOrientation::onDeviceOrientation() with e.g. the last known orientation, or values indicating that it can&apos;t deliver any orientation data, and then there wouldn&apos;t be any registered listeners yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243015</commentid>
    <comment_count>11</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-25 08:09:33 -0700</bug_when>
    <thetext>&gt; Just a thought here: it might be desirable to do m_listeners.add(window) before
&gt; calling m_client-&gt;startUpdating(). It could be that on
&gt; DeviceOrientationClient::startUpdating(), it immediately calls back into
&gt; DeviceOrientation::onDeviceOrientation() with e.g. the last known orientation,
&gt; or values indicating that it can&apos;t deliver any orientation data, and then there
&gt; wouldn&apos;t be any registered listeners yet.
Thanks for the comment Hans.  My intention was that the client must always call back asynchronously. I think that&apos;s the more usual pattern. However, you&apos;re right that I should either make this requirement explicit, or make sure that re-entrant calls to DeviceOrientation::onDeviceOrientation() from DeviceOrientationClient::startUpdating() are handled correctly.

Anybody care to review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245783</commentid>
    <comment_count>12</comment_count>
      <attachid>57646</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-02 00:14:40 -0700</bug_when>
    <thetext>Comment on attachment 57646
Patch

Hm..ok, seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246583</commentid>
    <comment_count>13</comment_count>
      <attachid>57646</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-05 05:11:52 -0700</bug_when>
    <thetext>Comment on attachment 57646
Patch

Will update the patch once Bug 41607 is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250460</commentid>
    <comment_count>14</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-13 05:58:58 -0700</bug_when>
    <thetext>Updated bug title now that DeviceOrientation has been renamed to DeviceOrientationController in bug 41608</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250468</commentid>
    <comment_count>15</comment_count>
      <attachid>61365</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-13 06:14:02 -0700</bug_when>
    <thetext>Created attachment 61365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250473</commentid>
    <comment_count>16</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-13 06:41:02 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=61365) [details]
&gt; Patch

Hmm, this looks wrong:

In WebCore/dom/DeviceOrientationController.cpp you add definitions:
+void DeviceOrientation::addListener(DOMWindow* window)
+void DeviceOrientation::removeListener(DOMWindow* window)
+void DeviceOrientation::removeAllListeners(DOMWindow* window)

But they are members of DeviceOrientationController, right?


Is it desirable to cache the orientation, as suggested by DeviceOrientationClient::lastOrientation()? I can see how this would solve the problem of notifying a new observer of the controller that orientation cannot be provided, but worry about the risk of dispatching new events with old orientation data. Not sure whether that is a real problem or not, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250476</commentid>
    <comment_count>17</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-13 06:48:20 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=61365) [details]
&gt; Patch

Also, in DeviceOrientationController::addListener(), if m_client is NULL, perhaps the controller should take the opportunity to dispatch an event with alpha, beta and gamma set to NULL so as to indicate to the web page that no orientation data can be provided, rather than doing nothing?

This would be the scenario if an embedder flips the ENABLE switch but doesn&apos;t provide a client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250479</commentid>
    <comment_count>18</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-13 07:08:55 -0700</bug_when>
    <thetext>&gt; Hmm, this looks wrong:
Ah, merge error, fixed.

&gt; Is it desirable to cache the orientation, as suggested by
&gt; DeviceOrientationClient::lastOrientation()?
This is required to make sure that new listeners receive an orientation (if available) immediately. The client has no way to know when new listeners are added - it only calls back when new data is available.

&gt; Also, in DeviceOrientationController::addListener(), if m_client is NULL,
&gt; perhaps the controller should take the opportunity to dispatch an event with
&gt; alpha, beta and gamma set to NULL so as to indicate to the web page that no
&gt; orientation data can be provided, rather than doing nothing?
Sure, sounds reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250481</commentid>
    <comment_count>19</comment_count>
      <attachid>61370</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-13 07:12:59 -0700</bug_when>
    <thetext>Created attachment 61370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251010</commentid>
    <comment_count>20</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-14 00:45:02 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=61370) [details]
&gt; Patch

Looks good as far as I can tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251078</commentid>
    <comment_count>21</comment_count>
      <attachid>61370</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-14 03:05:56 -0700</bug_when>
    <thetext>Comment on attachment 61370
Patch

WebCore/dom/DeviceOrientationController.cpp:58
 +          m_client-&gt;startUpdating();
Shouldn&apos;t you just ask the client whether it&apos;s been started?  At very least you should probably assert that it&apos;s not currently updating.

WebCore/dom/DeviceOrientationController.cpp:52
 +          window-&gt;dispatchEvent(DeviceOrientationEvent::create(eventNames().deviceorientationEvent, m_client-&gt;lastOrientation()));
Is this specced to be synchronous?  If so, I think we should consider changing it.  If so, you shouldn&apos;t do it this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251097</commentid>
    <comment_count>22</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-14 03:38:16 -0700</bug_when>
    <thetext>&gt; WebCore/dom/DeviceOrientationController.cpp:58
&gt;  +          m_client-&gt;startUpdating();
&gt; Shouldn&apos;t you just ask the client whether it&apos;s been started?  At very least you
&gt; should probably assert that it&apos;s not currently updating.
I don&apos;t think there&apos;s any need to ask the client. This code is the only place where the client is started, so if it&apos;s already been started it&apos;s due to a logic error in this code. If we&apos;re to add an assert, I think it&apos;s better to do so in DeviceOrientationClient::start(), rather than adding a new DeviceOrientationClient::isStarted().

&gt; WebCore/dom/DeviceOrientationController.cpp:52
&gt;  +          window-&gt;dispatchEvent(DeviceOrientationEvent::create(eventNames().deviceorientationEvent, m_client-&gt;lastOrientation()));
&gt; Is this specced to be synchronous?  If so, I think we should consider changing
&gt; it.  If so, you shouldn&apos;t do it this way.
Are you asking whether the DeviceOrientation API specs whether window.addEventListener() may invoke the event handler synchronously? Currently it doesn&apos;t say either way. Why do you think it&apos;s not good to invoke the event handler synchronously?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251105</commentid>
    <comment_count>23</comment_count>
      <attachid>61370</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-14 03:48:06 -0700</bug_when>
    <thetext>Comment on attachment 61370
Patch

(In reply to comment #22)
&gt; &gt; WebCore/dom/DeviceOrientationController.cpp:58
&gt; &gt;  +          m_client-&gt;startUpdating();
&gt; &gt; Shouldn&apos;t you just ask the client whether it&apos;s been started?  At very least you
&gt; &gt; should probably assert that it&apos;s not currently updating.
&gt; I don&apos;t think there&apos;s any need to ask the client. This code is the only place where the client is started, so if it&apos;s already been started it&apos;s due to a logic error in this code. If we&apos;re to add an assert, I think it&apos;s better to do so in DeviceOrientationClient::start(), rather than adding a new DeviceOrientationClient::isStarted().

Agreed it&apos;s a logic error, that&apos;s why I&apos;m concerned about it.  I don&apos;t care where you put asserts, but I think we need something to detect such an error.

&gt; &gt; WebCore/dom/DeviceOrientationController.cpp:52
&gt; &gt;  +          window-&gt;dispatchEvent(DeviceOrientationEvent::create(eventNames().deviceorientationEvent, m_client-&gt;lastOrientation()));
&gt; &gt; Is this specced to be synchronous?  If so, I think we should consider changing
&gt; &gt; it.  If so, you shouldn&apos;t do it this way.
&gt; Are you asking whether the DeviceOrientation API specs whether window.addEventListener() may invoke the event handler synchronously? Currently it doesn&apos;t say either way. Why do you think it&apos;s not good to invoke the event handler synchronously?

Because it breaks run to completion.  And in general synchronous event handlers are evil for multi-threaded/multi-process browsers.  Unless there&apos;s a very good reason why it _needs_ to be synchronous, newly specified event handles should not be synchronous.  I think you should change this in the spec.  I&apos;m happy for you do this in a second patch though.  Your choice.


r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251108</commentid>
    <comment_count>24</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-14 04:14:50 -0700</bug_when>
    <thetext>&gt; Agreed it&apos;s a logic error, that&apos;s why I&apos;m concerned about it.  I don&apos;t care
&gt; where you put asserts, but I think we need something to detect such an error.
OK, I&apos;ll use an assert in the client, when I add it.

&gt; Because it breaks run to completion.  And in general synchronous event handlers
&gt; are evil for multi-threaded/multi-process browsers.  Unless there&apos;s a very good
&gt; reason why it _needs_ to be synchronous, newly specified event handles should
&gt; not be synchronous.  I think you should change this in the spec.  I&apos;m happy for
&gt; you do this in a second patch though.  Your choice.
I&apos;ll propose an update to the spec and fix this once it&apos;s agreed upon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251130</commentid>
    <comment_count>25</comment_count>
      <attachid>61370</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-14 05:55:02 -0700</bug_when>
    <thetext>Comment on attachment 61370
Patch

Clearing flags on attachment: 61370

Committed r63312: &lt;http://trac.webkit.org/changeset/63312&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251131</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-14 05:55:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57101</attachid>
            <date>2010-05-26 08:52:52 -0700</date>
            <delta_ts>2010-06-02 06:10:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39588-20100526165250.patch</filename>
            <type>text/plain</type>
            <size>4920</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDI0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDUtMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFByb3ZpZGUgaW1wbGVtZW50YXRpb24gb2YgRGV2aWNlT3JpZW50YXRpb24gYW5kIGhvb2sgaW50
byBET01XaW5kb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5NTg4CisKKyAgICAgICAgQWRkZWQgRGV2aWNlT3JpZW50YXRpb246OmFkZExpc3RlbmVy
KCkgYW5kIHJlbW92ZUxpc3RlbmVyKCkgdG8gc3RhcnQKKyAgICAgICAgYW5kIHN0b3AgdGhlIGNs
aWVudCBhbmQgYWRkZWQgY2FsbHMgZnJvbSBEb21XaW5kb3cuIEltcGxlbWVudGVkCisgICAgICAg
IERldmljZU9yaWVudGF0aW9uOjpvbkRldmljZU9yaWVudGF0aW9uQ2hhbmdlKCkgdG8gZmlyZSBh
CisgICAgICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQgb24gdGhlIHdpbmRvdyBvYmplY3QuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIHlldCwgcGVuZGluZyBMYXlvdXRUZXN0Q29udHJvbGxlciBt
ZXRob2RzIGZvciBtb2NrIERldmljZU9yaWVudGF0aW9uLgorCisgICAgICAgICogZG9tL0Rldmlj
ZU9yaWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uOjph
ZGRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbjo6cmVtb3Zl
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb246Om9uRGV2aWNl
T3JpZW50YXRpb25DaGFuZ2UpOgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbi5oOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVBbGxF
dmVudExpc3RlbmVycyk6CisKIDIwMTAtMDUtMjYgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6IFdl
YkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9EZXZpY2VPcmllbnRhdGlvbi5jcHAJKHJldmlzaW9uIDYwMTY4KQorKysgV2ViQ29yZS9kb20v
RGV2aWNlT3JpZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMyArNDAsMzEgQEAg
RGV2aWNlT3JpZW50YXRpb246OkRldmljZU9yaWVudGF0aW9uKFBhZwogewogfQogCit2b2lkIERl
dmljZU9yaWVudGF0aW9uOjphZGRMaXN0ZW5lcihET01XaW5kb3cqIHdpbmRvdykKK3sKKyAgICBB
U1NFUlQoIW1fbGlzdGVuZXJzLmNvbnRhaW5zKHdpbmRvdykpOworCisgICAgaWYgKG1fbGlzdGVu
ZXJzLmlzRW1wdHkoKSAmJiBtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRp
bmcoKTsKKyAgICBtX2xpc3RlbmVycy5hZGQod2luZG93KTsKK30KKwordm9pZCBEZXZpY2VPcmll
bnRhdGlvbjo6cmVtb3ZlTGlzdGVuZXIoRE9NV2luZG93KiB3aW5kb3cpCit7CisgICAgaWYgKCFt
X2xpc3RlbmVycy5jb250YWlucyh3aW5kb3cpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xp
c3RlbmVycy5yZW1vdmUod2luZG93KTsKKyAgICBpZiAobV9saXN0ZW5lcnMuaXNFbXB0eSgpICYm
IG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c3RvcFVwZGF0aW5nKCk7Cit9CisKIHZvaWQg
RGV2aWNlT3JpZW50YXRpb246Om9uRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoZG91YmxlIGFscGhh
LCBkb3VibGUgYmV0YSwgZG91YmxlIGdhbW1hKQogewotICAgIC8vIEZJWE1FOiBGaXJlIERldmlj
ZU9yaWVudGF0aW9uRXZlbnRzIG9uIHRoZSB3aW5kb3cgb2JqZWN0IG9mIGFsbCBmcmFtZXMKLSAg
ICAvLyB0aGF0IGFyZSBsaXN0ZW5pbmcgdG8gb3JpZW50YXRpb24uCi0gICAgVU5VU0VEX1BBUkFN
KGFscGhhKTsKLSAgICBVTlVTRURfUEFSQU0oYmV0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGdhbW1h
KTsKKyAgICBWZWN0b3I8RE9NV2luZG93Kj4gbGlzdGVuZXJzVmVjdG9yOworICAgIGNvcHlUb1Zl
Y3RvcihtX2xpc3RlbmVycywgbGlzdGVuZXJzVmVjdG9yKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxpc3RlbmVyc1ZlY3Rvci5zaXplKCk7ICsraSkKKyAgICAgICAgbGlzdGVuZXJzVmVj
dG9yW2ldLT5kaXNwYXRjaEV2ZW50KERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZGV2aWNlb3JpZW50YXRpb25FdmVudCwgYWxwaGEsIGJldGEsIGdhbW1hKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb24uaAko
cmV2aXNpb24gNjAxNjgpCisrKyBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw5IEBACiAjaWZuZGVmIERldmljZU9yaWVudGF0aW9uX2gK
ICNkZWZpbmUgRGV2aWNlT3JpZW50YXRpb25faAogCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKQEAgLTM1LDEzICszOCwxNSBAQCBjbGFzcyBEZXZpY2VP
cmllbnRhdGlvbiB7CiBwdWJsaWM6CiAgICAgRGV2aWNlT3JpZW50YXRpb24oUGFnZSosIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50Kik7CiAKLSAgICAvLyBGSVhNRTogQWRkIG1ldGhvZHMgdG8gc3Rh
cnQgYW5kIHN0b3AgdGhlIHNlcnZpY2UuCisgICAgdm9pZCBhZGRMaXN0ZW5lcihET01XaW5kb3cq
KTsKKyAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKERPTVdpbmRvdyopOwogCiAgICAgdm9pZCBvbkRl
dmljZU9yaWVudGF0aW9uQ2hhbmdlKGRvdWJsZSBhbHBoYSwgZG91YmxlIGJldGEsIGRvdWJsZSBn
YW1tYSk7CiAKIHByaXZhdGU6CiAgICAgUGFnZSogbV9wYWdlOwogICAgIERldmljZU9yaWVudGF0
aW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBIYXNoU2V0PERPTVdpbmRvdyo+IG1fbGlzdGVuZXJz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlz
aW9uIDYwMTY4KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzNzQsNiArMTM3NCwxMSBAQCBib29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBCiAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxv
YWRFdmVudCAmJiBhbGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnModGhpcykpCiAgICAgICAgIGFk
ZEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7CiAKKyNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQorICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW9yaWVu
dGF0aW9uRXZlbnQgJiYgZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIGZyYW1l
KCktPnBhZ2UoKS0+ZGV2aWNlT3JpZW50YXRpb24oKS0+YWRkTGlzdGVuZXIodGhpcyk7CisjZW5k
aWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzg3LDYgKzEzOTIsMTEgQEAgYm9vbCBE
T01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29ucwogICAgIGVsc2UgaWYgKGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzKCkuYmVmb3JldW5sb2FkRXZlbnQgJiYgYWxsb3dzQmVmb3JlVW5sb2Fk
TGlzdGVuZXJzKHRoaXMpKQogICAgICAgICByZW1vdmVCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVy
KHRoaXMpOwogCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyAgICBpZiAoZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2VvcmllbnRhdGlvbkV2ZW50ICYmIGZyYW1lKCkgJiYg
ZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICBmcmFtZSgpLT5wYWdlKCktPmRldmljZU9yaWVudGF0
aW9uKCktPnJlbW92ZUxpc3RlbmVyKHRoaXMpOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMTQ1Niw2ICsxNDY2LDExIEBAIHZvaWQgRE9NV2luZG93OjpyZW1vdmVBbGxFdmVu
dExpc3RlbmVycygKIHsKICAgICBFdmVudFRhcmdldDo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMo
KTsKIAorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisgICAgaWYgKGZyYW1lKCkgJiYg
ZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICBmcmFtZSgpLT5wYWdlKCktPmRldmljZU9yaWVudGF0
aW9uKCktPnJlbW92ZUxpc3RlbmVyKHRoaXMpOworI2VuZGlmCisKICAgICByZW1vdmVBbGxVbmxv
YWRFdmVudExpc3RlbmVycyh0aGlzKTsKICAgICByZW1vdmVBbGxCZWZvcmVVbmxvYWRFdmVudExp
c3RlbmVycyh0aGlzKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57646</attachid>
            <date>2010-06-02 06:10:37 -0700</date>
            <delta_ts>2010-07-13 06:13:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39588-20100602141035.patch</filename>
            <type>text/plain</type>
            <size>5854</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDU1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDUtMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFByb3ZpZGUgaW1wbGVtZW50YXRpb24gb2YgRGV2aWNlT3JpZW50YXRpb24gYW5kIGhvb2sgaW50
byBET01XaW5kb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5NTg4CisKKyAgICAgICAgQWRkZWQgRGV2aWNlT3JpZW50YXRpb246OmFkZExpc3RlbmVy
KCkgYW5kIHJlbW92ZUxpc3RlbmVyKCkgdG8gc3RhcnQKKyAgICAgICAgYW5kIHN0b3AgdGhlIGNs
aWVudCBhbmQgYWRkZWQgY2FsbHMgZnJvbSBEb21XaW5kb3cuIEltcGxlbWVudGVkCisgICAgICAg
IERldmljZU9yaWVudGF0aW9uOjpvbkRldmljZU9yaWVudGF0aW9uQ2hhbmdlKCkgdG8gZmlyZSBh
CisgICAgICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQgb24gdGhlIHdpbmRvdyBvYmplY3QuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIHlldCwgcGVuZGluZyBMYXlvdXRUZXN0Q29udHJvbGxlciBt
ZXRob2RzIGZvciBtb2NrIERldmljZU9yaWVudGF0aW9uLgorCisgICAgICAgICogZG9tL0Rldmlj
ZU9yaWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uOjph
ZGRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbjo6cmVtb3Zl
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb246Om9uRGV2aWNl
T3JpZW50YXRpb25DaGFuZ2UpOgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbi5oOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVBbGxF
dmVudExpc3RlbmVycyk6CisKIDIwMTAtMDYtMDIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDog
V2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uLmNwcAkocmV2aXNpb24gNjA1NTYpCisrKyBXZWJDb3JlL2Rv
bS9EZXZpY2VPcmllbnRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAK
IAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGV2aWNl
T3JpZW50YXRpb25FdmVudC5oIgotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDEzICszOSwzNyBAQCBEZXZpY2VPcmllbnRhdGlvbjo6
RGV2aWNlT3JpZW50YXRpb24oUGFnCiB7CiB9CiAKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb246OmFk
ZExpc3RlbmVyKERPTVdpbmRvdyogd2luZG93KQoreworICAgIGlmIChtX2xpc3RlbmVycy5pc0Vt
cHR5KCkgJiYgbV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zdGFydFVwZGF0aW5nKCk7Cisg
ICAgbV9saXN0ZW5lcnMuYWRkKHdpbmRvdyk7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb246
OnJlbW92ZUxpc3RlbmVyKERPTVdpbmRvdyogd2luZG93KQoreworICAgIG1fbGlzdGVuZXJzLnJl
bW92ZSh3aW5kb3cpOworICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkgJiYgbV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5zdG9wVXBkYXRpbmcoKTsKK30KKwordm9pZCBEZXZpY2VPcmll
bnRhdGlvbjo6cmVtb3ZlQWxsTGlzdGVuZXJzKERPTVdpbmRvdyogd2luZG93KQoreworICAgIC8v
IE1heSBiZSBjYWxsZWQgd2l0aCBhIERPTVdpbmRvdyB0aGF0J3Mgbm90IGEgbGlzdGVuZXIuCisg
ICAgaWYgKCFtX2xpc3RlbmVycy5jb250YWlucyh3aW5kb3cpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2xpc3RlbmVycy5yZW1vdmVBbGwod2luZG93KTsKKyAgICBpZiAobV9saXN0ZW5lcnMu
aXNFbXB0eSgpICYmIG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c3RvcFVwZGF0aW5nKCk7
Cit9CisKIHZvaWQgRGV2aWNlT3JpZW50YXRpb246Om9uRGV2aWNlT3JpZW50YXRpb25DaGFuZ2Uo
ZG91YmxlIGFscGhhLCBkb3VibGUgYmV0YSwgZG91YmxlIGdhbW1hKQogewotICAgIC8vIEZJWE1F
OiBGaXJlIERldmljZU9yaWVudGF0aW9uRXZlbnRzIG9uIHRoZSB3aW5kb3cgb2JqZWN0IG9mIGFs
bCBmcmFtZXMKLSAgICAvLyB0aGF0IGFyZSBsaXN0ZW5pbmcgdG8gb3JpZW50YXRpb24uCi0gICAg
VU5VU0VEX1BBUkFNKGFscGhhKTsKLSAgICBVTlVTRURfUEFSQU0oYmV0YSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGdhbW1hKTsKKyAgICBWZWN0b3I8RE9NV2luZG93Kj4gbGlzdGVuZXJzVmVjdG9yOwor
ICAgIGNvcHlUb1ZlY3RvcihtX2xpc3RlbmVycywgbGlzdGVuZXJzVmVjdG9yKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxpc3RlbmVyc1ZlY3Rvci5zaXplKCk7ICsraSkKKyAgICAgICAg
bGlzdGVuZXJzVmVjdG9yW2ldLT5kaXNwYXRjaEV2ZW50KERldmljZU9yaWVudGF0aW9uRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZGV2aWNlb3JpZW50YXRpb25FdmVudCwgYWxwaGEsIGJldGEs
IGdhbW1hKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRGV2aWNlT3Jp
ZW50YXRpb24uaAkocmV2aXNpb24gNjA1NTYpCisrKyBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw5IEBACiAjaWZuZGVmIERldmljZU9y
aWVudGF0aW9uX2gKICNkZWZpbmUgRGV2aWNlT3JpZW50YXRpb25faAogCisjaW5jbHVkZSAiRE9N
V2luZG93LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CkBAIC0zNSwxMyArMzgs
MTcgQEAgY2xhc3MgRGV2aWNlT3JpZW50YXRpb24gewogcHVibGljOgogICAgIERldmljZU9yaWVu
dGF0aW9uKFBhZ2UqLCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCopOwogCi0gICAgLy8gRklYTUU6
IEFkZCBtZXRob2RzIHRvIHN0YXJ0IGFuZCBzdG9wIHRoZSBzZXJ2aWNlLgorICAgIHZvaWQgYWRk
TGlzdGVuZXIoRE9NV2luZG93Kik7CisgICAgdm9pZCByZW1vdmVMaXN0ZW5lcihET01XaW5kb3cq
KTsKKyAgICB2b2lkIHJlbW92ZUFsbExpc3RlbmVycyhET01XaW5kb3cqKTsKIAogICAgIHZvaWQg
b25EZXZpY2VPcmllbnRhdGlvbkNoYW5nZShkb3VibGUgYWxwaGEsIGRvdWJsZSBiZXRhLCBkb3Vi
bGUgZ2FtbWEpOwogCiBwcml2YXRlOgogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudCogbV9jbGllbnQ7CisgICAgdHlwZWRlZiBIYXNoQ291bnRlZFNldDxET01X
aW5kb3cqPiBMaXN0ZW5lcnNTZXQ7CisgICAgTGlzdGVuZXJzU2V0IG1fbGlzdGVuZXJzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDYw
NTU2KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDExICszNCwxMiBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2UuaCIKLSNp
bmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRE9NQXBwbGljYXRpb25DYWNo
ZS5oIgogI2luY2x1ZGUgIkRPTVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCisj
aW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCisjaW5j
bHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCkBAIC0xMzcz
LDYgKzEzNzQsMTAgQEAgYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQQog
ICAgICAgICBhZGRVbmxvYWRFdmVudExpc3RlbmVyKHRoaXMpOwogICAgIGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JldW5sb2FkRXZlbnQgJiYgYWxsb3dzQmVmb3JlVW5s
b2FkTGlzdGVuZXJzKHRoaXMpKQogICAgICAgICBhZGRCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVy
KHRoaXMpOworI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisgICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2VvcmllbnRhdGlvbkV2ZW50ICYmIGZyYW1lKCkg
JiYgZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICBmcmFtZSgpLT5wYWdlKCktPmRldmljZU9yaWVu
dGF0aW9uKCktPmFkZExpc3RlbmVyKHRoaXMpOworI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTEzODYsNiArMTM5MSwxMCBAQCBib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcihjb25zCiAgICAgICAgIHJlbW92ZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7CiAgICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxvYWRFdmVudCAmJiBh
bGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnModGhpcykpCiAgICAgICAgIHJlbW92ZUJlZm9yZVVu
bG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7CisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
KyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW9yaWVudGF0aW9u
RXZlbnQgJiYgZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIGZyYW1lKCktPnBh
Z2UoKS0+ZGV2aWNlT3JpZW50YXRpb24oKS0+cmVtb3ZlTGlzdGVuZXIodGhpcyk7CisjZW5kaWYK
IAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTQ1Niw2ICsxNDY1LDExIEBAIHZvaWQgRE9NV2lu
ZG93OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygKIHsKICAgICBFdmVudFRhcmdldDo6cmVtb3Zl
QWxsRXZlbnRMaXN0ZW5lcnMoKTsKIAorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisg
ICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICBmcmFtZSgpLT5wYWdl
KCktPmRldmljZU9yaWVudGF0aW9uKCktPnJlbW92ZUFsbExpc3RlbmVycyh0aGlzKTsKKyNlbmRp
ZgorCiAgICAgcmVtb3ZlQWxsVW5sb2FkRXZlbnRMaXN0ZW5lcnModGhpcyk7CiAgICAgcmVtb3Zl
QWxsQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnModGhpcyk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61365</attachid>
            <date>2010-07-13 06:14:02 -0700</date>
            <delta_ts>2010-07-13 07:12:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39588-20100713141356.patch</filename>
            <type>text/plain</type>
            <size>7278</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzE5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDctMTMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFByb3ZpZGUgaW1wbGVtZW50YXRpb24gb2YgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyIGFu
ZCBob29rIGludG8gRE9NV2luZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTU4OAorCisgICAgICAgIEFkZGVkIERldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcjo6YWRkTGlzdGVuZXIoKSBhbmQgcmVtb3ZlTGlzdGVuZXIoKQorICAgICAgICB0byBz
dGFydCBhbmQgc3RvcCB0aGUgY2xpZW50IGFuZCBhZGRlZCBjYWxscyBmcm9tIERvbVdpbmRvdy4g
SW1wbGVtZW50ZWQKKyAgICAgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpvbkRldmlj
ZU9yaWVudGF0aW9uQ2hhbmdlKCkgdG8gZmlyZSBhCisgICAgICAgIERldmljZU9yaWVudGF0aW9u
RXZlbnQgb24gdGhlIHdpbmRvdyBvYmplY3QuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHlldCwg
cGVuZGluZyBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIGZvciBtb2NrIERldmljZU9yaWVu
dGF0aW9uLgorCisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEZXZpY2VPcmllbnRhdGlvbjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb246OnJlbW92ZUxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
dmljZU9yaWVudGF0aW9uOjpyZW1vdmVBbGxMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpvbkRldmljZU9yaWVudGF0aW9uQ2hhbmdlKToK
KyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjphZGRFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnJlbW92ZUFsbEV2ZW50TGlzdGVu
ZXJzKToKKwogMjAxMC0wNy0xMiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFdlYkNv
cmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24gNjMxOTMpCisrKyBXZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCAr
MjgsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEZXZpY2VPcmllbnRhdGlv
bjsKKwogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRp
bmcoKSA9IDA7CisgICAgdmlydHVhbCBEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9u
KCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+RGV2aWNlT3JpZW50YXRp
b25DbGllbnQoKSB7fQpJbmRleDogV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiA2MzE5MykKKysrIFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2lu
Y2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50
YXRpb25FdmVudC5oIgotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQwLDEzICszOSw0NSBAQCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI6OkRldmljZU9yaWVuCiB7CiB9CiAKLXZvaWQgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
OjpvbkRldmljZU9yaWVudGF0aW9uQ2hhbmdlKGRvdWJsZSBhbHBoYSwgZG91YmxlIGJldGEsIGRv
dWJsZSBnYW1tYSkKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb246OmFkZExpc3RlbmVyKERPTVdpbmRv
dyogd2luZG93KQogewotICAgIC8vIEZJWE1FOiBGaXJlIERldmljZU9yaWVudGF0aW9uRXZlbnRz
IG9uIHRoZSB3aW5kb3cgb2JqZWN0IG9mIGFsbCBmcmFtZXMKLSAgICAvLyB0aGF0IGFyZSBsaXN0
ZW5pbmcgdG8gb3JpZW50YXRpb24uCi0gICAgVU5VU0VEX1BBUkFNKGFscGhhKTsKLSAgICBVTlVT
RURfUEFSQU0oYmV0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGdhbW1hKTsKKyAgICAvLyBJZiB0aGUg
Y2xpZW50IGFscmVhZHkgaGFzIGFuIG9yaWVudGF0aW9uLCBjYWxsIGJhY2sgdG8gdGhpcyBuZXcg
bGlzdGVuZXIKKyAgICAvLyBpbW1lZGlhdGVseS4KKyAgICBpZiAobV9jbGllbnQgJiYgbV9jbGll
bnQtPmxhc3RPcmllbnRhdGlvbigpKQorICAgICAgICB3aW5kb3ctPmRpc3BhdGNoRXZlbnQoRGV2
aWNlT3JpZW50YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kZXZpY2VvcmllbnRhdGlv
bkV2ZW50LCBtX2NsaWVudC0+bGFzdE9yaWVudGF0aW9uKCkpKTsKKworICAgIC8vIFRoZSBjbGll
bnQgbWF5IGNhbGwgYmFjayBzeW5jaHJvbm91c2x5LgorICAgIGJvb2wgd2FzRW1wdHkgPSBtX2xp
c3RlbmVycy5pc0VtcHR5KCk7CisgICAgbV9saXN0ZW5lcnMuYWRkKHdpbmRvdyk7CisgICAgaWYg
KHdhc0VtcHR5ICYmIG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c3RhcnRVcGRhdGluZygp
OworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9uOjpyZW1vdmVMaXN0ZW5lcihET01XaW5kb3cq
IHdpbmRvdykKK3sKKyAgICBtX2xpc3RlbmVycy5yZW1vdmUod2luZG93KTsKKyAgICBpZiAobV9s
aXN0ZW5lcnMuaXNFbXB0eSgpICYmIG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c3RvcFVw
ZGF0aW5nKCk7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb246OnJlbW92ZUFsbExpc3RlbmVy
cyhET01XaW5kb3cqIHdpbmRvdykKK3sKKyAgICAvLyBNYXkgYmUgY2FsbGVkIHdpdGggYSBET01X
aW5kb3cgdGhhdCdzIG5vdCBhIGxpc3RlbmVyLgorICAgIGlmICghbV9saXN0ZW5lcnMuY29udGFp
bnMod2luZG93KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9saXN0ZW5lcnMucmVtb3ZlQWxs
KHdpbmRvdyk7CisgICAgaWYgKG1fbGlzdGVuZXJzLmlzRW1wdHkoKSAmJiBtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworfQorCit2b2lkIERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcjo6b25EZXZpY2VPcmllbnRhdGlvbkNoYW5nZShEZXZpY2VPcmllbnRhdGlv
biogb3JpZW50YXRpb24pCit7CisgICAgUmVmUHRyPERldmljZU9yaWVudGF0aW9uRXZlbnQ+IGV2
ZW50ID0gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kZXZpY2Vv
cmllbnRhdGlvbkV2ZW50LCBvcmllbnRhdGlvbik7CisgICAgVmVjdG9yPERPTVdpbmRvdyo+IGxp
c3RlbmVyc1ZlY3RvcjsKKyAgICBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMsIGxpc3RlbmVyc1Zl
Y3Rvcik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0ZW5lcnNWZWN0b3Iuc2l6ZSgp
OyArK2kpCisgICAgICAgIGxpc3RlbmVyc1ZlY3RvcltpXS0+ZGlzcGF0Y2hFdmVudChldmVudCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0RldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiA2MzE5MykKKysrIFdlYkNvcmUvZG9tL0Rl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwx
MiBAQAogI2lmbmRlZiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJfaAogI2RlZmluZSBEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXJfaAogCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRGV2aWNlT3JpZW50YXRpb247CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNs
YXNzIFBhZ2U7CiAKQEAgLTM1LDEzICszOSwxNyBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIgewogcHVibGljOgogICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihQYWdl
KiwgRGV2aWNlT3JpZW50YXRpb25DbGllbnQqKTsKIAotICAgIC8vIEZJWE1FOiBBZGQgbWV0aG9k
cyB0byBzdGFydCBhbmQgc3RvcCB0aGUgc2VydmljZS4KKyAgICB2b2lkIGFkZExpc3RlbmVyKERP
TVdpbmRvdyopOworICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoRE9NV2luZG93Kik7CisgICAgdm9p
ZCByZW1vdmVBbGxMaXN0ZW5lcnMoRE9NV2luZG93Kik7CiAKLSAgICB2b2lkIG9uRGV2aWNlT3Jp
ZW50YXRpb25DaGFuZ2UoZG91YmxlIGFscGhhLCBkb3VibGUgYmV0YSwgZG91YmxlIGdhbW1hKTsK
KyAgICB2b2lkIG9uRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoRGV2aWNlT3JpZW50YXRpb24qKTsK
IAogcHJpdmF0ZToKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgRGV2aWNlT3JpZW50YXRpb25DbGll
bnQqIG1fY2xpZW50OworICAgIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8RE9NV2luZG93Kj4gTGlz
dGVuZXJzU2V0OworICAgIExpc3RlbmVyc1NldCBtX2xpc3RlbmVyczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiA2MzE5MykKKysrIFdl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTIg
QEAKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ29uc29sZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiRGF0
YWJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbmNs
dWRlICJET01TZWxlY3Rpb24uaCIKICNpbmNsdWRlICJET01UaW1lci5oIgorI2luY2x1ZGUgIkRh
dGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgorI2luY2x1ZGUgIkRldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBhZ2VUcmFuc2l0aW9uRXZlbnQu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKQEAgLTE0MTAs
NiArMTQxMSwxMCBAQCBib29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBCiAg
ICAgICAgIGFkZFVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7CiAgICAgZWxzZSBpZiAoZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxvYWRFdmVudCAmJiBhbGxvd3NCZWZvcmVVbmxv
YWRMaXN0ZW5lcnModGhpcykpCiAgICAgICAgIGFkZEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIo
dGhpcyk7CisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyAgICBlbHNlIGlmIChldmVu
dFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW9yaWVudGF0aW9uRXZlbnQgJiYgZnJhbWUoKSAm
JiBmcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIGZyYW1lKCktPnBhZ2UoKS0+ZGV2aWNlT3JpZW50
YXRpb24oKS0+YWRkTGlzdGVuZXIodGhpcyk7CisjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMTQyMyw2ICsxNDI4LDEwIEBAIGJvb2wgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnMKICAgICAgICAgcmVtb3ZlVW5sb2FkRXZlbnRMaXN0ZW5lcih0aGlzKTsKICAgICBl
bHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZXVubG9hZEV2ZW50ICYmIGFs
bG93c0JlZm9yZVVubG9hZExpc3RlbmVycyh0aGlzKSkKICAgICAgICAgcmVtb3ZlQmVmb3JlVW5s
b2FkRXZlbnRMaXN0ZW5lcih0aGlzKTsKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQor
ICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlb3JpZW50YXRpb25F
dmVudCAmJiBmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKSkKKyAgICAgICAgZnJhbWUoKS0+cGFn
ZSgpLT5kZXZpY2VPcmllbnRhdGlvbigpLT5yZW1vdmVMaXN0ZW5lcih0aGlzKTsKKyNlbmRpZgog
CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNDk3LDYgKzE1MDYsMTEgQEAgdm9pZCBET01XaW5k
b3c6OnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKAogewogICAgIEV2ZW50VGFyZ2V0OjpyZW1vdmVB
bGxFdmVudExpc3RlbmVycygpOwogCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyAg
ICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIGZyYW1lKCktPnBhZ2Uo
KS0+ZGV2aWNlT3JpZW50YXRpb24oKS0+cmVtb3ZlQWxsTGlzdGVuZXJzKHRoaXMpOworI2VuZGlm
CisKICAgICByZW1vdmVBbGxVbmxvYWRFdmVudExpc3RlbmVycyh0aGlzKTsKICAgICByZW1vdmVB
bGxCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyh0aGlzKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61370</attachid>
            <date>2010-07-13 07:12:59 -0700</date>
            <delta_ts>2010-07-14 05:55:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39588-20100713151256.patch</filename>
            <type>text/plain</type>
            <size>7690</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzE5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDctMTMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFByb3ZpZGUgaW1wbGVtZW50YXRpb24gb2YgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyIGFu
ZCBob29rIGludG8gRE9NV2luZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTU4OAorCisgICAgICAgIEFkZGVkIERldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcjo6YWRkTGlzdGVuZXIoKSBhbmQgcmVtb3ZlTGlzdGVuZXIoKQorICAgICAgICB0byBz
dGFydCBhbmQgc3RvcCB0aGUgY2xpZW50IGFuZCBhZGRlZCBjYWxscyBmcm9tIERvbVdpbmRvdy4g
SW1wbGVtZW50ZWQKKyAgICAgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpvbkRldmlj
ZU9yaWVudGF0aW9uQ2hhbmdlKCkgdG8gZmlyZSBhCisgICAgICAgIERldmljZU9yaWVudGF0aW9u
RXZlbnQgb24gdGhlIHdpbmRvdyBvYmplY3QuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHlldCwg
cGVuZGluZyBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIGZvciBtb2NrIERldmljZU9yaWVu
dGF0aW9uLgorCisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEZXZpY2VPcmllbnRhdGlvbjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb246OnJlbW92ZUxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
dmljZU9yaWVudGF0aW9uOjpyZW1vdmVBbGxMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpvbkRldmljZU9yaWVudGF0aW9uQ2hhbmdlKToK
KyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjphZGRFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnJlbW92ZUFsbEV2ZW50TGlzdGVu
ZXJzKToKKwogMjAxMC0wNy0xMiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFdlYkNv
cmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24gNjMxOTMpCisrKyBXZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCAr
MjgsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEZXZpY2VPcmllbnRhdGlv
bjsKKwogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRp
bmcoKSA9IDA7CisgICAgdmlydHVhbCBEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9u
KCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+RGV2aWNlT3JpZW50YXRp
b25DbGllbnQoKSB7fQpJbmRleDogV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiA2MzE5MykKKysrIFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lm
IEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlv
bi5oIgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGV2
aWNlT3JpZW50YXRpb25FdmVudC5oIgotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDEzICs0MCw0OSBAQCBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI6OkRldmljZU9yaWVuCiB7CiB9CiAKLXZvaWQgRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOjpvbkRldmljZU9yaWVudGF0aW9uQ2hhbmdlKGRvdWJsZSBhbHBoYSwgZG91Ymxl
IGJldGEsIGRvdWJsZSBnYW1tYSkKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjph
ZGRMaXN0ZW5lcihET01XaW5kb3cqIHdpbmRvdykKIHsKLSAgICAvLyBGSVhNRTogRmlyZSBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50cyBvbiB0aGUgd2luZG93IG9iamVjdCBvZiBhbGwgZnJhbWVzCi0g
ICAgLy8gdGhhdCBhcmUgbGlzdGVuaW5nIHRvIG9yaWVudGF0aW9uLgotICAgIFVOVVNFRF9QQVJB
TShhbHBoYSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJldGEpOwotICAgIFVOVVNFRF9QQVJBTShnYW1t
YSk7CisgICAgLy8gSWYgbm8gY2xpZW50IGlzIHByZXNlbnQsIHNpZ25hbCB0aGF0IG5vIG9yaWVu
dGF0aW9uIGRhdGEgaXMgYXZhaWxhYmxlLgorICAgIC8vIElmIHRoZSBjbGllbnQgYWxyZWFkeSBo
YXMgYW4gb3JpZW50YXRpb24sIGNhbGwgYmFjayB0byB0aGlzIG5ldyBsaXN0ZW5lcgorICAgIC8v
IGltbWVkaWF0ZWx5LgorICAgIGlmICghbV9jbGllbnQpIHsKKyAgICAgICAgUmVmUHRyPERldmlj
ZU9yaWVudGF0aW9uPiBlbXB0eU9yaWVudGF0aW9uID0gRGV2aWNlT3JpZW50YXRpb246OmNyZWF0
ZSgpOworICAgICAgICB3aW5kb3ctPmRpc3BhdGNoRXZlbnQoRGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kZXZpY2VvcmllbnRhdGlvbkV2ZW50LCBlbXB0eU9yaWVu
dGF0aW9uLmdldCgpKSk7CisgICAgfSBlbHNlIGlmIChtX2NsaWVudCAmJiBtX2NsaWVudC0+bGFz
dE9yaWVudGF0aW9uKCkpCisgICAgICAgIHdpbmRvdy0+ZGlzcGF0Y2hFdmVudChEZXZpY2VPcmll
bnRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRldmljZW9yaWVudGF0aW9uRXZlbnQs
IG1fY2xpZW50LT5sYXN0T3JpZW50YXRpb24oKSkpOworCisgICAgLy8gVGhlIGNsaWVudCBtYXkg
Y2FsbCBiYWNrIHN5bmNocm9ub3VzbHkuCisgICAgYm9vbCB3YXNFbXB0eSA9IG1fbGlzdGVuZXJz
LmlzRW1wdHkoKTsKKyAgICBtX2xpc3RlbmVycy5hZGQod2luZG93KTsKKyAgICBpZiAod2FzRW1w
dHkgJiYgbV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zdGFydFVwZGF0aW5nKCk7Cit9CisK
K3ZvaWQgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpyZW1vdmVMaXN0ZW5lcihET01XaW5k
b3cqIHdpbmRvdykKK3sKKyAgICBtX2xpc3RlbmVycy5yZW1vdmUod2luZG93KTsKKyAgICBpZiAo
bV9saXN0ZW5lcnMuaXNFbXB0eSgpICYmIG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c3Rv
cFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpyZW1v
dmVBbGxMaXN0ZW5lcnMoRE9NV2luZG93KiB3aW5kb3cpCit7CisgICAgLy8gTWF5IGJlIGNhbGxl
ZCB3aXRoIGEgRE9NV2luZG93IHRoYXQncyBub3QgYSBsaXN0ZW5lci4KKyAgICBpZiAoIW1fbGlz
dGVuZXJzLmNvbnRhaW5zKHdpbmRvdykpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGlzdGVu
ZXJzLnJlbW92ZUFsbCh3aW5kb3cpOworICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkgJiYg
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zdG9wVXBkYXRpbmcoKTsKK30KKwordm9pZCBE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6Om9uRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoRGV2
aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9uKQoreworICAgIFJlZlB0cjxEZXZpY2VPcmllbnRh
dGlvbkV2ZW50PiBldmVudCA9IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuZGV2aWNlb3JpZW50YXRpb25FdmVudCwgb3JpZW50YXRpb24pOworICAgIFZlY3RvcjxE
T01XaW5kb3cqPiBsaXN0ZW5lcnNWZWN0b3I7CisgICAgY29weVRvVmVjdG9yKG1fbGlzdGVuZXJz
LCBsaXN0ZW5lcnNWZWN0b3IpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdGVuZXJz
VmVjdG9yLnNpemUoKTsgKytpKQorICAgICAgICBsaXN0ZW5lcnNWZWN0b3JbaV0tPmRpc3BhdGNo
RXZlbnQoZXZlbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gNjMxOTMpCisrKyBX
ZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsOCArMjYsMTIgQEAKICNpZm5kZWYgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyX2gK
ICNkZWZpbmUgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyX2gKIAorI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIERldmljZU9yaWVudGF0aW9uOwogY2xhc3MgRGV2aWNlT3JpZW50YXRp
b25DbGllbnQ7CiBjbGFzcyBQYWdlOwogCkBAIC0zNSwxMyArMzksMTcgQEAgY2xhc3MgRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyIHsKIHB1YmxpYzoKICAgICBEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIoUGFnZSosIERldmljZU9yaWVudGF0aW9uQ2xpZW50Kik7CiAKLSAgICAvLyBGSVhN
RTogQWRkIG1ldGhvZHMgdG8gc3RhcnQgYW5kIHN0b3AgdGhlIHNlcnZpY2UuCisgICAgdm9pZCBh
ZGRMaXN0ZW5lcihET01XaW5kb3cqKTsKKyAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKERPTVdpbmRv
dyopOworICAgIHZvaWQgcmVtb3ZlQWxsTGlzdGVuZXJzKERPTVdpbmRvdyopOwogCi0gICAgdm9p
ZCBvbkRldmljZU9yaWVudGF0aW9uQ2hhbmdlKGRvdWJsZSBhbHBoYSwgZG91YmxlIGJldGEsIGRv
dWJsZSBnYW1tYSk7CisgICAgdm9pZCBvbkRldmljZU9yaWVudGF0aW9uQ2hhbmdlKERldmljZU9y
aWVudGF0aW9uKik7CiAKIHByaXZhdGU6CiAgICAgUGFnZSogbV9wYWdlOwogICAgIERldmljZU9y
aWVudGF0aW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PERP
TVdpbmRvdyo+IExpc3RlbmVyc1NldDsKKyAgICBMaXN0ZW5lcnNTZXQgbV9saXN0ZW5lcnM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24g
NjMxOTMpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsMTEgKzM1LDEyIEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKLSNpbmNsdWRlICJEYXRhYmFzZS5oIgot
I2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNh
Y2hlLmgiCiAjaW5jbHVkZSAiRE9NU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlVHJh
bnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50
LmgiCkBAIC0xNDEwLDYgKzE0MTEsMTAgQEAgYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVu
ZXIoY29uc3QgQQogICAgICAgICBhZGRVbmxvYWRFdmVudExpc3RlbmVyKHRoaXMpOwogICAgIGVs
c2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JldW5sb2FkRXZlbnQgJiYgYWxs
b3dzQmVmb3JlVW5sb2FkTGlzdGVuZXJzKHRoaXMpKQogICAgICAgICBhZGRCZWZvcmVVbmxvYWRF
dmVudExpc3RlbmVyKHRoaXMpOworI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisgICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2VvcmllbnRhdGlvbkV2ZW50
ICYmIGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICBmcmFtZSgpLT5wYWdlKCkt
PmRldmljZU9yaWVudGF0aW9uKCktPmFkZExpc3RlbmVyKHRoaXMpOworI2VuZGlmCiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTE0MjMsNiArMTQyOCwxMCBAQCBib29sIERPTVdpbmRvdzo6cmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zCiAgICAgICAgIHJlbW92ZVVubG9hZEV2ZW50TGlzdGVuZXIo
dGhpcyk7CiAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxv
YWRFdmVudCAmJiBhbGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnModGhpcykpCiAgICAgICAgIHJl
bW92ZUJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7CisjaWYgRU5BQkxFKERFVklDRV9P
UklFTlRBVElPTikKKyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmlj
ZW9yaWVudGF0aW9uRXZlbnQgJiYgZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkpCisgICAgICAg
IGZyYW1lKCktPnBhZ2UoKS0+ZGV2aWNlT3JpZW50YXRpb24oKS0+cmVtb3ZlTGlzdGVuZXIodGhp
cyk7CisjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTQ5Nyw2ICsxNTA2LDExIEBA
IHZvaWQgRE9NV2luZG93OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygKIHsKICAgICBFdmVudFRh
cmdldDo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKIAorI2lmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pCisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICBm
cmFtZSgpLT5wYWdlKCktPmRldmljZU9yaWVudGF0aW9uKCktPnJlbW92ZUFsbExpc3RlbmVycyh0
aGlzKTsKKyNlbmRpZgorCiAgICAgcmVtb3ZlQWxsVW5sb2FkRXZlbnRMaXN0ZW5lcnModGhpcyk7
CiAgICAgcmVtb3ZlQWxsQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnModGhpcyk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>