diff options
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lpe_audio.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_lpe_audio.c b/drivers/gpu/drm/i915/intel_lpe_audio.c index d8ca187ae001..25d8e76489e4 100644 --- a/drivers/gpu/drm/i915/intel_lpe_audio.c +++ b/drivers/gpu/drm/i915/intel_lpe_audio.c | |||
| @@ -131,8 +131,15 @@ err: | |||
| 131 | 131 | ||
| 132 | static void lpe_audio_platdev_destroy(struct drm_i915_private *dev_priv) | 132 | static void lpe_audio_platdev_destroy(struct drm_i915_private *dev_priv) |
| 133 | { | 133 | { |
| 134 | /* XXX Note that platform_device_register_full() allocates a dma_mask | ||
| 135 | * and never frees it. We can't free it here as we cannot guarantee | ||
| 136 | * this is the last reference (i.e. that the dma_mask will not be | ||
| 137 | * used after our unregister). So ee choose to leak the sizeof(u64) | ||
| 138 | * allocation here - it should be fixed in the platform_device rather | ||
| 139 | * than us fiddle with its internals. | ||
| 140 | */ | ||
| 141 | |||
| 134 | platform_device_unregister(dev_priv->lpe_audio.platdev); | 142 | platform_device_unregister(dev_priv->lpe_audio.platdev); |
| 135 | kfree(dev_priv->lpe_audio.platdev->dev.dma_mask); | ||
| 136 | } | 143 | } |
| 137 | 144 | ||
| 138 | static void lpe_audio_irq_unmask(struct irq_data *d) | 145 | static void lpe_audio_irq_unmask(struct irq_data *d) |
