diff mbox

[Regression?] fib_rules: Added NLM_F_EXCL support to fib_nl_newrule breaks Android userspace

Message ID CALAqxLXq7-U9tOOSQHta2TwyV8OVZA4cU9zKK58yWKv7v8VwZA@mail.gmail.com
State New
Headers show

Commit Message

John Stultz Aug. 2, 2016, 5:51 p.m. UTC
On Tue, Aug 2, 2016 at 10:09 AM, David Ahern <dsa@cumulusnetworks.com> wrote:
> On 8/2/16 11:03 AM, John Stultz wrote:

>>

>> So bisecting between v4.7 and linus/HEAD with the test above, it seems

>> like:

>> 96c63fa7393d ("net: Add l3mdev rule")  is what breaks the tests.

>>

>> The l3mdev rule patch is a bit tangled with the fib_rules one, but if

>> I revert both of those, the only thing that fails is the

>> ./neighbour_test.py (which I need to dig further into). But those two

>> changes seem to be connected to the regression I'm seeing with

>> Android.

>

> That is surprising since the l3mdev rule should not exist on Android unless

> it has created a VRF.

>

> Does Android have custom FRA types in <linux/fib_rules.h>? Perhaps there is

> a collision on attribute number?


Sigh.

Yea, it looks like they do in their tree w/ their uid based routing:
https://android.googlesource.com/kernel/common.git/+/fd2cf795f3ab193752781be7372949ac1780d0ed%5E%21/

index 96161b8..ce19c5b 100644
Without that change, networking would work with upstream kernels, but
now that new valid ids are upstream, their userspace is getting
confused.

Apologies for raising this as a regression.

Lorenzo/Rom: Fyi, you've got another upstream feature collision to work out.

thanks
-john
diff mbox

Patch

--- a/include/uapi/linux/fib_rules.h
+++ b/include/uapi/linux/fib_rules.h
@@ -49,6 +49,8 @@  enum {
        FRA_TABLE,      /* Extended table id */
        FRA_FWMASK,     /* mask for netfilter mark */
        FRA_OIFNAME,
+       FRA_UID_START,  /* UID range */
+       FRA_UID_END,
        __FRA_MAX
 };