On Tue, Jan 20, 2026 at 04:36:50PM -0800, Jakub Kicinski wrote: > On Thu, 15 Jan 2026 21:02:15 -0800 Bobby Eshleman wrote: > > +- Once a system-wide autorelease mode is selected (via the first binding), > > + all subsequent bindings must use the same mode. Attempts to create > > bindings > > + with a different mode will be rejected with -EBUSY. > > Why? >
Originally I was using EINVAL, but when writing the tests I noticed this might be a confusing case for users to interpret EINVAL (i.e., some binding possibly made by someone else is in a different mode). I thought EBUSY could capture the semantic "the system is locked up in a different mode, try again when it isn't". I'm not married to it though. Happy to go back to EINVAL or another errno. > > +- Applications using manual release mode (autorelease=0) must ensure all > > tokens > > + are returned via SO_DEVMEM_DONTNEED before socket close to avoid resource > > + leaks during the lifetime of the dmabuf binding. Tokens not released > > before > > + close() will only be freed when all RX queues are unbound AND all sockets > > + that called recvmsg() are closed. > > Could you add a short example on how? by calling shutdown()? Show an example of the three steps: returning the tokens, unbinding, and closing the sockets (TCP/NL)? Best, Bobby
