Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a72016a4 authored by Adrian Hunter's avatar Adrian Hunter Committed by Ulf Hansson
Browse files

mmc: sdhci-pci: Allow for 3 bytes from Intel DSM



The DSM used by some Intel controllers can return a 3 byte package. Allow
for that by using memcpy to copy the bytes.

Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 3fcc7834
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
 *     - JMicron (hardware and technical support)
 */

#include <linux/string.h>
#include <linux/delay.h>
#include <linux/highmem.h>
#include <linux/module.h>
@@ -413,6 +414,7 @@ static int __intel_dsm(struct intel_host *intel_host, struct device *dev,
{
	union acpi_object *obj;
	int err = 0;
	size_t len;

	obj = acpi_evaluate_dsm(ACPI_HANDLE(dev), intel_dsm_uuid, 0, fn, NULL);
	if (!obj)
@@ -423,12 +425,10 @@ static int __intel_dsm(struct intel_host *intel_host, struct device *dev,
		goto out;
	}

	if (obj->buffer.length >= 4)
		*result = *(u32 *)obj->buffer.pointer;
	else if (obj->buffer.length >= 2)
		*result = *(u16 *)obj->buffer.pointer;
	else
		*result = *(u8 *)obj->buffer.pointer;
	len = min_t(size_t, obj->buffer.length, 4);

	*result = 0;
	memcpy(result, obj->buffer.pointer, len);
out:
	ACPI_FREE(obj);