On 11/20/25 4:37 AM, Bobby Eshleman wrote:
> @@ -2479,10 +2504,12 @@ static int tcp_recvmsg_dmabuf(struct sock *sk, const 
> struct sk_buff *skb,
>                             unsigned int offset, struct msghdr *msg,
>                             int remaining_len)
>  {
> +     struct net_devmem_dmabuf_binding *binding = NULL;
>       struct dmabuf_cmsg dmabuf_cmsg = { 0 };
>       struct tcp_xa_pool tcp_xa_pool;
>       unsigned int start;
>       int i, copy, n;
> +     int refs = 0;
>       int sent = 0;
>       int err = 0;
>  
> @@ -2536,6 +2563,7 @@ static int tcp_recvmsg_dmabuf(struct sock *sk, const 
> struct sk_buff *skb,
>                       skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
>                       struct net_iov *niov;
>                       u64 frag_offset;
> +                     u32 token;
>                       int end;
>  
>                       /* !skb_frags_readable() should indicate that ALL the
> @@ -2568,13 +2596,32 @@ static int tcp_recvmsg_dmabuf(struct sock *sk, const 
> struct sk_buff *skb,
>                                             start;
>                               dmabuf_cmsg.frag_offset = frag_offset;
>                               dmabuf_cmsg.frag_size = copy;
> -                             err = tcp_xa_pool_refill(sk, &tcp_xa_pool,
> -                                                      
> skb_shinfo(skb)->nr_frags - i);
> -                             if (err)
> +
> +                             binding = net_devmem_iov_binding(niov);
> +
> +                             if (!sk->sk_devmem_info.binding)
> +                                     sk->sk_devmem_info.binding = binding;
> +
> +                             if (sk->sk_devmem_info.binding != binding) {
> +                                     err = -EFAULT;
>                                       goto out;
> +                             }
> +
> +                             if (static_branch_unlikely(&tcp_devmem_ar_key)) 
> {

Not a real/full review but the above is apparently causing kunit build
failures:

ERROR:root:ld: vmlinux.o: in function `tcp_recvmsg_dmabuf':
tcp.c:(.text+0x669b21): undefined reference to `tcp_devmem_ar_key'
ld: tcp.c:(.text+0x669b68): undefined reference to `tcp_devmem_ar_key'
ld: tcp.c:(.text+0x669c54): undefined reference to `tcp_devmem_ar_key'
make[3]: *** [../scripts/Makefile.vmlinux:72: vmlinux.unstripped] Error 1
make[2]: *** [/home/kunit/testing/Makefile:1242: vmlinux] Error 2
make[1]: *** [/home/kunit/testing/Makefile:248: __sub-make] Error 2
make: *** [Makefile:248: __sub-make] Error 2

see:

https://netdev-3.bots.linux.dev/kunit/results/393664/

> @@ -2617,6 +2664,7 @@ static int tcp_recvmsg_dmabuf(struct sock *sk, const 
> struct sk_buff *skb,
>  
>  out:
>       tcp_xa_pool_commit(sk, &tcp_xa_pool);
> +

[just because I stumbled upon the above while looking for the build
issue]: please do not mix unrelated whitespace-change only with
functional change.

/P


Reply via email to