You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
net: pass kern to net_proto_family create function
The generic __sock_create function has a kern argument which allows the security system to make decisions based on if a socket is being created by the kernel or by userspace. This patch passes that flag to the net_proto_family specific create function, so it can do the same thing. Signed-off-by: Eric Paris <eparis@redhat.com> Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
13f18aa05f
commit
3f378b6844
@@ -779,7 +779,7 @@ base_sock_create(struct net *net, struct socket *sock, int protocol)
|
||||
}
|
||||
|
||||
static int
|
||||
mISDN_sock_create(struct net *net, struct socket *sock, int proto)
|
||||
mISDN_sock_create(struct net *net, struct socket *sock, int proto, int kern)
|
||||
{
|
||||
int err = -EPROTONOSUPPORT;
|
||||
|
||||
|
||||
+2
-1
@@ -104,7 +104,8 @@ int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||
|
||||
EXPORT_SYMBOL(pppox_ioctl);
|
||||
|
||||
static int pppox_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int pppox_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
int rc = -EPROTOTYPE;
|
||||
|
||||
|
||||
+2
-1
@@ -204,7 +204,8 @@ struct proto_ops {
|
||||
|
||||
struct net_proto_family {
|
||||
int family;
|
||||
int (*create)(struct net *net, struct socket *sock, int protocol);
|
||||
int (*create)(struct net *net, struct socket *sock,
|
||||
int protocol, int kern);
|
||||
struct module *owner;
|
||||
};
|
||||
|
||||
|
||||
+2
-1
@@ -1021,7 +1021,8 @@ static struct proto ddp_proto = {
|
||||
* Create a socket. Initialise the socket, blank the addresses
|
||||
* set the state.
|
||||
*/
|
||||
static int atalk_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int atalk_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
int rc = -ESOCKTNOSUPPORT;
|
||||
|
||||
+2
-1
@@ -127,7 +127,8 @@ static const struct proto_ops pvc_proto_ops = {
|
||||
};
|
||||
|
||||
|
||||
static int pvc_create(struct net *net, struct socket *sock,int protocol)
|
||||
static int pvc_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
if (net != &init_net)
|
||||
return -EAFNOSUPPORT;
|
||||
|
||||
+4
-3
@@ -25,7 +25,7 @@
|
||||
#include "signaling.h"
|
||||
#include "addr.h"
|
||||
|
||||
static int svc_create(struct net *net, struct socket *sock,int protocol);
|
||||
static int svc_create(struct net *net, struct socket *sock, int protocol, int kern);
|
||||
|
||||
/*
|
||||
* Note: since all this is still nicely synchronized with the signaling demon,
|
||||
@@ -330,7 +330,7 @@ static int svc_accept(struct socket *sock,struct socket *newsock,int flags)
|
||||
|
||||
lock_sock(sk);
|
||||
|
||||
error = svc_create(sock_net(sk), newsock,0);
|
||||
error = svc_create(sock_net(sk), newsock, 0, 0);
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
@@ -650,7 +650,8 @@ static const struct proto_ops svc_proto_ops = {
|
||||
};
|
||||
|
||||
|
||||
static int svc_create(struct net *net, struct socket *sock,int protocol)
|
||||
static int svc_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
int error;
|
||||
|
||||
|
||||
+2
-1
@@ -799,7 +799,8 @@ static struct proto ax25_proto = {
|
||||
.obj_size = sizeof(struct sock),
|
||||
};
|
||||
|
||||
static int ax25_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int ax25_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
ax25_cb *ax25;
|
||||
|
||||
@@ -126,7 +126,8 @@ int bt_sock_unregister(int proto)
|
||||
}
|
||||
EXPORT_SYMBOL(bt_sock_unregister);
|
||||
|
||||
static int bt_sock_create(struct net *net, struct socket *sock, int proto)
|
||||
static int bt_sock_create(struct net *net, struct socket *sock, int proto,
|
||||
int kern)
|
||||
{
|
||||
int err;
|
||||
|
||||
@@ -144,7 +145,7 @@ static int bt_sock_create(struct net *net, struct socket *sock, int proto)
|
||||
read_lock(&bt_proto_lock);
|
||||
|
||||
if (bt_proto[proto] && try_module_get(bt_proto[proto]->owner)) {
|
||||
err = bt_proto[proto]->create(net, sock, proto);
|
||||
err = bt_proto[proto]->create(net, sock, proto, kern);
|
||||
bt_sock_reclassify_lock(sock, proto);
|
||||
module_put(bt_proto[proto]->owner);
|
||||
}
|
||||
|
||||
@@ -195,7 +195,8 @@ static struct proto bnep_proto = {
|
||||
.obj_size = sizeof(struct bt_sock)
|
||||
};
|
||||
|
||||
static int bnep_sock_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int bnep_sock_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
|
||||
|
||||
@@ -190,7 +190,8 @@ static struct proto cmtp_proto = {
|
||||
.obj_size = sizeof(struct bt_sock)
|
||||
};
|
||||
|
||||
static int cmtp_sock_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int cmtp_sock_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
|
||||
|
||||
@@ -621,7 +621,8 @@ static struct proto hci_sk_proto = {
|
||||
.obj_size = sizeof(struct hci_pinfo)
|
||||
};
|
||||
|
||||
static int hci_sock_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int hci_sock_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
|
||||
|
||||
@@ -241,7 +241,8 @@ static struct proto hidp_proto = {
|
||||
.obj_size = sizeof(struct bt_sock)
|
||||
};
|
||||
|
||||
static int hidp_sock_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int hidp_sock_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
|
||||
|
||||
@@ -819,7 +819,8 @@ static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int p
|
||||
return sk;
|
||||
}
|
||||
|
||||
static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
|
||||
|
||||
@@ -323,7 +323,8 @@ static struct sock *rfcomm_sock_alloc(struct net *net, struct socket *sock, int
|
||||
return sk;
|
||||
}
|
||||
|
||||
static int rfcomm_sock_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int rfcomm_sock_create(struct net *net, struct socket *sock,
|
||||
int protocol, int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
|
||||
|
||||
+2
-1
@@ -430,7 +430,8 @@ static struct sock *sco_sock_alloc(struct net *net, struct socket *sock, int pro
|
||||
return sk;
|
||||
}
|
||||
|
||||
static int sco_sock_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int sco_sock_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
|
||||
|
||||
+2
-1
@@ -114,7 +114,8 @@ static void can_sock_destruct(struct sock *sk)
|
||||
skb_queue_purge(&sk->sk_receive_queue);
|
||||
}
|
||||
|
||||
static int can_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int can_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
struct can_proto *cp;
|
||||
|
||||
@@ -675,7 +675,8 @@ char *dn_addr2asc(__u16 addr, char *buf)
|
||||
|
||||
|
||||
|
||||
static int dn_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int dn_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
|
||||
|
||||
@@ -605,7 +605,8 @@ static struct proto econet_proto = {
|
||||
* Create an Econet socket
|
||||
*/
|
||||
|
||||
static int econet_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int econet_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
struct econet_sock *eo;
|
||||
|
||||
@@ -234,7 +234,7 @@ static const struct proto_ops ieee802154_dgram_ops = {
|
||||
* set the state.
|
||||
*/
|
||||
static int ieee802154_create(struct net *net, struct socket *sock,
|
||||
int protocol)
|
||||
int protocol, int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
int rc;
|
||||
|
||||
+2
-1
@@ -262,7 +262,8 @@ static inline int inet_netns_ok(struct net *net, int protocol)
|
||||
* Create an inet socket.
|
||||
*/
|
||||
|
||||
static int inet_create(struct net *net, struct socket *sock, int protocol)
|
||||
static int inet_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
struct inet_protosw *answer;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user