platform/x86/intel/vsec: remove platform_info from vsec device structure
authorDavid E. Box <david.e.box@linux.intel.com>
Wed, 29 Nov 2023 22:21:16 +0000 (14:21 -0800)
committerHans de Goede <hdegoede@redhat.com>
Mon, 4 Dec 2023 13:53:29 +0000 (14:53 +0100)
In preparation for exporting an API to register Intel Vendor Specific
Extended Capabilities (VSEC) from other drivers, remove the pointer to
platform_info from intel_vsec_device. This prevents a potential page fault
when auxiliary drivers probe and attempt to dereference this pointer to
access the needed quirks field. Instead, just add the quirks to
intel_vsec_device.

Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20231129222132.2331261-5-david.e.box@linux.intel.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/intel/pmt/class.c
drivers/platform/x86/intel/vsec.c
drivers/platform/x86/intel/vsec.h

index f32a233470deabe89d5f279ceda23a256fb23dc9..2ad91d2fd95405b675d43b0e27736ee732b5c037 100644 (file)
@@ -31,7 +31,7 @@ bool intel_pmt_is_early_client_hw(struct device *dev)
         * differences from the server platforms (which use the Out Of Band
         * Management Services Module OOBMSM).
         */
-       return !!(ivdev->info->quirks & VSEC_QUIRK_EARLY_HW);
+       return !!(ivdev->quirks & VSEC_QUIRK_EARLY_HW);
 }
 EXPORT_SYMBOL_NS_GPL(intel_pmt_is_early_client_hw, INTEL_PMT);
 
index 4dc490fd4a5b5e50d3acaf72c33d585f68934e31..bcdc727c4cc36c8cd30bf3febd75d58ce473be9f 100644 (file)
@@ -194,7 +194,7 @@ static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_header *he
        intel_vsec_dev->pcidev = pdev;
        intel_vsec_dev->resource = res;
        intel_vsec_dev->num_resources = header->num_entries;
-       intel_vsec_dev->info = info;
+       intel_vsec_dev->quirks = info->quirks;
 
        if (header->id == VSEC_ID_SDSI)
                intel_vsec_dev->ida = &intel_vsec_sdsi_ida;
index c242c07ea69ce9cb002262f22647d352a7a5baec..8b9fad1705035bdf379c3fa4bb0e314d4c49776c 100644 (file)
@@ -79,11 +79,11 @@ struct intel_vsec_device {
        struct pci_dev *pcidev;
        struct resource *resource;
        struct ida *ida;
-       struct intel_vsec_platform_info *info;
        int num_resources;
        int id; /* xa */
        void *priv_data;
        size_t priv_data_size;
+       unsigned long quirks;
 };
 
 int intel_vsec_add_aux(struct pci_dev *pdev, struct device *parent,