Re: [PATCH v4 14/14] io_uring/rsrc: add dmabuf backed registered buffers
Anuj gupta <[email protected]> Wed, 29 Jul 2026 22:22:50 +0530
| Newsgroups | dev.linux.lists.dm-devel,dev.linux.lists.nvdimm,org.freedesktop.lists.dri-devel,org.infradead.lists.linux-nvme,org.kernel.vger.ceph-devel,org.kernel.vger.io-uring,org.kernel.vger.linux-block,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-media |
|---|---|
| Message-ID | <CACzX3Atj+hJmF+Au1Yw5KMk--EHy_J=7Yof1aQNkUV0hCrdVEA@mail.gmail.com> |
On Wed, Jul 29, 2026 at 7:37=E2=80=AFPM Pavel Begunkov <asml.silence@gmail.=
com> wrote:
> >> +static int io_import_dmabuf(struct io_kiocb *req,
> >> + int ddir, struct iov_iter *iter,
> >> + struct io_mapped_ubuf *imu,
> >> + size_t len, size_t offset,
> >> + unsigned issue_flags)
> >> +{
> >> + struct io_regbuf_dma *db =3D imu->priv;
> >> + struct dma_buf_io_map *map;
> >> +
> >> + if (!IS_ENABLED(CONFIG_DMA_SHARED_BUFFER))
> >> + return -EOPNOTSUPP;
> >> + if (!len)
> >> + return -EFAULT;
> >> + if (req->file !=3D db->target_file)
> >> + return -EBADF;
> >> +
> >> + if (req->flags & REQ_F_DROP_DMABUF) {
> >> + map =3D req->dmabuf_map;
> >> + goto init_iter;
> >> + }
> >
> > O_DIRECT is checked only during registration; we should recheck
> > (file->f_flags & O_DIRECT) per request.
>
> Nobody should be able to clear O_DIRECT, unless I missed something?
> And fwiw, io_uring wouldn't be the right place to do it.
>
fcntl(fd, F_SETFL, flags & ~O_DIRECT) on an already registered, already
open fd succeeds. The consequence is that subsequent I/Os switch to
buffered I/O and cause silent data loss. Something on this path needs
to reject this combination.
> --
> Pavel Begunkov
>
>