All of lore.kernel.org
 help / color / mirror / Atom feed
* [avpatel:riscv_kvm_aia_v1 24/29] arch/riscv/kvm/../../../virt/kvm/eventfd.c:392:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
@ 2022-04-08 14:30 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-04-08 14:30 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 30425 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Anup Patel <apatel@ventanamicro.com>

tree:   https://github.com/avpatel/linux.git riscv_kvm_aia_v1
head:   dab41b5c8f55fb8e864a5e10fd181dd0d4443778
commit: 362960efc54f421c0c16da9e5d73d48bc569afad [24/29] RISC-V: KVM: Initial skeletal support for in-kernel AIA irqchip
:::::: branch date: 4 days ago
:::::: commit date: 4 days ago
config: riscv-randconfig-c006-20220408 (https://download.01.org/0day-ci/archive/20220408/202204082246.df2hCXqZ-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project c29a51b3a257908aebc01cd7c4655665db317d66)
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
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/avpatel/linux/commit/362960efc54f421c0c16da9e5d73d48bc569afad
        git remote add avpatel https://github.com/avpatel/linux.git
        git fetch --no-tags avpatel riscv_kvm_aia_v1
        git checkout 362960efc54f421c0c16da9e5d73d48bc569afad
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer 

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


clang-analyzer warnings: (new ones prefixed by >>)
                           ^
   include/linux/list.h:555:2: note: expanded from macro 'list_first_entry_or_null'
           pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
           ^~~~~~~~~~~~~~~
   drivers/base/regmap/regmap.c:1529:11: note: '?' condition is true
                   async = list_first_entry_or_null(&map->async_free,
                           ^
   include/linux/list.h:555:2: note: expanded from macro 'list_first_entry_or_null'
           pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
           ^
   drivers/base/regmap/regmap.c:1532:3: note: Calling 'list_del'
                   list_del(&async->list);
                   ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:148:2: note: Calling '__list_del_entry'
           __list_del_entry(entry);
           ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:134:2: note: Taking false branch
           if (!__list_del_entry_valid(entry))
           ^
   include/linux/list.h:137:13: note: Use of memory after it is freed
           __list_del(entry->prev, entry->next);
                      ^~~~~~~~~~~
   Suppressed 39 warnings (39 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   12 warnings generated.
   drivers/w1/slaves/w1_ds2433.c:116:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(buf, &data->memory[off], count);
           ^~~~~~
   drivers/w1/slaves/w1_ds2433.c:116:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(buf, &data->memory[off], count);
           ^~~~~~
   Suppressed 11 warnings (11 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   14 warnings generated.
   drivers/w1/slaves/w1_ds250x.c:161:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(buf, &data->eprom[off], count);
           ^~~~~~
   drivers/w1/slaves/w1_ds250x.c:161:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(buf, &data->eprom[off], count);
           ^~~~~~
   drivers/w1/slaves/w1_ds250x.c:201:3: warning: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   snprintf(data->nvmem_name, sizeof(data->nvmem_name),
                   ^~~~~~~~
   drivers/w1/slaves/w1_ds250x.c:201:3: note: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11
                   snprintf(data->nvmem_name, sizeof(data->nvmem_name),
                   ^~~~~~~~
   drivers/w1/slaves/w1_ds250x.c:206:3: warning: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   snprintf(data->nvmem_name, sizeof(data->nvmem_name),
                   ^~~~~~~~
   drivers/w1/slaves/w1_ds250x.c:206:3: note: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11
                   snprintf(data->nvmem_name, sizeof(data->nvmem_name),
                   ^~~~~~~~
   Suppressed 11 warnings (11 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   11 warnings generated.
   Suppressed 11 warnings (11 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   11 warnings generated.
   lib/string.c:142:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(dest, src, len);
                   ^~~~~~
   lib/string.c:142:3: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                   memcpy(dest, src, len);
                   ^~~~~~
   lib/string.c:328:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(dest, src, len);
           ^~~~~~
   lib/string.c:328:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(dest, src, len);
           ^~~~~~
   Suppressed 9 warnings (9 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   9 warnings generated.
   Suppressed 9 warnings (9 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   17 warnings generated.
   Suppressed 17 warnings (17 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   20 warnings generated.
   Suppressed 20 warnings (20 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   33 warnings generated.
>> arch/riscv/kvm/../../../virt/kvm/eventfd.c:392:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
           ret = 0;
           ^     ~
   arch/riscv/kvm/../../../virt/kvm/eventfd.c:392:2: note: Value stored to 'ret' is never read
           ret = 0;
           ^     ~
   Suppressed 32 warnings (32 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   32 warnings generated.
   Suppressed 32 warnings (32 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   33 warnings generated.
   arch/riscv/kvm/../../../virt/kvm/coalesced_mmio.c:88:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(ring->coalesced_mmio[insert].data, val, len);
           ^~~~~~
   arch/riscv/kvm/../../../virt/kvm/coalesced_mmio.c:88:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(ring->coalesced_mmio[insert].data, val, len);
           ^~~~~~
   Suppressed 32 warnings (32 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   32 warnings generated.
   Suppressed 32 warnings (32 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   32 warnings generated.
   Suppressed 32 warnings (32 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   32 warnings generated.
   Suppressed 32 warnings (32 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   28 warnings generated.
   Suppressed 28 warnings (28 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   9 warnings generated.
   Suppressed 9 warnings (9 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   31 warnings generated.
   Suppressed 31 warnings (31 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   11 warnings generated.
   Suppressed 11 warnings (11 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   17 warnings generated.
   drivers/hwtracing/stm/policy.c:90:10: warning: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           count = sprintf(page, "%u %u\n", policy_node->first_master,
                   ^~~~~~~
   drivers/hwtracing/stm/policy.c:90:10: note: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
           count = sprintf(page, "%u %u\n", policy_node->first_master,
                   ^~~~~~~
   drivers/hwtracing/stm/policy.c:106:6: warning: Call to function 'sscanf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sscanf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           if (sscanf(p, "%u %u", &first, &last) != 2)
               ^~~~~~
   drivers/hwtracing/stm/policy.c:106:6: note: Call to function 'sscanf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sscanf_s' in case of C11
           if (sscanf(p, "%u %u", &first, &last) != 2)
               ^~~~~~
   drivers/hwtracing/stm/policy.c:137:10: warning: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           count = sprintf(page, "%u %u\n", policy_node->first_channel,
                   ^~~~~~~
   drivers/hwtracing/stm/policy.c:137:10: note: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
           count = sprintf(page, "%u %u\n", policy_node->first_channel,
                   ^~~~~~~
   drivers/hwtracing/stm/policy.c:153:6: warning: Call to function 'sscanf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sscanf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           if (sscanf(p, "%u %u", &first, &last) != 2)
               ^~~~~~
   drivers/hwtracing/stm/policy.c:153:6: note: Call to function 'sscanf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sscanf_s' in case of C11
           if (sscanf(p, "%u %u", &first, &last) != 2)
               ^~~~~~
   drivers/hwtracing/stm/policy.c:294:10: warning: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           count = sprintf(page, "%s\n",
                   ^~~~~~~
   drivers/hwtracing/stm/policy.c:294:10: note: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
           count = sprintf(page, "%s\n",
                   ^~~~~~~
   drivers/hwtracing/stm/policy.c:310:10: warning: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           count = sprintf(page, "%s\n",
                   ^~~~~~~
   drivers/hwtracing/stm/policy.c:310:10: note: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
           count = sprintf(page, "%s\n",
                   ^~~~~~~
   Suppressed 11 warnings (11 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   27 warnings generated.
   Suppressed 27 warnings (27 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   45 warnings generated.
   fs/splice.c:725:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
           return ret;
           ^      ~~~
   fs/splice.c:630:2: note: 'ret' declared without an initial value
           ssize_t ret;
           ^~~~~~~~~~~
   fs/splice.c:632:15: note: Assuming 'array' is non-null
           if (unlikely(!array))
                        ^
   include/linux/compiler.h:48:41: note: expanded from macro 'unlikely'
   #  define unlikely(x)   (__branch_check__(x, 0, __builtin_constant_p(x)))
                                             ^
   include/linux/compiler.h:33:34: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                         ^
   fs/splice.c:632:16: note: 'array' is non-null
           if (unlikely(!array))

vim +/ret +392 arch/riscv/kvm/../../../virt/kvm/eventfd.c

1a02b27035f820 Eric Auger            2015-09-18  292  
721eecbf4fe995 Gregory Haskins       2009-05-20  293  static int
d4db2935e4fffe Alex Williamson       2012-06-29  294  kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args)
721eecbf4fe995 Gregory Haskins       2009-05-20  295  {
166c9775f1f8b8 Eric Auger            2015-09-18  296  	struct kvm_kernel_irqfd *irqfd, *tmp;
cffe78d92c217a Al Viro               2013-08-30  297  	struct fd f;
7a84428af7ca6a Alex Williamson       2012-09-21  298  	struct eventfd_ctx *eventfd = NULL, *resamplefd = NULL;
721eecbf4fe995 Gregory Haskins       2009-05-20  299  	int ret;
e6c8adca20ba45 Al Viro               2017-07-03  300  	__poll_t events;
9957c86d659a4d Paul Mackerras        2014-06-30  301  	int idx;
721eecbf4fe995 Gregory Haskins       2009-05-20  302  
01c94e64f5a6f2 Eric Auger            2015-03-04  303  	if (!kvm_arch_intc_initialized(kvm))
01c94e64f5a6f2 Eric Auger            2015-03-04  304  		return -EAGAIN;
01c94e64f5a6f2 Eric Auger            2015-03-04  305  
654f1f13ea56b9 Peter Xu              2019-05-05  306  	if (!kvm_arch_irqfd_allowed(kvm, args))
654f1f13ea56b9 Peter Xu              2019-05-05  307  		return -EINVAL;
654f1f13ea56b9 Peter Xu              2019-05-05  308  
b12ce36a43f29d Ben Gardon            2019-02-11  309  	irqfd = kzalloc(sizeof(*irqfd), GFP_KERNEL_ACCOUNT);
721eecbf4fe995 Gregory Haskins       2009-05-20  310  	if (!irqfd)
721eecbf4fe995 Gregory Haskins       2009-05-20  311  		return -ENOMEM;
721eecbf4fe995 Gregory Haskins       2009-05-20  312  
721eecbf4fe995 Gregory Haskins       2009-05-20  313  	irqfd->kvm = kvm;
d4db2935e4fffe Alex Williamson       2012-06-29  314  	irqfd->gsi = args->gsi;
721eecbf4fe995 Gregory Haskins       2009-05-20  315  	INIT_LIST_HEAD(&irqfd->list);
721eecbf4fe995 Gregory Haskins       2009-05-20  316  	INIT_WORK(&irqfd->inject, irqfd_inject);
721eecbf4fe995 Gregory Haskins       2009-05-20  317  	INIT_WORK(&irqfd->shutdown, irqfd_shutdown);
5c73b9a2b1b4ec Ahmed S. Darwish      2020-07-20  318  	seqcount_spinlock_init(&irqfd->irq_entry_sc, &kvm->irqfds.lock);
721eecbf4fe995 Gregory Haskins       2009-05-20  319  
cffe78d92c217a Al Viro               2013-08-30  320  	f = fdget(args->fd);
cffe78d92c217a Al Viro               2013-08-30  321  	if (!f.file) {
cffe78d92c217a Al Viro               2013-08-30  322  		ret = -EBADF;
cffe78d92c217a Al Viro               2013-08-30  323  		goto out;
721eecbf4fe995 Gregory Haskins       2009-05-20  324  	}
721eecbf4fe995 Gregory Haskins       2009-05-20  325  
cffe78d92c217a Al Viro               2013-08-30  326  	eventfd = eventfd_ctx_fileget(f.file);
721eecbf4fe995 Gregory Haskins       2009-05-20  327  	if (IS_ERR(eventfd)) {
721eecbf4fe995 Gregory Haskins       2009-05-20  328  		ret = PTR_ERR(eventfd);
721eecbf4fe995 Gregory Haskins       2009-05-20  329  		goto fail;
721eecbf4fe995 Gregory Haskins       2009-05-20  330  	}
721eecbf4fe995 Gregory Haskins       2009-05-20  331  
721eecbf4fe995 Gregory Haskins       2009-05-20  332  	irqfd->eventfd = eventfd;
721eecbf4fe995 Gregory Haskins       2009-05-20  333  
7a84428af7ca6a Alex Williamson       2012-09-21  334  	if (args->flags & KVM_IRQFD_FLAG_RESAMPLE) {
166c9775f1f8b8 Eric Auger            2015-09-18  335  		struct kvm_kernel_irqfd_resampler *resampler;
7a84428af7ca6a Alex Williamson       2012-09-21  336  
7a84428af7ca6a Alex Williamson       2012-09-21  337  		resamplefd = eventfd_ctx_fdget(args->resamplefd);
7a84428af7ca6a Alex Williamson       2012-09-21  338  		if (IS_ERR(resamplefd)) {
7a84428af7ca6a Alex Williamson       2012-09-21  339  			ret = PTR_ERR(resamplefd);
7a84428af7ca6a Alex Williamson       2012-09-21  340  			goto fail;
7a84428af7ca6a Alex Williamson       2012-09-21  341  		}
7a84428af7ca6a Alex Williamson       2012-09-21  342  
7a84428af7ca6a Alex Williamson       2012-09-21  343  		irqfd->resamplefd = resamplefd;
7a84428af7ca6a Alex Williamson       2012-09-21  344  		INIT_LIST_HEAD(&irqfd->resampler_link);
7a84428af7ca6a Alex Williamson       2012-09-21  345  
7a84428af7ca6a Alex Williamson       2012-09-21  346  		mutex_lock(&kvm->irqfds.resampler_lock);
7a84428af7ca6a Alex Williamson       2012-09-21  347  
7a84428af7ca6a Alex Williamson       2012-09-21  348  		list_for_each_entry(resampler,
49f8a1a5394d8b Alex Williamson       2012-12-06  349  				    &kvm->irqfds.resampler_list, link) {
7a84428af7ca6a Alex Williamson       2012-09-21  350  			if (resampler->notifier.gsi == irqfd->gsi) {
7a84428af7ca6a Alex Williamson       2012-09-21  351  				irqfd->resampler = resampler;
7a84428af7ca6a Alex Williamson       2012-09-21  352  				break;
7a84428af7ca6a Alex Williamson       2012-09-21  353  			}
7a84428af7ca6a Alex Williamson       2012-09-21  354  		}
7a84428af7ca6a Alex Williamson       2012-09-21  355  
7a84428af7ca6a Alex Williamson       2012-09-21  356  		if (!irqfd->resampler) {
b12ce36a43f29d Ben Gardon            2019-02-11  357  			resampler = kzalloc(sizeof(*resampler),
b12ce36a43f29d Ben Gardon            2019-02-11  358  					    GFP_KERNEL_ACCOUNT);
7a84428af7ca6a Alex Williamson       2012-09-21  359  			if (!resampler) {
7a84428af7ca6a Alex Williamson       2012-09-21  360  				ret = -ENOMEM;
7a84428af7ca6a Alex Williamson       2012-09-21  361  				mutex_unlock(&kvm->irqfds.resampler_lock);
7a84428af7ca6a Alex Williamson       2012-09-21  362  				goto fail;
7a84428af7ca6a Alex Williamson       2012-09-21  363  			}
7a84428af7ca6a Alex Williamson       2012-09-21  364  
7a84428af7ca6a Alex Williamson       2012-09-21  365  			resampler->kvm = kvm;
7a84428af7ca6a Alex Williamson       2012-09-21  366  			INIT_LIST_HEAD(&resampler->list);
7a84428af7ca6a Alex Williamson       2012-09-21  367  			resampler->notifier.gsi = irqfd->gsi;
7a84428af7ca6a Alex Williamson       2012-09-21  368  			resampler->notifier.irq_acked = irqfd_resampler_ack;
7a84428af7ca6a Alex Williamson       2012-09-21  369  			INIT_LIST_HEAD(&resampler->link);
7a84428af7ca6a Alex Williamson       2012-09-21  370  
7a84428af7ca6a Alex Williamson       2012-09-21  371  			list_add(&resampler->link, &kvm->irqfds.resampler_list);
7a84428af7ca6a Alex Williamson       2012-09-21  372  			kvm_register_irq_ack_notifier(kvm,
7a84428af7ca6a Alex Williamson       2012-09-21  373  						      &resampler->notifier);
7a84428af7ca6a Alex Williamson       2012-09-21  374  			irqfd->resampler = resampler;
7a84428af7ca6a Alex Williamson       2012-09-21  375  		}
7a84428af7ca6a Alex Williamson       2012-09-21  376  
7a84428af7ca6a Alex Williamson       2012-09-21  377  		list_add_rcu(&irqfd->resampler_link, &irqfd->resampler->list);
719d93cd5f5c5c Christian Borntraeger 2014-01-16  378  		synchronize_srcu(&kvm->irq_srcu);
7a84428af7ca6a Alex Williamson       2012-09-21  379  
7a84428af7ca6a Alex Williamson       2012-09-21  380  		mutex_unlock(&kvm->irqfds.resampler_lock);
7a84428af7ca6a Alex Williamson       2012-09-21  381  	}
7a84428af7ca6a Alex Williamson       2012-09-21  382  
721eecbf4fe995 Gregory Haskins       2009-05-20  383  	/*
721eecbf4fe995 Gregory Haskins       2009-05-20  384  	 * Install our own custom wake-up handling so we are notified via
721eecbf4fe995 Gregory Haskins       2009-05-20  385  	 * a callback whenever someone signals the underlying eventfd
721eecbf4fe995 Gregory Haskins       2009-05-20  386  	 */
721eecbf4fe995 Gregory Haskins       2009-05-20  387  	init_waitqueue_func_entry(&irqfd->wait, irqfd_wakeup);
721eecbf4fe995 Gregory Haskins       2009-05-20  388  	init_poll_funcptr(&irqfd->pt, irqfd_ptable_queue_proc);
721eecbf4fe995 Gregory Haskins       2009-05-20  389  
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  390  	spin_lock_irq(&kvm->irqfds.lock);
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  391  
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13 @392  	ret = 0;
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  393  	list_for_each_entry(tmp, &kvm->irqfds.items, list) {
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  394  		if (irqfd->eventfd != tmp->eventfd)
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  395  			continue;
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  396  		/* This fd is used for another irq already. */
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  397  		ret = -EBUSY;
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  398  		spin_unlock_irq(&kvm->irqfds.lock);
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  399  		goto fail;
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  400  	}
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  401  
9957c86d659a4d Paul Mackerras        2014-06-30  402  	idx = srcu_read_lock(&kvm->irq_srcu);
9957c86d659a4d Paul Mackerras        2014-06-30  403  	irqfd_update(kvm, irqfd);
bd2b53b20fcd0d Michael S. Tsirkin    2010-11-18  404  
721eecbf4fe995 Gregory Haskins       2009-05-20  405  	list_add_tail(&irqfd->list, &kvm->irqfds.items);
721eecbf4fe995 Gregory Haskins       2009-05-20  406  
684a0b719ddbba Cornelia Huck         2014-03-17  407  	spin_unlock_irq(&kvm->irqfds.lock);
684a0b719ddbba Cornelia Huck         2014-03-17  408  
721eecbf4fe995 Gregory Haskins       2009-05-20  409  	/*
721eecbf4fe995 Gregory Haskins       2009-05-20  410  	 * Check if there was an event already pending on the eventfd
721eecbf4fe995 Gregory Haskins       2009-05-20  411  	 * before we registered, and trigger it as if we didn't miss it.
721eecbf4fe995 Gregory Haskins       2009-05-20  412  	 */
9965ed174e7d38 Christoph Hellwig     2018-03-05  413  	events = vfs_poll(f.file, &irqfd->pt);
684a0b719ddbba Cornelia Huck         2014-03-17  414  
a9a08845e9acbd Linus Torvalds        2018-02-11  415  	if (events & EPOLLIN)
721eecbf4fe995 Gregory Haskins       2009-05-20  416  		schedule_work(&irqfd->inject);
721eecbf4fe995 Gregory Haskins       2009-05-20  417  

:::::: The code at line 392 was first introduced by commit
:::::: f1d1c309f35e9b0fb961cffd70fbd04f450ec47c KVM: only allow one gsi per fd

:::::: TO: Michael S. Tsirkin <mst@redhat.com>
:::::: CC: Marcelo Tosatti <mtosatti@redhat.com>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

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

only message in thread, other threads:[~2022-04-08 14:30 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-08 14:30 [avpatel:riscv_kvm_aia_v1 24/29] arch/riscv/kvm/../../../virt/kvm/eventfd.c:392:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] 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.