lkml.org 
[lkml]   [2019]   [May]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 113/266] ipv6: invert flowlabel sharing check in process and user mode
    Date
    From: Willem de Bruijn <willemb@google.com>

    [ Upstream commit 95c169251bf734aa555a1e8043e4d88ec97a04ec ]

    A request for a flowlabel fails in process or user exclusive mode must
    fail if the caller pid or uid does not match. Invert the test.

    Previously, the test was unsafe wrt PID recycling, but indeed tested
    for inequality: fl1->owner != fl->owner

    Fixes: 4f82f45730c68 ("net ip6 flowlabel: Make owner a union of struct pid* and kuid_t")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/ipv6/ip6_flowlabel.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/net/ipv6/ip6_flowlabel.c
    +++ b/net/ipv6/ip6_flowlabel.c
    @@ -639,9 +639,9 @@ recheck:
    if (fl1->share == IPV6_FL_S_EXCL ||
    fl1->share != fl->share ||
    ((fl1->share == IPV6_FL_S_PROCESS) &&
    - (fl1->owner.pid == fl->owner.pid)) ||
    + (fl1->owner.pid != fl->owner.pid)) ||
    ((fl1->share == IPV6_FL_S_USER) &&
    - uid_eq(fl1->owner.uid, fl->owner.uid)))
    + !uid_eq(fl1->owner.uid, fl->owner.uid)))
    goto release;

    err = -ENOMEM;

    \
     
     \ /
      Last update: 2019-05-15 13:09    [W:4.119 / U:2.792 seconds]
    ©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site