On Fri, 04 Dec 2015 14:07:03 +0100, Ville Syrjälä wrote:
On Fri, Dec 04, 2015 at 01:54:56PM +0100, Takashi Iwai wrote:
On Fri, 04 Dec 2015 13:16:46 +0100, Ville Syrjälä wrote:
On Tue, Dec 01, 2015 at 05:09:50PM +0100, Takashi Iwai wrote:
to_intel_crtc() always returns a non-NULL pointer.
Eh? to_intel_crtc(NULL) should return NULL or we might have tons of breakage on our hands. Or maybe the atomic work has gotten rid of that assumption, but at least we used to depend on that heavily.
Well, to_intel_crtc() has been always container_of() since the very beginning of universe:
commit 79e539453b34e35f39299a899d263b0a1f1670bd Author: Jesse Barnes jbarnes@virtuousgeek.org Date: Fri Nov 7 14:24:08 2008 -0800
DRM: i915: add mode setting support
--- /dev/null +++ b/drivers/gpu/drm/i915/intel_drv.h .... +#define to_intel_crtc(x) container_of(x, struct intel_crtc, base) ....
Yes, but struct intel_crtc { struct drm_crtc base; ... }
So offsetof(struct intel_crtc, base)==0 and NULL-0 is still NULL.
I once suggested that someone should add a compile time assert to make sure this always holds for us, but no one took the bait.
Argh, only from the usage of container_of(), no one expects this implicit assumption :-< Indeed intel code has lots of these silent rules, e.g. calling kfree() for the base class object.
Daniel, could you please take my patch back?
thanks,
Takashi
Takashi
Signed-off-by: Takashi Iwai tiwai@suse.de
drivers/gpu/drm/i915/intel_audio.c | 4 ---- 1 file changed, 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c index 4dccd9b003a1..0c38cc6c82ae 100644 --- a/drivers/gpu/drm/i915/intel_audio.c +++ b/drivers/gpu/drm/i915/intel_audio.c @@ -656,10 +656,6 @@ static int i915_audio_component_sync_audio_rate(struct device *dev, intel_dig_port = enc_to_dig_port(&intel_encoder->base); if (port == intel_dig_port->port) { crtc = to_intel_crtc(intel_encoder->base.crtc);
if (!crtc) {
DRM_DEBUG_KMS("%s: crtc is NULL\n", __func__);
continue;
}} pipe = crtc->pipe; break;
-- 2.6.3
-- Ville Syrjälä Intel OTC
-- Ville Syrjälä Intel OTC