13 Mar, 2020

1 commit


09 Mar, 2020

1 commit

  • In commit 1ec17dbd90f8 ("inet_diag: fix reporting cgroup classid and
    fallback to priority") croup classid reporting was fixed. But this works
    only for TCP sockets because for other socket types icsk parameter can
    be NULL and classid code path is skipped. This change moves classid
    handling to inet_diag_msg_attrs_fill() function.

    Also inet_diag_msg_attrs_size() helper was added and addends in
    nlmsg_new() were reordered to save order from inet_sk_diag_fill().

    Fixes: 1ec17dbd90f8 ("inet_diag: fix reporting cgroup classid and fallback to priority")
    Signed-off-by: Dmitry Yakunin
    Reviewed-by: Konstantin Khlebnikov
    Signed-off-by: David S. Miller

    Dmitry Yakunin
     

28 Feb, 2020

2 commits

  • The INET_DIAG_REQ_BYTECODE nlattr is currently re-found every time when
    the "dump()" is re-started.

    In a latter patch, it will also need to parse the new
    INET_DIAG_REQ_SK_BPF_STORAGES nlattr to learn the map_fds. Thus, this
    patch takes this chance to store the parsed nlattr in cb->data
    during the "start" time of a dump.

    By doing this, the "bc" argument also becomes unnecessary
    and is removed. Also, the two copies of the INET_DIAG_REQ_BYTECODE
    parsing-audit logic between compat/current version can be
    consolidated to one.

    Signed-off-by: Martin KaFai Lau
    Signed-off-by: Alexei Starovoitov
    Acked-by: Song Liu
    Link: https://lore.kernel.org/bpf/20200225230415.1975555-1-kafai@fb.com

    Martin KaFai Lau
     
  • In a latter patch, there is a need to update "cb->min_dump_alloc"
    in inet_sk_diag_fill() as it learns the diffierent bpf_sk_storages
    stored in a sk while dumping all sk(s) (e.g. tcp_hashinfo).

    The inet_sk_diag_fill() currently does not take the "cb" as an argument.
    One of the reason is inet_sk_diag_fill() is used by both dump_one()
    and dump() (which belong to the "struct inet_diag_handler". The dump_one()
    interface does not pass the "cb" along.

    This patch is to make dump_one() pass a "cb". The "cb" is created in
    inet_diag_cmd_exact(). The "nlh" and "in_skb" are stored in "cb" as
    the dump() interface does. The total number of args in
    inet_sk_diag_fill() is also cut from 10 to 7 and
    that helps many callers to pass fewer args.

    In particular,
    "struct user_namespace *user_ns", "u32 pid", and "u32 seq"
    can be replaced by accessing "cb->nlh" and "cb->skb".

    A similar argument reduction is also made to
    inet_twsk_diag_fill() and inet_req_diag_fill().

    inet_csk_diag_dump() and inet_csk_diag_fill() are also removed.
    They are mostly equivalent to inet_sk_diag_fill(). Their repeated
    usages are very limited. Thus, inet_sk_diag_fill() is directly used
    in those occasions.

    Signed-off-by: Martin KaFai Lau
    Signed-off-by: Alexei Starovoitov
    Acked-by: Song Liu
    Link: https://lore.kernel.org/bpf/20200225230409.1975173-1-kafai@fb.com

    Martin KaFai Lau
     

04 Jul, 2019

1 commit

  • If IPV6 was disabled, then ss command would cause a kernel warning
    because the command was attempting to dump IPV6 socket information.
    The fix is to just remove the warning.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202249
    Fixes: 432490f9d455 ("net: ip, diag -- Add diag interface for raw sockets")
    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     

21 May, 2019

1 commit

  • Add SPDX license identifiers to all files which:

    - Have no license information of any form

    - Have MODULE_LICENCE("GPL*") inside which was used in the initial
    scan/conversion to ignore the file

    These files fall under the project license, GPL v2 only. The resulting SPDX
    license identifier is:

    GPL-2.0-only

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

08 Aug, 2017

2 commits

  • Add a second device index, sdif, to raw socket lookups. sdif is the
    index for ingress devices enslaved to an l3mdev. It allows the lookups
    to consider the enslaved device as well as the L3 domain when searching
    for a socket.

    Signed-off-by: David Ahern
    Signed-off-by: David S. Miller

    David Ahern
     
  • Add a second device index, sdif, to raw socket lookups. sdif is the
    index for ingress devices enslaved to an l3mdev. It allows the lookups
    to consider the enslaved device as well as the L3 domain when searching
    for a socket.

    Signed-off-by: David Ahern
    Signed-off-by: David S. Miller

    David Ahern
     

04 Nov, 2016

2 commits


30 Oct, 2016

1 commit

  • The newly added raw_diag.c fails to build in some configurations
    unless we include this header:

    In file included from net/ipv4/raw_diag.c:6:0:
    include/net/raw.h:71:21: error: field 'inet' has incomplete type
    net/ipv4/raw_diag.c: In function 'raw_diag_dump':
    net/ipv4/raw_diag.c:166:29: error: implicit declaration of function 'inet_sk'

    Fixes: 432490f9d455 ("net: ip, diag -- Add diag interface for raw sockets")
    Signed-off-by: Arnd Bergmann
    Signed-off-by: David S. Miller

    Arnd Bergmann
     

24 Oct, 2016

1 commit

  • In criu we are actively using diag interface to collect sockets
    present in the system when dumping applications. And while for
    unix, tcp, udp[lite], packet, netlink it works as expected,
    the raw sockets do not have. Thus add it.

    v2:
    - add missing sock_put calls in raw_diag_dump_one (by eric.dumazet@)
    - implement @destroy for diag requests (by dsa@)

    v3:
    - add export of raw_abort for IPv6 (by dsa@)
    - pass net-admin flag into inet_sk_diag_fill due to
    changes in net-next branch (by dsa@)

    v4:
    - use @pad in struct inet_diag_req_v2 for raw socket
    protocol specification: raw module carries sockets
    which may have custom protocol passed from socket()
    syscall and sole @sdiag_protocol is not enough to
    match underlied ones
    - start reporting protocol specifed in socket() call
    when sockets are raw ones for the same reason: user
    space tools like ss may parse this attribute and use
    it for socket matching

    v5 (by eric.dumazet@):
    - use sock_hold in raw_sock_get instead of atomic_inc,
    we're holding (raw_v4_hashinfo|raw_v6_hashinfo)->lock
    when looking up so counter won't be zero here.

    v6:
    - use sdiag_raw_protocol() helper which will access @pad
    structure used for raw sockets protocol specification:
    we can't simply rename this member without breaking uapi

    v7:
    - sine sdiag_raw_protocol() helper is not suitable for
    uapi lets rather make an alias structure with proper
    names. __check_inet_diag_req_raw helper will catch
    if any of structure unintentionally changed.

    CC: David S. Miller
    CC: Eric Dumazet
    CC: David Ahern
    CC: Alexey Kuznetsov
    CC: James Morris
    CC: Hideaki YOSHIFUJI
    CC: Patrick McHardy
    CC: Andrey Vagin
    CC: Stephen Hemminger
    Signed-off-by: Cyrill Gorcunov
    Signed-off-by: David S. Miller

    Cyrill Gorcunov