ANDROID: GKI: fix up abi breakage in fib_rules.h

Commit 209d35ee34 ("ipv6: fix memory leak in fib6_rule_suppress")
added a new variable to the fips_rules_ops.suppress() callback function
pointer in order to properly handle a memory leak.

This change is not a real ABI breakage, but since the function pointer
structure is included in other structures within the networking stack,
and they all propagate up to structures that are tracked, libabigail
properly detects this change.

There is no problem making the change, as the only providers of these
callback functions are in the kernel already, and have been fixed up in
this commit, and the variable size does not change (function pointers
are function pointers), so paper over the CRC change with a judicious
ifdef __GENKSYMS__ hack and update the .xml file to properly reflect the
updates change:

Leaf changes summary: 1 artifact changed
Changed leaf types summary: 1 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct fib_rules_ops at fib_rules.h:60:1' changed:
  type size hasn't changed
  there are data member changes:
    type 'typedef bool (fib_rule*, fib_lookup_arg*)*' of 'fib_rules_ops::suppress' changed:
      pointer type changed from: 'typedef bool (fib_rule*, fib_lookup_arg*)*' to: 'typedef bool (fib_rule*, int, fib_lookup_arg*)*'
  2448 impacted interfaces

Bug: 161946584
Change-Id: I5fd2fcece8f57536369c51e438bd2739631b34e3
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman 2021-12-08 17:56:22 +01:00
parent 1b71a028a2
commit e2aed161fc
2 changed files with 350 additions and 335 deletions

File diff suppressed because it is too large Load Diff

View File

@ -69,7 +69,14 @@ struct fib_rules_ops {
int (*action)(struct fib_rule *,
struct flowi *, int,
struct fib_lookup_arg *);
/* __GENKSYMS__ hack to preserve the abi change that happened in
* cdef485217d3 ("ipv6: fix memory leak in fib6_rule_suppress")
*/
#ifdef __GENKSYMS__
bool (*suppress)(struct fib_rule *,
#else
bool (*suppress)(struct fib_rule *, int,
#endif
struct fib_lookup_arg *);
int (*match)(struct fib_rule *,
struct flowi *, int);