On Thu, Aug 11, 2022 at 8:46 PM Jakub Kicinski <kuba@xxxxxxxxxx> wrote: > > On Thu, 11 Aug 2022 19:53:04 +0100 Sudip Mukherjee (Codethink) wrote: > > Not sure if it has been reported, builds of csky and mips allmodconfig > > failed to build next-20220811 with gcc-12. > > I can't repro with the cross compiler from kernel.org. > Can you test something like this? With this patch I get new failure: In file included from net/bluetooth/l2cap_core.c:37: ./include/net/bluetooth/bluetooth.h: In function 'ba_is_any': ./include/net/bluetooth/bluetooth.h:346:16: error: returning 'void *' from a function with return type 'int' makes integer from pointer without a cast [-Werror=int-conversion] 346 | return memchr_inv(ba, sizeof(*ba), 0); So for a quick test, I modified it a little (just a typecast) which worked. diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index e72f3b247b5e..19bdd2520070 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h @@ -341,6 +341,11 @@ static inline bool bdaddr_type_is_le(u8 type) #define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}}) #define BDADDR_NONE (&(bdaddr_t) {{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}}) +static inline int ba_is_any(const bdaddr_t *ba) +{ + return (int) memchr_inv(ba, sizeof(*ba), 0); +} + /* Copy, swap, convert BD Address */ static inline int bacmp(const bdaddr_t *ba1, const bdaddr_t *ba2) { diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index cbe0cae73434..67c5d923bc6c 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -2000,8 +2000,8 @@ static struct l2cap_chan *l2cap_global_chan_by_psm(int state, __le16 psm, } /* Closest match */ - src_any = !bacmp(&c->src, BDADDR_ANY); - dst_any = !bacmp(&c->dst, BDADDR_ANY); + src_any = !ba_is_any(&c->src); + dst_any = !ba_is_any(&c->dst); if ((src_match && dst_any) || (src_any && dst_match) || (src_any && dst_any)) c1 = c; -- Regards Sudip