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

Commit b144ce2d authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

mei: fix up uuid matching



A previous commit, c93b76b3 ("mei: bus: report also uuid in module
alias") caused a build error as I missed applying a needed patch to add
some macros to uapi/linux/uuid.h.  Instead of those additional macros,
change the mei code to use the existing uuid structure directly.

Fixes: c93b76b3
Cc: Tomas Winkler <tomas.winkler@intel.com>
Cc: Samuel Ortiz <sameo@linux.intel.com>
Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 039ae585
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -30,11 +30,6 @@
#define to_mei_cl_driver(d) container_of(d, struct mei_cl_driver, driver)
#define to_mei_cl_device(d) container_of(d, struct mei_cl_device, dev)

static inline uuid_le uuid_le_cast(const __u8 uuid[16])
{
	return *(uuid_le *)uuid;
}

static int mei_cl_device_match(struct device *dev, struct device_driver *drv)
{
	struct mei_cl_device *device = to_mei_cl_device(dev);
@@ -54,9 +49,9 @@ static int mei_cl_device_match(struct device *dev, struct device_driver *drv)

	id = driver->id_table;

	while (uuid_le_cmp(NULL_UUID_LE, uuid_le_cast(id->uuid))) {
	while (uuid_le_cmp(NULL_UUID_LE, id->uuid)) {

		if (!uuid_le_cmp(*uuid, uuid_le_cast(id->uuid))) {
		if (!uuid_le_cmp(*uuid, id->uuid)) {
			if (id->name[0]) {
				if (!strncmp(name, id->name, sizeof(id->name)))
					return 1;
+1 −1
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
#include <net/nfc/hci.h>
#include <linux/uuid.h>

#define MEI_NFC_UUID __UUID_LE(0x0bb17a78, 0x2a8e, 0x4c50, \
#define MEI_NFC_UUID UUID_LE(0x0bb17a78, 0x2a8e, 0x4c50, \
		0x94, 0xd4, 0x50, 0x26, 0x67, 0x23, 0x77, 0x5c)
#define MEI_NFC_HEADER_SIZE 10
#define MEI_NFC_MAX_HCI_PAYLOAD 300
+1 −1
Original line number Diff line number Diff line
@@ -614,7 +614,7 @@ struct ipack_device_id {
 */
struct mei_cl_device_id {
	char name[MEI_CL_NAME_SIZE];
	__u8 uuid[16];
	uuid_le uuid;
	kernel_ulong_t driver_info;
};

+5 −2
Original line number Diff line number Diff line
@@ -34,6 +34,9 @@ typedef Elf64_Addr kernel_ulong_t;
typedef uint32_t	__u32;
typedef uint16_t	__u16;
typedef unsigned char	__u8;
typedef struct {
	__u8 b[16];
} uuid_le;

/* Big exception to the "don't include kernel headers into userspace, which
 * even potentially has different endianness and word sizes, since
@@ -131,13 +134,13 @@ static inline void add_wildcard(char *str)
		strcat(str + len, "*");
}

static inline void add_uuid(char *str, __u8 uuid[16])
static inline void add_uuid(char *str, uuid_le uuid)
{
	int len = strlen(str);
	int i;

	for (i = 0; i < 16; i++)
		sprintf(str + len + (i << 1), "%02x", uuid[i]);
		sprintf(str + len + (i << 1), "%02x", uuid.b[i]);
}

/**