diff mbox series

[v1,2/2] uuid: Make guid_t completely internal type to the kernel

Message ID 20201030182847.78753-2-andriy.shevchenko@linux.intel.com (mailing list archive)
State New
Headers show
Series [v1,1/2] modpost: Mark uuid_le type only for MEI | expand

Commit Message

Andy Shevchenko Oct. 30, 2020, 6:28 p.m. UTC
The guid_t type was defined in UAPI by mistake.
Keep it an internal type and leave uuid_le UAPI
for it's only user, i.e. MEI.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 include/linux/uuid.h      | 16 ++++++++++++++--
 include/uapi/linux/uuid.h | 14 +++++---------
 2 files changed, 19 insertions(+), 11 deletions(-)

Comments

Andy Shevchenko Oct. 30, 2020, 6:36 p.m. UTC | #1
On Fri, Oct 30, 2020 at 08:28:47PM +0200, Andy Shevchenko wrote:
> The guid_t type was defined in UAPI by mistake.
> Keep it an internal type and leave uuid_le UAPI
> for it's only user, i.e. MEI.

...

>  static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
>  {
>  	return memcmp(&u1, &u2, sizeof(guid_t));

This also has to be changed... (though it compiles).

I'll send v2.
kernel test robot Nov. 1, 2020, 7:20 p.m. UTC | #2
Hi Andy,

I love your patch! Yet something to improve:

[auto build test ERROR on hch-configfs/for-next]
[also build test ERROR on linus/master v5.10-rc1 next-20201030]
[cannot apply to linux/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Andy-Shevchenko/modpost-Mark-uuid_le-type-only-for-MEI/20201031-221811
base:   git://git.infradead.org/users/hch/configfs.git for-next
config: x86_64-rhel (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
        # https://github.com/0day-ci/linux/commit/b3ed5f445f0427adad04815a6c42982ef1f5926f
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Andy-Shevchenko/modpost-Mark-uuid_le-type-only-for-MEI/20201031-221811
        git checkout b3ed5f445f0427adad04815a6c42982ef1f5926f
        # save the attached .config to linux build tree
        make W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/misc/mei/client.c: In function '__mei_me_cl_by_uuid':
>> drivers/misc/mei/client.c:141:19: error: incompatible type for argument 1 of 'uuid_le_cmp'
     141 |   if (uuid_le_cmp(*uuid, *pn) == 0)
         |                   ^~~~~
         |                   |
         |                   uuid_le {aka const struct <anonymous>}
   In file included from include/uapi/linux/mei.h:10,
                    from drivers/misc/mei/client.c:13:
   include/linux/uuid.h:113:44: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'const struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                               ~~~~~~~~~~~~~^~
   drivers/misc/mei/client.c:141:26: error: incompatible type for argument 2 of 'uuid_le_cmp'
     141 |   if (uuid_le_cmp(*uuid, *pn) == 0)
         |                          ^~~
         |                          |
         |                          uuid_le {aka const struct <anonymous>}
   In file included from include/uapi/linux/mei.h:10,
                    from drivers/misc/mei/client.c:13:
   include/linux/uuid.h:113:61: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'const struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                                                ~~~~~~~~~~~~~^~
   drivers/misc/mei/client.c: In function '__mei_me_cl_by_uuid_id':
   drivers/misc/mei/client.c:221:19: error: incompatible type for argument 1 of 'uuid_le_cmp'
     221 |   if (uuid_le_cmp(*uuid, *pn) == 0 &&
         |                   ^~~~~
         |                   |
         |                   uuid_le {aka const struct <anonymous>}
   In file included from include/uapi/linux/mei.h:10,
                    from drivers/misc/mei/client.c:13:
   include/linux/uuid.h:113:44: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'const struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                               ~~~~~~~~~~~~~^~
   drivers/misc/mei/client.c:221:26: error: incompatible type for argument 2 of 'uuid_le_cmp'
     221 |   if (uuid_le_cmp(*uuid, *pn) == 0 &&
         |                          ^~~
         |                          |
         |                          uuid_le {aka const struct <anonymous>}
   In file included from include/uapi/linux/mei.h:10,
                    from drivers/misc/mei/client.c:13:
   include/linux/uuid.h:113:61: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'const struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                                                ~~~~~~~~~~~~~^~
--
   In file included from include/linux/uuid.h:111,
                    from include/linux/mei_cl_bus.h:9,
                    from drivers/misc/mei/bus.c:16:
   drivers/misc/mei/bus.c: In function 'mei_cl_device_find':
>> include/uapi/linux/uuid.h:28:1: error: incompatible type for argument 1 of 'uuid_le_cmp'
      28 | ((uuid_le)        \
         | ^~~~~~~~~~~~~~~~~~~
         | |
         | uuid_le {aka struct <anonymous>}
      29 | {{ (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \
         | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      30 |    (b) & 0xff, ((b) >> 8) & 0xff,     \
         |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      31 |    (c) & 0xff, ((c) >> 8) & 0xff,     \
         |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      32 |    (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
         |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/uapi/linux/uuid.h:35:2: note: in expansion of macro 'UUID_LE'
      35 |  UUID_LE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, \
         |  ^~~~~~~
   drivers/misc/mei/bus.c:630:21: note: in expansion of macro 'NULL_UUID_LE'
     630 |  while (uuid_le_cmp(NULL_UUID_LE, id->uuid)) {
         |                     ^~~~~~~~~~~~
   In file included from include/linux/mei_cl_bus.h:9,
                    from drivers/misc/mei/bus.c:16:
   include/linux/uuid.h:113:44: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                               ~~~~~~~~~~~~~^~
>> drivers/misc/mei/bus.c:630:37: error: incompatible type for argument 2 of 'uuid_le_cmp'
     630 |  while (uuid_le_cmp(NULL_UUID_LE, id->uuid)) {
         |                                   ~~^~~~~~
         |                                     |
         |                                     uuid_le {aka const struct <anonymous>}
   In file included from include/linux/mei_cl_bus.h:9,
                    from drivers/misc/mei/bus.c:16:
   include/linux/uuid.h:113:61: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'const struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                                                ~~~~~~~~~~~~~^~
   drivers/misc/mei/bus.c:631:20: error: incompatible type for argument 1 of 'uuid_le_cmp'
     631 |   if (!uuid_le_cmp(*uuid, id->uuid)) {
         |                    ^~~~~
         |                    |
         |                    uuid_le {aka const struct <anonymous>}
   In file included from include/linux/mei_cl_bus.h:9,
                    from drivers/misc/mei/bus.c:16:
   include/linux/uuid.h:113:44: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'const struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                               ~~~~~~~~~~~~~^~
   drivers/misc/mei/bus.c:631:29: error: incompatible type for argument 2 of 'uuid_le_cmp'
     631 |   if (!uuid_le_cmp(*uuid, id->uuid)) {
         |                           ~~^~~~~~
         |                             |
         |                             uuid_le {aka const struct <anonymous>}
   In file included from include/linux/mei_cl_bus.h:9,
                    from drivers/misc/mei/bus.c:16:
   include/linux/uuid.h:113:61: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'const struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                                                ~~~~~~~~~~~~~^~
--
   drivers/misc/mei/bus-fixup.c: In function 'mei_cl_bus_dev_fixup':
>> drivers/misc/mei/bus-fixup.c:495:20: error: incompatible type for argument 1 of 'uuid_le_cmp'
     495 |   if (uuid_le_cmp(f->uuid, MEI_UUID_ANY) == 0 ||
         |                   ~^~~~~~
         |                    |
         |                    uuid_le {aka const struct <anonymous>}
   In file included from drivers/misc/mei/bus-fixup.c:12:
   include/linux/uuid.h:113:44: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'const struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                               ~~~~~~~~~~~~~^~
   In file included from include/linux/uuid.h:111,
                    from drivers/misc/mei/bus-fixup.c:12:
   include/uapi/linux/uuid.h:28:1: error: incompatible type for argument 2 of 'uuid_le_cmp'
      28 | ((uuid_le)        \
         | ^~~~~~~~~~~~~~~~~~~
         | |
         | uuid_le {aka struct <anonymous>}
      29 | {{ (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \
         | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      30 |    (b) & 0xff, ((b) >> 8) & 0xff,     \
         |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      31 |    (c) & 0xff, ((c) >> 8) & 0xff,     \
         |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      32 |    (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
         |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/uapi/linux/uuid.h:35:2: note: in expansion of macro 'UUID_LE'
      35 |  UUID_LE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, \
         |  ^~~~~~~
   drivers/misc/mei/bus-fixup.c:36:22: note: in expansion of macro 'NULL_UUID_LE'
      36 | #define MEI_UUID_ANY NULL_UUID_LE
         |                      ^~~~~~~~~~~~
   drivers/misc/mei/bus-fixup.c:495:28: note: in expansion of macro 'MEI_UUID_ANY'
     495 |   if (uuid_le_cmp(f->uuid, MEI_UUID_ANY) == 0 ||
         |                            ^~~~~~~~~~~~
   In file included from drivers/misc/mei/bus-fixup.c:12:
   include/linux/uuid.h:113:61: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                                                ~~~~~~~~~~~~~^~
   drivers/misc/mei/bus-fixup.c:496:20: error: incompatible type for argument 1 of 'uuid_le_cmp'
     496 |       uuid_le_cmp(f->uuid, *uuid) == 0)
         |                   ~^~~~~~
         |                    |
         |                    uuid_le {aka const struct <anonymous>}
   In file included from drivers/misc/mei/bus-fixup.c:12:
   include/linux/uuid.h:113:44: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'const struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                               ~~~~~~~~~~~~~^~
   drivers/misc/mei/bus-fixup.c:496:28: error: incompatible type for argument 2 of 'uuid_le_cmp'
     496 |       uuid_le_cmp(f->uuid, *uuid) == 0)
         |                            ^~~~~
         |                            |
         |                            uuid_le {aka const struct <anonymous>}
   In file included from drivers/misc/mei/bus-fixup.c:12:
   include/linux/uuid.h:113:61: note: expected 'guid_t' {aka 'const struct <anonymous>'} but argument is of type 'uuid_le' {aka 'const struct <anonymous>'}
     113 | static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
         |                                                ~~~~~~~~~~~~~^~

vim +/uuid_le_cmp +141 drivers/misc/mei/client.c

b7d885145538dd Tomas Winkler     2015-02-10  119  
b7d885145538dd Tomas Winkler     2015-02-10  120  /**
b7d885145538dd Tomas Winkler     2015-02-10  121   * __mei_me_cl_by_uuid - locate me client by uuid
79563db9ddd379 Tomas Winkler     2015-01-11  122   *	increases ref count
90e0b5f18569bd Tomas Winkler     2013-01-08  123   *
90e0b5f18569bd Tomas Winkler     2013-01-08  124   * @dev: mei device
a8605ea2c20c2b Alexander Usyskin 2014-09-29  125   * @uuid: me client uuid
a27a76d3c07de0 Alexander Usyskin 2014-02-17  126   *
a8605ea2c20c2b Alexander Usyskin 2014-09-29  127   * Return: me client or NULL if not found
b7d885145538dd Tomas Winkler     2015-02-10  128   *
b7d885145538dd Tomas Winkler     2015-02-10  129   * Locking: dev->me_clients_rwsem
90e0b5f18569bd Tomas Winkler     2013-01-08  130   */
b7d885145538dd Tomas Winkler     2015-02-10  131  static struct mei_me_client *__mei_me_cl_by_uuid(struct mei_device *dev,
d320832f646660 Tomas Winkler     2014-08-24  132  					const uuid_le *uuid)
90e0b5f18569bd Tomas Winkler     2013-01-08  133  {
5ca2d3882d60c0 Tomas Winkler     2014-08-21  134  	struct mei_me_client *me_cl;
b7d885145538dd Tomas Winkler     2015-02-10  135  	const uuid_le *pn;
90e0b5f18569bd Tomas Winkler     2013-01-08  136  
b7d885145538dd Tomas Winkler     2015-02-10  137  	WARN_ON(!rwsem_is_locked(&dev->me_clients_rwsem));
b7d885145538dd Tomas Winkler     2015-02-10  138  
b7d885145538dd Tomas Winkler     2015-02-10  139  	list_for_each_entry(me_cl, &dev->me_clients, list) {
b7d885145538dd Tomas Winkler     2015-02-10  140  		pn = &me_cl->props.protocol_name;
b7d885145538dd Tomas Winkler     2015-02-10 @141  		if (uuid_le_cmp(*uuid, *pn) == 0)
79563db9ddd379 Tomas Winkler     2015-01-11  142  			return mei_me_cl_get(me_cl);
b7d885145538dd Tomas Winkler     2015-02-10  143  	}
90e0b5f18569bd Tomas Winkler     2013-01-08  144  
d320832f646660 Tomas Winkler     2014-08-24  145  	return NULL;
90e0b5f18569bd Tomas Winkler     2013-01-08  146  }
90e0b5f18569bd Tomas Winkler     2013-01-08  147  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Andy Shevchenko Nov. 2, 2020, 12:33 p.m. UTC | #3
On Mon, Nov 02, 2020 at 03:20:29AM +0800, kernel test robot wrote:
> Hi Andy,
> 
> I love your patch! Yet something to improve:
> 
> [auto build test ERROR on hch-configfs/for-next]
> [also build test ERROR on linus/master v5.10-rc1 next-20201030]
> [cannot apply to linux/master]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]

Thanks, there is v2 which should have no such issue.
diff mbox series

Patch

diff --git a/include/linux/uuid.h b/include/linux/uuid.h
index 8cdc0d3567cd..a106d51de2f7 100644
--- a/include/linux/uuid.h
+++ b/include/linux/uuid.h
@@ -8,15 +8,25 @@ 
 #ifndef _LINUX_UUID_H_
 #define _LINUX_UUID_H_
 
-#include <uapi/linux/uuid.h>
 #include <linux/string.h>
 
 #define UUID_SIZE 16
 
+typedef struct {
+	__u8 b[UUID_SIZE];
+} guid_t;
+
 typedef struct {
 	__u8 b[UUID_SIZE];
 } uuid_t;
 
+#define GUID_INIT(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7)			\
+((guid_t)								\
+{{ (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \
+   (b) & 0xff, ((b) >> 8) & 0xff,					\
+   (c) & 0xff, ((c) >> 8) & 0xff,					\
+   (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
+
 #define UUID_INIT(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7)			\
 ((uuid_t)								\
 {{ ((a) >> 24) & 0xff, ((a) >> 16) & 0xff, ((a) >> 8) & 0xff, (a) & 0xff, \
@@ -97,7 +107,9 @@  extern const u8 uuid_index[16];
 int guid_parse(const char *uuid, guid_t *u);
 int uuid_parse(const char *uuid, uuid_t *u);
 
-/* backwards compatibility, don't use in new code */
+/* MEI UUID type, don't use anywhere else */
+#include <uapi/linux/uuid.h>
+
 static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
 {
 	return memcmp(&u1, &u2, sizeof(guid_t));
diff --git a/include/uapi/linux/uuid.h b/include/uapi/linux/uuid.h
index e5a7eecef7c3..c3e175f686f4 100644
--- a/include/uapi/linux/uuid.h
+++ b/include/uapi/linux/uuid.h
@@ -1,6 +1,6 @@ 
 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 /*
- * UUID/GUID definition
+ * MEI UUID definition
  *
  * Copyright (C) 2010, Intel Corp.
  *	Huang Ying <ying.huang@intel.com>
@@ -22,21 +22,17 @@ 
 
 typedef struct {
 	__u8 b[16];
-} guid_t;
+} uuid_le;
 
-#define GUID_INIT(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7)			\
-((guid_t)								\
+#define UUID_LE(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7)		\
+((uuid_le)								\
 {{ (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \
    (b) & 0xff, ((b) >> 8) & 0xff,					\
    (c) & 0xff, ((c) >> 8) & 0xff,					\
    (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
 
-/* backwards compatibility, don't use in new code */
-typedef guid_t uuid_le;
-#define UUID_LE(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7)		\
-	GUID_INIT(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7)
 #define NULL_UUID_LE							\
 	UUID_LE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00,	\
-	     0x00, 0x00, 0x00, 0x00)
+		0x00, 0x00, 0x00, 0x00)
 
 #endif /* _UAPI_LINUX_UUID_H_ */