* drivers/gpu/drm/i915/i915_perf.c:1955:9: warning: Potential leak of memory pointed to by 'oa_bo' [clang-analyzer-unix.Malloc]
@ 2021-12-09 14:31 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-12-09 14:31 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 15566 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
CC: Daniel Vetter <daniel.vetter@ffwll.ch>
CC: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 2a987e65025e2b79c6d453b78cb5985ac6e5eb26
commit: ef4985bac521f750d1ddc4da6428b381df1d99c0 drm/i915: Increase ww locking for perf.
date: 9 months ago
:::::: branch date: 2 days ago
:::::: commit date: 9 months ago
config: x86_64-randconfig-c007-20211208 (https://download.01.org/0day-ci/archive/20211209/202112092208.YAeLjs1S-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 097a1cb1d5ebb3a0ec4bcaed8ba3ff6a8e33c00a)
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/torvalds/linux.git/commit/?id=ef4985bac521f750d1ddc4da6428b381df1d99c0
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout ef4985bac521f750d1ddc4da6428b381df1d99c0
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 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 >>)
container_of(ptr, type, member)
^
include/linux/kernel.h:709:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:300:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/gpu/drm/i915/i915_perf.c:1942:2: note: Loop condition is false. Exiting loop
llist_for_each_entry(oa_bo, stream->oa_config_bos.first, node) {
^
include/linux/llist.h:152:15: note: expanded from macro 'llist_for_each_entry'
for ((pos) = llist_entry((node), typeof(*(pos)), member); \
^
include/linux/llist.h:81:2: note: expanded from macro 'llist_entry'
container_of(ptr, type, member)
^
include/linux/kernel.h:709:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:298:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/gpu/drm/i915/i915_perf.c:1942:2: note: Loop condition is false. Execution continues on line 1950
llist_for_each_entry(oa_bo, stream->oa_config_bos.first, node) {
^
include/linux/llist.h:152:2: note: expanded from macro 'llist_for_each_entry'
for ((pos) = llist_entry((node), typeof(*(pos)), member); \
^
drivers/gpu/drm/i915/i915_perf.c:1950:10: note: Calling 'alloc_oa_config_buffer'
oa_bo = alloc_oa_config_buffer(stream, oa_config);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:1856:10: note: Calling 'kzalloc'
oa_bo = kzalloc(sizeof(*oa_bo), GFP_KERNEL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:684:9: note: Uninitialized value stored to field 'vma'
return kmalloc(size, flags | __GFP_ZERO);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:1856:10: note: Returning from 'kzalloc'
oa_bo = kzalloc(sizeof(*oa_bo), GFP_KERNEL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:1857:6: note: Assuming 'oa_bo' is non-null
if (!oa_bo)
^~~~~~
drivers/gpu/drm/i915/i915_perf.c:1857:2: note: Taking false branch
if (!oa_bo)
^
drivers/gpu/drm/i915/i915_perf.c:1867:2: note: Taking true branch
if (IS_ERR(obj)) {
^
drivers/gpu/drm/i915/i915_perf.c:1869:3: note: Control jumps to line 1926
goto err_free;
^
drivers/gpu/drm/i915/i915_perf.c:1926:6: note: Assuming 'err' is 0
if (err) {
^~~
drivers/gpu/drm/i915/i915_perf.c:1926:2: note: Taking false branch
if (err) {
^
drivers/gpu/drm/i915/i915_perf.c:1950:10: note: Returning from 'alloc_oa_config_buffer'
oa_bo = alloc_oa_config_buffer(stream, oa_config);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:1951:6: note: Calling 'IS_ERR'
if (IS_ERR(oa_bo))
^~~~~~~~~~~~~
include/linux/err.h:36:9: note: Assuming the condition is false
return IS_ERR_VALUE((unsigned long)ptr);
^
include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE'
#define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
return IS_ERR_VALUE((unsigned long)ptr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:1951:6: note: Returning from 'IS_ERR'
if (IS_ERR(oa_bo))
^~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:1951:2: note: Taking false branch
if (IS_ERR(oa_bo))
^
drivers/gpu/drm/i915/i915_perf.c:1955:9: note: 1st function call argument is an uninitialized value
return i915_vma_get(oa_bo->vma);
^ ~~~~~~~~~~
>> drivers/gpu/drm/i915/i915_perf.c:1955:9: warning: Potential leak of memory pointed to by 'oa_bo' [clang-analyzer-unix.Malloc]
return i915_vma_get(oa_bo->vma);
^
drivers/gpu/drm/i915/i915_perf.c:3304:8: note: Calling 'i915_perf_ioctl_locked'
ret = i915_perf_ioctl_locked(stream, cmd, arg);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:3270:2: note: Control jumps to 'case 26882:' at line 3277
switch (cmd) {
^
drivers/gpu/drm/i915/i915_perf.c:3278:10: note: Calling 'i915_perf_config_locked'
return i915_perf_config_locked(stream, arg);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:3227:7: note: 'config' is non-null
if (!config)
^~~~~~
drivers/gpu/drm/i915/i915_perf.c:3227:2: note: Taking false branch
if (!config)
^
drivers/gpu/drm/i915/i915_perf.c:3230:6: note: Assuming 'config' is not equal to field 'oa_config'
if (config != stream->oa_config) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:3230:2: note: Taking true branch
if (config != stream->oa_config) {
^
drivers/gpu/drm/i915/i915_perf.c:3242:9: note: Calling 'emit_oa_config'
err = emit_oa_config(stream, config, oa_context(stream), NULL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:1969:8: note: Calling 'get_oa_vma'
vma = get_oa_vma(stream, oa_config);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:1942:2: note: Left side of '&&' is false
llist_for_each_entry(oa_bo, stream->oa_config_bos.first, node) {
^
include/linux/llist.h:152:15: note: expanded from macro 'llist_for_each_entry'
for ((pos) = llist_entry((node), typeof(*(pos)), member); \
^
include/linux/llist.h:81:2: note: expanded from macro 'llist_entry'
container_of(ptr, type, member)
^
include/linux/kernel.h:709:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/gpu/drm/i915/i915_perf.c:1942:2: note: Taking false branch
llist_for_each_entry(oa_bo, stream->oa_config_bos.first, node) {
^
include/linux/llist.h:152:15: note: expanded from macro 'llist_for_each_entry'
for ((pos) = llist_entry((node), typeof(*(pos)), member); \
^
include/linux/llist.h:81:2: note: expanded from macro 'llist_entry'
container_of(ptr, type, member)
^
include/linux/kernel.h:709:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:300:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/gpu/drm/i915/i915_perf.c:1942:2: note: Loop condition is false. Exiting loop
llist_for_each_entry(oa_bo, stream->oa_config_bos.first, node) {
^
include/linux/llist.h:152:15: note: expanded from macro 'llist_for_each_entry'
for ((pos) = llist_entry((node), typeof(*(pos)), member); \
^
include/linux/llist.h:81:2: note: expanded from macro 'llist_entry'
container_of(ptr, type, member)
^
include/linux/kernel.h:709:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:298:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/gpu/drm/i915/i915_perf.c:1942:2: note: Loop condition is false. Execution continues on line 1950
llist_for_each_entry(oa_bo, stream->oa_config_bos.first, node) {
^
include/linux/llist.h:152:2: note: expanded from macro 'llist_for_each_entry'
for ((pos) = llist_entry((node), typeof(*(pos)), member); \
^
drivers/gpu/drm/i915/i915_perf.c:1950:10: note: Calling 'alloc_oa_config_buffer'
oa_bo = alloc_oa_config_buffer(stream, oa_config);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/i915_perf.c:1856:10: note: Calling 'kzalloc'
oa_bo = kzalloc(sizeof(*oa_bo), GFP_KERNEL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:684:9: note: Memory is allocated
return kmalloc(size, flags | __GFP_ZERO);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vim +/oa_bo +1955 drivers/gpu/drm/i915/i915_perf.c
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1932
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1933 static struct i915_vma *
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1934 get_oa_vma(struct i915_perf_stream *stream, struct i915_oa_config *oa_config)
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1935 {
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1936 struct i915_oa_config_bo *oa_bo;
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1937
14bfcd3e0daeb0 Lionel Landwerlin 2019-07-10 1938 /*
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1939 * Look for the buffer in the already allocated BOs attached
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1940 * to the stream.
d79651522e89c4 Robert Bragg 2016-11-07 1941 */
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1942 llist_for_each_entry(oa_bo, stream->oa_config_bos.first, node) {
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1943 if (oa_bo->oa_config == oa_config &&
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1944 memcmp(oa_bo->oa_config->uuid,
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1945 oa_config->uuid,
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1946 sizeof(oa_config->uuid)) == 0)
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1947 goto out;
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1948 }
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1949
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1950 oa_bo = alloc_oa_config_buffer(stream, oa_config);
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1951 if (IS_ERR(oa_bo))
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1952 return ERR_CAST(oa_bo);
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1953
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1954 out:
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 @1955 return i915_vma_get(oa_bo->vma);
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1956 }
15d0ace1f876e0 Lionel Landwerlin 2019-10-12 1957
:::::: The code at line 1955 was first introduced by commit
:::::: 15d0ace1f876e01b9745cb22ee32e3770fe3a6d5 drm/i915/perf: execute OA configuration from command stream
:::::: TO: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
:::::: CC: Chris Wilson <chris@chris-wilson.co.uk>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-12-09 14:31 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-12-09 14:31 drivers/gpu/drm/i915/i915_perf.c:1955:9: warning: Potential leak of memory pointed to by 'oa_bo' [clang-analyzer-unix.Malloc] 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.