Messages in this thread | | | From | "T.J. Mercier" <> | Date | Tue, 10 Jan 2023 13:20:42 -0800 | Subject | Re: [PATCH 3/4] binder: Add flags to relinquish ownership of fds |
| |
On Mon, Jan 9, 2023 at 6:07 PM Hillf Danton <hdanton@sina.com> wrote: > > On 9 Jan 2023 21:38:06 +0000 T.J. Mercier <tjmercier@google.com> > > > > @@ -2275,6 +2276,26 @@ static int binder_translate_fd(u32 fd, binder_size_t fd_offset, > > goto err_security; > > } > > > > + if (IS_ENABLED(CONFIG_MEMCG) && (flags & BINDER_FD_FLAG_XFER_CHARGE)) { > > + struct dma_buf *dmabuf; > > + > > + if (unlikely(!is_dma_buf_file(file))) { > > + binder_user_error( > > + "%d:%d got transaction with XFER_CHARGE for non-dmabuf fd, %d\n", > > + proc->pid, thread->pid, fd); > > + ret = -EINVAL; > > + goto err_dmabuf; > > + } > > It barely makes sense to expose is_dma_buf_file() only for this. > > + > > + dmabuf = file->private_data; > > + ret = dma_buf_transfer_charge(dmabuf, target_proc->tsk); > > + if (ret) { > > + pr_warn("%d:%d Unable to transfer DMA-BUF fd charge to %d\n", > > + proc->pid, thread->pid, target_proc->pid); > > + goto err_xfer; > > + } > > + } > > + > > This whole hunk should go to dma-buf instead by adding change to > dma_buf_transfer_charge() for instance.
Fair enough, will change this for v2. I think we'd still want to distinguish between the two failure modes for logging purposes, so I'll use the return value of dma_buf_transfer_charge to do that.
| |