netlink: have netlink per-protocol bind function return an error code.
authorRichard Guy Briggs <rgb@redhat.com>
Wed, 23 Apr 2014 01:31:54 +0000 (21:31 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 23 Apr 2014 01:42:26 +0000 (21:42 -0400)
commit4f520900522fd596e336c07e9aafd5b7a9564235
tree324137d33d9fe83adba3b0a96026f645fe7b12f1
parentbfe4bc71c64a34813a7bde0ad4d28486679ac3fe
netlink: have netlink per-protocol bind function return an error code.

Have the netlink per-protocol optional bind function return an int error code
rather than void to signal a failure.

This will enable netlink protocols to perform extra checks including
capabilities and permissions verifications when updating memberships in
multicast groups.

In netlink_bind() and netlink_setsockopt() the call to the per-protocol bind
function was moved above the multicast group update to prevent any access to
the multicast socket groups before checking with the per-protocol bind
function.  This will enable the per-protocol bind function to be used to check
permissions which could be denied before making them available, and to avoid
the messy job of undoing the addition should the per-protocol bind function
fail.

The netfilter subsystem seems to be the only one currently using the
per-protocol bind function.

Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netlink.h
net/netfilter/nfnetlink.c
net/netlink/af_netlink.c
net/netlink/af_netlink.h