All of lore.kernel.org
 help / color / mirror / Atom feed
* [android-common:android16-6.12 2/2] drivers/virt/gunyah/vm_mgr.c:173:28: error: implicit declaration of function 'module_refcount'
@ 2026-03-11 13:13 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-03-11 13:13 UTC (permalink / raw)
  To: cros-kernel-buildreports; +Cc: oe-kbuild-all

tree:   https://android.googlesource.com/kernel/common android16-6.12
head:   0104b0412b0a41935ece11bfd31b3b309c734cd7
commit: 93af311a26d2889a54d01bd27170ba59e0cc7536 [2/2] FROMLIST: gunyah: vm_mgr: Add framework for VM Functions
config: arm64-randconfig-r132-20260311 (https://download.01.org/0day-ci/archive/20260311/202603112157.1TTCB2vY-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.3.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260311/202603112157.1TTCB2vY-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603112157.1TTCB2vY-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from arch/arm64/include/asm/bug.h:26,
                    from include/linux/bug.h:5,
                    from arch/arm64/include/asm/cpufeature.h:24,
                    from arch/arm64/include/asm/hwcap.h:9,
                    from arch/arm64/include/asm/arch_timer.h:12,
                    from arch/arm64/include/asm/timex.h:8,
                    from include/linux/timex.h:67,
                    from include/linux/time32.h:13,
                    from include/linux/time.h:60,
                    from include/linux/compat.h:10,
                    from drivers/virt/gunyah/vm_mgr.c:9:
   drivers/virt/gunyah/vm_mgr.c: In function 'gunyah_vm_function_unregister':
>> drivers/virt/gunyah/vm_mgr.c:173:28: error: implicit declaration of function 'module_refcount' [-Wimplicit-function-declaration]
     173 |         WARN_ON(fn->mod && module_refcount(fn->mod));
         |                            ^~~~~~~~~~~~~~~
   include/asm-generic/bug.h:123:32: note: in definition of macro 'WARN_ON'
     123 |         int __ret_warn_on = !!(condition);                              \
         |                                ^~~~~~~~~

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for PHYLINK
   Depends on [n]: NETDEVICES [=n]
   Selected by [y]:
   - GKI_HIDDEN_ETHERNET_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for SND_JACK_INPUT_DEV
   Depends on [n]: SOUND [=n] && SND [=n] && SND_JACK [=y]
   Selected by [y]:
   - GKI_HIDDEN_SND_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for NET_DEVLINK
   Depends on [n]: NET [=n]
   Selected by [y]:
   - GKI_HIDDEN_NET_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for WEXT_PROC
   Depends on [n]: NET [=n] && WIRELESS [=n] && PROC_FS [=y] && WEXT_CORE [=y]
   Selected by [y]:
   - GKI_LEGACY_WEXT_ALLCONFIG [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for DIMLIB
   Depends on [n]: NET [=n]
   Selected by [y]:
   - GKI_HIDDEN_VIRTUAL_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for SND_PCM_ELD
   Depends on [n]: SOUND [=n] && SND [=n]
   Selected by [y]:
   - GKI_HIDDEN_SND_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for PAGE_POOL
   Depends on [n]: NET [=n]
   Selected by [y]:
   - GKI_HIDDEN_NET_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for WEXT_PRIV
   Depends on [n]: NET [=n] && WIRELESS [=n]
   Selected by [y]:
   - GKI_LEGACY_WEXT_ALLCONFIG [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for NET_PTP_CLASSIFY
   Depends on [n]: NET [=n]
   Selected by [y]:
   - GKI_HIDDEN_NET_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for DRM_MIPI_DSI
   Depends on [n]: HAS_IOMEM [=y] && DRM [=n]
   Selected by [y]:
   - GKI_HIDDEN_DRM_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for SND_PCM_IEC958
   Depends on [n]: SOUND [=n] && SND [=n]
   Selected by [y]:
   - GKI_HIDDEN_SND_SOC_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for WIRELESS_EXT
   Depends on [n]: NET [=n] && WIRELESS [=n]
   Selected by [y]:
   - GKI_LEGACY_WEXT_ALLCONFIG [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for WEXT_CORE
   Depends on [n]: NET [=n] && WIRELESS [=n] && (CFG80211_WEXT [=n] || WIRELESS_EXT [=y])
   Selected by [y]:
   - GKI_LEGACY_WEXT_ALLCONFIG [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for SND_JACK
   Depends on [n]: SOUND [=n] && SND [=n]
   Selected by [y]:
   - GKI_HIDDEN_SND_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for SND_VMASTER
   Depends on [n]: SOUND [=n] && SND [=n]
   Selected by [y]:
   - GKI_HIDDEN_SND_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for CAN_RX_OFFLOAD
   Depends on [n]: NETDEVICES [=n] && CAN_DEV [=n] && CAN_NETLINK [=n]
   Selected by [y]:
   - GKI_HIDDEN_MCP251XFD_CONFIGS [=y] && 64BIT [=y]
   WARNING: unmet direct dependencies detected for WEXT_SPY
   Depends on [n]: NET [=n] && WIRELESS [=n]
   Selected by [y]:
   - GKI_LEGACY_WEXT_ALLCONFIG [=y] && 64BIT [=y]


vim +/module_refcount +173 drivers/virt/gunyah/vm_mgr.c

     7	
     8	#include <linux/anon_inodes.h>
   > 9	#include <linux/compat.h>
    10	#include <linux/file.h>
    11	#include <linux/miscdevice.h>
    12	#include <linux/module.h>
    13	#include <linux/xarray.h>
    14	
    15	#include <uapi/linux/gunyah.h>
    16	
    17	#include "rsc_mgr.h"
    18	#include "vm_mgr.h"
    19	
    20	static DEFINE_XARRAY(gunyah_vm_functions);
    21	
    22	static void gunyah_vm_put_function(struct gunyah_vm_function *fn)
    23	{
    24		module_put(fn->mod);
    25	}
    26	
    27	static struct gunyah_vm_function *gunyah_vm_get_function(u32 type)
    28	{
    29		struct gunyah_vm_function *fn;
    30	
    31		fn = xa_load(&gunyah_vm_functions, type);
    32		if (!fn) {
    33			request_module("ghfunc:%d", type);
    34	
    35			fn = xa_load(&gunyah_vm_functions, type);
    36		}
    37	
    38		if (!fn || !try_module_get(fn->mod))
    39			fn = ERR_PTR(-ENOENT);
    40	
    41		return fn;
    42	}
    43	
    44	static void
    45	gunyah_vm_remove_function_instance(struct gunyah_vm_function_instance *inst)
    46		__must_hold(&inst->ghvm->fn_lock)
    47	{
    48		inst->fn->unbind(inst);
    49		list_del(&inst->vm_list);
    50		gunyah_vm_put_function(inst->fn);
    51		kfree(inst->argp);
    52		kfree(inst);
    53	}
    54	
    55	static void gunyah_vm_remove_functions(struct gunyah_vm *ghvm)
    56	{
    57		struct gunyah_vm_function_instance *inst, *iiter;
    58	
    59		mutex_lock(&ghvm->fn_lock);
    60		list_for_each_entry_safe(inst, iiter, &ghvm->functions, vm_list) {
    61			gunyah_vm_remove_function_instance(inst);
    62		}
    63		mutex_unlock(&ghvm->fn_lock);
    64	}
    65	
    66	static long gunyah_vm_add_function_instance(struct gunyah_vm *ghvm,
    67						    struct gunyah_fn_desc *f)
    68	{
    69		struct gunyah_vm_function_instance *inst;
    70		void __user *argp;
    71		long r = 0;
    72	
    73		if (f->arg_size > GUNYAH_FN_MAX_ARG_SIZE) {
    74			dev_err_ratelimited(ghvm->parent, "%s: arg_size > %d\n",
    75					    __func__, GUNYAH_FN_MAX_ARG_SIZE);
    76			return -EINVAL;
    77		}
    78	
    79		inst = kzalloc(sizeof(*inst), GFP_KERNEL);
    80		if (!inst)
    81			return -ENOMEM;
    82	
    83		inst->arg_size = f->arg_size;
    84		if (inst->arg_size) {
    85			inst->argp = kzalloc(inst->arg_size, GFP_KERNEL);
    86			if (!inst->argp) {
    87				r = -ENOMEM;
    88				goto free;
    89			}
    90	
    91			argp = u64_to_user_ptr(f->arg);
    92			if (copy_from_user(inst->argp, argp, f->arg_size)) {
    93				r = -EFAULT;
    94				goto free_arg;
    95			}
    96		}
    97	
    98		inst->fn = gunyah_vm_get_function(f->type);
    99		if (IS_ERR(inst->fn)) {
   100			r = PTR_ERR(inst->fn);
   101			goto free_arg;
   102		}
   103	
   104		inst->ghvm = ghvm;
   105		inst->rm = ghvm->rm;
   106	
   107		mutex_lock(&ghvm->fn_lock);
   108		r = inst->fn->bind(inst);
   109		if (r < 0) {
   110			mutex_unlock(&ghvm->fn_lock);
   111			gunyah_vm_put_function(inst->fn);
   112			goto free_arg;
   113		}
   114	
   115		list_add(&inst->vm_list, &ghvm->functions);
   116		mutex_unlock(&ghvm->fn_lock);
   117	
   118		return r;
   119	free_arg:
   120		kfree(inst->argp);
   121	free:
   122		kfree(inst);
   123		return r;
   124	}
   125	
   126	static long gunyah_vm_rm_function_instance(struct gunyah_vm *ghvm,
   127						   struct gunyah_fn_desc *f)
   128	{
   129		struct gunyah_vm_function_instance *inst, *iter;
   130		void __user *user_argp;
   131		void *argp __free(kfree) = NULL;
   132		long r = 0;
   133	
   134		if (f->arg_size) {
   135			argp = kzalloc(f->arg_size, GFP_KERNEL);
   136			if (!argp)
   137				return -ENOMEM;
   138	
   139			user_argp = u64_to_user_ptr(f->arg);
   140			if (copy_from_user(argp, user_argp, f->arg_size))
   141				return -EFAULT;
   142		}
   143	
   144		r = mutex_lock_interruptible(&ghvm->fn_lock);
   145		if (r)
   146			return r;
   147	
   148		r = -ENOENT;
   149		list_for_each_entry_safe(inst, iter, &ghvm->functions, vm_list) {
   150			if (inst->fn->type == f->type &&
   151			    inst->fn->compare(inst, argp, f->arg_size)) {
   152				gunyah_vm_remove_function_instance(inst);
   153				r = 0;
   154			}
   155		}
   156	
   157		mutex_unlock(&ghvm->fn_lock);
   158		return r;
   159	}
   160	
   161	int gunyah_vm_function_register(struct gunyah_vm_function *fn)
   162	{
   163		if (!fn->bind || !fn->unbind)
   164			return -EINVAL;
   165	
   166		return xa_err(xa_store(&gunyah_vm_functions, fn->type, fn, GFP_KERNEL));
   167	}
   168	EXPORT_SYMBOL_GPL(gunyah_vm_function_register);
   169	
   170	void gunyah_vm_function_unregister(struct gunyah_vm_function *fn)
   171	{
   172		/* Expecting unregister to only come when unloading a module */
 > 173		WARN_ON(fn->mod && module_refcount(fn->mod));
   174		xa_erase(&gunyah_vm_functions, fn->type);
   175	}
   176	EXPORT_SYMBOL_GPL(gunyah_vm_function_unregister);
   177	

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

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

only message in thread, other threads:[~2026-03-11 13:13 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-11 13:13 [android-common:android16-6.12 2/2] drivers/virt/gunyah/vm_mgr.c:173:28: error: implicit declaration of function 'module_refcount' 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.