mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
IOMMU Fixes for Linux v5.9-rc5
Two fixes for the AMD IOMMU driver: - Fix a potential NULL-ptr dereference found by smatch - Fix interrupt remapping when a device is assigned to a guest and AVIC is enabled. -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEr9jSbILcajRFYWYyK/BELZcBGuMFAl9kyyMACgkQK/BELZcB GuP7DxAAwAI1KbHUQCJC7pbxpl6w/oTZ/AZeKP2v+2ULuMsZEUPyBEM9GsHi1caV 7KJI95LqHm+2kky2pHvNZn5EblfjX7SBdbaLcoCaYpRl17FctE/cJJCTYp+dHR3q TaTFiMUhLTx4mgTNBJ5SynAVM6kPV3sPT4x5Kz8OowufmYZFxI9c4zx76vVl5gjT WD/2R23wADMYbFqW90Ct3ltSUWmyn0iimv7gRe/Zh2dtjYmDqjMMHlfMj1HAONXk /KyRywKbnSLFbaFCR4jtSVqtrodAQUoqAzg8jqcfmOL9t/k0N9tteJW0gDAGD7Uu evjl+zciR9Me7uJQv1xXE1+8kyyDZV5WMlRTR3ChWWdsPDvyd5TR9aMt1PP2Mn/0 AxAGkIvCgmKb3SpM4AI3BtvXo/+NhZs+s07k4UAVQibkXPE82GhyPktyleSrEQiL qnOmo9i/1q53P1Pv8UI5PQovtATvRPq5SzUgAN3wi9n8RtiEmnJ7v9R3NGcdvMwy LV+X9sVSjmYt3cOfGBA0sJJjrlgDQsYM3P7kmidL8I5lzZ9TzFIcDkAf1t1oSmQI cCY4BR8kjenn6OmxABrnLc9cpr3QV3BcqOcoin0BkaBaY3KNUOgbsQHaLbxUBiQv kT05susDwN0u81ERBOcpzw08xFZsRJ6omGQ4ygvO+N9fHcpaHVs= =1jaf -----END PGP SIGNATURE----- Merge tag 'iommu-fixes-v5.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu Pull iommu fixes from Joerg Roedel: "Two fixes for the AMD IOMMU driver: - Fix a potential NULL-ptr dereference found by smatch - Fix interrupt remapping when a device is assigned to a guest and AVIC is enabled" * tag 'iommu-fixes-v5.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: iommu/amd: Restore IRTE.RemapEn bit for amd_iommu_activate_guest_mode iommu/amd: Fix potential @entry null deref
This commit is contained in:
commit
1fd79656f7
@ -3840,14 +3840,18 @@ int amd_iommu_activate_guest_mode(void *data)
|
||||
{
|
||||
struct amd_ir_data *ir_data = (struct amd_ir_data *)data;
|
||||
struct irte_ga *entry = (struct irte_ga *) ir_data->entry;
|
||||
u64 valid;
|
||||
|
||||
if (!AMD_IOMMU_GUEST_IR_VAPIC(amd_iommu_guest_ir) ||
|
||||
!entry || entry->lo.fields_vapic.guest_mode)
|
||||
return 0;
|
||||
|
||||
valid = entry->lo.fields_vapic.valid;
|
||||
|
||||
entry->lo.val = 0;
|
||||
entry->hi.val = 0;
|
||||
|
||||
entry->lo.fields_vapic.valid = valid;
|
||||
entry->lo.fields_vapic.guest_mode = 1;
|
||||
entry->lo.fields_vapic.ga_log_intr = 1;
|
||||
entry->hi.fields.ga_root_ptr = ir_data->ga_root_ptr;
|
||||
@ -3864,12 +3868,14 @@ int amd_iommu_deactivate_guest_mode(void *data)
|
||||
struct amd_ir_data *ir_data = (struct amd_ir_data *)data;
|
||||
struct irte_ga *entry = (struct irte_ga *) ir_data->entry;
|
||||
struct irq_cfg *cfg = ir_data->cfg;
|
||||
u64 valid = entry->lo.fields_remap.valid;
|
||||
u64 valid;
|
||||
|
||||
if (!AMD_IOMMU_GUEST_IR_VAPIC(amd_iommu_guest_ir) ||
|
||||
!entry || !entry->lo.fields_vapic.guest_mode)
|
||||
return 0;
|
||||
|
||||
valid = entry->lo.fields_remap.valid;
|
||||
|
||||
entry->lo.val = 0;
|
||||
entry->hi.val = 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user