]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
net: mctp i3c: Copy headers if cloned
authorMatt Johnston <matt@codeconstruct.com.au>
Thu, 6 Mar 2025 10:24:18 +0000 (18:24 +0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 8 Mar 2025 03:41:10 +0000 (19:41 -0800)
Use skb_cow_head() prior to modifying the tx skb. This is necessary
when the skb has been cloned, to avoid modifying other shared clones.

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
Fixes: c8755b29b58e ("mctp i3c: MCTP I3C driver")
Link: https://patch.msgid.link/20250306-matt-i3c-cow-head-v1-1-d5e6a5495227@codeconstruct.com.au
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/mctp/mctp-i3c.c

index c1e72253063b54a9c2ff9e45e6202347b8c962a7..c678f79aa35611272a4a410c14dcaeea290d265c 100644 (file)
@@ -506,10 +506,15 @@ static int mctp_i3c_header_create(struct sk_buff *skb, struct net_device *dev,
           const void *saddr, unsigned int len)
 {
        struct mctp_i3c_internal_hdr *ihdr;
+       int rc;
 
        if (!daddr || !saddr)
                return -EINVAL;
 
+       rc = skb_cow_head(skb, sizeof(struct mctp_i3c_internal_hdr));
+       if (rc)
+               return rc;
+
        skb_push(skb, sizeof(struct mctp_i3c_internal_hdr));
        skb_reset_mac_header(skb);
        ihdr = (void *)skb_mac_header(skb);