08 Jan, 2009

1 commit

  • Add an EXPORT_SYMBOL() to genl_unregister_mc_group(), to allow
    unregistering groups on the run. EXPORT_SYMBOL_GPL() is not used as
    the rest of the functions exported by this module (eg:
    genl_register_mc_group) are also not _GPL().

    Cleanup is currently done when unregistering a family, but there is
    no way to unregister a single multicast group due to that function not
    being exported. Seems to be a mistake as it is documented as for
    external consumption.

    This is needed by the WiMAX stack to be able to cleanup unused mc
    groups.

    Signed-off-by: Inaky Perez-Gonzalez
    Acked-by: Johannes Berg
    Signed-off-by: Greg Kroah-Hartman

    Inaky Perez-Gonzalez
     

28 Nov, 2008

1 commit

  • validate_nla() currently doesn't allow empty nested attributes. This
    makes userspace code unnecessarily complicated when starting and ending
    the nested attribute is done by generic upper level code and the inner
    attributes are dumped by a module.

    Add a special case to accept empty nested attributes. When the nested
    attribute is non empty, the same checks as before are performed.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     

25 Nov, 2008

1 commit


24 Nov, 2008

2 commits


29 Oct, 2008

1 commit


17 Oct, 2008

1 commit


14 Oct, 2008

1 commit

  • Clean up the various different email addresses of mine listed in the code
    to a single current and valid address. As Dave says his network merges
    for 2.6.28 are now done this seems a good point to send them in where
    they won't risk disrupting real changes.

    Signed-off-by: Alan Cox
    Signed-off-by: David S. Miller

    Alan Cox
     

26 Jul, 2008

1 commit

  • Removes legacy reinvent-the-wheel type thing. The generic
    machinery integrates much better to automated debugging aids
    such as kerneloops.org (and others), and is unambiguous due to
    better naming. Non-intuively BUG_TRAP() is actually equal to
    WARN_ON() rather than BUG_ON() though some might actually be
    promoted to BUG_ON() but I left that to future.

    I could make at least one BUILD_BUG_ON conversion.

    Signed-off-by: Ilpo Järvinen
    Signed-off-by: David S. Miller

    Ilpo Järvinen
     

06 Jul, 2008

1 commit


02 Jul, 2008

1 commit


28 Jun, 2008

2 commits


20 Jun, 2008

1 commit


18 Jun, 2008

1 commit

  • genetlink has a circular locking dependency when dumping the registered
    families:

    - dump start:
    genl_rcv() : take genl_mutex
    genl_rcv_msg() : call netlink_dump_start() while holding genl_mutex
    netlink_dump_start(),
    netlink_dump() : take nlk->cb_mutex
    ctrl_dumpfamily() : try to detect this case and not take genl_mutex a
    second time

    - dump continuance:
    netlink_rcv() : call netlink_dump
    netlink_dump : take nlk->cb_mutex
    ctrl_dumpfamily() : take genl_mutex

    Register genl_lock as callback mutex with netlink to fix this. This slightly
    widens an already existing module unload race, the genl ops used during the
    dump might go away when the module is unloaded. Thomas Graf is working on a
    seperate fix for this.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     

10 Jun, 2008

1 commit


06 Jun, 2008

1 commit


04 Jun, 2008

1 commit

  • Make nlmsg_trim(), nlmsg_cancel(), genlmsg_cancel(), and
    nla_nest_cancel() void functions.

    Return -EMSGSIZE instead of -1 if the provided message buffer is not
    big enough.

    Signed-off-by: Thomas Graf
    Signed-off-by: David S. Miller

    Thomas Graf
     

28 Apr, 2008

1 commit

  • Previously I added sessionid output to all audit messages where it was
    available but we still didn't know the sessionid of the sender of
    netlink messages. This patch adds that information to netlink messages
    so we can audit who sent netlink messages.

    Signed-off-by: Eric Paris
    Signed-off-by: Al Viro

    Eric Paris
     

19 Apr, 2008

2 commits

  • …s/security-testing-2.6

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:
    security: fix up documentation for security_module_enable
    Security: Introduce security= boot parameter
    Audit: Final renamings and cleanup
    SELinux: use new audit hooks, remove redundant exports
    Audit: internally use the new LSM audit hooks
    LSM/Audit: Introduce generic Audit LSM hooks
    SELinux: remove redundant exports
    Netlink: Use generic LSM hook
    Audit: use new LSM hooks instead of SELinux exports
    SELinux: setup new inode/ipc getsecid hooks
    LSM: Introduce inode_getsecid and ipc_getsecid hooks

    Linus Torvalds
     
  • Don't use SELinux exported selinux_get_task_sid symbol.
    Use the generic LSM equivalent instead.

    Signed-off-by: Casey Schaufler
    Signed-off-by: Ahmed S. Darwish
    Acked-by: James Morris
    Acked-by: David S. Miller
    Reviewed-by: Paul Moore

    Ahmed S. Darwish
     

26 Mar, 2008

3 commits


22 Mar, 2008

1 commit

  • Make socket filters work for netlink unicast and notifications.
    This is useful for applications like Zebra that get overrun with
    messages that are then ignored.

    Note: netlink messages are in host byte order, but packet filter
    state machine operations are done as network byte order.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     

01 Mar, 2008

2 commits


13 Feb, 2008

1 commit

  • The genl_unregister_family() calls the genl_unregister_mc_groups(),
    which takes and releases the genl_lock and then locks and releases
    this lock itself.

    Relax this behavior, all the more so the genl_unregister_mc_groups()
    is called from genl_unregister_family() only.

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     

02 Feb, 2008

1 commit


01 Feb, 2008

1 commit

  • The comment about "race free view of the set of network
    namespaces" was a bit hasty. Look (there even can be only
    one CPU, as discovered by Alexey Dobriyan and Denis Lunev):

    put_net()
    if (atomic_dec_and_test(&net->refcnt))
    /* true */
    __put_net(net);
    queue_work(...);

    /*
    * note: the net now has refcnt 0, but still in
    * the global list of net namespaces
    */

    == re-schedule ==

    register_pernet_subsys(&some_ops);
    register_pernet_operations(&some_ops);
    (*some_ops)->init(net);
    /*
    * we call netlink_kernel_create() here
    * in some places
    */
    netlink_kernel_create();
    sk_alloc();
    get_net(net); /* refcnt = 1 */
    /*
    * now we drop the net refcount not to
    * block the net namespace exit in the
    * future (or this can be done on the
    * error path)
    */
    put_net(sk->sk_net);
    if (atomic_dec_and_test(&...))
    /*
    * true. BOOOM! The net is
    * scheduled for release twice
    */

    When thinking on this problem, I decided, that getting and
    putting the net in init callback is wrong. If some init
    callback needs to have a refcount-less reference on the struct
    net, _it_ has to be careful himself, rather than relying on
    the infrastructure to handle this correctly.

    In case of netlink_kernel_create(), the problem is that the
    sk_alloc() gets the given namespace, but passing the info
    that we don't want to get it inside this call is too heavy.

    Instead, I propose to crate the socket inside an init_net
    namespace and then re-attach it to the desired one right
    after the socket is created.

    After doing this, we also have to be careful on error paths
    not to drop the reference on the namespace, we didn't get
    the one on.

    Signed-off-by: Pavel Emelyanov
    Acked-by: Denis Lunev
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     

29 Jan, 2008

9 commits

  • Used to append data to a message without a header or padding.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • During network namespace stop process kernel side netlink sockets
    belonging to a namespace should be closed. They should not prevent
    namespace to stop, so they do not increment namespace usage
    counter. Though this counter will be put during last sock_put.

    The raplacement of the correct netns for init_ns solves the problem
    only partial as socket to be stoped until proper stop is a valid
    netlink kernel socket and can be looked up by the user processes. This
    is not a problem until it resides in initial namespace (no processes
    inside this net), but this is not true for init_net.

    So, hold the referrence for a socket, remove it from lookup tables and
    only after that change namespace and perform a last put.

    Signed-off-by: Denis V. Lunev
    Tested-by: Alexey Dobriyan
    Signed-off-by: David S. Miller

    Denis V. Lunev
     
  • Create a specific helper for netlink kernel socket disposal. This just
    let the code look better and provides a ground for proper disposal
    inside a namespace.

    Signed-off-by: Denis V. Lunev
    Tested-by: Alexey Dobriyan
    Signed-off-by: David S. Miller

    Denis V. Lunev
     
  • Netlink protocol table is global for all namespaces. Some netlink
    protocols have been virtualized, i.e. they have per/namespace netlink
    socket. This difference can easily lead to double free if more than 1
    namespace is started. Count the number of kernel netlink sockets to
    track that this table is not used any more.

    Signed-off-by: Denis V. Lunev
    Tested-by: Alexey Dobriyan
    Signed-off-by: David S. Miller

    Denis V. Lunev
     
  • net/netlink/af_netlink.c:
    netlink_realloc_groups | -46
    netlink_insert | -49
    netlink_autobind | -94
    netlink_clear_multicast_users | -48
    netlink_bind | -55
    netlink_setsockopt | -54
    netlink_release | -86
    netlink_kernel_create | -47
    netlink_change_ngroups | -56
    9 functions changed, 535 bytes removed, diff: -535

    net/netlink/af_netlink.c:
    netlink_table_ungrab | +53
    1 function changed, 53 bytes added, diff: +53

    net/netlink/af_netlink.o:
    10 functions changed, 53 bytes added, 535 bytes removed, diff: -482

    Signed-off-by: Ilpo Järvinen
    Signed-off-by: David S. Miller

    Ilpo Järvinen
     
  • Add __acquires() and __releases() annotations to suppress some sparse
    warnings.

    example of warnings :

    net/ipv4/udp.c:1555:14: warning: context imbalance in 'udp_seq_start' - wrong
    count at exit
    net/ipv4/udp.c:1571:13: warning: context imbalance in 'udp_seq_stop' -
    unexpected unlock

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • nl_pid_hash_alloc() is renamed to nl_pid_hash_zalloc().
    It is now returning zeroed memory to its callers.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Fix large number of checkpatch errors.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • Signed-off-by: Denis V. Lunev
    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Denis V. Lunev
     

13 Nov, 2007

1 commit