* [android-common:android-mainline-desktop 7/7] include/linux/container_of.h:20:28: error: dereferencing pointer to incomplete type 'struct iommu_attach_handle'
@ 2025-11-27 12:56 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-11-27 12:56 UTC (permalink / raw)
To: cros-kernel-buildreports; +Cc: oe-kbuild-all
Hi Isaac,
FYI, the error/warning still remains.
tree: https://android.googlesource.com/kernel/common android-mainline-desktop
head: ed5138861789485c74044363c936de3705a4879d
commit: 06f8e52b34f38555bb820ac1cb1d9547a3c9c50a [7/7] ANDROID: GKI: Introduce GKI_HIDDEN_IOMMU_CONFIGS
config: arm-randconfig-r071-20251127 (https://download.01.org/0day-ci/archive/20251127/202511272028.uefimqq4-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251127/202511272028.uefimqq4-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/202511272028.uefimqq4-lkp@intel.com/
All errors (new ones prefixed by >>):
^~~~~~~~~~~~~
include/asm-generic/rwonce.h:60:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
compiletime_assert_rwonce_type(x); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/barrier.h:197:2: note: in expansion of macro 'WRITE_ONCE'
WRITE_ONCE(*p, v); \
^~~~~~~~~~
drivers/iommu/iommu-sva.c:51:2: note: in expansion of macro 'smp_store_release'
smp_store_release(&mm->iommu_mm, iommu_mm);
^~~~~~~~~~~~~~~~~
drivers/iommu/iommu-sva.c:51:25: error: 'struct mm_struct' has no member named 'iommu_mm'; did you mean 'mm_mt'?
smp_store_release(&mm->iommu_mm, iommu_mm);
^~~~~~~~
include/linux/compiler_types.h:548:9: note: in definition of macro '__compiletime_assert'
if (!(condition)) \
^~~~~~~~~
include/linux/compiler_types.h:568:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
^~~~~~~~~~~~~
include/asm-generic/rwonce.h:60:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
compiletime_assert_rwonce_type(x); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/barrier.h:197:2: note: in expansion of macro 'WRITE_ONCE'
WRITE_ONCE(*p, v); \
^~~~~~~~~~
drivers/iommu/iommu-sva.c:51:2: note: in expansion of macro 'smp_store_release'
smp_store_release(&mm->iommu_mm, iommu_mm);
^~~~~~~~~~~~~~~~~
drivers/iommu/iommu-sva.c:51:25: error: 'struct mm_struct' has no member named 'iommu_mm'; did you mean 'mm_mt'?
smp_store_release(&mm->iommu_mm, iommu_mm);
^~~~~~~~
include/linux/compiler_types.h:548:9: note: in definition of macro '__compiletime_assert'
if (!(condition)) \
^~~~~~~~~
include/linux/compiler_types.h:568:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:60:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
compiletime_assert_rwonce_type(x); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/barrier.h:197:2: note: in expansion of macro 'WRITE_ONCE'
WRITE_ONCE(*p, v); \
^~~~~~~~~~
drivers/iommu/iommu-sva.c:51:2: note: in expansion of macro 'smp_store_release'
smp_store_release(&mm->iommu_mm, iommu_mm);
^~~~~~~~~~~~~~~~~
In file included from ./arch/arm/include/generated/asm/rwonce.h:1,
from include/linux/compiler.h:390,
from arch/arm/include/asm/mmu_context.h:13,
from include/linux/mmu_context.h:5,
from drivers/iommu/iommu-sva.c:5:
drivers/iommu/iommu-sva.c:51:25: error: 'struct mm_struct' has no member named 'iommu_mm'; did you mean 'mm_mt'?
smp_store_release(&mm->iommu_mm, iommu_mm);
^~~~~~~~
include/asm-generic/rwonce.h:55:20: note: in definition of macro '__WRITE_ONCE'
*(volatile typeof(x) *)&(x) = (val); \
^
include/asm-generic/barrier.h:197:2: note: in expansion of macro 'WRITE_ONCE'
WRITE_ONCE(*p, v); \
^~~~~~~~~~
drivers/iommu/iommu-sva.c:51:2: note: in expansion of macro 'smp_store_release'
smp_store_release(&mm->iommu_mm, iommu_mm);
^~~~~~~~~~~~~~~~~
drivers/iommu/iommu-sva.c:51:25: error: 'struct mm_struct' has no member named 'iommu_mm'; did you mean 'mm_mt'?
smp_store_release(&mm->iommu_mm, iommu_mm);
^~~~~~~~
include/asm-generic/rwonce.h:55:27: note: in definition of macro '__WRITE_ONCE'
*(volatile typeof(x) *)&(x) = (val); \
^
include/asm-generic/barrier.h:197:2: note: in expansion of macro 'WRITE_ONCE'
WRITE_ONCE(*p, v); \
^~~~~~~~~~
drivers/iommu/iommu-sva.c:51:2: note: in expansion of macro 'smp_store_release'
smp_store_release(&mm->iommu_mm, iommu_mm);
^~~~~~~~~~~~~~~~~
drivers/iommu/iommu-sva.c: At top level:
drivers/iommu/iommu-sva.c:68:19: error: redefinition of 'iommu_sva_bind_device'
struct iommu_sva *iommu_sva_bind_device(struct device *dev, struct mm_struct *mm)
^~~~~~~~~~~~~~~~~~~~~
In file included from drivers/iommu/iommu-sva.c:8:
include/linux/iommu.h:1576:1: note: previous definition of 'iommu_sva_bind_device' was here
iommu_sva_bind_device(struct device *dev, struct mm_struct *mm)
^~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/bitfield.h:10,
from arch/arm/include/asm/ptrace.h:13,
from arch/arm/include/asm/processor.h:14,
from include/linux/sched.h:13,
from arch/arm/include/asm/mmu_context.h:14,
from include/linux/mmu_context.h:5,
from drivers/iommu/iommu-sva.c:5:
drivers/iommu/iommu-sva.c: In function 'iommu_sva_bind_device':
>> include/linux/container_of.h:20:28: error: dereferencing pointer to incomplete type 'struct iommu_attach_handle'
static_assert(__same_type(*(ptr), ((type *)0)->member) || \
^~~~~~
include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
#define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
^~~~
include/linux/container_of.h:20:2: note: in expansion of macro 'static_assert'
static_assert(__same_type(*(ptr), ((type *)0)->member) || \
^~~~~~~~~~~~~
include/linux/container_of.h:20:16: note: in expansion of macro '__same_type'
static_assert(__same_type(*(ptr), ((type *)0)->member) || \
^~~~~~~~~~~
drivers/iommu/iommu-sva.c:92:12: note: in expansion of macro 'container_of'
handle = container_of(attach_handle, struct iommu_sva, handle);
^~~~~~~~~~~~
>> include/linux/container_of.h:20:47: error: dereferencing pointer to incomplete type 'struct iommu_sva'
static_assert(__same_type(*(ptr), ((type *)0)->member) || \
^~
include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
#define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
^~~~
include/linux/container_of.h:20:2: note: in expansion of macro 'static_assert'
static_assert(__same_type(*(ptr), ((type *)0)->member) || \
^~~~~~~~~~~~~
include/linux/container_of.h:20:16: note: in expansion of macro '__same_type'
static_assert(__same_type(*(ptr), ((type *)0)->member) || \
^~~~~~~~~~~
drivers/iommu/iommu-sva.c:92:12: note: in expansion of macro 'container_of'
handle = container_of(attach_handle, struct iommu_sva, handle);
^~~~~~~~~~~~
include/linux/compiler_types.h:503:27: error: expression in static assertion is not an integer
#define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
#define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
^~~~
include/linux/container_of.h:20:2: note: in expansion of macro 'static_assert'
static_assert(__same_type(*(ptr), ((type *)0)->member) || \
^~~~~~~~~~~~~
include/linux/container_of.h:20:16: note: in expansion of macro '__same_type'
static_assert(__same_type(*(ptr), ((type *)0)->member) || \
^~~~~~~~~~~
drivers/iommu/iommu-sva.c:92:12: note: in expansion of macro 'container_of'
handle = container_of(attach_handle, struct iommu_sva, handle);
^~~~~~~~~~~~
In file included from include/uapi/linux/posix_types.h:5,
from include/uapi/linux/types.h:14,
from include/linux/types.h:6,
from include/linux/kasan-checks.h:5,
from include/asm-generic/rwonce.h:26,
from ./arch/arm/include/generated/asm/rwonce.h:1,
from include/linux/compiler.h:390,
from arch/arm/include/asm/mmu_context.h:13,
from include/linux/mmu_context.h:5,
from drivers/iommu/iommu-sva.c:5:
include/linux/stddef.h:16:32: error: invalid use of undefined type 'struct iommu_sva'
#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER)
^~~~~~~~~~~~~~~~~~
include/linux/container_of.h:23:21: note: in expansion of macro 'offsetof'
((type *)(__mptr - offsetof(type, member))); })
^~~~~~~~
drivers/iommu/iommu-sva.c:92:12: note: in expansion of macro 'container_of'
handle = container_of(attach_handle, struct iommu_sva, handle);
^~~~~~~~~~~~
drivers/iommu/iommu-sva.c:107:9: warning: assignment to 'struct iommu_sva *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
handle = kzalloc(sizeof(*handle), GFP_KERNEL);
^
In file included from include/linux/list.h:5,
from arch/arm/include/asm/traps.h:6,
from arch/arm/include/asm/thread_info.h:43,
from include/linux/thread_info.h:60,
from include/linux/sched.h:14,
from arch/arm/include/asm/mmu_context.h:14,
from include/linux/mmu_context.h:5,
from drivers/iommu/iommu-sva.c:5:
drivers/iommu/iommu-sva.c:114:35: error: 'struct mm_struct' has no member named 'iommu_mm'; did you mean 'mm_mt'?
list_for_each_entry(domain, &mm->iommu_mm->sva_domains, next) {
^~~~~~~~
include/linux/container_of.h:19:26: note: in definition of macro 'container_of'
void *__mptr = (void *)(ptr); \
^~~
include/linux/list.h:612:2: note: in expansion of macro 'list_entry'
list_entry((ptr)->next, type, member)
^~~~~~~~~~
include/linux/list.h:770:13: note: in expansion of macro 'list_first_entry'
for (pos = list_first_entry(head, typeof(*pos), member); \
^~~~~~~~~~~~~~~~
drivers/iommu/iommu-sva.c:114:2: note: in expansion of macro 'list_for_each_entry'
list_for_each_entry(domain, &mm->iommu_mm->sva_domains, next) {
^~~~~~~~~~~~~~~~~~~
In file included from include/linux/bitfield.h:10,
from arch/arm/include/asm/ptrace.h:13,
from arch/arm/include/asm/processor.h:14,
from include/linux/sched.h:13,
from arch/arm/include/asm/mmu_context.h:14,
from include/linux/mmu_context.h:5,
from drivers/iommu/iommu-sva.c:5:
drivers/iommu/iommu-sva.c:114:35: error: 'struct mm_struct' has no member named 'iommu_mm'; did you mean 'mm_mt'?
list_for_each_entry(domain, &mm->iommu_mm->sva_domains, next) {
^~~~~~~~
include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
#define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
^~~~
include/linux/container_of.h:20:2: note: in expansion of macro 'static_assert'
static_assert(__same_type(*(ptr), ((type *)0)->member) || \
^~~~~~~~~~~~~
include/linux/container_of.h:20:16: note: in expansion of macro '__same_type'
static_assert(__same_type(*(ptr), ((type *)0)->member) || \
^~~~~~~~~~~
include/linux/list.h:601:2: note: in expansion of macro 'container_of'
container_of(ptr, type, member)
^~~~~~~~~~~~
include/linux/list.h:612:2: note: in expansion of macro 'list_entry'
list_entry((ptr)->next, type, member)
^~~~~~~~~~
include/linux/list.h:770:13: note: in expansion of macro 'list_first_entry'
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for DRM_TTM
Depends on [n]: HAS_IOMEM [=y] && DRM [=m] && MMU [=n]
Selected by [m]:
- GKI_HIDDEN_DRM_CONFIGS [=y] && HAS_IOMEM [=y] && DRM [=m]
WARNING: unmet direct dependencies detected for USB_PHY
Depends on [n]: USB_SUPPORT [=n]
Selected by [y]:
- GKI_HIDDEN_USB_CONFIGS [=y]
WARNING: unmet direct dependencies detected for DRM_GEM_SHMEM_HELPER
Depends on [n]: HAS_IOMEM [=y] && DRM [=m] && MMU [=n]
Selected by [m]:
- GKI_HIDDEN_DRM_CONFIGS [=y] && DRM [=m]
WARNING: unmet direct dependencies detected for BALLOON_COMPACTION
Depends on [n]: COMPACTION [=n] && MEMORY_BALLOON [=y]
Selected by [y]:
- GKI_HIDDEN_MM_CONFIGS [=y]
WARNING: unmet direct dependencies detected for PHYLINK
Depends on [n]: NETDEVICES [=n]
Selected by [y]:
- GKI_HIDDEN_ETHERNET_CONFIGS [=y]
WARNING: unmet direct dependencies detected for IOMMU_SVA
Depends on [n]: IOMMU_SUPPORT [=n]
Selected by [y]:
- GKI_HIDDEN_IOMMU_CONFIGS [=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]
vim +20 include/linux/container_of.h
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 9
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 10 /**
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 11 * container_of - cast a member of a structure out to the containing structure
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 12 * @ptr: the pointer to the member.
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 13 * @type: the type of the container struct this is embedded in.
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 14 * @member: the name of the member within the struct.
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 15 *
7376e561fd2e01 Sakari Ailus 2022-10-24 16 * WARNING: any const qualifier of @ptr is lost.
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 17 */
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 18 #define container_of(ptr, type, member) ({ \
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 19 void *__mptr = (void *)(ptr); \
e1edc277e6f6df Rasmus Villemoes 2021-11-08 @20 static_assert(__same_type(*(ptr), ((type *)0)->member) || \
e1edc277e6f6df Rasmus Villemoes 2021-11-08 21 __same_type(*(ptr), void), \
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 22 "pointer type mismatch in container_of()"); \
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 23 ((type *)(__mptr - offsetof(type, member))); })
d2a8ebbf8192b8 Andy Shevchenko 2021-11-08 24
:::::: The code at line 20 was first introduced by commit
:::::: e1edc277e6f6dfb372216522dfc57f9381c39e35 linux/container_of.h: switch to static_assert
:::::: TO: Rasmus Villemoes <linux@rasmusvillemoes.dk>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
--
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:[~2025-11-27 12:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-27 12:56 [android-common:android-mainline-desktop 7/7] include/linux/container_of.h:20:28: error: dereferencing pointer to incomplete type 'struct iommu_attach_handle' 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.