diff options
Diffstat (limited to 'net/atm/common.c')
| -rw-r--r-- | net/atm/common.c | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/net/atm/common.c b/net/atm/common.c index 1f2af59935db..9f8cb0d2e71e 100644 --- a/net/atm/common.c +++ b/net/atm/common.c @@ -630,10 +630,9 @@ int vcc_sendmsg(struct socket *sock, struct msghdr *m, size_t size)  		goto out;  	}  	pr_debug("%d += %d\n", sk_wmem_alloc_get(sk), skb->truesize); -	refcount_add(skb->truesize, &sk->sk_wmem_alloc); +	atm_account_tx(vcc, skb);  	skb->dev = NULL; /* for paths shared with net_device interfaces */ -	ATM_SKB(skb)->atm_options = vcc->atm_options;  	if (!copy_from_iter_full(skb_put(skb, size), size, &m->msg_iter)) {  		kfree_skb(skb);  		error = -EFAULT; @@ -648,11 +647,16 @@ out:  	return error;  } -__poll_t vcc_poll_mask(struct socket *sock, __poll_t events) +__poll_t vcc_poll(struct file *file, struct socket *sock, poll_table *wait)  {  	struct sock *sk = sock->sk; -	struct atm_vcc *vcc = ATM_SD(sock); -	__poll_t mask = 0; +	struct atm_vcc *vcc; +	__poll_t mask; + +	sock_poll_wait(file, wait); +	mask = 0; + +	vcc = ATM_SD(sock);  	/* exceptional events */  	if (sk->sk_err) |