ANDROID: CRC ABI fixups in ip.h and ipv6.h

In commit 6e9334436d ("net: use struct_group to copy ip/ipv6 header
addresses"), struct_group() is added to some structures to resolve a
build warning.  This changes the CRC of a number of networking
functions, without changing any actual structure sizes or interactions.
To resolve this, use __GENKSYMS__ #ifdef hack to preserve the Android
kernel CRC abi.

This also requires an update of the .xml representation to handle the
new union structure properly, as the abi report shows the following
expected change:

type 'struct iphdr' changed
  member changed from '__be32 saddr' to 'union { struct { __be32 saddr; __be32 daddr; }; struct { __be32 saddr; __be32 daddr; } addrs; }'
    type changed from '__be32' = '__u32' = 'unsigned int' to 'union { struct { __be32 saddr; __be32 daddr; }; struct { __be32 saddr; __be32 daddr; } addrs; }'
      resolved type changed from 'unsigned int' to 'union { struct { __be32 saddr; __be32 daddr; }; struct { __be32 saddr; __be32 daddr; } addrs; }'
  member '__be32 daddr' was removed

Bug: 161946584
Fixes: 6e9334436d ("net: use struct_group to copy ip/ipv6 header addresses")
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ia70eb3aa41316fbced713c99c85ddaeccec2ffec
This commit is contained in:
Greg Kroah-Hartman
2022-12-04 12:09:47 +00:00
parent b4d9c0c610
commit 7364575996
3 changed files with 352 additions and 331 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -100,10 +100,14 @@ struct iphdr {
__u8 ttl;
__u8 protocol;
__sum16 check;
#ifndef __GENKSYMS__
__struct_group(/* no tag */, addrs, /* no attrs */,
#endif
__be32 saddr;
__be32 daddr;
#ifndef __GENKSYMS__
);
#endif
/*The options start here. */
};

View File

@@ -130,10 +130,14 @@ struct ipv6hdr {
__u8 nexthdr;
__u8 hop_limit;
#ifndef __GENKSYMS__
__struct_group(/* no tag */, addrs, /* no attrs */,
#endif
struct in6_addr saddr;
struct in6_addr daddr;
#ifndef __GENKSYMS__
);
#endif
};