CC: l...@lists.linux.dev CC: kbuild-...@lists.01.org BCC: l...@intel.com CC: linux-ker...@vger.kernel.org TO: Thierry Reding <tred...@nvidia.com> CC: Dave Airlie <airl...@redhat.com>
Hi Dave, First bad commit (maybe != root cause): tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: b2d229d4ddb17db541098b83524d901257e93845 commit: 12fc11bce6f29a73eb3d61ab4e76a9ece3da1f1d Merge tag 'drm/tegra/for-5.13-rc1' of ssh://git.freedesktop.org/git/tegra/linux into drm-next date: 12 months ago :::::: branch date: 15 hours ago :::::: commit date: 12 months ago config: arm-randconfig-c002-20220418 (https://download.01.org/0day-ci/archive/20220418/202204181914.bwtvkdyd-...@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project ef94609d6ebe981767788e6877b0b3b731d425af) 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 arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=12fc11bce6f29a73eb3d61ab4e76a9ece3da1f1d git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 12fc11bce6f29a73eb3d61ab4e76a9ece3da1f1d # save the config file to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> clang-analyzer warnings: (new ones prefixed by >>) ^ 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 { \ ^ kernel/locking/rtmutex.c:299:30: note: Passing null pointer value via 1st parameter 'left' return rt_mutex_waiter_less(__node_2_pi_waiter(a), __node_2_pi_waiter(b)); ^ kernel/locking/rtmutex.c:295:2: note: expanded from macro '__node_2_pi_waiter' rb_entry((node), struct rt_mutex_waiter, pi_tree_entry) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/rbtree.h:38:37: note: expanded from macro 'rb_entry' #define rb_entry(ptr, type, member) container_of(ptr, type, member) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kernel.h:707:41: note: expanded from macro 'container_of' #define container_of(ptr, type, member) ({ \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/locking/rtmutex.c:299:9: note: Calling 'rt_mutex_waiter_less' return rt_mutex_waiter_less(__node_2_pi_waiter(a), __node_2_pi_waiter(b)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/locking/rtmutex.c:236:6: note: Access to field 'prio' results in a dereference of a null pointer (loaded from variable 'left') if (left->prio < right->prio) ^~~~ kernel/locking/rtmutex.c:287:6: warning: Access to field '__rb_parent_color' results in a dereference of a null pointer [clang-analyzer-core.NullDereference] if (RB_EMPTY_NODE(&waiter->tree_entry)) ^ include/linux/rbtree.h:44:3: note: expanded from macro 'RB_EMPTY_NODE' ((node)->__rb_parent_color == (unsigned long)(node)) ^ kernel/locking/rtmutex.c:1894:6: note: Assuming the condition is true if (rt_mutex_owner(lock) != current) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/locking/rtmutex.c:1894:2: note: Taking true branch if (rt_mutex_owner(lock) != current) { ^ kernel/locking/rtmutex.c:1895:23: note: Passing value via 2nd parameter 'waiter' remove_waiter(lock, waiter); ^~~~~~ kernel/locking/rtmutex.c:1895:3: note: Calling 'remove_waiter' remove_waiter(lock, waiter); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/locking/rtmutex.c:1050:24: note: Assuming pointer value is null bool is_top_waiter = (waiter == rt_mutex_top_waiter(lock)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/locking/rtmutex.c:1054:2: note: Assuming 'debug_locks' is 0 lockdep_assert_held(&lock->wait_lock); ^ include/linux/lockdep.h:305:11: note: expanded from macro 'lockdep_assert_held' WARN_ON(debug_locks && !lockdep_is_held(l)); \ ^~~~~~~~~~~ include/asm-generic/bug.h:119:25: note: expanded from macro 'WARN_ON' int __ret_warn_on = !!(condition); \ ^~~~~~~~~ kernel/locking/rtmutex.c:1054:2: note: Left side of '&&' is false lockdep_assert_held(&lock->wait_lock); ^ include/linux/lockdep.h:305:23: note: expanded from macro 'lockdep_assert_held' WARN_ON(debug_locks && !lockdep_is_held(l)); \ ^ kernel/locking/rtmutex.c:1054:2: note: Taking false branch lockdep_assert_held(&lock->wait_lock); ^ include/linux/lockdep.h:305:3: note: expanded from macro 'lockdep_assert_held' WARN_ON(debug_locks && !lockdep_is_held(l)); \ ^ include/asm-generic/bug.h:120:2: note: expanded from macro 'WARN_ON' if (unlikely(__ret_warn_on)) \ ^ kernel/locking/rtmutex.c:1054:2: note: Loop condition is false. Exiting loop lockdep_assert_held(&lock->wait_lock); ^ include/linux/lockdep.h:304:32: note: expanded from macro 'lockdep_assert_held' #define lockdep_assert_held(l) do { \ ^ kernel/locking/rtmutex.c:1057:25: note: Passing null pointer value via 2nd parameter 'waiter' rt_mutex_dequeue(lock, waiter); ^~~~~~ kernel/locking/rtmutex.c:1057:2: note: Calling 'rt_mutex_dequeue' rt_mutex_dequeue(lock, waiter); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/locking/rtmutex.c:287:6: note: Access to field '__rb_parent_color' results in a dereference of a null pointer if (RB_EMPTY_NODE(&waiter->tree_entry)) ^ include/linux/rbtree.h:44:3: note: expanded from macro 'RB_EMPTY_NODE' ((node)->__rb_parent_color == (unsigned long)(node)) ^~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 3 warnings (2 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 10 warnings generated. Suppressed 10 warnings (9 in non-user code, 1 with check filters). 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. 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. 11 warnings generated. >> drivers/gpu/host1x/intr.c:29:2: warning: Attempt to free released memory >> [clang-analyzer-unix.Malloc] kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ drivers/gpu/host1x/intr.c:257:6: note: Assuming the condition is true if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) == ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/host1x/intr.c:257:2: note: Taking true branch if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) == ^ drivers/gpu/host1x/intr.c:260:3: note: Calling 'kref_put' kref_put(&waiter->refcount, waiter_release); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kref.h:64:6: note: Assuming the condition is true if (refcount_dec_and_test(&kref->refcount)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kref.h:64:2: note: Taking true branch if (refcount_dec_and_test(&kref->refcount)) { ^ include/linux/kref.h:65:3: note: Calling 'waiter_release' release(kref); ^~~~~~~~~~~~~ drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ include/linux/kernel.h:709:61: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ drivers/gpu/host1x/intr.c:29:8: note: Taking false branch kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ include/linux/kernel.h:709:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^ 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/host1x/intr.c:29:8: note: Loop condition is false. Exiting loop kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ include/linux/kernel.h:709:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^ 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/host1x/intr.c:29:2: note: Memory is released kfree(container_of(kref, struct host1x_waitlist, refcount)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kref.h:65:3: note: Returning; memory was released release(kref); ^~~~~~~~~~~~~ drivers/gpu/host1x/intr.c:260:3: note: Returning; memory was released kref_put(&waiter->refcount, waiter_release); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/host1x/intr.c:264:6: note: Assuming 'flush' is false if (flush) { ^~~~~ drivers/gpu/host1x/intr.c:264:2: note: Taking false branch if (flush) { ^ drivers/gpu/host1x/intr.c:270:2: note: Calling 'kref_put' kref_put(&waiter->refcount, waiter_release); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kref.h:64:6: note: Assuming the condition is true if (refcount_dec_and_test(&kref->refcount)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kref.h:64:2: note: Taking true branch if (refcount_dec_and_test(&kref->refcount)) { ^ include/linux/kref.h:65:3: note: Calling 'waiter_release' release(kref); ^~~~~~~~~~~~~ drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ include/linux/kernel.h:709:61: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ drivers/gpu/host1x/intr.c:29:8: note: Taking false branch kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ include/linux/kernel.h:709:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ -- 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. 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. 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. 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. 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. 8 warnings generated. Suppressed 8 warnings (8 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 (8 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 10 warnings generated. Suppressed 10 warnings (10 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. drivers/crypto/keembay/ocs-aes.c:1154:3: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] iowrite8(enc_a[i], ^ include/asm-generic/io.h:743:18: note: expanded from macro 'iowrite8' #define iowrite8 iowrite8 ^ drivers/crypto/keembay/ocs-aes.c:1327:6: note: 'rc' is 0 if (rc) ^~ drivers/crypto/keembay/ocs-aes.c:1327:2: note: Taking false branch if (rc) ^ drivers/crypto/keembay/ocs-aes.c:1369:6: note: Assuming 'rc' is 0 if (rc) ^~ drivers/crypto/keembay/ocs-aes.c:1369:2: note: Taking false branch if (rc) ^ drivers/crypto/keembay/ocs-aes.c:1379:2: note: Calling 'ocs_aes_ccm_do_adata' ocs_aes_ccm_do_adata(aes_dev, adata_dma_list, adata_size); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/crypto/keembay/ocs-aes.c:1164:6: note: Assuming 'adata_size' is not equal to 0 if (!adata_size) { ^~~~~~~~~~~ drivers/crypto/keembay/ocs-aes.c:1164:2: note: Taking false branch if (!adata_size) { ^ drivers/crypto/keembay/ocs-aes.c:1176:2: note: Calling 'ocs_aes_ccm_write_adata_len' ocs_aes_ccm_write_adata_len(aes_dev, adata_size); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/crypto/keembay/ocs-aes.c:1141:6: note: Assuming 'adata_len' is < 65280 if (adata_len < 65280) { ^~~~~~~~~~~~~~~~~ drivers/crypto/keembay/ocs-aes.c:1141:2: note: Taking true branch if (adata_len < 65280) { ^ drivers/crypto/keembay/ocs-aes.c:1153:2: note: Loop condition is true. Entering loop body for (i = 0; i < len; i++) ^ drivers/crypto/keembay/ocs-aes.c:1153:23: note: The value 1 is assigned to 'i' for (i = 0; i < len; i++) ^~~ drivers/crypto/keembay/ocs-aes.c:1153:2: note: Loop condition is true. Entering loop body for (i = 0; i < len; i++) ^ drivers/crypto/keembay/ocs-aes.c:1154:3: note: 1st function call argument is an uninitialized value iowrite8(enc_a[i], ^ ~~~~~~~~ include/asm-generic/io.h:743:18: note: expanded from macro 'iowrite8' #define iowrite8 iowrite8 ^ Suppressed 8 warnings (8 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. 10 warnings generated. Suppressed 10 warnings (10 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. 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. 8 warnings generated. Suppressed 8 warnings (8 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. 8 warnings generated. Suppressed 8 warnings (8 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. 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. 11 warnings generated. >> drivers/gpu/host1x/intr.c:29:2: warning: Attempt to free released memory >> [clang-analyzer-unix.Malloc] kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ drivers/gpu/host1x/intr.c:257:6: note: Assuming the condition is true if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) == ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/host1x/intr.c:257:2: note: Taking true branch if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) == ^ drivers/gpu/host1x/intr.c:260:3: note: Calling 'kref_put' kref_put(&waiter->refcount, waiter_release); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kref.h:64:6: note: Assuming the condition is true if (refcount_dec_and_test(&kref->refcount)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kref.h:64:2: note: Taking true branch if (refcount_dec_and_test(&kref->refcount)) { ^ include/linux/kref.h:65:3: note: Calling 'waiter_release' release(kref); ^~~~~~~~~~~~~ drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ include/linux/kernel.h:709:61: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ drivers/gpu/host1x/intr.c:29:8: note: Taking false branch kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ include/linux/kernel.h:709:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^ 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/host1x/intr.c:29:8: note: Loop condition is false. Exiting loop kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ include/linux/kernel.h:709:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^ 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/host1x/intr.c:29:2: note: Memory is released kfree(container_of(kref, struct host1x_waitlist, refcount)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kref.h:65:3: note: Returning; memory was released release(kref); ^~~~~~~~~~~~~ drivers/gpu/host1x/intr.c:260:3: note: Returning; memory was released kref_put(&waiter->refcount, waiter_release); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/host1x/intr.c:264:6: note: Assuming 'flush' is false if (flush) { ^~~~~ drivers/gpu/host1x/intr.c:264:2: note: Taking false branch if (flush) { ^ drivers/gpu/host1x/intr.c:270:2: note: Calling 'kref_put' kref_put(&waiter->refcount, waiter_release); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kref.h:64:6: note: Assuming the condition is true if (refcount_dec_and_test(&kref->refcount)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kref.h:64:2: note: Taking true branch if (refcount_dec_and_test(&kref->refcount)) { ^ include/linux/kref.h:65:3: note: Calling 'waiter_release' release(kref); ^~~~~~~~~~~~~ drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ include/linux/kernel.h:709:61: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ drivers/gpu/host1x/intr.c:29:8: note: Taking false branch kfree(container_of(kref, struct host1x_waitlist, refcount)); ^ include/linux/kernel.h:709:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ vim +29 drivers/gpu/host1x/intr.c 7ede0b0bf3e259 Terje Bergstrom 2013-03-22 26 7ede0b0bf3e259 Terje Bergstrom 2013-03-22 27 static void waiter_release(struct kref *kref) 7ede0b0bf3e259 Terje Bergstrom 2013-03-22 28 { 7ede0b0bf3e259 Terje Bergstrom 2013-03-22 @29 kfree(container_of(kref, struct host1x_waitlist, refcount)); 7ede0b0bf3e259 Terje Bergstrom 2013-03-22 30 } 7ede0b0bf3e259 Terje Bergstrom 2013-03-22 31 :::::: The code at line 29 was first introduced by commit :::::: 7ede0b0bf3e2595d40d6195b6fe4c4dcef438830 gpu: host1x: Add syncpoint wait and interrupts :::::: TO: Terje Bergstrom <tbergst...@nvidia.com> :::::: CC: Thierry Reding <thierry.red...@avionic-design.de> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org