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? diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index e72f3b247b5e..82bf8e01f7af 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 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 77c0aac14539..a08ec272be4a 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -2001,8 +2001,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;