mntput(mnt);
}
+ clr_vx_info(&sk->sk_vx_info);
+ clr_nx_info(&sk->sk_nx_info);
sock_put(sk);
/* ---- Socket is dead now and most probably destroyed ---- */
sock_init_data(sock,sk);
sk_set_owner(sk, THIS_MODULE);
+ set_vx_info(&sk->sk_vx_info, current->vx_info);
+ set_nx_info(&sk->sk_nx_info, current->nx_info);
+ sk->sk_xid = vx_current_xid();
+
sk->sk_write_space = unix_write_space;
sk->sk_max_ack_backlog = sysctl_unix_max_dgram_qlen;
sk->sk_destruct = unix_sock_destructor;
goto out;
alen = err;
- if (sock->passcred && !unix_sk(sk)->addr &&
+ if (test_bit(SOCK_PASS_CRED, &sock->flags) && !unix_sk(sk)->addr &&
(err = unix_autobind(sock)) != 0)
goto out;
goto out;
addr_len = err;
- if (sock->passcred && !u->addr && (err = unix_autobind(sock)) != 0)
+ if (test_bit(SOCK_PASS_CRED, &sock->flags)
+ && !u->addr && (err = unix_autobind(sock)) != 0)
goto out;
timeo = sock_sndtimeo(sk, flags & O_NONBLOCK);
goto out;
}
- if (sock->passcred && !u->addr && (err = unix_autobind(sock)) != 0)
+ if (test_bit(SOCK_PASS_CRED, &sock->flags)
+ && !u->addr && (err = unix_autobind(sock)) != 0)
goto out;
err = -EMSGSIZE;
{
case SIOCOUTQ:
amount = atomic_read(&sk->sk_wmem_alloc);
- err = put_user(amount, (int *)arg);
+ err = put_user(amount, (int __user *)arg);
break;
case SIOCINQ:
{
if (skb)
amount=skb->len;
spin_unlock(&sk->sk_receive_queue.lock);
- err = put_user(amount, (int *)arg);
+ err = put_user(amount, (int __user *)arg);
break;
}
default:
- err = dev_ioctl(cmd, (void *)arg);
+ err = dev_ioctl(cmd, (void __user *)arg);
break;
}
return err;