On Wed, Oct 30, 2013 at 02:05:02PM -0200, Paulo Zanoni wrote:
2013/10/30 Thierry Reding thierry.reding@gmail.com:
device_unregister() already drops its reference to the struct device, so explicitly calling put_device() before device_unregister() can cause the device to have been freed before it can be unregistered.
Signed-off-by: Thierry Reding treding@nvidia.com
I started investigating this problem yesterday and reached the same conclusion. The connector path can be easily reproduced on i915.ko: get a machine that has an eDP panel, physically disconnect the panel, boot the machine, "modprobe i915" and watch the segfault.
Reviewed-by: Paulo Zanoni paulo.r.zanoni@intel.com Tested-by: Paulo Zanoni paulo.r.zanoni@intel.com
I didn't really bisect, but I believe this is probably a regression from "drm/sysfs: sort out minor and connector device object lifetimes".
Yes, I think that's the one that broke it.
Thierry