summaryrefslogtreecommitdiff
path: root/net/atm
diff options
context:
space:
mode:
authorVitor Soares <vitor.soares@toradex.com>2025-09-14 22:18:28 +0100
committerVitor Soares <vitor.soares@toradex.com>2025-09-14 22:18:28 +0100
commit88e9f1ec02f87bb86c41152f0b18eec78d0fbfeb (patch)
tree0c407998a20d8c7eb2c9a8ee23c10fd0214cb74f /net/atm
parentfb37aea8060496d2afb461eb2bccf8f87106e7ec (diff)
parent74449729f3b3e0e7997860bd2b5d1bb862dca21d (diff)
Merge commit '74449729f3b3' of github.com/Freescale/linux-fslctoradex_5.15-2.2.x-imx
Sync with the latest linux-fslc branch 5.15-2.2.x-imx which includes the v5.15.191 stable update. Signed-off-by: Vitor Soares <vitor.soares@toradex.com>
Diffstat (limited to 'net/atm')
-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 930eb302cd10..38ed7b985f65 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)