All of lore.kernel.org
 help / color / mirror / Atom feed
* [robh:dt/linus 5/5] drivers/of/platform.c:570:19: error: incompatible pointer types passing 'char *[14]' to parameter of type 'char *'
@ 2023-01-19  0:55 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-01-19  0:55 UTC (permalink / raw)
  To: Michal Suchanek; +Cc: llvm, oe-kbuild-all, Rob Herring

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git dt/linus
head:   2d681d6a23a14e6507e536605d83e38acfab9018
commit: 2d681d6a23a14e6507e536605d83e38acfab9018 [5/5] of: Make of framebuffer devices unique
config: i386-randconfig-a013 (https://download.01.org/0day-ci/archive/20230119/202301190812.uoPlw0Uq-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git/commit/?id=2d681d6a23a14e6507e536605d83e38acfab9018
        git remote add robh https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
        git fetch --no-tags robh dt/linus
        git checkout 2d681d6a23a14e6507e536605d83e38acfab9018
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/

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

All errors (new ones prefixed by >>):

>> drivers/of/platform.c:570:19: error: incompatible pointer types passing 'char *[14]' to parameter of type 'char *' [-Werror,-Wincompatible-pointer-types]
                           ret = snprintf(buf, "of-display-%d", display_number++);
                                          ^~~
   include/linux/kernel.h:213:20: note: passing argument to parameter 'buf' here
   int snprintf(char *buf, size_t size, const char *fmt, ...);
                      ^
   drivers/of/platform.c:570:24: warning: incompatible pointer to integer conversion passing 'char[14]' to parameter of type 'size_t' (aka 'unsigned int') [-Wint-conversion]
                           ret = snprintf(buf, "of-display-%d", display_number++);
                                               ^~~~~~~~~~~~~~~
   include/linux/kernel.h:213:32: note: passing argument to parameter 'size' here
   int snprintf(char *buf, size_t size, const char *fmt, ...);
                                  ^
   drivers/of/platform.c:570:41: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'const char *' [-Wint-conversion]
                           ret = snprintf(buf, "of-display-%d", display_number++);
                                                                ^~~~~~~~~~~~~~~~
   include/linux/kernel.h:213:50: note: passing argument to parameter 'fmt' here
   int snprintf(char *buf, size_t size, const char *fmt, ...);
                                                    ^
>> drivers/of/platform.c:573:36: error: incompatible pointer types passing 'char *[14]' to parameter of type 'const char *' [-Werror,-Wincompatible-pointer-types]
                           of_platform_device_create(node, buf, NULL);
                                                           ^~~
   drivers/of/platform.c:216:15: note: passing argument to parameter here
   EXPORT_SYMBOL(of_platform_device_create);
                 ^
   2 warnings and 2 errors generated.


vim +570 drivers/of/platform.c

   515	
   516	static int __init of_platform_default_populate_init(void)
   517	{
   518		struct device_node *node;
   519	
   520		device_links_supplier_sync_state_pause();
   521	
   522		if (!of_have_populated_dt())
   523			return -ENODEV;
   524	
   525		if (IS_ENABLED(CONFIG_PPC)) {
   526			struct device_node *boot_display = NULL;
   527			struct platform_device *dev;
   528			int display_number = 1;
   529			int ret;
   530	
   531			/* Check if we have a MacOS display without a node spec */
   532			if (of_get_property(of_chosen, "linux,bootx-noscreen", NULL)) {
   533				/*
   534				 * The old code tried to work out which node was the MacOS
   535				 * display based on the address. I'm dropping that since the
   536				 * lack of a node spec only happens with old BootX versions
   537				 * (users can update) and with this code, they'll still get
   538				 * a display (just not the palette hacks).
   539				 */
   540				dev = platform_device_alloc("bootx-noscreen", 0);
   541				if (WARN_ON(!dev))
   542					return -ENOMEM;
   543				ret = platform_device_add(dev);
   544				if (WARN_ON(ret)) {
   545					platform_device_put(dev);
   546					return ret;
   547				}
   548			}
   549	
   550			/*
   551			 * For OF framebuffers, first create the device for the boot display,
   552			 * then for the other framebuffers. Only fail for the boot display;
   553			 * ignore errors for the rest.
   554			 */
   555			for_each_node_by_type(node, "display") {
   556				if (!of_get_property(node, "linux,opened", NULL) ||
   557				    !of_get_property(node, "linux,boot-display", NULL))
   558					continue;
   559				dev = of_platform_device_create(node, "of-display", NULL);
   560				if (WARN_ON(!dev))
   561					return -ENOMEM;
   562				boot_display = node;
   563				break;
   564			}
   565	
   566			for_each_node_by_type(node, "display") {
   567				char *buf[14];
   568				if (!of_get_property(node, "linux,opened", NULL) || node == boot_display)
   569					continue;
 > 570				ret = snprintf(buf, "of-display-%d", display_number++);
   571				if (ret >= sizeof(buf))
   572					continue;
 > 573				of_platform_device_create(node, buf, NULL);
   574			}
   575	
   576		} else {
   577			/*
   578			 * Handle certain compatibles explicitly, since we don't want to create
   579			 * platform_devices for every node in /reserved-memory with a
   580			 * "compatible",
   581			 */
   582			for_each_matching_node(node, reserved_mem_matches)
   583				of_platform_device_create(node, NULL, NULL);
   584	
   585			node = of_find_node_by_path("/firmware");
   586			if (node) {
   587				of_platform_populate(node, NULL, NULL, NULL);
   588				of_node_put(node);
   589			}
   590	
   591			node = of_get_compatible_child(of_chosen, "simple-framebuffer");
   592			of_platform_device_create(node, NULL, NULL);
   593			of_node_put(node);
   594	
   595			/* Populate everything else. */
   596			of_platform_default_populate(NULL, NULL, NULL);
   597		}
   598	
   599		return 0;
   600	}
   601	arch_initcall_sync(of_platform_default_populate_init);
   602	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-01-19  0:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-19  0:55 [robh:dt/linus 5/5] drivers/of/platform.c:570:19: error: incompatible pointer types passing 'char *[14]' to parameter of type 'char *' kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.