1. 27 Oct, 2023 1 commit
  2. 25 Oct, 2023 7 commits
  3. 23 Oct, 2023 1 commit
    • Justin Stitt's avatar
      platform/x86: thinkpad_acpi: replace deprecated strncpy with memcpy · 942a4a61
      Justin Stitt authored
      strncpy() is deprecated for use on NUL-terminated destination strings
      [1] and as such we should prefer more robust and less ambiguous
      interfaces.
      
      We expect ec_fw_string to be NUL-terminated based on its use with format
      strings in thinkpad_acpi.c:
      11241 | pr_notice("ThinkPad firmware release %s doesn't match the known patterns\n",
      11242 |     ec_fw_string);
      
      Moreover, NUL-padding is not required since ec_fw_string is explicitly
      zero-initialized:
      11185 | char ec_fw_string[18] = {0};
      
      When carefully copying bytes from one buffer to another in
      pre-determined blocks (like what's happening here with dmi_data):
      
      |       static void find_new_ec_fwstr(const struct dmi_header *dm, void *private)
      |       {
      |       	char *ec_fw_string = (char *) private;
      |       	const char *dmi_data = (const char *)dm;
      |       	/*
      |       	 * ThinkPad Embedded Controller Program Table on newer models
      |       	 *
      |       	 * Offset |  Name                | Width  | Description
      |       	 * ----------------------------------------------------
      |       	 *  0x00  | Type                 | BYTE   | 0x8C
      |       	 *  0x01  | Length               | BYTE   |
      |       	 *  0x02  | Handle               | WORD   | Varies
      |       	 *  0x04  | Signature            | BYTEx6 | ASCII for "LENOVO"
      |       	 *  0x0A  | OEM struct offset    | BYTE   | 0x0B
      |       	 *  0x0B  | OEM struct number    | BYTE   | 0x07, for this structure
      |       	 *  0x0C  | OEM struct revision  | BYTE   | 0x01, for this format
      |       	 *  0x0D  | ECP version ID       | STR ID |
      |       	 *  0x0E  | ECP release date     | STR ID |
      |       	 */
      |
      |       	/* Return if data structure not match */
      |       	if (dm->type != 140 || dm->length < 0x0F ||
      |       	memcmp(dmi_data + 4, "LENOVO", 6) != 0 ||
      |       	dmi_data[0x0A] != 0x0B || dmi_data[0x0B] != 0x07 ||
      |       	dmi_data[0x0C] != 0x01)
      |       		return;
      |
      |       	/* fwstr is the first 8byte string  */
      |       	strncpy(ec_fw_string, dmi_data + 0x0F, 8);
      
      ... we shouldn't be using a C string api. Let's instead use memcpy() as
      this more properly relays the intended behavior.
      
      Do note that ec_fw_string will still end up being NUL-terminated since
      we are memcpy'ing only 8 bytes into a buffer full of 18 zeroes. There's
      still some trailing NUL-bytes there. To ensure this behavior, let's add
      a BUILD_BUG_ON checking the length leaves space for at least one
      trailing NUL-byte.
      
      Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings [1]
      Link: https://github.com/KSPP/linux/issues/90
      Cc: Kees Cook <keescook@chromium.org>
      Signed-off-by: default avatarJustin Stitt <justinstitt@google.com>
      Reviewed-by: default avatarMark Pearson <mpearson-lenovo@squebb.ca>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Link: https://lore.kernel.org/r/20231020-strncpy-drivers-platform-x86-thinkpad_acpi-c-v1-1-312f2e33034f@google.comReviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
      Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
      942a4a61
  4. 18 Oct, 2023 1 commit
    • Ilpo Järvinen's avatar
      Merge remote-tracking branch 'intel-speed-select/intel-sst' into review-ilpo · e485c7a1
      Ilpo Järvinen authored
      Summary of changes:
      - CPU 0 hotplug support is deprecated in the upstream kernel. This
        causes failures during level change for several customers. So, add a
        silent workaround to use Cgroup v2, without user option.
      - Increase number of CPUs in a single request
      - Fix turbo mode enable/disable issue
      - Error handling for invalid input options
      e485c7a1
  5. 17 Oct, 2023 9 commits
  6. 12 Oct, 2023 8 commits
  7. 09 Oct, 2023 2 commits
  8. 06 Oct, 2023 11 commits