* [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure
@ 2024-02-28 11:09 Tasmiya Nalatwad
2024-02-28 11:22 ` [revert 0d60d8df6f49] [netdev/net] " Tasmiya Nalatwad
2024-02-28 14:07 ` [revert 0d60d8df6f49] [net/net-next] " Vadim Fedorenko
0 siblings, 2 replies; 14+ messages in thread
From: Tasmiya Nalatwad @ 2024-02-28 11:09 UTC (permalink / raw)
To: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Cc: venkat88, vadim.fedorenko, mputtash@linux.vnet.com,
arkadiusz.kubalewski, sachinp@linux.vnet.com,
abdhalee@linux.vnet.ibm.com, edumazet, jiri, kuba
Greetings,
[revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure
Reverting below commit fixes the issue
commit 0d60d8df6f493bb46bf5db40d39dd60a1bafdd4e
dpll: rely on rcu for netdev_dpll_pin()
--- Traces ---
./include/linux/dpll.h: In function ‘netdev_dpll_pin’:
./include/linux/rcupdate.h:439:9: error: dereferencing pointer to
incomplete type ‘struct dpll_pin’
typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
^
./include/linux/rcupdate.h:587:2: note: in expansion of macro
‘__rcu_dereference_check’
__rcu_dereference_check((p), __UNIQUE_ID(rcu), \
^~~~~~~~~~~~~~~~~~~~~~~
./include/linux/rtnetlink.h:70:2: note: in expansion of macro
‘rcu_dereference_check’
rcu_dereference_check(p, lockdep_rtnl_is_held())
^~~~~~~~~~~~~~~~~~~~~
./include/linux/dpll.h:175:9: note: in expansion of macro
‘rcu_dereference_rtnl’
return rcu_dereference_rtnl(dev->dpll_pin);
^~~~~~~~~~~~~~~~~~~~
make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_core.o] Error 1
make[4]: *** Waiting for unfinished jobs....
AR net/mpls/built-in.a
AR net/l3mdev/built-in.a
In file included from ./include/linux/rbtree.h:24,
from ./include/linux/mm_types.h:11,
from ./include/linux/mmzone.h:22,
from ./include/linux/gfp.h:7,
from ./include/linux/umh.h:4,
from ./include/linux/kmod.h:9,
from ./include/linux/module.h:17,
from drivers/dpll/dpll_netlink.c:9:
./include/linux/dpll.h: In function ‘netdev_dpll_pin’:
./include/linux/rcupdate.h:439:9: error: dereferencing pointer to
incomplete type ‘struct dpll_pin’
typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
^
./include/linux/rcupdate.h:587:2: note: in expansion of macro
‘__rcu_dereference_check’
__rcu_dereference_check((p), __UNIQUE_ID(rcu), \
^~~~~~~~~~~~~~~~~~~~~~~
./include/linux/rtnetlink.h:70:2: note: in expansion of macro
‘rcu_dereference_check’
rcu_dereference_check(p, lockdep_rtnl_is_held())
^~~~~~~~~~~~~~~~~~~~~
./include/linux/dpll.h:175:9: note: in expansion of macro
‘rcu_dereference_rtnl’
return rcu_dereference_rtnl(dev->dpll_pin);
^~~~~~~~~~~~~~~~~~~~
make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_netlink.o]
Error 1
make[3]: *** [scripts/Makefile.build:481: drivers/dpll] Error 2
make[3]: *** Waiting for unfinished jobs....
In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1,
from ./include/linux/compiler.h:251,
from ./include/linux/instrumented.h:10,
from ./include/linux/uaccess.h:6,
from net/core/dev.c:71:
net/core/dev.c: In function ‘netdev_dpll_pin_assign’:
./include/linux/rcupdate.h:462:36: error: dereferencing pointer to
incomplete type ‘struct dpll_pin’
#define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v)
^~~~
./include/asm-generic/rwonce.h:55:33: note: in definition of macro
‘__WRITE_ONCE’
*(volatile typeof(x) *)&(x) = (val); \
^~~
./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro
‘WRITE_ONCE’
WRITE_ONCE(*p, v); \
^~~~~~~~~~
./include/asm-generic/barrier.h:172:55: note: in expansion of macro
‘__smp_store_release’
#define smp_store_release(p, v) do { kcsan_release();
__smp_store_release(p, v); } while (0)
^~~~~~~~~~~~~~~~~~~
./include/linux/rcupdate.h:503:3: note: in expansion of macro
‘smp_store_release’
smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \
^~~~~~~~~~~~~~~~~
./include/linux/rcupdate.h:503:25: note: in expansion of macro
‘RCU_INITIALIZER’
smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \
^~~~~~~~~~~~~~~
net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’
rcu_assign_pointer(dev->dpll_pin, dpll_pin);
^~~~~~~~~~~~~~~~~~
make[4]: *** [scripts/Makefile.build:243: net/core/dev.o] Error 1
make[4]: *** Waiting for unfinished jobs....
AR drivers/net/ethernet/built-in.a
AR drivers/net/built-in.a
AR net/dcb/built-in.a
AR net/netlabel/built-in.a
AR net/strparser/built-in.a
AR net/handshake/built-in.a
GEN lib/test_fortify.log
AR net/8021q/built-in.a
AR net/nsh/built-in.a
AR net/unix/built-in.a
CC lib/string.o
AR net/packet/built-in.a
AR net/switchdev/built-in.a
AR lib/lib.a
AR net/mptcp/built-in.a
AR net/devlink/built-in.a
In file included from ./include/linux/rbtree.h:24,
from ./include/linux/mm_types.h:11,
from ./include/linux/mmzone.h:22,
from ./include/linux/gfp.h:7,
from ./include/linux/umh.h:4,
from ./include/linux/kmod.h:9,
from ./include/linux/module.h:17,
from net/core/rtnetlink.c:17:
./include/linux/dpll.h: In function ‘netdev_dpll_pin’:
./include/linux/rcupdate.h:439:9: error: dereferencing pointer to
incomplete type ‘struct dpll_pin’
typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
^
./include/linux/rcupdate.h:587:2: note: in expansion of macro
‘__rcu_dereference_check’
__rcu_dereference_check((p), __UNIQUE_ID(rcu), \
^~~~~~~~~~~~~~~~~~~~~~~
./include/linux/rtnetlink.h:70:2: note: in expansion of macro
‘rcu_dereference_check’
rcu_dereference_check(p, lockdep_rtnl_is_held())
^~~~~~~~~~~~~~~~~~~~~
./include/linux/dpll.h:175:9: note: in expansion of macro
‘rcu_dereference_rtnl’
return rcu_dereference_rtnl(dev->dpll_pin);
^~~~~~~~~~~~~~~~~~~~
In file included from net/core/rtnetlink.c:60:
./include/linux/dpll.h:179:1: error: control reaches end of non-void
function [-Werror=return-type]
}
--
Regards,
Tasmiya Nalatwad
IBM Linux Technology Center
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [revert 0d60d8df6f49] [netdev/net] [6.8-rc5] Build Failure 2024-02-28 11:09 [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure Tasmiya Nalatwad @ 2024-02-28 11:22 ` Tasmiya Nalatwad 2024-02-28 14:07 ` [revert 0d60d8df6f49] [net/net-next] " Vadim Fedorenko 1 sibling, 0 replies; 14+ messages in thread From: Tasmiya Nalatwad @ 2024-02-28 11:22 UTC (permalink / raw) To: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: venkat88, vadim.fedorenko, mputtash@linux.vnet.com, arkadiusz.kubalewski, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, edumazet, jiri, kuba > Greetings, > > [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure > > Reverting below commit fixes the issue > > commit 0d60d8df6f493bb46bf5db40d39dd60a1bafdd4e > dpll: rely on rcu for netdev_dpll_pin() > > --- Traces --- > > ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > incomplete type ‘struct dpll_pin’ > typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > ^ > ./include/linux/rcupdate.h:587:2: note: in expansion of macro > ‘__rcu_dereference_check’ > __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > ^~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > ‘rcu_dereference_check’ > rcu_dereference_check(p, lockdep_rtnl_is_held()) > ^~~~~~~~~~~~~~~~~~~~~ > ./include/linux/dpll.h:175:9: note: in expansion of macro > ‘rcu_dereference_rtnl’ > return rcu_dereference_rtnl(dev->dpll_pin); > ^~~~~~~~~~~~~~~~~~~~ > make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_core.o] > Error 1 > make[4]: *** Waiting for unfinished jobs.... > AR net/mpls/built-in.a > AR net/l3mdev/built-in.a > In file included from ./include/linux/rbtree.h:24, > from ./include/linux/mm_types.h:11, > from ./include/linux/mmzone.h:22, > from ./include/linux/gfp.h:7, > from ./include/linux/umh.h:4, > from ./include/linux/kmod.h:9, > from ./include/linux/module.h:17, > from drivers/dpll/dpll_netlink.c:9: > ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > incomplete type ‘struct dpll_pin’ > typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > ^ > ./include/linux/rcupdate.h:587:2: note: in expansion of macro > ‘__rcu_dereference_check’ > __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > ^~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > ‘rcu_dereference_check’ > rcu_dereference_check(p, lockdep_rtnl_is_held()) > ^~~~~~~~~~~~~~~~~~~~~ > ./include/linux/dpll.h:175:9: note: in expansion of macro > ‘rcu_dereference_rtnl’ > return rcu_dereference_rtnl(dev->dpll_pin); > ^~~~~~~~~~~~~~~~~~~~ > make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_netlink.o] > Error 1 > make[3]: *** [scripts/Makefile.build:481: drivers/dpll] Error 2 > make[3]: *** Waiting for unfinished jobs.... > In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, > from ./include/linux/compiler.h:251, > from ./include/linux/instrumented.h:10, > from ./include/linux/uaccess.h:6, > from net/core/dev.c:71: > net/core/dev.c: In function ‘netdev_dpll_pin_assign’: > ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to > incomplete type ‘struct dpll_pin’ > #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) > ^~~~ > ./include/asm-generic/rwonce.h:55:33: note: in definition of macro > ‘__WRITE_ONCE’ > *(volatile typeof(x) *)&(x) = (val); \ > ^~~ > ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro > ‘WRITE_ONCE’ > WRITE_ONCE(*p, v); \ > ^~~~~~~~~~ > ./include/asm-generic/barrier.h:172:55: note: in expansion of macro > ‘__smp_store_release’ > #define smp_store_release(p, v) do { kcsan_release(); > __smp_store_release(p, v); } while (0) > ^~~~~~~~~~~~~~~~~~~ > ./include/linux/rcupdate.h:503:3: note: in expansion of macro > ‘smp_store_release’ > smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ > ^~~~~~~~~~~~~~~~~ > ./include/linux/rcupdate.h:503:25: note: in expansion of macro > ‘RCU_INITIALIZER’ > smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ > ^~~~~~~~~~~~~~~ > net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ > rcu_assign_pointer(dev->dpll_pin, dpll_pin); > ^~~~~~~~~~~~~~~~~~ > make[4]: *** [scripts/Makefile.build:243: net/core/dev.o] Error 1 > make[4]: *** Waiting for unfinished jobs.... > AR drivers/net/ethernet/built-in.a > AR drivers/net/built-in.a > AR net/dcb/built-in.a > AR net/netlabel/built-in.a > AR net/strparser/built-in.a > AR net/handshake/built-in.a > GEN lib/test_fortify.log > AR net/8021q/built-in.a > AR net/nsh/built-in.a > AR net/unix/built-in.a > CC lib/string.o > AR net/packet/built-in.a > AR net/switchdev/built-in.a > AR lib/lib.a > AR net/mptcp/built-in.a > AR net/devlink/built-in.a > In file included from ./include/linux/rbtree.h:24, > from ./include/linux/mm_types.h:11, > from ./include/linux/mmzone.h:22, > from ./include/linux/gfp.h:7, > from ./include/linux/umh.h:4, > from ./include/linux/kmod.h:9, > from ./include/linux/module.h:17, > from net/core/rtnetlink.c:17: > ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > incomplete type ‘struct dpll_pin’ > typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > ^ > ./include/linux/rcupdate.h:587:2: note: in expansion of macro > ‘__rcu_dereference_check’ > __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > ^~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > ‘rcu_dereference_check’ > rcu_dereference_check(p, lockdep_rtnl_is_held()) > ^~~~~~~~~~~~~~~~~~~~~ > ./include/linux/dpll.h:175:9: note: in expansion of macro > ‘rcu_dereference_rtnl’ > return rcu_dereference_rtnl(dev->dpll_pin); > ^~~~~~~~~~~~~~~~~~~~ > In file included from net/core/rtnetlink.c:60: > ./include/linux/dpll.h:179:1: error: control reaches end of non-void > function [-Werror=return-type] > } -- Regards, Tasmiya Nalatwad IBM Linux Technology Center ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-28 11:09 [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure Tasmiya Nalatwad 2024-02-28 11:22 ` [revert 0d60d8df6f49] [netdev/net] " Tasmiya Nalatwad @ 2024-02-28 14:07 ` Vadim Fedorenko 2024-02-28 14:43 ` Eric Dumazet 2024-03-04 11:33 ` Tasmiya Nalatwad 1 sibling, 2 replies; 14+ messages in thread From: Vadim Fedorenko @ 2024-02-28 14:07 UTC (permalink / raw) To: linux-kernel@vger.kernel.org, edumazet Cc: venkat88, mputtash@linux.vnet.com, Tasmiya Nalatwad, arkadiusz.kubalewski, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, jiri, kuba, linuxppc-dev@lists.ozlabs.org On 28/02/2024 11:09, Tasmiya Nalatwad wrote: > Greetings, > > [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure > > Reverting below commit fixes the issue > > commit 0d60d8df6f493bb46bf5db40d39dd60a1bafdd4e > dpll: rely on rcu for netdev_dpll_pin() > > --- Traces --- > > ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > incomplete type ‘struct dpll_pin’ > typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > ^ > ./include/linux/rcupdate.h:587:2: note: in expansion of macro > ‘__rcu_dereference_check’ > __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > ^~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > ‘rcu_dereference_check’ > rcu_dereference_check(p, lockdep_rtnl_is_held()) > ^~~~~~~~~~~~~~~~~~~~~ > ./include/linux/dpll.h:175:9: note: in expansion of macro > ‘rcu_dereference_rtnl’ > return rcu_dereference_rtnl(dev->dpll_pin); > ^~~~~~~~~~~~~~~~~~~~ > make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_core.o] Error 1 > make[4]: *** Waiting for unfinished jobs.... > AR net/mpls/built-in.a > AR net/l3mdev/built-in.a > In file included from ./include/linux/rbtree.h:24, > from ./include/linux/mm_types.h:11, > from ./include/linux/mmzone.h:22, > from ./include/linux/gfp.h:7, > from ./include/linux/umh.h:4, > from ./include/linux/kmod.h:9, > from ./include/linux/module.h:17, > from drivers/dpll/dpll_netlink.c:9: > ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > incomplete type ‘struct dpll_pin’ > typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > ^ > ./include/linux/rcupdate.h:587:2: note: in expansion of macro > ‘__rcu_dereference_check’ > __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > ^~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > ‘rcu_dereference_check’ > rcu_dereference_check(p, lockdep_rtnl_is_held()) > ^~~~~~~~~~~~~~~~~~~~~ > ./include/linux/dpll.h:175:9: note: in expansion of macro > ‘rcu_dereference_rtnl’ > return rcu_dereference_rtnl(dev->dpll_pin); > ^~~~~~~~~~~~~~~~~~~~ > make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_netlink.o] > Error 1 > make[3]: *** [scripts/Makefile.build:481: drivers/dpll] Error 2 > make[3]: *** Waiting for unfinished jobs.... > In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, > from ./include/linux/compiler.h:251, > from ./include/linux/instrumented.h:10, > from ./include/linux/uaccess.h:6, > from net/core/dev.c:71: > net/core/dev.c: In function ‘netdev_dpll_pin_assign’: > ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to > incomplete type ‘struct dpll_pin’ > #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) > ^~~~ > ./include/asm-generic/rwonce.h:55:33: note: in definition of macro > ‘__WRITE_ONCE’ > *(volatile typeof(x) *)&(x) = (val); \ > ^~~ > ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro > ‘WRITE_ONCE’ > WRITE_ONCE(*p, v); \ > ^~~~~~~~~~ > ./include/asm-generic/barrier.h:172:55: note: in expansion of macro > ‘__smp_store_release’ > #define smp_store_release(p, v) do { kcsan_release(); > __smp_store_release(p, v); } while (0) > ^~~~~~~~~~~~~~~~~~~ > ./include/linux/rcupdate.h:503:3: note: in expansion of macro > ‘smp_store_release’ > smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ > ^~~~~~~~~~~~~~~~~ > ./include/linux/rcupdate.h:503:25: note: in expansion of macro > ‘RCU_INITIALIZER’ > smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ > ^~~~~~~~~~~~~~~ > net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ > rcu_assign_pointer(dev->dpll_pin, dpll_pin); > ^~~~~~~~~~~~~~~~~~ > make[4]: *** [scripts/Makefile.build:243: net/core/dev.o] Error 1 > make[4]: *** Waiting for unfinished jobs.... > AR drivers/net/ethernet/built-in.a > AR drivers/net/built-in.a > AR net/dcb/built-in.a > AR net/netlabel/built-in.a > AR net/strparser/built-in.a > AR net/handshake/built-in.a > GEN lib/test_fortify.log > AR net/8021q/built-in.a > AR net/nsh/built-in.a > AR net/unix/built-in.a > CC lib/string.o > AR net/packet/built-in.a > AR net/switchdev/built-in.a > AR lib/lib.a > AR net/mptcp/built-in.a > AR net/devlink/built-in.a > In file included from ./include/linux/rbtree.h:24, > from ./include/linux/mm_types.h:11, > from ./include/linux/mmzone.h:22, > from ./include/linux/gfp.h:7, > from ./include/linux/umh.h:4, > from ./include/linux/kmod.h:9, > from ./include/linux/module.h:17, > from net/core/rtnetlink.c:17: > ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > incomplete type ‘struct dpll_pin’ > typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > ^ > ./include/linux/rcupdate.h:587:2: note: in expansion of macro > ‘__rcu_dereference_check’ > __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > ^~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > ‘rcu_dereference_check’ > rcu_dereference_check(p, lockdep_rtnl_is_held()) > ^~~~~~~~~~~~~~~~~~~~~ > ./include/linux/dpll.h:175:9: note: in expansion of macro > ‘rcu_dereference_rtnl’ > return rcu_dereference_rtnl(dev->dpll_pin); > ^~~~~~~~~~~~~~~~~~~~ > In file included from net/core/rtnetlink.c:60: > ./include/linux/dpll.h:179:1: error: control reaches end of non-void > function [-Werror=return-type] > } > Hi, Eric! Looks like we have to move struct dpll_pin definition to include/linux/dpll.h to have this fixed, right? ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-28 14:07 ` [revert 0d60d8df6f49] [net/net-next] " Vadim Fedorenko @ 2024-02-28 14:43 ` Eric Dumazet 2024-02-28 15:44 ` Christophe Leroy 2024-02-29 8:04 ` Tasmiya Nalatwad 2024-03-04 11:33 ` Tasmiya Nalatwad 1 sibling, 2 replies; 14+ messages in thread From: Eric Dumazet @ 2024-02-28 14:43 UTC (permalink / raw) To: Vadim Fedorenko Cc: venkat88, mputtash@linux.vnet.com, Tasmiya Nalatwad, linux-kernel@vger.kernel.org, arkadiusz.kubalewski, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, jiri, kuba, linuxppc-dev@lists.ozlabs.org On Wed, Feb 28, 2024 at 3:07 PM Vadim Fedorenko <vadim.fedorenko@linux.dev> wrote: > > On 28/02/2024 11:09, Tasmiya Nalatwad wrote: > > Greetings, > > > > [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure > > > > Reverting below commit fixes the issue > > > > commit 0d60d8df6f493bb46bf5db40d39dd60a1bafdd4e > > dpll: rely on rcu for netdev_dpll_pin() > > > > --- Traces --- > > > > ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > > ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > > incomplete type ‘struct dpll_pin’ > > typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > > ^ > > ./include/linux/rcupdate.h:587:2: note: in expansion of macro > > ‘__rcu_dereference_check’ > > __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > > ^~~~~~~~~~~~~~~~~~~~~~~ > > ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > > ‘rcu_dereference_check’ > > rcu_dereference_check(p, lockdep_rtnl_is_held()) > > ^~~~~~~~~~~~~~~~~~~~~ > > ./include/linux/dpll.h:175:9: note: in expansion of macro > > ‘rcu_dereference_rtnl’ > > return rcu_dereference_rtnl(dev->dpll_pin); > > ^~~~~~~~~~~~~~~~~~~~ > > make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_core.o] Error 1 > > make[4]: *** Waiting for unfinished jobs.... > > AR net/mpls/built-in.a > > AR net/l3mdev/built-in.a > > In file included from ./include/linux/rbtree.h:24, > > from ./include/linux/mm_types.h:11, > > from ./include/linux/mmzone.h:22, > > from ./include/linux/gfp.h:7, > > from ./include/linux/umh.h:4, > > from ./include/linux/kmod.h:9, > > from ./include/linux/module.h:17, > > from drivers/dpll/dpll_netlink.c:9: > > ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > > ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > > incomplete type ‘struct dpll_pin’ > > typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > > ^ > > ./include/linux/rcupdate.h:587:2: note: in expansion of macro > > ‘__rcu_dereference_check’ > > __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > > ^~~~~~~~~~~~~~~~~~~~~~~ > > ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > > ‘rcu_dereference_check’ > > rcu_dereference_check(p, lockdep_rtnl_is_held()) > > ^~~~~~~~~~~~~~~~~~~~~ > > ./include/linux/dpll.h:175:9: note: in expansion of macro > > ‘rcu_dereference_rtnl’ > > return rcu_dereference_rtnl(dev->dpll_pin); > > ^~~~~~~~~~~~~~~~~~~~ > > make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_netlink.o] > > Error 1 > > make[3]: *** [scripts/Makefile.build:481: drivers/dpll] Error 2 > > make[3]: *** Waiting for unfinished jobs.... > > In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, > > from ./include/linux/compiler.h:251, > > from ./include/linux/instrumented.h:10, > > from ./include/linux/uaccess.h:6, > > from net/core/dev.c:71: > > net/core/dev.c: In function ‘netdev_dpll_pin_assign’: > > ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to > > incomplete type ‘struct dpll_pin’ > > #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) > > ^~~~ > > ./include/asm-generic/rwonce.h:55:33: note: in definition of macro > > ‘__WRITE_ONCE’ > > *(volatile typeof(x) *)&(x) = (val); \ > > ^~~ > > ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro > > ‘WRITE_ONCE’ > > WRITE_ONCE(*p, v); \ > > ^~~~~~~~~~ > > ./include/asm-generic/barrier.h:172:55: note: in expansion of macro > > ‘__smp_store_release’ > > #define smp_store_release(p, v) do { kcsan_release(); > > __smp_store_release(p, v); } while (0) > > ^~~~~~~~~~~~~~~~~~~ > > ./include/linux/rcupdate.h:503:3: note: in expansion of macro > > ‘smp_store_release’ > > smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ > > ^~~~~~~~~~~~~~~~~ > > ./include/linux/rcupdate.h:503:25: note: in expansion of macro > > ‘RCU_INITIALIZER’ > > smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ > > ^~~~~~~~~~~~~~~ > > net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ > > rcu_assign_pointer(dev->dpll_pin, dpll_pin); > > ^~~~~~~~~~~~~~~~~~ > > make[4]: *** [scripts/Makefile.build:243: net/core/dev.o] Error 1 > > make[4]: *** Waiting for unfinished jobs.... > > AR drivers/net/ethernet/built-in.a > > AR drivers/net/built-in.a > > AR net/dcb/built-in.a > > AR net/netlabel/built-in.a > > AR net/strparser/built-in.a > > AR net/handshake/built-in.a > > GEN lib/test_fortify.log > > AR net/8021q/built-in.a > > AR net/nsh/built-in.a > > AR net/unix/built-in.a > > CC lib/string.o > > AR net/packet/built-in.a > > AR net/switchdev/built-in.a > > AR lib/lib.a > > AR net/mptcp/built-in.a > > AR net/devlink/built-in.a > > In file included from ./include/linux/rbtree.h:24, > > from ./include/linux/mm_types.h:11, > > from ./include/linux/mmzone.h:22, > > from ./include/linux/gfp.h:7, > > from ./include/linux/umh.h:4, > > from ./include/linux/kmod.h:9, > > from ./include/linux/module.h:17, > > from net/core/rtnetlink.c:17: > > ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > > ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > > incomplete type ‘struct dpll_pin’ > > typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > > ^ > > ./include/linux/rcupdate.h:587:2: note: in expansion of macro > > ‘__rcu_dereference_check’ > > __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > > ^~~~~~~~~~~~~~~~~~~~~~~ > > ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > > ‘rcu_dereference_check’ > > rcu_dereference_check(p, lockdep_rtnl_is_held()) > > ^~~~~~~~~~~~~~~~~~~~~ > > ./include/linux/dpll.h:175:9: note: in expansion of macro > > ‘rcu_dereference_rtnl’ > > return rcu_dereference_rtnl(dev->dpll_pin); > > ^~~~~~~~~~~~~~~~~~~~ > > In file included from net/core/rtnetlink.c:60: > > ./include/linux/dpll.h:179:1: error: control reaches end of non-void > > function [-Werror=return-type] > > } > > > > Hi, Eric! > > Looks like we have to move struct dpll_pin definition to > include/linux/dpll.h to have this fixed, right? > No idea what is wrong. Is it powerpc specific ? Some compiler version ? netdev_dpll_pin() could be moved to net/core/rtnetlink.c, this is the only user. diff --git a/include/linux/dpll.h b/include/linux/dpll.h index 4ec2fe9caf5a3f284afd0cfe4fc7c2bf42cbbc60..72d21e710d7f201d2fc57bb3a32b4bc0ff2b1749 100644 --- a/include/linux/dpll.h +++ b/include/linux/dpll.h @@ -169,13 +169,4 @@ int dpll_device_change_ntf(struct dpll_device *dpll); int dpll_pin_change_ntf(struct dpll_pin *pin); -static inline struct dpll_pin *netdev_dpll_pin(const struct net_device *dev) -{ -#if IS_ENABLED(CONFIG_DPLL) - return rcu_dereference_rtnl(dev->dpll_pin); -#else - return NULL; -#endif -} - #endif diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 9c4f427f3a5057b52ec05405e8b15b8ca2246b4b..32dc601fd8ca66dfcd3cb8f38b533314de02d1d2 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -1053,6 +1053,15 @@ static size_t rtnl_devlink_port_size(const struct net_device *dev) return size; } +static struct dpll_pin *netdev_dpll_pin(const struct net_device *dev) +{ +#if IS_ENABLED(CONFIG_DPLL) + return rcu_dereference_rtnl(dev->dpll_pin); +#else + return NULL; +#endif +} + static size_t rtnl_dpll_pin_size(const struct net_device *dev) { size_t size = nla_total_size(0); /* nest IFLA_DPLL_PIN */ ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-28 14:43 ` Eric Dumazet @ 2024-02-28 15:44 ` Christophe Leroy 2024-02-29 8:04 ` Tasmiya Nalatwad 1 sibling, 0 replies; 14+ messages in thread From: Christophe Leroy @ 2024-02-28 15:44 UTC (permalink / raw) To: Eric Dumazet, Vadim Fedorenko Cc: venkat88@linux.vnet.ibm.com, mputtash@linux.vnet.com, Tasmiya Nalatwad, linux-kernel@vger.kernel.org, arkadiusz.kubalewski@intel.com, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, jiri@nvidia.com, kuba@kernel.org, linuxppc-dev@lists.ozlabs.org Le 28/02/2024 à 15:43, Eric Dumazet a écrit : > On Wed, Feb 28, 2024 at 3:07 PM Vadim Fedorenko > <vadim.fedorenko@linux.dev> wrote: >> >> On 28/02/2024 11:09, Tasmiya Nalatwad wrote: >>> Greetings, >>> >>> [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure >>> >>> Reverting below commit fixes the issue >>> >>> commit 0d60d8df6f493bb46bf5db40d39dd60a1bafdd4e >>> dpll: rely on rcu for netdev_dpll_pin() >>> >>> --- Traces --- >>> >>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>> incomplete type ‘struct dpll_pin’ >>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>> ^ >>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>> ‘__rcu_dereference_check’ >>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>> ^~~~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>> ‘rcu_dereference_check’ >>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>> ^~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>> ‘rcu_dereference_rtnl’ >>> return rcu_dereference_rtnl(dev->dpll_pin); >>> ^~~~~~~~~~~~~~~~~~~~ >>> make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_core.o] Error 1 >>> make[4]: *** Waiting for unfinished jobs.... >>> AR net/mpls/built-in.a >>> AR net/l3mdev/built-in.a >>> In file included from ./include/linux/rbtree.h:24, >>> from ./include/linux/mm_types.h:11, >>> from ./include/linux/mmzone.h:22, >>> from ./include/linux/gfp.h:7, >>> from ./include/linux/umh.h:4, >>> from ./include/linux/kmod.h:9, >>> from ./include/linux/module.h:17, >>> from drivers/dpll/dpll_netlink.c:9: >>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>> incomplete type ‘struct dpll_pin’ >>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>> ^ >>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>> ‘__rcu_dereference_check’ >>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>> ^~~~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>> ‘rcu_dereference_check’ >>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>> ^~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>> ‘rcu_dereference_rtnl’ >>> return rcu_dereference_rtnl(dev->dpll_pin); >>> ^~~~~~~~~~~~~~~~~~~~ >>> make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_netlink.o] >>> Error 1 >>> make[3]: *** [scripts/Makefile.build:481: drivers/dpll] Error 2 >>> make[3]: *** Waiting for unfinished jobs.... >>> In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, >>> from ./include/linux/compiler.h:251, >>> from ./include/linux/instrumented.h:10, >>> from ./include/linux/uaccess.h:6, >>> from net/core/dev.c:71: >>> net/core/dev.c: In function ‘netdev_dpll_pin_assign’: >>> ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to >>> incomplete type ‘struct dpll_pin’ >>> #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) >>> ^~~~ >>> ./include/asm-generic/rwonce.h:55:33: note: in definition of macro >>> ‘__WRITE_ONCE’ >>> *(volatile typeof(x) *)&(x) = (val); \ >>> ^~~ >>> ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro >>> ‘WRITE_ONCE’ >>> WRITE_ONCE(*p, v); \ >>> ^~~~~~~~~~ >>> ./include/asm-generic/barrier.h:172:55: note: in expansion of macro >>> ‘__smp_store_release’ >>> #define smp_store_release(p, v) do { kcsan_release(); >>> __smp_store_release(p, v); } while (0) >>> ^~~~~~~~~~~~~~~~~~~ >>> ./include/linux/rcupdate.h:503:3: note: in expansion of macro >>> ‘smp_store_release’ >>> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >>> ^~~~~~~~~~~~~~~~~ >>> ./include/linux/rcupdate.h:503:25: note: in expansion of macro >>> ‘RCU_INITIALIZER’ >>> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >>> ^~~~~~~~~~~~~~~ >>> net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ >>> rcu_assign_pointer(dev->dpll_pin, dpll_pin); >>> ^~~~~~~~~~~~~~~~~~ >>> make[4]: *** [scripts/Makefile.build:243: net/core/dev.o] Error 1 >>> make[4]: *** Waiting for unfinished jobs.... >>> AR drivers/net/ethernet/built-in.a >>> AR drivers/net/built-in.a >>> AR net/dcb/built-in.a >>> AR net/netlabel/built-in.a >>> AR net/strparser/built-in.a >>> AR net/handshake/built-in.a >>> GEN lib/test_fortify.log >>> AR net/8021q/built-in.a >>> AR net/nsh/built-in.a >>> AR net/unix/built-in.a >>> CC lib/string.o >>> AR net/packet/built-in.a >>> AR net/switchdev/built-in.a >>> AR lib/lib.a >>> AR net/mptcp/built-in.a >>> AR net/devlink/built-in.a >>> In file included from ./include/linux/rbtree.h:24, >>> from ./include/linux/mm_types.h:11, >>> from ./include/linux/mmzone.h:22, >>> from ./include/linux/gfp.h:7, >>> from ./include/linux/umh.h:4, >>> from ./include/linux/kmod.h:9, >>> from ./include/linux/module.h:17, >>> from net/core/rtnetlink.c:17: >>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>> incomplete type ‘struct dpll_pin’ >>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>> ^ >>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>> ‘__rcu_dereference_check’ >>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>> ^~~~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>> ‘rcu_dereference_check’ >>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>> ^~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>> ‘rcu_dereference_rtnl’ >>> return rcu_dereference_rtnl(dev->dpll_pin); >>> ^~~~~~~~~~~~~~~~~~~~ >>> In file included from net/core/rtnetlink.c:60: >>> ./include/linux/dpll.h:179:1: error: control reaches end of non-void >>> function [-Werror=return-type] >>> } >>> >> >> Hi, Eric! >> >> Looks like we have to move struct dpll_pin definition to >> include/linux/dpll.h to have this fixed, right? >> > > No idea what is wrong. Is it powerpc specific ? Some compiler version ? Might be a circular header inclusion. Christophe ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-28 14:43 ` Eric Dumazet 2024-02-28 15:44 ` Christophe Leroy @ 2024-02-29 8:04 ` Tasmiya Nalatwad 2024-02-29 8:55 ` Eric Dumazet 1 sibling, 1 reply; 14+ messages in thread From: Tasmiya Nalatwad @ 2024-02-29 8:04 UTC (permalink / raw) To: Eric Dumazet, Vadim Fedorenko Cc: venkat88, mputtash@linux.vnet.com, linux-kernel@vger.kernel.org, arkadiusz.kubalewski, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, jiri, kuba, linuxppc-dev@lists.ozlabs.org Greetings, I have tried the patch provided below. Moving struct to file "net/core/rtnetlink.c" is not resolving the problem. Please find the below traces. --- Traces --- In file included from ./include/linux/rbtree.h:24, from ./include/linux/mm_types.h:11, from ./include/linux/mmzone.h:22, from ./include/linux/gfp.h:7, from ./include/linux/umh.h:4, from ./include/linux/kmod.h:9, from ./include/linux/module.h:17, from net/core/rtnetlink.c:17: net/core/rtnetlink.c: In function ‘netdev_dpll_pin’: ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to incomplete type ‘struct dpll_pin’ typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ ^ ./include/linux/rcupdate.h:587:2: note: in expansion of macro ‘__rcu_dereference_check’ __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ ^~~~~~~~~~~~~~~~~~~~~~~ ./include/linux/rtnetlink.h:70:2: note: in expansion of macro ‘rcu_dereference_check’ rcu_dereference_check(p, lockdep_rtnl_is_held()) ^~~~~~~~~~~~~~~~~~~~~ net/core/rtnetlink.c:1059:15: note: in expansion of macro ‘rcu_dereference_rtnl’ return rcu_dereference_rtnl(dev->dpll_pin); ^~~~~~~~~~~~~~~~~~~~ CC crypto/algboss.o net/core/rtnetlink.c:1063:1: error: control reaches end of non-void function [-Werror=return-type] } ^ CC crypto/authenc.o CC crypto/authencesn.o CC crypto/af_alg.o CC crypto/algif_hash.o CC crypto/algif_skcipher.o CC crypto/algif_rng.o CC crypto/algif_aead.o AR arch/powerpc/kernel/built-in.a cc1: some warnings being treated as errors make[4]: *** [scripts/Makefile.build:243: net/core/rtnetlink.o] Error 1 make[4]: *** Waiting for unfinished jobs.... CC lib/kobject_uevent.o AR drivers/net/mdio/built-in.a AR net/802/built-in.a AR drivers/connector/built-in.a CC lib/vsprintf.o AR ipc/built-in.a AR net/nsh/built-in.a CC lib/dynamic_debug.o In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, from ./include/linux/compiler.h:251, from ./include/linux/instrumented.h:10, from ./include/linux/uaccess.h:6, from net/core/dev.c:71: net/core/dev.c: In function ‘netdev_dpll_pin_assign’: ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to incomplete type ‘struct dpll_pin’ #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) ^~~~ ./include/asm-generic/rwonce.h:55:33: note: in definition of macro ‘__WRITE_ONCE’ *(volatile typeof(x) *)&(x) = (val); \ ^~~ ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro ‘WRITE_ONCE’ WRITE_ONCE(*p, v); \ ^~~~~~~~~~ ./include/asm-generic/barrier.h:172:55: note: in expansion of macro ‘__smp_store_release’ #define smp_store_release(p, v) do { kcsan_release(); __smp_store_release(p, v); } while (0) ^~~~~~~~~~~~~~~~~~~ ./include/linux/rcupdate.h:503:3: note: in expansion of macro ‘smp_store_release’ smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ ^~~~~~~~~~~~~~~~~ ./include/linux/rcupdate.h:503:25: note: in expansion of macro ‘RCU_INITIALIZER’ smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ ^~~~~~~~~~~~~~~ net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ rcu_assign_pointer(dev->dpll_pin, dpll_pin); ^~~~~~~~~~~~~~~~~~ On 2/28/24 20:13, Eric Dumazet wrote: > On Wed, Feb 28, 2024 at 3:07 PM Vadim Fedorenko > <vadim.fedorenko@linux.dev> wrote: >> On 28/02/2024 11:09, Tasmiya Nalatwad wrote: >>> Greetings, >>> >>> [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure >>> >>> Reverting below commit fixes the issue >>> >>> commit 0d60d8df6f493bb46bf5db40d39dd60a1bafdd4e >>> dpll: rely on rcu for netdev_dpll_pin() >>> >>> --- Traces --- >>> >>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>> incomplete type ‘struct dpll_pin’ >>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>> ^ >>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>> ‘__rcu_dereference_check’ >>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>> ^~~~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>> ‘rcu_dereference_check’ >>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>> ^~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>> ‘rcu_dereference_rtnl’ >>> return rcu_dereference_rtnl(dev->dpll_pin); >>> ^~~~~~~~~~~~~~~~~~~~ >>> make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_core.o] Error 1 >>> make[4]: *** Waiting for unfinished jobs.... >>> AR net/mpls/built-in.a >>> AR net/l3mdev/built-in.a >>> In file included from ./include/linux/rbtree.h:24, >>> from ./include/linux/mm_types.h:11, >>> from ./include/linux/mmzone.h:22, >>> from ./include/linux/gfp.h:7, >>> from ./include/linux/umh.h:4, >>> from ./include/linux/kmod.h:9, >>> from ./include/linux/module.h:17, >>> from drivers/dpll/dpll_netlink.c:9: >>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>> incomplete type ‘struct dpll_pin’ >>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>> ^ >>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>> ‘__rcu_dereference_check’ >>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>> ^~~~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>> ‘rcu_dereference_check’ >>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>> ^~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>> ‘rcu_dereference_rtnl’ >>> return rcu_dereference_rtnl(dev->dpll_pin); >>> ^~~~~~~~~~~~~~~~~~~~ >>> make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_netlink.o] >>> Error 1 >>> make[3]: *** [scripts/Makefile.build:481: drivers/dpll] Error 2 >>> make[3]: *** Waiting for unfinished jobs.... >>> In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, >>> from ./include/linux/compiler.h:251, >>> from ./include/linux/instrumented.h:10, >>> from ./include/linux/uaccess.h:6, >>> from net/core/dev.c:71: >>> net/core/dev.c: In function ‘netdev_dpll_pin_assign’: >>> ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to >>> incomplete type ‘struct dpll_pin’ >>> #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) >>> ^~~~ >>> ./include/asm-generic/rwonce.h:55:33: note: in definition of macro >>> ‘__WRITE_ONCE’ >>> *(volatile typeof(x) *)&(x) = (val); \ >>> ^~~ >>> ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro >>> ‘WRITE_ONCE’ >>> WRITE_ONCE(*p, v); \ >>> ^~~~~~~~~~ >>> ./include/asm-generic/barrier.h:172:55: note: in expansion of macro >>> ‘__smp_store_release’ >>> #define smp_store_release(p, v) do { kcsan_release(); >>> __smp_store_release(p, v); } while (0) >>> ^~~~~~~~~~~~~~~~~~~ >>> ./include/linux/rcupdate.h:503:3: note: in expansion of macro >>> ‘smp_store_release’ >>> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >>> ^~~~~~~~~~~~~~~~~ >>> ./include/linux/rcupdate.h:503:25: note: in expansion of macro >>> ‘RCU_INITIALIZER’ >>> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >>> ^~~~~~~~~~~~~~~ >>> net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ >>> rcu_assign_pointer(dev->dpll_pin, dpll_pin); >>> ^~~~~~~~~~~~~~~~~~ >>> make[4]: *** [scripts/Makefile.build:243: net/core/dev.o] Error 1 >>> make[4]: *** Waiting for unfinished jobs.... >>> AR drivers/net/ethernet/built-in.a >>> AR drivers/net/built-in.a >>> AR net/dcb/built-in.a >>> AR net/netlabel/built-in.a >>> AR net/strparser/built-in.a >>> AR net/handshake/built-in.a >>> GEN lib/test_fortify.log >>> AR net/8021q/built-in.a >>> AR net/nsh/built-in.a >>> AR net/unix/built-in.a >>> CC lib/string.o >>> AR net/packet/built-in.a >>> AR net/switchdev/built-in.a >>> AR lib/lib.a >>> AR net/mptcp/built-in.a >>> AR net/devlink/built-in.a >>> In file included from ./include/linux/rbtree.h:24, >>> from ./include/linux/mm_types.h:11, >>> from ./include/linux/mmzone.h:22, >>> from ./include/linux/gfp.h:7, >>> from ./include/linux/umh.h:4, >>> from ./include/linux/kmod.h:9, >>> from ./include/linux/module.h:17, >>> from net/core/rtnetlink.c:17: >>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>> incomplete type ‘struct dpll_pin’ >>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>> ^ >>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>> ‘__rcu_dereference_check’ >>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>> ^~~~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>> ‘rcu_dereference_check’ >>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>> ^~~~~~~~~~~~~~~~~~~~~ >>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>> ‘rcu_dereference_rtnl’ >>> return rcu_dereference_rtnl(dev->dpll_pin); >>> ^~~~~~~~~~~~~~~~~~~~ >>> In file included from net/core/rtnetlink.c:60: >>> ./include/linux/dpll.h:179:1: error: control reaches end of non-void >>> function [-Werror=return-type] >>> } >>> >> Hi, Eric! >> >> Looks like we have to move struct dpll_pin definition to >> include/linux/dpll.h to have this fixed, right? >> > No idea what is wrong. Is it powerpc specific ? Some compiler version ? > > netdev_dpll_pin() could be moved to net/core/rtnetlink.c, this is the only user. > > diff --git a/include/linux/dpll.h b/include/linux/dpll.h > index 4ec2fe9caf5a3f284afd0cfe4fc7c2bf42cbbc60..72d21e710d7f201d2fc57bb3a32b4bc0ff2b1749 > 100644 > --- a/include/linux/dpll.h > +++ b/include/linux/dpll.h > @@ -169,13 +169,4 @@ int dpll_device_change_ntf(struct dpll_device *dpll); > > int dpll_pin_change_ntf(struct dpll_pin *pin); > > -static inline struct dpll_pin *netdev_dpll_pin(const struct net_device *dev) > -{ > -#if IS_ENABLED(CONFIG_DPLL) > - return rcu_dereference_rtnl(dev->dpll_pin); > -#else > - return NULL; > -#endif > -} > - > #endif > diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c > index 9c4f427f3a5057b52ec05405e8b15b8ca2246b4b..32dc601fd8ca66dfcd3cb8f38b533314de02d1d2 > 100644 > --- a/net/core/rtnetlink.c > +++ b/net/core/rtnetlink.c > @@ -1053,6 +1053,15 @@ static size_t rtnl_devlink_port_size(const > struct net_device *dev) > return size; > } > > +static struct dpll_pin *netdev_dpll_pin(const struct net_device *dev) > +{ > +#if IS_ENABLED(CONFIG_DPLL) > + return rcu_dereference_rtnl(dev->dpll_pin); > +#else > + return NULL; > +#endif > +} > + > static size_t rtnl_dpll_pin_size(const struct net_device *dev) > { > size_t size = nla_total_size(0); /* nest IFLA_DPLL_PIN */ -- Regards, Tasmiya Nalatwad IBM Linux Technology Center ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-29 8:04 ` Tasmiya Nalatwad @ 2024-02-29 8:55 ` Eric Dumazet 2024-02-29 11:31 ` Tasmiya Nalatwad ` (2 more replies) 0 siblings, 3 replies; 14+ messages in thread From: Eric Dumazet @ 2024-02-29 8:55 UTC (permalink / raw) To: Tasmiya Nalatwad Cc: venkat88, Vadim Fedorenko, mputtash@linux.vnet.com, linux-kernel@vger.kernel.org, arkadiusz.kubalewski, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, jiri, kuba, linuxppc-dev@lists.ozlabs.org On Thu, Feb 29, 2024 at 9:04 AM Tasmiya Nalatwad <tasmiya@linux.vnet.ibm.com> wrote: > > Greetings, > > I have tried the patch provided below. Moving struct to file > "net/core/rtnetlink.c" is not resolving the problem. Please find the > below traces. > > --- Traces --- > > In file included from ./include/linux/rbtree.h:24, > from ./include/linux/mm_types.h:11, > from ./include/linux/mmzone.h:22, > from ./include/linux/gfp.h:7, > from ./include/linux/umh.h:4, > from ./include/linux/kmod.h:9, > from ./include/linux/module.h:17, > from net/core/rtnetlink.c:17: > net/core/rtnetlink.c: In function ‘netdev_dpll_pin’: > ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > incomplete type ‘struct dpll_pin’ > typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > ^ > ./include/linux/rcupdate.h:587:2: note: in expansion of macro > ‘__rcu_dereference_check’ > __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > ^~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > ‘rcu_dereference_check’ > rcu_dereference_check(p, lockdep_rtnl_is_held()) > ^~~~~~~~~~~~~~~~~~~~~ > net/core/rtnetlink.c:1059:15: note: in expansion of macro > ‘rcu_dereference_rtnl’ > return rcu_dereference_rtnl(dev->dpll_pin); > ^~~~~~~~~~~~~~~~~~~~ > CC crypto/algboss.o > net/core/rtnetlink.c:1063:1: error: control reaches end of non-void > function [-Werror=return-type] > } > ^ > CC crypto/authenc.o > CC crypto/authencesn.o > CC crypto/af_alg.o > CC crypto/algif_hash.o > CC crypto/algif_skcipher.o > CC crypto/algif_rng.o > CC crypto/algif_aead.o > AR arch/powerpc/kernel/built-in.a > cc1: some warnings being treated as errors > make[4]: *** [scripts/Makefile.build:243: net/core/rtnetlink.o] Error 1 > make[4]: *** Waiting for unfinished jobs.... > CC lib/kobject_uevent.o > AR drivers/net/mdio/built-in.a > AR net/802/built-in.a > AR drivers/connector/built-in.a > CC lib/vsprintf.o > AR ipc/built-in.a > AR net/nsh/built-in.a > CC lib/dynamic_debug.o > In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, > from ./include/linux/compiler.h:251, > from ./include/linux/instrumented.h:10, > from ./include/linux/uaccess.h:6, > from net/core/dev.c:71: > net/core/dev.c: In function ‘netdev_dpll_pin_assign’: > ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to > incomplete type ‘struct dpll_pin’ > #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) > ^~~~ > ./include/asm-generic/rwonce.h:55:33: note: in definition of macro > ‘__WRITE_ONCE’ > *(volatile typeof(x) *)&(x) = (val); \ > ^~~ > ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro > ‘WRITE_ONCE’ > WRITE_ONCE(*p, v); \ > ^~~~~~~~~~ > ./include/asm-generic/barrier.h:172:55: note: in expansion of macro > ‘__smp_store_release’ > #define smp_store_release(p, v) do { kcsan_release(); > __smp_store_release(p, v); } while (0) > ^~~~~~~~~~~~~~~~~~~ > ./include/linux/rcupdate.h:503:3: note: in expansion of macro > ‘smp_store_release’ > smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ > ^~~~~~~~~~~~~~~~~ > ./include/linux/rcupdate.h:503:25: note: in expansion of macro > ‘RCU_INITIALIZER’ > smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ > ^~~~~~~~~~~~~~~ > net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ > rcu_assign_pointer(dev->dpll_pin, dpll_pin); > ^~~~~~~~~~~~~~~~~~ > > On 2/28/24 20:13, Eric Dumazet wrote: > > On Wed, Feb 28, 2024 at 3:07 PM Vadim Fedorenko > > <vadim.fedorenko@linux.dev> wrote: > >> On 28/02/2024 11:09, Tasmiya Nalatwad wrote: > >>> Greetings, > >>> > >>> [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure > >>> > >>> Reverting below commit fixes the issue > >>> > >>> commit 0d60d8df6f493bb46bf5db40d39dd60a1bafdd4e > >>> dpll: rely on rcu for netdev_dpll_pin() > >>> > >>> --- Traces --- > >>> > >>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > >>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > >>> incomplete type ‘struct dpll_pin’ > >>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > >>> ^ > >>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro > >>> ‘__rcu_dereference_check’ > >>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > >>> ^~~~~~~~~~~~~~~~~~~~~~~ > >>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > >>> ‘rcu_dereference_check’ > >>> rcu_dereference_check(p, lockdep_rtnl_is_held()) > >>> ^~~~~~~~~~~~~~~~~~~~~ > >>> ./include/linux/dpll.h:175:9: note: in expansion of macro > >>> ‘rcu_dereference_rtnl’ > >>> return rcu_dereference_rtnl(dev->dpll_pin); > >>> ^~~~~~~~~~~~~~~~~~~~ > >>> make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_core.o] Error 1 > >>> make[4]: *** Waiting for unfinished jobs.... > >>> AR net/mpls/built-in.a > >>> AR net/l3mdev/built-in.a > >>> In file included from ./include/linux/rbtree.h:24, > >>> from ./include/linux/mm_types.h:11, > >>> from ./include/linux/mmzone.h:22, > >>> from ./include/linux/gfp.h:7, > >>> from ./include/linux/umh.h:4, > >>> from ./include/linux/kmod.h:9, > >>> from ./include/linux/module.h:17, > >>> from drivers/dpll/dpll_netlink.c:9: > >>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > >>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > >>> incomplete type ‘struct dpll_pin’ > >>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > >>> ^ > >>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro > >>> ‘__rcu_dereference_check’ > >>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > >>> ^~~~~~~~~~~~~~~~~~~~~~~ > >>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > >>> ‘rcu_dereference_check’ > >>> rcu_dereference_check(p, lockdep_rtnl_is_held()) > >>> ^~~~~~~~~~~~~~~~~~~~~ > >>> ./include/linux/dpll.h:175:9: note: in expansion of macro > >>> ‘rcu_dereference_rtnl’ > >>> return rcu_dereference_rtnl(dev->dpll_pin); > >>> ^~~~~~~~~~~~~~~~~~~~ > >>> make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_netlink.o] > >>> Error 1 > >>> make[3]: *** [scripts/Makefile.build:481: drivers/dpll] Error 2 > >>> make[3]: *** Waiting for unfinished jobs.... > >>> In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, > >>> from ./include/linux/compiler.h:251, > >>> from ./include/linux/instrumented.h:10, > >>> from ./include/linux/uaccess.h:6, > >>> from net/core/dev.c:71: > >>> net/core/dev.c: In function ‘netdev_dpll_pin_assign’: > >>> ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to > >>> incomplete type ‘struct dpll_pin’ > >>> #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) > >>> ^~~~ > >>> ./include/asm-generic/rwonce.h:55:33: note: in definition of macro > >>> ‘__WRITE_ONCE’ > >>> *(volatile typeof(x) *)&(x) = (val); \ > >>> ^~~ > >>> ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro > >>> ‘WRITE_ONCE’ > >>> WRITE_ONCE(*p, v); \ > >>> ^~~~~~~~~~ > >>> ./include/asm-generic/barrier.h:172:55: note: in expansion of macro > >>> ‘__smp_store_release’ > >>> #define smp_store_release(p, v) do { kcsan_release(); > >>> __smp_store_release(p, v); } while (0) > >>> ^~~~~~~~~~~~~~~~~~~ > >>> ./include/linux/rcupdate.h:503:3: note: in expansion of macro > >>> ‘smp_store_release’ > >>> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ > >>> ^~~~~~~~~~~~~~~~~ > >>> ./include/linux/rcupdate.h:503:25: note: in expansion of macro > >>> ‘RCU_INITIALIZER’ > >>> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ > >>> ^~~~~~~~~~~~~~~ > >>> net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ > >>> rcu_assign_pointer(dev->dpll_pin, dpll_pin); > >>> ^~~~~~~~~~~~~~~~~~ > >>> make[4]: *** [scripts/Makefile.build:243: net/core/dev.o] Error 1 > >>> make[4]: *** Waiting for unfinished jobs.... > >>> AR drivers/net/ethernet/built-in.a > >>> AR drivers/net/built-in.a > >>> AR net/dcb/built-in.a > >>> AR net/netlabel/built-in.a > >>> AR net/strparser/built-in.a > >>> AR net/handshake/built-in.a > >>> GEN lib/test_fortify.log > >>> AR net/8021q/built-in.a > >>> AR net/nsh/built-in.a > >>> AR net/unix/built-in.a > >>> CC lib/string.o > >>> AR net/packet/built-in.a > >>> AR net/switchdev/built-in.a > >>> AR lib/lib.a > >>> AR net/mptcp/built-in.a > >>> AR net/devlink/built-in.a > >>> In file included from ./include/linux/rbtree.h:24, > >>> from ./include/linux/mm_types.h:11, > >>> from ./include/linux/mmzone.h:22, > >>> from ./include/linux/gfp.h:7, > >>> from ./include/linux/umh.h:4, > >>> from ./include/linux/kmod.h:9, > >>> from ./include/linux/module.h:17, > >>> from net/core/rtnetlink.c:17: > >>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: > >>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to > >>> incomplete type ‘struct dpll_pin’ > >>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ > >>> ^ > >>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro > >>> ‘__rcu_dereference_check’ > >>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ > >>> ^~~~~~~~~~~~~~~~~~~~~~~ > >>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro > >>> ‘rcu_dereference_check’ > >>> rcu_dereference_check(p, lockdep_rtnl_is_held()) > >>> ^~~~~~~~~~~~~~~~~~~~~ > >>> ./include/linux/dpll.h:175:9: note: in expansion of macro > >>> ‘rcu_dereference_rtnl’ > >>> return rcu_dereference_rtnl(dev->dpll_pin); > >>> ^~~~~~~~~~~~~~~~~~~~ > >>> In file included from net/core/rtnetlink.c:60: > >>> ./include/linux/dpll.h:179:1: error: control reaches end of non-void > >>> function [-Werror=return-type] > >>> } > >>> > >> Hi, Eric! > >> > >> Looks like we have to move struct dpll_pin definition to > >> include/linux/dpll.h to have this fixed, right? > >> > > No idea what is wrong. Is it powerpc specific ? Some compiler version ? > > > > netdev_dpll_pin() could be moved to net/core/rtnetlink.c, this is the only user. OK, it seems netdev_dpll_pin() has to be moved in a place the structure is known, because rcu_dereference() needs to know its size. I do not see other solution than this, otherwise we have to add more pollution to include/linux/netdevice.h diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index a9c973b92294bb110cf3cd336485972127b01b58..40797ea80bc6273cae6b7773d0a3e47459a72150 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -2469,7 +2469,7 @@ struct net_device { struct devlink_port *devlink_port; #if IS_ENABLED(CONFIG_DPLL) - struct dpll_pin __rcu *dpll_pin; + void __rcu *dpll_pin; #endif #if IS_ENABLED(CONFIG_PAGE_POOL) /** @page_pools: page pools created for this netdevice */ ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-29 8:55 ` Eric Dumazet @ 2024-02-29 11:31 ` Tasmiya Nalatwad 2024-02-29 11:44 ` Vadim Fedorenko 2024-02-29 14:47 ` Jakub Kicinski 2 siblings, 0 replies; 14+ messages in thread From: Tasmiya Nalatwad @ 2024-02-29 11:31 UTC (permalink / raw) To: Eric Dumazet Cc: venkat88, Vadim Fedorenko, mputtash@linux.vnet.com, linux-kernel@vger.kernel.org, arkadiusz.kubalewski, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, jiri, kuba, linuxppc-dev@lists.ozlabs.org Latest changes suggested below works, and the issue is not seen. Tested-by: Tasmiya Nalatwad <tasmiya at linux.vnet.ibm.com> On 2/29/24 14:25, Eric Dumazet wrote: > On Thu, Feb 29, 2024 at 9:04 AM Tasmiya Nalatwad > <tasmiya@linux.vnet.ibm.com> wrote: >> Greetings, >> >> I have tried the patch provided below. Moving struct to file >> "net/core/rtnetlink.c" is not resolving the problem. Please find the >> below traces. >> >> --- Traces --- >> >> In file included from ./include/linux/rbtree.h:24, >> from ./include/linux/mm_types.h:11, >> from ./include/linux/mmzone.h:22, >> from ./include/linux/gfp.h:7, >> from ./include/linux/umh.h:4, >> from ./include/linux/kmod.h:9, >> from ./include/linux/module.h:17, >> from net/core/rtnetlink.c:17: >> net/core/rtnetlink.c: In function ‘netdev_dpll_pin’: >> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >> incomplete type ‘struct dpll_pin’ >> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >> ^ >> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >> ‘__rcu_dereference_check’ >> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >> ^~~~~~~~~~~~~~~~~~~~~~~ >> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >> ‘rcu_dereference_check’ >> rcu_dereference_check(p, lockdep_rtnl_is_held()) >> ^~~~~~~~~~~~~~~~~~~~~ >> net/core/rtnetlink.c:1059:15: note: in expansion of macro >> ‘rcu_dereference_rtnl’ >> return rcu_dereference_rtnl(dev->dpll_pin); >> ^~~~~~~~~~~~~~~~~~~~ >> CC crypto/algboss.o >> net/core/rtnetlink.c:1063:1: error: control reaches end of non-void >> function [-Werror=return-type] >> } >> ^ >> CC crypto/authenc.o >> CC crypto/authencesn.o >> CC crypto/af_alg.o >> CC crypto/algif_hash.o >> CC crypto/algif_skcipher.o >> CC crypto/algif_rng.o >> CC crypto/algif_aead.o >> AR arch/powerpc/kernel/built-in.a >> cc1: some warnings being treated as errors >> make[4]: *** [scripts/Makefile.build:243: net/core/rtnetlink.o] Error 1 >> make[4]: *** Waiting for unfinished jobs.... >> CC lib/kobject_uevent.o >> AR drivers/net/mdio/built-in.a >> AR net/802/built-in.a >> AR drivers/connector/built-in.a >> CC lib/vsprintf.o >> AR ipc/built-in.a >> AR net/nsh/built-in.a >> CC lib/dynamic_debug.o >> In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, >> from ./include/linux/compiler.h:251, >> from ./include/linux/instrumented.h:10, >> from ./include/linux/uaccess.h:6, >> from net/core/dev.c:71: >> net/core/dev.c: In function ‘netdev_dpll_pin_assign’: >> ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to >> incomplete type ‘struct dpll_pin’ >> #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) >> ^~~~ >> ./include/asm-generic/rwonce.h:55:33: note: in definition of macro >> ‘__WRITE_ONCE’ >> *(volatile typeof(x) *)&(x) = (val); \ >> ^~~ >> ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro >> ‘WRITE_ONCE’ >> WRITE_ONCE(*p, v); \ >> ^~~~~~~~~~ >> ./include/asm-generic/barrier.h:172:55: note: in expansion of macro >> ‘__smp_store_release’ >> #define smp_store_release(p, v) do { kcsan_release(); >> __smp_store_release(p, v); } while (0) >> ^~~~~~~~~~~~~~~~~~~ >> ./include/linux/rcupdate.h:503:3: note: in expansion of macro >> ‘smp_store_release’ >> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >> ^~~~~~~~~~~~~~~~~ >> ./include/linux/rcupdate.h:503:25: note: in expansion of macro >> ‘RCU_INITIALIZER’ >> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >> ^~~~~~~~~~~~~~~ >> net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ >> rcu_assign_pointer(dev->dpll_pin, dpll_pin); >> ^~~~~~~~~~~~~~~~~~ >> >> On 2/28/24 20:13, Eric Dumazet wrote: >>> On Wed, Feb 28, 2024 at 3:07 PM Vadim Fedorenko >>> <vadim.fedorenko@linux.dev> wrote: >>>> On 28/02/2024 11:09, Tasmiya Nalatwad wrote: >>>>> Greetings, >>>>> >>>>> [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure >>>>> >>>>> Reverting below commit fixes the issue >>>>> >>>>> commit 0d60d8df6f493bb46bf5db40d39dd60a1bafdd4e >>>>> dpll: rely on rcu for netdev_dpll_pin() >>>>> >>>>> --- Traces --- >>>>> >>>>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>>>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>>>> incomplete type ‘struct dpll_pin’ >>>>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>>>> ^ >>>>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>>>> ‘__rcu_dereference_check’ >>>>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>>>> ^~~~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>>>> ‘rcu_dereference_check’ >>>>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>>>> ^~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>>>> ‘rcu_dereference_rtnl’ >>>>> return rcu_dereference_rtnl(dev->dpll_pin); >>>>> ^~~~~~~~~~~~~~~~~~~~ >>>>> make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_core.o] Error 1 >>>>> make[4]: *** Waiting for unfinished jobs.... >>>>> AR net/mpls/built-in.a >>>>> AR net/l3mdev/built-in.a >>>>> In file included from ./include/linux/rbtree.h:24, >>>>> from ./include/linux/mm_types.h:11, >>>>> from ./include/linux/mmzone.h:22, >>>>> from ./include/linux/gfp.h:7, >>>>> from ./include/linux/umh.h:4, >>>>> from ./include/linux/kmod.h:9, >>>>> from ./include/linux/module.h:17, >>>>> from drivers/dpll/dpll_netlink.c:9: >>>>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>>>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>>>> incomplete type ‘struct dpll_pin’ >>>>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>>>> ^ >>>>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>>>> ‘__rcu_dereference_check’ >>>>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>>>> ^~~~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>>>> ‘rcu_dereference_check’ >>>>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>>>> ^~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>>>> ‘rcu_dereference_rtnl’ >>>>> return rcu_dereference_rtnl(dev->dpll_pin); >>>>> ^~~~~~~~~~~~~~~~~~~~ >>>>> make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_netlink.o] >>>>> Error 1 >>>>> make[3]: *** [scripts/Makefile.build:481: drivers/dpll] Error 2 >>>>> make[3]: *** Waiting for unfinished jobs.... >>>>> In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, >>>>> from ./include/linux/compiler.h:251, >>>>> from ./include/linux/instrumented.h:10, >>>>> from ./include/linux/uaccess.h:6, >>>>> from net/core/dev.c:71: >>>>> net/core/dev.c: In function ‘netdev_dpll_pin_assign’: >>>>> ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to >>>>> incomplete type ‘struct dpll_pin’ >>>>> #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) >>>>> ^~~~ >>>>> ./include/asm-generic/rwonce.h:55:33: note: in definition of macro >>>>> ‘__WRITE_ONCE’ >>>>> *(volatile typeof(x) *)&(x) = (val); \ >>>>> ^~~ >>>>> ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro >>>>> ‘WRITE_ONCE’ >>>>> WRITE_ONCE(*p, v); \ >>>>> ^~~~~~~~~~ >>>>> ./include/asm-generic/barrier.h:172:55: note: in expansion of macro >>>>> ‘__smp_store_release’ >>>>> #define smp_store_release(p, v) do { kcsan_release(); >>>>> __smp_store_release(p, v); } while (0) >>>>> ^~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/rcupdate.h:503:3: note: in expansion of macro >>>>> ‘smp_store_release’ >>>>> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >>>>> ^~~~~~~~~~~~~~~~~ >>>>> ./include/linux/rcupdate.h:503:25: note: in expansion of macro >>>>> ‘RCU_INITIALIZER’ >>>>> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >>>>> ^~~~~~~~~~~~~~~ >>>>> net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ >>>>> rcu_assign_pointer(dev->dpll_pin, dpll_pin); >>>>> ^~~~~~~~~~~~~~~~~~ >>>>> make[4]: *** [scripts/Makefile.build:243: net/core/dev.o] Error 1 >>>>> make[4]: *** Waiting for unfinished jobs.... >>>>> AR drivers/net/ethernet/built-in.a >>>>> AR drivers/net/built-in.a >>>>> AR net/dcb/built-in.a >>>>> AR net/netlabel/built-in.a >>>>> AR net/strparser/built-in.a >>>>> AR net/handshake/built-in.a >>>>> GEN lib/test_fortify.log >>>>> AR net/8021q/built-in.a >>>>> AR net/nsh/built-in.a >>>>> AR net/unix/built-in.a >>>>> CC lib/string.o >>>>> AR net/packet/built-in.a >>>>> AR net/switchdev/built-in.a >>>>> AR lib/lib.a >>>>> AR net/mptcp/built-in.a >>>>> AR net/devlink/built-in.a >>>>> In file included from ./include/linux/rbtree.h:24, >>>>> from ./include/linux/mm_types.h:11, >>>>> from ./include/linux/mmzone.h:22, >>>>> from ./include/linux/gfp.h:7, >>>>> from ./include/linux/umh.h:4, >>>>> from ./include/linux/kmod.h:9, >>>>> from ./include/linux/module.h:17, >>>>> from net/core/rtnetlink.c:17: >>>>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>>>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>>>> incomplete type ‘struct dpll_pin’ >>>>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>>>> ^ >>>>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>>>> ‘__rcu_dereference_check’ >>>>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>>>> ^~~~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>>>> ‘rcu_dereference_check’ >>>>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>>>> ^~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>>>> ‘rcu_dereference_rtnl’ >>>>> return rcu_dereference_rtnl(dev->dpll_pin); >>>>> ^~~~~~~~~~~~~~~~~~~~ >>>>> In file included from net/core/rtnetlink.c:60: >>>>> ./include/linux/dpll.h:179:1: error: control reaches end of non-void >>>>> function [-Werror=return-type] >>>>> } >>>>> >>>> Hi, Eric! >>>> >>>> Looks like we have to move struct dpll_pin definition to >>>> include/linux/dpll.h to have this fixed, right? >>>> >>> No idea what is wrong. Is it powerpc specific ? Some compiler version ? >>> >>> netdev_dpll_pin() could be moved to net/core/rtnetlink.c, this is the only user. > OK, it seems netdev_dpll_pin() has to be moved in a place the > structure is known, > because rcu_dereference() needs to know its size. > > I do not see other solution than this, otherwise we have to add more > pollution to include/linux/netdevice.h > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > index a9c973b92294bb110cf3cd336485972127b01b58..40797ea80bc6273cae6b7773d0a3e47459a72150 > 100644 > --- a/include/linux/netdevice.h > +++ b/include/linux/netdevice.h > @@ -2469,7 +2469,7 @@ struct net_device { > struct devlink_port *devlink_port; > > #if IS_ENABLED(CONFIG_DPLL) > - struct dpll_pin __rcu *dpll_pin; > + void __rcu *dpll_pin; > #endif > #if IS_ENABLED(CONFIG_PAGE_POOL) > /** @page_pools: page pools created for this netdevice */ -- Regards, Tasmiya Nalatwad IBM Linux Technology Center ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-29 8:55 ` Eric Dumazet 2024-02-29 11:31 ` Tasmiya Nalatwad @ 2024-02-29 11:44 ` Vadim Fedorenko 2024-02-29 14:47 ` Jakub Kicinski 2 siblings, 0 replies; 14+ messages in thread From: Vadim Fedorenko @ 2024-02-29 11:44 UTC (permalink / raw) To: Eric Dumazet, Tasmiya Nalatwad Cc: venkat88, mputtash@linux.vnet.com, linux-kernel@vger.kernel.org, arkadiusz.kubalewski, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, jiri, kuba, linuxppc-dev@lists.ozlabs.org On 29/02/2024 08:55, Eric Dumazet wrote: > On Thu, Feb 29, 2024 at 9:04 AM Tasmiya Nalatwad > <tasmiya@linux.vnet.ibm.com> wrote: >> >> Greetings, >> >> I have tried the patch provided below. Moving struct to file >> "net/core/rtnetlink.c" is not resolving the problem. Please find the >> below traces. >> >> --- Traces --- >> >> In file included from ./include/linux/rbtree.h:24, >> from ./include/linux/mm_types.h:11, >> from ./include/linux/mmzone.h:22, >> from ./include/linux/gfp.h:7, >> from ./include/linux/umh.h:4, >> from ./include/linux/kmod.h:9, >> from ./include/linux/module.h:17, >> from net/core/rtnetlink.c:17: >> net/core/rtnetlink.c: In function ‘netdev_dpll_pin’: >> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >> incomplete type ‘struct dpll_pin’ >> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >> ^ >> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >> ‘__rcu_dereference_check’ >> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >> ^~~~~~~~~~~~~~~~~~~~~~~ >> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >> ‘rcu_dereference_check’ >> rcu_dereference_check(p, lockdep_rtnl_is_held()) >> ^~~~~~~~~~~~~~~~~~~~~ >> net/core/rtnetlink.c:1059:15: note: in expansion of macro >> ‘rcu_dereference_rtnl’ >> return rcu_dereference_rtnl(dev->dpll_pin); >> ^~~~~~~~~~~~~~~~~~~~ >> CC crypto/algboss.o >> net/core/rtnetlink.c:1063:1: error: control reaches end of non-void >> function [-Werror=return-type] >> } >> ^ >> CC crypto/authenc.o >> CC crypto/authencesn.o >> CC crypto/af_alg.o >> CC crypto/algif_hash.o >> CC crypto/algif_skcipher.o >> CC crypto/algif_rng.o >> CC crypto/algif_aead.o >> AR arch/powerpc/kernel/built-in.a >> cc1: some warnings being treated as errors >> make[4]: *** [scripts/Makefile.build:243: net/core/rtnetlink.o] Error 1 >> make[4]: *** Waiting for unfinished jobs.... >> CC lib/kobject_uevent.o >> AR drivers/net/mdio/built-in.a >> AR net/802/built-in.a >> AR drivers/connector/built-in.a >> CC lib/vsprintf.o >> AR ipc/built-in.a >> AR net/nsh/built-in.a >> CC lib/dynamic_debug.o >> In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, >> from ./include/linux/compiler.h:251, >> from ./include/linux/instrumented.h:10, >> from ./include/linux/uaccess.h:6, >> from net/core/dev.c:71: >> net/core/dev.c: In function ‘netdev_dpll_pin_assign’: >> ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to >> incomplete type ‘struct dpll_pin’ >> #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) >> ^~~~ >> ./include/asm-generic/rwonce.h:55:33: note: in definition of macro >> ‘__WRITE_ONCE’ >> *(volatile typeof(x) *)&(x) = (val); \ >> ^~~ >> ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro >> ‘WRITE_ONCE’ >> WRITE_ONCE(*p, v); \ >> ^~~~~~~~~~ >> ./include/asm-generic/barrier.h:172:55: note: in expansion of macro >> ‘__smp_store_release’ >> #define smp_store_release(p, v) do { kcsan_release(); >> __smp_store_release(p, v); } while (0) >> ^~~~~~~~~~~~~~~~~~~ >> ./include/linux/rcupdate.h:503:3: note: in expansion of macro >> ‘smp_store_release’ >> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >> ^~~~~~~~~~~~~~~~~ >> ./include/linux/rcupdate.h:503:25: note: in expansion of macro >> ‘RCU_INITIALIZER’ >> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >> ^~~~~~~~~~~~~~~ >> net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ >> rcu_assign_pointer(dev->dpll_pin, dpll_pin); >> ^~~~~~~~~~~~~~~~~~ >> >> On 2/28/24 20:13, Eric Dumazet wrote: >>> On Wed, Feb 28, 2024 at 3:07 PM Vadim Fedorenko >>> <vadim.fedorenko@linux.dev> wrote: >>>> On 28/02/2024 11:09, Tasmiya Nalatwad wrote: >>>>> Greetings, >>>>> >>>>> [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure >>>>> >>>>> Reverting below commit fixes the issue >>>>> >>>>> commit 0d60d8df6f493bb46bf5db40d39dd60a1bafdd4e >>>>> dpll: rely on rcu for netdev_dpll_pin() >>>>> >>>>> --- Traces --- >>>>> >>>>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>>>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>>>> incomplete type ‘struct dpll_pin’ >>>>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>>>> ^ >>>>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>>>> ‘__rcu_dereference_check’ >>>>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>>>> ^~~~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>>>> ‘rcu_dereference_check’ >>>>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>>>> ^~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>>>> ‘rcu_dereference_rtnl’ >>>>> return rcu_dereference_rtnl(dev->dpll_pin); >>>>> ^~~~~~~~~~~~~~~~~~~~ >>>>> make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_core.o] Error 1 >>>>> make[4]: *** Waiting for unfinished jobs.... >>>>> AR net/mpls/built-in.a >>>>> AR net/l3mdev/built-in.a >>>>> In file included from ./include/linux/rbtree.h:24, >>>>> from ./include/linux/mm_types.h:11, >>>>> from ./include/linux/mmzone.h:22, >>>>> from ./include/linux/gfp.h:7, >>>>> from ./include/linux/umh.h:4, >>>>> from ./include/linux/kmod.h:9, >>>>> from ./include/linux/module.h:17, >>>>> from drivers/dpll/dpll_netlink.c:9: >>>>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>>>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>>>> incomplete type ‘struct dpll_pin’ >>>>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>>>> ^ >>>>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>>>> ‘__rcu_dereference_check’ >>>>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>>>> ^~~~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>>>> ‘rcu_dereference_check’ >>>>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>>>> ^~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>>>> ‘rcu_dereference_rtnl’ >>>>> return rcu_dereference_rtnl(dev->dpll_pin); >>>>> ^~~~~~~~~~~~~~~~~~~~ >>>>> make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_netlink.o] >>>>> Error 1 >>>>> make[3]: *** [scripts/Makefile.build:481: drivers/dpll] Error 2 >>>>> make[3]: *** Waiting for unfinished jobs.... >>>>> In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, >>>>> from ./include/linux/compiler.h:251, >>>>> from ./include/linux/instrumented.h:10, >>>>> from ./include/linux/uaccess.h:6, >>>>> from net/core/dev.c:71: >>>>> net/core/dev.c: In function ‘netdev_dpll_pin_assign’: >>>>> ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to >>>>> incomplete type ‘struct dpll_pin’ >>>>> #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) >>>>> ^~~~ >>>>> ./include/asm-generic/rwonce.h:55:33: note: in definition of macro >>>>> ‘__WRITE_ONCE’ >>>>> *(volatile typeof(x) *)&(x) = (val); \ >>>>> ^~~ >>>>> ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro >>>>> ‘WRITE_ONCE’ >>>>> WRITE_ONCE(*p, v); \ >>>>> ^~~~~~~~~~ >>>>> ./include/asm-generic/barrier.h:172:55: note: in expansion of macro >>>>> ‘__smp_store_release’ >>>>> #define smp_store_release(p, v) do { kcsan_release(); >>>>> __smp_store_release(p, v); } while (0) >>>>> ^~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/rcupdate.h:503:3: note: in expansion of macro >>>>> ‘smp_store_release’ >>>>> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >>>>> ^~~~~~~~~~~~~~~~~ >>>>> ./include/linux/rcupdate.h:503:25: note: in expansion of macro >>>>> ‘RCU_INITIALIZER’ >>>>> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >>>>> ^~~~~~~~~~~~~~~ >>>>> net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ >>>>> rcu_assign_pointer(dev->dpll_pin, dpll_pin); >>>>> ^~~~~~~~~~~~~~~~~~ >>>>> make[4]: *** [scripts/Makefile.build:243: net/core/dev.o] Error 1 >>>>> make[4]: *** Waiting for unfinished jobs.... >>>>> AR drivers/net/ethernet/built-in.a >>>>> AR drivers/net/built-in.a >>>>> AR net/dcb/built-in.a >>>>> AR net/netlabel/built-in.a >>>>> AR net/strparser/built-in.a >>>>> AR net/handshake/built-in.a >>>>> GEN lib/test_fortify.log >>>>> AR net/8021q/built-in.a >>>>> AR net/nsh/built-in.a >>>>> AR net/unix/built-in.a >>>>> CC lib/string.o >>>>> AR net/packet/built-in.a >>>>> AR net/switchdev/built-in.a >>>>> AR lib/lib.a >>>>> AR net/mptcp/built-in.a >>>>> AR net/devlink/built-in.a >>>>> In file included from ./include/linux/rbtree.h:24, >>>>> from ./include/linux/mm_types.h:11, >>>>> from ./include/linux/mmzone.h:22, >>>>> from ./include/linux/gfp.h:7, >>>>> from ./include/linux/umh.h:4, >>>>> from ./include/linux/kmod.h:9, >>>>> from ./include/linux/module.h:17, >>>>> from net/core/rtnetlink.c:17: >>>>> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >>>>> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >>>>> incomplete type ‘struct dpll_pin’ >>>>> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >>>>> ^ >>>>> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >>>>> ‘__rcu_dereference_check’ >>>>> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >>>>> ^~~~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >>>>> ‘rcu_dereference_check’ >>>>> rcu_dereference_check(p, lockdep_rtnl_is_held()) >>>>> ^~~~~~~~~~~~~~~~~~~~~ >>>>> ./include/linux/dpll.h:175:9: note: in expansion of macro >>>>> ‘rcu_dereference_rtnl’ >>>>> return rcu_dereference_rtnl(dev->dpll_pin); >>>>> ^~~~~~~~~~~~~~~~~~~~ >>>>> In file included from net/core/rtnetlink.c:60: >>>>> ./include/linux/dpll.h:179:1: error: control reaches end of non-void >>>>> function [-Werror=return-type] >>>>> } >>>>> >>>> Hi, Eric! >>>> >>>> Looks like we have to move struct dpll_pin definition to >>>> include/linux/dpll.h to have this fixed, right? >>>> >>> No idea what is wrong. Is it powerpc specific ? Some compiler version ? >>> >>> netdev_dpll_pin() could be moved to net/core/rtnetlink.c, this is the only user. > > OK, it seems netdev_dpll_pin() has to be moved in a place the > structure is known, > because rcu_dereference() needs to know its size. > > I do not see other solution than this, otherwise we have to add more > pollution to include/linux/netdevice.h > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > index a9c973b92294bb110cf3cd336485972127b01b58..40797ea80bc6273cae6b7773d0a3e47459a72150 > 100644 > --- a/include/linux/netdevice.h > +++ b/include/linux/netdevice.h > @@ -2469,7 +2469,7 @@ struct net_device { > struct devlink_port *devlink_port; > > #if IS_ENABLED(CONFIG_DPLL) > - struct dpll_pin __rcu *dpll_pin; > + void __rcu *dpll_pin; > #endif > #if IS_ENABLED(CONFIG_PAGE_POOL) > /** @page_pools: page pools created for this netdevice */ I agree, this is the easiest solution. Reviewed-by: Vadim Fedorenko <vadim.fedoreno@linux.dev> ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-29 8:55 ` Eric Dumazet 2024-02-29 11:31 ` Tasmiya Nalatwad 2024-02-29 11:44 ` Vadim Fedorenko @ 2024-02-29 14:47 ` Jakub Kicinski 2024-02-29 14:53 ` Eric Dumazet 2024-03-01 5:06 ` Tasmiya Nalatwad 2 siblings, 2 replies; 14+ messages in thread From: Jakub Kicinski @ 2024-02-29 14:47 UTC (permalink / raw) To: Eric Dumazet Cc: venkat88, Vadim Fedorenko, mputtash@linux.vnet.com, Tasmiya Nalatwad, linux-kernel@vger.kernel.org, arkadiusz.kubalewski, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, jiri, linuxppc-dev@lists.ozlabs.org On Thu, 29 Feb 2024 09:55:22 +0100 Eric Dumazet wrote: > I do not see other solution than this, otherwise we have to add more > pollution to include/linux/netdevice.h Right :( > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > index a9c973b92294bb110cf3cd336485972127b01b58..40797ea80bc6273cae6b7773d0a3e47459a72150 > 100644 > --- a/include/linux/netdevice.h > +++ b/include/linux/netdevice.h > @@ -2469,7 +2469,7 @@ struct net_device { > struct devlink_port *devlink_port; > > #if IS_ENABLED(CONFIG_DPLL) > - struct dpll_pin __rcu *dpll_pin; > + void __rcu *dpll_pin; > #endif If DPLL wants to hide its type definitions the helpers must live in dpll? IOW move netdev_dpll_pin() to drivers/dpll/dpll_core.c BTW Tasmiya, please do tell us what compiler you're using. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-29 14:47 ` Jakub Kicinski @ 2024-02-29 14:53 ` Eric Dumazet 2024-02-29 15:02 ` Eric Dumazet 2024-03-01 5:06 ` Tasmiya Nalatwad 1 sibling, 1 reply; 14+ messages in thread From: Eric Dumazet @ 2024-02-29 14:53 UTC (permalink / raw) To: Jakub Kicinski Cc: venkat88, Vadim Fedorenko, mputtash@linux.vnet.com, Tasmiya Nalatwad, linux-kernel@vger.kernel.org, arkadiusz.kubalewski, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, jiri, linuxppc-dev@lists.ozlabs.org On Thu, Feb 29, 2024 at 3:47 PM Jakub Kicinski <kuba@kernel.org> wrote: > > On Thu, 29 Feb 2024 09:55:22 +0100 Eric Dumazet wrote: > > I do not see other solution than this, otherwise we have to add more > > pollution to include/linux/netdevice.h > > Right :( > > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > > index a9c973b92294bb110cf3cd336485972127b01b58..40797ea80bc6273cae6b7773d0a3e47459a72150 > > 100644 > > --- a/include/linux/netdevice.h > > +++ b/include/linux/netdevice.h > > @@ -2469,7 +2469,7 @@ struct net_device { > > struct devlink_port *devlink_port; > > > > #if IS_ENABLED(CONFIG_DPLL) > > - struct dpll_pin __rcu *dpll_pin; > > + void __rcu *dpll_pin; > > #endif > > If DPLL wants to hide its type definitions the helpers must live > in dpll? IOW move netdev_dpll_pin() to drivers/dpll/dpll_core.c Oh for some reason I thought this stuff was a module. Otherwise, why having dpll 'core' helpers in net/core/dev.c ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-29 14:53 ` Eric Dumazet @ 2024-02-29 15:02 ` Eric Dumazet 0 siblings, 0 replies; 14+ messages in thread From: Eric Dumazet @ 2024-02-29 15:02 UTC (permalink / raw) To: Jakub Kicinski Cc: venkat88, Vadim Fedorenko, mputtash@linux.vnet.com, Tasmiya Nalatwad, linux-kernel@vger.kernel.org, arkadiusz.kubalewski, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, jiri, linuxppc-dev@lists.ozlabs.org On Thu, Feb 29, 2024 at 3:53 PM Eric Dumazet <edumazet@google.com> wrote: > > On Thu, Feb 29, 2024 at 3:47 PM Jakub Kicinski <kuba@kernel.org> wrote: > > > > On Thu, 29 Feb 2024 09:55:22 +0100 Eric Dumazet wrote: > > > I do not see other solution than this, otherwise we have to add more > > > pollution to include/linux/netdevice.h > > > > Right :( > > > > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > > > index a9c973b92294bb110cf3cd336485972127b01b58..40797ea80bc6273cae6b7773d0a3e47459a72150 > > > 100644 > > > --- a/include/linux/netdevice.h > > > +++ b/include/linux/netdevice.h > > > @@ -2469,7 +2469,7 @@ struct net_device { > > > struct devlink_port *devlink_port; > > > > > > #if IS_ENABLED(CONFIG_DPLL) > > > - struct dpll_pin __rcu *dpll_pin; > > > + void __rcu *dpll_pin; > > > #endif > > > > If DPLL wants to hide its type definitions the helpers must live > > in dpll? IOW move netdev_dpll_pin() to drivers/dpll/dpll_core.c > > Oh for some reason I thought this stuff was a module. > > Otherwise, why having dpll 'core' helpers in net/core/dev.c So, we would have something a bit convoluted like : diff --git a/drivers/dpll/dpll_core.c b/drivers/dpll/dpll_core.c index 4c2bb27c99fe4e517b0d92c4ae3db83a679c7d11..241db366b2c74ae749f49612d86176b2f8f479c1 100644 --- a/drivers/dpll/dpll_core.c +++ b/drivers/dpll/dpll_core.c @@ -42,6 +42,11 @@ struct dpll_pin_registration { void *priv; }; +struct dpll_pin *netdev_dpll_pin(const struct net_device *dev) +{ + return rcu_dereference_rtnl(dev->dpll_pin); +} + struct dpll_device *dpll_device_get_by_id(int id) { if (xa_get_mark(&dpll_device_xa, id, DPLL_REGISTERED)) diff --git a/include/linux/dpll.h b/include/linux/dpll.h index 4ec2fe9caf5a3f284afd0cfe4fc7c2bf42cbbc60..c60591308ae80fb99aa5abb5832b9a228473a916 100644 --- a/include/linux/dpll.h +++ b/include/linux/dpll.h @@ -169,13 +169,13 @@ int dpll_device_change_ntf(struct dpll_device *dpll); int dpll_pin_change_ntf(struct dpll_pin *pin); +#if !IS_ENABLED(CONFIG_DPLL) static inline struct dpll_pin *netdev_dpll_pin(const struct net_device *dev) { -#if IS_ENABLED(CONFIG_DPLL) - return rcu_dereference_rtnl(dev->dpll_pin); -#else return NULL; -#endif } +#else +struct dpll_pin *netdev_dpll_pin(const struct net_device *dev); +#endif #endif ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-29 14:47 ` Jakub Kicinski 2024-02-29 14:53 ` Eric Dumazet @ 2024-03-01 5:06 ` Tasmiya Nalatwad 1 sibling, 0 replies; 14+ messages in thread From: Tasmiya Nalatwad @ 2024-03-01 5:06 UTC (permalink / raw) To: Jakub Kicinski, Eric Dumazet Cc: venkat88, Vadim Fedorenko, linux-kernel@vger.kernel.org, arkadiusz.kubalewski, jiri, linuxppc-dev@lists.ozlabs.org Greetings, This is tied to gcc version. Build failure is seen while using gcc-8.5.x On 2/29/24 20:17, Jakub Kicinski wrote: > On Thu, 29 Feb 2024 09:55:22 +0100 Eric Dumazet wrote: >> I do not see other solution than this, otherwise we have to add more >> pollution to include/linux/netdevice.h > Right :( > >> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h >> index a9c973b92294bb110cf3cd336485972127b01b58..40797ea80bc6273cae6b7773d0a3e47459a72150 >> 100644 >> --- a/include/linux/netdevice.h >> +++ b/include/linux/netdevice.h >> @@ -2469,7 +2469,7 @@ struct net_device { >> struct devlink_port *devlink_port; >> >> #if IS_ENABLED(CONFIG_DPLL) >> - struct dpll_pin __rcu *dpll_pin; >> + void __rcu *dpll_pin; >> #endif > If DPLL wants to hide its type definitions the helpers must live > in dpll? IOW move netdev_dpll_pin() to drivers/dpll/dpll_core.c > > BTW Tasmiya, please do tell us what compiler you're using. > -- Regards, Tasmiya Nalatwad IBM Linux Technology Center ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure 2024-02-28 14:07 ` [revert 0d60d8df6f49] [net/net-next] " Vadim Fedorenko 2024-02-28 14:43 ` Eric Dumazet @ 2024-03-04 11:33 ` Tasmiya Nalatwad 1 sibling, 0 replies; 14+ messages in thread From: Tasmiya Nalatwad @ 2024-03-04 11:33 UTC (permalink / raw) To: Vadim Fedorenko, linux-kernel@vger.kernel.org, edumazet Cc: venkat88, mputtash@linux.vnet.com, arkadiusz.kubalewski, sachinp@linux.vnet.com, abdhalee@linux.vnet.ibm.com, jiri, kuba, linuxppc-dev@lists.ozlabs.org Greetings, The build error is seen on linux-next and mainline also Mainline : 6.8.0-rc7 linux-next : 6.8.0-rc7-next-20240304 --- Traces --- net/core/dev.c: In function ‘netdev_dpll_pin_assign’: ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to incomplete type ‘struct dpll_pin’ #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) ^~~~ ./include/asm-generic/rwonce.h:55:33: note: in definition of macro ‘__WRITE_ONCE’ *(volatile typeof(x) *)&(x) = (val); \ ^~~ ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of macro ‘WRITE_ONCE’ WRITE_ONCE(*p, v); \ ^~~~~~~~~~ ./include/asm-generic/barrier.h:172:55: note: in expansion of macro ‘__smp_store_release’ #define smp_store_release(p, v) do { kcsan_release(); __smp_store_release(p, v); } while (0) ^~~~~~~~~~~~~~~~~~~ ./include/linux/rcupdate.h:503:3: note: in expansion of macro ‘smp_store_release’ smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ ^~~~~~~~~~~~~~~~~ ./include/linux/rcupdate.h:503:25: note: in expansion of macro ‘RCU_INITIALIZER’ smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ ^~~~~~~~~~~~~~~ net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ rcu_assign_pointer(dev->dpll_pin, dpll_pin); On 2/28/24 19:37, Vadim Fedorenko wrote: > On 28/02/2024 11:09, Tasmiya Nalatwad wrote: >> Greetings, >> >> [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure >> >> Reverting below commit fixes the issue >> >> commit 0d60d8df6f493bb46bf5db40d39dd60a1bafdd4e >> dpll: rely on rcu for netdev_dpll_pin() >> >> --- Traces --- >> >> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >> incomplete type ‘struct dpll_pin’ >> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >> ^ >> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >> ‘__rcu_dereference_check’ >> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >> ^~~~~~~~~~~~~~~~~~~~~~~ >> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >> ‘rcu_dereference_check’ >> rcu_dereference_check(p, lockdep_rtnl_is_held()) >> ^~~~~~~~~~~~~~~~~~~~~ >> ./include/linux/dpll.h:175:9: note: in expansion of macro >> ‘rcu_dereference_rtnl’ >> return rcu_dereference_rtnl(dev->dpll_pin); >> ^~~~~~~~~~~~~~~~~~~~ >> make[4]: *** [scripts/Makefile.build:243: drivers/dpll/dpll_core.o] >> Error 1 >> make[4]: *** Waiting for unfinished jobs.... >> AR net/mpls/built-in.a >> AR net/l3mdev/built-in.a >> In file included from ./include/linux/rbtree.h:24, >> from ./include/linux/mm_types.h:11, >> from ./include/linux/mmzone.h:22, >> from ./include/linux/gfp.h:7, >> from ./include/linux/umh.h:4, >> from ./include/linux/kmod.h:9, >> from ./include/linux/module.h:17, >> from drivers/dpll/dpll_netlink.c:9: >> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >> incomplete type ‘struct dpll_pin’ >> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >> ^ >> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >> ‘__rcu_dereference_check’ >> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >> ^~~~~~~~~~~~~~~~~~~~~~~ >> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >> ‘rcu_dereference_check’ >> rcu_dereference_check(p, lockdep_rtnl_is_held()) >> ^~~~~~~~~~~~~~~~~~~~~ >> ./include/linux/dpll.h:175:9: note: in expansion of macro >> ‘rcu_dereference_rtnl’ >> return rcu_dereference_rtnl(dev->dpll_pin); >> ^~~~~~~~~~~~~~~~~~~~ >> make[4]: *** [scripts/Makefile.build:243: >> drivers/dpll/dpll_netlink.o] Error 1 >> make[3]: *** [scripts/Makefile.build:481: drivers/dpll] Error 2 >> make[3]: *** Waiting for unfinished jobs.... >> In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, >> from ./include/linux/compiler.h:251, >> from ./include/linux/instrumented.h:10, >> from ./include/linux/uaccess.h:6, >> from net/core/dev.c:71: >> net/core/dev.c: In function ‘netdev_dpll_pin_assign’: >> ./include/linux/rcupdate.h:462:36: error: dereferencing pointer to >> incomplete type ‘struct dpll_pin’ >> #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v) >> ^~~~ >> ./include/asm-generic/rwonce.h:55:33: note: in definition of macro >> ‘__WRITE_ONCE’ >> *(volatile typeof(x) *)&(x) = (val); \ >> ^~~ >> ./arch/powerpc/include/asm/barrier.h:76:2: note: in expansion of >> macro ‘WRITE_ONCE’ >> WRITE_ONCE(*p, v); \ >> ^~~~~~~~~~ >> ./include/asm-generic/barrier.h:172:55: note: in expansion of macro >> ‘__smp_store_release’ >> #define smp_store_release(p, v) do { kcsan_release(); >> __smp_store_release(p, v); } while (0) >> ^~~~~~~~~~~~~~~~~~~ >> ./include/linux/rcupdate.h:503:3: note: in expansion of macro >> ‘smp_store_release’ >> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >> ^~~~~~~~~~~~~~~~~ >> ./include/linux/rcupdate.h:503:25: note: in expansion of macro >> ‘RCU_INITIALIZER’ >> smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ >> ^~~~~~~~~~~~~~~ >> net/core/dev.c:9081:2: note: in expansion of macro ‘rcu_assign_pointer’ >> rcu_assign_pointer(dev->dpll_pin, dpll_pin); >> ^~~~~~~~~~~~~~~~~~ >> make[4]: *** [scripts/Makefile.build:243: net/core/dev.o] Error 1 >> make[4]: *** Waiting for unfinished jobs.... >> AR drivers/net/ethernet/built-in.a >> AR drivers/net/built-in.a >> AR net/dcb/built-in.a >> AR net/netlabel/built-in.a >> AR net/strparser/built-in.a >> AR net/handshake/built-in.a >> GEN lib/test_fortify.log >> AR net/8021q/built-in.a >> AR net/nsh/built-in.a >> AR net/unix/built-in.a >> CC lib/string.o >> AR net/packet/built-in.a >> AR net/switchdev/built-in.a >> AR lib/lib.a >> AR net/mptcp/built-in.a >> AR net/devlink/built-in.a >> In file included from ./include/linux/rbtree.h:24, >> from ./include/linux/mm_types.h:11, >> from ./include/linux/mmzone.h:22, >> from ./include/linux/gfp.h:7, >> from ./include/linux/umh.h:4, >> from ./include/linux/kmod.h:9, >> from ./include/linux/module.h:17, >> from net/core/rtnetlink.c:17: >> ./include/linux/dpll.h: In function ‘netdev_dpll_pin’: >> ./include/linux/rcupdate.h:439:9: error: dereferencing pointer to >> incomplete type ‘struct dpll_pin’ >> typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \ >> ^ >> ./include/linux/rcupdate.h:587:2: note: in expansion of macro >> ‘__rcu_dereference_check’ >> __rcu_dereference_check((p), __UNIQUE_ID(rcu), \ >> ^~~~~~~~~~~~~~~~~~~~~~~ >> ./include/linux/rtnetlink.h:70:2: note: in expansion of macro >> ‘rcu_dereference_check’ >> rcu_dereference_check(p, lockdep_rtnl_is_held()) >> ^~~~~~~~~~~~~~~~~~~~~ >> ./include/linux/dpll.h:175:9: note: in expansion of macro >> ‘rcu_dereference_rtnl’ >> return rcu_dereference_rtnl(dev->dpll_pin); >> ^~~~~~~~~~~~~~~~~~~~ >> In file included from net/core/rtnetlink.c:60: >> ./include/linux/dpll.h:179:1: error: control reaches end of non-void >> function [-Werror=return-type] >> } >> > > Hi, Eric! > > Looks like we have to move struct dpll_pin definition to > include/linux/dpll.h to have this fixed, right? > > -- Regards, Tasmiya Nalatwad IBM Linux Technology Center ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2024-03-04 11:34 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-02-28 11:09 [revert 0d60d8df6f49] [net/net-next] [6.8-rc5] Build Failure Tasmiya Nalatwad 2024-02-28 11:22 ` [revert 0d60d8df6f49] [netdev/net] " Tasmiya Nalatwad 2024-02-28 14:07 ` [revert 0d60d8df6f49] [net/net-next] " Vadim Fedorenko 2024-02-28 14:43 ` Eric Dumazet 2024-02-28 15:44 ` Christophe Leroy 2024-02-29 8:04 ` Tasmiya Nalatwad 2024-02-29 8:55 ` Eric Dumazet 2024-02-29 11:31 ` Tasmiya Nalatwad 2024-02-29 11:44 ` Vadim Fedorenko 2024-02-29 14:47 ` Jakub Kicinski 2024-02-29 14:53 ` Eric Dumazet 2024-02-29 15:02 ` Eric Dumazet 2024-03-01 5:06 ` Tasmiya Nalatwad 2024-03-04 11:33 ` Tasmiya Nalatwad
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).