diff options
Diffstat (limited to 'net/rose/af_rose.c')
-rw-r--r-- | net/rose/af_rose.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c index 48319f7991ac..67e06ab7f854 100644 --- a/net/rose/af_rose.c +++ b/net/rose/af_rose.c | |||
@@ -499,15 +499,18 @@ static struct proto rose_proto = { | |||
499 | .obj_size = sizeof(struct rose_sock), | 499 | .obj_size = sizeof(struct rose_sock), |
500 | }; | 500 | }; |
501 | 501 | ||
502 | static int rose_create(struct socket *sock, int protocol) | 502 | static int rose_create(struct net *net, struct socket *sock, int protocol) |
503 | { | 503 | { |
504 | struct sock *sk; | 504 | struct sock *sk; |
505 | struct rose_sock *rose; | 505 | struct rose_sock *rose; |
506 | 506 | ||
507 | if (net != &init_net) | ||
508 | return -EAFNOSUPPORT; | ||
509 | |||
507 | if (sock->type != SOCK_SEQPACKET || protocol != 0) | 510 | if (sock->type != SOCK_SEQPACKET || protocol != 0) |
508 | return -ESOCKTNOSUPPORT; | 511 | return -ESOCKTNOSUPPORT; |
509 | 512 | ||
510 | if ((sk = sk_alloc(PF_ROSE, GFP_ATOMIC, &rose_proto, 1)) == NULL) | 513 | if ((sk = sk_alloc(net, PF_ROSE, GFP_ATOMIC, &rose_proto, 1)) == NULL) |
511 | return -ENOMEM; | 514 | return -ENOMEM; |
512 | 515 | ||
513 | rose = rose_sk(sk); | 516 | rose = rose_sk(sk); |
@@ -545,7 +548,7 @@ static struct sock *rose_make_new(struct sock *osk) | |||
545 | if (osk->sk_type != SOCK_SEQPACKET) | 548 | if (osk->sk_type != SOCK_SEQPACKET) |
546 | return NULL; | 549 | return NULL; |
547 | 550 | ||
548 | if ((sk = sk_alloc(PF_ROSE, GFP_ATOMIC, &rose_proto, 1)) == NULL) | 551 | if ((sk = sk_alloc(osk->sk_net, PF_ROSE, GFP_ATOMIC, &rose_proto, 1)) == NULL) |
549 | return NULL; | 552 | return NULL; |
550 | 553 | ||
551 | rose = rose_sk(sk); | 554 | rose = rose_sk(sk); |