linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Tony Luck <tony.luck@intel.com>
Cc: hdegoede@redhat.com, markgross@kernel.org, tglx@linutronix.de,
	mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com,
	x86@kernel.org, hpa@zytor.com, corbet@lwn.net,
	andriy.shevchenko@linux.intel.com, jithu.joseph@intel.com,
	ashok.raj@intel.com, rostedt@goodmis.org,
	dan.j.williams@intel.com, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org, platform-driver-x86@vger.kernel.org,
	patches@lists.linux.dev, ravi.v.shankar@intel.com
Subject: Re: [PATCH v3 06/11] platform/x86/intel/ifs: Check IFS Image sanity
Date: Tue, 19 Apr 2022 19:16:13 +0200	[thread overview]
Message-ID: <Yl7uXZW+dFcEXMFM@kroah.com> (raw)
In-Reply-To: <20220419163859.2228874-7-tony.luck@intel.com>

On Tue, Apr 19, 2022 at 09:38:54AM -0700, Tony Luck wrote:
> From: Jithu Joseph <jithu.joseph@intel.com>
> 
> IFS image is designed specifically for a given family, model and
> stepping of the processor. Like Intel microcode header, the IFS image
> has the Processor Signature, Checksum and Processor Flags that must be
> matched with the information returned by the CPUID.
> 
> Reviewed-by: Dan Williams <dan.j.williams@intel.com>
> Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
> Co-developed-by: Tony Luck <tony.luck@intel.com>
> Signed-off-by: Tony Luck <tony.luck@intel.com>
> ---
>  drivers/platform/x86/intel/ifs/load.c | 69 +++++++++++++++++++++++++++
>  1 file changed, 69 insertions(+)
> 
> diff --git a/drivers/platform/x86/intel/ifs/load.c b/drivers/platform/x86/intel/ifs/load.c
> index fa6c64707a73..b05d9055c391 100644
> --- a/drivers/platform/x86/intel/ifs/load.c
> +++ b/drivers/platform/x86/intel/ifs/load.c
> @@ -3,9 +3,73 @@
>  
>  #include <linux/firmware.h>
>  #include <linux/platform_device.h>
> +#include <asm/cpu.h>
> +#include <asm/microcode_intel.h>
>  
>  static const char *ifs_path = "intel/ifs/";
>  
> +static int ifs_sanity_check(struct device *dev, void *mc)
> +{
> +	struct microcode_header_intel *mc_header = mc;
> +	unsigned long total_size, data_size;
> +	u32 sum, i;
> +
> +	total_size = get_totalsize(mc_header);
> +	data_size = get_datasize(mc_header);
> +
> +	if ((data_size + MC_HEADER_SIZE > total_size) || (total_size % sizeof(u32))) {
> +		dev_err(dev, "bad ifs data file size.\n");
> +		return -EINVAL;
> +	}
> +
> +	if (mc_header->ldrver != 1 || mc_header->hdrver != 1) {
> +		dev_err(dev, "invalid/unknown ifs update format.\n");
> +		return -EINVAL;
> +	}
> +
> +	sum = 0;
> +	i = total_size / sizeof(u32);
> +	while (i--)
> +		sum += ((u32 *)mc)[i];
> +
> +	if (sum) {
> +		dev_err(dev, "bad ifs data checksum, aborting.\n");
> +		return -EINVAL;
> +	}
> +
> +	return 0;
> +}
> +
> +static bool find_ifs_matching_signature(struct device *dev, struct ucode_cpu_info *uci, void *mc)
> +{
> +	struct microcode_header_intel *shdr;
> +	unsigned int mc_size;
> +
> +	shdr = (struct microcode_header_intel *)mc;
> +	mc_size = get_totalsize(shdr);
> +
> +	if (!mc_size || ifs_sanity_check(dev, shdr) < 0) {
> +		dev_err(dev, "ifs sanity check failure\n");
> +		return false;
> +	}
> +
> +	if (!intel_cpu_signatures_match(uci->cpu_sig.sig, uci->cpu_sig.pf, shdr->sig, shdr->pf)) {
> +		dev_err(dev, "ifs signature, pf not matching\n");
> +		return false;
> +	}
> +
> +	return true;
> +}
> +
> +static bool ifs_image_sanity_check(struct device *dev, void *data)

u8 *data?

> +{
> +	struct ucode_cpu_info uci;
> +
> +	intel_cpu_collect_info_early(&uci);
> +
> +	return find_ifs_matching_signature(dev, &uci, data);
> +}
> +
>  /*
>   * Load ifs image. Before loading ifs module, the ifs image must be located
>   * in /lib/firmware/intel/ifs and named as {family/model/stepping}.{testname}.
> @@ -25,6 +89,11 @@ int load_ifs_binary(struct device *dev)
>  		return ret;
>  	}
>  
> +	if (!ifs_image_sanity_check(dev, (void *)fw->data)) {

It's not a void pointer, it's a pointer to u8.  Why cast it away?

thanks,

greg k-h

  reply	other threads:[~2022-04-19 17:16 UTC|newest]

Thread overview: 152+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-07 19:13 [PATCH v2 00/10] Introduce In Field Scan driver Jithu Joseph
2022-04-07 19:13 ` [PATCH v2 01/10] x86/microcode/intel: expose collect_cpu_info_early() for IFS Jithu Joseph
2022-04-08  8:34   ` Borislav Petkov
2022-04-21 14:56     ` Thomas Gleixner
2022-04-07 19:13 ` [PATCH v2 02/10] Documentation: In-Field Scan Jithu Joseph
2022-04-07 19:13 ` [PATCH v2 03/10] platform/x86/intel/ifs: Add driver for " Jithu Joseph
2022-04-07 19:13 ` [PATCH v2 04/10] platform/x86/intel/ifs: Load IFS Image Jithu Joseph
2022-04-08  5:02   ` Greg KH
2022-04-08  5:04   ` Greg KH
2022-04-07 19:13 ` [PATCH v2 05/10] platform/x86/intel/ifs: Check IFS Image sanity Jithu Joseph
2022-04-07 19:13 ` [PATCH v2 06/10] platform/x86/intel/ifs: Authenticate and copy to secured memory Jithu Joseph
2022-04-07 19:13 ` [PATCH v2 07/10] platform/x86/intel/ifs: Add scan test support Jithu Joseph
2022-04-07 19:13 ` [PATCH v2 08/10] platform/x86/intel/ifs: Add IFS sysfs interface Jithu Joseph
2022-04-08  4:59   ` Greg KH
2022-04-07 19:13 ` [PATCH v2 09/10] platform/x86/intel/ifs: add ABI documentation for IFS Jithu Joseph
2022-04-08  5:02   ` Greg KH
2022-04-07 19:13 ` [PATCH v2 10/10] trace: platform/x86/intel/ifs: Add trace point to track Intel IFS operations Jithu Joseph
2022-04-19 16:38 ` [PATCH v3 00/11] Introduce In Field Scan driver Tony Luck
2022-04-19 16:38   ` [PATCH v3 01/11] x86/microcode/intel: Expose collect_cpu_info_early() for IFS Tony Luck
2022-04-19 16:38   ` [PATCH v3 02/11] Documentation: In-Field Scan Tony Luck
2022-04-19 16:48     ` Greg KH
2022-04-19 19:45       ` Dan Williams
2022-04-20  7:48         ` Greg KH
2022-04-19 16:38   ` [PATCH v3 03/11] platform/x86/intel/ifs: Create device for Intel IFS (In Field Scan) Tony Luck
2022-04-19 16:47     ` Greg KH
2022-04-19 18:09       ` Dan Williams
2022-04-19 22:28         ` Dan Williams
2022-04-20  7:49           ` Greg KH
2022-04-20  7:48         ` Greg KH
2022-04-20 15:27           ` Luck, Tony
2022-04-20 17:46             ` Greg KH
2022-04-20 17:57               ` Luck, Tony
2022-04-20 18:04                 ` Greg KH
2022-04-20 18:08                   ` Luck, Tony
2022-04-20 19:04                     ` Greg KH
2022-04-19 16:38   ` [PATCH v3 04/11] platform/x86/intel/ifs: Add stub driver for In-Field Scan Tony Luck
2022-04-19 16:38   ` [PATCH v3 05/11] platform/x86/intel/ifs: Read IFS firmware image Tony Luck
2022-04-19 17:14     ` Greg KH
2022-04-19 16:38   ` [PATCH v3 06/11] platform/x86/intel/ifs: Check IFS Image sanity Tony Luck
2022-04-19 17:16     ` Greg KH [this message]
2022-04-19 16:38   ` [PATCH v3 07/11] platform/x86/intel/ifs: Authenticate and copy to secured memory Tony Luck
2022-04-19 16:38   ` [PATCH v3 08/11] platform/x86/intel/ifs: Add scan test support Tony Luck
2022-04-19 16:38   ` [PATCH v3 09/11] platform/x86/intel/ifs: Add IFS sysfs interface Tony Luck
2022-04-19 17:20     ` Greg KH
2022-04-19 17:35       ` Luck, Tony
2022-04-19 17:58         ` Greg KH
2022-04-19 18:15           ` Dan Williams
2022-04-19 18:24       ` Dan Williams
2022-04-19 16:38   ` [PATCH v3 10/11] trace: platform/x86/intel/ifs: Add trace point to track Intel IFS operations Tony Luck
2022-04-20 23:38     ` Steven Rostedt
2022-04-21  4:26       ` Luck, Tony
2022-04-21 12:41         ` Steven Rostedt
2022-04-19 16:38   ` [PATCH v3 11/11] platform/x86/intel/ifs: add ABI documentation for IFS Tony Luck
2022-04-22 20:02   ` [PATCH v4 00/10] Introduce In Field Scan driver Tony Luck
2022-04-22 20:02     ` [PATCH v4 01/10] x86/microcode/intel: Expose collect_cpu_info_early() for IFS Tony Luck
2022-04-22 20:02     ` [PATCH v4 02/10] x86/msr-index: Define INTEGRITY_CAPABILITIES MSR Tony Luck
2022-04-22 20:02     ` [PATCH v4 03/10] platform/x86/intel/ifs: Add stub driver for In-Field Scan Tony Luck
2022-04-22 20:02     ` [PATCH v4 04/10] platform/x86/intel/ifs: Read IFS firmware image Tony Luck
2022-04-26 10:45       ` Greg KH
2022-04-26 16:12         ` Luck, Tony
2022-04-26 16:36           ` Greg KH
2022-04-26 18:47             ` Luck, Tony
2022-04-22 20:02     ` [PATCH v4 05/10] platform/x86/intel/ifs: Check IFS Image sanity Tony Luck
2022-04-22 20:02     ` [PATCH v4 06/10] platform/x86/intel/ifs: Authenticate and copy to secured memory Tony Luck
2022-04-22 20:02     ` [PATCH v4 07/10] platform/x86/intel/ifs: Add scan test support Tony Luck
2022-04-22 20:02     ` [PATCH v4 08/10] platform/x86/intel/ifs: Add IFS sysfs interface Tony Luck
2022-04-22 20:02     ` [PATCH v4 09/10] trace: platform/x86/intel/ifs: Add trace point to track Intel IFS operations Tony Luck
2022-04-25 14:52       ` Steven Rostedt
2022-04-25 16:49         ` Luck, Tony
2022-04-26  1:49           ` Steven Rostedt
2022-04-26 23:53             ` Luck, Tony
2022-04-27  2:42               ` Steven Rostedt
2022-04-22 20:02     ` [PATCH v4 10/10] platform/x86/intel/ifs: add ABI documentation for IFS Tony Luck
2022-04-28 15:38     ` [PATCH v5 00/10] Introduce In Field Scan driver Tony Luck
2022-04-28 15:38       ` [PATCH v5 01/10] x86/microcode/intel: Expose collect_cpu_info_early() for IFS Tony Luck
2022-05-03 15:29         ` Borislav Petkov
2022-05-04 10:28         ` Thomas Gleixner
2022-04-28 15:38       ` [PATCH v5 02/10] x86/msr-index: Define INTEGRITY_CAPABILITIES MSR Tony Luck
2022-04-28 15:38       ` [PATCH v5 03/10] platform/x86/intel/ifs: Add stub driver for In-Field Scan Tony Luck
2022-05-04 10:35         ` Thomas Gleixner
2022-05-04 16:24           ` Luck, Tony
2022-05-04 16:28             ` Borislav Petkov
2022-04-28 15:38       ` [PATCH v5 04/10] platform/x86/intel/ifs: Read IFS firmware image Tony Luck
2022-05-04 10:37         ` Thomas Gleixner
2022-05-04 16:49           ` Luck, Tony
2022-04-28 15:38       ` [PATCH v5 05/10] platform/x86/intel/ifs: Check IFS Image sanity Tony Luck
2022-04-28 15:38       ` [PATCH v5 06/10] platform/x86/intel/ifs: Authenticate and copy to secured memory Tony Luck
2022-05-04 10:48         ` Thomas Gleixner
2022-04-28 15:38       ` [PATCH v5 07/10] platform/x86/intel/ifs: Add scan test support Tony Luck
2022-05-04 12:29         ` Thomas Gleixner
2022-05-04 18:52           ` Luck, Tony
2022-05-04 23:15             ` Thomas Gleixner
2022-05-05  8:28               ` Peter Zijlstra
2022-05-05  9:01                 ` Thomas Gleixner
2022-05-05 18:32                   ` Luck, Tony
2022-05-05 20:21                     ` Peter Zijlstra
2022-04-28 15:38       ` [PATCH v5 08/10] platform/x86/intel/ifs: Add IFS sysfs interface Tony Luck
2022-04-28 15:38       ` [PATCH v5 09/10] trace: platform/x86/intel/ifs: Add trace point to track Intel IFS operations Tony Luck
2022-04-28 15:38       ` [PATCH v5 10/10] platform/x86/intel/ifs: add ABI documentation for IFS Tony Luck
2022-04-28 15:58       ` [PATCH v5 00/10] Introduce In Field Scan driver Greg KH
2022-04-28 16:07         ` Luck, Tony
2022-05-02 15:15       ` Hans de Goede
2022-05-02 17:23         ` Luck, Tony
2022-05-03 15:32         ` Borislav Petkov
2022-05-03 16:04           ` Luck, Tony
2022-05-03 16:26             ` Luck, Tony
2022-05-06 14:19           ` Hans de Goede
2022-05-06 15:53             ` Luck, Tony
2022-05-06 18:41               ` Hans de Goede
2022-05-09 17:05                 ` Luck, Tony
2022-05-09 18:12                   ` Hans de Goede
2022-05-06  1:40       ` [PATCH v6 00/11] " Tony Luck
2022-05-06  1:40         ` [PATCH v6 01/11] x86/microcode/intel: Expose collect_cpu_info_early() for IFS Tony Luck
2022-05-06  1:40         ` [PATCH v6 02/11] x86/msr-index: Define INTEGRITY_CAPABILITIES MSR Tony Luck
2022-05-06  8:19           ` Thomas Gleixner
2022-05-06  1:40         ` [PATCH v6 03/11] stop_machine: Add stop_core_cpuslocked() for per-core operations Tony Luck
2022-05-06  8:20           ` Thomas Gleixner
2022-05-06  1:40         ` [PATCH v6 04/11] platform/x86/intel/ifs: Add stub driver for In-Field Scan Tony Luck
2022-05-06  8:23           ` Thomas Gleixner
2022-05-06  1:40         ` [PATCH v6 05/11] platform/x86/intel/ifs: Read IFS firmware image Tony Luck
2022-05-06  1:40         ` [PATCH v6 06/11] platform/x86/intel/ifs: Check IFS Image sanity Tony Luck
2022-05-06  1:40         ` [PATCH v6 07/11] platform/x86/intel/ifs: Authenticate and copy to secured memory Tony Luck
2022-05-06  1:40         ` [PATCH v6 08/11] platform/x86/intel/ifs: Add scan test support Tony Luck
2022-05-06 13:30           ` Thomas Gleixner
2022-05-06 18:49             ` Luck, Tony
2022-05-06 19:06               ` Thomas Gleixner
2022-05-06  1:40         ` [PATCH v6 09/11] platform/x86/intel/ifs: Add IFS sysfs interface Tony Luck
2022-05-06  1:40         ` [PATCH v6 10/11] trace: platform/x86/intel/ifs: Add trace point to track Intel IFS operations Tony Luck
2022-05-06  1:40         ` [PATCH v6 11/11] platform/x86/intel/ifs: add ABI documentation for IFS Tony Luck
2022-05-06 22:53         ` [PATCH v7 00/12] Introduce In Field Scan driver Tony Luck
2022-05-06 22:53           ` [PATCH v7 01/12] x86/microcode/intel: Expose collect_cpu_info_early() for IFS Tony Luck
2022-05-06 22:54           ` [PATCH v7 02/12] x86/msr-index: Define INTEGRITY_CAPABILITIES MSR Tony Luck
2022-05-06 22:54           ` [PATCH v7 03/12] stop_machine: Add stop_core_cpuslocked() for per-core operations Tony Luck
2022-05-06 22:54           ` [PATCH v7 04/12] platform/x86/intel/ifs: Add stub driver for In-Field Scan Tony Luck
2022-05-06 22:54           ` [PATCH v7 05/12] platform/x86/intel/ifs: Read IFS firmware image Tony Luck
2022-05-09 12:11             ` Thomas Gleixner
2022-05-06 22:54           ` [PATCH v7 06/12] platform/x86/intel/ifs: Check IFS Image sanity Tony Luck
2022-05-09 12:11             ` Thomas Gleixner
2022-05-09 16:31             ` Borislav Petkov
2022-05-09 16:51               ` Luck, Tony
2022-05-09 16:56                 ` Borislav Petkov
2022-05-06 22:54           ` [PATCH v7 07/12] platform/x86/intel/ifs: Authenticate and copy to secured memory Tony Luck
2022-05-09 12:11             ` Thomas Gleixner
2022-05-06 22:54           ` [PATCH v7 08/12] platform/x86/intel/ifs: Add scan test support Tony Luck
2022-05-09 12:11             ` Thomas Gleixner
2022-05-06 22:54           ` [PATCH v7 09/12] platform/x86/intel/ifs: Add IFS sysfs interface Tony Luck
2022-05-09 12:12             ` Thomas Gleixner
2022-05-06 22:54           ` [PATCH v7 10/12] trace: platform/x86/intel/ifs: Add trace point to track Intel IFS operations Tony Luck
2022-05-06 22:54           ` [PATCH v7 11/12] platform/x86/intel/ifs: add ABI documentation for IFS Tony Luck
2022-05-06 22:54           ` [PATCH v7 12/12] Documentation: In-Field Scan Tony Luck
2022-05-09 12:16             ` Thomas Gleixner
2022-05-11 15:51           ` [PATCH v7 00/12] Introduce In Field Scan driver Hans de Goede

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Yl7uXZW+dFcEXMFM@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=ashok.raj@intel.com \
    --cc=bp@alien8.de \
    --cc=corbet@lwn.net \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=hdegoede@redhat.com \
    --cc=hpa@zytor.com \
    --cc=jithu.joseph@intel.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markgross@kernel.org \
    --cc=mingo@redhat.com \
    --cc=patches@lists.linux.dev \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=ravi.v.shankar@intel.com \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).