<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED - Kernel "NULL pointer dereference" with MST monitor on HSW"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=97666#c34">Comment # 34</a>
              on <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED - Kernel "NULL pointer dereference" with MST monitor on HSW"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=97666">bug 97666</a>
              from <span class="vcard"><a class="email" href="mailto:carlos.santa@intel.com" title="Carlos Santa <carlos.santa@intel.com>"> <span class="fn">Carlos Santa</span></a>
</span></b>
        <pre>(In reply to Ville Syrjala from <a href="show_bug.cgi?id=97666#c33">comment #33</a>)
<span class="quote">> (In reply to Carlos Santa from <a href="show_bug.cgi?id=97666#c32">comment #32</a>)
> > Hi Ville,
> > 
> > I tested the following 3 patches on today's drm-nightly:
> > 
> > 1. drm/i915: Refresh that status of MST capable connectors in ->detect()
> > 2. drm/fb-helper: Fix connector ref leak on error
> > 3. drm/fb-helper: Keep references for the current set of used connectors
> > 
> > You're right, after applying #1, the null pointer issue comes back but after
> > applying #2, and doing the display power on/off to repro the bug, the system
> > freezes and never comes back again. Same behavior if then applying patch #3
> > on top, which is supposed to be the fix.

> Freezes hard enough to not leave a trace in netconsole/serial etc. ? Logs
> would be nice.</span >

Ok, I got the log using dmesg -w. It's actually oopsing the same way as before,
see the <span class=""><a href="attachment.cgi?id=10" name="attach_10" title="sample code">attachment 10</a> <a href="attachment.cgi?id=10&action=edit" title="sample code">[details]</a></span>-21-2016.

More on the traces,

the "adapter" parameter being passed to i2c_transfer() from
drm_do_probe_ddc_edid()  although is not NULL it appears to arrive with invalid
data, the pointer that gets de-referenced is this one
"adapter->algo->master_xfer".

Adding more traces I was able to track the sequence to:

i2c_transfer()
drm_do_probe_ddc_edid()
drm_get_edid()
port->connector = (*mstb->mgr->cbs->add_connector)(mstb->mgr, port, proppath);
drm_dp_add_port(port->connector, &port->aux.ddc)
drm_dp_send_link_address()

The port->connector is what gets passed to drm_get_edid() as a reference, I am
guessing that this "port" somehow is becoming invalid from within
intel_dp_add_mst_connector().</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>