static int unix_bind_abstract(struct sock *sk, struct unix_address *addr)
{
	struct unix_sock *u = unix_sk(sk);
	int err;

	err = mutex_lock_interruptible(&u->bindlock);
	if (err)
		return err;

	if (u->addr) {
		mutex_unlock(&u->bindlock);
		return -EINVAL;
	}

	spin_lock(&unix_table_lock);
	if (__unix_find_socket_byname(sock_net(sk), addr->name, addr->len,
				      addr->hash)) {
		spin_unlock(&unix_table_lock);
		mutex_unlock(&u->bindlock);
		return -EADDRINUSE;
	}
	__unix_set_addr(sk, addr, addr->hash);
	spin_unlock(&unix_table_lock);
	mutex_unlock(&u->bindlock);
	return 0;
}
static int unix_bind_abstract(struct sock *sk, struct unix_address *addr)
{
	struct unix_sock *u = unix_sk(sk);
	int err;

	err = mutex_lock_interruptible(&u->bindlock);
	if (err)
		return err;

	if (u->addr) {
		mutex_unlock(&u->bindlock);
		return -EINVAL;
	}

	spin_lock(&unix_table_lock);
	if (__unix_find_socket_byname(sock_net(sk), addr->name, addr->len,
				      addr->hash)) {
		spin_unlock(&unix_table_lock);
		mutex_unlock(&u->bindlock);
		return -EADDRINUSE;
	}
	__unix_set_addr(sk, addr, addr->hash);
	spin_unlock(&unix_table_lock);
	mutex_unlock(&u->bindlock);
	return 0;
}