|
@@ -735,10 +735,13 @@ static int br2684_ioctl(struct socket *sock, unsigned int cmd,
|
|
|
return -ENOIOCTLCMD;
|
|
|
if (!capable(CAP_NET_ADMIN))
|
|
|
return -EPERM;
|
|
|
- if (cmd == ATM_SETBACKEND)
|
|
|
+ if (cmd == ATM_SETBACKEND) {
|
|
|
+ if (sock->state != SS_CONNECTED)
|
|
|
+ return -EINVAL;
|
|
|
return br2684_regvcc(atmvcc, argp);
|
|
|
- else
|
|
|
+ } else {
|
|
|
return br2684_create(argp);
|
|
|
+ }
|
|
|
#ifdef CONFIG_ATM_BR2684_IPFILTER
|
|
|
case BR2684_SETFILT:
|
|
|
if (atmvcc->push != br2684_push)
|