<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:chris@chris-wilson.co.uk" title="Chris Wilson <chris@chris-wilson.co.uk>"> <span class="fn">Chris Wilson</span></a>
</span> changed
              <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - [all]igt/drm_read subcases short-buffer-block and short-buffer-nonblock fail"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=87094">bug 87094</a>
          <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>RESOLVED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>---
           </td>
           <td>FIXED
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - [all]igt/drm_read subcases short-buffer-block and short-buffer-nonblock fail"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=87094#c3">Comment # 3</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - [all]igt/drm_read subcases short-buffer-block and short-buffer-nonblock fail"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=87094">bug 87094</a>
              from <span class="vcard"><a class="email" href="mailto:chris@chris-wilson.co.uk" title="Chris Wilson <chris@chris-wilson.co.uk>"> <span class="fn">Chris Wilson</span></a>
</span></b>
        <pre>Should be fixed now:

commit b710d754bd4f80be922c40d8c1231d20f8e55e09
Author: Chris Wilson <<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>>
Date:   Thu Dec 4 21:03:25 2014 +0000

    drm: Make drm_read() more robust against multithreaded races

    The current implementation of drm_read() faces a number of issues:

    1. Upon an error, it consumes the event which may lead to the client
    blocking.
    2. Upon an error, it forgets about events already copied
    3. If it fails to copy a single event with O_NONBLOCK it falls into a
    infinite loop of reporting EAGAIN.
    3. There is a race between multiple waiters and blocking reads of the
    events list.

    Here, we inline drm_dequeue_event() into drm_read() so that we can take
    the spinlock around the list walking and event copying, and importantly
    reorder the error handling to avoid the issues above.

    Cc: Takashi Iwai <<a href="mailto:tiwai@suse.de">tiwai@suse.de</a>>
    Signed-off-by: Chris Wilson <<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>>
    Reviewed-by: Takashi Iwai <<a href="mailto:tiwai@suse.de">tiwai@suse.de</a>>
    Testcase: igt/drm_read
    Signed-off-by: Daniel Vetter <<a href="mailto:daniel.vetter@ffwll.ch">daniel.vetter@ffwll.ch</a>></pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
          <li>You are on the CC list for the bug.</li>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>