iommu/vt-d: Fix crash on boot when DMAR is disabled
By default CONFIG_INTEL_IOMMU_DEFAULT_ON is not set and thus dmar_disabled variable is set. Intel IOMMU driver based on above doesn't set intel_iommu_enabled variable. The commitb0119e8708("iommu: Introduce new 'struct iommu_device'") mistakenly assumes it never happens and tries to unregister not ever registered resources, which crashes the kernel at boot time: BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 IP: iommu_device_unregister+0x31/0x60 Make unregister procedure conditional in free_iommu(). Fixes:b0119e8708("iommu: Introduce new 'struct iommu_device'") Cc: Joerg Roedel <jroedel@suse.de> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
		
							parent
							
								
									ebb4949eb3
								
							
						
					
					
						commit
						c37a01779b
					
				| @ -1108,8 +1108,10 @@ error: | ||||
| 
 | ||||
| static void free_iommu(struct intel_iommu *iommu) | ||||
| { | ||||
| 	iommu_device_sysfs_remove(&iommu->iommu); | ||||
| 	iommu_device_unregister(&iommu->iommu); | ||||
| 	if (intel_iommu_enabled) { | ||||
| 		iommu_device_unregister(&iommu->iommu); | ||||
| 		iommu_device_sysfs_remove(&iommu->iommu); | ||||
| 	} | ||||
| 
 | ||||
| 	if (iommu->irq) { | ||||
| 		if (iommu->pr_irq) { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user