On Thu, Nov 20, 2025 at 01:19:54PM +0100, Paolo Abeni wrote:
> 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/

Thanks Paolo, I'll fix that for the next rev. And I'll have to add
building kunit into my flow (currently using some custom stuff and nipa
ingest_mdir, but don't think either has kunit).
> 
> > @@ -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.

Don't know how I missed that line, will definitely remove.

Thanks again,
Bobby

Reply via email to