On Tue, Dec 01, 2015 at 05:49:10PM -0700, Jim Fehlig wrote: > On 11/30/2015 09:18 PM, Jim Fehlig wrote: > > On 11/26/2015 08:10 AM, Ian Campbell wrote: > >> Commit 0f7436ca54c9 "network: wait for DAD to finish for bridge IPv6 addresses" > >> results in: > >> > >> CC util/libvirt_util_la-virnetdevmacvlan.lo > >> util/virnetdev.c: In function 'virNetDevParseDadStatus': > >> util/virnetdev.c:1319:188: error: cast increases required alignment of target type [-Werror=cast-align] > >> util/virnetdev.c:1332:41: error: cast increases required alignment of target type [-Werror=cast-align] > >> util/virnetdev.c:1334:92: error: cast increases required alignment of target type [-Werror=cast-align] > >> cc1: all warnings being treated as errors > >> > >> on at least ARM platforms. > > Thanks for looking into this issue Ian. > > > >> The three macros involved (NLMSG_NEXT, IFA_RTA and RTA_NEXT) all appear to > >> correctly take care of alignment, therefore suppress Wcast-align around their > >> uses. > > Indeed those macros seem to handle alignment, even on one of my older machines > > with 2.6 kernel headers. IMO this falls under the "difficult or impossible to > > address" scenarios that Daniel mentioned when introducing the VIR_WARNINGS_* > > macros via commit e57aaa6f. Adding Daniel to cc for a sanity check of my weak ACK. > > Looks like I forgot to actually add Daniel to the cc list. Doing so now... > > > > > Regards, > > Jim > > > >> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > >> Cc: Maxim Perevedentsev <mperevedentsev@xxxxxxxxxxxxx> > >> Cc: Laine Stump <laine@xxxxxxxxx> > >> Cc: Dario Faggioli <dario.faggioli@xxxxxxxxxx> > >> Cc: Jim Fehlig <jfehlig@xxxxxxxx> > >> --- > >> src/util/virnetdev.c | 5 +++++ > >> 1 file changed, 5 insertions(+) > >> > >> diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c > >> index ade9afa..0bc809e 100644 > >> --- a/src/util/virnetdev.c > >> +++ b/src/util/virnetdev.c > >> @@ -1316,7 +1316,10 @@ virNetDevParseDadStatus(struct nlmsghdr *nlh, int len, > >> struct rtattr *rtattr_ptr; > >> size_t i; > >> struct in6_addr *addr; > >> + > >> + VIR_WARNINGS_NO_CAST_ALIGN > >> for (; NLMSG_OK(nlh, len); nlh = NLMSG_NEXT(nlh, len)) { > >> + VIR_WARNINGS_RESET > >> if (NLMSG_PAYLOAD(nlh, 0) < sizeof(struct ifaddrmsg)) { > >> /* Message without payload is the last one. */ > >> break; > >> @@ -1329,9 +1332,11 @@ virNetDevParseDadStatus(struct nlmsghdr *nlh, int len, > >> } > >> > >> ifaddrmsg_len = IFA_PAYLOAD(nlh); > >> + VIR_WARNINGS_NO_CAST_ALIGN > >> rtattr_ptr = (struct rtattr *) IFA_RTA(ifaddrmsg_ptr); > >> for (; RTA_OK(rtattr_ptr, ifaddrmsg_len); > >> rtattr_ptr = RTA_NEXT(rtattr_ptr, ifaddrmsg_len)) { > >> + VIR_WARNINGS_RESET > >> if (RTA_PAYLOAD(rtattr_ptr) != sizeof(struct in6_addr)) { > >> /* No address: ignore. */ > >> continue; Yeah, that looks like about as good as we'll get to deal with this so ACK to that change in absence of any better suggestion. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list