summaryrefslogtreecommitdiff
path: root/net/atm/common.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2025-09-01 23:47:23 +0100
committerMark Brown <broonie@kernel.org>2025-09-01 23:47:23 +0100
commit4de51e81379aa3acbceddb7aec18a36b733fb6cb (patch)
tree5d607ac61193a5d0fc4c5e56913af25f59593d37 /net/atm/common.c
parent7446284023e8ef694fb392348185349c773eefb3 (diff)
parent431f6c88cb5d2d62d579d4d78f5c1a2583465ffb (diff)
spi: spi-fsl-lpspi: Generic fixes and support for
Merge series from James Clark <james.clark@linaro.org>: Various fixes for LPSI along with some refactorings. None of the fixes are strictly related to S32G, however these changes all originate from the work to support S32G devices. The only commits that are strictly related are for the new s32g2 and s32g3 compatible strings.
Diffstat (limited to 'net/atm/common.c')
-rw-r--r--net/atm/common.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/net/atm/common.c b/net/atm/common.c
index d7f7976ea13a..881c7f259dbd 100644
--- a/net/atm/common.c
+++ b/net/atm/common.c
@@ -635,18 +635,27 @@ int vcc_sendmsg(struct socket *sock, struct msghdr *m, size_t size)
skb->dev = NULL; /* for paths shared with net_device interfaces */
if (!copy_from_iter_full(skb_put(skb, size), size, &m->msg_iter)) {
- atm_return_tx(vcc, skb);
- kfree_skb(skb);
error = -EFAULT;
- goto out;
+ goto free_skb;
}
if (eff != size)
memset(skb->data + size, 0, eff-size);
+
+ if (vcc->dev->ops->pre_send) {
+ error = vcc->dev->ops->pre_send(vcc, skb);
+ if (error)
+ goto free_skb;
+ }
+
error = vcc->dev->ops->send(vcc, skb);
error = error ? error : size;
out:
release_sock(sk);
return error;
+free_skb:
+ atm_return_tx(vcc, skb);
+ kfree_skb(skb);
+ goto out;
}
__poll_t vcc_poll(struct file *file, struct socket *sock, poll_table *wait)